Goeller on Telecom
Traffic
A First Course in
Telephone Traffic Engineering
Chapter 3: Erlang B and Related Topics.
Lost Calls Cleared
History
While Molina was working with Binomial throwdowns and the
evolution of the Poisson formula, Erlang, in Denmark, was attempting
a somewhat different approach: the method of "statistical
equilibrium." With calls arriving "individually and collectively at
random" in a "stationary random process," knowing the arrival rate
gave the probability of a call appearing in any given interval of
time. If that interval were made short enough, the probability of
arrival of two or more calls would be very small and we could think
of a single call arriving or not. With regard to calls hanging up,
the assumption of exponential holding times made hang-up random with
regard to start times (as constant holding times would not). Thus
the probability of a call departing the system was related to both
the number of calls in the system and the service rate (1 divided by
the holding time) as we saw in Chapter 1.
Well, Erlang assumed that a trunk group under study might have
any number of calls in progress at any given time. If, for instance,
6 calls were in progress, he figured the probability that a new call
might arrive, changing the number present to 7, or an existing call
might hang up, reducing the number of calls to 5. He did this for
all possible numbers of calls which might be in the system, added
them up in a clever way, and produced his almost magic formula. The
interested reader can refer to Appendix I for details.
To see how all this works, let's try a simulation. Call up and
run SIMU-3. The first thing it asks for is the offered traffic in
Erlangs (or hours of use per hour). Remember, this is also the
arrival rate: if 14.63 Erlangs of traffic are offered during an
hour, during one average holding time, 14.63 calls can be expected
to arrive in the system. The next thing the program asks for is call
holding time in decimal minutes. If we have data saying people talk
for 5.35 minutes, on the average, we know that we can expect, in the
long run, 14.63 calls to arrive during each 5.35 minute (5 minutes
and 21 seconds) interval, or about 2.73 calls to arrive, on the
average, per minute. If we divide by 60, we get the probability of a
call arriving in any given second: 0.0456. We could also observe
that 5.35 minutes is 321 seconds, and divide 14.63 by 321 to get the
same result.
An average holding time of 321 seconds implies a service rate of
1/321, or 0.00312, and this number multiplied by the number of calls
present gives the rate at which calls depart. For example, with 15
calls present, calls depart at the rate of 15*0.00312=0.0467 per
second.
The program then asks us for the number of trunks in the group,
and a number to kick off the random number generator. For the time
being, let's have lots of trunks so we have a very low probability
of hitting an ATB condition. Use 14.63 Erlangs above, and try 30
trunks. Use any number you like for the random number "seed." The
machine now calculates the arrival and departure rates per second.
For 14.63 Erlangs and 5.35-minute calls, the probability is one in
almost 22, which is the same as .0456. The departure probability is
shown to be proportional to N, the number of calls in the system,
divided by 321, the holding time in seconds. The simulator is now
all set up and ready to go.
Tell the program to continue. What it will do, for each of the
3600 seconds in the hour, is consult the random number generator to
see if a call arrived; if so, the calls present counter is
incremented by 1. Then, the random number generator decides if a
call departed; if such is the case, the "calls present" counter is
reduced by 1. Then the system goes on to the next second. In most
seconds, no change takes place; we're expecting less than 3 calls
per minute and a minute has 60 seconds.
Once a minute, the program then takes a snapshot of the number of
calls present in the system, and prints out a display showing which
minute we're talking about and the number of calls, plus a bar-graph
visual aid. On my computer, it takes a little less than 2 minutes to
run through the 3600 seconds in an hour. At the end, as shown in
Printout 3-1 in Appendix IV, we see the last 15 minutes, plus a
reminder of the calling rate and number of trunks we used. Then, the
program summarizes the actual carried traffic, the number of calls,
the number of overflows and the grade of service (calculated by
dividing the number of overflows by the total number of call
attempts). With no overflows, the grade of service is 0.
If we tell the program to continue, it will take up where it left
off, and run a second hour. This second hour will have exactly the
same parameters as the first but, because of the random number
generator, it will have a different number of offered calls and
carried traffic (and overflows when we have a smaller number of
trunks than in the present run). Run after run will illustrate a
very important point: no two busy hours are created equal. They
vary, often considerably, even under identical conditions.
The Lost Calls Cleared Assumption
Now, let's run SIMU-3 again, and give it all the same parameters
except the number of trunks. Let's give it an arrival rate of 14.63,
a holding time of 5.35 minutes, but 20 trunks instead of 30. Now, we
should get quite a few overflows. But just what is an overflow?
Well, suppose your PBX does not have enough CO trunks and, during
the busy hour, you dial 9 and hit an ATB. Your call is an overflow,
because it overflows the available facilities. You hang up and
perhaps try again later, but for now you are cleared out of the
system. This is the basic difference in Erlang B and Poisson.
Poisson says you stay in the system for one holding time, which is
ok if you are waiting for dial tone, but hardly reasonable if you
are listening to overflow or reorder tone. Thus, the "lost calls
cleared" assumption is usually the more suitable.
"Lost calls cleared" says, upon hitting busy, your call vanishes.
You might hang up, or your super-smart PBX might try another trunk
group. But from the standpoint of the trunk group in question, your
call vanishes--is cleared out of the system. In our simulator, the
calls-in-progress counter checks to see if it has more calls than
trunks. If it does, it adds one to the overflow counter, subtracts
one away from the calls in progress, and goes on to the next second
to try again. We see at once that the maximum number of calls in the
system cannot exceed the number of trunks. And several runs will
show that the grade of service (overflows divided by total number of
attempts) varies widely from run to run.
Offered vs. Carried Traffic
So far, we have been using offered traffic in our work. But when
we get actual measurements, we can never be sure what the offered
traffic really was. We know the carried traffic; that is what we can
measure. But offered and lost traffic are always approximated. It
would be helpful if we could work with carried traffic. As we have
seen, we can calculate the traffic actually carried when using
Poisson, but Erlang B gives us carried traffic and lost traffic
directly. Thus we can use either offered or carried traffic, as
suits our fancy. The only problem comes when the offered traffic is
much larger than the traffic carried, typical of some kinds of
network design. Then accuracy of estimates of offered traffic on the
basis of carried traffic tends to leave something to be desired.
The overall Erlang B model is important and easy to understand.
It assumes a certain amount of traffic is offered, a portion of that
traffic is carried, and the remainder is lost. Grade of service is
lost traffic divided by offered traffic. In Erlang B, the proportion
of time all trunks are busy is the same as the grade of service; it
is that part of the hour when a call, coming in at random, will be
lost. In the mathematical calculation, the lost calls cleared
assumption says all we have to calculate is the probability that
exactly N trunks in a group of N are busy; if fewer are busy, the
call is not blocked because at least one trunk is free to carry the
call, and if more than N calls try to be present in the system at
any one time, the calls in excess of the N trunks will be lost and
cleared out of the system.
Contrast this with Poisson, which uses the "lost calls held"
assumption. There we assume a call is held in the system for one
holding time, whether it is served or not. Thus to calculate the
probability that a call arriving at random will find all trunks busy
involves not just the N calls being served, but also the several
calls that may be waiting.
To use Erlang B, clear the computer and call up ERL-B. Tell the
program to run, and it will ask you for the offered traffic in
Erlangs. Give it the 14.63 Erlangs we used in SIMU-3. The computer
now flings itself into action and prints out ten lines of numbers in
five columns, with column headings, as shown in Printout 3-2. The
first column is N TKS, the number of the particular trunk we are
observing. "OFFRD HRS" is the number of Erlangs offered to each
trunk in the group. The first trunk, N=1, is offered all 14.63
Erlangs. The second trunk is offered the traffic lost by the first,
and the third trunk is offered the traffic overflowing the second.
"CRD PER TRK" is the the traffic each trunk actually carries.
Note that no trunk can carry more than one hour of traffic per hour;
100% occupancy, one Erlang, 36 CCS, or 60 minutes is all there is.
Further, the less traffic a trunk is offered, the less traffic it
carries. As we go down the column, the traffic carried per trunk
becomes less and less. The TOT CRD, or total traffic carried on the
trunk in question and all trunks preceding it, however, accumulates.
Thus the first five trunks carry 4.590 Erlangs, or hours of use; we
read this in the fourth column, opposite N=5.
The fifth and last column, "GRADE OF SVC" for Grade of Service,
divides the lost traffic by the offered traffic. Lost traffic, of
course, is the traffic offered to the next trunk when there is no
next trunk. The traffic lost by a group of 7 trunks offered 14.63
Erlangs will be 8.292 Erlangs. The grade of service will be B.567,
and more than half the time a call, arriving at random, will find
ATB and be lost. This is a lousy grade of service, but if we
overflow to another group, it may be just what we want. We'll return
to this idea in a later chapter.
Tell the program to continue, and we see the disposition of
traffic on the trunks from N=11 to N=20. With 20 trunks, our grade
of service is B.039; thus about 4% of the time a new call will hit
ATB. One more screen takes us down to 28 trunks where the program
quits; it assumes you don't want anything better that B.001 service.
Let's review what ERL-B does for us. It takes the offered
traffic, in Erlangs, and calculates the offered and carried traffic
per trunk, the accumulated carried traffic, and the grade of service
if the group ends at a particular number of trunks. We don't need
the number of calls, the average holding time, or anything else.
Table II in Appendix II shows representative values.
But suppose we specify Grade of Service? What then? The GRADE OF
SVC numbers in the right-hand column will almost never hit exactly
the value we want. They will generally bracket the desired number.
Well, we can fix that. We can call up another program, called ERL-GS,
which is ERL-B turned inside out, as it were. We can now put in the
desired grade of service and the program will tell us, where N is
the number of trunks in a group, what the offered traffic has to be,
what the total carried traffic will be, and how much traffic will be
lost. This is shown in Printout 3-3, which is similar to Table I. It
also takes the total carried traffic, divides it by N, and gives us
the average occupancy of the trunk group. This right-most column is
particularly interesting. It shows how average occupancy per trunk
increases with group size; the bigger the N, the bigger the average
occupancy per trunk, all for the same grade of service. Fig.3-1
shows this graphically, for the blocking values in Table I and for
queuing, as will be discussed later.
Fig.
3-1. Increasing occupancy per trunk vs. group size.
ERL-GS shows us the lost traffic explicitly. But the lost traffic
can be divided up into three parts, some of which may not occur in
particular systems. We can think of lost traffic containing some
proportion that overflows (perhaps from MCI to WATS, or WATS to
toll), and some that retries. What is left just dies.
We may let all our traffic overflow to other trunk groups so
that, ultimately, almost all of it is carried. Or, we can just let
traffic hitting ATB die. Either approach is classic Erlang B, lost
calls cleared. However, there is little probability that all callers
will simply quit when they can't get through. Many will try again.
Jewett's researches indicate that about 55% of the calls hitting ATB
will retry. Thus we can take the lost traffic, multiply it by 55%
(or some other number if we have reason to believe it works better),
and find the amount of retry traffic the system is dealing with.
Subtract retry traffic from offered traffic, and you have what has
to be called first attempt traffic.
Your PBX, of course, cannot tell a retry from a first attempt. It
just sees the offered traffic and tries to deal with it. But when
service deteriorates badly, it is easy to overestimate the number of
trunks we must add to correct the situation if we don't allow for
retries, as we saw in the example in Chapter 1.
There is one note of caution that must be sounded here. First
attempt traffic is, indeed, pretty much random. But retries are not.
Retries tend to come in clusters, bunched during and just after ATB
conditions. Thus retry traffic is not random, and drives the
mathematicians nuts. If, however, we can convince our station users
to wait for five minutes or so before retrying, their retries tend
to "random out." Naturally they won't do this, but in a first
course, let's keep things simple, pretend they do, and assume
retries are actually random when they are not.
Retries and Carried Traffic
In ERL-GS, the program starts out with a one trunk trunk group,
applies a small amount of traffic to it, and measures the grade of
service. If grade of service is less than the specified value, the
traffic is increased slightly and a new comparison is made. If the
grade of service as measured overshoots the specified value, the
program backs off and sneaks up on the specified value by increasing
the offered traffic by a smaller value. When it gets close enough to
the specified grade of service, it prints out and goes on to the
next bigger N and repeats the process. This method of iteration is
quite common in computer generation of tables.
We have talked about the difference between offered and
carried traffic several times already. But, by now, it should be
evident that we have to feed our formulas with offered
traffic, while we can only measure carried traffic. How can
we match these up? Obviously, we can specify carried traffic and let
the program increase the offered traffic until the carried traffic
comes out to be what we have measured or we have specified. Then we
can look at the other numbers to find out what the offered traffic
had to be to give us our specified carried traffic, and what our
lost traffic will be under these same circumstances. All of these
values are generated when we run ERL-B or any of the related
programs.
The program that lets us specify carried traffic, either measured
or postulated, is CARRIED. Clear the computer, load CARRIED, and run
it. The first thing the program asks you for is the traffic to be
carried by your trunk group. Let's keep on using our 14.63 Erlangs.
The program then asks what % of the lost traffic will recall. Let's
use the 55% suggested by Jewett. Overflow to toll might be 25%. Dead
traffic is what remains. Finally, the program wants to know the call
holding time. Let's keep on with 5.35 minutes.
We now have our basic parameters set into the machine. But it
still wants more. How many trunks? Let's start with 15, the first
number over the 14.63 Erlangs offered. The computer now goes into
deep thought and a few seconds later produces Printout 3-4, in the
same format as ERL-B. We see right away that a group of 15 trunks
carrying 14.63 Erlangs is going to be in serious trouble. ATB will
exist more than 72% of the time, and we will have to offer 52.88
hours of traffic to carry what we have specified.
The next screen full of information summarizes the data the
program has generated. It tells us the first attempt and retry
traffic, offered traffic (the sum of first attempts and retries),
the carried traffic (which we specified), the traffic overflowing to
toll and the traffic that simply died. It gives us hours of calling
per hour (Erlangs), and it also gives us the number of calls. When
we see the recalling traffic bigger than the carried traffic, we
know the system is too tight. So let's ask for the next screen.
The program gives us another chance by asking for a new number of
trunks. This time we try 16. We see, as soon as the program has run
its course, that our grade of service is now much better (about
B.38), and our offered traffic is much smaller. Continuing for the
summary, and we find only 55 calls retrying as opposed to 209 first
attempt calls. Let's continue again and try 17 trunks. Again there
is improvement: only 26 recalls out of 211 total calls offered.
Let's shoot the works and go on to 20 trunks. Now we see the grade
of service is just about B.05, and is typical of what we would want
for a dial-9 trunk group to the Central Office. Only 5 calls retry
and 164 are carried. The 164 calls, each 5.35 minutes long, add up
to our specified carried traffic of 14.63 Erlangs. Any time we want
to quit, we just give the program 0 trunks and it takes the hint.
We can also use ERL-GS with carried traffic. For a specified
grade of service, ERL-GS prints out both offered and carried. All
one has to do is run down the "carried" column to find the number of
trunks required to handle the traffic in question. Actually, hard
copy printouts of runs of ERL-GS, using ERL-GSHC (where the HC
suggests hard copy) for typical grades of service will handle the
great majority of traffic jobs most communications managers will
encounter. Table I includes printouts for B.01, B.05, B.10 and B.20,
up to 50 trunks.
Busy Hour and Side Hour Traffic
ERL-B is the basic program from which all the others are
developed. It tells us the traffic carried on each trunk, total
offered and carried, grade of service, etc. It is helpful to plot
various runs of this program; graphs sometimes shows us things that
tables of numbers do not.
Fig. 3-2 plots the traffic carried by each trunk in a group vs.
the total number of trunks. Each curve is for a different offered
traffic. Study of this diagram emphasizes a number of very important
facts. First of all, we see quite clearly that no trunk can carry
more than one hour of traffic per hour; 100% occupancy is all that
is possible. Second, we note that, for 10 or more hours of offered
traffic, the first several trunks start pushing 100% occupancy, and
the more traffic we offer, the more trunks there are at "the front
of the grade" that are running full. But, in all cases, there comes
a time when enough traffic has been drained off by the first choice
trunks so that the remaining trunks carry appreciably less traffic;
carried traffic per trunk falls off very quickly. Finally, when
almost all the traffic is carried away, there is none left for such
trunks as remain, and the curve is again flat and close to zero. A
curve of this sort is called an ogive (pronounced OH jive) by those
who call it anything at all.
Fig. 3-2. Trunk by trunk distribution of traffic
under Erlang B.
Observing the lower left hand side of the diagram, where small
amounts of traffic are offered, we find the curves dropping quite
quickly in terms of carried traffic per trunk. Consider the curve
where 1 Erlang is offered. The first trunk carries 0.5 Erlang, but
the second carries only 0.3. The ratio of the two is 1.67 to 1. But
when we offer 10 Erlangs, the ratio of the traffic carried by the
first and second trunks is only 1.02 to 1. In periods of light
traffic, the first choice trunk carries less traffic than when
traffic is heavy, but it carries a much larger percentage of the
total traffic. Because not all hours are busy hours, we have to
allow for this difference in busy-hour/side-hour traffic when we
design networks. There are several different approaches, but in
Chapter 6, we will see how the "Shaped Day" concept helps us predict
monthly use of various facilities.
Summary
Erlang B is perhaps the most used of all the traffic formulas.
With the several programs we have, we can specify offered or
carried traffic, or grade of service, and let the
programs relate N, the number of trunks, to the specified values.
Alternatively, we can specify N, and see how much traffic a group of
that size can handle at various grades of service.
The particular factor that distinguishes Erlang B from Poisson or
Erlang C (which we will look at in the next chapter) is the way
calls that find ATB are handled. With Erlang B, they simply vanish
as far as the mathematics is concerned. Actually, they may overflow
to other trunk groups or retry later; in either case, appropriate
assumptions or measurements allow us to approximate system behavior.
By contrast, under Poisson, calls stay in the system for one average
holding time, whether they are served or not. Those that find ATB
are not, however, turned away. If a trunk comes free, they use it
for the remainder of their holding time. For short delays, Poisson
works quite well; for longer delays, Erlang C is the one to use.
With Erlang C, calls finding ATB simply go into a queue and wait in
line for a trunk to come free. When a trunk is free and they are
next in line, they get the trunk and use it for a full holding time.
To put it another way, there is no queue with Erlang B. The queue
with Poisson is of short duration, and never more than one holding
time, while the queue with Erlang C is can be quite lengthy. Each
formula has its own field of application.
[
Top ] [ Next Chapter ] [
Table of Contents ] |