Calculating SS7 Load Sharing With SLS Distribution

SS7 load sharing over a linkset depends on how traffic is mapped from Signalling Link Selection (SLS) values to individual signalling links. A simple division of total messages by the number of links can be misleading because each message carries an SLS value, and the distribution of those values may be uneven.

For Australian operators, this matters when sizing signalling capacity between major exchanges in Sydney, Melbourne, Brisbane or Perth. It is also relevant when migrating legacy PSTN traffic to SIGTRAN, where the same routing logic may be retained while the physical transport changes from traditional signalling links to SCTP-based associations.

Method What it assumes Best use Main risk
Equal division Traffic is evenly spread Early capacity estimate Hides SLS hotspots
Round-robin SLS mapping SLS values are assigned cyclically Predictable linkset design Uneven message counts remain
Measured SLS distribution Production proportions are known Operational sizing Requires reliable traffic data
Peak-based calculation Busy-hour traffic is used Resilience and capacity planning Can overstate normal utilisation

How SLS Controls Link Selection

In an ITU-T MTP3 environment, the SLS field is commonly four bits wide, giving 16 possible values from 0 to 15. MTP3 uses the destination point code, originating point code and SLS to select a route. Once a linkset has been selected, the SLS value is used to choose a particular signalling link within that linkset.

A basic calculation starts by counting messages for every SLS value during a defined interval. If (T_s) is the message count for SLS value (s), then total traffic is:

[ T = \sum_{s=0}^{15} T_s ]

This count should cover the same message class and period throughout the analysis. Mixing ISUP call-control messages with SCCP traffic or management messages can produce an inaccurate view of user-part loading.

Assigning SLS Values Across A Linkset

Assume a linkset has four active links and uses a simple modulo assignment. The link selected for SLS value (s) can be represented as:

[ L(s) = s \bmod 4 ]

Under this arrangement, link 0 receives SLS values 0, 4, 8 and 12; link 1 receives 1, 5, 9 and 13; and so forth. The load on link (i) is therefore:

[ T_i = \sum_{{s:L(s)=i}} T_s ]

The percentage load of that link is:

[ P_i = \frac{T_i}{T} \times 100 ]

This is more accurate than assuming every link carries exactly (T/4). A signalling link may carry 25 percent of the total in a perfectly balanced case, but a skewed SLS pattern can move considerably above or below that level.

The exact mapping is vendor and configuration dependent. Some platforms use a different sequence, rotate assignments after maintenance, or apply link activation rules that alter the effective distribution. Confirming the implementation is as important as applying the formula.

Worked Example With Four Links

Suppose a busy-hour measurement records the following SLS totals: values 0 to 3 carry 1,200 messages each, values 4 to 7 carry 800 each, values 8 to 11 carry 600 each, and values 12 to 15 carry 400 each. The total is 12,000 messages.

With modulo-four assignment, link 0 receives SLS values 0, 4, 8 and 12:

[ T_0 = 1,200 + 800 + 600 + 400 = 3,000 ]

The same calculation applies to links 1, 2 and 3 because each group has identical values. Every link therefore carries 3,000 messages, or 25 percent of the linkset total.

If SLS 0 instead carried 3,000 messages while the remaining values stayed unchanged, link 0 would carry 4,800 messages. Its share would become 36.9 percent, while the other links would each remain near 24 percent. The linkset would still have spare aggregate capacity, yet one link could approach its operational threshold first.

Measuring Traffic In Australian Networks

A useful Australian measurement window is the busy hour associated with local calling patterns, enterprise traffic and mobile interconnect activity. Traffic can differ between a weekday in Sydney’s CBD, a regional exchange in Queensland and a weekend period affected by tourism in Queensland or Western Australia. A single daily average is rarely enough for engineering decisions.

For each observation period, collect message counts by SLS, link identifier, point-code route and message type. The MTP3 routing label provides the context needed to interpret those records; a practical reference on MTP3 label fields can help when validating captured headers and route-selection data.

Calculate both the mean and the peak link share. Also record link failures, maintenance states and traffic rerouting. If one link is removed, the surviving links may receive a very different SLS mix, so normal-state figures should never be the only resilience test.

Recommendations For Reliable Capacity Checks

Use the following practices when reviewing an SS7 linkset or planning a SIGTRAN transition:

  • Count traffic by individual SLS value rather than relying only on total messages.
  • Verify whether the platform uses modulo, cyclic, hash-based or proprietary link selection.
  • Measure busy-hour traffic separately for ISUP, SCCP, management and other relevant users.
  • Calculate the highest link percentage during normal operation and after one-link failure.
  • Include retransmissions, signalling congestion and protocol overhead in capacity estimates.
  • Recheck the distribution after routing, numbering or interconnect changes.

For SIGTRAN, distinguish the logical SS7 load-sharing model from the SCTP transport arrangement. Multiple SCTP associations or paths do not automatically reproduce the same MTP3 SLS distribution. The signalling gateway may preserve SLS-based routing at the MTP3 layer while balancing transport traffic according to separate association rules.

The most useful result is a per-link busy-hour profile, expressed in messages per second, octets per second and percentage of engineered capacity. Compare that profile with platform limits and operational thresholds rather than using a generic “one quarter per link” assumption.

The key principle is simple: calculate each link’s load from the SLS values assigned to it. Total linkset traffic indicates the size of the workload, but the SLS distribution determines where that workload actually lands.