<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tjkopena</id>
	<title>Nsnam - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tjkopena"/>
	<link rel="alternate" type="text/html" href="https://www.nsnam.org/wiki/Special:Contributions/Tjkopena"/>
	<updated>2026-05-05T09:30:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2660</id>
		<title>GSOC2009AcceptedProjects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2660"/>
		<updated>2009-04-28T19:26:53Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Accepted Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page links to more information on the projects accepted for ns-3's 2009 Google Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
== Accepted Projects ==&lt;br /&gt;
&lt;br /&gt;
* '''Network Address Translation'''&lt;br /&gt;
** Student: [mailto:qasimj@gmail.com Qasim Javed]&lt;br /&gt;
** Mentor: [mailto:adrian.sw.tam@gmail.com Adrian Tam]&lt;br /&gt;
** Abstract: Network Address Translation node model will be implemented for ns-3. Specifically, Network Address and Port Translation will be implemented for Small Office, Home Office (SOHO) environments. This work will include studying the Linux Kernel NAT implementation, and reusing ideas such as connection tracking and NAT helpers to realize NAT for ns-3. &lt;br /&gt;
&lt;br /&gt;
* '''Minstrel Rate Adaptation'''&lt;br /&gt;
** Student Name: [mailto:dnlove@gmail.com Duy Nguyen]&lt;br /&gt;
** Mentor Name: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz]&lt;br /&gt;
** Abstract: Minstrel is a widely used and tested rate control algorithm in both madwifi driver and linux kernel, but it is yet to be implemented in NS-3. The proposal plans out the technical details for accomplishing such task in the timeline of 10 weeks, including testing and validating results with the testbeds. &lt;br /&gt;
&lt;br /&gt;
* '''Uplink Scheduler for WiMAX'''&lt;br /&gt;
** Student Name: [mailto:flaviokubota@gmail.com Flavio Kubota]&lt;br /&gt;
** Mentor Name: [mailto:juliana@ic.unicamp.br Juliana Freitag Borin]&lt;br /&gt;
** Abstract: The ns-3 WiMAX module lacks the implementation of a more sophisticated uplink scheduler for QoS provisioning. The main goal of this project is to port the uplink scheduler implemented in the ns-2 WiMAX module developed by the Computer Networks Laboratory at University of Campinas to the ns-3 WiMAX module. The second goal of this project is to implement propagation and error models to allow the simulation of more realistic scenarios.&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2659</id>
		<title>GSOC2009AcceptedProjects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2659"/>
		<updated>2009-04-28T19:21:34Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page links to more information on the projects accepted for ns-3's 2009 Google Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
== Accepted Projects ==&lt;br /&gt;
&lt;br /&gt;
* '''Network Address Translation'''&lt;br /&gt;
** Student: Qasim Javed&lt;br /&gt;
** Mentor: Adrian Tam&lt;br /&gt;
** Abstract: Network Address Translation node model will be implemented for ns-3. Specifically, Network Address and Port Translation will be implemented for Small Office, Home Office (SOHO) environments. This work will include studying the Linux Kernel NAT implementation, and reusing ideas such as connection tracking and NAT helpers to realize NAT for ns-3. &lt;br /&gt;
&lt;br /&gt;
* '''Minstrel Rate Adaptation'''&lt;br /&gt;
** Student Name: Duy Nguyen&lt;br /&gt;
** Mentor Name: Ruben Merz&lt;br /&gt;
** Abstract: Minstrel is a widely used and tested rate control algorithm in both madwifi driver and linux kernel, but it is yet to be implemented in NS-3. The proposal plans out the technical details for accomplishing such task in the timeline of 10 weeks, including testing and validating results with the testbeds. &lt;br /&gt;
&lt;br /&gt;
* '''Uplink Scheduler for WiMAX'''&lt;br /&gt;
** Student Name: Flavio Kubota&lt;br /&gt;
** Mentor Name: Juliana Freitag Borin&lt;br /&gt;
** Abstract: The ns-3 WiMAX module lacks the implementation of a more sophisticated uplink scheduler for QoS provisioning. The main goal of this project is to port the uplink scheduler implemented in the ns-2 WiMAX module developed by the Computer Networks Laboratory at University of Campinas to the ns-3 WiMAX module. The second goal of this project is to implement propagation and error models to allow the simulation of more realistic scenarios.&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2658</id>
		<title>GSOC2009AcceptedProjects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2658"/>
		<updated>2009-04-28T16:59:50Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2657</id>
		<title>GSOC2009AcceptedProjects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009AcceptedProjects&amp;diff=2657"/>
		<updated>2009-04-28T16:59:39Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: New page:   Category::GSoC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category::GSoC]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Category:GSoC&amp;diff=2656</id>
		<title>Category:GSoC</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Category:GSoC&amp;diff=2656"/>
		<updated>2009-04-28T16:56:12Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: New page: This category collects pages related to the ns-3 project's continued participation in the Google Summer of Code efforts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category collects pages related to the ns-3 project's continued participation in the Google Summer of Code efforts.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2655</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2655"/>
		<updated>2009-04-28T16:55:36Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Contact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.  ns-3 is pleased to announce that it has been accepted to the GSoC program for the second year in a row, and looks forward to talking with students about their applications!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:mathieu.lacage@sophia.inria.fr Mathieu Lacage], [mailto:juliana@ic.unicamp.br Juliana Freitag Borin]&lt;br /&gt;
&lt;br /&gt;
* '''Minstrel rate control algorithm.''' [http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/minstrel Minstrel] is a rate control algorithm originally [https://www.ath9k.org/browser/trunk/ath_rate/minstrel/minstrel.txt?rev=2695 implemented in MadWifi]. This project would port the Minstrel rate control algorithm to the ns-3 802.11 MAC.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' WiFi, 802.11, wireless networking, rate control&lt;br /&gt;
**''Interests:'' wireless networking, protocol development, resource alloations, 802.11&lt;br /&gt;
&lt;br /&gt;
* '''Antenna radiation pattern.''' This project would implement support for [http://en.wikipedia.org/wiki/Radiation_pattern 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' physical layer modeling and simulation, wireless networking&lt;br /&gt;
**''Interests:'' wireless networking, physical layer modeling and simulation&lt;br /&gt;
&lt;br /&gt;
* '''Uplink Scheduler for WiMAX.''':  The ns-3 WiMAX module currently implements a simple FCFS scheduler based algorithm.  In addition to generally continuing to improve that model and its integration, this project would investigate and add a more sophisticated scheduler to support the QoS requirements of multimedia applications.  This might be accomplished by porting from an available ns-2 WiMAX module.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' WiMAX, IEEE 802.16, ns-2&lt;br /&gt;
** ''Interests:'' Wireless networking, MAC layer, resource allocation, 802.16&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam], [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Peer to Peer and Content Based Routing ====&lt;br /&gt;
Mentors: [mailto:marcello.caleffi@unina.it Marcello Caleffi]&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' P2P, mobile ad hoc networks (MANETs), ns-2&lt;br /&gt;
** ''Interests:'' P2P, DHT, MANETs, routing.&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2654</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2654"/>
		<updated>2009-04-28T16:55:17Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.  ns-3 is pleased to announce that it has been accepted to the GSoC program for the second year in a row, and looks forward to talking with students about their applications!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:mathieu.lacage@sophia.inria.fr Mathieu Lacage], [mailto:juliana@ic.unicamp.br Juliana Freitag Borin]&lt;br /&gt;
&lt;br /&gt;
* '''Minstrel rate control algorithm.''' [http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/minstrel Minstrel] is a rate control algorithm originally [https://www.ath9k.org/browser/trunk/ath_rate/minstrel/minstrel.txt?rev=2695 implemented in MadWifi]. This project would port the Minstrel rate control algorithm to the ns-3 802.11 MAC.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' WiFi, 802.11, wireless networking, rate control&lt;br /&gt;
**''Interests:'' wireless networking, protocol development, resource alloations, 802.11&lt;br /&gt;
&lt;br /&gt;
* '''Antenna radiation pattern.''' This project would implement support for [http://en.wikipedia.org/wiki/Radiation_pattern 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' physical layer modeling and simulation, wireless networking&lt;br /&gt;
**''Interests:'' wireless networking, physical layer modeling and simulation&lt;br /&gt;
&lt;br /&gt;
* '''Uplink Scheduler for WiMAX.''':  The ns-3 WiMAX module currently implements a simple FCFS scheduler based algorithm.  In addition to generally continuing to improve that model and its integration, this project would investigate and add a more sophisticated scheduler to support the QoS requirements of multimedia applications.  This might be accomplished by porting from an available ns-2 WiMAX module.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' WiMAX, IEEE 802.16, ns-2&lt;br /&gt;
** ''Interests:'' Wireless networking, MAC layer, resource allocation, 802.16&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam], [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Peer to Peer and Content Based Routing ====&lt;br /&gt;
Mentors: [mailto:marcello.caleffi@unina.it Marcello Caleffi]&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' P2P, mobile ad hoc networks (MANETs), ns-2&lt;br /&gt;
** ''Interests:'' P2P, DHT, MANETs, routing.&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;br /&gt;
&lt;br /&gt;
[[Category::GSoC]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2495</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2495"/>
		<updated>2009-03-25T18:20:11Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* MAC and PHY Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.  ns-3 is pleased to announce that it has been accepted to the GSoC program for the second year in a row, and looks forward to talking with students about their applications!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:mathieu.lacage@sophia.inria.fr Mathieu Lacage], [mailto:juliana@ic.unicamp.br Juliana Freitag Borin]&lt;br /&gt;
&lt;br /&gt;
* '''Minstrel rate control algorithm.''' [http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/minstrel Minstrel] is a rate control algorithm originally [https://www.ath9k.org/browser/trunk/ath_rate/minstrel/minstrel.txt?rev=2695 implemented in MadWifi]. This project would port the Minstrel rate control algorithm to the ns-3 802.11 MAC.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' WiFi, 802.11, wireless networking, rate control&lt;br /&gt;
**''Interests:'' wireless networking, protocol development, resource alloations, 802.11&lt;br /&gt;
&lt;br /&gt;
* '''Antenna radiation pattern.''' This project would implement support for [http://en.wikipedia.org/wiki/Radiation_pattern 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' physical layer modeling and simulation, wireless networking&lt;br /&gt;
**''Interests:'' wireless networking, physical layer modeling and simulation&lt;br /&gt;
&lt;br /&gt;
* '''Uplink Scheduler for WiMAX.''':  The ns-3 WiMAX module currently implements a simple FCFS scheduler based algorithm.  In addition to generally continuing to improve that model and its integration, this project would investigate and add a more sophisticated scheduler to support the QoS requirements of multimedia applications.  This might be accomplished by porting from an available ns-2 WiMAX module.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' WiMAX, IEEE 802.16, ns-2&lt;br /&gt;
** ''Interests:'' Wireless networking, MAC layer, resource allocation, 802.16&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam], [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Peer to Peer and Content Based Routing ====&lt;br /&gt;
Mentors: [mailto:marcello.caleffi@unina.it Marcello Caleffi]&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' P2P, mobile ad hoc networks (MANETs), ns-2&lt;br /&gt;
** ''Interests:'' P2P, DHT, MANETs, routing.&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2491</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2491"/>
		<updated>2009-03-24T16:47:00Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Applications and Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.  ns-3 is pleased to announce that it has been accepted to the GSoC program for the second year in a row, and looks forward to talking with students about their applications!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:mathieu.lacage@sophia.inria.fr Mathieu Lacage]&lt;br /&gt;
&lt;br /&gt;
* '''Minstrel rate control algorithm.''' [http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/minstrel Minstrel] is a rate control algorithm originally [https://www.ath9k.org/browser/trunk/ath_rate/minstrel/minstrel.txt?rev=2695 implemented in MadWifi]. This project would port the Minstrel rate control algorithm to the ns-3 802.11 MAC.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' WiFi, 802.11, wireless networking, rate control&lt;br /&gt;
**''Interests:'' wireless networking, protocol development, resource alloations, 802.11&lt;br /&gt;
&lt;br /&gt;
* '''Antenna radiation pattern''' This project would implement support for [http://en.wikipedia.org/wiki/Radiation_pattern 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' physical layer modeling and simulation, wireless networking&lt;br /&gt;
**''Interests:'' wireless networking, physical layer modeling and simulation&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam], [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Peer to Peer and Content Based Routing ====&lt;br /&gt;
Mentors: [mailto:marcello.caleffi@unina.it Marcello Caleffi]&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' P2P, mobile ad hoc networks (MANETs), ns-2&lt;br /&gt;
** ''Interests:'' P2P, DHT, MANETs, routing.&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2490</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2490"/>
		<updated>2009-03-24T16:24:45Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.  ns-3 is pleased to announce that it has been accepted to the GSoC program for the second year in a row, and looks forward to talking with students about their applications!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:mathieu.lacage@sophia.inria.fr Mathieu Lacage]&lt;br /&gt;
&lt;br /&gt;
* '''Minstrel rate control algorithm.''' [http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/minstrel Minstrel] is a rate control algorithm originally [https://www.ath9k.org/browser/trunk/ath_rate/minstrel/minstrel.txt?rev=2695 implemented in MadWifi]. This project would port the Minstrel rate control algorithm to the ns-3 802.11 MAC.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' WiFi, 802.11, wireless networking, rate control&lt;br /&gt;
**''Interests:'' wireless networking, protocol development, resource alloations, 802.11&lt;br /&gt;
&lt;br /&gt;
* '''Antenna radiation pattern''' This project would implement support for [http://en.wikipedia.org/wiki/Radiation_pattern 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' physical layer modeling and simulation, wireless networking&lt;br /&gt;
**''Interests:'' wireless networking, physical layer modeling and simulation&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam], [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
Mentors: [mailto:marcello.caleffi@unina.it Marcello Caleffi]&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' P2P, mobile ad hoc networks (MANETs), ns-2&lt;br /&gt;
** ''Interests:'' P2P, DHT, MANETs, routing.&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2468</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2468"/>
		<updated>2009-03-19T18:18:32Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Priority Project Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.  ns-3 is pleased to announce that it has been accepted to the GSoC program for the second year in a row, and looks forward to talking with students about their applications!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:mathieu.lacage@sophia.inria.fr Mathieu Lacage]&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2467</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2467"/>
		<updated>2009-03-19T15:14:13Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.  ns-3 is pleased to announce that it has been accepted to the GSoC program for the second year in a row, and looks forward to talking with students about their applications!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2466</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2466"/>
		<updated>2009-03-19T15:13:14Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
Mentors: [mailto:craigdo@ee.washington.edu  Craig Dowell]&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2465</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2465"/>
		<updated>2009-03-19T15:05:26Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Network Stack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
Mentors: [mailto:fw@strlen.de Florian Westphal]&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2464</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2464"/>
		<updated>2009-03-19T15:05:02Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Routing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:ruben@net.t-labs.tu-berlin.de Ruben Merz], [mailto:nbaldo@cttc.es Nicola Baldo], [mailto:mrequena@cttc.es Manuel Requena], [mailto:adrian.sw.tam@gmail.com Adrian Sai-wah Tam]&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2463</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2463"/>
		<updated>2009-03-19T15:01:58Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Additional Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
==== MAC and PHY Models ====&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
==== Routing ====&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
==== Network Stack ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
==== Emulation and Simulation In The Loop ====&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
==== Applications and Systems ====&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2462</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2462"/>
		<updated>2009-03-19T14:59:56Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 2009 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Priority Project Ideas ===&lt;br /&gt;
&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Additional Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
The following are additional project ideas that the ns-3 team has highlighted as important projects to support.  &lt;br /&gt;
&lt;br /&gt;
==== Core Simulation Capabilities ====&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2442</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2442"/>
		<updated>2009-03-13T17:06:17Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Application Template */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic or professional background related to data networking, as well as any software experience with C++ and/or Python.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2435</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2435"/>
		<updated>2009-03-13T15:08:09Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Contact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic background, e.g., what level of degree you are currently working on and particularly relevant courses you may have had.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''Deliverables.''' What do you realistic see as a product of your GSoC effort?&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''Timezone.'''  What area of the world are you from?  The project places no requirements on this, but it will effect chat scheduling and possibly mentor selection for topics that have several available.&lt;br /&gt;
* '''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?&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2434</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2434"/>
		<updated>2009-03-13T15:07:21Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Student Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession] at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic background, e.g., what level of degree you are currently working on and particularly relevant courses you may have had.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''Deliverables.''' What do you realistic see as a product of your GSoC effort?&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''Timezone.'''  What area of the world are you from?  The project places no requirements on this, but it will effect chat scheduling and possibly mentor selection for topics that have several available.&lt;br /&gt;
* '''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?&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas if you can catch them there.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2433</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2433"/>
		<updated>2009-03-13T15:07:04Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers development mailing list] and IRC chats.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic background, e.g., what level of degree you are currently working on and particularly relevant courses you may have had.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''Deliverables.''' What do you realistic see as a product of your GSoC effort?&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''Timezone.'''  What area of the world are you from?  The project places no requirements on this, but it will effect chat scheduling and possibly mentor selection for topics that have several available.&lt;br /&gt;
* '''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?&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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.&lt;br /&gt;
&lt;br /&gt;
In addition, once GSoC proposals have been accepted and reviewed, promising candidates will be invited to &amp;quot;meet&amp;quot; some of the ns-3 team and discuss their project further in an IRC chat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Again, all interested applicants are encouraged to discuss their proposal ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  Many developers also congregate on IRC via #ns-3 on freenode.net, and that is also an appropriate place to discuss ideas if you can catch them there.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2432</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2432"/>
		<updated>2009-03-13T14:47:47Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Application Template */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic background, e.g., what level of degree you are currently working on and particularly relevant courses you may have had.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''Deliverables.''' What do you realistic see as a product of your GSoC effort?&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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?&lt;br /&gt;
&lt;br /&gt;
Of these, the ''Approach'' and ''Deliverables'' elements will require significant thought, development, and discussion.  Applicants are advised to bring their ideas to the [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 will be seriously considered.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2431</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2431"/>
		<updated>2009-03-13T14:46:17Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Application Template */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** ''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** ''Education.'' Include your academic background, e.g., what level of degree you are currently working on and particularly relevant courses you may have had.&lt;br /&gt;
** ''Work.''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** ''Research.'' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''Deliverables.''' What do you realistic see as a product of your GSoC effort?&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
* '''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?&lt;br /&gt;
&lt;br /&gt;
Of these, the Approach and Deliverables elements will require significant thought, development, and discussion.  Applicants are advised to discuss their ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] to develop these portions of their application for submission.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2430</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2430"/>
		<updated>2009-03-13T14:45:01Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Application Template ==&lt;br /&gt;
&lt;br /&gt;
The following are specific items the ns-3 teams requests GSoC applicants include in their proposal.&lt;br /&gt;
&lt;br /&gt;
* '''Project Proposal''' What is the specific topic or area of interest you are proposing to work on?&lt;br /&gt;
* '''Interest.''' Why are you particularly attracted to this project?&lt;br /&gt;
** '''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.&lt;br /&gt;
* '''Background.'''  What experience or training do you have that makes you best suited to this project.&lt;br /&gt;
** '''Education.''' Include your academic background, e.g., what level of degree you are currently working on and particularly relevant courses you may have had.&lt;br /&gt;
** '''Work.'''  Be sure to denote any work experience you have in relevant areas.&lt;br /&gt;
** '''Research.''' Be sure to denote any research experience you have in relevant areas.&lt;br /&gt;
* '''Approach.'''  What is your technical plan for achieving the goals of the project?  What components and functionality will have to be developed, integrated, etc?&lt;br /&gt;
* '''Deliverables.''' What do you realistic see as a product of your GSoC effort?&lt;br /&gt;
* '''Plan.'''  What is your task schedule to implement your technical plan and develop your deliverables?&lt;br /&gt;
&lt;br /&gt;
Of these, the Approach and Deliverables elements will require significant thought, development, and discussion.  Applicants are advised to discuss their ideas on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] to develop these portions of their application for submission.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2429</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2429"/>
		<updated>2009-03-13T14:35:01Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Routing Internals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2428</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2428"/>
		<updated>2009-03-13T14:30:42Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Student Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and utilized by a variety of users.&lt;br /&gt;
* Developing new members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2427</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2427"/>
		<updated>2009-03-13T14:30:08Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc Google Summer of Code] 2009 effort.&lt;br /&gt;
&lt;br /&gt;
'''''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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and be used by a variety of researchers and developers.&lt;br /&gt;
* Developing new project members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2426</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2426"/>
		<updated>2009-03-13T14:29:51Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Student Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
The ns-3 team is looking for three things from every successful GSoC project:&lt;br /&gt;
* Developing code that can be incorporated back into the main codebase and be used by a variety of researchers and developers.&lt;br /&gt;
* Developing new project members that will remain part of the team and contribute to the ns-3 effort even after GSoC ends.&lt;br /&gt;
* Providing GSoC students with experience and ideas that will be useful to them in their careers and/or research.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2425</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2425"/>
		<updated>2009-03-13T14:23:30Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas, expectations, and requirements for ns-3's [http://code.google.com/soc 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student Guidelines ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Additional slides about the ns-3 GSoC project are also available, from a [http://www.nsnam.org/docs/gsoc.ppt GSoC Infosession at the University of Washington on March 5th, 2009.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2424</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2424"/>
		<updated>2009-03-13T14:06:39Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, RPC, distributed systems, cluster computing&lt;br /&gt;
** ''Interests:'' Distributed systems, parallel simulation, concurrency, cluster computing, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Software profiling, software tuning&lt;br /&gt;
** ''Interests:'' Approximation, caching, software profiling, high performance computing, scientific computing&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2423</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2423"/>
		<updated>2009-03-13T14:03:47Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, distributed systems, parallel simulation&lt;br /&gt;
** ''Interests:'' Distributed systems, simulation, concurrency, clusters&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics, Linux/BSD kernel, ns-2&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:'' C++&lt;br /&gt;
** ''Bonus Experience:'' Click, routing architectures, routing protocols&lt;br /&gt;
** ''Interests:'' Protocol development, routing architecture&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Routing architectures, routing protocols, queueing theory, statistics&lt;br /&gt;
** ''Interests:'' High fidelity simulation, queueing theory, statistics, data driven model development&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:'' C/C++&lt;br /&gt;
** ''Bonus Experience:'' BSD networking, threading&lt;br /&gt;
** ''Interests:'' Protocol development, mobile ad hoc networking, simulation, cross platform development&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Mobile ad hoc networking, routing&lt;br /&gt;
** ''Interests:'' Mobile ad hoc networking, routing, protocol development&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:'' Linux, operating systems, virtualization, software-in-the-loop&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2422</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2422"/>
		<updated>2009-03-13T13:57:45Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, distributed systems, parallel simulation&lt;br /&gt;
** ''Interests:'' Distributed systems, simulation, concurrency, clusters&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:'' C&lt;br /&gt;
** ''Bonus Experience:'' Linux kernel, TCP/IP&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' NAT, network management/deployment, firewalling, C, Linux kernel&lt;br /&gt;
** ''Interests:'' Internet topology, IPv6, network management/deployment, network security, P2P&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:'' IP&lt;br /&gt;
** ''Bonus Experience:'' IPv6&lt;br /&gt;
** ''Interests:'' IPv6, Internet topology, heterogenous networking&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2421</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2421"/>
		<updated>2009-03-13T13:53:43Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, distributed systems, parallel simulation&lt;br /&gt;
** ''Interests:'' Distributed systems, simulation, concurrency, clusters&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' IPv6, QoS&lt;br /&gt;
** ''Interests:'' IPv6, QoS, tunneling, virtualization&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Emulab, ns-2, Tcl&lt;br /&gt;
** ''Interests:'' Simulation, emulation, simulation-in-the-loop&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:'' Graph theory, network management, Internet topology&lt;br /&gt;
** ''Interests:'' Internet topology, Internet autonomous systems, graph theory&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
** ''Required Experience:'' Java, C&lt;br /&gt;
** ''Bonus Experience:'' JNI&lt;br /&gt;
** ''Interests:'' Java, Java native code, simulation, P2P&lt;br /&gt;
&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2420</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2420"/>
		<updated>2009-03-13T13:49:10Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* MAC and PHY Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, distributed systems, parallel simulation&lt;br /&gt;
** ''Interests:'' Distributed systems, simulation, concurrency, clusters&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2419</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2419"/>
		<updated>2009-03-13T13:48:56Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Routing Internals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, distributed systems, parallel simulation&lt;br /&gt;
** ''Interests:'' Distributed systems, simulation, concurrency, clusters&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2418</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2418"/>
		<updated>2009-03-13T13:48:32Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, distributed systems, parallel simulation&lt;br /&gt;
** ''Interests:'' Distributed systems, simulation, concurrency, clusters&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
* '''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.&lt;br /&gt;
** ''Required Experience:''&lt;br /&gt;
** ''Bonus Experience:''&lt;br /&gt;
** ''Interests:''&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2417</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2417"/>
		<updated>2009-03-13T13:36:20Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
Each project idea has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
** ''Required Experience:'' BSD networking&lt;br /&gt;
** ''Bonus Experience:'' Python, distributed systems, parallel simulation&lt;br /&gt;
** ''Interests:'' Distributed systems, simulation, concurrency, clusters&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2416</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2416"/>
		<updated>2009-03-13T13:26:34Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
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 [http://mailman.isi.edu/mailman/listinfo/ns-developers 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 [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list].  That will help you develop the idea and present a concrete, meaningful application.&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
* '''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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2415</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2415"/>
		<updated>2009-03-13T13:23:17Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  These ideas are not limited to Google Summer of Code; anyone is welcome to work on them (please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if one interests you).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
* '''Generalized Router Models/Structure.'''&lt;br /&gt;
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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;br /&gt;
* '''P2P Protocols.'''&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2414</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2414"/>
		<updated>2009-03-13T13:21:40Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This is the webpage for planning [http://code.google.com/soc Google Summer of Code] 2009 projects and mentors.  ns-3 plans to apply for a spot in the Google Summer of Code again this year.  Please list project ideas and identify possible mentors below. &lt;br /&gt;
&lt;br /&gt;
The ns-3 project presented at a GSoC Infosession at the University of Washington on March 5th, 2009.  Slides for the short talk we gave may be found [http://www.nsnam.org/docs/gsoc.ppt here].&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer:'''  There is no guarantee that ns-3 will be accepted again in GSoC 2009. We have to re-apply.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  These ideas are not limited to Google Summer of Code; anyone is welcome to work on them (please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if one interests you).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
=== Core Simulation Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://rpyc.wikidot.com/ RPYC].  Development would build from multiple instances on a single host to a cluster to which the student will be given access.&lt;br /&gt;
&lt;br /&gt;
=== MAC and PHY Models ===&lt;br /&gt;
&lt;br /&gt;
* '''SNS for ns-3 Wifi.''' [http://www.cs.cornell.edu/people/egs/sns/ 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.&lt;br /&gt;
&lt;br /&gt;
* '''WPAN Device Models.'''&lt;br /&gt;
* '''802.11 WDS Support for nqsta.'''&lt;br /&gt;
&lt;br /&gt;
=== Routing Internals ===&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://www.isi.edu/nsnam/ns/doc/node69.html ns-2] or [http://lartc.org/howto/ Linux routing and traffic control] implementations.&lt;br /&gt;
&lt;br /&gt;
* '''Click Modular Router Integration.'''  This project would port and enable ns-3 simulations to use the [http://read.cs.ucla.edu/click/ 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.&lt;br /&gt;
&lt;br /&gt;
* '''Generalized Router Models/Structure.'''&lt;br /&gt;
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 [http://www.cs.ucsb.edu/~rchertov/papers/infocom08.pdf empirical router testing] to develop a new, more detailed Router node type for ns-3.&lt;br /&gt;
&lt;br /&gt;
* '''Protolib Integration.'''  [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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).&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
&lt;br /&gt;
=== Network Stack ===&lt;br /&gt;
&lt;br /&gt;
* '''Network Simulation Cradle for IPv4.'''  Last year's ns-3 Google Summer of Code very successfully ported the [http://research.wand.net.nz/software/nsc.php 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.&lt;br /&gt;
&lt;br /&gt;
* '''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 [http://blog.internetworkexpert.com/2008/04/18/understanding-ipv6-nat-pt/ proposed even for IPv6].  [http://www.isoc.org/tools/blogs/ietfjournal/?p=117 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.&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://cutebugs.net/files/wns2-yans.pdf yans simulator].  The project would then continue to add support for more research-oriented techniques such as [http://en.wikipedia.org/wiki/Path_MTU_discovery Path MTU discovery], particularly for IPv6 which fragments at the endpoints and must discover the proper MTU for a chosen path.&lt;br /&gt;
&lt;br /&gt;
* ''' 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 [http://trac.tools.ietf.org/group/irtf/trac/wiki/RoutingResearchGroup 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.&lt;br /&gt;
&lt;br /&gt;
=== Emulation and Simulation In The Loop ===&lt;br /&gt;
&lt;br /&gt;
* '''EMULAB Support and Integration.'''  This project would attempt to emulate ns-3 and [http://www.emulab.net 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Applications and Systems ===&lt;br /&gt;
&lt;br /&gt;
* P2P Protocols&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;br /&gt;
&lt;br /&gt;
* '''Agent-J Implementation.''' [http://cs.itd.nrl.navy.mil/pubs/docs/agentj-dfma06.pdf Agent-J] is a Java library built on top of [http://cs.itd.nrl.navy.mil/work/protolib/index.php 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.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2406</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2406"/>
		<updated>2009-03-12T05:36:49Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: /* Applications and Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== Applications and Systems ==&lt;br /&gt;
&lt;br /&gt;
* P2P Protocols&lt;br /&gt;
&lt;br /&gt;
* '''Large Scale Topology Generation and Management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2405</id>
		<title>GSOC2009Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2009Projects&amp;diff=2405"/>
		<updated>2009-03-12T05:36:23Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: Reorganizing project ideas a bit.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== Applications and Systems ==&lt;br /&gt;
&lt;br /&gt;
* P2P Protocols&lt;br /&gt;
&lt;br /&gt;
* '''Large scale topology generation and management.'''  ns-2 incorporates support for [http://www.isi.edu/nsnam/ns/ns-topogen.html 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, [http://www.cs.utah.edu/flux/papers/ipassign-ftn2005-04-base.html recent work] by the Emulab project may be useful in this regard.&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=FindingApplications&amp;diff=1721</id>
		<title>FindingApplications</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=FindingApplications&amp;diff=1721"/>
		<updated>2008-06-26T21:21:52Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sometimes, you may want to find an application of a given type on a node.  The &amp;lt;code&amp;gt;Node&amp;lt;/code&amp;gt; objects provides basic access to do this, and the &amp;lt;code&amp;gt;TypeId&amp;lt;/code&amp;gt; mechanism the ability to identify the application.  If the application objects have &amp;lt;code&amp;gt;TypeId&amp;lt;/code&amp;gt; definitions, then this simple loop will find an application:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  Ptr&amp;lt;Application&amp;gt; app;&lt;br /&gt;
  Ptr&amp;lt;MyApp&amp;gt; myapp = 0;&lt;br /&gt;
  for (uint32_t x = 0; x &amp;lt; node-&amp;gt;GetNApplications(); x++) {&lt;br /&gt;
    app = node-&amp;gt;GetApplication(x);&lt;br /&gt;
    if (app-&amp;gt;GetInstanceTypeId() == MyApp::GetTypeId()) {&lt;br /&gt;
      myapp = dynamic_cast&amp;lt;MyApp *&amp;gt; (PeekPointer(app));&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (myapp != 0) {&lt;br /&gt;
    // Do something MyApp specific with it...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the specific syntax of the cast---the template is of the pointer, not a &amp;lt;code&amp;gt;Ptr&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Samples]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=MobilityHelper&amp;diff=1720</id>
		<title>MobilityHelper</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=MobilityHelper&amp;diff=1720"/>
		<updated>2008-06-25T13:31:07Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's the basic usage for the mobility helper:&lt;br /&gt;
&lt;br /&gt;
* Create a &amp;lt;code&amp;gt;MobilityHelper&amp;lt;/code&amp;gt; object&lt;br /&gt;
* Set the options on it, i.e. what positioning scheme to use and what mobility models to assign&lt;br /&gt;
* Apply the helper to a &amp;lt;code&amp;gt;NodeContainer&amp;lt;/code&amp;gt; to position the nodes and assign them mobility models&lt;br /&gt;
&lt;br /&gt;
A simple example is in &amp;lt;tt&amp;gt;samples/main-grid-topology.cc&amp;lt;/tt&amp;gt; in the repositories &amp;amp; packages.  Consult the doxygen or headers to figure out which typeids may be applied, as well as their parameters.&lt;br /&gt;
&lt;br /&gt;
== Position Allocators ==&lt;br /&gt;
&lt;br /&gt;
=== Grid ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  MobilityHelper mobility;&lt;br /&gt;
  // setup the grid itself: objects are layed out&lt;br /&gt;
  // started from (-100,-100) with 20 objects per row, &lt;br /&gt;
  // the x interval between each object is 5 meters&lt;br /&gt;
  // and the y interval between each object is 20 meters&lt;br /&gt;
  mobility.SetPositionAllocator (&amp;quot;ns3::GridPositionAllocator&amp;quot;,&lt;br /&gt;
                                 &amp;quot;MinX&amp;quot;, DoubleValue(-100.0),&lt;br /&gt;
                                 &amp;quot;MinY&amp;quot;, DoubleValue(-100.0),&lt;br /&gt;
                                 &amp;quot;DeltaX&amp;quot;, DoubleValue(5.0),&lt;br /&gt;
                                 &amp;quot;DeltaY&amp;quot;, DoubleValue(20.0),&lt;br /&gt;
                                 &amp;quot;GridWidth&amp;quot;, UintegerValue(20),&lt;br /&gt;
                                 &amp;quot;LayoutType&amp;quot;, StringValue(&amp;quot;RowFirst&amp;quot;));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manual Allocation ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  MobilityHelper mobility;&lt;br /&gt;
  // Put everybody into a line&lt;br /&gt;
  Ptr&amp;lt;ListPositionAllocator&amp;gt; initialAlloc = &lt;br /&gt;
    CreateObject&amp;lt;ListPositionAllocator&amp;gt; ();&lt;br /&gt;
  for (uint32_t i = 0; i &amp;lt; mainNodes.GetN (); ++i) {&lt;br /&gt;
      initialAlloc-&amp;gt;Add (Vector (i, 0., 0.));&lt;br /&gt;
  }&lt;br /&gt;
  mobilityHelper.SetPositionAllocator(initialAlloc);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mobility Model ==&lt;br /&gt;
&lt;br /&gt;
=== Static Mobility ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  MobilityHelper mobility;&lt;br /&gt;
  // each object will be attached a static position.&lt;br /&gt;
  // i.e., once set by the &amp;quot;position allocator&amp;quot;, the&lt;br /&gt;
  // position will never change.&lt;br /&gt;
  mobility.SetMobilityModel (&amp;quot;ns3::StaticMobilityModel&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Random 2D Direction ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  MobilityHelper mobility;&lt;br /&gt;
  mobility.SetMobilityModel(&amp;quot;ns3::RandomDirection2dMobilityModel&amp;quot;,&lt;br /&gt;
                            &amp;quot;Bounds&amp;quot;, Rectangle(0, 100, 0, 100),&lt;br /&gt;
                            &amp;quot;Speed&amp;quot;, ConstantVariable(2000),&lt;br /&gt;
                            &amp;quot;Pause&amp;quot;, ConstantVariable(0.2));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Samples]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=FetchingIPAddresses&amp;diff=1719</id>
		<title>FetchingIPAddresses</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=FetchingIPAddresses&amp;diff=1719"/>
		<updated>2008-06-25T02:28:15Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Grabbing the IP addresses associated with a node is a relatively simple task.  Much like a normal computer and operating system, each node may have &amp;lt;code&amp;gt;NetDevices&amp;lt;/code&amp;gt;, which may be associated with IP interface objects.  The latter are hidden from typical user programs behind &amp;lt;code&amp;gt;IPv4&amp;lt;/code&amp;gt; objects.  From there, you may query for devices and interfaces associated with the node, the IP address bound to interfaces, etc.  The following loop prints all IP addresses for all nodes, excluding the local loopback interfaces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  Ipv4Address loopback(&amp;quot;127.0.0.1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  for (NodeList::Iterator iter = NodeList::Begin();&lt;br /&gt;
       iter != NodeList::End();&lt;br /&gt;
       iter++) {&lt;br /&gt;
    Ptr&amp;lt;Node&amp;gt; node = (*iter);&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;Ipv4&amp;gt; ipv4 = node-&amp;gt;GetObject&amp;lt;Ipv4&amp;gt;();&lt;br /&gt;
    NS_ASSERT(ipv4 != 0);&lt;br /&gt;
    &lt;br /&gt;
    for (uint32_t index = 0; index &amp;lt; ipv4-&amp;gt;GetNInterfaces(); index++) {&lt;br /&gt;
      Ipv4Address ipv4Address = ipv4-&amp;gt;GetAddress(index);&lt;br /&gt;
&lt;br /&gt;
      if (ipv4Address != loopback) {&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot; node &amp;quot; &amp;lt;&amp;lt; node-&amp;gt;GetId() &amp;lt;&amp;lt;&lt;br /&gt;
          &amp;quot; ip &amp;quot; &amp;lt;&amp;lt; ipv4Address &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
      }&lt;br /&gt;
      // end iterating over interfaces&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // end iterate over nodes&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Samples]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GetAggregateOwners&amp;diff=1718</id>
		<title>GetAggregateOwners</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GetAggregateOwners&amp;diff=1718"/>
		<updated>2008-06-23T22:31:44Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Often you may wish to get the &amp;quot;owners&amp;quot; of an object, the container into which it has been aggregated.  For example, given the &amp;lt;code&amp;gt;MobilityModel&amp;lt;/code&amp;gt; associated with a &amp;lt;code&amp;gt;CourseChange&amp;lt;/code&amp;gt; event, you may wish to get a pointer to the corresponding node.  The important but not obvious property to realize in this case is that aggregation in NS-3 is automatically bi-directional.  When an object is aggregated to another object, the latter is also aggregated to the former.  In effect, the aggregation relation is a one-to-one, reflexive, typed relation.  As a result, the following code will get the &amp;quot;owner&amp;quot; node from a &amp;lt;code&amp;gt;MobilityModel&amp;lt;/code&amp;gt; object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
void &lt;br /&gt;
DecoratorManager::CourseChange (std::string foo,&lt;br /&gt;
                                Ptr&amp;lt;const MobilityModel&amp;gt; mobility)&lt;br /&gt;
{&lt;br /&gt;
  Ptr&amp;lt;Node&amp;gt; node = mobility-&amp;gt;GetObject&amp;lt;Node&amp;gt;();&lt;br /&gt;
  NS_ASSERT(node != 0);&lt;br /&gt;
&lt;br /&gt;
  // Do stuff...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Samples]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GetAggregateOwners&amp;diff=1717</id>
		<title>GetAggregateOwners</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GetAggregateOwners&amp;diff=1717"/>
		<updated>2008-06-23T21:59:04Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Samples]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GetNodeFromMobilityModel&amp;diff=1716</id>
		<title>GetNodeFromMobilityModel</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GetNodeFromMobilityModel&amp;diff=1716"/>
		<updated>2008-06-23T21:58:35Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[GetAggregateOwners]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=CheckingNull&amp;diff=1715</id>
		<title>CheckingNull</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=CheckingNull&amp;diff=1715"/>
		<updated>2008-06-23T20:50:57Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In general, when setting or checking a pointer to be a null value, you should explicitly use 0 rather than &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt;.  To demonstrate, you should use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  if (ptr == 0) {&lt;br /&gt;
    // code failed, whine to listserv&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As opposed to the commonly used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  if (ptr == NULL) {&lt;br /&gt;
    // code failed, whine to listserv but say you used 0&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In any event, you should definitely not use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  if (!ptr) {&lt;br /&gt;
    // you're fired!&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is some discussion about this issue [http://www.velocityreviews.com/forums/t284567-null-macro-vs-0-as-null-pointer.html here].  In general, &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; is not as crisply defined or its use as straightforwardly intuitive as using 0.  The implicit check is also generally avoided in NS3 for reasons of code clarity.&lt;br /&gt;
&lt;br /&gt;
[[Category:Samples]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=CheckingNull&amp;diff=1714</id>
		<title>CheckingNull</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=CheckingNull&amp;diff=1714"/>
		<updated>2008-06-23T20:50:21Z</updated>

		<summary type="html">&lt;p&gt;Tjkopena: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
In general, when setting or checking a pointer to be a null value, you should instead explicitly use 0 rather than &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt;.  For example, you should use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  if (ptr == 0) {&lt;br /&gt;
    // code failed, whine to listserv&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As opposed to the commonly used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  if (ptr == NULL) {&lt;br /&gt;
    // code failed, whine to listserv but say you used 0&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In any event, you should definitely not use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  if (!ptr) {&lt;br /&gt;
    // you're fired!&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is some discussion about this issue [http://www.velocityreviews.com/forums/t284567-null-macro-vs-0-as-null-pointer.html here].  In general, &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; is not as crisply defined or its use as straightforwardly intuitive as using 0.  The implicit check is also generally avoided in NS3 for reasons of code clarity.&lt;br /&gt;
&lt;br /&gt;
[[Category:Samples]]&lt;/div&gt;</summary>
		<author><name>Tjkopena</name></author>
	</entry>
</feed>