I’ve come across many scenarios where people assume that VOIP calls consume 64kbps per call. They instantly assume that because the payload of a codec such as G.711u is 64k. While the payload IS 64k for a G.711u call there are other factors in play. If you want to properly calculate the VOIP bandwidth of a single call, follow these steps.
1. Determine the bandwidth for the audio codec.
For the sake of simplicity, let’s continue using G.711u as the codec. We do not send one massive 64k packet once per seconds in a call. That would cause some serious issues with audio quality. Instead each packet is going to contain a small amount of audio. The default for most codecs and deployment scenarios is 20ms. This can be adjusted, however it’s limited by the SIP stack and /or DSPs on your system
To find out how big each packet is we do the following equation.
Bytes Per Packet = (Sample Size * Codec Bandwidth) / 8
So we have (.20 * 64,000) /8
This equals 160 bytes.
2. Determine the datalink, network and transport overhead.
Depending on the layer 2 network (datalink) we are going to have different amounts of overhead.
Ethernet = 20 byes
Frame Relay = 6 bytes
PPP = 6 bytes
In terms of the network and transport overhead we can assume that IP, UDP, and RTP will always be used.
IP = 20 bytes
UDP = 8 bytes
RTP = 12 bytes
We will make the assumption that layer 2 on this call is ethernet.
160 + 20 + 40 = 220 bytes
3. Add optional overhead.
Packets often traverse a VPN of some sort. This adds additional bandwidth.
GRE = 24 bytes
MPLS = 4 bytes
IPSEC = 57 bytes
Let’s assume that we have an MPLS connection in place.
220 + 4 = 224 bytes
4. Add it up.
We know that each packet consumes 224 bytes. Remember how we used 20ms as the amount of audio per packet? If we use 20ms, how many packets per second are being sent. If 1 seconds == 1000ms, then 1000 /20 = 50.
We will send 50 packets per second.
224 * 50 = 11200 bytes per second.
We normally don’t look at bandwidth as bytes per second. We need to convert this to bits by simply multiplying by 8.
11200 * 8 = 89,600 bits.
With this scenario, each call will consume almost 90kbps. Had this calculation been made as 64k per call we could quickly run into capacity issues.
Want to run your own calculations? Here are the payload sizes of a few common codecs:
G711 = 64,000
ILBC = 15,200
G729 = 8,000
G.726 = 32,000
G.729a = 8,000
G.728 = 16,000
G.722 = 64,000 (Note – this can also be 56,000 or 48,000 depending on the set bitrate)
Here’s a scenario for you to run through.
Codec :G.729a (8,000)
Sample Size : Each packet has 20 ms of audio
Layer 2 : Ethernet circuit between device A and Device B
Extra Overhead: MPLS and IPSEC are used across the link
Write your answer in the below comment box.