ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education. ns-3 aims to allow researchers to move effortlessly between simulations, testbeds, and live experiments. It is designed to offer a high degree of realism in its models, through frameworks for running real application and kernel code, and also for integrating with virtual machine environments and testbeds.

At the end of the summer, we asked mentors of each of our Google Summer of Code projects to provide summaries of their respective students’ contributions over the summer, each of which is listed below.

Dizhi Zhou developed a set of MAC schedulers to be used with the ns-3 LTE module. The ns-3 LTE module already supported a real-world API (the FemtoForum LTE MAC Scheduler Interface Specification) for the implementation of LTE MAC schedulers. When the summer started only a couple of simple scheduler implementations were available (Round Robin and Proportional Fair). To address this problem, Dizhi implemented eight schedulers (FDMT, TDMT, TTA, FDBET, TDBET, FDTBFQ, TDTBFQ, PSS). In addition to the implementations, Dizhi put a significant effort into writing documentation and validating the performance of the new schedulers using some known reference scenarios. The result is a set of well-documented and well-tested scheduler models that are expected to be merged with the main ns-3 code soon, and will be very useful for many ns-3 users.By Nicola Baldo, Mentor

Sindhuja Venkatesh developed IPv4 Netfilter and NAT code for ns-3 during her 2012 Google Summer of Code project. This project started by picking up netfilter and connection tracking code that had been partially completed during a previous Google Summer of Code project by Qasim Javed. The first portion of the program worked on updating and refining the Netfilter portion of the code, which provides an extensible mechanism for inserting packet filtering and mangling operations into well-defined locations in the IPv4 stack. As proof-of-concept, a basic NAT was written on top of this framework. After the midterm exam, Sindhu continued to work on more complete NAT models by writing dedicated IPv4 NAT code hooked into the netfilter framework. Two primary modes of NAT were implemented, a static one-to-one NAT and a dynamic NAT with port translation. A NAT helper object was also written, along with a few examples and documentation for the models. While there remain a few loose ends to complete before merging to ns-3-dev, we are hopeful to be able to complete and merge these models in the next ns-3 release cycle.By Tom Henderson, Mentor

Mudit Gupta spent his summer designing and developing interfaces aimed at integrating ns-3 with an HLA (High Level Architecture) Federation. The first issue Mudit was faced with was how to communicate between the various federates. Although ns-3 is compliant with the latest LLVM compilers, the HLA components are not. Hence it was impossible to simply integrate the C++ HLA interfaces into ns-3. The chosen workaround was to build a Java ns-3 Federate object acting as a stub and communicating with the main ns-3 code through “normal” sockets. This solution is sub-optimal and the plan is to move to proper C++ interfeces as soon as the HLA implementations (i.e., Portico or CERTI) will be updated to support LLVM. The second problem was to synchronize the ns-3 time reference with the Federation one. The solution relies on a modification of the real-time ns-3 scheduler, with a virtual clock advanced by the RTI Federation messages rather than the hardware PC clock. The last issue Mudit worked on was the interaction between the Federates. The ns-3 module is able to receive Objects from the Federates along with their Attributes but such Objects and Attributes are currently unspecified, as there is no actual ns-3 module using them. A proof-of-concept module has been developed, showing how to receive the Object and its Attributes.By Tommaso Pecorella, Mentor

We hope Dizhi, Sindhujha, and Mudit will continue their involvement with the ns-3 project, and community outside of Google Summer of Code as well. On a concluding note, we’d like to thank Google once again for accepting us into the program this year. We look forward to applying for Google Summer of Code 2013!