UDPoX - User Datagram Protocol with Optional eXtensions
Introduction
The biggest problem with the normal UDP Protocol is the missing reliability. But the use of TCP is much slower in most cases. It's even uncomfortable for end users to open at least two ports in firewalls. Also for developers it could be simpler than accessing two different network-channels to achieve reliability on the one side and fast data exchange on the other side.
To solve these issues here is a new protocol setup on the UDP to be able to use normal infrastructures. As a programmer you even have the possibility to test the maximal throughput of the "connection". Of course there is no real connection because it's still UDP. But to create the possibility of reliability and ordering, we have to setup something like connections. But if you don't wish there is no connection establishment. At the end there is only a structure with some information about adress, throughput, sequence-number and window information to represent a connection. So how you already see it supports windowing. At the end you choose every time you want to send some data, if the transmission of the packet should be reliable and in order or not.
Have fun reading this bad written stuff. Of course there will be a lib to setup those connections.
AND: the lib will be threadsafe.
So on this wiki pages you can find details about the protocol.
Protocol Features
- TCP-friendly behaviour
- packet-based transmission
- reliable and unreliable packets
- can handle high throughput connections
- no connection establishment needed
- UDP hole punching still possible
- packet fragmentation => erases the problems with different MTUs with the assumption of a UDPoX payload of 280 or so
- support for IPv4 and IPv6 through Path MTU Discovery (no IP fragmentation allowed by UDPoX)
- Flow Control
- Congestion Control
- In Order packets
Protocol specifications
- Acknowledgement
- Congestion Control?
- Flow Control
- Fragmentation
- Old Packet Delivery?
- Packet Order
- Receive Window
- Reliable Packet
- Sequence Number
- Unreliable Packet
![(please configure the [header_logo] section in trac.ini)](/udpox/chrome/site/your_project_logo.png)