Background
An Erlang measures load on a Circuit-Switched link. Quoting Russ Rowlett's page:
The erlang is a dimensionless "unit" representing a traffic density of one call-second per second (or one call-hour per hour, etc.).
The classical definition of an Erlang was developed in the early 1900s by Professor A.K. Erlang. Erlang's definition does not apply generically to data traffic, because there is no standard definition of a "call" in data traffic, nor is there call-blocking as you would find in a fully-utilized Circuit-Switched link. If we make some assumptions about the data network and the type of calls, we can shoe-horn the measurement into a data network.
Erlang-B and Erlang-C evolved from classical analysis of circuit-switched networks; they can also be adapted for use in data networks
Q & A
Question 1
- Q1: How does this apply to data traffic?
- A1: You first have to define what a call is, the bandwidth consumed by a call, and the criteria for blocking a call. Typically you define bandwidth per data call by referencing how much bandwidth is consumed by the Voice Codec in question.
Question 2
- Q2: What do we divide by what?
- A2: If you're strictly asking about basic Erlang calculations, see below. Erlang-B and Erlang-C are a little easier to apply to a data network, because of queuing dynamics that are common to both circuit-switched and data networks.
For the purposes of a basic Erlang calculation... First, let's assume that voice gets absolute priority across the data network in question. Next, let's define the type of link we're dealing with (because the overhead of a call on Ethernet is different than a Packet-over-SONET link). Finally, let's define some call rejection criteria... the simplest is that the call is rejected if you don't have enough incremental bandwidth for another call (ref the Voice Codec).
After you define those boundaries...
- C is the total capacity (in bits-per-second) dedicated to voice traffic
- A is the bandwidth consumed by a single voice call, (ref Voice Codecs)
The formula to calculate the Erlang capacity (per unit of time)...
Erlang capacity (per unit of time) = C / A
Let's apply this to a 100Mbps Ethernet link, using G.729 voice calls (i.e 39200 bps per call).
Maximum Erlang capacity of a FastEthernet link (using G.729 calls, which are assumed to have 100% of the link):
100000000 bps / 39200 bps = 2551.02 Erlangs
Bandwidth Assumptions:
My assumptions about the G.729 packet (ref Cisco's Voice Codec numbers)...
- Ethernet inter-frame overhead - Preamble, SFD, IFG: 20 Bytes
- Ethernet II header & CRC: 18 Bytes
- IPv4 Header: 20 Bytes
- UDP Header: 8 Bytes
- RTP Header: 12 Bytes
- G.729 Voice Payload: 20 Bytes
Total G.729 ethernet frame (including all overhead): 98 Bytes
Total bandwidth of G.729 over ethernet:
50 G.729 packets/sec * 98 Bytes/G.729 packet * 8 bits/Byte = 39200 bits/second
Note: I took the liberty of modifying Cisco's listed bandwidth of 31.2Kbps per G.729 call, because they leave out the Ethernet framing overhead in that number. The simplest way to illustrate this without making the math more complicated is to include ethernet inter-frame overhead in the G.729 bandwidth consumed.
Question 3
- Q3: What is one Erlang of data traffic?
- A3: It's probably obvious by now... it depends on how the call is sent over the data network.