5

According to the Wikipedia article the Micro Transport Protocol supports NAT traversal using UDP hole punching. But looking at the libutp's project page I can't find any such reference in the header files. Am I missing something obvious? Or has the NAT traversal been implemented somewhere else?

Petr
  • 62,528
  • 13
  • 153
  • 317
  • If you're using Rust, you might be interested in https://github.com/canndrew/tokio-utp and https://github.com/ustulation/p2p/ crates. p2p crate does NAT traversal (including hole punching) for TCP and UDP. Then you can wrap a hole punched UDP socket with tokio-utp `UtpSocket`... – PovilasB May 07 '18 at 07:42

1 Answers1

3

UDP hole punching is not really specific to any protocol, it does not even need to be supported by the protocol that needs to traverse the NAT. I.e. it can happen out of band or at a higher protocol layer.

In the case of bittorrent-over-utp it is negotiated and initiated with the BEP55 ut_holepunch extension message. In addition to the specification you could also read libtorrent's implementation.

the8472
  • 40,999
  • 5
  • 70
  • 122