Frequent visitors to my site should know that I am a voice rock star on top of my other regular networking/wireless/server/virtualization/etc roles. One of the things I have tried to do since the very beginning of my time in voice is avoid using unnecessary shortcuts and make things work right the first time. This is no different when it comes to the likes of route patterns in Cisco Unified Communications Manager (CUCM). I speak of course of the infamous “@” route pattern.
When configuring a route pattern in CUCM, I have seen some documentation suggest that you configure your route pattern using the “@” wildcard and be done. In CUCM, the “@” is a wildcard macro that contains most of the numbering plan for North America, also known as NANP. In North America, we use 10-digit telephone numbers that are composed of a 3-digit area code followed by a 7-digit local number. The first digit of the area code cannot be a zero or a one, and the first digit of the local number cannot be a zero or a one either. The NANP format is usually represented as NXX-NXX-XXXX, where N is a number between two and nine, and X is any number. The “@” wildcard takes this information and builds several route patterns in CUCM than can match numbers that you might want to dial. However, “@” has some additional issues that have to be addressed. Often, you must configure your local area code with a route filter to allow the system to recognize when a local call is dialed. You also will need to configure things like country code and possibly even end-of-dial strings to help calls be terminated quickly. If these items are not configured properly, CUCM will have to wait for the interdigit timeout to expire before deciding to send the dialed digits to the PSTN gateway. By default, this interdigit timeout is 15 seconds, which can be an eternity to a user.
In my career, I have never used the “@” wildcard. I have always configured my own route patterns. To me, it looks much cleaner and is easier to troubleshoot rather than having to unwind a shortcut macro. For the following examples, “9” is used as a pre-dot PSTN access code and is assumed to be stripped at some point before arriving at the PSTN.
911 and 9.911 – Emergency services route patterns. You need to have these or your people can’t dial emergency services. If you’d like to read more about my reasons for configuring both route patterns, check it out over here.
9.[2-8]XX – Service codes. These are defined by NANP to provide 3-digit access to special services. There is no 111 access code. I don’t include 911 in this configuration due to the explicit urgent priority pattern configured explicitly for emergency services.
9.1[2-9]XX[2-9]XXXXXX – Long Distance. Most long distance providers in the country use “1” to signal that a long distance call outside of your area code is being made. This route pattern looks for an 10-digit number prefixed with “91” The “1” is sent with the number to signal a long distance call. This is pretty straight forward and will likely be required on all route plans.
9.011! – International calls. I still configure international call route patterns even if my customers don’t care for them. I limit their use via Calling Search Spaces (CSS). It’s better to have the route pattern configured and available to turn on at a moment’s notice in case the CxO starts asking why he can’t call London or Tokyo. I use a “!” at the end of the route pattern to signal that there could be any number of digits after “011”, which is the international access code for the United States. The caveat is that you must wait for the interdigit timeout to expire before the call is dialed. You can add an octothorpe (#) after the “!” to signal that you are done dialing digits, but if that is your only route pattern, you must dial the # or the call will not go through.
The remaining two route patterns that get configured are a little trickier and often cause issues on the system depending on how they are configured. Local calling is different depending on where you live. Some metropolitan areas are still on the small side, so you are allowed to dial only seven digits to complete a call. This is true where I live in Oklahoma City, which is totally contained in the 405 area code. In other areas, such as Dallas/Ft. Worth or New York City, there are so many telephone numbers that you must use a full 10 digit number to make a call. As more and more phones are sold and activated, especially cellular phones, the move to 10-digit dialing for most everyone is inevitable. Until the day when 10 digits are universal, there are somethings to keep in mind for route patterns.
9.[2-9]XXXXXX is used for 7-digit dialing for local calls. 9.[2-9]XX[2-9]XXXXXX is used for 10-digit local calling. If both of these route patterns are configured on the system at the same time, there can be issues. In the best case, users must wait for the interdigit timeout to expire on local calls, since when only 7 digits are dialed CUCM is still waiting to see which route pattern to match for the call to complete. In the future, there will be no use for the 7-digit pattern, and only the 10-digit pattern will be present. Until that time, here’s a trick you can use to help avoid the interdigit timeout for local calls.
Configure the 7-digit pattern for your local calls. If you live in an area like I do where some calls inside your area code can be dialed at 10-digit and not be long distance, i.e. not prefixed with a “1”, then configure a 10-digit route pattern with the explicit area code set, such as 9.405[2-9]XXXXXX. You don’t need to configure a 10-digit route pattern in this case, since any non-local call outside your area code will require a “1” to dial. This will help you avoid the interdigit timeout on local calls, which should keep your users from rioting. When your city or county or area code finally implements an overlay area code and starts requiring the use of 10-digit dialing, simply remove the explict area code route pattern (9.405[2-9]XXXXXX in the above example) and the 7-digit route pattern and configure the 10-digit route pattern, 9.[2-9]XX[2-9]XXXXXX.
This should be enough to help you configure all of your NANP dialing needs without the horror that is 9.@. Much like the <none> partition, 9.@ is a dirty crutch that usually ends up doing more harm than good, especially when it comes time to troubleshoot odd behavior of route patterns and why one is being overridden by something you can’t even see. By having your route patterns explicitly configured, you not only gain more control over your dialing domain, but you also have the ability to block specific route patterns such as 900 numbers or those nasty Carribean international calls without fear that a crusty old shortcut is still in your system causing you grief and and costing you money.