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.