If you're considering a datagram protocol, you might be interested in some more modern alternatives to UDP:

UDT: Breaking the Data Transfer Bottleneck

Stream Control Transmission Protocol

On Sat, Mar 23, 2013 at 12:17 AM, Jeff Garzik <jgarzik@exmulti.com> wrote:
Here is a rough draft implementation of a UDP P2P protocol extension
for bitcoin:


Protocol specification (such that it is):

- UDP, bound to same port as TCP P2P (normally 8333)
- Active, simultaneous TCP P2P connection required (useful against DoS
and other attacks)
- Same message format as TCP P2P, same pchMessageStart conventions,
etc. (my CNetMessage pull req would be helpful here)
- Multiple P2P messages per UDP packet permitted
- Max UDP packet size 100*1024 bytes
- Advertises NODE_UDP in nServices
- New "getudpcook" TCP P2P command returns a "udpcook" message,
containing a yummy cookie
- UDP P2P commands "inv", "tx" and "addr" are handled as if received via TCP
- UDP P2P command "udpsub" sets a mask, that subscribes to one or more
data broadcasts.
- When USM_INV_BCAST mask bit is set, receive "inv" messages via UDP
rather than TCP.

Project and design goals (or, why do this?):

- It is theorized that UDP may be useful for some messages we
broadcast throughout the network
- A productive discussion STARTS with code, otherwise discussion
continues forever.
- Investigate improving "inv" relay speed
- Investigate unconditional "tx" broadcasting via UDP, as "inv"
alternative, for small tx's.
- Investigate improving block relay speed (or perhaps block header relay speed)
- Open up new design avenues, for P2P patterns more suited to UDP than
TCP in general.

Jeff Garzik
exMULTI, Inc.

Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
Bitcoin-development mailing list