TCP Stack Modularity

We have started the process of trying to add modularity to the TCP stack.

Motivation/Use Cases

Long Term Goal

  1. Allow TCP stacks to be loaded as kernel modules.
  2. Allow an administrator to set a default TCP stack.
  3. Allow users to choose a non-default TCP stack through a socket option.
  4. Allow TCP stacks to override any function except the bare minimum functionality necessary to determine which TCP stack to use.
  5. Allow a TCP stack to supplement the tcpcb with stack-specific data.

Current Work

rrs@ has written code that accomplishes 1, 2, 3, and 5 above. It also accomplishes some of 4. (See the code review here.)

Ideas for Potential Future Work

Testing

In addition to testing for correctness, we need to test for performance.

One idea for performance testing is to use a replicable TCP testing load and use PMC to count various statistics (including the number of branch prediction misses, etc.) both with and without this change.

TransportProtocols/TCPModularity (last edited 2015-11-12T16:11:48+0000 by JonathanLooney)