NGI Assure project: Probabilistic NAT Traversal
Implementation details milestone 3
We decided to refactor our complete testing framework, because the existing one was not capable to test more complex test setups needed to test the NAT traversal. Now the test framework is capable to simulate complete GNUnet peers and not just specific parts of it. Additionally the network topology can be more complex to simulate carrier grade NAT.
The refactoring started with revision 6ec23eefb5cde3fe1a329321d149ab312bd23bf5 and ended with rev. 8e441bf379774656caf8949cadc00fd0c2745b77
The main implemention of the burst logic is done here: 8e441bf379774656caf8949cadc00fd0c2745b77 and d6925db2ef45db61fcc24e411432ddd889c4c225
Make the test framework work to run full peers: 86fc39f560cbfddbe4826decb2848648f8665f4a
Fixed Generic and specific test setup and code: ecbec010c90fbcd1ea3542eee5c91b50ad2845b9
Fixed bug adding global addresses to nat service: 30549860678cb9abc48d6d4efb6ef311bd094361
Make hole punch socket available, and some bug fixes: 227acb2c84956bebcb7e942df01221322b66caa9
The API for the burst logic was added to the protocol here.
Milestone 3 was not implemented completely. Only UDP burst was implemented, and the integration into GNUnet still has bugs.
If one starts the test case in directory
src/service/arm by typing
typing
GNUNET_FORCE_LOG=';;;;DEBUG' GNUNET_FORCE_LOGFILE=test.out make check TESTS="test_arm_probnat.sh"
one sees messages like
INFO Received a burst message on local port 14234 36!
indicating the hole punch.
There needs to be optimization, because at the moment it takes too long (10 to 20 Minutes). But the optimization milestone was exchange with the milestone to get the NAT traversal running on Android.