Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
GSoC 2015: NAT traversal using UDP hole punching Timeline
Timeline of the GSoC 2015 project: NAT traversal using UDP hole punching
Before and during the coding period:
- Study and get to know the P2PSP protocols and code, especially the class inheritance system and NAT traversal documentation.
- Study on various methods for NAT traversal, especially on port prediction techniques for symmetric NAT traversal.
- Setup virtual machines to simulate network situtations and configure network interfaces with different NAT types.
- Test UDP hole punching on the test network for different NAT combinations.
Develop an UDP NAT Traversal test program
- Add NTS classes and implement NTS algorithms 1 and 2 (commits).
- Avoid nested instances in all peer classes by setting their type (commit).
- Develop a NAT traversal testing script for P2PSP classes (commits).
- Investigate odd NAT traversal results (e.g. FCN<->SYM).
- Add documentation on NAT traversal testing (commits 1, 2, 3).
- Adapt NAT traversal testing script to have the monitor on the same host as the splitter (commit).
- Check if chunks are received between each of the instances (splitter, monitor, peers) (commit).
- Adapt peer to connect to splitter instead of gmail.com (commit).
- Add local source server to NAT testing script (commit).
- Add network simulation setup details to the documentation (commits).
- Add iptables rules to test different NAT types, with symmetric NAT subtypes (commits).
Improve inheritance and overriding possibilities of the
- Adapt Peer_NTS to changed packet handling method (commit).
- Add peer ID generation and sending to NTS classes (commits).
- Extend NTS peer and monitor to send packets continuously to peers and splitter until a reply is received in case packets get lost (commits).
- Add peer list transmission and hello packets between peers (commit).
- NTS Test script: Detect connection success via NAT entries; execute several test runs and output success rate (commits).
- Add sequential port prediction (commit).
- Adapt NTS splitter and peer to limit the number of arriving peers by removing them after a timeout (commits).
- Move port prediction to Peer_NTS and extend Peer_NTS to send to different probable next source ports of other peers (commit).
- Handle peer arrival with an existing peer behind a sequentially allocating NAT (commit).
- Implement workaround to force wanted SYMSP behaviour (commit).
- Extend NTS peer to send feedback about the source port step of other peers to the splitter (commit).
- Make NTS peers retry to join the team if some P2P connections do not work (commit).
- Extend P2PSP to use more than one monitor peer for more accurate source port step detection in the NTS classes (commits 1, 2, 3).
- Adapt NTS classes to store the currently allocated source port of incorporated peers behind SYMSP NATs (commit).
- Add script to setup network with NATs using Linux network namespaces (commit).
- Add better source port prediction algorithm (commit).
- Extend test script to support parallel test runs (commit).
- Make peers SYMSP NATs reconnect to monitor to determine the currently allocated source port when a new peer is arriving (commit).
- Add NAT traversal methods with sequence diagrams to the documentation (commits).
- Add developed testing scripts to automatically run teams and filter output to the repo (commit).
- Add final test results to the documentation (commit).
- Clean up the code, apply python coding guidelines and add more comments (commits).
- Implement congestion avoidance for splitter messages (commits).
All done :)
Clone this wiki locally
Press h to open a hovercard with more details.