BT behind NATs, getting it to work (was Re: [BitTorrent] Re: How BitTorrent deals with people behind NAT?)

Joseph Ashwood ashwood at
Tue Mar 15 06:02:39 EST 2005

I went ahead and snipped everything because I'm going on a severe tangent
from there.

NAT to NAT connection, assuming no port forwarding, etc is obviously
difficult, but it is not unsolvable. There is a statistical way of making
the connection, although I cannot think of a non-brokered version that is
100% successful.

While the proposal is very ill-formed right now, it descends rather directly
from the Gnutella method of NAT2NAT connections. It works like this, from
behind the NAT send out UDP packets on the correct port to the other hosts
that you are willing to talk to, hosts that are willing to talk to you will
have done the same. At this point the NATs have established routing, with
each mapping ports to the other. From here the connection can be treated as
normal. The problem is that a stateless beginning packetset has to be made.
A simple "Open to connection" packet (any invalid BT packet, or a keep-alive
should work), would be stateless, and could establish the routing table.
Hosts not behind NATs have no need to send out these packets, and since no
response is expected the NAT mapping becomes a router.

The frequency of the packets is open to wide debate, and is an area that my
knowledge does not lay in.

The biggest disadvantage of this protocol as I see it are specifically that
there is only a statistical probability of establishing the connection. This
makes it undependable, but if every peer used it every time the NATs could
be effectively eliminated.

It would take a critical mass of clients in order to make this substantially 
useful, but it does have greedy uses. By establishing these routing blocks a 
peer is more likely to be able to accept incoming connections. Unfortunately 
this is massively incomplete and will require someone with a more intimate 
knowledge of UDP and NAT than I have any desire for.

Any thoughts?

Yahoo! Groups Links

<*> To visit your group on the web, go to:

<*> To unsubscribe from this group, send an email to:
    BitTorrent-unsubscribe at

<*> Your use of Yahoo! Groups is subject to:

More information about the BitTorrent mailing list