TCP Module Complete
From: Shan Sinha (sks@alum.mit.edu)
Date: Tue Sep 09 2003 - 08:58:16 EST
Hi everyone-
I posted a few weeks ago about extracting the TCP code into a loadable
module, in order to facilitate easier debugging and TCP experimentation.
Since it seems that there is no publicly available work on this, I
decided to create it myself. I have finally finished an initial version
of a custom TCP module.
I have created a transport protocol called TCPSKS to verify my kernel
patches.
If anyone is interested, please contact me and I'd be more than happy to
share it. I currently have a patch file for 2.4.20.
Summary of how it works:
Basically, to create a TCPSKS socket, a user uses the following call:
int fd = socket(PF_INET, SOCK_STREAM, 135) /* whereas, usually the
3rd parameter is usually 0 */
Summary of how it works:
The TCPSKS code is more or less the same as TCP, except it uses its own
slab cache and module counts must be maintained. All the sysctl
variables have been replicated and are local to my TCP module. The init
routines are called upon module load, and certain data structures are
destroyed when the module is unloaded.
TCPSKS uses the same network layer as TCP although it is very
straightforward to implement your own network layer. You could even
implement your own protocol family. As it stands, there is a little bit
of interdependence in the socket interface implementaiton in af_inet.c
that I have not yet removed, which I plan to do. However, I have
eliminated the interdependence in the listen system call, by modifying
the protosw structure to include a listen member. I think this follows
more closely to the BSD implementation anyway.
For sure there may be some bugs, as it has not been exhaustively tested.
But as an initial piece of work, it makes protocol development
significantly easier, reducing the number of required reboots.
Cheers-
Shan
Shan Sinha
Network and Mobile Systems
CSAIL MIT (formerly the Laboratory for Computer Science)
ssinha@xxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html