Implementing the algorithms described in RFC 6056 within the NetBSD kernel.

Vlad Balan

Abstract

I would like to approach the implementation of the algorithms described in RFC 6056 into the NetBSD kernel.

Additional Information

Goal of the project:

Implementing the algorithms described in RFC 6056 within the NetBSD kernel.

Deliverables:

The deliverables will include the code of the extensions ready for integration in the NetBSD kernel as well as a text document detailing the implementation.

Milestones and Schedule:
   
 1) implement the sysctl option and create a stub for processing it in kernel space (two weeks)
 2) implementing and testing the 1st algorithm (one week)
 3) implementing and testing the 2nd algorithm (one week)
 4) implementing and testing the 3rd algorithm (one week)
 5) implementing and testing the 4th algorithm (one week)
 6) implementing and testing the 5th algorithm (one week)
 7) Testing with emphasis on NAT interactions and port translation (4 weeks)

Similar software:

Other UNIX distributions might have implemented this algorithm.

Port or rewrite: This would be new code.

Experience with NetBSD: I have ported NetBSD to an FPGA-based software radio platform, updating the network driver for better DMA support.

Relevant pieces of source code: I expect the network stack in the kernel (with which I am quite familiar) to be the right place for many of these modifications

Integration in NetBSD: The code will become part of the kernel code.

Interfaces: sysctl option

Familiarity with interfaces: I am familiar with socket calls into the kernel and sysctl options from my previous project in which I had to modify the FreeBSD DCCP protocol implementation (see details below).

Knowledge on other topics: I expect some knowledge of networks, kernel programming and APIs to be necessary. The short bio below gives references to my previous projects in these areas.

Familiarity with other topics: I am very familiar with networking and networking support within the kernel.

Hardware: I own a few devices with network interfaces. I can setup a testbed for NAT interaction using virtual machines.

About myself:

I am a fourth year PhD student with the Electrical Engineering department at the University of Southern California, focusing my research on computer networks. In recent years I have been involved in a number of projects using BSD-derived distributions, mostly involving kernel programming for network applications. I would like to describe in the following a few of these projects.

During my master thesis research I used the DCCP protocol implementation provided by the KAME project to FreeBSD in order to implement a number of protocol improvements meant to support traffic patterns specific to VoIP applications. The results of this research have been published in an network conference (INFOCOM 2007) and we have shared our code with the larger networking community in order to encourage further experimentation and improvements.

During Google Summer of Code 2007 I have worked with the Internet2 consortium on porting their fast gettimeofday() userland implementation, based on the TSC (timecounter) register of modern CPUs, to architectures featuring multiple processors and thread migration. That project was a success and we have managed to verify that our software successfully detects and handles thread migration instances, and that the supporting time adjustment daemon maintains accurate statistics of the running processors. That project was implemented using pthreads in an effort to insure portability.

For one of the courses taken at USC, focusing in cloud computing and applications, I developed an infrastructure for light process migrations, i.e. process migration that does not transfer anything but the data parts of a processes memory together with some register context and in-kernel supporting structures. The key to achieving this result was "resurrecting" a core dump of the process by injecting the
memory contents and register state contained in it into the memory space of a new process, after making sure that all file/network descriptors have been recreated. You can see a short video of project migration explained together with a demonstration at:
http://www.youtube.com/watch?v=0am-5noTrWk

Experience with NetBSD:

Finally, my most recent exploit using a BSD-derived distribution is porting NetBSD to an FPGA-based computer architecture (Rice University's WARP platform), which we use in our research.

Contact: hbalan@usc.edu

Supplemental Information:

My previous work with one of the area managers of the IETF exposed me to the different RFCs that are concerned with TCP. I believe that I have the necessary background for undertaking a complete implementation of this RFC into NetBSD.

I am looking forward to hearing from you and would be very happy to answer any questions that might arise.

Best Regards,
Vlad Balan