A dial plan essentially describes the number and pattern of digits that
a user dials to reach a particular telephone number. Access codes, area codes,
specialized codes, and combinations of the number of digits dialed are all part
of a dial plan. For instance, the North American Public Switched Telephone
Network (PSTN) uses a 10-digit dial plan that includes a 3-digit area code and
a 7-digit telephone number. Most private branch exchanges (PBXs) support
variable length dial plans that use 3 to 11 digits. Dial plans must comply with
the telephone networks to which they connect. Only totally private voice
networks that are not linked to the PSTN or to other PBXs can use any dial plan
they choose. It is analogous to a static routing table in a router. Cisco
CallManager Dial Plans are vastly improved in order to allow much greater
scalability, flexibility, security, and ease of use. They require a significant
amount of planning, in order to avoid the need to make drastic changes in the
future. This document helps explain the Dial Plan concepts, basic call routing,
and planning considerations. Several examples are presented to illustrate these
Many of these concepts that relate to the Dial Plan are explained
through examples in subsequent sections. Here are basic definitions of the
terms as they apply to the Cisco CallManager.
Directory Number (DN)—The DN is the phone number of an
end device. It can be a number assigned to an IP phone, a Cisco IP SoftPhone, a
fax machine, or an analog phone attached to a gateway. Examples include 1000,
24231, and others.
Route Pattern—In Voice Over IP (VoIP), route patterns
are the equivalent of static routes. The only difference is the route patterns
point to E.164 numbers instead of the IP address. The Route Pattern is a
specific number or, more commonly, a range of dialed numbers that are used to
route calls to a device directly, such as a DT-24+ or a voice-capable router,
or indirectly through a Route List. For example, 1XXX
signifies 1000 through 1999. The X in 1XXX
signifies a single digit, a placeholder or wildcard. There are other such
placeholders that are to be introduced later, such as @,
., and !). A Route Pattern does not have to
be unique within a Partition, as long as the Route Filter is different. In
general, a Route Pattern matches the dialed number for external calls, performs
digit manipulation(optional), and points to a Route List for routing.
Route List—Formerly called Route Point, the Route List
allows Cisco CallManager to hunt through a list of Route Groups in a configured
order of preference. A Route List consists of an ordered list of Route Groups.
Route Lists expand the Route Groups concept and allow the user to order and
prioritize your route groups. Multiple Route Lists can point to the same Route
Groups. A Route List chooses a path for call routing and points to prioritized
Route Group—Route Groups and Route Lists work together
to control and enhance external call routing. A Route Group is a list of one or
more gateways, or ports on gateways, that are seen as equal access. It is
analogous to a trunk group in traditional PBX terminology. For instance, one
can have two Primary Rate Interface (PRI) circuits to the same carrier that can
be used arbitrarily. A gateway, or a particular port on a gateway, can only be
added to one Route Group.
Device—A device, in this sense, is a gateway that is
Skinny-based (DT-24+, AS/AT, or Catalyst 6000 gateways), MGCP-based (VG200), or
H.323-based (all Cisco IOS® gateways and other Cisco CallManagers). These are
all devices to which a Route Group can point. They do not include Skinny-based
or H.323-based endpoints, such as IP phones or NetMeeting clients.
Translation Pattern—A Translation Pattern is used in
order to translate called (Dialed Number Identification Service [DNIS]) and
calling (automatic number identification [ANI]) numbers before the call is
routed. For example, you can have calls come into a set of numbers 919
392-3XXX that must be translated to a set of IP phones that are in the
2XXX range. In Cisco CallManager, you set up a Translation
Pattern for 919 392-3XXX that changes the leading 919 392-3 to
just 2, while the rest of the digits are left intact. Then, the call is routed
to the appropriate IP phone. Translation Patterns are used only for true
translations and must not be used as a simple way to strip or prefix
Route Filter—A Route Filter can be used not only to
restrict dialing but also to identify a subset of a pattern with a placeholder,
when the @ placeholder is used in the North American Dialing
Plan. Cisco CallManager identifies tags in each number, International-Access,
Area code, and Office-Number. For example, you can use it to block 900 area
codes. It can also be used in conjunction with Partitions and Calling Search
Spaces in order to set up complex rules. For example, you could set up Route
Filters that allow an Executive user group to dial any number, which includes
international numbers, but restrict a Staff user group to only local numbers or
long distance calls and restrict a Guest user group to only dial local numbers,
911, and 800 numbers.
Partition—A Partition is a logical group of Directory
Numbers and Route Patterns with similar characteristics for reachability. For
simplicity, these are usually named for their characteristics, such as
"NYLongDistance" and "NY911." When a DN or Route Pattern is placed into a
certain Partition, it creates a rule about who can call that device or Route
Calling Search Space—The Calling Search Space is a
group of Partitions to search, when you make a call, that defines what numbers
a device can call. For instance, an IP phone number that has an Executive
Calling Search Space when it initiates a call might have "NYInternationalCall,"
"NYLongDistance," "NYLocalCall," and "NY911" Partitions available to search. An
IP phone number that has a Guest Calling Search Space can only be allowed to
search "NYLocalCall" and "NY911". If that number tries to dial an international
number, it does not find a match and the call is not routed. The Calling Search
Space defines what Directory Numbers and Route Patterns can be called.
Note: In terms of call routing, the main differences between Cisco
CallManager 2.x and Cisco CallManager 3.x or 4.x are the concepts of Partitions
and Calling Search Spaces and the replacement of the term "Route Point" with
the term "Route List."
Hunting—Allows a call to be directed to a list of line
groups where each group can independently use one of three algorithms, known as
broadcast, top down, or circular:
Hunting commences when a hunt pilot number associated with a hunt
list is called.
The hunt pilot can be called directly or can be reached through
While hunting, the forwarding fields of the hunt parties are ignored.
The determination of which phone to ring next is determined by the line groups
within the hunt list.
Note: In Cisco CallManager Release 4.0, hunting stops either when one of
the hunt parties answers the call or when the hunt list is exhausted. When
hunting stops due to exhaustion, the caller receives a reorder tone or an
Call Forwarding—Allows users to specify how calls to
their numbers can be redirected when a user fails to answer a call in a
specified time interval, known as Call Forward No Answer, or when the user is
busy, known as Call Forward Busy.
Cisco CallManager performs Closest-Match Routing. This function is best
explained in the examples in this section. If you try to troubleshoot a Dial
Plan problem, first read the Troubleshooting
section of this document before you enable any tracing.
The N placeholder is no longer permitted in Cisco
CallManager 3.x and 4.x. Use [2-9] instead.
When you configure for a secondary dial tone, remember that you do
not hear the dial tone until the Route Pattern is unambiguous. The
. has nothing to do with the secondary dial
Make sure that you do not use 9 as any telephone number, or
additional digit collection is required before tone to 9.@
numbers is provided.
Digit Analysis is performed as a user dials a number and the router
interprets the digits. For example, when a user dials 1000, it can match a
pattern configured in Cisco CallManager that is 1XXX, or
100X, or 1!. There are a number of special
characters that can be used to signify a range of dialed digits, as shown in
A digit that is interpreted as its literal
0 matches 0, 1 matches 1,
2 matches 2, and so forth
Any single digit in the range 0 through 9.
X matches 0, 1, 2, 3, 4, 5, 6, 7, 8, or
Any single digit in the range m through
[4-9] matches 4, 5, 6, 7, 8, or 9
Any single digit outside of the range m
[^4-9] matches 0, 1, 2, 3, #, or *
One or more digits in the range 0 through
9. This placeholder can be very useful for variable length Dial Plans. The call
is not routed until the # key is pressed or the inter-digit
timeout expires (default 10 seconds).
9! matches 91, 911, or 912342, but not 9 only,
as ! requires at least one digit for a match.
Same as ! except that it can match
zero or more digits.
9? matches 9, 91, 911, or 912342
One or more of the previous digits or a
9+ matches 99, 999, or 9999
9X+ is equivalent to 9! and
A portion of the number that can be stripped after a pattern is
Match Pattern: 9.8XXX
Discard digits instruction (DDI):
If the user dials 98111, the PreDot DDI is applied to the
9.8XXX route pattern, which strips the “9” from the dialed
digits and sends only the 8111 to the PBX.
References the North American Numbering Plan (NANP), which is
actually a macro that contains about 300 individual patterns. You can use this
placeholder to apply filtering rules, because an @ makes “Area
Code” and “Service Code” available to filter checks.
Additional information on the tags is in the
NANP Tags section of this document.
[2-9]11 matches 211, 311, 411, 511, 611, 711,
811, or 911
[2-9]XX XXXX matches 7-digit local
[2-9]XX [2-9]XX XXXX matches 10-digit local
1 [2-9]XX [2-9]XX XXXX matches 11-digit long
011 3[0-469] ! matches international
There are two common problems that occur when you use the
When a user dials a 7-digit number, the user has to wait for the
inter-digit timeout to expire or has to press the #
Go to the Route Filter window and add a filter with
LOCAL-AREA-CODE DOES-NOT-EXIST AND END-OF-DIALING
DOES-NOT-EXIST. Apply it to your Route Pattern that contains the
Users cannot dial a number where the office code is
X11 (1 + Area Code + Office Code + Extension), for example the
11 in 1 800 611 4215 or 1 919
The workaround is to add another Route Pattern such as 9.1
[2-9]XX [2-9]11 XXXX to the same gateway or route list as the
9.@ pattern. Do not forget to add the same digit discard
instructions, if any.
These are some sample Route Patterns:
1200 through 1299 only
1326, 1356, 1366, 1376, 1386 only
1306, 1316, 1326, 13*6, 13#6 only
Any number that begins with 13, that preceeds one or more
digits, and that ends with #. 135# and 13579# are example matches.
Consider this Dial Plan:
1200 through 1399 only
1300 through 1349 only
Any number that begins with a 13 that preceeds one or more
If the user dials 1111, it waits for all four digits to be entered
before it routes the call.
Before you enable any tracing for Dial Plan issues, read the
Troubleshooting section of this
Set User Mask Bit 5 on the user mask to debug Dial
Plan problems. Set User Mask Bit 11 for a System Trace in
order to see further digit analysis information.
Caution: Set Bit 11 with caution, as it can create a load that affects
performance on a heavily used system.
In order to see what IP address to which a tcpHandle maps, capture a
keepalive message, which happens every 30 seconds, with a network analyzer. The
tcpHandle for a phone remains the same as long as it is registered with a Cisco
The StationD messages are always from
the Cisco CallManager to the IP phone. The
StationInit messages are from the phone to the
The Instance is the line instance for
that particular phone template. The Line(9)
refers to a Line button, as opposed to Hold
or some other type.
The next sample output is a trace snippet with only User Mask Bit 5
set. For the full trace (Bit 5 only) see the
Call 1000-1111 (Short) section of
this document. For the full trace with the System Trace also enabled, see the
Call 1000-1111 (Full) section of
Note: In this trace, tcpHandle 0x53563d0 is the calling
phone and 0x53294d8 is the called phone (DN=1111).
If the user dials 1211, it matches 1211 and
1XX. Because 1211 matches only one
potential dial string, while 1XX matches 200,
1211 is the pattern that is selected. This selection process
is the essence of closest-match call routing. See the
Call 1211 section of this document for a full
Serial Digital Interface (SDI) trace of this process.
If the user dials 1311, Cisco CallManager waits for the inter-digit
timer to expire. Because of the 13! pattern, there is the
potential that the user is not done entering numbers yet. Once the timer
expires, there are three matches: 1XX,
13[0-4]X, and 13!. Because
1XX matches about 200 patterns, 13[0-4]X
matches about 50 patterns, and 13! matches an infinite number
of patterns, 13[0-4]X is selected. See the
Call 1311 (Full) section of this
document for an SDI trace of this, and see the Call 1311 (Short) section of this document
for a trace with only Bit 5 set for debugging.
Cisco CallManager searches through the Calling Search Space of a line
instance and of the device with which the line is associated.
If a device is not part of a Partition, it is said to be part of the
Null or default Partition. Every user must be able to call that device. The
Null Partition is always searched last.
If you dial an outside number that matches a 9.@
pattern and it takes ten seconds before the call goes through, check the
filtering options. By default, with a 9.@ pattern, when a
7-digit number is dialed, it waits 10 seconds. You need to apply a filter to
the pattern that says LOCAL-AREA-CODE
After Cisco CallManager is upgraded, users receive a different
secondary dial tone when 9 is pressed for an outside line. In
order to resolve this issue, use the Cisco IP Telephony Locale Installer plugin
from the Cisco CallManager Adminstration page. Or, this can be downloaded from
Unified Communications Locale Installer
(registered customers only)
When you dial 9 and then a 0 in order to reach the local operator,
if the call times out and goes to fast busy, it can be an issue with route
patterns that overlap. If you have the 9.@ route pattern, 9.0 overlaps with the
9.@ . So, when you try to dial 9 in order to get an outside line, then 0 for
the operator, the dial patterns expect you to dial more digits like the
international number (011). Since you do not input any more digits, the call
times out and goes to fast busy. In order to resolve this issue, add a new
route pattern in the Cisco CallManager as shown here:
!--- Discard pre dot (if needed with your PSTN connection).
When you need to reach the operator, dial 9, and
then 0, and then the pound key (#) in order
to route the call immediately and not wait for more digits.
It is not possible to suffix a number on a called party number using
MGCP gateways because the called-party transformation works on XOR mechanism
and there is no specific way to suffix a number as the logical relevance of
each digit is from left to right. Therefore, you can only prefix. The only way
to achieve this is using H323 gateway as it has the intelligence to mix-up
calling/called party transformations and do the translations as needed.
It is not very easy to see a clear call flow to troubleshoot Dial Plan
problems with the SDI trace facility. Before you use the SDI trace facility,
try to apply these guidelines:
First, obtain this pertinent information:
What is the Directory Number that originates the
What is the Calling Search Space of this Directory Number? This
information can be found under the line configuration.
What is the Calling Search Space of the device on which the Directory
Number is configured? Make sure that you identify the correct device. Since
Cisco CallManager supports multiple line appearances, you could have a
Directory Number on multiple devices.
Note the Calling Search Space configured on the device. If an IP
phone originates the call, remember that a particular line and the device with
which the line is associated both have Calling Search Spaces. They are combined
when a call is made. Suppose line instance 1000 has a Calling Search Space of
AccessLevelX, and the IP phone that has extension 1000 configured on it has
AccessLevelY as its Calling Search Space. When a call is made from that line
appearance, the Cisco CallManager searches through Partitions contained in
Calling Search Space AccessLevelX and
What Partitions are associated with the Calling Search
What is the Partition of the device to which they want, or do not
want, the call to go?
What is the number that is dialed?
Note if and when they get a secondary dial tone at any stage. Also,
what do they hear after all of the digits have been entered. Is it a re-order
or fast-busy? Do they get the progress tones before they expect to hear
anything? Make sure they wait at least ten seconds after they press the last
digit, because they can have to wait for the inter-digit timer to
Then, complete these steps:
Look through the Route Plan Report in order to examine all of the
Route Patterns for the Partitions that are in the Calling Search Space for the
If necessary, add or modify the Route Patterns or Route
If you can find the Route Pattern to which the call is sent, note the
Route List or gateway to which the pattern points.
If it is a Route List, check which Route Groups are part of the list
and which gateways are part of the Route Groups.
Verify that the applicable devices are registered with Cisco
Watch out for the @ placeholder. This is a macro
that can expand to include many different things. It is often used in
combination with filtering options.
When you design a Dial Plan, it is recommended that you use a 4-digit
or 5-digit local Dial Plan. If you use anything less, it could be difficult to
integrate Cisco Unity voice mail services.
Remember that Cisco CallManager or clusters have no way to share Dial
Plans. They are independent units. All Dial Plan considerations and design
issues, such as voice mail and conferencing or transcoding issues, must be
taken into account for each individual Cisco CallManager or cluster.
When you construct a Dial Plan, the goals must be to keep the plan as
simple as possible for the end user and to use the local PSTN gateway access
code—such as 9 or 0—for locations that must be reached over the PSTN as well as
for calls that might traverse the IP WAN. If the IP WAN becomes unavailable or
has insufficient resources, it must be transparent to the end user.
The first consideration when you implement a Dial Plan is the network
topology. If you have multiple sites, then you need to determine if each site
has its own Cisco CallManager or if they are controlled through one centralized
In centralized call processing, one Cisco CallManager or Cisco
CallManager cluster controls all of the IP Telephony devices. The benefit of
this is that there is only one centralized point of administration. The
disadvantage is that all IP phones and Skinny devices must be able reach this
Cisco CallManager in order to make any call. So if IP connectivity is
disrupted, for example, if the WAN goes down, users can be left stranded
without the ability to make a call. Life-line services, such as 911, must be
provided through some other mechanism. For this option, location-based call
admission control is likely preferred.
From the previous diagram, you can see that it is important to remember
that—when 9 is used to dial out—the Cisco CallManager selects a gateway based
on the geographical location of the user. You can also set up a facility such
that, if one of the gateways does not have any free resources to make a call
through the PSTN, it uses a gateway at a remote site. Another consideration is
to allow users to make long distance calls through the PSTN between the sites,
if there is not enough bandwidth on the IP WAN to have a good quality Voice
over IP (VoIP) call. Other things to consider are whether or not everyone has
access to make calls, whether long distance, international, or interoffice. In
order to avoid complications in the future, it is best to set up some basic
user levels to start. It is then much easier to change rights. Because user
access involves the set up of Partitions and Calling Search Spaces that are
then applied to individual DN and devices, these user levels must be thought
through very carefully. Later changes can result in the need to modify every
device or DN.
In distributed call processing, each IP phone or Skinny device is
registered to a local Cisco CallManager or Cisco CallManager cluster. If each
has a local gateway to get to the PSTN, even if the IP WAN goes down, a user
still can call local numbers and call users at the other site across the PSTN.
Only Cisco IOS-based Gatekeeper Call Admission Control is feasible here.
Each Cisco CallManager maintains its own Dial Plan and must therefore
be managed and administered separately.
Suppose a user in RTP tries to dial 9 to get an outside PSTN line, but
no circuits are available. It is inadvisable to route the call to a NY Cisco
CallManager because the Dial Plan in NY can be inapplicable to a user that
places a call in RTP. In such a situation, for instance, the RTP user must dial
1 plus the RTP area code to place a local call to RTP, but there is no way for
the Cisco CallManager server to inform the user of this requirement. Although
it might be possible to do called party transformations for every three digit
prefix in the RTP area (to prepend the required 1 + area code) this is not a
Further, each Cisco CallManager (cluster) needs to have its own voice
mail (Cisco Unity) instance. For this deployment model, a gatekeeper is
required for admission control. Each site must have Cisco CallManager, voice
mail, and digital signal processor (DSP) resources for transcoding, if
compression is used across the WAN, and conferencing.
Choose descriptive Partition Names. It is very difficult to
troubleshoot a system that cannot place long distance calls when the Partition
Names are meaningless terms like widget and
Keep in mind that features such as Call Park and Call Pickup are also
part of a Partition. They are usually left to the Null or default Partition, so
everyone has access to them. They can also be assigned to a basic user level,
such as NYInternalCalls in the examples
later in this document.
Blocking access to certain area codes and numbers is accomplished
with a separate Partition, such as Block900 in the
examples later in this document, for each
pattern that must be denied access, such as 9.@ where
AREA-CODE=900. Because this is a closer match than a simple
9.@ where AREA-CODE EXISTS, and the Route Pattern is
configured to block instead of route anything that matches this Pattern, the
These are some of the most common items that need to be considered
before you start any configuration:
What type of Call Admission Control do you plan to use: Cisco IOS
gatekeeper or location-based?
Has network Quality of Service (QoS) on the network been implemented?
(Infastructure improvements to support real-time traffic, prioritization
mechanisms, traffic-shaping, and fragmentation, if
Are there existing PBXs in place that need to be interfaced, or are
you connecting to a Local Exchange Carrier (LEC) or Inter-eXchange Carrier
(IXC)? If so, what signaling mechanism do you plan to use: PRI, Q.SIG, or
channel associated signaling (CAS)? Keep in mind that not all of these provide
the same functionality (such as ANI or CallerID).
If you connect to a PBX, make note of any access codes that are
required to call outside calls (local and long distance), as well any special
access codes for extensions behind the PBX.
If you have multiple locations controlled by a single Cisco
CallManager (such as in the centralized call
processing model), decide if you need to have any of these
Local call fallback—If your local gateway is
unavailable, route the call to a gateway at a remote site and make a long
Toll bypass fallback—If a remote gateway is
unavailable to make a local call in the remote area-code, route the call as a
long-distance call through your local gateway.
Long distance and international call fallback—If a
local gateway is unavailable to make a long distance or international call,
route the call through a gateway at a remote
Make note of all area codes in each location and whether or not they
have 7-digit or 10-digit dialing.
Note the range of direct inward dial (DID) numbers that are assigned
to the circuit(s) at each of the remote sites. Also note the 7-digit or
10-digit number that are used as the main access number (if any) at the
Make a note of the extensions serviced by each PBX
(1XXX or 29XX).
What do you want to present to the PBX or PSTN as the Caller ID:
attendant number, full number, or directory number?
List any special user groups that you want to differentiate (the
examples later in this document include
NYLocalCalls, NYTollFreeCalls, NYLongDistanceCalls, NYInternationalCalls,
Block900Calls, RTPCallsOnly, NYInternalOnly, and NY911Calls). These special
user groups become the Partitions and allow you to create access groups and
levels. Make sure to consider these groups carefully, as you save a lot of time
in the long run with well-planned groups.
Note: Make sure that you use descriptive names, including the site name
and access privilege, even if you currently do not anticipate having multiple
sites. For most scenarios it is recommended to use Partition Names in the form
example, use Partition Names like "CiscoRTP911Calls" or
Create "user access levels" that group the Partitions in the previous
steps together. These become Calling Search Spaces, as shown in this table of
Calling Search Space
Guest users, Lobby phones
Devices can only call 911, NY internal calls, or toll-free
Executive-level group that has all the rights of NYManager,
as well as rights to make long distance calls from RTP—if NY is unavailable for
some reason—and international calls from NY or from RTP, if necessary. Calls to
900 numbers are blocked.
Typically, in North America, it is recommended to use
1XXX or 29XXX in order to designate internal
PBX extensions or other IP phones. For external calls, the @
placeholder would be used after the access code, such as 8.@
Once you have taken all of these considerations into account, it is
often easier to use the Dial Plan Wizard in order to initially develop a
complex Dial Plan. Complete these steps in order to use this tool:
Start with a fresh machine that does not have any Partitions, Calling
Search Spaces, Route Lists, Route Groups, Route Filters, or Route Patterns
installed. If you already have created some, it is best to delete them
Create all of the gateways: H.323 gateways—which are Cisco IOS
routers or, in a distributed model, are
other Cisco CallManagers—and other analog or digital
Go to the Route Plan Wizard and complete the instructions. Review the
previous list in order to prepare, in advance, to answer the questions. The
Dial Plan is created automatically.
Note: The Wizard is not able to set up filtering. It is very easy to go
back and add a Block900numbers filter, after the Wizard has created everything