skip to main content
Packet headers
There are quite a few headers that travel with the payload. First is a header that the receiving endpoint uses to know what do to with the payload. For most of the ICE media engine's traffic in this header is the Realtime Transport Protocol, or RTP, header. Then, when using IP multicast, that resulting RTP packet (consisting of the payload "wrapped" in RTP) is further wrapped in a User Datagram Protocol, or UDP, header. Then, that UDP packet is wrapped in an Internet Protocol, or IP, packet. Finally, the IP packet is wrapped in a packet (sometimes called a frame just to confuse everyone) specific to the underlying transport. This transport could be wired or wireless Ethernet or some other construct. Each of these headers uses a certain number of bytes for each packet, obviously, and therefore bandwidth calculations need to take this into account.
Packet overhead (taxes) generally consumes more bandwidth than the actual payload itself!
For example: let's say your CODEC produces a payload of 10 bytes because its optimized to operate at a very low output rate. Your resulting transmitted packet size (what actually goes out over the network) consists of these 10 bytes + 12 bytes for RTP + 8 bytes for UDP + 20 bytes for IP + 14 bytes for Ethernet. So, sending a payload of 10 bytes results in 64 bytes (10+12+8+20+14) being transmitted.
But wait, there's more… That's the fixed, guaranteed tax we have to pay the network to get our packet moved around. No matter what our payload is and regardless of size (for the most part), we're going to have these headers on our packets chewing up our bandwidth. The "more" here is encryption.