- GSoC Frequently Asked Questions
- GSoC Mentor guide
- GSoC student guide
- ns-3's GSoC Student guide
- ns-3's GSoC Mentor guide
- GSoC Student Selection Process
- GSoC Student application template
- Get in contact with the ns-3 team: ns-developers mailing list | IRC #ns-3 on freenode.net
- 1 ns-3's GSoC 2017
- 2 Project Ideas
ns-3's GSoC 2017
This webpage highlights project ideas for ns-3's Google Summer of Code 2017 effort. ns-3 must apply for GSoC and will learn whether it has been accepted on 27 February 2017.
The thirteen week coding period for projects runs from 30 May to 25 August, 2017. The full project timeline is here: https://developers.google.com/open-source/gsoc/timeline?hl=en
About the ns-3 project
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results. Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented. A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.
Mentors will be paired with students based on the projects that are selected. Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring. Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest. Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge.
ns-3 and other GSoC mentoring organisations
Students interested in ns-3 and GSoC are also encouraged to explore whether other organizations might be a suitable mentoring organization for their project idea. Please keep in mind, though, that the ns-3 project is not involved in the selection process for these other mentoring organizations, and you will have to apply there instead.
Students: how to participate
For students interested in applying to ns-3 for GSOC, first wait to see if ns-3 will be selected. If so, then go through the following list to get started:
- Read the official GSoC student guide.
- Read ns-3's GSoC Student guide.
- Look through our #Project Ideas below to see if you find a project that interests you.
- Review the tutorial thoroughly, if you have not already done so.
- Look through the GSoC Student application template to start preparing your proposal.
- Next, proceed to get in touch with the developers on the mailing list and refine your proposal.
- In parallel, make sure you prepare a patch as per the Patch Requirement Guidelines. Your application to ns-3 will not be considered if you do not fulfill this requirement.
Below is a list of #Project Ideas proposed by the ns-3 team for Google Summer of Code 2016. Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the ns-developers list if you have a different idea that you'd like to work on, to see if a mentor may be interested. Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the ns-developers list. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.
Each project idea within a particular priority 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.
- Difficulty: easy, medium or difficult
- Recommended reading: pointers to documentation, papers, specific bugs, etc.
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.
Mentors: how to participate
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:
- The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.
- The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.
- There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.
Note to students: These ideas are not listed in any priority order.
Windows Visual Studio Community support
Mentors: Tom Henderson
ns-3 is primarily developed on Linux and OS X, and has had some unofficial Visual Studio support in the past: https://www.nsnam.org/wiki/Ns-3_on_Visual_Studio_2012. In this suggested project, the student will help ns-3 produce a maintainable Visual Studio version for the latest free version of Visual Studio (Visual Studio Community 2015). This will require not only working with the core maintainers on solving compiler compatibility issues, but also providing clear documentation for Windows users, support for NetAnim animator, support for standing up a Windows buildslave in our regression testbed, and any other things that the student feels will enhance the Windows ns-3 experience (time permitting). If you select this project idea, please tell us about your experience/ability to work with Visual Studio, and how you plan to take what has already been done for Visual Studio 2012 and improve it.
Freshen ns-3/Click integration
Mentors: Tom Henderson
- Since 2010, Ipv4L3Protocol has continued to evolve, but Ipv4L3ClickProtocol has not kept pace with the changes. Refactor Ipv4L3Protocol and Ipv4L3ClickProtocol so that the click-specific pieces are limited and can be maintained more easily.
- There was an ns-3 2011 summer project (not part of GSoC, but a follow-on project) to try to finish the integration with ClickMac. We'd like to finish this off and merge it with ns-3-dev.
- At the moment click integration is available only for IPv4. Adding IPv6 support will require some refactoring similar to point 1, but it's an equally interesting point.
- Anything else that a student thinks would be useful to support regarding click and ns-3 integration.
The list is not exhaustive and not limiting. I.e., the candidate can propose other points and/or concentrate on a specific subset.
- Required Experience: C++
- Bonus Experience: IPv4, IPv6, Click.
- Interests: Software integration.
- Difficulty: Medium.
TCP variants for Data Center Networks
Mentors: Mohit P. Tahiliani
Improving the performance of TCP in Data Center Networks is an interesting research topic. Some promising solutions are available, such as Data Center TCP (DCTCP), Deadline-Aware Dataceter TCP (D2TCP), Incast Congestion Control for TCP (ICTCP) and others. ns-3-dev has a rich set of TCP variants, but lacks support for TCPs which are designed for Data Center Networks. This project aims to develop models and examples for TCP variants that are tailored to perform well in Data Center environment.
- Required Experience: Familiarity with TCP congestion control algorithms, C++ programming.
- Bonus Experience: TCP performance analysis.
- Interests: Data Center Networking, TCP performance.
- Difficulty: Medium to Hard, depending on the depth of the project.
- Recommended reading:
Linux-like Proportional Rate Reduction (PRR) for ns-3 TCP
Mentors: Mohit P. Tahiliani
Proportional Rate Reduction (PRR) algorithm is an alternative to the traditional Fast Recovery and Rate Halving approaches in TCP, and has been the default congestion avoidance algorithm since Linux 3.2+ kernels. PRR is described in RFC 6927 and has been designed to improve the accuracy of the amount of data sent by TCP during loss recovery. This project proposal is to: extend ns-3 TCP to support the PRR algorithm, test the correctness of its implementation and provide examples.