At Mike Perry's request, I'd like to announce the recent availability of a tunable, BSD-licensed Userspace TCP Stack. I'll just post my original email exchange from yesterday below, which includes all the details:
------------------------ 8< ------------------------ Hi Mike, I hope my TCP code may prove useful. Our code comes out of a research project for enabling legacy TCP-speaking end-hosts to interface with new, clean slate wireless mesh transport protocols. Our sources can be obtained as part of the TCPSpeaker Element of the Click Modular Router project: git clone git://bowl.net.t-labs.tu-berlin.de/click.git git checkout tcpspeaker All TCP-specific code is contained in the two files: elements/local/tcpspeaker.cc elements/local/tcpspeaker.hh To build the code as a click element (which I'm not certain may be your desired use case) ./configure --disable-linuxmodule --enable-userlevel --enable-local&& make To get a high-level overview of our design, which may assist in your retooling it to your needs, here's a video from the SyClick workshop which gives a nice explanation: http://www.syclick.ua.ac.be/content/multiflowdispatcher-and-tcpspeaker-video A 3-page abstract: http://www.net.t-labs.tu-berlin.de/papers/LSMS-TCDSSS-10a.pdf A (slightly longer) Thesis: http://www.net.t-labs.tu-berlin.de/~dlevin/mthesis/main.pdf This thesis contains a lot (possibly too much) documentation on the TCPSpeaker Click Element. The implementation section may give some useful insights. At the end in the Appendix, there are some tables documenting the TCPSpeaker element handlers. Finally, if anyone wishes to try running this within click, there are some example click configurations given in the click repository under conf/tcpspeaker-{avila,avila-baseline}.click ------------------------ 8< ------------------------ I'm happy to provide whatever further information or assistance I can, if our code appears useful to anyone. -Dan
