Kickoff meeting notes, August 9-11, 2006, ns-3 project Attendees: Tom Henderson, Sally Floyd, George Riley, Sumit Roy, Mathieu Lacage, Michele Weigle, Larry Dunn, Mod Marawathe, Steve McCanne, Andrew Swan, Charles Perkins, Pedro Ruiz, Shashi Guruprasad, and Karim Seada, with Steve Reinhardt by telecon. We held some initial discussions on Wednesday: Validation: need to extend this in a few directions - we should work at allowing higher-level validation than pure output trace file comparison (i.e., the validation output contains only the information of relevance to the test). We believe we can with a more flexible trace format. - we want to add quantitative code coverage profiling (e.g. 70%) of validation tests on new contributed models - we need to perform regression tests in emulation environments also Development platforms should differ from release platforms (more of the latter). What development platforms? - Linux x86, Linux x86_64, OS X ppc (for starters) - Windows (using Visual dev. environment-- not Cygwin) is a release platform - Tom to look at setting up some development test servers Nightly regression tests - Tom to set up infrastructure at UW to enable virtual machines to test nightly builds - it is for further study what infrastructure is needed to perform regression testing on distributed and emulation capabilities Gcc: which versions? - enable build as optimized or debugging in the release - default should be to build with -Wall -Werror -g on development tree - optimizations? -O2 vs -O3? scripting language: - agreed that it is needed, although not an immediate priority of the PIs, amid concern about long-term maintenance costs - agreed to try using Python as a first cut - agreed to see whether a SWIG fan might try to look at bindings - Andrew mentioned that losing the ability to use scripting environment for rapid prototyping might be a turn off to some users Development processes: - agreed that we try to settle things by consensus on the open list; for deadlock situations, Tom should break ties - agreed to use mercurial for revision control, because it provides a easy framework for distributed branches, avoiding massive commits upon merges - George agreed to provide a coding standard - agreed to use regular (quarterly) releases, for both ns-2 and ns-3 - patch review should be enabled by commits - Mathieu to set up mercurial and bugzilla on Ga Tech servers - Tom to set up static web site and wiki Documentation: - 4 main documentations: Developer's guide, User's manual, Doxygen for the APIs, and wiki for troubleshooting/contributed code Licensing: - agreed that LGPL-compatible core (may include also LGPL-compatible imported BSD code) was most promising approach to satisfy desires to both keep the core of the simulator under "copyleft" terms while allowing someone downstream to bundle with or build on ns-3 core without copyleft terms - will adopt build environment and licensing structure to satisfy this - this idea needs further vetting Software: - agreed to adopt yans basic scheduling, tracing/logging, callback approaches - George to provide extensions to support distributed simulations - agreed on basic framework for node architecture as depicted in design document, although some discussion still whether objects such as Position and Energy need to be in the abstract base class - Packet formats - we can write down agreements after Friday - agreed to explore making the initial ns-3 TCP/IP stack based on BSD code (either generated from Sim. Cradle or a virtualized BSD stack such as IMUNES) Agreed that this does not eliminate the need to provide a simpler reference stack implementation; only that a ported stack will be faster to get something up and running. Agreed that Linux should be kept out of main core distribution because of GPL. Wireless: - Mathieu agreed to propose an abstract interface for between the Phy and the MAC - Sumit to try to determine the list of important Phy layer models - Charlie (TBD) to look at getting access to traces as a means of generating validation suites - discussed ORBIT and Emulab approaches to wireless testbeds - SNS is a good candidate for wireless scalability tricks - Charlie mentioned that SNS required 6GB swap space; maybe some optimization might be able to reduce this Integration with Emulab: - Shashi explained a bit how Emulab creates topology and the support needed for topology partitioning - also, the problem that IP address assignments in scripts can create - discussion of whether we can make it easier to automate topology partitioning; participants were skeptical but George wanted to make it as easy as possible Misc: - agreed to keep "nsnam" as project domain name, until better alternative arises - agreed to form a "Suggested Projects" section of the wiki, where we can solicit help for tightly focused projects Suggested software for us to look at: - Crawdad (Cornell project for wireless tracing) - Netdisco (network management and discovery) - Johns Hopkins work on reducing the trace output and running large numbers of simulations in parallel Animation and user interface: - Mathieu to work on an output data visualization tool - George showed a topology generation tool developed by a student (emulab also has Java-based one)-- agreed that this type of tool can be outside of the ns-3 project - agreed to support out.nam default animation trace format, to support nam and inspect animators (developing new animator not within scope of ns-3 current work) - George to investigate putting hooks in ns-3 to allow for real-time animation support Models: - Topology generation: Sally noted that DETER project was unable to find topology data annotated with bandwidth or delay - Traffic generators: lean on packmime/tmix work here - Requests for better models of routers including input queues - might want to consider a "best current practices" (/bcp) directory for good models against which to test experimental protocols Code integration: - agreed that Protolib type abstraction library was a good thing to add to ns-3 - discussion of porting of user space code-- may be of limited utility outside of routing protocols, and may be better to ask routing stacks to adopt a protolib framework - Steve and Andrew relayed positive experiences with Network Simulation Cradle and we decided to focus on supporting that also in ns-3