Optimization Tips
You can use some of the tools discussed earlier to fine-tune the network and optimize it for better performance. This section includes some tips to optimize the IPT network.
Time Synchronization
You should synchronize with a centralized network time server the clock on all the IPT devices, such as CallManager, Unity, and other application servers and gateways. This ensures that all the trace events that are logged in trace files and Event Viewer have a consistent date and time stamp. When troubleshooting a problem, you often need to collect the traces logs from multiple devices. Having the same time synchronization source helps you to accurately correlate the information from multiple devices so that you can identify the sequence of events that occurred based on the date and time the problem occurred. For more information on procedures to synchronize the clock, refer to the following document:http://www.cisco.com/en/US/partner/products/sw/voicesw/ps556/products_configuration_example09186a008009470f.shtml
CallManager Services
Turn off unnecessary services on CallManager; activate only the services that are absolutely needed. This frees up more memory for the other processes. For example, if you are not using the software media resources such as conference, transcoding, and Music on Hold, you can turn off the Cisco IP voice Media streaming application. In addition, because the Publisher database is the only read/write database, you can make changes and view the configurations if you have the access to the CallManager Administration and Serviceability pages on the Publisher server. Hence, you can set the IIS service to Manual start on the subscriber servers.
Name Resolution
Use the local name resolution methods by employing hosts and LMHOSTS files (located in the C:\Winnt\System32\drivers\etc directory on all the servers) to resolve the names to IP addresses. Update these files if you add or remove any servers in the cluster. The local resolution helps to keep up the communication between the servers if the DNS server in the network fails. Do not enable the DNS service on CallManager or any other application servers, because this service consumes a considerable amount of CPU resources in answering the DNS resolution requests received from various endpoints. Use an existing DNS server in your network to provide the DNS service.
IP Addressing
Use the IP address instead of the host name to define the server in the CallManager Administration page. If you use CallManager server names here, the configuration files that are generated for IP phones will have DNS names instead of IP addresses. Hence, IP phones will have to contact the DNS server and resolve the name of the server before proceeding to the registration. If the DNS server does not respond to the queries from IP phones, the IP phones cannot complete the registration process.
Subnetting and VLANs
Create different VLANs for the CallManager servers in the cluster. This prevents the following:A broadcast storm caused by a faulty NIC bringing down the servers in the same broadcast domain; using different VLANs for the servers in a cluster prevents this scenario.Spread of viruses from one server to another.
Proactive Problem Identification and Resolution
Study the reports generated by RTMT. Analyze them carefully and take proactive measures to prevent repetition of the top issues. For example, Figure 9-14 shows various alerts generated in a day. The graph shows 26 CriticalServiceDown alerts in a day, which is not a good indication. You should check the details of those alerts from the RTMT alert logs and check which services had the problems.
Figure 9-14. RTMT Top 10 Alerts from Alert Report
Chapter 1, "Cisco IP Telephony Solution Overview," for information on dial plan weights and device weights.
Duplex and Speed Settings
When deploying Cisco IP Phones, use the Auto setting to negotiate the duplex and speed with the connected switches. By default, the switch port and the PC port on the IP phone are set to do auto-negotiation to configure the speed and duplex. Hence, no manual configuration on the IP phones is required.You should configure the Ethernet port on the closet switch and the NIC setting on the PC to do auto-negotiation. This configuration approach avoids negotiating mismatched speed and duplex settings and prevents voice-quality problems caused by interface buffer overflows and device connection timeouts with CallManager. Hard-code the NIC setting on the servers and on switch ports that connect the servers to 100/FULL. After you perform any upgrades on the servers, ensure that the configuration settings of the NIC on the servers are not changed.
Dial Plan Optimization
When you are designing the dial plan, keep it as simple as possible by following the tips recommended next to optimize the performance of CallManager.
Route Pattern Design
When implementing the dial plan, you can use explicit route patterns such as 9.[2-9]XX[2-9]XXXXXX or route patterns with the @ wildcard character along with route filters. Recall from Chapter 6, "Design of Call-Processing Infrastructure and Applications," that the @ wildcard character is a macro that comprises many route patterns, depending on the dial plan loaded in CallManager. By default, CallManager understands only the North American Numbering Plan (NANP). Beginning with CallManager 3.3.4, support for international dial plans has been added. Refer to the following document on Cisco.com for more information on supported international dial plans:http://www.cisco.com/en/US/partner/products/sw/voicesw/ps556/prod_configuration_guide09186a0080292f3133If you are deploying CallManager in a country outside North America, you can download the country-specific International Dial Plan file from the following URL and install it on all the servers in the cluster:http://www.cisco.com/cgi-bin/tablebuild.pl/IDPThe dial plan definition files are stored on the CallManager servers under the C:\Program Files\Cisco\DialPlan directory. By default, the NANP file contains the various route patterns that comprise NANP. For example, if you install an Australian Numbering Plan on the CallManager servers, you see an additional file called AUNP under the same directory. After you install the international dial plan, when defining the route patterns, you can choose which numbering plan the route pattern should use, as shown in Figure 9-15.
Figure 9-15. Choosing Numbering Plan for Route Pattern
[View full size image]

Partition Rules
When you create a directory number, route pattern, translation pattern, CTI port, or CTI route points, CallManager puts them in a <none> partition. It is a good practice to place all of them in their own partition. Leaving them in a <none> partition leaves room for toll fraud. Assume that you have a route pattern of 9.1[2-9]XX[2-9]XXXXXX in a null partition. All the IP phones, including lobby phones, have access to this route pattern and thus can make long-distance calls. This breaks your Class of Restriction policies. It also allows users to set Call Forward All to long-distance numbers and thus misuse the telephony network.
Calling Search Space Rules
Minimize the number of partitions and the length of the partitions as much as possible, because the number of characters allowed in the calling search space (CSS) is limited to 512 characters. As you know, the CSS is a list of partitions. Hence, lengthy partition names or a large number of partitions limits the number of partitions that you can have in the CSS. Also, shorter partition names improve performance because of faster string matches.In a multisite centralized CallManager deployment model, you can use the alternate Calling Search Space Design described in Chapter 6, "Design of Call-Processing Infrastructure and Applications." This uses the CSS on the line level and the device level to determine the effective calling restrictions on the IPT devices.
Prefixing the Digits in Missed and Received Calls
When an IP phone user receives an incoming call from the PSTN, the phone displays the digits sent by the PSTN in the missed and received calls options. This number does not include the access code (for example, 9 or 0) that is required if the user dials the external number. You can prefix the access codes and the long-distance access codes easily by using the following new advanced service parameters (under Clusterwide Parameters [Device - PRI and MGCP Gateway] section) for CallManager service, introduced in CallManager 3.3.3:National Number PrefixInternational Number PrefixUnknown Number PrefixSubscriber Number PrefixCallManager adds the prefix values defined in the service parameters to numbers in the missed and received calls directories based on the inbound Q.931 call type value.For example, in North America, for international numbers, you can prefix 9011 by configuring "9011" in the International Number Prefix parameter, and for national numbers, you can prefix 91 by configuring "91" in the National Number Prefix parameter. You likely want to keep the prefix for subscriber and unknown numbers blank. One limiting factor is that (at least in North America) Q.931 call types do not distinguish between local and long-distance numbers, so ten-digit local numbers will be dialed with a 91 long-distance prefix. Again, this is normally a nonissue because if you want to avoid the long-distance rates for the local calls, you can create an outbound translation pattern for the area codes that do not require you to dial 1 and remove 91 before sending the call to the PSTN.
Securing the Servers
It is critical to secure the call-processing servers and other application servers from viruses, worms, and denial of service (DoS) attacks. Chapter 6. discusses the best security practices. This section gives operational best practices to keep the servers up to date to prevent them from becoming potential targets for security attacks.
Operating System Hardening
Apply the operating system service packs and critical hot fixes regularly to prevent security attacks and thus harden the operating system. Upgrade the antivirus software on the servers as and when new versions are available.Cisco bundled a security script CCM-OS-OptionalSecurity.cmd beginning with CallManager operating system release version 2.6. The script is available in the C:\Utils\SecurityTemplates directory on the CallManager servers. You can optionally run this script only on the CallManager servers to harden the operating system.CautionBe aware that running this script on the CallManager servers that are integrated with other applications, such as Cisco IP-IVR and Cisco IPCC Express, is not supported. Refer to the Readme file in the C:\Utils\SecurityTemplates directory before making a decision to run this optional security script.
Cisco Security Agent
CSA is a distributed security software solution that helps prevent malicious behavior on CallManager and other application servers. The CSA solution is composed of several elements:CSA Software Agent Core endpoint technology that resides on servers and autonomously enforces local policies that prevent attacksCSA Management Console Core management application that provides a central means of defining and distributing policies, providing software updates, and maintaining communications to the agentsCSA Profiler Plug-in management application that provides the capability to build custom policies to protect new applications and tune and modify existing policies in live environmentsYou should install the CSA Software Agent on all CallManager servers as well as other application servers such as Unity, IPCC Express and so forth. You can download the CSA Software Agent for CallManager at no charge from the following URL:http://www.cisco.com/cgi-bin/tablebuild.pl/cmva-3desSimilarly you can download the CSA Software Agent for Unity from the following URL:http://www.cisco.com/cgi-bin/tablebuild.pl/unity3dRemember that each Cisco IPT application has it's own version of CSA Software Agent. Hence, make sure that you download and install the version that is specific to your product.
Service and Enterprise Parameter Fine-Tuning
Sometimes you have to fine-tune the CallManager service and Enterprise parameters, based on the size of your network and your requirements. The service parameters are stored in the SQL database and are replicated between the CallManager servers in the cluster. The default values are stored in the ProcessConfigDefault table, and running values are stored in the ProcessConfig table in the SQL database. However, some parameters are specific to a given CallManager server, and others are cluster-wide parameters. Changing a cluster-wide parameter affects the whole cluster operation. Previous chapters and this chapter discussed some of these service parameters in detail. Table 9-4 lists the other commonly changed service parameters. To access the service parameters, from the CallManager Administration page, go to Service > Service Parameters , and then select the desired service to display the associated service parameters.
Some of the services have advanced service parameters that are not displayed by default. To view them, click the Advanced button on the Service Parameters page.
Service Name | Service Parameter Name | Value (Default in Bold) | Purpose |
---|---|---|---|
CallManager Service | CDR Enabled Flag | False/ True | Set to True to enable logging of CDRs. |
Call Diagnostics Enabled | False /True | Set to True to enable logging of CMR records. CMR records help you to generate the reports through CAR, which helps you to troubleshoot the voice-quality issues such as delay and jitter. | |
Digit Analysis Complexity | Standard /Translation Pattern and Alternate Analysis | To troubleshoot dial plan issues, change to Translational Pattern and Alternate Analysis. Setting this option creates detailed digit analysis in CCM traces. | |
Unknown Caller ID Flag | True /False | The Unknown Caller ID Flag parameter enables the parameter enables the Unknown Caller ID and Unknown Caller ID Text parameters. If this parameter is set to True, the information provided in the Unknown Caller ID and Unknown Caller ID Text parameters is displayed to called parties for inbound calls that are received without caller ID information. | |
Unknown Caller ID | Blank | ||
Unknown Caller ID Text | Blank | ||
Caller ID | Blank | This parameter affects the caller ID sent to the PSTN from the CallManager for outgoing calls for all gateways. If you set this parameter to 4082349999, the external callers see this number when you make outbound calls from any device configured in the CallManager. This setting overrides any digit manipulation performed for the calling party number at the route pattern or route list level. Changing this parameter requires a restart of CallManager Service. | |
Change B-Channel Maintenance Status 1 to 5 | Blank | You can use these five parameters to take one or more B channels in a T1 PRI/E1 PRI circuit. This might be required when doing maintenance on the gateways or circuits. Click the "i" button on the Service parameters page to obtain more information on using these parameters. | |
H323 Network Location OffNet | False/ True | Set this to True if incoming calls come via an H.323 gateway and require IP phones to ring differently when receiving internal calls and external calls. | |
MGCP Network Location OffNet | False/ True | Set this to True if incoming calls come via MGCP FXS/FXO ports and require IP phones to ring differently when receiving internal calls and external calls. | |
MGCP Network Location OffNet for E1 and T1 | False/ True | Set this to True if incoming calls come via an MGCP T1/E1 and require IP phones to ring differently when receiving internal calls and external calls. | |
Automated Alternate Routing Enable Flag | False /True | Set this parameter to True to enable AAR. | |
Database Layer Monitor Service | Max CDR Records | 1500000 | By default, 1.5 million records are stored in CDR before purging the data. Changing this value is not required often. However, if you need to store more records, you can change this parameter. Note: Increasing this value increases the size of the CDR database, which then occupies more hard disk space and increases the amount of time required to complete the backup operation. |
Extension Mobility | Enforce Maximum Login Time | False /True | Use the Extension Mobility parameters to control the behavior of the Extension Mobility feature. Set this parameter to True to specify the duration, a user session can be active on an IP Phone. The value of the duration is specified in the Maximum Login Time parameter. |
Maximum Login Time (Hours:Minutes) | 8:00 | Use this parameter to specify the duration of the user session. | |
Maximum Concurrent Requests | 3 | ||
Multiple Login Behavior | Multiple Logins Not Allowed /Auto Logout/Multiple Logins Allowed | This parameter specifies the maximum number of login or logout operations that can occur simultaneously. This maximum prevents the Extension Mobility service from consuming excessive system resources. Depending on the the number of users, you can set this parameter to any value between 1 and 100. | |
Alphanumeric User ID | True/ False | This parameter specifies whether the user ID to be used is alphanumeric or numeric. Valid values specify True (user ID is alphanumeric) or False (user ID is numeric). You must restart the Cisco Tomcat Service for any changes to this parameter to take effect. | |
Remember the Last User Logged In | True/False | This parameter specifies whether the user ID of the last user logged in on an IP phone is remembered by the extension mobility application.For security reasons, you might want to leave this field to it's default value False. | |
Cisco TFTP | Alternate File Location 1 to 10 | Blank | If you have multiple TFTP servers in your network, you can configure these locations so that CallManager can direct the end devices to look into these locations when downloading the configuration and firmware loads. |
Enable Caching of Configuration Files | True/ False | By default, for greater performance, the TFTP server does not write the files into the hard drive. It caches the files into the memory. However, when you are troubleshooting device registration issues, you can set Enable Caching of Configuration Files to False to write the files to hard disk. | |
Cisco Messaging Interface | Backup CallManager Name | None | CMI service enables you integrate with a voice-mail system via SMDI. Configuration of some or all of the parameters is required to enable successful integration. |
CallManager Name | None | ||
Data Bits | 7 | ||
Stop Bits | 1 | ||
Serial Ports | COM1 | ||
Voice Mail DN | None | ||
Voice Mail Partition | None | ||
Cisco IP Voice Media Streaming App | Supported MoH Codecs | G.711mulaw /G.711alaw/G.729 Annex a/Wideband | If you want to stream the MoH audio streams in other formats (such as G.729 Annex a), you need to make the selection here. For example, select both G.711mulaw and G.729 Annex a if you are using a centralized MoH server and want to stream the audio files in G.729 Annex a format to remote branches and G.711mulaw format within the local network. |
Run Flag | True/ False | The Run Flag service parameter is available for Annunciator (ANN), Conference Bridge, Media Termination Point (MTP) functions. Cisco IP Voice Media Streaming App service provides all three services plus MoH functionality. If you do not want to use MTP or Conference Bridge services, for example set the Run Flag to False. |
Deployments Involving Shared Lines
Deploying an IPT network with shared lines increases the dial plan weight on the CallManager servers. Hence, you must carefully size the servers and memory requirements in shared-line deployments. If you are using shared lines on many IP phones, a single directory number can appear on 300 devices. Therefore, if you have two different directory numbers, you can share them on two different sets of 300 phones, with shared line 1 on the first 300 phones and shared line 2 on the other 300 phones, for a total of 600 devices with shared lines. In practical deployments, no one requires such a large number.
Call Detail Records
If you have enabled CDRs, the call activities are stored in the CallManager CDR database in the SQL server. If you leave the CDR database untouched, over a period, the number of records stored in the database becomes substantial and occupies a lot of hard disk space. Having a large CDR database increases the amount of time to complete the backup and restore process and results in high usage of memory and CPU by SQL service whenever you run queries or generate reports through CAR. To avoid these issues, you should routinely purge the CDR database.You can use the CAR tool to schedule the purge of CDRs periodically. To configure automatic purge of the CDR and CMR records from the CAR application, select System > Database > Configure Automatic Purge .If you do not want to install CAR, you can manually purge the CDR data by using the procedure described in the following document:http://www.cisco.com/en/US/partner/products/sw/voicesw/ps556/products_tech_note09186a0080100566.shtml
CallManager Traces
Leave the CallManager trace level to its default and enable detailed tracing only when troubleshooting. Configure the trace settings back to their default values after you complete the troubleshooting. Enabling detailed tracing involves a lot of disk writing cycles and occupies hard disk space.Another approach is to enable detailed tracing only for CallManager Service, Cisco Database Layer Monitor Service, and Cisco RIS Data Collector Service and leave the trace settings on other services to Error level. When you enable detailed tracing, you can limit the number of files and the size of each trace file to the minimum required. CallManager overwrites the trace information, beginning with the first file, when the file limit is reached, and moves to the next file when the number of lines in the current file reaches the specified threshold.
Firmware Loads
Always use the same phone loads or gateway loads throughout the cluster. This ensures that whenever you upgrade the CallManager, all the devices get a new load. Otherwise, over a period of time, you will have a few phones and gateways that are left with old device loads in the network. Use BAT to query for the phones and gateways that have different loads and remove the device-specific load information from the configuration pages.
Cluster Guidelines
This section discusses some operational best practices in configuring and managing the CallManager cluster.
Removing a Subscriber
If you remove a subscriber server from a cluster, also remove the server name from the CallManager Server page. Do not just power off the server. If you leave the removed server name on the CallManager Server page, the Publisher server still views the server as part of the cluster even though you powered off the server. Hence, the Publisher server tries to contact the server in the back end, which is a waste of CPU resources.
Auto-Registration
Auto-registration in CallManager enables the phone to register automatically and get a directory number. This feature is helpful during the implementation phase when used along with BAT and TAPS, as discussed in Chapter 8, However, you should either turn off this feature after you complete the implementation or use the following method to forward all the calls from auto-registered phones to a security operator number as soon as they go off-hook. That way, even if someone successfully registers the "rogue phone" to the cluster, the call will always reach the security operator.
Step 1. | Create two partitions: pt_autoregphone and pt_fwdsecurity. |
Step 2. | Create a CSS css_fwdsecurity and include pt_fwdsecurity partition. |
Step 3. | Create a CSS css_allphones and include pt_internal partition (the partition assigned to all IP phone directory numbers). |
Step 4. | Create a <none> Translational pattern whose partition is pt_fwdsecurity and CSS is css_allphones. In the Called Party transformation mask, put the directory number of the security operator phone. |
Step 5. | From the CallManager Administration page to System > Cisco CallManager, select a primary CallManager subscriber, uncheck the Auto-registration Disabled on this CallManager option, and select the auto-registration partition pt_autoregphone from the list box. |
Step 6. | Pick the device pool in which the CallManager you selected in Step 5 is the primary CallManager Subscriber. On the Device Pool Configuration page, set the Calling Search Space for Auto-registration field to css_fwdsecurity , as shown in Figure 9-16.Figure 9-16. Setting the CSS for the Auto-Registered Phones[View full size image] ![]() |
The preceding configuration forwards the calls to the security operator as soon as an auto-registered phone goes off-hook and thus allows you to prevent the misuse of the IPT network by auto-registered phones, as shown in Figure 9-17.
Figure 9-17. Call Flow for an Auto-Registered Phone Forwarding to Security Operator
[View full size image]

Installing Third-Party Software Applications
Do not install unsupported third-party applications on any of the IPT application servers, to avoid issues such as memory leaks in those applications that affect the CPU and the availability of memory resources on the servers.
Changing Session Timeout for CallManager
The session timeout for CCMAdmin and CCMService pages is set to 20 minutes by default. The steps to increase or decrease this setting are as follows:
Step 1. | From the CallManager server, select Start > Program > Administrative Tools > Internet Services Manager . |
Step 2. | Click the server name and then click + to expand the Default Web Site selection, as shown on the left in Figure 9-18.Figure 9-18. Changing the Session Timeout[View full size image] ![]() |
Step 3. | Right-click CCMAdmin and select Properties . |
Step 4. | Click the Configuration button to open the Application Configuration dialog box, shown on the right side of Figure 9-18. |
Step 5. | Select the App Options tab. |
Step 6. | Check the Enable Session State option (if it is unchecked) and change Session Timeout to the desired value. |
Step 7. | To change the session timeout for the CallManager Serviceability pages, follow the preceding procedure but right-click CCMService rather than CCMAdmin in Step 3. |
Cisco Unity Operations
As discussed in Chapter 7, "Voice-Mail System Design," Cisco Unity uses an underlying messaging network for proper functioning. The messaging store could be either Microsoft Exchange or IBM Lotus Domino. If you are following Microsoft's or IBM's best practices for monitoring and maintaining Exchange, Windows, or Domino, it is unlikely that you will encounter issues regarding these messaging products. Using Exchange or Domino to store and retrieve voice messages, break down distribution lists to addresses, and then route SMTP messages is basic mail technology that Exchange and Domino have a solid track record of handling. If you maintain the message store servers properly, the weakest point between Unity and the message stores will be the network connection between them. If there are network latency issues between the Unity and message store servers, it can manifest itself as telephone user interface (TUI) delays in the Unity conversation that the end user will hear.Refer to the Cisco Unity Maintenance Guide on