I understand (or at least I believe I do) the concept of Erlang load unit when it is applied to voice communications. Voice communications occur in real-time and measured against real-time, so naturally we can just divide the total amount of voice traffic handled by the system (measured in minutes) in certain period of time by the length of that period of time (also measured in minutes) and obtain the dimensionless load factor known as Erlang. Naturally, 60 minutes of voice carried in 60 minutes of time is 1 Erlang.

But how can one apply this Erlang unit to data traffic? What do we divide by what? What is 1 Erlang for a data network? Is it even applicable? The reason I ask is that I see various Erlang-related formulas (Erlang-B and Erlang-C) being used to perform load analysis of data networks. But I'm having hard time applying the idea of Erlang unit to a network whose traffic is not measured in units of time.

The higher-level problem I'm working on is estimation of the load on a device that handles voice and data traffic simultaneously. And the data traffic in this case is general Internet traffic, not tied to voice communications in any way. For example, consider a cellular base station, AKA a cell site. The device has independent channels for handling voice and data traffic. How does one estimate the load in Erlangs for such device, if it is at all possible? How does one bring the different types of traffic to some sort of practically meaningful common measure?



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).

  • C = 100000000
  • A = 39200

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.
  • That was my initial understanding. However this article on Cisco site cisco.com/en/US/docs/ios/solutions_docs/voip_solutions/… applies Erlang units to data traffic in "Using the Erlang C Traffic Model for Data" example. They say that since they can buy bandwidth in 64,000 bps increments, then 960,000 bps of desired bandwidth represents 15 Erlangs. This strikes me as completely arbitrary. Why would the "size" of Erlang depend on what increment they can buy bandwidth in? – AnT Oct 10 '13 at 9:07
  • Cisco is using the bandwidth consumed by a G.711 codec in their definition of a call. However, there are many possible voice codecs; almost nobody uses a G.711 codec if they care about bandwidth efficiency. This is why I said you can't apply it "generically" to data traffic. – Mike Pennington Oct 10 '13 at 9:15
  • Thank you for your reply. I see that the answers seems to be specific to sending voice traffic over data network. But what about non-voice applications, like general Internet traffic? Is there any meaningful way to include such traffic into the count? – AnT Oct 10 '13 at 21:17
  • Ideally, I'd want to be able to describe the load of a device that simultaneously handles different kinds of traffic (like voice and Internet traffic) through independent comm channels at the same time. Is there a way to come a with a single Erlang value for such a device? – AnT Oct 10 '13 at 21:17
  • 1
    @AndreyT, I think you're trying to solve a problem by calculating internet traffic in Erlangs; however, that's going to be hard unless the bandwidth consumed by the traffic in question is constant over time. VoIP is a special case of general internet traffic; it can be quantified in Erlangs because it's a relatively constant-bandwidth stream. However, the vast majority of internet traffic is not constant-bandwidth. Could you help me understand what problem you're solving with the Erlang calculations? – Mike Pennington Oct 11 '13 at 10:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.