<?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=DvdMgr</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=DvdMgr"/>
	<link rel="alternate" type="text/html" href="https://www.nsnam.org/wiki/Special:Contributions/DvdMgr"/>
	<updated>2026-04-07T10:35:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12248</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12248"/>
		<updated>2021-03-17T08:41:57Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* SEM - Examples and documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://write.flossmanuals.net/gsocstudentguide/about-this-manual/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2021StudentApplicationTemplate |2021 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://write.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Manoj Kumar Rana&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
* Apoorva Bhargava&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines. Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patch requirement guidelines ===&lt;br /&gt;
&lt;br /&gt;
Each project idea has (or will have) a list of proposed tasks that a student must do to ensure his/her ability to carry out the idea successfully. Performing one task is necessary for a successful application, and performing more than one task is ''not'' necessary.&lt;br /&gt;
&lt;br /&gt;
If a student wants to work on a proposed task he/she should immediately contact the mentor(s) to &amp;quot;claim&amp;quot; that task - in order to avoid (where needed) that multiple students are on the same task. A task might involve fixing a specific open issue, or adding some functionalities to the existing code.&lt;br /&gt;
&lt;br /&gt;
Students that did already contribute to the ns-3 codebase with non-trivial bug fixing or features additions might be exempted from performing a task. If you have doubts about if your contributions made you eligible for the task exemption contact the mentors.&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:apoorvabhargava13@gmail.com Apoorva Bhargava]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
* ''Patch requirement:''  Any progress you can make on one of the following topics:&lt;br /&gt;
** Get DCE working on Ubuntu 20.04&lt;br /&gt;
** Upgrade the current net-next-nuse to a later kernel version than kernel 4.4&lt;br /&gt;
** Get DCE to compile with clang++ (https://github.com/direct-code-execution/ns-3-dce/issues/16)&lt;br /&gt;
&lt;br /&gt;
==== LoRaWAN ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with C++ programming and the LoRaWAN standard.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Python programming.&lt;br /&gt;
* ''Interests'': Internet of Things communication protocols.&lt;br /&gt;
* ''Difficulty'': Medium to Hard.&lt;br /&gt;
* ''For more info'': https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
* ''Patch requirement'': Create a pull request that fixes any of the following issues in the lorawan repo:&lt;br /&gt;
** Test, fix and make sure the us915 branch works as expected, helping merge it into develop https://github.com/signetlabdei/lorawan/issues/32&lt;br /&gt;
** Write a documentation entry describing how the Network Server works, or fix any other point in this issue: https://github.com/signetlabdei/lorawan/issues/58&lt;br /&gt;
&lt;br /&gt;
==== SEM - Examples and documentation ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
The SEM Python library was designed to help ns-3 users run complex simulation campaigns. Among other things, SEM strives to make it as easy as possible to parse the output of simulations and to obtain plots that show the impact of simulation parameters on the network's performance.&lt;br /&gt;
&lt;br /&gt;
One of the objectives for the next big SEM release is to provide users with more examples that are both easy to modify and that showcase the full potential of the library and of the Python data analysis ecosystem. In this project, your objective will be to show how SEM can be used from within Jupyter Notebooks to gradually explore the behavior of a network. Aside from the creation of new examples, you will also have the opportunity to try your hand at the all-important task of writing documentation. If there's time and you feel like tackling the issue, in a second part of the project you will also explore how SEM can be used to visualize the behavior of single simulations that leverage ns-3's built-in logging.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with Python and C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Jupyter Notebooks.&lt;br /&gt;
* ''Difficulty'': Medium.&lt;br /&gt;
* ''For more info'': http://github.com/signetlabdei/sem&lt;br /&gt;
* ''Patch requirement'': Create a pull request completing any of the following tasks:&lt;br /&gt;
** Create a new example SEM script, that runs a program different from wifi-multi-tos and plots some meaningful result&lt;br /&gt;
** Add a test that improves the codecov score (you can do this either on the develop branch or on the newrelease branch)&lt;br /&gt;
&lt;br /&gt;
==== Upgrade the AQM Evaluation Suite for ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:shahmishal1998@gmail.com Mishal Shah]&lt;br /&gt;
&lt;br /&gt;
AQM (Active Queue Management) evaluation suite for ns-3 helps to quickly study the performance of AQM algorithms based on the guidelines mentioned in RFC 7928. This suite automates simulation setup, topology creation, traffic generation, program execution, results collection and their graphical representation using ns-3 based on the scenarios mentioned in RFC 7928. It was designed and developed in 2017 and actively maintained till 2019. In the past two years, the traffic control model in ns-3 has grown significantly in terms of supporting state-of-the-art packet scheduling and AQM algorithms. This project has four main goals: (1) upgrade the AQM Evaluation Suite according to the latest ns-3-dev, (2) enable support for latest packet scheduling, AQM algorithms and ECN functionality (3) update the examples in AQM Evaluation Suite to better suit the needs of researchers working in this area, and (4) make AQM Evaluation Suite available on the ns-3 app store.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with AQM and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with traffic control model in ns-3.&lt;br /&gt;
* ''Interests:'' Packet Scheduling algorithms, AQM algorithms and ECN.&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** AQM Evaluation Suite [[https://dl.acm.org/doi/abs/10.1145/3067665.3067674 Paper]] [[https://aqm-eval-suite.github.io/ Implementation]]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc7928 RFC 7928]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/traffic-control-layer.html Traffic Control Model in ns-3]&lt;br /&gt;
&lt;br /&gt;
==== Upgrade Python bindings framework ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
The project has provided Python bindings via a toolchain combining [https://github.com/gjcarneiro/pybindgen pybindgen], [https://github.com/CastXML/CastXML CastXML], and [https://github.com/CastXML/pygccxml pygccxml].  This is a compile-time solution, and some drawbacks have appeared as the C++ language has evolved but the bindings framework has not kept pace (leading to errors in scanning the APIs, or incomplete API coverage).  A recent summary can be found [https://mailman.isi.edu/pipermail/ns-developers/2021-February/015396.html here].   This project would aim to prototype and evaluate whether a different framework could be used (such as [https://cppyy.readthedocs.io/en/latest/ cppyy] or [https://pybind11.readthedocs.io/en/stable/ pybind11]).  In any case, work can also include fixing one or more bugs/limitations found in our issue tracker with the label 'python bindings'.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with C++ and Python/C.  Solid Python coding skills.&lt;br /&gt;
* ''Interests:'' Python bindings&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Patch requirement:'' Any progress you can make on one of the following topics:&lt;br /&gt;
** Successfully scan bindings on macOS (see https://gitlab.com/nsnam/ns-3-dev/-/issues/93)&lt;br /&gt;
** [https://github.com/gjcarneiro/pybindgen/issues/10 Add support for C++ scoped enums in pybindgen]&lt;br /&gt;
** Any proof-of-concept implementation (even if only partially working) using cppyy or pybind11&lt;br /&gt;
&lt;br /&gt;
==== TCP maximum segment size (MSS) improvements ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], others TBD&lt;br /&gt;
&lt;br /&gt;
TCP performances are affected by the maximum segment size (MSS) - a wrong choice might either lead to inefficient transmission (higher overhead) or IP fragmentation.&lt;br /&gt;
&lt;br /&gt;
At the moment ns-3 implementation allows to set the MSS via an Attribute (set by default to 536 bytes by TcpSocket Attribute &amp;quot;SegmentSize&amp;quot;).&lt;br /&gt;
Although it is stated that it &amp;quot;may be adjusted based on MTU discovery&amp;quot;, its value is not changed in a simulation.&lt;br /&gt;
&lt;br /&gt;
The goal of the project is to update the MSS handling, allowing to:&lt;br /&gt;
1) Set it to a fixed size, or allowing auto-probing of &amp;quot;optimal&amp;quot; MSS,&lt;br /&gt;
2) Use and honor the TcpOptionMSS (RFC 793), with a proper example of use, and&lt;br /&gt;
3) React to intermediate links with short MTU, and/or to changes in the Path MTU (PMTU).&lt;br /&gt;
&lt;br /&gt;
The last point is to be carefully handled, as in many points in the code there is an implicit assumption that the MSS is constant in a given flow.&lt;br /&gt;
&lt;br /&gt;
Moreover, note that finding the optimal PMTU is not that simple, as IPv6 and IPv4 react differently to packets exceeding the link MTU, and they won't notify if a packet is shorter than the link MTU.&lt;br /&gt;
As a consequence, it would be useful to implement the Packetization Layer Path MTU Discovery (RFC 4821) - which might exceed the GSoC timeframe.&lt;br /&gt;
&lt;br /&gt;
Hence, it would be advisable to carefully select the features to be supported and tested in the project, eventually paving the ground for future enhancements.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP, IPv4 and IPv6, and in particular with fragmentation.&lt;br /&gt;
* ''Difficulty:'' Medium / Hard&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Path_MTU_Discovery Wikipedia: Path MTU Discovery]&lt;br /&gt;
** [https://www.nsnam.org/bugzilla/show_bug.cgi?id=2064 UdpSocket::GetMtu() needed]&lt;br /&gt;
** [https://www.nsnam.org/bugzilla/show_bug.cgi?id=1751 TCP should react to MTU changes]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc1191 RFC 1191]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc4821 RFC 4821]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc1122#page-85 RFC 1122]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc6691 RFC 6991]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc2923 RFC 2923]&lt;br /&gt;
** [https://blog.apnic.net/2014/12/15/ip-mtu-and-tcp-mss-missmatch-an-evil-for-network-performance/ APNIC blog - IP MTU and TCP MSS Missmatch – an evil for network performance]&lt;br /&gt;
** [https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3650/software/release/16-9/configuration_guide/ip/b_169_ip_3650_cg/configuring_tcp_mss_adjustment.pdf Cisco - Configuring TCP MSS Adjustment]&lt;br /&gt;
&lt;br /&gt;
==== Enable IPv6 support for Ad hoc Routing Protocols in ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], and others TBD&lt;br /&gt;
&lt;br /&gt;
ns-3 contains models for proactive (DSDV and OLSR) and reactive (AODV and DSR) ad hoc routing protocols. However, these models are IPv4-only and do not provide support of IPv6 addressing. This project aims to enable IPv6 support for ad hoc routing protocols in ns-3, mainly for AODV. There are out-of-tree implementations of OLSR and DSDV that provide support for IPv6 addressing, and can be used as references to get started with this project.&lt;br /&gt;
&lt;br /&gt;
The most important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
&lt;br /&gt;
Note:  Enabling IPv6 support for these protocols is not a matter of simply changing out an IPv4-formatted address for an IPv6-formatted address.  The IPv6 addressing architecture emphasizes scoping much more than does IPv4 (RFC 4007).  Please suggest in your application how IPv6 address configuration (and possibly auto-configuration?) and address scopes (e.g. link-local vs. global) should be used in these protocols. Consulting the RFCs is highly recommended.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with AODV implementations in ns-3&lt;br /&gt;
* ''Interests:'' Ad hoc routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/aodv.html AODV model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/workshops/wns3-2016/posters/IPv6-support-for-OLSR.pdf IPv6 Support for OLSR in ns-3]&lt;br /&gt;
&lt;br /&gt;
Possible tasks to fulfill the patch requirement:&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/nsnam/ns-3-dev/-/issues/271 Issue #271] - olsr header and messages are not printing either their size or their content.&lt;br /&gt;
&lt;br /&gt;
==== IPv6 global routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], others TBD&lt;br /&gt;
&lt;br /&gt;
Creating a complex topology can be a problem, and sometimes the user do not want to be (also) concerned about setting up dynamic routing protocols (e.g., RIP, RIPng).&lt;br /&gt;
For IPv4, ns-3 provides two alternatives: GlobalRouting, and NixRouting, which just &amp;quot;do the trick&amp;quot; - they simply fill the routing tables in intermediate nodes, GlobalRouting using an approach similar to OSPF, NixRouting by leveraging the &amp;quot;abstract&amp;quot; knowledge of the network.&lt;br /&gt;
Neither actually use any message between the nodes, so they also reduce the network overhead - something that is useful in many cases.&lt;br /&gt;
&lt;br /&gt;
The problem is that they don't work for IPv6, and that's a huge limitation. The goal of the project is to fix that limitation. Note that the project must cope with different IPv6 address kinds (link-local, global, scoped multicast, etc.). Due to the limitation with GlobalRouting w.r.t. wireless channels, it would be advisable to start working with NixRouting.&lt;br /&gt;
&lt;br /&gt;
The most important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with NixRouting and GlobalRouting implementations in ns-3&lt;br /&gt;
* ''Interests:'' IPv6 routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/nix-vector-routing.html NixRouting model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/routing-overview.html#global-centralized-routing GlobalRouting model in ns-3]&lt;br /&gt;
&lt;br /&gt;
Possible tasks to fulfill the patch requirement:&lt;br /&gt;
* Add a function to print the path that a packet will use (according to Ipv4NixVectorRouting), i.e., given source and destination IP print the IP addresses of the nodes that Ipv4NixVectorRouting will use.&lt;br /&gt;
* Add a function to print the path that a packet will use (according to Ipv4GlobalRouting), i.e., given source and destination IP print the IP addresses of the nodes that Ipv4GlobalRouting will use.&lt;br /&gt;
&lt;br /&gt;
==== Integration of MIPv6 module into ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:manoj24.rana@gmail.com Manoj Kumar Rana]&lt;br /&gt;
&lt;br /&gt;
The MIPv6 module had already been implemented in ns-3 (The links of their implementations are given below). But, these modules are still lacking in ns-3 main tree. One of the medium access control (MAC) layer issue was NetDevice up/down consistency which has been resolved through the GSoC 2020 project titled, “NetDevice up/down consistency and event chain”. The MIPv6 integration still requires understanding the behaviour of IPv6 and ICMPv6 protocols running in LTE module (mainly between PGW/SGW and eNB). Although IPv6 packets are now transferred over LTE network, the sole purpose of MIPv6 handoff i.e. switching mobile node between LTE and WiFi can only be accomplished by modifying the existing MIPv6 module and extending the existing LTE module.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++, LTE IPv6 support.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with MIPv6/PMIPv6 module implementations in ns-3&lt;br /&gt;
* ''Interests:'' IPv6&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/wiki/GSOC2017MobileIp MIPv6 model in ns-3]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12247</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12247"/>
		<updated>2021-03-17T08:36:59Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* LoRaWAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://write.flossmanuals.net/gsocstudentguide/about-this-manual/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2021StudentApplicationTemplate |2021 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://write.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Manoj Kumar Rana&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
* Apoorva Bhargava&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines. Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patch requirement guidelines ===&lt;br /&gt;
&lt;br /&gt;
Each project idea has (or will have) a list of proposed tasks that a student must do to ensure his/her ability to carry out the idea successfully. Performing one task is necessary for a successful application, and performing more than one task is ''not'' necessary.&lt;br /&gt;
&lt;br /&gt;
If a student wants to work on a proposed task he/she should immediately contact the mentor(s) to &amp;quot;claim&amp;quot; that task - in order to avoid (where needed) that multiple students are on the same task. A task might involve fixing a specific open issue, or adding some functionalities to the existing code.&lt;br /&gt;
&lt;br /&gt;
Students that did already contribute to the ns-3 codebase with non-trivial bug fixing or features additions might be exempted from performing a task. If you have doubts about if your contributions made you eligible for the task exemption contact the mentors.&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:apoorvabhargava13@gmail.com Apoorva Bhargava]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
* ''Patch requirement:''  Any progress you can make on one of the following topics:&lt;br /&gt;
** Get DCE working on Ubuntu 20.04&lt;br /&gt;
** Upgrade the current net-next-nuse to a later kernel version than kernel 4.4&lt;br /&gt;
** Get DCE to compile with clang++ (https://github.com/direct-code-execution/ns-3-dce/issues/16)&lt;br /&gt;
&lt;br /&gt;
==== LoRaWAN ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with C++ programming and the LoRaWAN standard.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Python programming.&lt;br /&gt;
* ''Interests'': Internet of Things communication protocols.&lt;br /&gt;
* ''Difficulty'': Medium to Hard.&lt;br /&gt;
* ''For more info'': https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
* ''Patch requirement'': Create a pull request that fixes any of the following issues in the lorawan repo:&lt;br /&gt;
** Test, fix and make sure the us915 branch works as expected, helping merge it into develop https://github.com/signetlabdei/lorawan/issues/32&lt;br /&gt;
** Write a documentation entry describing how the Network Server works, or fix any other point in this issue: https://github.com/signetlabdei/lorawan/issues/58&lt;br /&gt;
&lt;br /&gt;
==== SEM - Examples and documentation ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
The SEM Python library was designed to help ns-3 users run complex simulation campaigns. Among other things, SEM strives to make it as easy as possible to parse the output of simulations and to obtain plots that show the impact of simulation parameters on the network's performance.&lt;br /&gt;
&lt;br /&gt;
One of the objectives for the next big SEM release is to provide users with more examples that are both easy to modify and that showcase the full potential of the library and of the Python data analysis ecosystem. In this project, your objective will be to show how SEM can be used from within Jupyter Notebooks to gradually explore the behavior of a network. Aside from the creation of new examples, you will also have the opportunity to try your hand at the all-important task of writing documentation. If there's time and you feel like tackling the issue, in a second part of the project you will also explore how SEM can be used to visualize the behavior of single simulations that leverage ns-3's built-in logging.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with Python and C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Jupyter Notebooks.&lt;br /&gt;
* ''Difficulty'': Medium.&lt;br /&gt;
* ''For more info'': http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
==== Upgrade the AQM Evaluation Suite for ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:shahmishal1998@gmail.com Mishal Shah]&lt;br /&gt;
&lt;br /&gt;
AQM (Active Queue Management) evaluation suite for ns-3 helps to quickly study the performance of AQM algorithms based on the guidelines mentioned in RFC 7928. This suite automates simulation setup, topology creation, traffic generation, program execution, results collection and their graphical representation using ns-3 based on the scenarios mentioned in RFC 7928. It was designed and developed in 2017 and actively maintained till 2019. In the past two years, the traffic control model in ns-3 has grown significantly in terms of supporting state-of-the-art packet scheduling and AQM algorithms. This project has four main goals: (1) upgrade the AQM Evaluation Suite according to the latest ns-3-dev, (2) enable support for latest packet scheduling, AQM algorithms and ECN functionality (3) update the examples in AQM Evaluation Suite to better suit the needs of researchers working in this area, and (4) make AQM Evaluation Suite available on the ns-3 app store.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with AQM and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with traffic control model in ns-3.&lt;br /&gt;
* ''Interests:'' Packet Scheduling algorithms, AQM algorithms and ECN.&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** AQM Evaluation Suite [[https://dl.acm.org/doi/abs/10.1145/3067665.3067674 Paper]] [[https://aqm-eval-suite.github.io/ Implementation]]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc7928 RFC 7928]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/traffic-control-layer.html Traffic Control Model in ns-3]&lt;br /&gt;
&lt;br /&gt;
==== Upgrade Python bindings framework ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
The project has provided Python bindings via a toolchain combining [https://github.com/gjcarneiro/pybindgen pybindgen], [https://github.com/CastXML/CastXML CastXML], and [https://github.com/CastXML/pygccxml pygccxml].  This is a compile-time solution, and some drawbacks have appeared as the C++ language has evolved but the bindings framework has not kept pace (leading to errors in scanning the APIs, or incomplete API coverage).  A recent summary can be found [https://mailman.isi.edu/pipermail/ns-developers/2021-February/015396.html here].   This project would aim to prototype and evaluate whether a different framework could be used (such as [https://cppyy.readthedocs.io/en/latest/ cppyy] or [https://pybind11.readthedocs.io/en/stable/ pybind11]).  In any case, work can also include fixing one or more bugs/limitations found in our issue tracker with the label 'python bindings'.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with C++ and Python/C.  Solid Python coding skills.&lt;br /&gt;
* ''Interests:'' Python bindings&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Patch requirement:'' Any progress you can make on one of the following topics:&lt;br /&gt;
** Successfully scan bindings on macOS (see https://gitlab.com/nsnam/ns-3-dev/-/issues/93)&lt;br /&gt;
** [https://github.com/gjcarneiro/pybindgen/issues/10 Add support for C++ scoped enums in pybindgen]&lt;br /&gt;
** Any proof-of-concept implementation (even if only partially working) using cppyy or pybind11&lt;br /&gt;
&lt;br /&gt;
==== TCP maximum segment size (MSS) improvements ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], others TBD&lt;br /&gt;
&lt;br /&gt;
TCP performances are affected by the maximum segment size (MSS) - a wrong choice might either lead to inefficient transmission (higher overhead) or IP fragmentation.&lt;br /&gt;
&lt;br /&gt;
At the moment ns-3 implementation allows to set the MSS via an Attribute (set by default to 536 bytes by TcpSocket Attribute &amp;quot;SegmentSize&amp;quot;).&lt;br /&gt;
Although it is stated that it &amp;quot;may be adjusted based on MTU discovery&amp;quot;, its value is not changed in a simulation.&lt;br /&gt;
&lt;br /&gt;
The goal of the project is to update the MSS handling, allowing to:&lt;br /&gt;
1) Set it to a fixed size, or allowing auto-probing of &amp;quot;optimal&amp;quot; MSS,&lt;br /&gt;
2) Use and honor the TcpOptionMSS (RFC 793), with a proper example of use, and&lt;br /&gt;
3) React to intermediate links with short MTU, and/or to changes in the Path MTU (PMTU).&lt;br /&gt;
&lt;br /&gt;
The last point is to be carefully handled, as in many points in the code there is an implicit assumption that the MSS is constant in a given flow.&lt;br /&gt;
&lt;br /&gt;
Moreover, note that finding the optimal PMTU is not that simple, as IPv6 and IPv4 react differently to packets exceeding the link MTU, and they won't notify if a packet is shorter than the link MTU.&lt;br /&gt;
As a consequence, it would be useful to implement the Packetization Layer Path MTU Discovery (RFC 4821) - which might exceed the GSoC timeframe.&lt;br /&gt;
&lt;br /&gt;
Hence, it would be advisable to carefully select the features to be supported and tested in the project, eventually paving the ground for future enhancements.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP, IPv4 and IPv6, and in particular with fragmentation.&lt;br /&gt;
* ''Difficulty:'' Medium / Hard&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Path_MTU_Discovery Wikipedia: Path MTU Discovery]&lt;br /&gt;
** [https://www.nsnam.org/bugzilla/show_bug.cgi?id=2064 UdpSocket::GetMtu() needed]&lt;br /&gt;
** [https://www.nsnam.org/bugzilla/show_bug.cgi?id=1751 TCP should react to MTU changes]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc1191 RFC 1191]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc4821 RFC 4821]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc1122#page-85 RFC 1122]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc6691 RFC 6991]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc2923 RFC 2923]&lt;br /&gt;
** [https://blog.apnic.net/2014/12/15/ip-mtu-and-tcp-mss-missmatch-an-evil-for-network-performance/ APNIC blog - IP MTU and TCP MSS Missmatch – an evil for network performance]&lt;br /&gt;
** [https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3650/software/release/16-9/configuration_guide/ip/b_169_ip_3650_cg/configuring_tcp_mss_adjustment.pdf Cisco - Configuring TCP MSS Adjustment]&lt;br /&gt;
&lt;br /&gt;
==== Enable IPv6 support for Ad hoc Routing Protocols in ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], and others TBD&lt;br /&gt;
&lt;br /&gt;
ns-3 contains models for proactive (DSDV and OLSR) and reactive (AODV and DSR) ad hoc routing protocols. However, these models are IPv4-only and do not provide support of IPv6 addressing. This project aims to enable IPv6 support for ad hoc routing protocols in ns-3, mainly for AODV. There are out-of-tree implementations of OLSR and DSDV that provide support for IPv6 addressing, and can be used as references to get started with this project.&lt;br /&gt;
&lt;br /&gt;
The most important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
&lt;br /&gt;
Note:  Enabling IPv6 support for these protocols is not a matter of simply changing out an IPv4-formatted address for an IPv6-formatted address.  The IPv6 addressing architecture emphasizes scoping much more than does IPv4 (RFC 4007).  Please suggest in your application how IPv6 address configuration (and possibly auto-configuration?) and address scopes (e.g. link-local vs. global) should be used in these protocols. Consulting the RFCs is highly recommended.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with AODV implementations in ns-3&lt;br /&gt;
* ''Interests:'' Ad hoc routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/aodv.html AODV model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/workshops/wns3-2016/posters/IPv6-support-for-OLSR.pdf IPv6 Support for OLSR in ns-3]&lt;br /&gt;
&lt;br /&gt;
Possible tasks to fulfill the patch requirement:&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/nsnam/ns-3-dev/-/issues/271 Issue #271] - olsr header and messages are not printing either their size or their content.&lt;br /&gt;
&lt;br /&gt;
==== IPv6 global routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], others TBD&lt;br /&gt;
&lt;br /&gt;
Creating a complex topology can be a problem, and sometimes the user do not want to be (also) concerned about setting up dynamic routing protocols (e.g., RIP, RIPng).&lt;br /&gt;
For IPv4, ns-3 provides two alternatives: GlobalRouting, and NixRouting, which just &amp;quot;do the trick&amp;quot; - they simply fill the routing tables in intermediate nodes, GlobalRouting using an approach similar to OSPF, NixRouting by leveraging the &amp;quot;abstract&amp;quot; knowledge of the network.&lt;br /&gt;
Neither actually use any message between the nodes, so they also reduce the network overhead - something that is useful in many cases.&lt;br /&gt;
&lt;br /&gt;
The problem is that they don't work for IPv6, and that's a huge limitation. The goal of the project is to fix that limitation. Note that the project must cope with different IPv6 address kinds (link-local, global, scoped multicast, etc.). Due to the limitation with GlobalRouting w.r.t. wireless channels, it would be advisable to start working with NixRouting.&lt;br /&gt;
&lt;br /&gt;
The most important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with NixRouting and GlobalRouting implementations in ns-3&lt;br /&gt;
* ''Interests:'' IPv6 routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/nix-vector-routing.html NixRouting model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/routing-overview.html#global-centralized-routing GlobalRouting model in ns-3]&lt;br /&gt;
&lt;br /&gt;
Possible tasks to fulfill the patch requirement:&lt;br /&gt;
* Add a function to print the path that a packet will use (according to Ipv4NixVectorRouting), i.e., given source and destination IP print the IP addresses of the nodes that Ipv4NixVectorRouting will use.&lt;br /&gt;
* Add a function to print the path that a packet will use (according to Ipv4GlobalRouting), i.e., given source and destination IP print the IP addresses of the nodes that Ipv4GlobalRouting will use.&lt;br /&gt;
&lt;br /&gt;
==== Integration of MIPv6 module into ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:manoj24.rana@gmail.com Manoj Kumar Rana]&lt;br /&gt;
&lt;br /&gt;
The MIPv6 module had already been implemented in ns-3 (The links of their implementations are given below). But, these modules are still lacking in ns-3 main tree. One of the medium access control (MAC) layer issue was NetDevice up/down consistency which has been resolved through the GSoC 2020 project titled, “NetDevice up/down consistency and event chain”. The MIPv6 integration still requires understanding the behaviour of IPv6 and ICMPv6 protocols running in LTE module (mainly between PGW/SGW and eNB). Although IPv6 packets are now transferred over LTE network, the sole purpose of MIPv6 handoff i.e. switching mobile node between LTE and WiFi can only be accomplished by modifying the existing MIPv6 module and extending the existing LTE module.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++, LTE IPv6 support.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with MIPv6/PMIPv6 module implementations in ns-3&lt;br /&gt;
* ''Interests:'' IPv6&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/wiki/GSOC2017MobileIp MIPv6 model in ns-3]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12246</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12246"/>
		<updated>2021-03-17T07:53:36Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* LoRaWAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://write.flossmanuals.net/gsocstudentguide/about-this-manual/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2021StudentApplicationTemplate |2021 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://write.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Manoj Kumar Rana&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
* Apoorva Bhargava&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines. Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patch requirement guidelines ===&lt;br /&gt;
&lt;br /&gt;
Each project idea has (or will have) a list of proposed tasks that a student must do to ensure his/her ability to carry out the idea successfully. Performing one task is necessary for a successful application, and performing more than one task is ''not'' necessary.&lt;br /&gt;
&lt;br /&gt;
If a student wants to work on a proposed task he/she should immediately contact the mentor(s) to &amp;quot;claim&amp;quot; that task - in order to avoid (where needed) that multiple students are on the same task. A task might involve fixing a specific open issue, or adding some functionalities to the existing code.&lt;br /&gt;
&lt;br /&gt;
Students that did already contribute to the ns-3 codebase with non-trivial bug fixing or features additions might be exempted from performing a task. If you have doubts about if your contributions made you eligible for the task exemption contact the mentors.&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:apoorvabhargava13@gmail.com Apoorva Bhargava]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
* ''Patch requirement:''  Any progress you can make on one of the following topics:&lt;br /&gt;
** Get DCE working on Ubuntu 20.04&lt;br /&gt;
** Upgrade the current net-next-nuse to a later kernel version than kernel 4.4&lt;br /&gt;
** Get DCE to compile with clang++ (https://github.com/direct-code-execution/ns-3-dce/issues/16)&lt;br /&gt;
&lt;br /&gt;
==== LoRaWAN ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with C++ programming and the LoRaWAN standard.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Python programming.&lt;br /&gt;
* ''Interests'': Internet of Things communication protocols.&lt;br /&gt;
* ''Difficulty'': Medium to Hard.&lt;br /&gt;
* ''For more info'': https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
==== SEM - Examples and documentation ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
The SEM Python library was designed to help ns-3 users run complex simulation campaigns. Among other things, SEM strives to make it as easy as possible to parse the output of simulations and to obtain plots that show the impact of simulation parameters on the network's performance.&lt;br /&gt;
&lt;br /&gt;
One of the objectives for the next big SEM release is to provide users with more examples that are both easy to modify and that showcase the full potential of the library and of the Python data analysis ecosystem. In this project, your objective will be to show how SEM can be used from within Jupyter Notebooks to gradually explore the behavior of a network. Aside from the creation of new examples, you will also have the opportunity to try your hand at the all-important task of writing documentation. If there's time and you feel like tackling the issue, in a second part of the project you will also explore how SEM can be used to visualize the behavior of single simulations that leverage ns-3's built-in logging.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with Python and C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Jupyter Notebooks.&lt;br /&gt;
* ''Difficulty'': Medium.&lt;br /&gt;
* ''For more info'': http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
==== Upgrade the AQM Evaluation Suite for ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:shahmishal1998@gmail.com Mishal Shah]&lt;br /&gt;
&lt;br /&gt;
AQM (Active Queue Management) evaluation suite for ns-3 helps to quickly study the performance of AQM algorithms based on the guidelines mentioned in RFC 7928. This suite automates simulation setup, topology creation, traffic generation, program execution, results collection and their graphical representation using ns-3 based on the scenarios mentioned in RFC 7928. It was designed and developed in 2017 and actively maintained till 2019. In the past two years, the traffic control model in ns-3 has grown significantly in terms of supporting state-of-the-art packet scheduling and AQM algorithms. This project has four main goals: (1) upgrade the AQM Evaluation Suite according to the latest ns-3-dev, (2) enable support for latest packet scheduling, AQM algorithms and ECN functionality (3) update the examples in AQM Evaluation Suite to better suit the needs of researchers working in this area, and (4) make AQM Evaluation Suite available on the ns-3 app store.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with AQM and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with traffic control model in ns-3.&lt;br /&gt;
* ''Interests:'' Packet Scheduling algorithms, AQM algorithms and ECN.&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** AQM Evaluation Suite [[https://dl.acm.org/doi/abs/10.1145/3067665.3067674 Paper]] [[https://aqm-eval-suite.github.io/ Implementation]]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc7928 RFC 7928]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/traffic-control-layer.html Traffic Control Model in ns-3]&lt;br /&gt;
&lt;br /&gt;
==== Upgrade Python bindings framework ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
The project has provided Python bindings via a toolchain combining [https://github.com/gjcarneiro/pybindgen pybindgen], [https://github.com/CastXML/CastXML CastXML], and [https://github.com/CastXML/pygccxml pygccxml].  This is a compile-time solution, and some drawbacks have appeared as the C++ language has evolved but the bindings framework has not kept pace (leading to errors in scanning the APIs, or incomplete API coverage).  A recent summary can be found [https://mailman.isi.edu/pipermail/ns-developers/2021-February/015396.html here].   This project would aim to prototype and evaluate whether a different framework could be used (such as [https://cppyy.readthedocs.io/en/latest/ cppyy] or [https://pybind11.readthedocs.io/en/stable/ pybind11]).  In any case, work can also include fixing one or more bugs/limitations found in our issue tracker with the label 'python bindings'.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with C++ and Python/C.  Solid Python coding skills.&lt;br /&gt;
* ''Interests:'' Python bindings&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Patch requirement:'' Any progress you can make on one of the following topics:&lt;br /&gt;
** Successfully scan bindings on macOS (see https://gitlab.com/nsnam/ns-3-dev/-/issues/93)&lt;br /&gt;
** [https://github.com/gjcarneiro/pybindgen/issues/10 Add support for C++ scoped enums in pybindgen]&lt;br /&gt;
** Any proof-of-concept implementation (even if only partially working) using cppyy or pybind11&lt;br /&gt;
&lt;br /&gt;
==== TCP maximum segment size (MSS) improvements ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], others TBD&lt;br /&gt;
&lt;br /&gt;
TCP performances are affected by the maximum segment size (MSS) - a wrong choice might either lead to inefficient transmission (higher overhead) or IP fragmentation.&lt;br /&gt;
&lt;br /&gt;
At the moment ns-3 implementation allows to set the MSS via an Attribute (set by default to 536 bytes by TcpSocket Attribute &amp;quot;SegmentSize&amp;quot;).&lt;br /&gt;
Although it is stated that it &amp;quot;may be adjusted based on MTU discovery&amp;quot;, its value is not changed in a simulation.&lt;br /&gt;
&lt;br /&gt;
The goal of the project is to update the MSS handling, allowing to:&lt;br /&gt;
1) Set it to a fixed size, or allowing auto-probing of &amp;quot;optimal&amp;quot; MSS,&lt;br /&gt;
2) Use and honor the TcpOptionMSS (RFC 793), with a proper example of use, and&lt;br /&gt;
3) React to intermediate links with short MTU, and/or to changes in the Path MTU (PMTU).&lt;br /&gt;
&lt;br /&gt;
The last point is to be carefully handled, as in many points in the code there is an implicit assumption that the MSS is constant in a given flow.&lt;br /&gt;
&lt;br /&gt;
Moreover, note that finding the optimal PMTU is not that simple, as IPv6 and IPv4 react differently to packets exceeding the link MTU, and they won't notify if a packet is shorter than the link MTU.&lt;br /&gt;
As a consequence, it would be useful to implement the Packetization Layer Path MTU Discovery (RFC 4821) - which might exceed the GSoC timeframe.&lt;br /&gt;
&lt;br /&gt;
Hence, it would be advisable to carefully select the features to be supported and tested in the project, eventually paving the ground for future enhancements.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP, IPv4 and IPv6, and in particular with fragmentation.&lt;br /&gt;
* ''Difficulty:'' Medium / Hard&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Path_MTU_Discovery Wikipedia: Path MTU Discovery]&lt;br /&gt;
** [https://www.nsnam.org/bugzilla/show_bug.cgi?id=2064 UdpSocket::GetMtu() needed]&lt;br /&gt;
** [https://www.nsnam.org/bugzilla/show_bug.cgi?id=1751 TCP should react to MTU changes]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc1191 RFC 1191]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc4821 RFC 4821]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc1122#page-85 RFC 1122]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc6691 RFC 6991]&lt;br /&gt;
** [https://tools.ietf.org/html/rfc2923 RFC 2923]&lt;br /&gt;
** [https://blog.apnic.net/2014/12/15/ip-mtu-and-tcp-mss-missmatch-an-evil-for-network-performance/ APNIC blog - IP MTU and TCP MSS Missmatch – an evil for network performance]&lt;br /&gt;
** [https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3650/software/release/16-9/configuration_guide/ip/b_169_ip_3650_cg/configuring_tcp_mss_adjustment.pdf Cisco - Configuring TCP MSS Adjustment]&lt;br /&gt;
&lt;br /&gt;
==== Enable IPv6 support for Ad hoc Routing Protocols in ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], and others TBD&lt;br /&gt;
&lt;br /&gt;
ns-3 contains models for proactive (DSDV and OLSR) and reactive (AODV and DSR) ad hoc routing protocols. However, these models are IPv4-only and do not provide support of IPv6 addressing. This project aims to enable IPv6 support for ad hoc routing protocols in ns-3, mainly for AODV. There are out-of-tree implementations of OLSR and DSDV that provide support for IPv6 addressing, and can be used as references to get started with this project.&lt;br /&gt;
&lt;br /&gt;
The most important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
&lt;br /&gt;
Note:  Enabling IPv6 support for these protocols is not a matter of simply changing out an IPv4-formatted address for an IPv6-formatted address.  The IPv6 addressing architecture emphasizes scoping much more than does IPv4 (RFC 4007).  Please suggest in your application how IPv6 address configuration (and possibly auto-configuration?) and address scopes (e.g. link-local vs. global) should be used in these protocols. Consulting the RFCs is highly recommended.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with AODV implementations in ns-3&lt;br /&gt;
* ''Interests:'' Ad hoc routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/aodv.html AODV model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/workshops/wns3-2016/posters/IPv6-support-for-OLSR.pdf IPv6 Support for OLSR in ns-3]&lt;br /&gt;
&lt;br /&gt;
Possible tasks to fulfill the patch requirement:&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/nsnam/ns-3-dev/-/issues/271 Issue #271] - olsr header and messages are not printing either their size or their content.&lt;br /&gt;
&lt;br /&gt;
==== IPv6 global routing ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], others TBD&lt;br /&gt;
&lt;br /&gt;
Creating a complex topology can be a problem, and sometimes the user do not want to be (also) concerned about setting up dynamic routing protocols (e.g., RIP, RIPng).&lt;br /&gt;
For IPv4, ns-3 provides two alternatives: GlobalRouting, and NixRouting, which just &amp;quot;do the trick&amp;quot; - they simply fill the routing tables in intermediate nodes, GlobalRouting using an approach similar to OSPF, NixRouting by leveraging the &amp;quot;abstract&amp;quot; knowledge of the network.&lt;br /&gt;
Neither actually use any message between the nodes, so they also reduce the network overhead - something that is useful in many cases.&lt;br /&gt;
&lt;br /&gt;
The problem is that they don't work for IPv6, and that's a huge limitation. The goal of the project is to fix that limitation. Note that the project must cope with different IPv6 address kinds (link-local, global, scoped multicast, etc.). Due to the limitation with GlobalRouting w.r.t. wireless channels, it would be advisable to start working with NixRouting.&lt;br /&gt;
&lt;br /&gt;
The most important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with NixRouting and GlobalRouting implementations in ns-3&lt;br /&gt;
* ''Interests:'' IPv6 routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/nix-vector-routing.html NixRouting model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/routing-overview.html#global-centralized-routing GlobalRouting model in ns-3]&lt;br /&gt;
&lt;br /&gt;
Possible tasks to fulfill the patch requirement:&lt;br /&gt;
* Add a function to print the path that a packet will use (according to Ipv4NixVectorRouting), i.e., given source and destination IP print the IP addresses of the nodes that Ipv4NixVectorRouting will use.&lt;br /&gt;
* Add a function to print the path that a packet will use (according to Ipv4GlobalRouting), i.e., given source and destination IP print the IP addresses of the nodes that Ipv4GlobalRouting will use.&lt;br /&gt;
&lt;br /&gt;
==== Integration of MIPv6 module into ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:manoj24.rana@gmail.com Manoj Kumar Rana]&lt;br /&gt;
&lt;br /&gt;
The MIPv6 module had already been implemented in ns-3 (The links of their implementations are given below). But, these modules are still lacking in ns-3 main tree. One of the medium access control (MAC) layer issue was NetDevice up/down consistency which has been resolved through the GSoC 2020 project titled, “NetDevice up/down consistency and event chain”. The MIPv6 integration still requires understanding the behaviour of IPv6 and ICMPv6 protocols running in LTE module (mainly between PGW/SGW and eNB). Although IPv6 packets are now transferred over LTE network, the sole purpose of MIPv6 handoff i.e. switching mobile node between LTE and WiFi can only be accomplished by modifying the existing MIPv6 module and extending the existing LTE module.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++, LTE IPv6 support.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with MIPv6/PMIPv6 module implementations in ns-3&lt;br /&gt;
* ''Interests:'' IPv6&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/wiki/GSOC2017MobileIp MIPv6 model in ns-3]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12181</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12181"/>
		<updated>2021-02-19T10:07:11Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Project Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.  Students interested in participating in ns-3's GSoC program are free to get started on an idea or two, with the understanding that ns-3 has not yet been selected for GSoC and may not ultimately be selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2020StudentApplicationTemplate |2020 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines (to be posted at a later date). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
&lt;br /&gt;
==== LoRaWAN ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Python programming.&lt;br /&gt;
* ''Interests'': Internet of Things communication protocols.&lt;br /&gt;
* ''Difficulty'': Medium to Hard.&lt;br /&gt;
* ''For more info'': https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
==== SEM - Examples and documentation ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
The SEM Python library was designed to help ns-3 users run complex simulation campaigns. Among other things, SEM strives to make it as easy as possible to parse the output of simulations and to obtain plots that show the impact of simulation parameters on the network's performance.&lt;br /&gt;
&lt;br /&gt;
One of the objectives for the next big SEM release is to provide users with more examples that are both easy to modify and that showcase the full potential of the library and of the Python data analysis ecosystem. In this project, your objective will be to show how SEM can be used from within Jupyter Notebooks to gradually explore the behavior of a network. Aside from the creation of new examples, you will also have the opportunity to try your hand at the all-important task of writing documentation. If there's time and you feel like tackling the issue, in a second part of the project you will also explore how SEM can be used to visualize the behavior of single simulations that leverage ns-3's built-in logging.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with Python and C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Jupyter Notebooks.&lt;br /&gt;
* ''Difficulty'': Medium.&lt;br /&gt;
* ''For more info'': http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12180</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12180"/>
		<updated>2021-02-19T09:49:26Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Project Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.  Students interested in participating in ns-3's GSoC program are free to get started on an idea or two, with the understanding that ns-3 has not yet been selected for GSoC and may not ultimately be selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2020StudentApplicationTemplate |2020 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines (to be posted at a later date). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
&lt;br /&gt;
==== LoRaWAN ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Python programming.&lt;br /&gt;
* ''Interests'': Internet of Things communication protocols.&lt;br /&gt;
* ''Difficulty'': Medium to Hard.&lt;br /&gt;
* ''For more info'': https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
==== SEM - Examples and documentation ====&lt;br /&gt;
&lt;br /&gt;
The SEM Python library was designed to help ns-3 users run complex simulation campaigns. Among other things, SEM strives to make it as easy as possible to parse the output of simulations and to obtain plots that show the impact of simulation parameters on the network's performance.&lt;br /&gt;
&lt;br /&gt;
One of the objectives for the next big SEM release is to provide users with more examples that are both easy to modify and that showcase the full potential of the library and of the Python data analysis ecosystem. In this project, your objective will be to show how SEM can be used from within Jupyter Notebooks to gradually explore the behavior of a network. Aside from the creation of new examples, you will also have the opportunity to try your hand at the all-important task of writing documentation. If there's time and you feel like tackling the issue, in a second part of the project you will also explore how SEM can be used to visualize the behavior of single simulations that leverage ns-3's built-in logging.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with Python and C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Jupyter Notebooks.&lt;br /&gt;
* ''Difficulty'': Medium.&lt;br /&gt;
* ''For more info'': http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12179</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12179"/>
		<updated>2021-02-19T09:27:05Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* LoRaWAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.  Students interested in participating in ns-3's GSoC program are free to get started on an idea or two, with the understanding that ns-3 has not yet been selected for GSoC and may not ultimately be selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2020StudentApplicationTemplate |2020 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines (to be posted at a later date). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
&lt;br /&gt;
==== LoRaWAN ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience'': Familiarity with C++ programming.&lt;br /&gt;
* ''Bonus Experience'': Familiarity with Python programming.&lt;br /&gt;
* ''Interests'': Internet of Things communication protocols.&lt;br /&gt;
* ''Difficulty'': Medium to Hard.&lt;br /&gt;
* ''For more info'': https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12178</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12178"/>
		<updated>2021-02-19T09:26:03Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Project Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.  Students interested in participating in ns-3's GSoC program are free to get started on an idea or two, with the understanding that ns-3 has not yet been selected for GSoC and may not ultimately be selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2020StudentApplicationTemplate |2020 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines (to be posted at a later date). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
&lt;br /&gt;
==== LoRaWAN ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
Required Experience: Familiarity with C++ programming.&lt;br /&gt;
Bonus Experience: Familiarity with Python programming.&lt;br /&gt;
Interests: Internet of Things communication protocols.&lt;br /&gt;
Difficulty: Medium to Hard.&lt;br /&gt;
For more info: https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12177</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12177"/>
		<updated>2021-02-19T09:25:38Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.  Students interested in participating in ns-3's GSoC program are free to get started on an idea or two, with the understanding that ns-3 has not yet been selected for GSoC and may not ultimately be selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2020StudentApplicationTemplate |2020 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines (to be posted at a later date). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12176</id>
		<title>GSOC2021Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2021Projects&amp;diff=12176"/>
		<updated>2021-02-19T09:25:08Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Project Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2021 Google Summer of Code project ideas for ns-3.  Students interested in participating in ns-3's GSoC program are free to get started on an idea or two, with the understanding that ns-3 has not yet been selected for GSoC and may not ultimately be selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2021StudentGuide |ns-3's 2021 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2020StudentApplicationTemplate |2020 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-20.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit Tahiliani] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge. In 2021, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2021 is below:&lt;br /&gt;
&lt;br /&gt;
* Tom Henderson&lt;br /&gt;
* Tommaso Pecorella&lt;br /&gt;
* Mohit P. Tahiliani&lt;br /&gt;
* Sebastien Deronne&lt;br /&gt;
* Hany Assasa&lt;br /&gt;
* Davide Magrin&lt;br /&gt;
* Vivek Jain&lt;br /&gt;
* Viyom Mittal&lt;br /&gt;
* Mishal Shah&lt;br /&gt;
&lt;br /&gt;
=== Changes from last year ===&lt;br /&gt;
&lt;br /&gt;
Google has changed the program, reducing it to half the paid time from previous summers.  Therefore, we will be seeking to define projects with much reduced scope than in years past.  In general, we seek projects that aim to improve the existing simulator rather than add new features.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, please go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2021StudentGuide |ns-3's GSoC Student guide]]&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-32/documentation ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Once it is posted, look through the [[GSOC2021StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.  We will wait to see whether we are actually part of GSoC before posting this.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list or chat room and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the patch requirement guidelines (to be posted at a later date). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2021.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority 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;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&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.  A few projects are more Python-centric.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Linux-like Loss Detection Techniques for ns-3 TCP ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:jain.vivek.anand@gmail.com Vivek Jain], [mailto:viyommittal@gmail.com Viyom Mittal], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Forward Acknowledgement (FACK), Duplicate Selective Acknowledgement (DSACK), Tail Loss Probe (TLP) and Recent Acknowledgement (RACK) are the loss detection techniques implemented in the Linux kernel. These techniques have been already implemented for ns-3 TCP but their code is not yet merged into the mainline. This project has four main goals: (1) update the implementation of these techniques according to the latest ns-3-dev, (2) develop a framework to test the functionality of these techniques, (3) develop example program(s) to demonstrate the usage of these techniques in ns-3 and (4) merge these techniques in the mainline of ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with TCP implementation in Linux kernel.&lt;br /&gt;
* ''Interests:'' TCP packet loss detection techniques.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard.&lt;br /&gt;
* ''Recommended Reading:''&lt;br /&gt;
** Forward Acknowledgement (FACK) [[https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.2559&amp;amp;rep=rep1&amp;amp;type=pdf Paper]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Duplicate Selective Acknowledgment (DSACK) [[https://tools.ietf.org/html/rfc2883 RFC 2883]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
** Tail Loss Probe (TLP) [[https://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01 Internet Draft]] [[https://gitlab.com/ShikhaBakshi/ns-3-dev/-/commits/TLP Implementation]]&lt;br /&gt;
** Recent Acknowledgment (RACK) [[https://tools.ietf.org/html/draft-ietf-tcpm-rack-15 Internet Draft]] [[https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/34/commits Implementation]]&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 5 series) and latest glibc library versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/about/projects/direct-code-execution/, https://github.com/direct-code-execution/ns-3-dce&lt;br /&gt;
&lt;br /&gt;
== LoRaWAN ==&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:davide@magr.in Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
LoRaWAN is a communication technology for the Internet of Things, that allows battery-powered devices to wirelessly transmit data over long distances. Thanks to the lorawan module for ns-3, users can simulate networks where thousands of such devices communicate with a central server through multiple gateways. Packets might collide and be lost, devices might need to re-transmit them, and the central server can tell devices to change their transmission parameters according to suitable, exotic algorithms - we model it all.&lt;br /&gt;
&lt;br /&gt;
This module rapidly grew in the last period, with the addition of various features and functionalities that are not completely tested nor documented, yet. In this project, you will mostly work to (1) integrate these features into the mainline code, and (2) improve the LoRaWAN module's testing and documentation.&lt;br /&gt;
&lt;br /&gt;
Additionally, according to time availability and your interest, you can also help showcasing the potentialities of the lorawan module through the SEM library. Indeed, SEM can be used together with the lorawan module to provide users with meaningful examples, with the dual objective of giving a better understanding of what is going on within a single simulation, as well as how a simulation campaign can be easily conducted.&lt;br /&gt;
&lt;br /&gt;
Required Experience: Familiarity with C++ programming.&lt;br /&gt;
Bonus Experience: Familiarity with Python programming.&lt;br /&gt;
Interests: Internet of Things communication protocols.&lt;br /&gt;
Difficulty: Medium to Hard.&lt;br /&gt;
For more info: https://github.com/signetlabdei/lorawan, http://github.com/signetlabdei/sem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11268</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11268"/>
		<updated>2018-08-03T08:55:58Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add Week 12 updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 22) ==&lt;br /&gt;
&lt;br /&gt;
Week 6 was mainly focused on adding support for running ns-3 simulations on cluster architectures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added the GridRunner class, which allows users to run simulations on any DRMAA compatible cluster architecture;&lt;br /&gt;
* Output files produced by simulations can now be easily accessed through dedicated functions.&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 26 - June 29) ==&lt;br /&gt;
&lt;br /&gt;
Week 7 was mainly dedicated to fixing various bugs and to improving the usability of the library.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Simulation campaigns can not be loaded without the need to specify a working ns-3 installation;&lt;br /&gt;
* Added an example showcasing parsing of output files.&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 2 - July 6) ==&lt;br /&gt;
&lt;br /&gt;
Week 8 was focused on test coverage and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Refactor result dictionary structure;&lt;br /&gt;
* Add missing docstrings;&lt;br /&gt;
* Add codecov integration to repository;&lt;br /&gt;
* Default to ParallelRunner for local simulations.&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 9 - July 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 9 was mostly occupied by a personal commitment. The remaining time was used to increase test coverage and to lower compatibility to Python 3.4.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added test cases;&lt;br /&gt;
* Better handling of case in which no git repo is found;&lt;br /&gt;
* Lower compatibility from Python 3.6+ to Python 3.4+.&lt;br /&gt;
&lt;br /&gt;
== Week 10 (July 16 - July 20) ==&lt;br /&gt;
&lt;br /&gt;
Week 10 was dedicated to the development of a command line interface for SEM. This allows users to run simulations, view results and export them to the .mat and .npy formats without writing a single line of Python code.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Add Command Line Interface;&lt;br /&gt;
* Add ability to export to MATLAB and Numpy data files.&lt;br /&gt;
&lt;br /&gt;
== Week 11 (July 23 - July 27) ==&lt;br /&gt;
&lt;br /&gt;
Week 11 was dedicated to the development of the last features contained in the original proposal, and to the expansion of documentation and testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Updated documentation;&lt;br /&gt;
* The addition of a new CLI parameter to read parameters from a file;&lt;br /&gt;
* Increased testing coverage;&lt;br /&gt;
* Parsing and allowing usage of Global variables, besides standard command line arguments;&lt;br /&gt;
* Support for scratch directory scripts (through Pull Request #15);&lt;br /&gt;
* New methods to export results to a folder structure.&lt;br /&gt;
&lt;br /&gt;
== Week 12 (July 30 - August 3) ==&lt;br /&gt;
&lt;br /&gt;
Since all proposed features were implemented, Week 12 was dedicated to writing documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Update installation instructions&lt;br /&gt;
* Add contribution guidelines&lt;br /&gt;
* Add testing framework description&lt;br /&gt;
* Add walkthrough of provided examples&lt;br /&gt;
* Add description of advanced features and workflows&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11266</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11266"/>
		<updated>2018-07-30T07:49:57Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add Week 11 summary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 22) ==&lt;br /&gt;
&lt;br /&gt;
Week 6 was mainly focused on adding support for running ns-3 simulations on cluster architectures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added the GridRunner class, which allows users to run simulations on any DRMAA compatible cluster architecture;&lt;br /&gt;
* Output files produced by simulations can now be easily accessed through dedicated functions.&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 26 - June 29) ==&lt;br /&gt;
&lt;br /&gt;
Week 7 was mainly dedicated to fixing various bugs and to improving the usability of the library.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Simulation campaigns can not be loaded without the need to specify a working ns-3 installation;&lt;br /&gt;
* Added an example showcasing parsing of output files.&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 2 - July 6) ==&lt;br /&gt;
&lt;br /&gt;
Week 8 was focused on test coverage and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Refactor result dictionary structure;&lt;br /&gt;
* Add missing docstrings;&lt;br /&gt;
* Add codecov integration to repository;&lt;br /&gt;
* Default to ParallelRunner for local simulations.&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 9 - July 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 9 was mostly occupied by a personal commitment. The remaining time was used to increase test coverage and to lower compatibility to Python 3.4.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added test cases;&lt;br /&gt;
* Better handling of case in which no git repo is found;&lt;br /&gt;
* Lower compatibility from Python 3.6+ to Python 3.4+.&lt;br /&gt;
&lt;br /&gt;
== Week 10 (July 16 - July 20) ==&lt;br /&gt;
&lt;br /&gt;
Week 10 was dedicated to the development of a command line interface for SEM. This allows users to run simulations, view results and export them to the .mat and .npy formats without writing a single line of Python code.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Add Command Line Interface;&lt;br /&gt;
* Add ability to export to MATLAB and Numpy data files.&lt;br /&gt;
&lt;br /&gt;
== Week 11 (July 23 - July 27) ==&lt;br /&gt;
&lt;br /&gt;
Week 11 was dedicated to the development of the last features contained in the original proposal, and to the expansion of documentation and testing.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Updated documentation;&lt;br /&gt;
* The addition of a new CLI parameter to read parameters from a file;&lt;br /&gt;
* Increased testing coverage;&lt;br /&gt;
* Parsing and allowing usage of Global variables, besides standard command line arguments;&lt;br /&gt;
* Support for scratch directory scripts (through Pull Request #15);&lt;br /&gt;
* New methods to export results to a folder structure.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11257</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11257"/>
		<updated>2018-07-24T07:20:36Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Week 9 (July 9 - July 15) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 22) ==&lt;br /&gt;
&lt;br /&gt;
Week 6 was mainly focused on adding support for running ns-3 simulations on cluster architectures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added the GridRunner class, which allows users to run simulations on any DRMAA compatible cluster architecture;&lt;br /&gt;
* Output files produced by simulations can now be easily accessed through dedicated functions.&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 26 - June 29) ==&lt;br /&gt;
&lt;br /&gt;
Week 7 was mainly dedicated to fixing various bugs and to improving the usability of the library.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Simulation campaigns can not be loaded without the need to specify a working ns-3 installation;&lt;br /&gt;
* Added an example showcasing parsing of output files.&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 2 - July 6) ==&lt;br /&gt;
&lt;br /&gt;
Week 8 was focused on test coverage and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Refactor result dictionary structure;&lt;br /&gt;
* Add missing docstrings;&lt;br /&gt;
* Add codecov integration to repository;&lt;br /&gt;
* Default to ParallelRunner for local simulations.&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 9 - July 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 9 was mostly occupied by a personal commitment. The remaining time was used to increase test coverage and to lower compatibility to Python 3.4.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added test cases;&lt;br /&gt;
* Better handling of case in which no git repo is found;&lt;br /&gt;
* Lower compatibility from Python 3.6+ to Python 3.4+.&lt;br /&gt;
&lt;br /&gt;
== Week 10 (July 16 - July 20) ==&lt;br /&gt;
&lt;br /&gt;
Week 10 was dedicated to the development of a command line interface for SEM. This allows users to run simulations, view results and export them to the .mat and .npy formats without writing a single line of Python code.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Add Command Line Interface;&lt;br /&gt;
* Add ability to export to MATLAB and Numpy data files.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11256</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11256"/>
		<updated>2018-07-24T07:20:06Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add summaries for Week 9 and Week 10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 22) ==&lt;br /&gt;
&lt;br /&gt;
Week 6 was mainly focused on adding support for running ns-3 simulations on cluster architectures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added the GridRunner class, which allows users to run simulations on any DRMAA compatible cluster architecture;&lt;br /&gt;
* Output files produced by simulations can now be easily accessed through dedicated functions.&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 26 - June 29) ==&lt;br /&gt;
&lt;br /&gt;
Week 7 was mainly dedicated to fixing various bugs and to improving the usability of the library.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Simulation campaigns can not be loaded without the need to specify a working ns-3 installation;&lt;br /&gt;
* Added an example showcasing parsing of output files.&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 2 - July 6) ==&lt;br /&gt;
&lt;br /&gt;
Week 8 was focused on test coverage and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Refactor result dictionary structure;&lt;br /&gt;
* Add missing docstrings;&lt;br /&gt;
* Add codecov integration to repository;&lt;br /&gt;
* Default to ParallelRunner for local simulations.&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 9 - July 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 9 was mostly occupied by a personal commitment. The remaining time was used to increase test coverage and to lower compatibility to Python 3.4.&lt;br /&gt;
&lt;br /&gt;
''Summary''':&lt;br /&gt;
* Added test cases;&lt;br /&gt;
* Better handling of case in which no git repo is found;&lt;br /&gt;
* Lower compatibility from Python 3.6+ to Python 3.4+.&lt;br /&gt;
&lt;br /&gt;
== Week 10 (July 16 - July 20) ==&lt;br /&gt;
&lt;br /&gt;
Week 10 was dedicated to the development of a command line interface for SEM. This allows users to run simulations, view results and export them to the .mat and .npy formats without writing a single line of Python code.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Add Command Line Interface;&lt;br /&gt;
* Add ability to export to MATLAB and Numpy data files.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11194</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11194"/>
		<updated>2018-07-09T06:53:50Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add Week 8 summary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 22) ==&lt;br /&gt;
&lt;br /&gt;
Week 6 was mainly focused on adding support for running ns-3 simulations on cluster architectures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added the GridRunner class, which allows users to run simulations on any DRMAA compatible cluster architecture;&lt;br /&gt;
* Output files produced by simulations can now be easily accessed through dedicated functions.&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 26 - June 29) ==&lt;br /&gt;
&lt;br /&gt;
Week 7 was mainly dedicated to fixing various bugs and to improving the usability of the library.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Simulation campaigns can not be loaded without the need to specify a working ns-3 installation;&lt;br /&gt;
* Added an example showcasing parsing of output files.&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 2 - July 6) ==&lt;br /&gt;
&lt;br /&gt;
Week 8 was focused on test coverage and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Refactor result dictionary structure;&lt;br /&gt;
* Add missing docstrings;&lt;br /&gt;
* Add codecov integration to repository;&lt;br /&gt;
* Default to ParallelRunner for local simulations;&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11188</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11188"/>
		<updated>2018-07-02T06:17:59Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 22) ==&lt;br /&gt;
&lt;br /&gt;
Week 6 was mainly focused on adding support for running ns-3 simulations on cluster architectures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added the GridRunner class, which allows users to run simulations on any DRMAA compatible cluster architecture;&lt;br /&gt;
* Output files produced by simulations can now be easily accessed through dedicated functions.&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 26 - June 29) ==&lt;br /&gt;
&lt;br /&gt;
Week 7 was mainly dedicated to fixing various bugs and to improving the usability of the library.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Various bug fixes;&lt;br /&gt;
* Simulation campaigns can not be loaded without the need to specify a working ns-3 installation;&lt;br /&gt;
* Added an example showcasing parsing of output files.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11183</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11183"/>
		<updated>2018-06-26T15:30:20Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 22) ==&lt;br /&gt;
&lt;br /&gt;
Week 6 was mainly focused on adding support for running ns-3 simulations on cluster architectures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Added the GridRunner class, which allows users to run simulations on any DRMAA compatible cluster architecture;&lt;br /&gt;
* Output files produced by simulations can now be easily accessed through dedicated functions.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11121</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11121"/>
		<updated>2018-06-18T06:38:50Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 4 - June 8) ==&lt;br /&gt;
&lt;br /&gt;
Week 4 was dedicated to writing code to allow users to export simulation results.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Check whether the ns-3 repository is at the right commit before running simulations;&lt;br /&gt;
* Added numpy and xarray exports&lt;br /&gt;
* Progress bars were added to indicate the advancement in compilation and simulation running.&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 15) ==&lt;br /&gt;
&lt;br /&gt;
Week 5 was dedicated to writing tests and documentation.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Set up pytest/ns-3 test facilities;&lt;br /&gt;
* Wrote tests for database, campaign manager and runner;&lt;br /&gt;
* Re-wrote the getting started section of the documentation to show how it's possible to go from a vanilla ns-3 installation to plotting results;&lt;br /&gt;
* Added example plots to the wifi-plotting-xarray.py example.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11099</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11099"/>
		<updated>2018-06-01T06:26:36Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Week 3 (May 28 - June 1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution;&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database;&lt;br /&gt;
* Added code to perform sequential simulations;&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;&lt;br /&gt;
* Extended the documentation;&lt;br /&gt;
* Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11098</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11098"/>
		<updated>2018-06-01T06:24:47Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Week 3 (May 28 - June 1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library.&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database&lt;br /&gt;
* Added code to perform sequential simulations&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel&lt;br /&gt;
* Extended the documentation&lt;br /&gt;
* Added a run_missing_simulations function that takes a list of desired parameter combinations and the number of repetitions for each one, queries the database to assess what is already available, and only performs the necessary simulations to satisfy the request.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11097</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11097"/>
		<updated>2018-06-01T06:22:01Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 1) ==&lt;br /&gt;
&lt;br /&gt;
Week 3 saw the implementation of simulation running facilities in SEM.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library.&lt;br /&gt;
* Created an ns-3 git submodule to facilitate example execution&lt;br /&gt;
* Stdout and files created by ns-3 scripts are now saved in the database&lt;br /&gt;
* Added code to perform sequential simulations&lt;br /&gt;
* Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel&lt;br /&gt;
* Extended the documentation&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11076</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11076"/>
		<updated>2018-05-28T08:10:07Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Week 2 (May 21 - May 25) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
Week 2 was dedicated to a first implementation of the database management structures.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs];&lt;br /&gt;
* Implemented database creation, management and insertion/querying of results.&lt;br /&gt;
* Code available at the project repository, under tag gsoc-week2&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11069</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11069"/>
		<updated>2018-05-23T05:42:52Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Week 2 (May 21 - May 25) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own [https://github.com/DvdMgr/sem github repository], outside ns-3-dev;&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs].&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11068</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11068"/>
		<updated>2018-05-23T05:42:23Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/sem Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''Documentation:''' [https://simulationexecutionmanager.readthedocs.io ReadTheDocs]&lt;br /&gt;
 &lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 25) ==&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Moved project to its own github repository, outside ns-3-dev&lt;br /&gt;
* Created documentation page, available at [https://simulationexecutionmanager.readthedocs.io readthedocs].&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11064</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11064"/>
		<updated>2018-05-19T03:33:57Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: /* Project overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/ns-3-dev-gsoc Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11063</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11063"/>
		<updated>2018-05-19T03:33:18Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add Week 1 summary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/ns-3-execution-manager Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design. &lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 19) ==&lt;br /&gt;
&lt;br /&gt;
Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1.&lt;br /&gt;
For now, code is maintained in src/stats/utils.&lt;br /&gt;
&lt;br /&gt;
'''Summary''':&lt;br /&gt;
* Created a basic Python project using pipenv;&lt;br /&gt;
* Defined an initial set of classes and functions to outline code structure (code available in the [https://github.com/DvdMgr/ns-3-dev-gsoc/tree/feature/api-specs/src/stats/utils/sem sem] folder);&lt;br /&gt;
* A detailed report can be found in the [https://github.com/DvdMgr/ns-3-dev-gsoc/blob/feature/api-specs/src/stats/utils/dev.org dev.txt] file in the project repository.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11011</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11011"/>
		<updated>2018-05-09T08:16:52Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add link to proposal PDF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Proposal:''' [https://github.com/DvdMgr/ns-3-execution-manager/raw/master/docs/GSoC%20proposal.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/ns-3-execution-manager Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design. &lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11004</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11004"/>
		<updated>2018-05-07T13:26:17Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add project overview&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Summer_Projects#Google_Summer_of_Code_2018 | GSoC 2018 Accepted Projects]] page.&lt;br /&gt;
&lt;br /&gt;
= Project overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' A Simulation Execution Manager for ns-3&lt;br /&gt;
&lt;br /&gt;
* '''Student:''' [mailto:magrinda@dei.unipd.it Davide Magrin]&lt;br /&gt;
&lt;br /&gt;
* '''Mentor:''' [mailto:dizhi.zhou@gmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
* '''Abstract:''' This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;br /&gt;
&lt;br /&gt;
* '''Code:''' [https://github.com/DvdMgr/ns-3-execution-manager Github repository]&lt;br /&gt;
&lt;br /&gt;
* '''About me:''' I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design. &lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Summer_Projects&amp;diff=11003</id>
		<title>Summer Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Summer_Projects&amp;diff=11003"/>
		<updated>2018-05-07T13:06:45Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Add link to Davide Magrin's project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
The project coordinates a few summer coding programs in which student developers are paired with mentors to produce code over the summer.&lt;br /&gt;
&lt;br /&gt;
= Google Summer of Code 2018 =&lt;br /&gt;
&lt;br /&gt;
ns-3 is taking part in the 2018 edition of Google Summer of Code.  &lt;br /&gt;
&lt;br /&gt;
* WenYing Dai, [[GSOC2018AccECN_ECN++ | Implementation of AccECN and ECN++ in ns-3]]&lt;br /&gt;
* Muhammad Iqbal CR, [[GSOC2018Coexistence | Merging and Improvement of LTE and Wi-Fi Coexistence Module]]&lt;br /&gt;
* Sourabh Jain, Direct Code Execution upgrade&lt;br /&gt;
* Davide Magrin, [[GSoC2018:_A_Simulation_Execution_Manager_for_ns-3 | A simulation execution manager for ns-3]]&lt;br /&gt;
* Jude Niroshan, Trust-based routing protocols framework&lt;br /&gt;
&lt;br /&gt;
* [[GSOC2018Projects | Project Ideas Page]]&lt;br /&gt;
* [[GSOC2018StudentGuide | Student Application Guide]]&lt;br /&gt;
&lt;br /&gt;
= European Space Agency Summer of Code in Space (SOCIS) 2017 =&lt;br /&gt;
&lt;br /&gt;
ns-3 has been accepted to the 2017 ESA Summer of Code in Space, with student Pasquale Imputato (mentored by Tommaso Pecorella).  The project successfully completed in October 2017 (details in the below wiki project page).&lt;br /&gt;
&lt;br /&gt;
* [[SOCIS2017 | project page]]&lt;br /&gt;
* [https://codereview.appspot.com/330220043/ Final code review]&lt;br /&gt;
&lt;br /&gt;
The original project ideas page is posted below.&lt;br /&gt;
&lt;br /&gt;
* [[SOCIS2017Projects#Project_Ideas | Project Ideas page]]&lt;br /&gt;
&lt;br /&gt;
= Google Summer of Code 2017 =&lt;br /&gt;
&lt;br /&gt;
ns-3 was fortunate to mentor five outstanding students for the 2017 edition of [https://developers.google.com/open-source/gsoc/ Google Summer of Code].&lt;br /&gt;
&lt;br /&gt;
* [[GSOC2017AcceptedProjects | Accepted Projects]]&lt;br /&gt;
== Final reports ==&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-August/014078.html ns-3 App Store] by Abhijith Anilkumar&lt;br /&gt;
* [https://www.nsnam.org/wiki/GSOC2017Lte#Project_summary Enabling LTE CA handover to secondary cell] by Alexander Krotov&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-September/014091.html TCP Prague] by Shravya Ks&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-September/014080.html LTE and IPv6 support] by Manoj Kumar Rana&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-September/014083.html TBF and HHF] by Surya Seetharaman&lt;br /&gt;
== Phase 2 reports ==&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-July/014038.html BCube and FatTree topology helpers (component of TCP Prague project)]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-August/014054.html Implementation of TBF and HHF]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-July/014047.html Enabling LTE CA handover to secondary cell, Phase 2]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-July/014042.html ns-3 App Store]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-July/014049.html Mobile IPv6 implementation with LTE support (report)]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-August/014058.html Mobile IPv6 implementation with LTE support (review request)]&lt;br /&gt;
== Phase 1 reports ==&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-June/013980.html Data Center TCP (component of TCP Prague project)]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-June/013982.html Implementation of TBF and HHF traffic control]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-June/013983.html Enabling LTE CA handover to secondary cell, Phase 1]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-June/013985.html ns-3 App Store]&lt;br /&gt;
* [http://mailman.isi.edu/pipermail/ns-developers/2017-June/013987.html Mobile IPv6 implementation with LTE support]&lt;br /&gt;
== Background ==&lt;br /&gt;
Below is some information that was used during the application phase.&lt;br /&gt;
&lt;br /&gt;
* [[GSOC2017Projects | Project Ideas Page]]&lt;br /&gt;
* [[GSOC2017StudentGuide | Student Application Guide]]&lt;br /&gt;
&lt;br /&gt;
= European Space Agency Summer of Code in Space (SOCIS) 2016 =&lt;br /&gt;
&lt;br /&gt;
ns-3 had one student (Michael Di Perna) successfully complete the 2016 [http://sophia.estec.esa.int/socis/ ESA Summer of Code in Space].  &lt;br /&gt;
&lt;br /&gt;
* [[SOCIS2016 | Project page]] for Optical Satellite Systems project&lt;br /&gt;
* [[SOCIS2016Projects#Project_Ideas | Project Ideas page]]&lt;br /&gt;
&lt;br /&gt;
= Mentored summer projects 2016 =&lt;br /&gt;
&lt;br /&gt;
ns-3 maintainers will mentor additional summer projects (that students will work on using their own sources of funding) on a best-effort basis.  Students interested in this option should review the GSoC or SOCIS ideas page, or propose their own.&lt;br /&gt;
&lt;br /&gt;
* See [[MentoredProjects2016]]&lt;br /&gt;
&lt;br /&gt;
= Google Summer of Code 2016 =&lt;br /&gt;
&lt;br /&gt;
ns-3 was not selected for the 2016 [https://developers.google.com/open-source/gsoc/ Google Summer of Code].  We mentored two summer projects outside of GSoC.  Below were our materials prepared for our GSoC organizational application.&lt;br /&gt;
* [[GSOC2016Projects | Project ideas page]]&lt;br /&gt;
* [[GSOCStudentGuide | Student guide]]&lt;br /&gt;
&lt;br /&gt;
= Google Summer of Code 2015 =&lt;br /&gt;
&lt;br /&gt;
ns-3 was selected to participate in the 2015 [http://www.google-melange.com/gsoc/homepage/google/gsoc2015 Google Summer of Code].  More information can be found on our Project Ideas page and our Student Guide.&lt;br /&gt;
&lt;br /&gt;
* [[GSOC2015AcceptedProjects | Accepted projects]]&lt;br /&gt;
* [[GSOC2015Projects | Project ideas page]]&lt;br /&gt;
* [[GSOC2015StudentGuide | Student guide]]&lt;br /&gt;
&lt;br /&gt;
This year's students were announced on April 27, and all four successfully completed the program:&lt;br /&gt;
&lt;br /&gt;
* Melchiorre Danilo Abrignani, [[GSOC2015LTECA | Carrier Aggregation support for the LTE module]]&lt;br /&gt;
* Matthieu Coudron, [[GSOC2015MpTcpImplementation | Implementing multipath TCP (MPTCP) in ns3]]&lt;br /&gt;
* Natale Patriciello, [[GSOC2015TCPTest | TCP layer refactoring with automated test on RFC compliance and validation]]&lt;br /&gt;
* Vishwesh Rege, [[GSOC2015LrWpanMac | 802.15.4 realistic MAC and Energy Model]]&lt;br /&gt;
&lt;br /&gt;
= European Space Agency Summer of Code in Space (SOCIS) 2015 =&lt;br /&gt;
&lt;br /&gt;
ns-3 has been accepted to the 2015 [http://sophia.estec.esa.int/socis2015/ ESA Summer of Code in Space].  The ns-3 project had one student in SOCIS in each of 2013, 2014 and 2015.  However, the satellite channel models project for 2015 [[SOCIS2015 | Satellite channel models]] did not successfully complete.&lt;br /&gt;
&lt;br /&gt;
* [[SOCIS2015Projects | Project ideas page]] (for reference)&lt;br /&gt;
&lt;br /&gt;
= Mentored summer projects =&lt;br /&gt;
&lt;br /&gt;
ns-3 maintainers will mentor additional summer projects (that students will work on using their own sources of funding) on a best-effort basis.  Students interested in this option should review the GSoC or SOCIS ideas page, or propose their own.&lt;br /&gt;
&lt;br /&gt;
We have one such mentored project in 2015:&lt;br /&gt;
&lt;br /&gt;
* Saswat Mishra, [[NeighborDiscoveryProject | Neighbor Discovery enhancements]]&lt;br /&gt;
&lt;br /&gt;
= Past summer projects =&lt;br /&gt;
&lt;br /&gt;
* [[GSOC2014AcceptedProjects | GSoC 2014 Accepted Projects]]&lt;br /&gt;
* [[SOCIS2014TCP | SOCIS 2014 Accepted Project]]&lt;br /&gt;
* [[MentoredProjects2014 | 2014 Mentored Projects]]&lt;br /&gt;
* [[SOCIS2013BundleProtocolProject | SOCIS 2013 Accepted Project]]&lt;br /&gt;
* [[GSOC2013AcceptedProjects | GSoC 2013 Accepted Projects]]&lt;br /&gt;
* [[GSOC2012AcceptedProjects |GSoC 2012 Accepted Projects]]&lt;br /&gt;
* [[NSOC2011AcceptedProjects |NSoC 2011 Accepted Projects]]&lt;br /&gt;
* [[GSOC2010AcceptedProjects |GSoC 2010 Accepted Projects]]&lt;br /&gt;
* [[GSOC2009AcceptedProjects |GSoC 2009 Accepted Projects]]&lt;br /&gt;
* [https://developers.google.com/open-source/soc/2008/?csw=1#ns3 GSoC 2008 Accepted Projects]&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11002</id>
		<title>GSoC2018: A Simulation Execution Manager for ns-3</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:_A_Simulation_Execution_Manager_for_ns-3&amp;diff=11002"/>
		<updated>2018-05-07T13:03:45Z</updated>

		<summary type="html">&lt;p&gt;DvdMgr: Create page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.&lt;/div&gt;</summary>
		<author><name>DvdMgr</name></author>
	</entry>
</feed>