Quality Based Routing

4 min read


Quality based routing represents an advanced type of traffic routing. Based on historical data, the system calculates route quality based on a predefined formula and then orders the results in order of quality, with the best route first.

It is dynamic because, each time a call is made, the previous calls form the basis of a new routing decision. As it is very CPU intensive, this routing is quite taxing on systems.

Quality based routing is sometimes known as Adaptive Routing. Previously, there were engineers who monitored routes and manually calculated route quality. Based on these calculations, they changed providers‘ places in the routing table according to their respective performance. The worst performers were demoted to the end of the list. Now, this process is automated, with the Routing Table automatically adapting to the quality metrics.

Quality based routing attempts to route calls based on calculated quality parameters. Various parameters, which we will outline later, can be combined in the quality formula for routing. Importantly, no standardized method for the calculation of route quality exists, so the option to create your own formula is a huge advantage. Usual metrics such as ASR or ACD could be used as a basis for route quality values. However, it is very often not enough to simply use these values. Rather, formulas are utilized because they allow ASR or ACD to be combined with other parameters.

This method of routing is employed when quality for the customer, and not profit, is the primary consideration. In practice, it is not as common as Least Cost Routing, Priority Based Routing, or Percent Based Routing. However, in some cases, Quality Based Routing has no competition.

Parameters to Determine Quality

To calculate the Quality Index, the value by which providers are ordered and the routing table constructed, the following parameters can be used:

  • Number of Total Calls (Attempts)
  • Number of Answered Calls
  • Number of Failed Calls
  • Total Call Duration (in seconds)
  • ASR – Answer Seizure Ratio (%)
  • ACD – Average Call Duration (in seconds)
  • Provider’s Tariff Rate
  • Profit per Minute
  • Provider’s Weight in a Primary List
  • Provider’s Percent in a Primary List
  • Average Post-dial Delay (PDD)
  • Average Setup-connect Delay (SCD)
  • Average Quality of Service (QoS)
  • Average Number of Calls per Second (CPS)
  • Maximum Concurrent Calls
  • Received/sent Traffic Volumes
  • Peak Number of Active Calls
  • Total Number of Bytes Sent During All Calls
  • Total Number of Bytes Received During All Calls
  • Number of Active Calls
  • etc

Fresh Data by Time Frame or Number of Last Calls

The quality calculation should be completed based on recent data, as network conditions can change very rapidly. Indeed, the parameter values from five hours ago may be very different than those from the last minutes.

In addition, there is an option to select X last calls and then determine quality based upon the stats from these calls. However, please note that at least 100 calls are necessary to properly determine the quality of a route in this fashion.

These options are different from a per-system basis.

Formula to Calculate the Quality Index

A comparison of routes by quality requires one unified Quality Index or Value. Routes can then be ordered by the highest quality in the routing table.

The Quality Index is calculated by using a mathematical formula, for example:

QI = WEIGHT + (ASR * ACD / RATE) / 2

One of the methods utilized in many systems is to find the product of ASR and ACD since an increase in both of these numbers theoretically implies better quality. Therefore, in this case, the Quality Index can be found with the following formula:


The higher the index, the better the given route.

Examples of other quality formulas include:

QI = (ASR * ACR) + 100*(100-TOTAL_CALLS)
QI = 2 * ASR + 2 * CPS
QI = 1/PDD

It is worth noting that, with special formulas, other types of routings can be simulated. The following is just such an example:

QI = RATE - Least Cost Routing
QI = WEIGHT - Priority/Weight Based Routing
QI = PERCENT - Percent/Propability Based Routing


When Quality is Unknown for a New Provider

What happens when you add a new provider without any previous calls? We don‘t know the quality because no basis for any calculation exists.

In this case, the initial Quality Index will be zero and there is a risk that this provider will always be at the end of the routing list. However, there are methods to temporarily assign a higher Quality Index to providers with no, or only a few, calls.

One option is to automatically place such Providers at the top of the list so that these providers can gather enough calls for a quality calculation. This way is more straightforward and easier to manage compared to the formula manipulation outlined below, which must be employed when there is no option to move providers without calls to the top of the routing table.

Let’s analyze a situation in which we are routing calls by ASR (for the last 100 Calls) and add a new provider. In this case, our Quality Routing Formula is:


Quality Index (QI) is ASR. The provider with the higher ASR will be dialed first. If we add a new provider, it will have an initial QI = 0 (ASR = 0) and it will be at the end of the routing list. Now, let’s modify our Quality Routing Formula by including the TOTAL_CALLS variable:

QI = ASR + 100 * (100 - TOTAL_CALLS)

Now QI will depend not only upon ASR but also upon Total Calls. If the provider has 0 calls, then the formula is ASR (0) + 10,000. However, when the provider has 100 Calls, the formula reverts back to ASR. Note that the number 100 here is chosen so that the variable TOTAL_CALLS will have a minimum value of 0 and a maximum value of 100. Thus, when every Provider makes 100 or more calls, our modified formula will represent only ASR. In this way, we can force all providers to be dialed at least N times (similar to a round-robin algorithm) and, after enough calls are accumulated, we can do routing by quality.


Quality Based Routing, or Adaptive Routing, is a powerful but quite expensive way to route calls. It can be used in various scenarios by constructing differing route types. Its benefits include powerful custom-made logic that allows system admins to route calls based on very specific needs in situations where other types of routing cannot help. It is important to note that this type of routing is very taxing on systems, and it can have an impact on performance. So, it is advised that you use it in special cases, once you have properly weighed all the pros and cons of this type of routing.

Leave a Reply

Your email address will not be published. Required fields are marked *