This paper discusses the development of a fully distributed peer-to-peer networking protocol suitable for real-time applications. The main features of the protocol are the following: optional reliable and in-order delivery, fragmentation and reassembly of large packets, multiple channels of communication (multiplexing), NAT traversal and routing.
When two peers want to communicate, and are not connected directly to each other, they first try to establish a connection with the help of their other peers. Should this be unsuccessful, they can still communicate using one or more other network nodes as relays. In the protocol, unreliable packets are mainly useful for real-time, latency-sensitive traffic, while reliable packets are optimal for signaling.
After a short introduction of related networking technologies, the paper proceeds to describe the design and implementation of the protocol. Finally, the different methods of validation are presented. These include a series of automatic and interactive tests using different network topologies.