- Project name: Licklider Transmission Protocol (LTP).
- Student: Rubén Martínez
- Abstract: Licklider Transmission Protocol (LTP) is a point to point protocol for environments with long round-trip delays (such as deep space communications). This project will provide a RFC compliant implementation, it will consist of a ns-3 module with its corresponding testsuits, examples, helpers and documentation.
This protocol can be deployed at two different leves: on top of either the Data-Link-Layer or the Transport Layer (UDP). The best approach should be to start with an UDP implementation, this will ensure compliance with already existing implementations. A data-link-layer implementation can also be done depending on how the project advances, and will be be taken into consideration after the results of the mid-term review (see schedule section).
I will use an iterative-incremental development methodology, each iteration will include implementation, documentation (doxygen style comments, thorough the source code), and testing. Development will be divided on 3 main tasks:
- Task 1: This task consist in developing the ltp-headers and a SDNV codec (Self-Delimiting Numeric Values) a type of data encoding used in DTN protocols. This task consist on defining several data-structures and their serialization/deserialization methods.
- Task 2: This task will focus on developing the backbone of the protocol by defining the classes: ltp-packet-queues, ltp-session-records and the basic structure of the ltp-protocol. This will define the main data structures required in control logic used to handle: packets, sessions, protocol state, timers, etc.
- Task 3: This task will focus on the Send() and Receive() methods of the ltp-protocol class, these methods implement the control logic of the protocol.
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. This project will have two kind of tests:
- Unit Tests: each task will have a group of test vectors, those tests will ensure that the internal workings of each developed class works in isolation.
- System tests: these tests will be provided mainly with examples, it will consist on using the developed module together with already tested ns-3 modules.
Lastly, the implementation will be cross-validated against existing implementations of the LTP, such as ION-DTN (JPL) or LTPlib (Trinity College Dublin). This cross-validation will be performed using a shared file descriptor to which both implementations can read or write traffic. The FdNetDevice class provided by the ns-3 API will be used to achieve this task.
The final product of the project will be a ns-3 module, so the main deliverables will be the several sections of this module:
- Deliverable 1 - model and helper: will contain the main functionalities of the protocol and the helper classes to simplify its use.
- Deliverable 1.1 - Packet Headers and SDNV codec.
- Deliverable 1.2 - LTP-Protocol auxiliary structures.
- Deliverable 1.3 - LTP-Protocol Core.
- Deliverable 1.4 - LtpNetDevice.
- Deliverable 1.5 - LtpStackHelper.
- Deliverable 2 - test: this deliverable will contain the several testsuits used.
- Deliverable 2.1 - Unit Tests. Packet Headers and SDNV codec: check correctness.
- Deliverable 2.2 - Unit Tests, LTP-Protocol Auxiliary, check methods, timeouts and data handling correctness.
- Deliverable 2.3 - Unit Tests, NetDevice implementation, check methods.
- Deliverable 2.4 - Unit Tests: protocol implementation, communication between nodes, retransmissions, cancellation of communication.
- Deliverable 3 - examples : this deliverable will contain several examples on how to install and use the protocol.
- Deliverable 4 - documentation : This will include the doxygen documentation, generated from code comments and RST files containing additional information about the protocol.
- Deliverable 5 - Cross-Validation: This deliverable will contain several tests using FdNetDevices to perform cross-validation with existing implementations.