Return to Summer 2014 Projects page.
- Project name: TCP Versions for Satellite communications.
- Student: Natale Patriciello
- Mentors: Tommaso Pecorella
- 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.
- Code Repository : http://code.nsnam.org/rmartinez/ns-3-dev-ltp
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).
I will use an iterative-incremental development methodology, each iteration will include implementation, documentation (doxygen style comments, thorough the source code), and testing.
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