GSOC2014LTP: Difference between revisions
No edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
* '''Student:''' [mailto:rubenmartinez.vidal@gmail.com Rubén Martínez] | * '''Student:''' [mailto:rubenmartinez.vidal@gmail.com Rubén Martínez] | ||
* '''Mentors:''' [mailto: | * '''Mentors:''' [mailto:tomh@tomh.org Tom Henderson], [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella] | ||
* '''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. | * '''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. | ||
= Approach = | |||
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). | |||
== 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. 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. | |||
== 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. 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. | |||
= Deliverables = | |||
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. |
Revision as of 20:36, 22 April 2014
Project overview
- Project name: Licklider Transmission Protocol (LTP).
- Student: Rubén Martínez
- Mentors: Tom Henderson, Tommaso Pecorella
- 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.
Approach
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).
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. 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.
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. 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.
Deliverables
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.