Difference between revisions of "GSOC2017PatchRequirement"

From Nsnam
Jump to: navigation, search
(Created page with "Please check back in the future for the patch requirement.")
 
(Objective)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
Please check back in the future for the patch requirement.
+
As part of their Google Summer of Code 2017 applications to ns-3, we require that students produce a patch for ns-3. This will allow us to gauge your ability to dive into source code, understand it, make a modification, and proceed to build and verify if your modification works.
 +
 
 +
A patch in this regard can be at least one of the following:
 +
 
 +
* If you already have contributed a patch for ns-3 in the past, point us to the relevant commits in our code repository or the bug tracker issue, and your patch requirement is satisfied.
 +
* If not the above, either complete the minimum requirement test given below, or pick a bug in our [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=64089&order=bug_id%20DESC&query_format=specific Bugzilla] that does not already have a patch pending, and try to fix it.
 +
 
 +
== Minimum requirement patch ==
 +
 
 +
=== Setting up the environment ===
 +
 
 +
Perform the following steps (you may want to review our [[Installation]] page):
 +
 
 +
* Download the ns-3.26 release, or clone it from Mercurial:
 +
 
 +
  $: hg clone http://code.nsnam.org/ns-3.26
 +
 
 +
or
 +
 +
  $: wget http://www.nsnam.org/release/ns-allinone-3.26.tar.bz2
 +
 
 +
* Verify if you can build ns-3 and run the program to be patched
 +
 
 +
  $: ./waf configure --disable-python --enable-examples
 +
  $: ./waf build
 +
  $: ./waf --run tcp-bulk-send
 +
 
 +
=== Objective ===
 +
 
 +
The example program 'examples/tcp/tcp-bulk-send.cc' should be modified to output the evolution of the TCP congestion window, in the direction of the file transfer (node 0 to 1), in an [https://en.wikipedia.org/wiki/Unevenly_spaced_time_series unevenly spaced time-series format].  Currently, the example will print out:
 +
 
 +
  $: ./waf --run tcp-bulk-send
 +
  Total Bytes Received: 564248
 +
 
 +
Your patch to this program alone (i.e. do not change ns-3.26 TCP code in any way) should output something like this:
 +
 
 +
  $: ./waf --run tcp-bulk-send
 +
  0.011856s 536
 +
  0.033024s 1072
 +
  0.062768s 1608
 +
  0.092512s 2144
 +
  (...)
 +
  9.98802s 286760
 +
  Total Bytes Received: 564248
 +
 
 +
'''Hint 1:'''  Tracing of the TCP 'CongestionWindow' trace source can be used, either by obtaining a pointer to the socket being used by the BulkSendApplication, or by using a config path to connect to the trace source.  For tutorial on tracing, see:
 +
* [https://www.nsnam.org/tutorials/consortium14/ns-3-training-session-3.pdf Slides]
 +
* [https://vimeo.com/album/2966916/video/101650879 Video]
 +
 
 +
'''Hint 2:''' The ns-3 tutorial section on tracing is relevant to this problem.
 +
 
 +
=== What to submit ===
 +
 
 +
* A patch to tcp-bulk-send.cc that accomplishes the objectives. In your application, point us to a publicly available URL where you've hosted the patch (like a "gist" on github.com for instance).  See also some guidelines [http://www.nsnam.org/developers/contributing-code/submit/ here] about formatting patches for review.  If you need help with this step, contact the ns-3 Org Admin (Tom Henderson) for advice.
 +
 
 +
'''Note:''' Keep your solution private by pasting the link in your application to Google, not posting it on the mailing list.

Latest revision as of 14:08, 25 March 2017

As part of their Google Summer of Code 2017 applications to ns-3, we require that students produce a patch for ns-3. This will allow us to gauge your ability to dive into source code, understand it, make a modification, and proceed to build and verify if your modification works.

A patch in this regard can be at least one of the following:

  • If you already have contributed a patch for ns-3 in the past, point us to the relevant commits in our code repository or the bug tracker issue, and your patch requirement is satisfied.
  • If not the above, either complete the minimum requirement test given below, or pick a bug in our Bugzilla that does not already have a patch pending, and try to fix it.

Minimum requirement patch

Setting up the environment

Perform the following steps (you may want to review our Installation page):

  • Download the ns-3.26 release, or clone it from Mercurial:
 $: hg clone http://code.nsnam.org/ns-3.26

or

 $: wget http://www.nsnam.org/release/ns-allinone-3.26.tar.bz2
  • Verify if you can build ns-3 and run the program to be patched
 $: ./waf configure --disable-python --enable-examples
 $: ./waf build
 $: ./waf --run tcp-bulk-send

Objective

The example program 'examples/tcp/tcp-bulk-send.cc' should be modified to output the evolution of the TCP congestion window, in the direction of the file transfer (node 0 to 1), in an unevenly spaced time-series format. Currently, the example will print out:

 $: ./waf --run tcp-bulk-send
 Total Bytes Received: 564248

Your patch to this program alone (i.e. do not change ns-3.26 TCP code in any way) should output something like this:

 $: ./waf --run tcp-bulk-send
 0.011856s 536
 0.033024s 1072
 0.062768s 1608
 0.092512s 2144
 (...)
 9.98802s 286760
 Total Bytes Received: 564248

Hint 1: Tracing of the TCP 'CongestionWindow' trace source can be used, either by obtaining a pointer to the socket being used by the BulkSendApplication, or by using a config path to connect to the trace source. For tutorial on tracing, see:

Hint 2: The ns-3 tutorial section on tracing is relevant to this problem.

What to submit

  • A patch to tcp-bulk-send.cc that accomplishes the objectives. In your application, point us to a publicly available URL where you've hosted the patch (like a "gist" on github.com for instance). See also some guidelines here about formatting patches for review. If you need help with this step, contact the ns-3 Org Admin (Tom Henderson) for advice.

Note: Keep your solution private by pasting the link in your application to Google, not posting it on the mailing list.