Engset Model Calculator (Finite Source Traffic)
Dimension PBX voice trunks, radio dispatch channels, and concentrators serving finite subscriber populations (M/M/m/m/S). Model state-dependent arrival dynamics and eliminate Erlang B over-provisioning penalties.
The Mathematical Theory of the Engset Model & Finite-Source Queuing
1. The Physics of Finite Source Traffic: Why Erlang B Fails in Enterprise Networks
In 1917, Danish mathematician Agner Krarup Erlang formulated his renowned Erlang B loss formula. While Erlang B remains the cornerstone of public switched telephone network (PSTN) dimensioning, its mathematical derivation hinges upon an assumption that is violated in enterprise and private networks: an infinite subscriber population (S → ∞). Under Erlang B, incoming call arrivals follow a pure Poisson process where the system arrival rate λ remains entirely constant, regardless of how many channels are currently occupied.
In enterprise private branch exchanges (PBXs), call concentrators, emergency intercoms, and corporate key systems, the user pool is strictly finite (S). This introduces a critical negative feedback mechanism: when a user initiates a call, that user is now busy and is physically incapable of originating another call. If 8 out of 40 extensions in a branch office are active, only 32 extensions remain capable of placing a call. The arrival rate λk degrades dynamically as trunk utilization rises:
where k is the number of busy channels, S is the total number of traffic sources, and γ is the call origination rate per idle source. Because call arrivals automatically slow down as the system approaches congestion, the actual probability of encountering all channels busy is significantly lower than predicted by Erlang B. Dimensioning an enterprise PBX using Erlang B results in gross over-provisioning and wasted capital expenditure.
2. Call Congestion (Pcall) vs. Time Congestion (Ptime) & The PASTA Breakdown
In classical queuing systems with Poisson arrivals, the celebrated PASTA principle (Poisson Arrivals See Time Averages) holds true: an arriving customer experiences the exact same probability of blocking as an independent external stopwatch recording the fraction of time the servers are full. Hence, in Erlang B, Call Congestion equals Time Congestion.
In finite-source systems, the PASTA principle completely breaks down because arrivals are state-dependent. Teletraffic engineers must rigorously distinguish between two separate metrics:
- Time Congestion (Ptime): The fraction of time that all m trunks are simultaneously occupied throughout the busy hour.
- Call Congestion (Pcall): The proportion of actual incoming call attempts that encounter an all-trunks-busy state and are rejected.
The physical and mathematical relationship is governed by an elegant truth: a new call can only be placed by an idle subscriber. Therefore, when a subscriber initiates a call, they look at a network populated by the remaining S - 1 sources. Consequently, the call congestion of an S-source system is mathematically identical to the time congestion of an (S - 1)-source system:
Because S - 1 < S, Call Congestion is strictly lower than Time Congestion:
A telecommunications carrier or SLA compliance auditor who evaluates circuit blocking using switch time occupancy (Ptime) incorrectly penalizes network performance, as the real user experience is governed exclusively by Pcall.
3. Mathematical Formulation of the Tore Olaus Engset Loss Distribution
In 1915, Norwegian telecommunications engineer and statistician Tore Olaus Engset derived the exact finite-source loss distribution for telephone switches (published in 1918).
Let α = γ × h denote the offered traffic intensity per idle source, where h is the mean service holding time. The steady-state probability Pj that exactly j trunks are busy (0 ≤ j ≤ m) is given by the truncated Bernoulli/Binomial distribution:
where C(S, j) = S! / [ j!(S - j)! ] is the standard binomial combination. From this, Time Congestion is the probability of occupying state m:
Applying the (S - 1) idle source transformation yields the exact Call Congestion formula:
4. Numerically Stable Computation: Eliminating Factorial Overflow
Direct evaluation of factorials S! in 64-bit IEEE 754 floating-point arithmetic overflows to Infinity when S > 170. To ensure flawless client-side stability for large enterprise campuses (S ≤ 5,000), this engine implements the iterative ratio recurrence algorithm:
Rj = Rj-1 × [ (S - j + 1) / j ] × α (for j = 1, 2, ..., m)
Ptime = Rm / [ ∑j=0m Rj ]
Similarly, Call Congestion is evaluated using the reduced source ratio sequence R'j with parameter (S - 1), executing in linear O(m) time with zero risk of numerical overflow.
5. The Source-to-Server Ratio Rule of Thumb (S / m)
Teletraffic engineering standards categorize trunk groups based on the source-to-channel ratio (S / m):
- Steep Finite Source Regime (S / m ≤ 10): The negative feedback mechanism is powerful. Erlang B overestimates blocking probability by 50% to over 300%. Dimensioning trunks using Engset is mandatory to avoid massive capital waste.
- Transition Regime (10 < S / m < 30): Finite source feedback remains measurable. Engset yields 5% to 20% lower blocking than Erlang B, typically saving 1 full trunk channel.
- Asymptotic Poisson Regime (S / m ≥ 30): The subscriber population is so large compared to channel capacity that an individual active caller has negligible impact on the overall arrival rate (λk ≈ Sγ). The Engset distribution converges asymptotically to Erlang B.
Engset Model vs. Erlang B Trunk Capacity Reference Table
Compare required voice trunks under the Engset Finite Source Model versus Classical Erlang B at standard 1.0% Grade of Service (P.01 / GoS ≤ 0.01).
| Subscriber Sources (S) | Idle Traffic / Source (α) | Total Offered Load (A) | Trunks (Engset Pcall ≤ 1%) | Trunks (Erlang B ≤ 1%) | Trunks Saved | S / m Ratio |
|---|---|---|---|---|---|---|
| 10 Sources | 0.100 Erlangs | 1.00 Erlangs | 3 Trunks | 5 Trunks | 2 Trunks Saved | 3.3x |
| 20 Sources | 0.080 Erlangs | 1.60 Erlangs | 4 Trunks | 6 Trunks | 2 Trunks Saved | 5.0x |
| 30 Sources | 0.075 Erlangs | 2.25 Erlangs | 5 Trunks | 7 Trunks | 2 Trunks Saved | 6.0x |
| 40 Sources | 0.080 Erlangs | 3.20 Erlangs | 7 Trunks | 9 Trunks | 2 Trunks Saved | 5.7x |
| 50 Sources | 0.060 Erlangs | 3.00 Erlangs | 6 Trunks | 8 Trunks | 2 Trunks Saved | 8.3x |
| 75 Sources | 0.050 Erlangs | 3.75 Erlangs | 8 Trunks | 9 Trunks | 1 Trunk Saved | 9.4x |
| 100 Sources | 0.050 Erlangs | 5.00 Erlangs | 10 Trunks | 11 Trunks | 1 Trunk Saved | 10.0x |
| 150 Sources | 0.040 Erlangs | 6.00 Erlangs | 11 Trunks | 12 Trunks | 1 Trunk Saved | 13.6x |
| 250 Sources | 0.030 Erlangs | 7.50 Erlangs | 13 Trunks | 14 Trunks | 1 Trunk Saved | 19.2x |
| 500 Sources | 0.020 Erlangs | 10.00 Erlangs | 16 Trunks | 16 Trunks | 0 (Converged) | 31.3x |