Demystifying Digits Analysis and Closest-Match Routing On Cisco Unified Communication Manager

Cisco Unified Communications Manager uses closest-match logic to select the best pattern.

When multiple matching patterns are present, the best pattern is selected based on two factors:

It matches the dialed string.


It matches the fewest strings other than the dialed string.

For example, the call-routing table includes the patterns 1XXX, 12XX, 121X, and 1234.

When User A dials the string 1200, Cisco Unified Communications Manager compares it to the patterns in its call-routing table. In this case, there are two potentially matching patterns: 1XXX and 12XX. Both of these patterns match the dialed string, but 1XXX matches a total of 1000 strings (from 1000 to 1999), whereas 12XX matches only 100 strings (from 1200 to 1299).

Therefore, 12XX is selected as the destination of this call.

When User B dials the string 1212, there are three potentially matching patterns: 1XXX, 12XX, and 121X. As mentioned previously, 1XXX matches 1000 strings and 12XX matches 100 strings. However, 121X matches only 10 strings. Therefore, 121X is selected as the destination

of the call.

When User C dials the string 1234, there are three potentially matching patterns: 1XXX, 12XX, and 1234. As mentioned earlier, 1XXX matches 1000 strings and 12XX matches 100 strings.

However, 1234 matches only one string (the dialed string); therefore, 1234 is selected as the destination of this call.

Let’s take another example:

1[3-5]XX matches 200 numbers, and 15! stands for unlimited possible numbers.

When dialing 1515, the route pattern 15! is the best match and it’s used to route the call instead of the route pattern 1[3-5]XX.

15! Route Pattern matches unlimited Digit Strings, but for the purposes of Closest Match Routing in this case, this matches 100 Digit Strings because you only consider the number of potential strings with the given number of digits dialed.

Another example with two Route Pattern 2! And 2XXX:

Route Pattern the 2! pattern matches an infinite number of digits because the pattern matches a variable number of digits but for the purposes of closest-match routing, digit analysis only evaluates the number of potential matches given the number of digits dialed. In other words, if a user dials 2001, digit analysis treats the 2! as 2XXX, which means it also matches 1000 possible numbers.

In this scenario, it is non-deterministic which means that you don’t know which Route Pattern will be used to route the call. To avoid this kind of behavior, you can use partitions and calling search spaces to give priority to one or the other, by the way it is not a good practice to have such ambiguity in your dial plan.

Another example with two Route Pattern 20X1 and 200X.

The dialed number 2001 matches both Route Pattern 20X1 and 200X, each matching 10 numbers. Which one does digit analysis choose? In this scenario, again it is non-deterministic, so we don’t know which one will be used.

Conclusion, we need to take into consideration the overlapping patterns in order to know which pattern is a better match, in other how the call is routed.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s