From Nsnam
Revision as of 14:30, 13 March 2009 by Tjkopena (Talk | contribs)

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 2009 effort.

Disclaimer: There is no guarantee that ns-3 will be accepted again in this year's GSoC. We are in the process of applying for the 2009 program.

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 be used by a variety of researchers and developers.
  • Developing new project 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 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 are also available, from a [ GSoC Infosession at the University of Washington on March 5th, 2009.

Project Ideas

The following are work areas the ns-3 project has identified as priorities and would be especially interested in having students work on. 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.

Core Simulation Capabilities

  • Realtime Distributed Simulation. This project would add support to ns-3 for running multiple instances distributed over several physical machines connected by and exchanging packet events over an IP network. Achieving this would require adding tunneling devices to ns-3, and developing distributed simulation configuration and control utilizing RPYC. Development would build from multiple instances on a single host to a cluster to which the student will be given access.
    • Required Experience: BSD networking
    • Bonus Experience: Python, RPC, distributed systems, cluster computing
    • Interests: Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing

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.

Routing Internals

  • Advanced Queues. ns-3 currently implements only a basic FIFO queue. This project would add support for and investigate more sophisticated queues, such as fair queuing, RED, and RIO. This might be accomplished by porting from other projects, such as ns-2 or Linux routing and traffic control implementations.
    • Required Experience:
    • Bonus Experience: Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2
    • Interests: High fidelity simulation, queueing theory, statistics, data driven model development
  • 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
  • Protolib Integration. Protolib is an application support library that provides networking, timer, threading, and other functionality to support cross platform application and protocol implementation. It has previously been ported to enable programs based on the library to be executed in simulators such as sn-2 and OPNET. This project would port Protolib to ns-3 and enable many existing and well known routing protocol implementations to be immediately used in ns-3. Additionally, this may be followed by porting the Agent-J Java library (see below).
    • Required Experience: C/C++
    • Bonus Experience: BSD networking, threading
    • Interests: Protocol development, mobile ad hoc networking, simulation, cross platform development
  • Reactive Routing Protocols. ns-3 currently includes an implementation of the popular OLSR protocol for proactive mobile wireless ad hoc routing. This project would implement several additional routing protocols, focusing on reactive protocols such as AODV and DSR. Much literature exists in this area to draw from, as well as implementations for both real systems and other simulators such as ns-2 and OPNET.
    • Required Experience:
    • Bonus Experience: Mobile ad hoc networking, routing
    • Interests: Mobile ad hoc networking, routing, protocol development

Network Stack

  • 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
  • Network Address Translation (NAT). NATs have become an essential part of practical real-life networking, and are an important current research topic as they are being proposed even for IPv6. NAT traversal is also an important topic in many user and system monitoring applications. This project would develop a NAT node model for ns-3, possibly by drawing upon the Linux NAT code, as well as common example configurations, such as home or small office connectivity, and start investigating these topics as time allows.
    • Required Experience:
    • Bonus Experience: NAT, network management/deployment, firewalling, C, Linux kernel
    • Interests: Internet topology, IPv6, network management/deployment, network security, P2P
  • Fragmentation and MTU Discovery. IPv4 packets may be fragmented as they travel the network and encounter smaller MTUs. ns-3's packet objects include support for this, but the network stack does not currently implement fragmentation. This project would begin by improving the MTU and fragmentation capabilies to be more realistic, possibly by drawing from code in the yans simulator. The project would then continue to add support for more research-oriented techniques such as Path MTU discovery, particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.
    • Required Experience: IP
    • Bonus Experience: IPv6
    • Interests: IPv6, Internet topology, heterogenous networking
  • Virtual NetDevices. Virtual devices are network interfaces that are treated like any other device by the operating system, but do not actually correspond to hardware. These are important to provide features such as tunneling overlays for tasks such as VPNs and IPv6--IPv4 traversal, or capabilities such as 802.1q VLAN tagging. For instance, the IRTF Routing Research Group seems likely to suggest a so-called map-and-encaps architecture for helping the global core routing scalability problem. This project would help define and implement an architecture for incorporating virtual devices into ns-3, and develop a few concrete instances of these devices, such as Ipv6-over-IPv4, VLANs, or providing multiple addresses per physical interface for routers to leverage.
    • Required Experience:
    • Bonus Experience: IPv6, QoS
    • Interests: IPv6, QoS, tunneling, virtualization

Emulation and Simulation In The Loop

  • 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

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
  • P2P Protocols.