From Nsnam
Revision as of 08:24, 22 February 2010 by Alina (Talk | contribs) (Application Template)

Jump to: navigation, search

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

This webpage highlights project ideas, expectations, and requirements for ns-3's Google Summer of Code 2010 effort. Note: ns-3 hasn't yet been accepted to GSOC 2010, so of course, participation is conditional on our acceptance into the program. Also, feel free to work on these projects outside of the GSOC program; we would be happy to mentor them as time permits.

Student Guidelines

The ns-3 team is looking for three things from every successful GSoC project:

  • Developing code that can be incorporated back into the main codebase and utilized by a variety of users.
  • Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.
  • Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.

Based on the ns-3 team's experiences in the 2008 and 2009 Google Summer of Code, the most important factor in the success of an application and project is communication. That process begins in the application phase. Without joining the mailing list and starting some discussion of your ideas, it is unlikely your application will be complete or rich enough to be competitive. Please feel free to discuss your proposed technical approach, plan, and other factors on the mailing list while developing your application. In addition to helping you develop the necessary details, focus, and priorities to write a good application, that will also demonstrate your commitment and willingness to dedicate time to the effort. During the program, every student is expected to communicate regularly with their mentor, as well as to participate on the development mailing list and IRC chats.

It is also important for every student to commit fully to the effort. Applicants should recognize that being accepted into GSoC is a serious commitment and will be the focus of their time over the duration of the program. Any existing commitments for class, other jobs, etc should all be discussed as part of your application.

Additional slides about the ns-3 GSoC project (from last year) are also available, from a GSoC Infosession at the University of Washington on March 5th, 2009.

Application Template

The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.

  • About You
    • Identity Information
      • Name. Yor name
      • Date of birth. Your date of birth
      • Email. Your contact email
      • Country. Your country
    • Background. What experience or training do you have that makes you best suited to this project? What is your previous experience with ns-3?
      • Education. Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python. In which school program are you currently enrolled at and what is your specialty there? When did you started your current studies?
      • Work. Be sure to denote any work experience you have in relevant areas. Your past work experience does not need to be a job where you got payed, you can mention any projects you have participated in. Have you ever worked in open source projects?
      • Research. Be sure to denote any research experience you have in relevant areas.
    • Personal Interests. Briefly tell us about the things you are interested in.
  • About The Project
    • Project Proposal. What is the specific topic or area of interest you are proposing to work on? Explain what this project consists on.
    • Interest. Why are you particularly attracted to this project? What makes you the best candidate?
      • Future Plans. We are especially interested in GSoC applicants looking to pursue research or work in related areas in the future, so be sure to note any relevant plans you may have.
    • Approach. What is your technical plan for achieving the goals of the project? What components and functionality will have to be developed, integrated, etc? Which development methodology would you use? What testing approach are you going to use to ensure the code quality?
    • Deliverables. What do you plan as a mergeable code output of your GSoC effort? Please keep in mind that the program is only 10 weeks long and try to incorporate this realistically in the plan. Try to isolate the project main features, group them into coherent units, and list them as 'milestones' or 'deliverables'. The order in wich you list the deliverables should correspond to the chronological order in which they will be implemented.
    • Plan. What is your task schedule to implement your technical plan and develop your deliverables? Try to break down the deliverables into small tasks and assign to each of them the time you think it is going to take you. Make sure you consider the time you will need to test and fix your code after every deliverable is finished. Order all the tasks chronologically and assign a start and an end date to each of them. Verify that the resulting schedule fits into the 10 weeks you will have. It is important to leave some time at the end of the schedule for integrating, testing and fixing the complete project.
    • Timezone. What are your expected work hours (in UTC)? What is your physical location for the summer? The project places no requirements on these but it will effect chat scheduling as well as mentor availability and selection.
    • Commitments. Do you have any other commitments over the summer that would impair your ability to participate in the project, e.g., classes, thesis defense, existing work commitments, etc? Note: The project does not expect students to take personal vacations during this period; if there is a personal conflict planned, please state when, and how you would make up the time.

Of these, the Approach and Deliverables elements will require significant thought, development, and discussion. Applicants are advised to bring their ideas to the ns-developers list and open up a discussion with the ns-3 team to develop these portions of their application prior to submission. Only applications that have well refined and developed technical objectives and plans are likely to be competitive. The ns-3 team will provide comments and help refine proposals somewhat after they are initially submitted, but obviously the stronger they start the stronger they will be. In the 2008 GSoC, our strongest student proposals were clearly those which had discussed their projects at length beforehand on the mailing list and on IRC.

In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to "meet" some of the ns-3 team and discuss their project further in an IRC chat.

Project Ideas

The following are project ideas which the ns-3 team has identified as important and is most interested in working on as part of the 2010 Google Summer of Code. GSoC applicants are however free to propose their own ideas. In addition, please note that these ideas are not limited to Google Summer of Code, anyone is welcome to work on them. Please email the ns-developers list if one interests you. GSoC applicants are encourage to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the ns-developers list. That will help you develop the idea and present a concrete, meaningful application.

Each project idea has been tagged with the following properties:

  • Required Experience: Languages, concepts, or packages with which applicants must be familiar.
  • Bonus Experience: Other experience or familiarity which would be greatly helpful to applicants for this project.
  • Interests: Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.

Note that all of the projects require some experience and comfort with C++. Project ideas for which C++ is noted as a required experience will require more and deeper familiarity with the language. A similar notion applies to computer networking, BSD sockets, etc: Familiarity is strongly preferred, but is not required except where explicitly noted due to the topic being more advanced in that regard.

Priority Project Ideas

The following are work areas the ns-3 project has identified as the highest priorities, has several mentors available, and would be especially interested in having students work on.


  • TCP Validation. TCP is one of the most widely used and widely studied protocols in the Internet. ns-3 has two TCP implementations. Recently, RFC 5681 was published, documenting recommended TCP behavior. This project would consist of reviewing the ns-3 TCP implementations and testing them for conformance to RFC 5681 (and fixing any issues that were found to arise). One outcome of this project would be a test suite that will ensure that ns-3's TCP implementation is accurate and does not regress over time.
    • Required Experience: C++
    • Bonus Experience: Transport protocols or TCP
    • Interests: TCP and transport protocol performance
  • TCP Congestion Avoidance. Linux TCP implements a lot of TCP congestion control variants, including variants such as Veno, Westwood, Vegas, etc. This project would attempt to provide a library of congestion avoidance types, including test suites that exercised each one.
    • Required Experience: C++
    • Bonus Experience: Transport protocols or TCP
    • Interests: TCP and transport protocol performance

MAC and PHY Models

Mentors: Ruben Merz, Mathieu Lacage, Juliana Freitag Borin

  • Antenna radiation pattern. This project would implement support for antenna radiation patterns in the physical layer of ns-3. In addition to enhancing the realism of the ns-3 physical layer, this would also enable to implement directional antennas in ns-3.
    • Required Experience:
    • Bonus Experience: physical layer modeling and simulation, wireless networking
    • Interests: wireless networking, physical layer modeling and simulation


Mentors: Nicola Baldo, Manuel Requena, Adrian Sai-wah Tam, Ruben Merz

  • Click Modular Router Integration. This project would port and enable ns-3 simulations to use the Click modular router, widely used in research. This has been previously done for ns-2, and accomplishing this integration for ns-3 would enable faster protocol development and utilization of many existing protocol implementations.
    • Required Experience: C++
    • Bonus Experience: Click, routing architectures, routing protocols
    • Interests: Protocol development, routing architecture
  • Generalized Router Models/Structure. Many simulators, including ns-3, do not provide high fidelity models of Internet routers. For instance, intra-device latencies and input queuing behavior are not modeled. This project would adapt recent results on empirical router testing to develop a new, more detailed Router node type for ns-3.
    • Required Experience:
    • Bonus Experience: Routing architectures, routing protocols, queueing theory, statistics
    • Interests: High fidelity simulation, queueing theory, statistics, data driven model development

Network Stack

Mentors: Florian Westphal

  • Network Simulation Cradle for IPv4. Last year's ns-3 Google Summer of Code very successfully ported the Network Simulation Cradle, providing the ability to run Linux TCP code over ns-3's IPv4 stack. This project would extend that effort to completely port the Linux TCP/IPv4 stack. This wolud start by adding IPv4 support to NSC, then support for multiple interfaces, routing tables, and assigning addresses, then making those features available in ns-3.
    • Required Experience: C
    • Bonus Experience: Linux kernel, TCP/IP
    • Interests: Linux, operating systems, virtualization, software-in-the-loop

Emulation and Simulation In The Loop

Mentors: Craig Dowell

  • EMULAB Support and Integration. This project would attempt to emulate ns-3 and Emulab, a leading testbed for Internet research. Emulab experiments are described in tcl-like ns-2 scripts and are driven by ns-2 emulation. Two main goals of this effort would be: 1) Test and document how ns-3 emulation mode could be used in Emulab instead of ns-2, and compare its features and performance. 2) Investigate whether Emulab scripting could be moved to Python/ns-3 or whether ns-3 simulations need to generate Tcl for Emulab and attempt to do this integration.
    • Required Experience:
    • Bonus Experience: Emulab, ns-2, Tcl
    • Interests: Simulation, emulation, simulation-in-the-loop

Peer to Peer and Content Based Routing

Mentors: Marcello Caleffi

  • Mobile P2P. ns-3 currently does not include any implementation of Mobile Peer-to-Peer (P2P) systems. This project would implement some additional networking protocols based on a cross-layer approach between routing and Distributed Hash Tables (DHTs), such as ATR and MADPastry. Both the ns-2 implementations of the cited protocols are currently available and could be used as design guides.
    • Required Experience: C/C++
    • Bonus Experience: P2P, mobile ad hoc networks (MANETs), ns-2
    • Interests: P2P, DHT, MANETs, routing.

Additional Project Ideas

The following are additional project ideas that the ns-3 team has highlighted as important projects to support.

MAC and PHY Models

  • SNS for ns-3 Wifi. Staged Network Simulations (SNS) is a patch for the ns-2 wireless models which provides for function approximation and caching. That mechanism greatly speeds up the many calculations required in mobile wireless simulations. This project would incorporate those techniques into the ns-3 WiFi model.
    • Required Experience:
    • Bonus Experience: Software profiling, software tuning
    • Interests: Approximation, caching, software profiling, high performance computing, scientific computing
  • WPAN Device Models.
  • 802.11 WDS Support for nqsta.

Network Stack

Applications and Systems

  • Large Scale Topology Generation and Management. ns-2 incorporates support for various topology generators, which would be useful to also support in ns-3. This project would investigate porting topology generators or mapping their output to ns-3 simulations. It would also touch on the problem of coherent IP addressing in generated topologies. In particular, recent work by the Emulab project may be useful in this regard.
    • Required Experience:
    • Bonus Experience: Graph theory, network management, Internet topology
    • Interests: Internet topology, Internet autonomous systems, graph theory
  • Agent-J Implementation. Agent-J is a Java library built on top of Protolib that enables Java networking application code to be run on real systems as well as network simulators such as ns-2 and OPNET. This project would port Agent-J to ns-3, thereby enabling users to develop applications in Java, as well as work with existing implementations. This project would require completing the above Protolib Integration effort first.
    • Required Experience: Java, C
    • Bonus Experience: JNI
    • Interests: Java, Java native code, simulation, P2P

Propose Your Project Idea

This section is intended to gather projects ideas and mentors for ns-3's Google Summer of Code 2010 application submission.
Any idea proposal is welcome as long as it is relevant to the ns-3 project. All proposed ideas are expected to have a mentor who will be responsible of following the project's evolution and evaluate the student during Google Summer of Code.

When adding a new idea proposal please make sure you use the following format:

Category of Idea

Mentor: mentor-name.

  • title of the idea. Concise description of the idea. Please make sure the description is clear enough for the students to understand.
    • Required Experience: Languages, concepts, or packages with which applicants must be familiar.
    • Bonus Experience: Other experience or familiarity which would be greatly helpful to applicants for this project.
    • Interests: Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.

You can start adding your ideas here


Again, all interested applicants are encouraged to discuss their proposal ideas on the ns-developers list. Many developers also congregate on IRC via #ns-3 on, and that is also an appropriate place to discuss ideas.