NAT-2-NAT and Jabber


This follows on from my previous entry on NAT-2-NAT communication.

The Jabber protocol now supports data streams for file transfer, speech and so on. Currently two types of streams are standard (though not widely supported as yet):

To this I would like to add a third option: direct connection over UDP. For this we will need:

While we're reimplementing TCP, we may as well do it right. My UDP messaging protocol is designed for long fat pipes. None of this windowing nonsense as in TCP, each packet is ACKed (twice if doing so is cheap). An arbitrary number of messages may be in flight at once. Loosing a packet does not cause a resend of a whole chunk of packets, just the one that was lost.

Implementing NAT-2-NAT like this means we don't have to reinvent the wheel: Don't have to worry about the higher level negotiations of "I want to send you this file.", "Ok, go ahead", etc, as we would in a separate application. As Jabber adds capabilities like audio links, we get these for free too.