From Nsnam
Revision as of 08:16, 9 June 2014 by Natale (Talk | contribs)

Jump to: navigation, search

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Return to Summer 2014 Projects page.

Project overview

  • Project name: TCP Versions for Satellite communications.
  • Abstract: With regards to transport protocols, and with satellite links in mind, at the moment ns-3 has only few TCP congestion control algorithms (Reno, Tahoe, and NewReno) and no one is targeted for satellite systems. It also doesn't support required extensions to improve performance over satellite's link, like TCP Window Scaling or SACK/SNACK, making it not really suitable to simulate (or emulate) modern satellite-based networks. Anyway, thanks to its modular architecture and flexibility of the entire framework, it is possible to add such extensions and write satellite-focused TCP congestion control algorithms. The goal of this project is to add to ns-3 TCP codebase the required extensions (RFC2488) and various satellite-focused TCP versions, in order to improve the simulator in this field.


A list of possible TCP protocols designed for links with high bandwidth-delay product (e.g. satellite ones) to implement on ns-3 are TCP HighSpeed, TCP Hybla, and TCP Noordwijk. As these versions require TCP extensions named in the RFC 2488 (Enhancing TCP Over Satellite Channels using Standard Mechanisms). The approach is to add first such; there is already a pending patch for these features (namely TCP Window Scaling and TCP timestamps, used in RTT Measurement and Protection Against Wrapped Sequences, mandatory over a satellite link) with a series of comments by the community. The goal is to take these set of patches and implement the suggestions of the community, in order to be able to subsequently code the previously mentioned TCP variants. Each one has some distinctive points: TCP HighSpeed for example change the congestion avoidance phase with respect to standard TCP. To remove limitations of the high RTT, TCP Hybla try to perform like a NewReno connection would with a low reference RTT (for example 25ms). The last, TCP Noordwijk, completely change the paradigm of TCP, from window-based to burst-based. The testing of the code will be driven by DCE, as they are currently present in the Linux kernel (the only TCP to be developed kernel-side is Noordwijk).

Development methodology

I will use an iterative-incremental development methodology, each iteration will include implementation, documentation (doxygen style comments, thorough the source code), and testing.

Testing approach

This project will have testing and cross-validation against existing implementations.

First, testing will we performed as part of the development cycle. It will use a test case based approach using the standard methods provided by the ns-3 API in the form of the TestSuite and TestCase classes.


As final deliverables, I'll present two set of patches which will cleanly apply over the last version of the ns-3 simulator: the first will regards the TCP extensions part, and the second the TCP congestion control algorithms for satellite communications.

  • Deliverable 1 - TCP Extensions
Deliverable 1.1 - General TCP extension support
Deliverable 1.2 - Timestamps
Deliverable 1.3 - Window scaling
Deliverable 1.4 - Test for the tcp options
  • Deliverable 2 - TCP versions
Deliverable 2.1 - TCP Hybla
Deliverable 2.2 - TCP HighSpeed
Deliverable 2.3 - TCP Noordwijk
Deliverable 2.4 - Unit Tests
  • Deliverable 3 - examples : this deliverable will contain several examples on how to install and use the various TCP protocols and options.


  • Week 1: Initial report over the status of the TCP extensions, and the possibile changes of original patches
  • Week 2: TCP extension implementations
  • Week 3: TCP extension test implementation
  • Week 4: TCP Hybla implementation
  • Week 5: TCP Hybla implementation
  • Week 6: TCP HS implementation
  • Week 7: TCP HS implementation
  • Week 8: TCP Noordwijk implementation
  • Week 9: TCP Noordwijk implementation
  • Week 10: Safety week: will use it if needed at some point of the plan
  • Week 11: Safety week: will use it if needed at some point of the plan
  • Week 12: Safety week: will use it if needed at some point of the plan

Weekly Reports

Week 1