Chapter 5. Media Processing

This chapter attempts to cover everything you ever wanted to know about media processing resources and media connection processing, but were afraid to ask. It might not answer all the questions you have on the subject, but it should at least discuss the salient points and provide insight into how media streams are controlled and handled by Cisco CallManager.

Software applications such as Cisco MeetingPlace are not discussed in this chapter. Although MeetingPlace is a very powerful and useful system, has many useful functions and uses CallManager to connect calls to its conference bridges, it does not register with CallManager and cannot be controlled by CallManager directly. Because CallManager cannot allocate or control conference bridges or any other facilities provided by MeetingPlace, it is not discussed in this chapter; this chapter focuses on devices controlled directly by CallManager.

There are two signaling layers within CallManager. Each signaling layer has distinct functions. The Call Control Layer handles all the normal call signaling that controls call setup, teardown, and call routing. The second signaling layer is the Media Control Layer, which handles all media connection signaling required to connect the voice and video paths or media streams of the calls.

This chapter focuses on the Media Control Layer and is divided into two major sections:

  • Media Processing Overview—Provides a general overview of media processing devices and how media connections are established between them. It also covers media resource allocation and control.

  • Architecture and Functionality of the Media Control Layer—Offers more detailed information on the architecture and functionality of media processing and the related devices in CallManager. Each type of device is detailed and how it is connected and used by CallManager. Call preservation, which is the ability to maintain media connections (voice and video paths) in the event of failures, is also discussed.

Note

Chapter 3, “Station Devices,” and Chapter 4, “Trunk Devices,” cover call control signaling for both phones and gateways.

Figure 5-1 shows the block structure of CallManager.

CallManager Block Structure Diagram

Figure 5-1. CallManager Block Structure Diagram

Figure 5-1 highlights the software layers and blocks within CallManager that are described in detail in this chapter. Other blocks are touched on lightly but are not highlighted because they are not covered in detail here.

The software in the Media Control Layer handles all media connections that are made between devices in CallManager. The Call Control Layer sets up and controls all the call signaling connections between call endpoints and CallManager. The Media Control Layer directs the devices to establish streaming connections among themselves. It can insert other necessary media processing devices into a call and create appropriate streaming connections to those devices without the Call Control Layer knowing about them.

The Media Control Layer becomes involved in a call when the Call Control Layer notifies the Media Control Layer that a call has been connected between two endpoints. The Media Control Layer then proceeds to establish the media streaming connections between the endpoints as required to set up the voice path for that call.

In some cases, the media streaming connections are established before the call is connected. CallManager connects the media streams early such as when a call is destined for the public switched telephone network (PSTN) through a gateway. The caller then hears the progress tones and announcements from the PSTN telling them what happened to the call such as ringback tone, busy tone, “The number you have called is not a working number”, or “All circuits are busy now. Please hang up.”

If the endpoints in the call report video capabilities, CallManager checks the locations bandwidth and if it allows video, it automatically attempts to open a video channel between the endpoints for the call. Whether or not video is actually sent on that channel depends on the video mute setting of the endpoint devices involved and whether sufficient bandwidth is available.

The blocks highlighted in the Protocol/Aggregation layers of Figure 5-1 are those that control the media processing devices. They provide the device interface and handle all communication between the devices and CallManager.

The Media Resource Manager (MRM) is a software component in CallManager that handles all resource allocation and de-allocation. When call processing or a supplementary service determines that a media processing resource of a particular type is needed, the request is sent to the MRM. The MRM finds an available resource of the requested type, allocates the resource, and returns the resource identification information to the requestor.

Media Processing Overview

CallManager controls the voice paths and other media connections such as video streams for all calls handled by CallManager. The Media Control Layer (MCL) is responsible for making all of these connections through the underlying network (LAN or WAN). The MCL is a signaling layer that signals between CallManager and the endpoint devices and instructs the devices on how to set up appropriate media streaming connections. The MCL itself does not process or handle the actual media streams. This is important because CallManager nodes do not get bogged down by processing all the streaming data from the thousands of calls being processed.

System administrators and, to a lesser extent, the users of the system are directly aware and have control over some endpoints. They are only indirectly aware or not aware at all of other endpoints that might be involved in a call. The user, for example, is directly aware of IP phones as endpoints in a call, indirectly aware of conference bridges and music on hold (MOH) servers, and not aware at all of transcoders, media termination points (MTP), gateways, and other such devices. In many cases, only the MCL is actually aware of all devices that are involved in a particular call and how the devices are connected. The connections between the devices create the voice and video paths for a call.

The major topics for this section are as follows:

Definition of Common Terms and Concepts Used in Voice over IP

This definition section is not exhaustive, but it covers the most important concepts and terms relevant to this chapter.

Logical Channels

A logical channel is a streaming data connection between two endpoints. A logical channel, in effect, is a pipeline through the data network between two endpoints that carries streaming data.

As an analogy, a home contractor builds the water pipes in a home and constructs a pipeline between the home and the city water supply. After the pipeline connecting the city water supply and the new home has been completed, the contractor is finished. The city then supplies the water that flows through the pipeline to the new home.

In a similar fashion, CallManager directs the construction of the logical channel or “pipeline” through the data network, and the endpoints then control the data that flows through that logical channel. CallManager itself does not create the logical channels. Instead, it directs the construction of the logical channels by supplying the parameters and instructing the endpoints how to construct each logical channel and where to connect it.

When creating a logical channel, the creating entity specifies parameters that establish what kind of data is transported through that logical channel, in which direction it is transported, the size of the data stream, and so forth. All voice, video, fax, and other data streams are transported through these logical channels. Multiple logical channels can exist between any two endpoints.

The endpoints in a voice call, for example, are instructed to establish either one or two simplex (one-way) logical channels between them. One logical channel carries the voice data stream from the calling party to the called party, and the other carries the voice data stream from the called party back to the calling party. CallManager sometimes instructs an endpoint device, such as a Cisco IP Phone, to create other logical channels such as video channels between themselves and other endpoints.

In another case, endpoint devices might be instructed to create one or more logical channels between themselves and a media processing resource, such as a conference bridge or a transcoder. This mechanism is used to create conferences and to provide MOH and other similar applications.

Voice Codecs

A voice codec is either a hardware or a software entity that converts an analog audio source into a digitized data stream, and vice versa. The codec packages the digitized data into a stream of data packets, each of which contains digitized voice data and is generated or sent at regular intervals. When silence suppression is enabled, variable numbers of bytes of data per interval can be generated, and it is possible that no packets of data are generated during silence. The interval at which codecs create and send data packets depends on the configuration of the packet sizes for each codec. You can set these configuration parameters through the Service Parameters page in Cisco CallManager Administration (Service > Service Parameters > select a server > Cisco CallManager). Table 5-1 defines the service parameters for controlling codec packet generation and their possible values in milliseconds.

Table 5-1. Codec Packet Size

Service Parameter

Set of Possible Values

Default Value

Preferred G711 Millisecond Packet Size

10 ms, 20 ms, 30 ms

20 ms

Preferred G729 Millisecond Packet Size

10 ms, 20 ms, 30 ms, 40 ms, 50 ms, 60 ms

20 ms

Preferred G723 Millisecond Packet Size

30 ms, 60 ms

30 ms

Preferred GSM EFR Bytes Packet Size

31 bytes, 32 bytes

31 bytes

Note

Changing the packet size that a codec generates can have both positive and negative effects on the system. In general, the smaller the packet size, the less latency you have in the voice stream, and the more bandwidth and processing power it takes to handle the increased packet load. The larger the packet size, the more latency you have in the voice stream, and the less bandwidth and processing power it takes to process the data stream.

In this chapter, all information about capacities for media processing devices, such as conference bridges bandwidth consumed in the network, is based on the default packet size for the codecs.

Codecs normally exist in endpoint devices such as IP phones, gateways, and media processing devices. The codec in a given IP phone converts the caller’s voice from analog audio into a stream of data packets referred to as a voice data stream or a media stream. This stream of data packets is then routed to the other endpoint through a logical channel that has previously been established.

Different voice codecs are available and each codec follows a specific algorithm to convert analog voice into digital data. CallManager supports several different voice codec types, including the following:

  • G.711

  • G.722

  • G.723

  • G.726

  • G.728

  • G.729

  • GSM

  • Wideband

Each of these codecs produces a different set of digital data. G.723, G.729a, and GSM are classified as low-bandwidth codecs, and G.711 and wideband are considered high-bandwidth codecs. G.722 and G.728 are normally used in conjunction with video streams. Table 5-2 lists some common voice codecs used in the packet-switched world and describes the amount of bandwidth each consumes. G.722 and G.726 have multiple entries in Table 5-2 because these codec algorithms can be used at various bitrates. The bandwidths CallManager uses are listed in the table, and depending on the bandwidth in use, the codec will adapt.

Table 5-2. Bandwidth Consumption by Voice Codec Type

Type of Codec

Bandwidth Used for Data Packets Only

Bandwidth Used per Call (Including IP Headers) with 30 ms Data Packets

Bandwidth Used per Call (Including IP Headers) with 20 ms Data Packets

G.711

64 kbps

80 kbps

88 kbps

G.721

32 kbps

48 kbps

56 kbps

G.722

48 kbps

64 kbps

72 kbps

G.722

56 kbps

72 kbps

80 kbps

G.722

64 kbps

80 kbps

88 kbps

G.723

6.3 kbps

22.3 kbps

Not applicable

G.726

32 kbps

48 kbps

56 kbps

G.726

24 kbps

40 kbps

48 kbps

G.726

16 kbps

32 kbps

40 kbps

G.728

16 kbps

32 kbps

40 kbps

G.729a

8 kbps

24 kbps

32 kbps

GSM

13 kbps

29 kbps

37 kbps

Wideband[*]

256 kbps

272 kbps

280 kbps

[*] Wideband is not the same as G.722.

The most popular voice coding standards for telephony and packet voice include the following:

  • G.711 (A-law and μ-law)—G.711 codecs encode the voice stream in the correct format for digital voice delivery in the PSTN. The processing requirements for encoding and decoding G.711 are very low, which makes it suitable for software-only implementations.

  • G.723.1—G.723.1 is a low-bit-rate codec that provides good quality sound and has a stream rate of either 5.3 kbps or 6.3 kbps.

  • G.726—A codec that provides high-quality voice, has varying stream rates that range from 16 kbps to 40 kbps, and is typically used in voice over packet gateways.

  • G.728—A codec that is widely used for applications requiring very low algorithmic delay such as video and voice over DSL or voice over cable.

  • G.729a—G.729a provides near toll-quality voice and provides a compressed stream bit rate of 8 kbps.

  • GSM—GSM is a codec that is predominant in most of the world’s cellular telephone systems. It provides a compressed stream rate of 13 kbps.

  • Wideband—Wideband is a proprietary Cisco codec and is not the same as G.722. It produces a high-fidelity stream rate of 256 kbps. This codec is supported on Cisco IP Phones, software conference bridges, and MOH servers.

Video Codecs

A video codec is an entity that converts an analog video source into a digitized data stream, and vice versa. It is usually implemented on specialized hardware containing digital signal processors (DSP) and other support hardware. The codec packages the digitized data into a stream of data packets, each of which contains digitized video data and is generated or sent at regular intervals.

Video codecs normally exist in endpoint devices such as IP phones, H.323 video endpoints, conference servers, and other video-enabled devices. The codec in a given device converts the caller’s video from analog video into a compressed stream of data packets of a specific format supported by that codec, and referred to generically as a video data stream or a media stream. This stream of data packets is then routed to the other endpoint through a logical channel that has previously been established.

Different video codecs exist, with each codec following a specific algorithm to convert video into digital data. CallManager supports video codec types H.261, H.263, and H.264. Each of these codecs implements a video standard and produces a different set of digital data. They are used for different purposes.

Video Standards

Some of the more popular video standards that CallManager supports and their usages are as follows:

  • H.261 is a 1990 ITU video coding standard specifically designed for transmission over ISDN lines in that the data rates are multiples of 64 kbps. The standard supports Common Intermediate Format (CIF) and Quarter Common Intermediate Format (QCIF) video frames at resolutions of 352 × 288 and 176 × 144 respectively. The data rate of the coding algorithm was designed to be able to be set to between 40 kbps and 2 Mbps.

  • H.263 is a video codec designed by the ITU-T as a low-bit-rate encoding solution for video conferencing. H.263 was first designed to be utilized in H.323-based systems, but now is finding use in streaming media via Real Time Streaming Protocol (RTSP) and Internet conferencing via SIP, too. H.263 is a suitable replacement for H.261.

  • H.264 is a high-compression digital video codec standard written by the ITU-T Video Coding Experts Group (VCEG) together with the ISO/IEC Moving Picture Experts Group (MPEG) is the product of a collective effort known as the Joint Video Team (JVT). This standard is identical to ISO MPEG-4 part 10, also known as Advanced Video Coding (AVC). The final drafting work on the standard was completed in May 2003.

  • T.120 is an ITU standard comprised of a suite of communication and application protocols. Using these protocols, developers can create compatible products and services for real-time, multipoint data connections and conferencing. With T.120-based programs, multiple users can participate in conferencing sessions over different types of networks and connections. You can collaborate using compatible data conferencing features such as program sharing, whiteboard conferencing, and file transfer.

  • H.320 is an ITU umbrella standard that defines how real-time multimedia communications and conferencing are handled over switched or dedicated ISDN telecommunication links. The H.320 standard includes the following:

    Audio: G.711, G.722, G.722.1, G.728

    Video: H.264, H.263, H.261

    Data: H.239, T.120

    Control: H.221, H.231, H.242, H.243

  • H.323 is an umbrella set of standards defining real-time multimedia communications and conferencing over packet switched networks. First adopted in 1996, H.323 borrowed many of the H.32x standards used by H.320, especially those for encoding/decoding the audio/video streams and the data sharing protocol (T.120), but it defined a new set for handling communication over the Internet.

Silence Suppression

Silence suppression is the capability to suppress or reduce the RTP packet flow on the network when silence is detected during a phone call. Silence suppression may also be called voice activity detection (VAD). When enabled, endpoints, such as Cisco IP Phones or gateways, detect periods of silence or pauses in voice activity and either stop sending normal RTP packets or reduce the number of packets sent during these pauses in a phone conversation. This reduces the number of RTP packets on the network and, thus, bandwidth consumed during the call.

To mask the silence suppression, the endpoint can play comfort noise. Comfort noise is also called white noise or background noise and is meant to make the user feel more comfortable that the call is still active while audio is being suppressed. Without comfort noise, the user might hear total silence. Some endpoints are capable of generating pink noise, which is background noise that resembles the background sounds from the current call.

Three service parameters control silence suppression, as shown in Table 5-3.

Table 5-3. CallManager Service Parameters That Control Silence Suppression

Service Parameter

Set of Possible Values

Default Value

Definition

Silence Suppression

True or False

True

Enables or disables silence suppression for all devices on a cluster wide basis.

Silence Suppression for Gateways

True or False

True

Enables or disables silence suppression for all gateways.

Strip G.729 Annex B (Silence Suppression) from Capabilities

True or False

True

If set to True, it removes silence suppression capability for G.729 codecs.

If users complain about the silence during a phone call or the comfort noise generated to replace it, you can disable silence suppression by setting the CallManager service parameters to False, and the calls will sound more natural. However, the calls will consume more bandwidth.

IP Phone

An IP phone in CallManager refers to a telephone device that contains, among other things, a digital signal processor (DSP), and another processor chip such as an ARM Risc processor. An IP phone can be plugged directly into an Ethernet port and looks like a standard network device to the network. An IP phone has an IP address, a Media Access Control (MAC) address, and is capable of using Dynamic Host Configuration Protocol (DHCP) and other standard network facilities.

During a call that is connected between two IP phones, each IP phone uses its codec (DSP) to create its own outgoing voice data stream. The voice data stream is sent through a logical channel to the other IP phone or other device to which it is connected. The IP phones also use their codecs (DSPs) to process the incoming voice data stream from the other IP phone or other endpoint device.

CallManager instructs each of the two IP phones to create a Transmit Logical Channel and a Receive Port between itself and the other IP phone in the call. The Transmit Logical Channel of one IP phone is connected to the Receive Port of the other IP phone.

Some IP phones can use their DSPs as a small conference bridge capable of supporting up to three participants. This capability is used by the barge feature.

If both endpoints in a call support video, CallManager can also instruct each of the two endpoints to create video channels between them.

Media Termination Point

A media termination point (MTP) is a software-based or hardware-based media processing resource that accepts two full-duplex stream connections. It bridges the media streams between the two connections and allows the streaming connections to be set up and torn down independently. An MTP might also be used to perform other processing on a media stream, such as digit detection and insertion (as defined in RFC 2833).

Transcode

To transcode is to convert a voice data stream from one codec type to another codec type. For example, transcoding G.729a to G.711 means to convert the G.729a data stream produced by one codec into a G.711 data stream consumed by another codec. Transcoding might also be used to change the sampling rate between two streams produced by the same type of codec.

Transcoder

A transcoder is a hardware-based device that takes the output stream of one codec and converts it in real time (transcodes it) into an input stream for a different codec type. In addition, a transcoder also provides the capabilities of an MTP and can be used to enable supplementary services for H.323 endpoints when required.

Call Leg

The term call leg is used when referring to a call signaling connection between two entities. In CallManager, the term refers to a call signaling connection between CallManager and an endpoint device. In a standard call (one that does not involve any media processing devices) between two IP phones, for example, there are two call legs: one between the originating IP phone and CallManager, and the other between CallManager and the destination IP phone.

This chapter does not discuss call legs because media connections are made point to point between two endpoints. They do not follow the call legs in that there are no media connections established between CallManager and the endpoints in a call. The MCL establishes all media connections, and it is not aware of the call signaling connections being processed in the Call Control Layer of CallManager.

Media Processing Resource Types

CallManager provides access to a variety of media resources. All media resources that are registered to any CallManager node in the cluster are made available to all CallManager nodes within the cluster.

A media processing resource is a software-based or hardware-based entity that performs some media processing function on the data streams that are connected to it. Media processing functions include mixing multiple streams to create one output stream, passing the stream from one connection to another, or transcoding the data stream from one codec type to another.

CallManager allocates and uses six types of media resources:

This section discusses each of these resource types and explains their basic operation and purpose in the system.

Unicast Conferencing Resources

A Unicast conference bridge is a device that accepts multiple connections for a given conference. It can accept any number of connections for a given conference, up to the maximum number of participants allowed for a single conference on that device. There is a one-to-one correspondence between full-duplex media streams connected to a conference and participants connected to the conference. The conference bridge mixes the input streams together and creates a unique output stream for each connected party. The output stream for a given party is usually the composite of the input streams from all connected parties minus their own input stream. Some conference bridges mix only the three loudest talkers on the conference and distribute that composite stream to each participant (minus their own input stream if they were one of the talkers).

A Unicast conference server supports more than one conference bridge and is either hardware-based or software-based. CallManager allocates a conference bridge from a conference server that is registered with the cluster. Both hardware-based and software-based conference servers can be registered with CallManager at the same time, and CallManager can allocate and use conference bridges from both of them. Hardware-based and software-based conference servers have different capabilities. Some hardware-based conference servers can conference streams from different codecs together, although other hardware-based conference servers cannot. A software conference server is only able to conference streams from G.711 and wideband codecs.

Some station devices also have a DSP capable of supporting a small three-party G.711 conference. This conference bridge is allocated and used by the barge feature. CallManager knows about the station-based conference bridges, but it allocates the station-based bridge only when processing a barge request that is targeted for that station device. To use the station-based conference bridge in a barge operation, the Barge softkey must be used.

For features used to set up conferences such as Ad Hoc or Meet-Me conferences or Join, CallManager always allocates system-based conference resources. CallManager does not distinguish between the types of system-based conference bridges when a conference-allocation request is processed. CallManager cannot specifically allocate a hardware conference bridge or a software conference bridge or a videoconference bridge directly. It simply allocates a conference bridge from the pool of conference resources available to the device for which the conference bridge is being allocated.

You have control over the types of conference resources that are in the pool of resources available to a particular device. The section “Controlling the Allocation and Usage of Media Resources” covers this in detail. If you know that a particular endpoint, such as a gateway, normally needs a hardware conference bridge to take advantage of its mixed-stream conferencing capabilities, you could configure CallManager so that the gateway only has access to hardware conference resources. The same applies to video-capable endpoints or any particular group of devices that would normally need a particular resource type. You could also configure the device, or set of devices, so that it has access to software conference resources only after all hardware conference resources have been allocated, or any other arrangement that seems appropriate.

CallManager allocates a Unicast conference bridge when a user presses the Confrn, MeetMe, Join, or cBarge softkey on the phone. If no conference resources are available to that phone when the user presses the softkey, the request is ignored and no conference or barge is started. Unicast conference bridges can be used for both Ad Hoc and Meet-Me conferences.

Software-Based Unicast Conference Bridge

A software Unicast bridge is a standard conference mixer and is capable of mixing G.711 and wideband audio streams. Both G.711 A-law and G.711 μ-law streams can be connected to the same conference. The number of parties that can be supported on a given conference depends on the server where the conference bridge software is running and the configuration for that device. Because G.711 μ-law is the most common format in the United States, wideband and G.711 A-law streams are converted to G.711 μ-law before being sent to the mixer. The output streams from the mixer are returned to the endpoint as a μ-law stream, or converted back into G.711 A-law or wideband as required for a particular endpoint.

Hardware-Based Unicast Conference Bridge

A hardware conference bridge has all the capabilities of a software conference bridge. In addition, some hardware conference bridges can support multiple low-bit-rate stream types such as G.729a, GSM, or G.723. This allows some hardware conference bridges to handle mixed-mode conferences. In a mixed-mode conference, the hardware conference bridge transcodes G.729a, GSM, and G.723 streams into G.711 streams, mixes them, and then encodes the resulting stream into the appropriate stream type for transmission back to the user. Some hardware conference bridges support only G.711 conferences.

Hardware-Based Videoconference Bridge

A video conference bridge has all the capabilities of a hardware conference bridge. In addition, video bridges support H.261, H.263, H.320, or other video streams. A video conference bridge supports mixed conference types. A conference can be composed of all video endpoints, all audio endpoints, or a combination of video and audio endpoints.

Media Termination Points (MTP)

An MTP is an entity that accepts two full-duplex stream connections. The streaming data received from the input stream on one connection is passed to the output stream on the other connection, and vice versa. In addition, software-based MTPs transcode A-law to μ-law, and vice versa, and adjust packet sizes as required by the two connections. Hardware-based MTPs (transcoders) can also transcode data streams between two different codec types when needed. Some MTPs have the additional capability of supporting Dual-Tone Multi-Frequency (DTMF) detection and generation for SIP calls as specified in RFC 2833.

Figure 5-2 illustrates the connections to and usage of an MTP. MTPs are used to extend supplementary services to SIP endpoints and H.323 endpoints that do not support empty capability sets. When needed, an MTP is allocated and connected into a call on behalf of these endpoints. When the MTP is inserted, the media streams are connected between the MTP and the SIP or H.323 device and are not torn down for the duration of the call. The media streams connected to the other side of the MTP can be connected and torn down as needed to implement features such as hold, transfer, and so forth. There are both hardware-and software-based MTPs. Hardware MTPs are really transcoders being used as MTPs.

MTP

Figure 5-2. MTP

Software-Based MTP

A software-based MTP is a device that is implemented by installing the Cisco IP Voice Media Streaming App on a server. When the installed application is configured as an MTP application, it registers with a CallManager node and tells CallManager how many MTP resources it supports.

A single software-based MTP device can handle many more calls than its hardware counterpart, but it can only handle G.711 and wideband codecs. Software-based MTPs also support tone detection and generation as specified in RFC 2833 for SIP endpoints. They also enable playing tones as needed to endpoints in a call.

Hardware-Based MTP

A hardware-based MTP is a device that is implemented on a hardware blade that is plugged into a hardware-switching platform, such as a Catalyst 6000 or a Catalyst 4000. Some Cisco IOS platforms such as the 3700s, 2800s, and 3800s also support hardware MTPs. A hardware-based MTP is really a transcoder being used as an MTP, because transcoders have MTP capabilities. The device registers with a CallManager node as a transcoder and tells CallManager how many resources it supports. Some hardware-based MTPs can also support transcoding operations between connected endpoints. Transcoders when used as MTPs have the capability of handling more codecs, such as G.729, G.723, and GSM. The codecs supported by a given hardware-based MTP vary depending on its transcoding capabilities.

Music on Hold (MOH) Resources

MOH resources are provided by software-based MOH servers that register with CallManager as MOH servers. MOH servers are configured through CallManager Administration, as are the other media processing devices.

Up to 51 different audio sources can be configured on the MOH servers. All MOH servers in the cluster have the same MOH source configuration. This allows CallManager to connect a held device to any MOH server in the cluster, and it receives the same audio source stream regardless of which server provides it.

A given IP phone can be connected to any available MOH output stream port, and the MOH server will connect the requested audio source to the output stream port where the IP phone is connected. The MOH server can have up to 50 different source files on its disk for each codec type that it supports, and when a particular source is requested, it streams the audio data from the source file through the designated output stream port. It is possible to connect all MOH output stream ports to the same audio source.

One fixed source is always identified as source 51. Source 51 is connected to a fixed source, usually a sound card, in the server. Any sound source that can be attached to the sound card can then provide the audio stream for source 51.

Each MOH server can supply up to 500 Unicast output audio streams or up to 204 Multicast audio streams. It can supply both stream types simultaneously, but the total stream count including both types cannot exceed the maximum. The number of streams that can be supported by a given server depends on such things as the speed of the server and which other services are running on that server. These maximum stream counts can only be achieved using high-end dedicated servers. In most cases, Cisco recommends configuring the servers with a smaller stream count. If the server has a security agent installed (even if it is deactivated) the maximum stream counts are normally about half the maximum values that would normally be supported by that server. You need to consider these factors along with server capabilities and the network infrastructure when configuring MOH servers.

When generating Multicast streams, each Multicast output stream requires a different audio source stream. Each audio source can supply an audio stream for each of the four different codecs that are supported. Thus, you can have up to 204 Multicast streams. If a single codec is used then a maximum of 51 Multicast sources can be used. The number 204 comes from 51 audio sources times 4 codecs each.

Annunciator Resources

Annunciator resources are provided by software-based servers that register with CallManager as annunciator servers. Annunciator servers are configured through CallManager Administration, as are the other media processing devices. Each annunciator can supply up to 400 simultaneous streams of either tones or announcements. Tones and announcements are considered the same as far as the annunciator is concerned.

All annunciators in the cluster have the same audio files. This allows CallManager to allocate an annunciator from any server that is available to play either a tone or an announcement. Annunciators can be connected to IP phones, gateways, MTPs, conference bridges, and other devices to inject either audio announcements or tones as required.

Announcements can be localized, allowing them to be used in different countries and locales. When a locale is installed on CallManager, the announcements and tones are associated with that locale. Two types of locales are installed on CallManager:

  • User locale

  • Network locale

Tones are installed as part of a network locale such as China or Taiwan, and announcements are installed as part of a user locale such as “Chinese (China)” or “Chinese (Taiwan).” Figure 5-3 illustrates a cluster of two CallManagers with media resources.

A Cluster of Two CallManagers with Media Resources

All resources are accessible by both CM1 and CM2

Figure 5-3. A Cluster of Two CallManagers with Media Resources

In Figure 5-3, a complement of media processing resources is registered with each of the CallManager nodes. Figure 5-3 illustrates that there can be both hardware-based media resources and software-based media resources in the same cluster and on the same CallManager node. All resources are available to both CallManager nodes, regardless of which one they are registered with.

Built-in Bridge Resources

Cisco IP Phones have an internal DSP that acts as a small conference bridge. This capability is referred to as a built-in bridge. The capability is used only to support the barge feature as described in Chapter 3. It can only support a maximum of three parties, including the phone itself as one of them. During barge operation (which is really a small three-party conference), this bridge supports only the G.711 codec. The built-in bridges are handled automatically by CallManager, and are not visible in the resource pools.

Understanding Media Processing Resources

To understand media processing resources, you must understand how voice, video, and other streaming data is generated and transported in VoIP networks. You also need to understand some of the basic system components, such as codecs, logical channels, and endpoints. This section assumes that you now have a general understanding of how the voice data streams are created and transported using these basic components. Chapter 1, “Cisco CallManager Architecture,” explains the basics of VoIP.

Media processing devices in general do not support call signaling. Within the CallManager software, the device control process for a media processing device handles all the call signaling from the Call Control Layer for these devices, and none of the call signaling is actually sent to the devices. The media processing resources do understand media connection signaling. Media connection signaling is the signaling required to establish and control logical channels and media streams. The media processing resources are treated as standard devices as far as media connections are concerned, and media connection signaling is sent to the devices.

There are two categories of media processing resources:

Software-Based Media Processing Resources

A software-based media processing resource is typically a Microsoft Windows 2000 server that is running the Cisco IP Voice Media Streaming App. The Cisco IP Voice Media Streaming App can be configured to operate and register with CallManager as four different device types. Each type of device provides a specific function or set of functions to CallManager. The four device types are as follows:

  • Software conference bridge

  • MTP

  • MOH server

  • Annunciator

Each of these device types is discussed in detail in later sections. The physical location of the Cisco IP Voice Media Streaming server is not significant to CallManager, as long as the server is accessible to all the CallManager nodes in the cluster.

Hardware-Based Media Processing Resources

Hardware-based media processing resources are resources that either exist on hardware blades that plug into a network switching platform such as a Cisco Catalyst 6500 or another switching platform, or are DSP farms on various IOS gateways. Hardware-based resources have a complement of DSPs and other processors that give them additional capabilities, such as the capability to act as a transcoder or process video, that are not available on software-based resources. Hardware resources register with CallManager as a particular type of device. Each type of device provides a certain set of functions to CallManager. Three common types of hardware-based media processing devices are as follows:

  • Hardware audioconference bridge

  • Hardware videoconference bridge

  • Transcoder

Each of these device types is discussed in greater detail in later sections.

Advantages and Disadvantages of Hardware and Software Media Processing Resources

Software-based resources generally provide fewer processing-intensive features than do their hardware counterparts. Table 5-4 shows you recommendations based on various goals.

Table 5-4. Recommendations for Choosing Software-Based or Hardware-Based Media Processing Resources

Goal

Recommendation

Reason

Reduced cost for processing G.711 streams

Software

Software-based media processing resources are less expensive per stream than their hardware-based counterparts.

No additional switching or routing platform requirements

Software

Software-based media processing resources generally require their own Windows 2000 server in all but very small installations, but they do not require that hardware be installed on a switching or routing platform.

Ability to process streams from multiple codecs

Hardware

Hardware-based media processing resources can handle G.711, G.729a, and G.723 voice data streams. Some devices can handle GSM streams. Wideband is not supported.

For example, a hardware-based conference bridge is capable of running a mixed-mode conference (one with different stream types).

No additional server requirements

Hardware

Hardware-based media processing resources require hardware to be installed on either a switching or routing platform, but they do not require any network server support.

Video capability

Hardware

Video streams in general require hardware-based resources to process them.

Media Resource Registration

All media processing resources currently register and communicate with CallManager using the Skinny Client Control Protocol (SCCP). All Cisco IP Phones also use this protocol. Media processing resources do not use most of the protocol elements of SCCP. Media devices in general use some of the registration elements and the media control elements from this protocol.

Media Resource Device Registration Sequence

CallManager receives a registration request from a device. The registration request contains the device name and the device type. CallManager then attempts to look up the device in the database. If the lookup attempt is successful, all configuration information associated with this device is retrieved from the database, and the device is allowed to continue registering. Each device tells CallManager during the registration sequence how many full-duplex media streams it can support. CallManager creates appropriate resources to support that device based on its device type.

On the device side, each media resource is given a list of CallManager nodes in priority order to which it should attempt to register. The first CallManager in the list is its primary CallManager. If the primary CallManager fails or is not available for any reason, it attempts to register with the next available CallManager in its list. Each device can register with only one CallManager at a time. The device always registers with its primary CallManager if that node is available, and it reregisters with the primary CallManager when it becomes available again after a failure. CallManager can have multiple devices of the same type registered. Each of these devices might be configured to register to a different CallManager node or to the same CallManager node.

The Media Control Layer

The Media Control Layer (MCL) is a layer of software within CallManager that controls all media streaming connections between endpoints or devices in the CallManager system. The MCL directs the construction of the logical channels through the network for each call that is processed by CallManager.

This chapter does not discuss the elements that compose the underlying data network. It discusses only the logical connections made between the devices and endpoints that compose the CallManager system. All signaling and data streams are carried through an IP data network, and it is assumed for purposes of this discussion that the MCL can make all TCP/IP or UDP connections requested, and that the underlying network can carry all the voice, video, and other traffic as needed.

Users of the system are directly or indirectly aware of the endpoints in the call. For this discussion, consider the physical devices to be the endpoints in a call, and not the actual persons involved. Thus, if you pick up your phone and call another person, consider your phone as the originating endpoint of the call, and the called person’s phone as the terminating endpoint of the call. Think of the voice and/or video streams as being created by your phone, traveling through the network, and being terminated by the called phone. You, a user, are aware of these two endpoints, because you directly used them by picking up one and dialing the other. The streaming data connections between endpoints might be for audio channels, video channels, or some combination. This section discusses audio and video connections and processing.

Audio Channel Processing in CallManager

Figure 5-4 depicts the signaling and streaming connections made between two audio endpoints (in this case, Cisco IP Phones and CallManager). MCL directs the phones to open two logical channels, one in each direction between the two phones.

Calls Between Two Audio Endpoints

Figure 5-4. Calls Between Two Audio Endpoints

In some cases, it is not as simple as it seems at first glance. If the called party does not have an IP phone that is on the CallManager system directly, such as when you call home from your IP phone at the office, even though you can think of your voice traveling from your IP phone directly to the phone at home, in fact there are other endpoints or devices in the call as far as CallManager is concerned. In this case, the endpoints in the call are really your IP phone as the originating endpoint and a VoIP gateway as the terminating endpoint. The gateway connects directly to the Public Switched Telephone Network (PSTN), and the PSTN then carries the voice the remainder of the way. In this case, you are only indirectly aware of the endpoints. Figure 5-5 depicts that scenario.

Call Between a Cisco IP Phone and a Non-IP Phone

Figure 5-5. Call Between a Cisco IP Phone and a Non-IP Phone

Figure 5-5 depicts the signaling and streaming connections made between two endpoints (in this case, a Cisco IP Phone and an IP gateway). The MCL directs the IP phone and the IP gateway to open two logical channels, one each direction between the IP phone and the IP gateway.

All endpoints are not apparent to the users of the system. Sometimes the MCL inserts media processing entities into the voice data stream path without the user’s knowledge. MTPs and transcoders are examples of these devices.

Figure 5-6 depicts the signaling and streaming connections made between three endpoints (in this case, two Cisco IP Phones and a transcoder). MCL instructs IP Phone A and Transcoder A to create two logical channels between themselves. It also instructs Transcoder A and IP Phone B to create two logical channels between themselves, making a total of four logical channels. The IP phones are not aware of the transcoder, and each phone believes that it has established a connection with another phone in the network. The two phones are logically connected, but the actual connections run through a transcoder.

Calls Between Two Cisco IP Phones Using a Transcoder

Figure 5-6. Calls Between Two Cisco IP Phones Using a Transcoder

Some devices, such as conference bridges, are inserted at the user’s request, and the user has indirect knowledge and control of their insertion. The control is indirect because the user cannot select the specific conference bridge to insert, but can indirectly select a conference bridge by pressing the Confrn softkey on the phone. No audio data travels between endpoints in the CallManager system without the MCL first instructing the endpoints involved in the call to establish media connections between them.

Video Channel Processing in CallManager

In contrast to audio channels, video channels are usually more directly controlled by the end users. A call can complete without video channels being established, but a call will never complete without audio channels. If you are using video, you are usually either directly or indirectly aware of video processing resources.

Video differs in many respects from audio. One of the differences is that the video streams created by and associated with a given call might not terminate on the same device as the voice streams. If the called party does not have a video phone that is on the CallManager system directly, but has a video-enabled endpoint such as Cisco VT Advantage, the voice streams are connected to the IP phone, and the video streams are connected to the associated PC.

On the other hand, if both endpoints are video endpoints, both the video and audio streams are connected directly to the endpoints. When you make a call from a video-enabled endpoint to an endpoint that does not support video, such as when you call home from your video-enabled IP phone at the office, your voice travels from your IP phone to a gateway that connects directly to the PSTN, and the PSTN then carries the voice the remainder of the way. In this case, the PSTN cannot carry video data, so the gateway is not video-enabled, and the call is connected without creating video channels.

Figure 5-7 depicts the signaling and streaming connections made between two video endpoints (in this case, two video-enabled IP Phones using Cisco VT Advantage). The MCL directs the IP Phone and the associated PCs to open two voice logical channels, one in each direction between the two IP Phones, and two video logical channels, one in each direction between the associated PCs. The respective cameras are connected to the video logical channels and pass video data directly between the PCs. The voice channels are connected normally, and voice data passes directly between the IP Phones.

Call Between Video-Enabled Cisco IP Phones Using VT Advantage

Figure 5-7. Call Between Video-Enabled Cisco IP Phones Using VT Advantage

You do not do anything different when you make a video call than when you make a normal voice-only call. CallManager automatically understands when a video connection can be established, and automatically sets up the video and tears it down as appropriate. If you transfer a video call to a voice-only endpoint, the video is automatically terminated. Conversely if you call from your video-enabled IP Phone to a video endpoint and the video has been disabled, no video channels are established. If the called party then enables video, CallManager immediately attempts to establish a video connection between the endpoints.

Videoconferencing connections are similar to voice-conferencing connections in that the voice and video streams are directed through logical channels to a video conference bridge where the streams are mixed appropriately and mixed streams are generated for each endpoint in the conference and sent to their respective endpoints. As a user, you might be directly or indirectly aware of a conference bridge depending on the type of conference involved. Video conference bridges also support audio conferences and mixed audio and video conferences. In some cases, you might dial into a video bridge directly for a Meet-Me conference so you are directly aware of this bridge.

In some cases, such as Ad Hoc conferences, the conference bridge is inserted at the user’s request, and users have indirect knowledge and control of their insertion in that you do not select the bridge directly. You indirectly select a conference bridge by pressing the Confrn softkey on the phone. If your phone is video-enabled, it can select a video bridge and connect a video conference if one is available.

No audio or video data travels between CallManager controlled endpoints in the CallManager system without the MCL first instructing the endpoints involved in the call to establish appropriate media connections between them. This enables the MCL to tear them down again at the end of the call or whenever it is appropriate.

Controlling the Allocation and Usage of Media Resources

You have great flexibility in controlling where resources register in the cluster and which endpoints can use the resource. You can organize the system based on geographical boundaries, on the structure of the underlying network infrastructure, or any other way you prefer. This section covers the following topics:

Reasons to Control the Allocation of Media Resources

When allocating a media processing resource, it is important to be able to select which resource or set of resources can be used by a particular endpoint. If you have a geographically dispersed network, such as one that covers both Dallas and San Jose, and you have gateways in both Dallas and San Jose to handle local calls, it becomes very important where the media processing devices inserted into a call are physically located on the network. If CallManager inserts a media resource that is physically located in Dallas into a San Jose local call, the voice data for that call streams from the IP phone in San Jose to a media resource in Dallas and back to the gateway in San Jose, before going out over the PSTN for the local call. This is a very inefficient use of bandwidth and resources.

Because all media resources that are registered with CallManager are available to all CallManager nodes within the cluster, any CallManager node in the cluster can select and insert any available resource into a call, no matter where the device physically resides or the CallManager node to which it is registered. You have complete flexibility to configure the system any way you choose. You can associate media processing resources with endpoints so that if an endpoint requires a media resource such as a conference bridge, CallManager knows which set of conference bridge resources are available to that endpoint.

If CallManager is configured correctly, and you are making a local call from an IP phone in San Jose that requires a media resource, CallManager controlling the call selects a media resource from a pool of local resources in San Jose.

Media Resource Default Configuration

In the absence of any configuration defined in CallManager Administration, all media resource devices are available to any endpoint in the system. The resources are used in the order that they were read from the database, and no attempt is made to associate a media processing resource with any particular endpoint. This arrangement is usually fine for small installations in a single location. If the system is large or geographically dispersed, you will probably need to control media resource allocation.

How to Control Built-in Bridge Allocation

Built-in bridges are mini conference bridges within the IP Phones themselves, and appear as separate allocatable devices that are attached to or part of a specific IP Phone. You can enable the built-in bridge associated with a given IP Phone through CallManager Administration. Built-in bridges are currently used only by the barge feature. When a barge feature requests a conference bridge, it specifically requests the built-in bridge for a specified target device in the allocation request. If the built-in bridge for that device is enabled, the MRM allocates it and returns it as the conference bridge selected. If the built-in bridge requested is not available, the barge function will not work.

Allocation of the built-in bridge is not discussed in the remainder of this chapter because it applies only to the barge feature. A built-in bridge is allocated upon specific request for that particular device. It cannot be used as a general conference resource.

How to Control Media Resources Allocation

This section discusses media resource groups (MRG), media resource group lists (MRGL), and how they are used to control the allocation and usage of media processing resources. It also explains the algorithms used during the resource allocation process. The main topics are as follows:

Media Resource Group Definition

All media processing resources belong to at least one MRG. An MRG is essentially a list of media processing resources that are made available as a group. If a media processing resource is not explicitly assigned to an MRG, it belongs to the Null MRG.

The Null MRG is the default MRG that exists even when no MRGs have been explicitly created through CallManager Administration. When CallManager is first installed, the default configuration includes only the Null MRG and does not have any MRGLs defined. All media processing devices that register with a CallManager node are therefore assigned to the Null MRG by default. After MRGs have been created through CallManager Administration, media processing devices can be assigned to them. The Null MRG does not appear in CallManager Administration.

An MRG can contain one or more media processing resources of the same type. The same media processing resource can be a member of as many MRGs as are necessary to achieve the desired configuration. The types of media processing resources are as follows:

  • Conference bridge

  • MTP

  • Transcoder

  • MOH server

  • Annunciator server

An MRG can contain one or more types of media processing resources. You can specify media processing resources of different types in any order, because their order is not a primary concern in the MRG.

Figure 5-8 illustrates the resources in the Null MRG. The grouping illustrated is a logical grouping and is not visible in CallManager Administration. When multiple resources of the same type are in an MRG, they are grouped together. This figure shows devices of each type and how they are grouped within the Null MRG. Notice that the MTP group includes both MTPs and transcoders. The conference resources contain hardware-based and software-based audio conference resources as well as video conference resources. These resources are allocated in the order that they appear in the list.

Resources in the Null MRG

Figure 5-8. Resources in the Null MRG

Resource allocation from the Null MRG on either CM1 or CM2 is as follows:

  • Conference allocation—When a conference is needed by the phones on CM1, they get a software conference resource, or a hardware conference resource, or a video conference resource. This continues until there are no more conference resources.

  • MTP allocation—Either a transcoder or an MTP is allocated when an MTP is requested.

  • Transcoder allocation—Only transcoders are allocated when a transcoder is requested.

  • MOH allocation—Both MOH servers are used, and the load is spread across both of them.

  • Annunciator—Both annunciators are used and the load is spread across both of them.

Media Resource Group List Definition

After an MRG is created, you can add it to an MRGL. An MRGL is an ordered list of MRGs. An MRGL can have one or more MRGs in its list. When you create an MRGL, if it contains more than one MRG, specify the list in priority order. The list is searched from first to last when looking for an available media processing resource. When looking for a resource of a specific type, all resources of that type that are available in the first MRG from the list are allocated before any resources of that type are used from the second and subsequent MRGs in the list.

Figure 5-9 illustrates some characteristics of both MRGs and MRGLs. The same devices exist in more than one MRG, and the Music MRG exists in more than one MRGL. With this arrangement, the IP Phones on CM1 get media resources in a different order than the IP Phones on CM2. Video-enabled IP Phones get both a different set of resources and a different order than the IP Phones on either CallManager.

Media Resource Group and List Structures

Figure 5-9. Media Resource Group and List Structures

Resource allocation for IP Phones on CM1 (assigned to MRGL 2) is as follows:

  • Conference allocation—The phones on CM1 get a software conference resource or a hardware conference resource or a video conference resource. All conference resources in the cluster are allocated as a single pool of resources, and no distinction is made between them.

  • MTP allocation—All MTPs and transcoders in the cluster are allocated as a single pool of resources. There is no distinction made between them.

  • Transcoder allocation—Only transcoders are allocated when a transcoder is requested.

  • MOH allocation—Both MOH servers are used, and the load is spread across both of them.

  • Annunciator allocation—Both annunciator servers are used, and the load is spread across both of them.

Resource allocation for IP Phones on CM2 (assigned to MRGL 1) is as follows:

  • Conference allocation—The phones on CM2 always get a software conference bridge until there are no more software conference resources in the cluster. Then they get hardware conference resources or video conferences resources until software resources are available again. Software resources always have priority over hardware conference resources and video conference resources. There is no priority given to hardware conference resources over video conference resources. Both hardware and video resources are allocated as a pool of resources.

  • MTP Allocation—Software MTPs are allocated until there are no more software MTPs. Transcoders are allocated only when there are no software MTPs available. Software MTPs always have priority over transcoders.

  • Transcoder allocation—Only transcoders are allocated when a transcoder is requested.

  • MOH allocation—Both MOH servers are used, and the load is balanced across both of them.

  • Annunciator allocation—All annunciators are allocated from annunciator server 1. Annunciator server 2 is not available to phones on CM2.

Resource allocation for video-enabled IP Phones on CM1 or CM2 is the same, and is as follows:

  • Conference allocation—The video-enabled IP Phones on both CM1 and CM2 always allocate a video conference bridge if one is available. Then they get hardware conference resources until video conference resources are available again. Video resources always have priority over hardware conference resources.

  • MTP allocation—When an MTP is requested, transcoders are allocated until there are no more transcoders available. Software MTPs are then allocated until a transcoder becomes available. Transcoders always have priority over software MTPs.

  • Transcoder allocation—Only transcoders are allocated when a transcoder is requested.

  • MOH allocation—Both MOH servers are used, and the load is balanced across both of them.

  • Annunciator allocation—All annunciators are allocated from annunciator server 2. Annunciator server 1 is not available to video-enabled IP Phones.

The Order of Precedence for MRGL Assignments

Each endpoint device can have an MRGL associated with it. The two levels at which you can assign an MRGL are as follows:

  • The device level

  • The device pool level

When a CallManager needs a media resource for an endpoint during a call, CallManager requests a media resource of a specified type from the Media Resource Manager (MRM). The MRM finds the appropriate MRGL to use for that device by following the order of precedence, defined in Table 5-5.

Table 5-5. MRGL Precedence Levels

Order of Precedence Levels

Comments

MRGL assigned to a device

An MRGL assigned to a device applies only to that particular device. A media resource will be selected from the device’s MRGL if one is assigned. If no resources of the requested type are available, it will then try to select a media resource from Null MRG.

MRGL assigned to a device pool

The MRGL assigned to a device pool applies to all devices that are in that device pool. This is the most general level at which an MRGL can be assigned. It will be used when there is no MRGL assigned at the device level. If no resources of the requested type are available, it will then try to select a media resource from the Null MRG.

No MRGL assigned to the device pool or the device

If neither of these two entities have an MRGL assigned, CallManager uses the Null MRG for all media resource allocations required.

Media Resource Allocation Through Media Resource Manager

CallManager uses a simple two-step process to select a resource for a given allocation request once the MRGL is identified. Each step executes a simple algorithm. The interaction of these two algorithms makes control of the resource allocations very flexible.

The two-step allocation process is as follows:

  1. Get an MRG from the MRGL.

  2. Find a resource within that MRG, if one is available.

If the MRM finds an available resource of the specified type, it is returned to the requestor. If the selected MRG has no resources of the requested type, or the existing ones are not available, the MRM repeats this two-step sequence (perhaps multiple times) until either an available resource is found or all of the MRGs in the MRGL have been searched. Only if the MRM cannot find a resource of the specified type after searching all groups in the entire MRGL does it return an error indicating that no resources of that type are available.

Selecting an MRG from the MRGL

This algorithm selects and returns the next MRG from the list contained in the MRGL in priority order from top to bottom. The list is processed only once on each allocation request.

Selecting a Resource Within an MRG

Resources within an MRG are organized so that all resources of each given type are in a list together in the order presented in the MRG. In other words, it contains a set of lists, one for each type of resource that is present in that MRG.

This algorithm performs the following steps:

  1. Find the resource list for the type of resource requested.

  2. When the list is found, allocate the next available resource using a next-available algorithm on the list. The next-available allocation begins at the point in the list where the previous allocation request ended and looks for the next resource in the list that is available.

  3. If an available resource is found, allocate it and return it to the requestor. If one is not found, notify the MRM that one is not available in this MRG.

Figure 5-10 illustrates the allocation order within an MRG. All resources are contained in the MRG. For calls that require a transcoder, the allocation order is illustrated. Note that they are allocated in next-available fashion.

Allocation Order Within an MRG for a Transcoder Request

Figure 5-10. Allocation Order Within an MRG for a Transcoder Request

Allocating a resource is accomplished by finding a device in the list that appears to have resources available. The device control process maintains the resource status for each device, so the MRM sends an allocation request to the device control process and attempts to allocate a resource. If one is available and the device status is good, a resource is allocated and returned to the MRM. If one is not available or the device status is bad (not available), the MRM is notified that no resource is available on that device. Figures 5-11, 5-12, and 5-13 illustrate this.

Normal Resource Allocation Sequence

Figure 5-11. Normal Resource Allocation Sequence

Device Is Not Registered or Out of Service

Figure 5-12. Device Is Not Registered or Out of Service

Device Controller Has No Resources Available

Figure 5-13. Device Controller Has No Resources Available

Figure 5-11 shows the order of processing for resource allocation. The MRM gets a device name from the MRG and then sends a device look up request to the device manager. The device manager responds with the location of the device controller, whereupon the MRM sends an Allocation Request to the device controller. If the device controller has available resources, it responds with a Resource Allocation Response message, which is then returned to the requestor.

Figure 5-12 shows the allocation sequence when the first device is not registered. The MRM selects another device from the MRG and makes another request to the device manager. The sequence then proceeds normally.

Figure 5-13 shows the sequence when the device controller has no resources available for the device. In this case, the MRM must select another device from the MRG, request the location of the device controller, and then ask that device controller whether it has a resource. The device controller responds with a Resource Allocation Response, and the Resource Allocation Response is returned to the requestor.

When the MRM has exhausted the list of devices in the MRG and subsequently in the MRGL, it notifies the requestor that no resources of the requested type are available.

Tip

If you want the processing load for a given resource type spread across several media resource servers, put all media resource servers of a given type in the same MRG. Within a single MRG, a resource of a given type is allocated in a next-available fashion. This does not guarantee that it will spread the load evenly, but it will spread the load. If you want to force CallManager to allocate resources from the same server until no more resources are available on that server, you must put each resource server of the same type in a separate MRG, and organize the MRGs in the MRGL in the order that you want the resource servers used.

Organizing Resource Allocation Using MRGs and MRGLs

The resource allocation tools provided allow a great deal of flexibility in determining how CallManager allocates media processing resources. Several different arrangements are shown in this section. This is not an exhaustive set, but perhaps it is enough to spark some ideas and to help you understand how MRGs and MRGLs can be used effectively.

Figure 5-14 illustrates a possible arrangement of media resources within a CallManager cluster. In this example, different departments are homed on separate CallManager nodes. This arrangement forces phones in Sales to use resources from the Sales group, phones in Marketing to use resources in the Marketing group, and phones in Engineering to use resources in the Engineering group. In this case, the resources are registered with the same CallManager node as the phones and gateways. See Figure 5-15 for another possible arrangement.

Media Resource Group Cluster Overview

Figure 5-14. Media Resource Group Cluster Overview

Media Resource Group System Overview

Figure 5-15. Media Resource Group System Overview

Figure 5-15 illustrates the fact that media resources are available throughout the cluster and do not have to be registered with the same CallManager from which they are used. All IP phones and the gateway in this figure have full access to media processing resources, even though in some instances the IP phones are registered to CallManager nodes that do not have any media processing resources registered to them. This arrangement still forces the IP phones on CallManagers A or B to use only resources from MRG1. The devices on CallManager C or D can use all resources, but they use the resources from MRG2 first. When those are exhausted, they can use the resources from MRG1.

Figure 5-16 illustrates a possible arrangement for restricting access to media processing resources.

Using an MRGL to Restrict Access to Media Resources

Figure 5-16. Using an MRGL to Restrict Access to Media Resources

As shown, you can assign all resources to three groups (no resources are left in the default group). Create MRGL 1 and assign the three MRGs to it. Do not assign an MRGL at the device pool level. In the phone configuration, for the phones homed on CM1, do not assign an MRGL to them. These phones cannot use any media resources when they are configured this way because there are no resources available in the Null MRG and none available at the device pool level. Assign MRGL 1 to all the other IP phones. The other IP phones have access to all the resources.

You can use the same concept to restrict any particular device or type of devices from groups of users. For example, if you want to restrict phones on CM1 from using any conference resources, create another MRGL, and add the two MRGs without the conference resources to it. Assign the MRGL without conference resources to the phones on CM1. Now they cannot access conference bridges.

Architecture and Functionality of the Media Control Layer

This section contains more detail on the devices and functions handled by the MCL. You can skip this section if you are not interested in such detail, or dive in if you really like this sort of thing. These are the major topics of discussion in this section:

Conferencing and Transcoding DSP Resources

The Communication Media Module (WS-SVC-CMM) with one or more conference and transcoding port adaptors (WS-SVC-CMM-ACT) is an example of a module that provides hardware conferencing and transcoding resources for CallManager. Videoconferencing resources are now available, too.

Note

A transcoding session is defined as one full-duplex codec translation between two different codecs. When a transcoder is used as an MTP, it also counts as one transcoding session.

The following is a partial list of gateways and switches that support transcoding resources. The currently supported devices might have changed, so you should search Cisco.com for the currently available transcoding resources.

  • NM-HDV2 series of modules on the 26xx, 28xx, 37xx, 38xx gateways

  • Communication Media Module (WS-SVC-CMM) line card with one or more conference and transcoding port adaptors (WS-SVC-CMM-ACT)

  • Catalyst 6000 WS-X6608-T1 and Catalyst 6000 WS-X6608-E1 gateways

The following is a list of video conferencing bridges available. Again, the currently supported devices might change, so you should search Cisco.com for the currently available video bridges.

  • Cisco IP/VC 3511 (video bridge)

  • Cisco IP/VC 3520 (V.35/BRI H.323/H.320 gateway)

  • Cisco IP/VC 3525 (PRI H.323/H.320 gateway)

  • Cisco IP/VC 3540 (chassis-based bridge/gateway unit)

  • Cisco VT Advantage

Limitations on Conferencing and Transcoding Resources

You might have several conferences running on the CallManager system using combinations of different codecs in them. For example, you might have one or more G.711 conferences running at the same time as one or more G.729a conferences. You might also have one or more conferences running where different endpoints in the conference use different codecs. Calls that use different codecs require different amounts of processing power from the DSPs on the conferencing resource. CallManager has no visibility into the allocation or usage of the DSP resources on media resource devices. The G.723 codec, for example, requires more DSP CPU cycles than does G.729a or G.711. The Catalyst 6500 CMM line card with conference and transcoding port adaptor modules register 128 resources per adaptor with CallManager, which would support 128 simultaneous calls using any available codec.

Conference Resource Basic Architecture

This section describes the architecture of all conferencing resources in CallManager and the components that form the basis of control and operation of the conferencing subsystem. This includes the Supplementary Services Layer, the Call Control Layer, the Protocol Layer, and the Media Control Layer.

Supplementary Services Layer

The Supplementary Services Layer in CallManager implements the feature operation as seen from a user perspective. It controls the operation of the feature and processes all softkey and button presses from the user after a feature has been activated. The Supplementary Services Layer in CallManager implements all features that exist in CallManager itself. For the conferencing features, it maintains all the conference information, such as which conferences are active and who the participants are for each one. This layer of processing is the one that processes all feature requests from the phones. When the conference supplementary services receives a conference request, it either processes the request or notifies the IP phone that there are no conference resources available. The Supplementary Services Layer interfaces directly with the Call Control Layer. It can communicate with the Protocol Layer only through call control.

Protocol Layer

The Protocol Layer receives and handles the device registration. It also handles all communication with the device. This layer also handles conference bridge device failures. Device failures and the subsequent handling of active conferences are both described in the section “Call Preservation During System Failures.”

Creating and Managing Conference Bridge Resources

All conference bridge servers use SCCP to communicate with CallManager. This is true of both hardware-based conference servers and software-based servers. When a conference bridge server registers with CallManager, it provides several pieces of information needed by CallManager to communicate with the device and control conference allocation and usage on that device. The important ones for this discussion are as follows:

  • Device name (conference bridge server name)

  • Total number of resources (conference participants) that it can support (it takes one resource to support each conference participant)

  • The number of resources that are currently active (normally set to 0)

  • Number of resources (participants) that can be part of a single conference (this is an optional parameter)

  • IP address of the device

  • Device type

CallManager uses the device name provided at registration time to look up the device configuration information in the database. If the device is not configured in the database, the device is not allowed to register with CallManager. If the device is found in the database, it is allowed to complete registration, and CallManager creates a control process that communicates with the device and keeps track of the resources available for that device.

The device control process creates the number of conference bridge resources that the device can support using the total number of resources from the device registration message, and creates one conference bridge resource for every resource that the server supports. For instance, if a conference bridge supports 32 resources, CallManager creates 32 conference bridge resources to support this device. That means that from the CallManager perspective, it could create 32 separate conferences, each having 1 participant in it.

If the device provides the maximum number of resources that can be part of a single conference at registration time, CallManager uses that value to compute how many conference bridge resources to create. For example, if the device supports 6 conference resources or participants per conference and the device can support 24 resources total, CallManager creates 4 conference bridge resources. The control process registers the device with the Device Manager, which makes its resources available for allocation by the MRM.

Note

The number of conference bridge resources determines the number of conference bridges available on that device and, thus, the number of conferences that can be active simultaneously. Each conference bridge supports one active conference.

Also, there is a one-to-one correspondence between the number of resources a device supports and the number of conference participants it supports.

Built-in Bridge Support for Barge Feature

Cisco IP Phone endpoints have a DSP inside the phone that can act as a small conference bridge. This capability is used only to support the barge feature, as described in Chapter 3. As far as the MCL is concerned, the barge feature activates a small conference, so resources are allocated as conference resources.

CallManager release 4.1 can take advantage of this small conference bridge during barge operations. This capability is either enabled or disabled, and depends on how the system is configured.

The advantage of using the built-in bridge in the phone is that no system conferencing resources are in use during barge feature operation. This makes conference bridge support essentially free for the barge feature because no additional hardware is needed.

The disadvantage is that the barge feature can use only the G.711 codec. Also, when the DSP in the phone is being used as a conference bridge, it is not available to process voice streams from low-bit-rate codecs such as G.729a or G.723.

Conference Resource Allocation and Control

The section describes in more detail how CallManager controls and allocates conferencing resources.

Allocating a Conference Bridge Resource

The conference supplementary service allocates one conference bridge resource for each conference that it starts. The conference bridge allocation is released when the conference is terminated. When the conference supplementary service needs a conference bridge for a new conference, it allocates a conference bridge using the MRM. The MRM does not attempt to distinguish between software-based audio conference bridges, hardware-based audio conference bridges, or video conference bridges when they are being allocated. It therefore allocates the next available conference bridge following the normal media resource allocation process. The allocated bridge can be either an audio hardware-or software-based conference bridge or a video conference bridge, depending on how conferencing resources are configured for that endpoint.

Mixed-Mode Audio Conference Support

CallManager supports mixed-mode conferences, which means that a single audio conference can consist of users with different codecs, such as G.729a, G.723, and G.711 codecs, in the same conference. This is supported directly by some hardware-based conference bridges. Some hardware-based audio conference bridges automatically provide any transcoding that is required, based on the codec type of the connected participant within the transcoding capabilities of that conference bridge device.

Tip

Hardware conference bridges do not all support the same set of codecs, so when you purchase hardware and configure the system, make sure that the conference bridge devices and transcoders in your system support the codecs that are required.

Not all hardware conference bridges support mixed-mode conferences. If a conference bridge does not support mixed-mode conferences itself, CallManager allocates and inserts transcoders as required by the conference participants of a given conference. This is true for both software-based conference bridges and hardware-based conference bridges.

Mixed-Mode Conference Support for Catalyst 6000 Conference Bridges

Mixed-mode conferences on Catalyst 6000 WS-X6608-T1 and WS-X6608-E1 voice modules use DSPs to perform the transcoding operations for conferences. The conference mixers on the Catalyst 6000-based hardware conference bridges only mix G.711 streams and do not use a DSP for mixing. If a conference participant is using some other codec, such as a G.729a codec, the incoming stream is transcoded from G.729a to G.711 automatically before being sent to the mixer, and the output stream from the mixer is transcoded from G.711 to G.729a before being output to the conference participant. All such transcoding is handled transparently on the Catalyst 6000 voice modules.

When setting up a conference on this type of device, you are guaranteed the availability of a minimum of three conference resources. You cannot extend the conference unless additional resources are available on the device when you attempt to extend the conference.

Mixed-Mode Conference Support for Software Conference Bridges

Software conference bridges support G.711 A-law, G.711 μ-law, and wideband codecs. If a software conference bridge requires mixed-mode support for any other codecs, CallManager allocates and inserts transcoders as needed to handle the transcoding operations. Software conference bridges cannot transcode for any other codec type.

When setting up a conference on this type of device, you are guaranteed the availability of a minimum of three resources. You cannot extend the conference unless additional resources are available on the device when you attempt to extend the conference.

Mixed-Mode Conference Support for Gateway Supported Conference Bridges

The 26xx, 28xx, 36xx, and 38xx with voice processing modules do not directly support mixed-mode conferences. Their conference mixers only support G.711 A-law and μ-law. If mixed-mode conference support is needed when using these devices, CallManager allocates and inserts transcoders as needed.

Each conference on this device is mixed in a DSP. This limits the size of the conference to six or eight participants depending on which hardware is present, but has the advantage of guaranteeing that you can always have up to configured number of participants in each conference.

If CallManager knows that your conference is going to require more than three resources for features such as Join, where it is creating a conference from several current calls, it will request a conference bridge of sufficient size to accommodate the new conference.

If you know that a particular device is always used to set up large conferences and you want to use particular devices, such as Catalyst 6500 WS-SVC-CMM-ACT (up to 128 participants) or a software conference bridge (up to 48 conference participants), you could configure an MRGL for this device, and structure the MRGs with the appropriate devices in them in the order that you want them used. Such a setup would force the device to allocate from a resource pool that supports large conferences. (Conversely, you could construct another MRG and MRGL set with small conference resources in it and force another set of devices to use only those resources.)

Tip

Software conference bridges can support much larger conferences if they are installed on a dedicated server. Cisco does not recommend or officially support larger configurations, but CallManager and the Cisco IP Voice Media Streaming App are both capable of supporting much larger configurations. Larger configurations might stress the limits of the underlying network; so if you want to experiment with them, you should consider the network implications also. Large conferences can also affect voice quality, so you should carefully test your intended configurations.

Video Conference Support

Video conference bridges are set up much like audio conference bridges. Calls are initiated using the Confrn softkey or the MeetMe softkey. The IP phone reports its capabilities to CallManager when it registers, so the call is handled appropriately based on the capabilities of the devices involved in the call. A video bridge is normally capable of supporting either video or audio conferences and mixed conferences containing both audio calls and video calls.

Whether a given endpoint gets an audio conference bridge or a video conference bridge when a conference is invoked is determined solely by the MRGL to which the device is assigned.

CallManager also supports the use of H.323 video bridges, but their resources cannot be invoked using the Confrn softkey on the IP phones themselves.

Extending Existing Conferences

CallManager does not guarantee that resources will be available to extend the conference on hardware-based or software-based conference resources. It is possible to allocate a conference bridge on a device that has plenty of additional resources available to extend the conference at the time it was allocated and still have those resources all used in other conferences by the time you attempt to extend your conference. It is also possible to allocate a conference on a device that only has sufficient resources available to establish the conference. In this case, the conference cannot be extended, even though it would normally be allowed to grow. Some devices, by their implementation, guarantee that at least six participants can join any conference.

Controlling the Usage of Conference Bridge Servers

CallManager provides flexible and powerful mechanisms to control the allocation of conference bridges and other media resources. Which conference server to use when allocating a conference bridge depends first on the system configuration relating to media resource allocation, and second on which device is controlling the conference. Conference servers can be included in an MRG. MRGs are assigned to one or more MRGLs. Each device in CallManager might have an MRGL assigned to it, either by default or explicitly when the device is configured through CallManager Administration.

Note

Conference bridge servers are handled through MRGs and MRGLs the same as any other media processing resource. To understand how to configure and use MRGs and MRGLs to control conference bridge allocation, see the section “How to Control Media Resources Allocation.”

Note

CallManager allocates all conference resources based on the device and directory number the conference controller is using to set up the conference. The conference controller is the one who sets up the conference.

When CallManager determines that a conference bridge is needed, it allocates a conference bridge, using the MRGL assigned to the directory number that the conference controller is using on this call. If an MRGL is not assigned to the directory number explicitly, CallManager uses the MRGL assigned to the conference controller’s device. Failing that, CallManager uses the MRGL assigned to the device pool. If there is no MRGL assigned to the device pool, CallManager uses the conference servers that are available in the Null MRG. This group contains all servers that are not explicitly assigned to at least one MRG. If no conference servers are in the Null MRG, conferencing is not available for this call.

Default Configuration for Conference Servers

The initial system configuration does not have any MRGs defined. This initial configuration causes all media resource servers registered with CallManager to be in the Null MRG. It also forces all devices to use the Null MRG for all media resources allocation requests. This is the simplest configuration and makes every conference server that registers with CallManager available to all devices that are registered to CallManager. This configuration is sufficient for small- or medium-sized installations, where there is no requirement to assign media processing resources to particular groups of devices.

Device Registration and Initialization

Each conference device has a list of CallManager nodes with which it is allowed to register. The list is in priority order. In general, each conference device attempts to register with its primary CallManager node, which is the first node in its list. If it cannot register with that CallManager node for some reason, it attempts to register with each of the other CallManager nodes in its list, from highest priority to lowest priority, until it successfully registers with one of them. Because conference devices use the SCCP, their failover and fallback characteristics are similar to other station type devices and are not covered in detail here.

Note

The conference devices attempt to keep calls active in the event of failures. This along with their failover and fallback algorithms is covered in the section “Call Preservation During System Failures.”

A Look at Device Registration from the Side of CallManager

You control device registration in the CallManager cluster. Every device that is allowed to register with the cluster must first be defined in the CallManager database through CallManager Administration. The only exception is when phones are configured to auto-register, which requires that you enable auto-registration. When you define media processing resources, those resources are given a name and device type. Depending on the device being defined, other parameters and information are required, such as the maximum resource count for that device. Specific configuration parameters for each device are covered in the device-specific section.

The media processing device registration sequence is as follows:

  1. CallManager receives a registration request from a device, followed by a Station IP Port message that identifies the port that CallManager is to use when communicating with this device. The registration request contains the device name and the device type, among other things. CallManager then attempts to look up the device in the database using the device name. If the lookup attempt succeeds, all configuration information associated with this device is retrieved from the database, and the device is allowed to continue registering.

    See the section “Creating and Managing Conference Bridge Resources” for more details on what information is passed to CallManager on device registration.

  2. CallManager sends a Register Ack message, followed by a Capabilities Request message.

  3. The device sends a Capabilities Response message, followed by a KeepAlive message. The Capabilities Response message informs CallManager what codecs the device supports for incoming and outgoing media streams.

  4. CallManager responds with a KeepAlive Ack, and the device registration is complete.

  5. The device can send a StationMediaResourceNotificationMessage at any time following registration to inform CallManager of any changes in its resource processing capabilities, or to inform CallManager about its specific conference configuration. This message contains the following:

    • Maximum resources per conference

    • Number of resources in service

    • Number of resources out of service

  6. CallManager uses the maximum number of resources per conference as the maximum size of conference participants this device supports in any one conference. The StationMediaResourceNotificationMessage is also used to decrease or increase the number of resources that the device can support at the current time (which can also change the number of resources that the device can support). This message is used whenever the device experiences an event that changes its processing capabilities, such as a nonrecoverable DSP failure, some of its resources have been allocated outside of CallManager control, the device has been reconfigured, and so forth.

After the device has been registered, all the CallManager nodes in the cluster have access to it and can allocate and use the media processing resources of that device.

Conferencing Limitations and Configuration Notes

CallManager in general has a “resource-centric” view of conferencing resources that are registered with it. This view is consistent with the implementation of both the software conference bridges and the Catalyst WS-6608-T1 and WS-6608-E1 hardware modules. When dealing with standard G.711 conferences, the view is accurate and complete. In these cases, CallManager creates one conference bridge resource for each resource that is registered by these devices. It requires at least three participants to set up an Ad Hoc conference. These devices support conference sizes ranging from three up to the maximum number of resources supported by the device. This means that CallManager has complete control over the resources registered and can establish any number of conferences of varying sizes, as long as the total number of resources used in the conferences does not exceed the number of resources registered by the device. The conference sizes are, of course, limited by the maximum sizes configured through CallManager Administration.

For example: The device registers 32 resources. It does not limit the maximum number of conference participants per conference at the device level, and the maximum participants for a conference at the system level is set at 32. In this case, CallManager creates 32 conference resources to support this device, which allows CallManager to set up a maximum of 32 simultaneous conferences on this device. The device can support from 1 to 32 simultaneous conferences using the 32 resources. Some of the possible configurations that CallManager could set up are as follows:

  • A single conference with 32 participants

  • Two conferences with 16 participants each

  • Three conferences, one with 20 participants, one with 9 participants and the other with 3 participants

  • Eight conferences with three participants each and two conferences with four participants each

  • Ten conferences with three participants each

  • Any other combination, so long as the total number of conference participants does not exceed 32

Some DSP farms used for conference bridges, such as those available on the 26xx, 28xx, 37xx, and 38xx series gateways, are not implemented in the same manner. These devices are more “DSP-centric” in that they implement each conference on a separate DSP. This means that a single conference is limited in size to the maximum number of resources that can be processed by one DSP. In this case, even though the device might register 24 resources, for example, the largest conference it can support is six participants, because each DSP can handle a maximum of six resources. When these devices register, they also supply the optional parameter Max Resources Per Conference, which informs CallManager about this configuration. When this parameter is provided, CallManager divides the registered resource count by this parameter to compute the number of conference resources to create for that device. If the device registers 24 resources and 6 resources maximum per conference, CallManager creates four conference resources for this device.

For example, one of these devices registers 24 resources and a maximum per-conference resource limit of six. The maximum participants for a conference set through CallManager Administration is six. CallManager creates four conference bridge resources for this device, which in turn allows CallManager to create four simultaneous conferences. CallManager could then use the 24 resources to set up conferences in the following configurations:

  • Four conferences with six participants each

  • Four conferences, each having between three and six participants each

  • Four conferences with three participants each

  • Any other combination, as long as the total number of conferences does not exceed four and the maximum participants per conference does not exceed six

Tip

When using hardware that mixes conferences on the DSPs and the same device registration parameters as in the previous example, it is possible to use all the conference bridge resources and still have half of the resources unused, by setting up four conferences. This occurs when each conference has only three participants, which is the downside. The upside is that each conference has three more resources that are guaranteed to be available, and thus each conference can add three more participants, if desired.

Unicast Conference Bridge Application (Software)

The Cisco IP Voice Media Streaming App supports Unicast conferences and is a Cisco software application that installs on an MCS server during the CallManager installation process. In the installation, the component is called the Cisco IP Voice Media Streaming App and is common to the MTP, MOH, software Unicast conference bridge, and annunciator applications. The Cisco IP Voice Media Streaming App runs as a service under Microsoft Windows 2000.

Ad Hoc Conferencing

An Ad Hoc conference is established by using the Confrn softkey on the phone. The person who sets up the conference is referred to as the conference controller. As the conference controller, you add each participant to the conference and therefore have complete control over who joins the conference. You can also drop any participant from the conference that you choose based on the roster of conference participants provided. The conference participants can drop out of the conference any time they choose by hanging up the phone, thus terminating the call. As long as more than two participants remain in the conference, the conference bridge is still active, and the conference is maintained. When only two participants remain, they are connected directly, and the conference bridge is released.

Several variations exist as to the basic method of setting up a conference, but a conference controller always establishes an Ad Hoc conference. The conference controller sets up the conference by pressing the Confrn softkey during a call, calling a third person, and then pressing the Confrn softkey a second time. The first Confrn softkey press allocates the conference bridge for this conference. The second Confrn softkey press creates the conference and connects all three participants to it. The conference controller can continue to add additional participants to the conference until either the conference bridge being used is out of resources or the maximum number of participants as specified in system configuration is reached.

You can perform the same operation by using the Join softkey when the calls are already active. In this case, you select three or more calls and then press the Join softkey. CallManager allocates a bridge large enough to connect all the selected calls, and then connects each of the calls to the conference.

To add additional conference participants to the conference after it has been created, the conference controller presses the Confrn softkey on the phone. CallManager provides a dial tone to the controller; the conference controller then calls the person to be added, and presses the Confrn softkey again. The controller rejoins the conference, and the new participant is added to the conference.

Meet-Me Conferencing

A Meet-Me conference is established by using the MeetMe softkey on the phone. The person who sets up the conference is referred to as the conference controller. Unlike in an Ad Hoc conference, the conference controller does not have complete control over who joins the conference. The Meet-Me conference controller selects one of the Meet-Me conference numbers from the range specified for the CallManager node that is controlling the call. The conference controller then establishes the conference using that Meet-Me conference number. After the conference is established, anyone who calls that particular Meet-Me conference number is immediately connected to the conference.

Meet-Me Feature Operation

Two separate operations are involved in a Meet-Me conference call:

  • A user must establish a Meet-Me conference by pressing the MeetMe softkey on the phone and then dialing a Meet-Me number from a range of numbers available for that particular CallManager node.

  • After the conference has been established, each conference participant places a call to that particular Meet-Me conference number and is immediately connected into the conference.

Tip

If more control is needed over who can participate in a Meet-Me conference, participants can be instructed to dial in to an operator or attendant who then transfers them to the conference number and announces their joining.

Conference Configuration

You enable Ad Hoc or Meet-Me conferencing in CallManager by completing the following steps:

  1. Install and configure one or more hardware conference bridges in the cluster. It is not important which CallManager the conference server registers with, so long as CallManager is in the cluster. All conference and other media resources are shared across the entire cluster.

    or

    Activate the Cisco IP Voice Media Streaming App (Application > Cisco CallManager Serviceability > Tools > Service Activation). When this service is activated, it creates the software conference bridge, MTP, MOH, and annunciator devices automatically in the CallManager database with default settings. You can then configure them as needed.

  2. Set the conference service parameters that control the size and operation of conferences. See Table 5-6.

  3. Configure the new conference devices.

Table 5-6. CallManager Conferencing Service Parameters

Service Parameter

Value

Description

Suppress MOH to Conference Bridge

Default: True Values: True or False

This parameter determines whether music on hold (MOH) plays to a conference when a conference participant places the conference on hold. Valid values specify True (CallManager does not play MOH to the conference when a conference participant presses the Hold button) or False (CallManager plays MOH to the conference when a conference participant presses the Hold button).

Maximum Ad Hoc Conference

Default value: 4 Range: 3–64

This parameter specifies the maximum number of participants that are allowed in a single Ad Hoc conference. The value of this field depends on the capabilities of the software/hardware conference bridge. Setting this value above the maximum capacity of the conference will result in failed entrance to a conference bridge if you try to add more ports than the specific conference bridge configuration allows. Warning: CTI applications and the Drop Any Party feature (accessed via the ConfList softkey) do not support more than 16 participants. Although an Ad Hoc conference can support more than 16 participants, the participant list used by CTI applications and the Drop Any Party feature will display only the 16 most recent conference participants

Maximum MeetMe Conference Unicast

Default: 4 Range: 1–128

This parameter specifies the maximum number of participants that are allowed in a single Unicast Meet- Me conference. The value of this field depends on the capabilities of the software/hardware conference bridge; for example, a software conference bridge conferences up to 128 participants. When a conference is created, CallManager automatically reserves a minimum of three streams, so specifying a value less than three allows a maximum of three participants.

The conferencing service parameters in Table 5-6 are clusterwide parameters. The service parameters that set the size of conferences are normally set to 4. You can configure a higher number if you choose. Some conference bridge devices are limited to six participants, some to eight participants. Some of the newer bridges can support up to 64 participants in an Ad Hoc conference and 128 in a Meet-Me conference.

What Happens When Conference Resources Are Not Available

If you attempt to create or extend an Ad Hoc conference or to create a Meet-Me conference when the necessary conference resources are not available, the conference will not be created or extended. The behavior that the conference controller or the potential participants sees will vary depending on what conference resource is not available, and when that was determined. The following behaviors might be observed.

Out of Resources When Creating a Conference

When you attempt to create a conference and a conference bridge is not available, CallManager does not respond to the MeetMe or Confrn softkey. In other words, the softkey/button presses are ignored. The user is notified of the failure condition. Possible reasons for this condition include the following:

  • The conference bridge server has not registered with CallManager yet.

  • The conference bridge server failed for some reason.

  • All available conference bridges in the Null MRG are in use.

  • No conference bridge servers are in the Null MRG.

  • All available conference servers in the MRGL assigned to the conference controller are full.

  • No conference servers are in the MRGL assigned to the conference controller.

Out of Resources When Extending an Ad Hoc Conference

When a conference is already active, the conference controller attempts to add another participant to the conference, but no more resources are available for this conference, the user is left on hold, and the conference controller is joined back into the conference.

Out of Resources When Extending a Meet-Me Conference

When a Meet-Me conference is active and no more resources are available, a user dialing the Meet-Me conference number will hear reorder tone (sometimes referred to as fast busy) and will not be connected to the conference.

Maximum Number of Participants in an Ad Hoc Conference Exceeded

When a conference already has the maximum number of participants allowed in an Ad Hoc conference and the conference controller attempts to add another participant to the conference, CallManager displays a message on the phone indicating that the conference has the maximum number of participants allowed, and the conference controller stays connected to the conference.

Maximum Number of Participants in a Meet-Me Conference Exceeded

When a Meet-Me conference is active and the maximum conference participant count has been reached, a user dialing the Meet-Me conference number will hear a reorder tone and will not be connected to the conference.

Maximum Number of Conference Bridges Supported

The maximum number of conference bridges supported by the device can differ from the number of conference resources created in CallManager. If the device does not provide the maximum number of participants that can attend a single conference, CallManager creates one resource for each resource registered. If the device supports 24 participants total and does not tell CallManager that it supports six participants per conference, for example, CallManager creates 24 conference bridge resources for that device, even though it can support only four conferences. Normally this should never happen. If it does, the device has a registration or configuration problem.

Unicast Conference Performance Statistics

Performance counters are available that monitor the usage of Unicast conference resources. All performance statistics are monitored through Microsoft Windows 2000 counters. You can monitor these counters in the Real-Time Monitoring Tool (RTMT) in Cisco CallManager Serviceability. CallManager provides three sets of counters that are maintained by each CallManager node:

  • Unicast conference counters per CallManager node

  • Counters per software conference server from a CallManager’s perspective

  • Counters per hardware conference server from a CallManager’s perspective

Unicast Counters per CallManager

Each of the Unicast counters is for an individual CallManager node. They represent the total for all Unicast conference servers that are registered with that CallManager node, including both software and hardware counters. Table 5-7 lists the available counters and their meaning.

Table 5-7. Unicast Conference Counters per CallManager Node

Counter

Description

HWConferenceResourceTotal

This represents the total number of Unicast hardware conference resources provided by all hardware conference bridge devices that are currently registered with this CallManager.

HWConferenceResourceActive

This represents the total number of Unicast conference resources that are in use on all hardware conference devices that are registered with this CallManager. Each conference resource represents the availability of three available full-duplex streams on this CallManager. A conference resource is considered active when it has been allocated. One resource is equal to one stream.

HWConferenceResourceAvailable

This represents the number of Unicast hardware conference resources that are not in use and are available to be allocated on all hardware conference devices that are registered with this CallManager. Each conference resource represents the availability of three available full-duplex streams on this CallManager. One resource is equal to one stream.

HWConferenceActive

This represents the number of active Unicast conferences on all hardware conference devices registered with this CallManager.

HWConferenceCompleted

This represents the total number of conferences that used a Unicast hardware conference bridge allocated from this CallManager and have been completed, which means that the conference bridge has been allocated and released. A conference is activated when the first call is connected to the bridge. The conference is completed when the last call disconnects from the bridge.

HWConferenceOutOfResources

This represents the total number of times CallManager attempted to allocate a Unicast hardware conference resource from those that are registered to this CallManager when none were available.

SWConferenceResourceTotal

This represents the total number of Unicast software conference resources provided by all software conference bridge devices that are currently registered with this CallManager.

SWConferenceResourceActive

This represents the total number of Unicast conference resources that are in use on all software conference devices registered with this CallManager. A conference resource is considered active when it has been allocated. One resource is equal to one stream.

SWConferenceActive

This represents the number of active conferences on all Unicast software conference devices registered with this CallManager.

SWConferenceCompleted

This represents the total number of conferences that used a Unicast software conference bridge allocated from this CallManager and have been completed, which means that the conference bridge has been allocated and released. A conference is activated when the first call is connected to the bridge. The conference is completed when the last call disconnects from the bridge.

SWConferenceResourceAvailable

This represents the number of new Unicast software-based conferences that can be started at this point in time for this CallManager. A minimum of three resources must be available for each new conference. One resource is equal to one stream.

SWConferenceOutOfResources

This represents the total number of times CallManager attempted to allocate a Unicast software conference resource from those that are registered to this CallManager when none were available either because they were all in use or none were registered. This counter includes failed attempts to add a new participant to an existing conference.

Counters per Software Conference Server from a CallManager’s Perspective

Each software conference server registers with a CallManager independently, and CallManager maintains statistics about each software conference server that is registered. Table 5-8 lists the counters that are maintained for each registered software conference server.

Table 5-8. Unicast Software Conference Counters per Software Conference Server

Counter

Description

ResourceTotal

This represents the total number of conference resources provided by this software conference server. One resource is equal to one stream. This counter is equal to the sum of the counters ResourceAvailable and ResourceActive.

ResourceAvailable

This represents the total number of resources that are not active and are still available to be used at the current time for this software conference server. One resource is equal to one stream.

ResourceActive

This represents the number of resources that are currently in use (active) for this software conference server. One resource is equal to one stream.

OutOfResources

This represents the total number of times an attempt was made to allocate a conference resource from this software conference server and failed (for example, because all resources were already in use).

SWConferenceCompleted

This represents the total number of conferences that have been allocated and released on this software conference server. A conference is started when the first call is connected to the bridge. The conference is completed when the last call disconnects from the bridge.

SWConferenceActive

This represents the number of software-based conferences that are currently active (in use) on this software conference bridge server.

Counters per Hardware Conference Server from a CallManager’s Perspective

Each hardware conference server registers with a CallManager independently, and CallManager maintains statistics about each hardware conference server that is registered. Table 5-9 lists the counters that are maintained for each registered hardware conference server.

Table 5-9. Unicast Hardware Conference Counters per Hardware Conference Server

Counter

Description

ResourceTotal

This represents the total number of resources for this hardware conference bridge server. This counter is equal to the sum of the counters ResourceAvailable and ResourceActive. One resource is equal to one stream.

ResourceAvailable

This represents the total number of resources that are not active and are still available to be used at the current time for this hardware conference server. One resource is equal to one stream.

ResourceActive

This represents the number of resources that are currently in use (active) for this hardware conference server. One resource is equal to one stream.

OutOfResources

This represents the total number of times an attempt was made to allocate a conference resource from this hardware conference server and failed (for example, because all resources were already in use).

HWConferenceCompleted

This represents the total number of conferences that have been started and completed on this server. A conference is started when the first call is connected to the bridge. The conference is completed when the last call is disconnected from the bridge.

HWConferenceActive

This represents the number of conferences that are currently active (in use) on this hardware conference bridge server. One resource is equal to one stream.

MTP and Transcoding Resource Basic Architecture

This section describes the architecture of transcoding resources in CallManager, including a description of the Protocol Layer, the Media Control Layer, and device registration. Although the architecture is the same in many respects as conference resource architecture, there are important differences because transcoding resources are not signaling entities and are not known by the signaling layers.

Why to Use an MTP

An MTP is inserted on behalf of H.323 endpoints, such as third-party H.323 gateways that are involved in a call, to enable supplementary services to those endpoints. An MTP is only needed when an H.323 gateway does not support empty capability sets (ECS). Supplementary services include such features as hold, transfer, conference, park, and so forth. To implement these features, the logical channels to the endpoint must be closed and reopened again. Sometimes the logical channels are opened to another endpoint that differs from the first to implement a feature such as transfer.

An MTP is inserted on behalf of SIP endpoints to enable DTMF digit detection/generation as specified in RFC 2833. MTPs also supply ringback tone to SIP clients that are being transferred by an SCCP IP phone.

Figures 5-17, 5-18, and 5-19 illustrate the streaming connections created and torn down during a consultation transfer involving an H.323 endpoint.

Call Transfer Initiation

Figure 5-17. Call Transfer Initiation

IP Phone A Transfers Phone B to Phone C

Figure 5-18. IP Phone A Transfers Phone B to Phone C

Transfer Completion

Figure 5-19. Transfer Completion

Figure 5-17 shows the initial call from Phone B to IP Phone A. It goes through a third-party H.323 gateway that requires an MTP, so the MCL inserted an MTP into the media stream. It illustrates both the signaling and the media streaming connections.

Figure 5-18 illustrates the connections that exist after the user on IP Phone A pressed the Transf... softkey and called Phone C. Note that the media streams between the MTP and the H.323 gateway are still connected; so as far as the gateway knows, it is still connected to Phone A. The logical channels between the MTP and IP Phone A have been closed, and a new set of logical channels has been created between IP Phone A and IP Phone C. These two parties are talking to each other. After a short conversation, the user on IP Phone A presses the Transf... softkey again and completes the transfer.

Figure 5-19 shows the final signaling and streaming connections that exist when the transfer has been completed. Logical channels have been connected between IP Phone C and the MTP. As far as call control signaling layers and the users involved know, IP Phone C is connected to Phone B. The use of the MTP is transparent to the users. If the MTP had not been inserted into the call when it was required, supplementary services would not have been available on that call.

CallManager uses one of two basic methods to prevent the endpoint from tearing down the call when the media streams are closed, as follows:

  • Send the device a capability set with zero capabilities in it, and the device closes its media streaming connections

  • Insert an MTP into the media stream on behalf of the endpoint so that the media streams to the device are never closed

If the endpoint supports empty capability sets, when CallManager wants to close the media streams it sends the device a set of capabilities that has no capabilities in it. The device, on receiving that set of capabilities, closes all logical channels, but it does not tear down the call. CallManager can now establish a connection with another device. It sends the H.323 device another capability set with appropriate capabilities in it and then opens new logical channels to the new destination. H.323 v1 endpoints do not allow empty capability sets. If an endpoint does not support empty capability sets, it is not possible to extend any features to that endpoint directly. This is because the logical channels must be closed to implement any of the supplementary services such as those mentioned. As soon as the logical channels are closed, the H.323 endpoint tears down the call, even though it has not been instructed to do so through the signaling channels. In H.323 v2, the concept of empty capability sets was implemented. If the device is using H.323 v2 or a later protocol version, it allows CallManager, for example, to send a capability set to the H.323 device, which has no capabilities specified in it (an empty capability set). When the H.323 device receives these capabilities, it closes the logical channels and waits for a new capability set. All Cisco H.323 gateways support zero capability sets and thus do not require MTPs.

Figures 5-20 through 5-22 illustrate the connections and operation of an MTP in a SIP call where a SIP phone calls an IP phone extension 1005. 1005 answers the call and then blind transfers it to extension 1006.

Initial Call from SIP Phone to Extension 1005

Figure 5-20. Initial Call from SIP Phone to Extension 1005

Figure 5-20 shows the media connections that exist when the initial call is made from the SIP client to extension 1005 and the call was answered. Figure 5-21 illustrates the state of the call after a blind transfer has been initiated. The annunciator inserts a ringback tone toward the SIP client on command using an MTP. The tone plays until extension 1006 is answered or the call terminates.

Blind Transfer Initiated

Figure 5-21. Blind Transfer Initiated

Figure 5-22 illustrates the final state of the call after extension 1006 has answered it.

Blind Transfer Completed

Figure 5-22. Blind Transfer Completed

MTPs are also used to detect and generate DTMF tones from and to SIP clients respectively. Figure 5-23 illustrates DTMF detection between the SIP client and a MGCP gateway.

DTMF Detection from SIP Phone

Figure 5-23. DTMF Detection from SIP Phone

MTPs detect tones by looking for tone packets in the RTP stream. If found, the MTP captures the tone packet and forwards it to CallManager, where a digit notification is then sent to the gateway. Digits are inserted by an MTP when an out-of-band digit request is received by the MTP. It is inserted as a tone packet as specified by RFC 2833.

When an MTP Is Inserted

The MCL inserts an MTP on behalf of the following:

  • SIP endpoints

  • H.323 endpoints such as Microsoft NetMeeting clients

  • H.323 gateways only if the MTP Required flag is enabled through CallManager Administration for that device

MTPs are used in support of SIP and H.323 endpoints and are not used for any other type of endpoint. The MCL follows the steps in Figure 5-24 to determine whether an MTP is required. Figure 5-24 illustrates the processing steps in the MCL to determine whether to insert an MTP. When the MCL determines that an MTP should be inserted, it allocates an MTP resource from the resource pool specified by the MRGL associated with that device. The MCL inserts the MTP resource into the call on behalf of a SIP or H.323 endpoint. The MTP resource use is not visible to either the users of the system or the endpoint on whose behalf it was inserted.

MTP Allocation Flowchart

Figure 5-24. MTP Allocation Flowchart

Why to Use a Transcoder

Transcoders are used to connect calls whose endpoints do not have a common codec. A transcoder can be used as an MTP if an endpoint in the call requires an MTP and none are available. Transcoders are allocated and inserted into a call automatically by the MCL. The use of a transcoder resource is not visible to either the users of the system or the endpoint on whose behalf the transcoder was inserted.

It is possible that the endpoint devices in the call have common codecs available, but they cannot use them because CallManager restricts their usage. Regions are commonly used to restrict the bandwidth between endpoints, which in turn limits the codecs that can be used by the two endpoints. If the region specifications require a low-bandwidth codec be used between the two endpoints, and the two endpoints do not have a common low-bandwidth codec, a transcoder will be inserted, if it is available. For example, if one endpoint supports only G.723 and the other supports only G.729a for low-bandwidth usage, a transcoder is required. Another example occurs when a call is transferred to voice mail and that voice mail system requires a G.711 input stream. If a low-bandwidth caller cannot use a G.711 codec (possibly because of region restrictions), a transcoder is inserted on behalf of the voice mail port to transcode the media stream from a low-bandwidth stream to a higher-bandwidth G.711 stream. Figure 5-25 illustrates an example of how the system is configured when transcoders are needed. Transcoders are invoked only if matching codecs do not exist at the endpoints of a call.

The Insertion of a Transcoder into a Call

Figure 5-25. The Insertion of a Transcoder into a Call

Determining Which Device Needs the Transcoder

CallManager looks at the codecs for each endpoint in a call and, if a transcoder is required, allocates a transcoder using the MRGL assigned to the device that is using the highest-bit-rate codec in that call. If device A calls device B and device A is using a G.711 codec while device B requires a G.729a codec, the MCL in CallManager allocates a transcoder using the MRGL assigned to device A because G.711 codec produces a higher-bit-rate data stream.

On the other hand, assume that the same call were made between the same two devices but this time device A required the G.729a codec and device B was using its G.711 codec. The MCL in CallManager would allocate a transcoder using the MRGL assigned to device B because it is using the higher-bit-rate codec.

This general rule is always followed unless region specifications force allocations to occur in a different way. CallManager attempts to minimize the size of the data stream that is sent through the network. It makes the assumption that the transcoder is close to the device for which it is allocated. Therefore, if there is a low-bandwidth link between the two endpoints in a call, such as between a branch office and a main campus, the lower-bit-rate data stream crosses the low-bandwidth link between the two sites.

What Happens When Transcoders or MTPs Are Not Available When Needed

CallManager always attempts to connect calls whenever it can, and then provides supplementary services, if possible. Thus, if the choice is to connect the call without supplementary services or not to connect the call at all, CallManager by default chooses to connect the call, even with diminished capabilities. You can change this behavior by setting the CallManager service parameter Fail Call If MTP Allocation Fails to True, which will cause CallManager to fail the calls. With the default setting of False, CallManager follows these rules:

  • If an MTP is required for an H.323 endpoint in a given call and neither an MTP nor a transcoder (to act as an MTP) is available at that point in time, CallManager connects the call directly, and supplementary services are not available on that call.

  • If an MTP is required for a SIP endpoint in a given call and an MTP is not available at that point in time, CallManager terminates the call. All SIP calls through the SIP trunk require an MTP.

  • If a transcoder is required, that means that the two endpoints do not have matching codecs and cannot communicate with each other directly. In this case, CallManager attempts to connect the call, which causes the call to terminate without ever establishing a media connection.

Rules for Inserting Transcoders and MTPs When They Are Available

As far as the MCL is concerned, a call is a connection between two parties. If the call is a conference call, for example, the MCL is not aware of the conference. To the MCL, a conference call is a series of individual calls. The fact that the second party in all of those individual calls is a conference bridge is of no particular interest to the MCL. The MCL simply makes connections between two parties as directed by call control. In the case of a conference call, the conference supplementary service is the only entity within CallManager that knows that there is a conference call being set up. In a conference call, each person connected to the conference bridge appears to the MCL as a separate call between the caller and the conference bridge. Because each party is individually connected to the conference bridge, the MCL inserts an MTP or transcoder only if one is required for that call. Thus, many MTPs or transcoders might be involved in a single conference, or none at all, depending on the requirements of each connection that is part of the conference.

The rules for inserting transcoders and MTPs apply to each individual call and can be quite complex in some instances. Provided first is a simple set of rules that will suffice for understanding how, in general, the selection is made. A more in-depth explanation follows for those interested in greater detail.

In any single call, MCL inserts a maximum of two MTPs. If a transcoder is required, normally only one transcoder is inserted in a call by a given CallManager cluster.

The MCL first obtains the capabilities of both endpoints involved in the call. The MCL does not attempt to make a connection until it has received the capabilities from both endpoints in the call.

Figure 5-26 shows the configuration where phones at a remote site call each other using G.711 both at the central office and at the remote office. The communication link between the remote site and the central campus is a low-bandwidth connection, so the calls over that link are restricted to G.723.

Intercluster Calls with Restricted Bandwidth

Figure 5-26. Intercluster Calls with Restricted Bandwidth

In this example, two transcoders are required because the region matrix forces a G.723 codec between the endpoints and the trunk devices. (The bandwidth between Region A and Region B is set to G.723, and the bandwidth between Regions C and D is set to G.723.) Within Regions A and D, the bandwidth is set to G.711. The CallManager node at the central campus inserts a transcoder between voice mail and the H.225 trunk, because the bandwidth between Region C and Region D is G.723 and voice mail does not support that codec. The CallManager node at the remote site inserts a transcoder between the phone and the H.225 trunk, because the Cisco IP Phone 7960 does not support the G.723 codec.

CallManager automatically inserts a transcoder when one is needed because of lack of a common codec between endpoints in a call. CallManager allocates a transcoder based on the capabilities of the endpoints involved in the call and the region matrix that is applicable to the respective endpoints. Table 5-10 describes MCL actions when determining whether to insert MTPs or transcoders.

Table 5-10. Rules for Inserting MTPs and Transcoders Within a Single CallManager Cluster

Current Resources Allocated in the Call

MCL Actions

No resources allocated

Match capabilities between two parties. If capabilities do not match, allocate a transcoder whose capabilities match at least one available codec on each endpoint.

If both parties require an MTP, allocate an additional MTP for the other party.

No resources allocated

Match capabilities between two parties. If capabilities do not match and no transcoder is available whose capabilities match at least one available codec on each endpoint, terminate the call. (Not all transcoders support all capabilities of the endpoints.)

No resources allocated

Match capabilities between two parties. If capabilities match, check both parties to see whether they require an MTP. Allocate an MTP for each of the two parties that require one. If none are required, connect the call direct without any MTPs or transcoders.

One MTP

Match capabilities between MTP and the other party. If capabilities do not match, allocate a transcoder.

One MTP

Match capabilities between MTP and the other party. If capabilities match and MTP is required for other party, allocate another MTP.

One transcoder

If MTP is required for other party, allocate an MTP.

One transcoder and one MTP

No additional resource required.

Two MTPs

Match capabilities between the two MTPs. If capabilities do not match, allocate a transcoder.

H.323 devices usually do not require an MTP or transcoder, so the MCL does not allocate one unless the H.323 device has the MTP Required flag set. The Cisco H.323 gateways support all of the low-bandwidth codecs supported by Cisco IP Phones, so it usually comes down to configuring the right codec on the gateway to work with the phones. If this is not adequate because of various regions and third-party devices, you can explicitly invoke an MTP by enabling MTP Required for the gateway.

Device Control and Operation

The device control process maintains device status, resource availability, and other such information about the device. It is also responsible for device registration and all communication to and from the device. When the MRM is allocating resources, it always queries the device control process for available resources once a potential device is selected.

Device Registration and Initialization

Normally, when a device registers with a CallManager node, it has all its resources available. If the device was previously registered with a CallManager node that failed, and the MTP device had active calls at the time of the failure, the device still attempts to register with its backup CallManager node. Calls that are active on the server at the time it lost communication with its primary CallManager node are maintained in an active state. In other words, CallManager attempts to maintain all calls that are in an active state when a CallManager node fails. See the section “Call Preservation During System Failures” for more details on how calls are preserved.

MTP and Transcoder Configuration

You can enable MTPs and transcoders by completing the following steps:

  1. Install and configure one or more hardware transcoders in the cluster. It is not important which CallManager node the transcoder registers with, so long as the CallManager node is in the cluster. All transcoder and MTP resources are shared across the entire cluster.

    or

    Activate the Cisco IP Voice Media Streaming App. When you activate this service, it automatically creates an MTP device in the CallManager database with default settings. You can then configure it as needed.

  2. Configure the new transcoder devices or modify the MTP device configuration, if you choose.

MTP and Transcoder Performance Statistics

A number of performance counters are available to monitor the usage of MTPs and transcoders. All performance statistics are monitored through Microsoft Windows 2000 counters. You can monitor these counters using the Real-Time Monitoring Tool in CallManager Serviceability. CallManager provides three sets of counters that are maintained by each CallManager node:

MTP and Transcoder Counters per CallManager Node

Each of the counters described in Table 5-11 is for an individual CallManager. They represent the total for all MTP and transcoder servers that are registered with that CallManager node.

Table 5-11. MTP and Transcoder Counters per CallManager Node

Counter

Description

MTPResourceTotal

This represents the total number of media termination point (MTP) resources provided by all MTP devices that are currently registered with this CallManager.

MTPResourceActive

This represents the total number of MTP resources that are currently in use (active) on all MTP devices registered with this CallManager. Each MTP resource uses two streams. An MTP is in use when it has been allocated for use in a call.

MTPResourceAvailable

This represents the total number of MTP resources that are not in use and are available to be allocated on all MTP devices that are registered with this CallManager. Each MTP resource uses two streams.

MTPOutOfResources

This represents the number of times CallManager attempted to allocate an MTP resource from one of the MTP devices that is registered with this CallManager when none were available, either because they were all in use or none were registered. This also means that no transcoders were available to act as MTPs.

TranscoderResourceTotal

This represents the total number of transcoder resources provided by all transcoder devices that are currently registered with this CallManager.

TranscoderResourceActive

This represents the total number of transcoders that are in use on all transcoder devices registered with this CallManager. A transcoder is in use when it has been allocated for use in a call. Each transcoder resource uses two streams.

TranscoderResourceAvailable

This represents the total number of transcoders that are not in use and are available to be allocated on all transcoder devices that registered with this CallManager. Each transcoder resource uses two streams.

TranscoderOutOfResources

This represents the number of times CallManager attempted to allocate a transcoder resource from one of the transcoder devices that is registered to this CallManager node when none were available, either because they were all in use or none were registered.

Counters per MTP Device from a CallManager’s Perspective

Each MTP device registers with a CallManager independently, and CallManager maintains statistics about each MTP device that is registered. Table 5-12 contains the counters that are maintained for each registered MTP device.

Table 5-12. Counters per Registered MTP Device

Counter

Description

ResourceTotal

This represents the total number of MTP resources provided by this MTP device. This counter is equal to the sum of the counters ResourceAvailable and ResourceActive.

ResourceAvailable

This represents the total number of MTP resources that are not active and are still available to be used at the current time for the MTP device. Each MTP resource uses two streams.

ResourceActive

This represents the number of MTP resources that are currently in use (active) for this MTP device. Each MTP resource uses two streams. An MTP is in use when it has been allocated for use in a call.

OutOfResources

This represents the total number of times an attempt was made to allocate an MTP resource from this MTP device and failed (for example, because all resources were already in use).

Counters per Transcoder Device from a CallManager’s Perspective

Each transcoder device registers with a CallManager independently, and CallManager maintains statistics about each transcoder device that is registered. Table 5-13 contains the counters that are maintained for each registered transcoder device.

Table 5-13. Counters per Registered Transcoder Device

Counter

Description

ResourceTotal

This represents the total number of transcoder resources provided by this transcoder device. This counter is equal to the sum of the counters ResourceAvailable and ResourceActive.

ResourceAvailable

This represents the total number of transcoder resources that are not active and are still available to be used at the current time for this transcoder device. Each transcoder resource uses two streams.

ResourceActive

This represents the number of transcoder resources that are currently in use (active) for this transcoder device. Each transcoder resource uses two streams.

OutOfResources

This represents the total number of times an attempt was made to allocate a transcoder resource from this transcoder device and failed (for example, because all resources were already in use).

Music on Hold (MOH)

For callers to hear MOH, an MOH server must be registered with the CallManager cluster. When the Cisco IP Voice Media Streaming App is activated, it creates an MOH device using default settings that support the basic MOH functionality. The MOH feature has two different aspects. The feature requires an MOH server to provide the MOH audio stream sources, and the feature also requires CallManager to be configured to use the MOH streams provided by the MOH server when a call is placed on hold. This section describes both aspects of the feature:

Configuring MOH Servers

An MOH server is a software application that runs on a Microsoft Windows 2000 server. It is installed as a service during CallManager installation and by default is deactivated. If an MOH server is needed, the Cisco IP Voice Media Streaming App service must be activated. If the MOH server is installed on a dedicated server, it can support up to a total of 500 MOH Unicast or Multicast streaming connections between all of its audio sources. All MOH servers in a cluster have the same audio source file configuration. This means that audio source 1 provides the same audio source on all MOH servers, audio source 2 provides the same audio source on all MOH servers, and so forth. One audio source on an MOH server can support from 1 to 500 MOH output streaming connections. In other words, the users connected to all 500 MOH output streams could be listening to the same music or audio source at the same time.

MOH servers support a total of 51 audio sources, 50 of which come from audio files on the disk. One audio source, source 51, is a fixed audio source connected to a sound card. An audio source file on disk can be encoded in one of several different formats for the supported codecs. Each of those 51 sources can support both Unicast and Multicast connections at the same time, and the source can be streamed for all supported codecs simultaneously. The MOH servers support G.711 (A-law and μ-law), G.729a, and wideband audio codecs.

The IP Voice Media Streaming App implements the MOH server. The IP Voice Media Streaming App is the same application software that implements software Unicast conference bridges and MTPs. Each source stream is essentially a nailed-up conference with a fixed identifier called an audio source ID. It has a single input stream that is streaming audio data from a data source, and one or more output streams that transport the streaming data to the devices that are connected to MOH. The source stream audio source IDs range from 1 to 51, with 51 being reserved for the single fixed data source that is usually from the sound card.

Figure 5-27 illustrates phones with particular source assignments and how the MOH server handles the connections. Figure 5-27 illustrates the basic architecture of the MOH subsystem. In this drawing, it is assumed that the MOH source assignment for each phone was already determined, and it is shown below the phone. A held device can be connected to any of the 500 possible MOH output streams and receive its specified audio source. When the logical channel is connected to the MOH server, the MOH server looks at the codec type being specified and the audio source ID supplied. It then connects the correct source to the port where that logical channel was connected.

MOH Stream Connections

Figure 5-27. MOH Stream Connections

Note that there is a source file on the disk for each of the codec types. This means that for source 1, which is Pop music, there are four files with the same music in them, but each of them is formatted for one of the different codecs. The MOH server selects the right source file to use based on the audio source ID supplied and the codec type specified in the logical channel connection. When the held device closes the logical channel to the MOH server, the MOH server stops the stream for that port as well.

Many logical channels can receive music from the same source file at the same time. As long as one logical channel is receiving music from a given source file, the MOH server continues streaming that source file. When there are no more connections to that source file, the MOH server stops streaming that source.

Note

The section “Configuring Cisco CallManager to Use MOH” explains in detail how to determine the source assignment for a particular call.

MOH Server Audio Source and Audio Source ID

An audio source can be either a file or a fixed audio source. The source files must be in either G.711 A-law or μ-law formats, recorded at a sampling rate of 8 kHz, G.729a, or wideband. These data sources are disk files containing audio data that has been transcoded or formatted for the particular codec type before being loaded onto the disk of the MOH server. There is a one-to-one correspondence between audio sources and audio source IDs.

The fixed data source is provided by the Windows audio input that is normally linked to the local sound card. This allows radios, CD players, or any other compatible sound source to be used. The stream from the fixed data source is transcoded in real time to support the codec that was configured through CallManager Administration. The fixed data source can be transcoded into G.711 A-law and μ-law, G.729a, and wideband. This is the only data source that is transcoded in real time. G.729 will consume about 5 to 7 percent of your total CPU time in this transcoding operation.

Using the MOH Audio Translator

When you want to add a new audio source or to update an existing one, the new audio source must be transcoded and converted to the proper format, and then copied to the proper location where the TFTP server can pick it up and send it to all MOH servers when requested. The MOH Audio Translator is used to accomplish this task.

To add a new audio source to the MOH servers, copy the source file into the Audio Source Input Directory as specified by the Cisco MOH Audio Translator service parameter MOH Source Directory. The default directory path for this directory is c:Program FilesCiscoMOHDropMOHAudioSourceFilesHere. Valid input files are most standard .wav and .mp3 files. It takes about 30 seconds to convert a 3-MB .mp3 file.

When the file is dropped into this directory, the Audio Translator service detects the file and automatically processes it, creating the audio source files needed for all supported codecs. The files are then moved to the output directory, along with all transcoded files that were created. The path for this directory is specified by the Cisco MOH Audio Translator service parameter Default TFTP MOH File Path. Whatever directory path is specified, MOH will be appended to it. All transcoded files are stored in this MOH directory.

When you configure a particular audio source for a particular codec, CallManager Administration copies the files from the output MOH directory where they are stored to the TFTP file path directory. The path names used for these two directories can be changed by changing the values of the two Cisco MOH Audio Translator service parameters.

Caution

If Audio Translator is installed on the same server as CallManager and files are translated, CallManager might experience errors or slowdowns. This process consumes all available CPU cycles until it is done with the conversion. Cisco recommends that you do not install this service on a server where the CallManager service is activated and running.

Table 5-14 contains the service parameters used by the MOH servers and Audio Translator service.

Table 5-14. Service Parameters for Audio Translator and MOH Server

Service Parameter

Service It Applies To

Definition

MOHSourceDirectory

MOH Audio Translator

Defines the directory where new audio sources are dropped so that they will be transcoded for the supported codecs.

This parameter applies servicewide.

DefaultTFTPMOHFilePath

MOH Audio Translator

Defines the directory path for the TFTP source directory. MOH is appended to this path name to create the output directory.

This parameter applies on a server-by-server basis.

DefaultTFTPMOHIPAddress

Media Streaming App

IP address or computer name of the server where the transcoded audio source files are located.

This parameter applies on a server-by-server basis.

DefaultMOHCodec

Media Streaming App

Defines the codecs that are supported in this installation. The possible values are: G.711 μ-law, G.711 A-law, G.729, wideband.

This parameter applies servicewide.

MOH Source Stream Play Mode

You configure the source play mode to one of two settings:

  • Continuous

  • One shot

CallManager is not aware of the play mode.

Continuous Play Mode

Continuous play mode causes the MOH server to stream the data from the audio source file in a loop. This means that as soon as it has streamed the file from start to finish, it immediately begins streaming from the start again. This continues for as long as this audio source is being streamed.

The MOH server keeps track of how many MOH output streams are connected to each audio source, and when the count reaches zero, the audio source streaming is stopped. The fixed audio source is always played continuously and is not stopped. If Multicast support is selected for this audio source, the audio source is played continuously, because the MOH server does not know when held devices are listening at a Multicast point.

One Shot Play Mode

One shot play mode, as it is currently implemented, is designed to support one connection at a time. It works as long as only one user is connected to a given audio source. The connected user always hears the complete audio clip from the beginning exactly one time. When the clip ends, the user hears silence until being retrieved from hold.

If any other users are connected to that audio source while the first user is still connected, they hear the clip starting wherever it was at the time the user was connected. If the clip is finished, they hear silence, just like the first caller. For example, if the first user already listened to half of the one shot audio clip when the second user was connected to the same audio source, the second user would only hear the second half of the clip, starting wherever the clip was in its playback when the user was connected. When all users are disconnected from the one shot audio source, the cycle starts again for the next user that is connected to the one shot source.

Handling MOH Stream Connections Errors

Table 5-15 shows what happens when the audio streams are not configured correctly in the system, and what will happen to the MOH stream connection if that error occurs.

Table 5-15. Stream Connection Errors

Error

Actions Taken

Audio source is not configured

If an audio source is selected that is not connected to an audio source file, the held devices will hear silence.

Connection to CallManager is lost

The MOH server terminates all current output stream connections. This is done because CallManager cannot disconnect the streams because it cannot talk to the MOH server. The callers that were hearing MOH will now hear silence.

MOH Server Initialization

When an MOH server is initialized, it checks the date and timestamp for its audio source files against the values stored in the CallManager database. If they differ, the new files are obtained from the default TFTP client as specified by the Cisco IP Voice Media Streaming App service parameter Default TFTP MOH IP Address. After the transfer is completed, the date and times on the MOH server are updated for each file that was transferred.

The same process is followed when the MOH server receives a change notification for the selected audio source. If the audio source is currently being streamed and a change is noted, the new audio source is retrieved and used when the current audio source is no longer active.

Summary of MOH Server Capabilities

The following are the current capabilities of the MOH servers:

  • Supports a total of 500 one-way Unicast or Multicast audio output streams at the same time. All the output connections can be connected to one source stream or any combination of source streams. Note that a Multicast connection does not take any extra stream resources from the MOH server.

  • Fifty audio source IDs, each of which is assigned to an audio source, can be specified.

  • One fixed audio source (from sound card) can be used (audio source ID 51).

  • An audio source can be configured to play in a continuous loop or one shot. If a source stream has the Multicast option selected, the data source is automatically played in a continuous loop, because the MOH server does not know when devices are connected to the Multicast points. The MOH server makes the assumption that someone is always connected to the MOH Multicast point. If the Multicast option is not selected, but the source stream is configured to play in a continuous loop, the music source is only played when output streams are connected to the audio source stream.

  • G.711 A-law, G.711 μ-law, G729a, and wideband audio codecs are supported.

  • Unicast and Multicast output is supported for each audio source.

Tip

The possibility exists for the MOH server to support up to 500 output streams simultaneously. As new server hardware becomes available with faster processors, this stream count will likely increase. These are the current limits.

MOH Multicast Configuration

CallManager Administration configures each MOH server with a Multicast base address and port, and it specifies whether the port or the IP address is to be incremented to create a range of Multicast IP addresses as required. Each MOH server must be configured with a different range of Multicast addresses. This prevents multiple servers from streaming audio to the same Multicast address.

It is not necessary for all MOH servers to support Multicast streams. One server can provide all 51 streams to 51 different Multicast addresses for each enabled codec. If all codecs are enabled, you must have 204 different Multicast addresses.

Tip

It might be useful to configure two or more servers for Multicast so that if one server fails, Multicast is still available.

The MOH servers can provide each audio source as a Unicast stream and a Multicast stream. If Multicast output is desired, the Multicast check box for that source must be checked in the audio source configuration, and the MOH server must be configured for Multicast, as well.

Configuring CallManager to Use MOH

MOH is configured through CallManager Administration. After an MOH server has been configured in the database, it can be added to one or more MRGs. An MOH server is a standard media processing resource. Its usage can be controlled and configured the same as any other media processing resource by using MRGs and MRGLs.

Hold Types in CallManager

There are two different types of hold, as follows:

  • User hold

  • Network hold

User hold is invoked when a user directly places a call on hold by pressing the Hold softkey on a Cisco IP Phone. Network hold is invoked when a caller is placed on hold by some other feature, such as a transfer. The user presses the Transf... softkey on a Cisco IP Phone, and as a result, CallManager places the user on network hold until the transfer is completed.

How a Stream Source Is Selected When a User Is Placed on Hold

The stream source that a given held call hears depends on how both the device that originated the hold and the device being held are configured. The device that originated the hold determines which audio source is played to the user being held, and the device that is being held determines which MOH server will be used to supply the source audio stream. Figure 5-28 illustrates these connections.

How MOH Streams Are Selected

Figure 5-28. How MOH Streams Are Selected

Figure 5-28 illustrates a possible configuration of a cluster with two CallManager nodes in one location and a PSTN connection. The following examples use this configuration.

Example 1: Caller on 5000 Is Placed on Hold

Scenario: PSTN phone 5000 calls 3001 at PWI Brokerage Inc., and 3001 answers the call. 3001 places 5000 on hold.

In this example, 5000 is connected to MOH server MOH 1 because the gateway is assigned to MRGL1. MRGL1 has Hold Group 1 in its list. The caller is listening to the stream source 2 because the user hold stream for 3001 is set to stream source 2, which just happens to be a sales infomercial about new account types and services. The user on phone 5000 listens to a great sales pitch.

Example 2: Caller on 5001 Is Placed on Network Hold and then on User Hold

Scenario: PSTN phone 5001 calls 3000 at PWI Brokerage Inc. A stockbroker at 3000 answers and finds out that the caller wants to set up a new account. The stockbroker then transfers the caller to 3001 in new accounts.

When the stockbroker presses the Transf... softkey on the phone, the caller is placed on network hold. The caller then hears stream source 4, which is playing country music because the Network Hold Stream Source for 3000 is set to stream source 4, Country. The music is delivered from server MOH 1 because the gateway is assigned to MRGL1.

After a minute or two, the new account representative answers on 3001, but is extremely busy and puts the caller on 3001 on hold. Now the caller hears a nice sales pitch on all of the new accounts and services being offered. This occurs because the User Hold Stream Source for 3001 is set to stream source 2, Sales Info. The Sales Info stream is provided from MOH 1 because the gateway is assigned to MRGL1. Finally, the new account representative retrieves the call from hold and sets up the new account.

MOH and Conferences

Conference is a special case for MOH. With default settings, MOH is never played directly into a conference. If a conference participant places the conference on hold, CallManager recognizes this as a special case and does not connect that held call to MOH. The conference hears silence from that participant until he or she resumes the conference call. You can change this behavior by setting the CallManager service parameter Suppress MOH to Conference Bridge to False. This causes MOH to be played into a conference when the conference is placed on hold.

Configuring MOH in CallManager

Configuring and using MOH in CallManager can be very simple or very complex, depending on the requirements for your installation.

Initial MOH Configuration

MOH is disabled when CallManager is installed and the Cisco IP Voice Media Streaming App is not activated. In this configuration, CallManager plays Tone on Hold when a caller is placed on hold for any reason, if the endpoint device associated with that user is capable of generating Tone on Hold. If not, the caller hears silence.

Simplest MOH Configuration

The MOH server is installed when the Cisco IP Voice Media Streaming App is installed during the CallManager installation process. When the IP Voice Media Streaming App service is activated, it automatically installs a default sound source file, and it creates and configures an MOH device in the database. After MOH has been activated, all devices have access to MOH as soon as the MOH server registers with a CallManager node. By default, all callers hear audio source 1 from the MOH server anytime a call is placed on hold.

In this case, all devices are getting their MOH server through the Null MRG where the MOH server is declared by default because it is not part of any MRG. The Hold Stream Source defaults at the system level are set to audio source 1. This continues until you change the configuration by putting the MOH server into an MRG.

More Complex MOH Configurations

If a more complex configuration is needed, creating MRGs and MRGLs and assigning MRGLs to various devices in the system can achieve it. When you configure an MRG with an MOH server in it, you must also configure the Multicast/Unicast flag for that MRG.

The MOH User Hold Stream Source and the MOH Network Stream Source can be set to any MOH stream source that is configured on the MOH servers. If either User Hold Stream Source or Network Hold Stream Source is set to an audio source that has not yet been configured on the MOH servers, the callers will hear silence when connected to MOH.

A Multicast flag is in the MRG. If the Multicast box is not checked, Unicast streams are used for all MOH connections. If the Multicast box is checked, MOH allocation attempts try to allocate and use a Multicast stream connection. If Multicast MOH streams are not available, the held calls hear Tone on Hold, if their endpoint device supports it. Otherwise, they hear silence.

Order of Precedence of MOH Music Stream Source Assignments

MOH stream source assignments follow a defined order of precedence. When CallManager processes a hold request, it decides which MOH audio source stream to use based on the MOH stream source assignments in order of precedence, with 1 being the highest precedence. Table 5-16 defines the MOH source assignment order of precedence for both user hold and network hold.

Table 5-16. MOH Stream Source Assignment Precedence

MOH Source Assignment Order of Precedence

Comments

1. Assigned at the directory number level

The MOH stream source assigned at the directory number level applies only to that particular directory number and has precedence over all other MOH source assignments, if any, that are on the device level or device pool level.

2. Assigned at the device level

An MOH stream source assigned at the device level applies only to that particular device. The device level MOH stream source assignment has precedence over the MOH source assigned at the device pool level.

3. Assigned at the device pool level

The MOH stream source assigned at the device pool level applies to all entities that are assigned to that device pool. It has precedence over the system defaults.

4. Default system assignments

This is the most general level at which MOH stream sources can be assigned, and it applies when CallManager cannot find any other MOH stream source assignment that applies for a particular call based on the device and directory number used.

CallManager MOH Usage and Performance Monitoring

All performance monitoring provided by CallManager occurs through the use of Cisco-provided objects and counters. Each Cisco object contains one or more counters. You can monitor these counters in the RTMT in CallManager Serviceability. CallManager provides two sets of counters that are maintained by each CallManager node:

Counters per CallManager Node

Each of the following counters is for an individual CallManager node. They represent the total for all MOH servers that are registered with that CallManager node (see Table 5-17).

Table 5-17. MOH Counters per CallManager Node

Counter

Description

MOHMulticastResourceActive

This represents the total number of Multicast MOH resources that are currently in use (active) on all MOH servers registered with this CallManager.

MOHMulticastResourceAvailable

This represents the total number of Multicast MOH connections that are not being used on all MOH servers that are registered with this CallManager.

MOHTotalMulticastResources

This represents the total number of Multicast MOH resources or connections provided by all MOH servers that are currently registered with this CallManager.

MOHUnicastResourceActive

This represents the total number of Unicast MOH resources that are currently in use (active) on all MOH servers that are registered with this CallManager. Each MOH Unicast resource uses one stream.

MOHUnicastResourceAvailable

This represents the total number of Unicast MOH resources that are currently available on all MOH servers registered with this CallManager. Each MOH Unicast resource uses one stream.

MOHTotalUnicastResources

This represents the total number of Unicast MOH resources or streams provided by all MOH servers that are currently registered with this CallManager. Each MOH Unicast resource uses one stream.

MOHOutOfResources

This represents the total number of times that the Media Resource Manager attempted to allocate an MOH resource when all available resources on all MOH servers registered with this CallManager were already active, or none were registered.

Counters per MOH Server from a CallManager’s Perspective

Each MOH server registers with a CallManager node independently, and CallManager maintains statistics about each MOH server that is registered. Table 5-18 lists and describes the counters that are maintained for each registered MOH server.

Table 5-18. Counters per Registered MOH Server

Counters

Description

MOHMulticastResourceActive

This represents the number of currently active Multicast connections to Multicast addresses served by this MOH server.

MOHMulticastResourceAvailable

This represents the number of MOH Multicast connections to Multicast addresses served by this MOH server that are not active and are still available to be used at the current time.

MOHTotalMulticastResources

This represents the total number of Multicast MOH connections allowed to Multicast addresses served by this MOH server.

MOHUnicastResourceActive

This represents the number of active Unicast MOH connections to this MOH server. Each MOH Unicast resource uses one stream.

MOHUnicastResourceAvailable

This represents the number of Unicast MOH connections that are not active and are still available to be used at the current time for this MOH server. Each MOH Unicast resource uses one stream.

MOHTotalUnicastResources

This represents the total number of Unicast MOH connections allowed by this MOH server. Each MOH Unicast resource uses one stream.

MOHOutOfResources

This represents the total number of times that the Media Resource Manager attempted to allocate an MOH resource when all available resources on all MOH servers registered with this CallManager were already active.

MOHHighestActiveResources

Indicates the largest number of simultaneously active MOH connections on this MOH server, including both Multicast and Unicast connections.

Video Call Processing Architecture

CallManager supports video as a normal part of call processing. If video is supported on a particular endpoint, then making a video call can be as simple as making a voice call. In fact, you do not have to do anything different when placing a video call. Locations and regions are used to control the bandwidth for video calls. Bandwidth is controlled separately for video and audio so that you can set limits on each of them independently.

When a call is attempted from an endpoint that supports video to another endpoint that also supports video, CallManager always attempts to set up both audio and video channels for the call. If CallManager cannot get the bandwidth required for the video call, it automatically retries the call as audio only. Video calls are supported for SCCP endpoints and H.323 endpoints.

CallManager Video Usage and Performance Monitoring

All performance monitoring provided by CallManager occurs through the use of Cisco-provided objects and counters. Each Cisco object contains one or more counters. You can monitor these counters in the RTMT in CallManager Serviceability. CallManager provides three sets of counters that are maintained by each CallManager node:

  • Video counters per CallManager node

  • Video conference server counters per CallManager node

  • Counters per video conference server from a CallManager’s perspective

Counters per CallManager Node

Table 5-19 documents a set of counters for an individual CallManager node. They represent the total for all video calls processed by that CallManager node.

Table 5-19. Video Call Counters per CallManager Node

Counters

Description

VideoCallsActive

This represents the number of active video calls with active video streaming connections on this CallManager.

VideoCallsCompleted

This represents the number of video calls that were actually connected with video streams and then released.

VideoOutOfResources

This represents the total number of times CallManager attempted to setup video channels when there was not sufficient bandwidth over the desired network link for the video channels, or the configured video bandwidth limit would have been exceeded.

Table 5-20 documents the set of video conference counters for each CallManager node. The counters represent the total for all video conferences on all video conference servers that are registered with that particular CallManager node.

Table 5-20. Video Conference Server Counters per CallManager Node

Counters

Description

VCBConferencesActive

This represents the number of active video calls with active video streaming connections on all video conference bridge devices registered with this CallManager.

VCBConferencesAvailable

This represents the total number of new video conferences that can be started on all video conference bridge devices registered with this CallManager.

VCBConferencesCompleted

This represents the total number of video conferences that used a video conference bridge allocated from this CallManager and have been completed, which means that the conference bridge has been allocated and released. A conference is activated when the first call is connected to the bridge. The conference completes when the last call disconnects from the bridge that was connected and released.

VCBConferencesTotal

This represents the total number of video conferences supported on all video conference bridge devices registered with this CallManager.

VCBOutOfConferences

This represents the total number of failed new video conference requests. A conference request can fail because (for example, the configured number of conferences are already in use).

VCBOutOfResources

This represents the total number of times that CallManager attempted to allocate a video conference resource from those that are registered to this CallManager when none were available.

VCBResourceActive

This represents the total number of video conference resources that are currently in use on all video conference devices that are registered with this CallManager.

VCBResourceAvailable

This represents the total number of video conference resources that are not active and are currently available.

VCBResourceTotal

This represents the total number of video conference resources provided by all video conference bridge devices that are currently registered with this CallManager.

Counters per Video Conference Server from a CallManager’s Perspective

Each Video Conference server registers with a CallManager independently, and CallManager maintains statistics about each Video Conference server that is registered. Table 5-21 lists and describes the counters that are maintained for each registered Video Conference server.

Table 5-21. Counters per Registered Video Conference Server

Counters

Description

ResourceTotal

This represents the total number of resources configured on this video conference server device. One resource is used per participant.

ResourceAvailable

This represents the total number of resources that are not active and are still available on this device to handle additional participants for this video conference server device.

ResourceActive

This represents the total number of resources that are currently active (in use) on this video conference server device. One resource is used per participant.

OutOfResources

This represents the total number of times an attempt was made to allocate a conference resource from this video conference server and failed (for example, because all resources were already in use).

ConferencesTotal

This represents the total number of video conferences configured for this video conference server.

ConferencesAvailable

This represents the number of video conferences that are not active and are still available on this video conference server.

ConferencesCompleted

This represents the total number of video conferences that have been allocated and released on this video conference server. A conference is started when the first call is connected to the bridge. The conference completes when the last call disconnects from the bridge.

ConferencesActive

This represents the total number of video conferences that are currently active (in use) on this video conference server. A conference is active when the first call is connected to the bridge.

OutOfConferences

This represents the total number of times an attempt was made to initiate a video conference from this video conference server and failed because this server already had the maximum number of active conferences allowed.

Annunciator/Tone Plant Processing Architecture

The annunciator architecture is very similar to the MOH architecture. These devices are known by both the call signaling layers and the MCL. Annunciators are used in CallManager to play various pre-recorded announcements and tones to a single party, a conference, or an MTP.

When CallManager is required to play a tone such as ringback, busy, or reorder, and is unable to have this performed by the end device, the annunciator can be used to perform this function. Announcements or tones are played by connecting a one-way stream from the annunciator to the device and then directing the annunciator to play the specific tone or announcement. This scenario is encountered, for example, on some H.323 devices where the endpoint is being transferred or forwarded.

In CallManager, annunciators are used to play both tones and announcements because they are all audio files as far as the annunciator is concerned. Each announcement or tone file has a particular identifier, and the system identifies the item it wants to play by that identifier. When CallManager connects a device to the annunciator, it specifies a network locale, a user locale, and the announcement or tone identifier. This enables the annunciator to play the appropriate localized tone or announcement.

Annunciators provide specific functions for features, including the following:

  • To play a ringback tone to a SIP client when the SIP client is being transferred from an IP phone.

  • To play Vacant Code Announcement (VCA). “Your call cannot be completed as dialed. Please consult your directory and call again or ask your operator for assistance. This is a recording.”

  • To play Isolated Code Announcement (ICA). “A service disruption has prevented the completion of your call. In case of emergency call your operator. This is a recording.”

  • To play ringback and other tones for transfers on H.323 intercluster trunks.

  • To play a busy tone based on an error generated by CTI for H.323-related calls.

  • To play beginning and ending tones for monitoring sessions.

  • To play audible tones at the beginning and end of recording sessions.

  • To play Blocked Precedence Announcements for the MLPP feature.

  • To play announcements for MLPP calls being released abnormally.

  • To play ringback tone to an Ad Hoc conference when a participant is added to the conference until the participant answers the call.

To an annunciator, a tone and any other announcement is the same thing. They are all recorded audio files stored on the disk of the annunciator server. Annunciators can play an announcement only once, or play it repeatedly until CallManager tells it to stop. An annunciator can notify CallManager when an announcement has finished playing if requested to do so.

After the annunciator device has registered, CallManager allocates resources from the annunciator device as needed, and connects them, as one-way streams, to devices such as IP phones, gateways, MTPs, and conferences. When the connection is established, CallManager starts an announcement by sending a StartTone SCCP message to the annunciator. The annunciator then starts playing the specified announcement file. If requested by CallManager, the annunciator device signals CallManager when the announcement has finished. The annunciator sends this signal only when CallManager indicates that an end-of-play notification is required. If the announcement is configured as repeating and CallManager requested an end-of-play notification, the annunciator notifies CallManager each time the announcement file has been played once, and continues until the playback is stopped.

CallManager stops playback of an announcement by sending a StopTone SCCP message to the annunciator. The annunciator automatically stops playback when the streaming connection between the annunciator and the listening device terminates.

The following tones are supported for the U.S. locale:

  • Line busy tone—400–450 Hz tone for 0.5 second duration with 0.5 second silent period between tones

  • Alerting tone—400–450 Hz tone for 0.67 to 1.5 second duration with 3- to 5-second silent period between tones

Annunciator devices support localization, so all tones and announcements can be localized as needed. The tones are network tones and are associated with the country that CallManager serves, as defined in the network locale. Having several different locales within the same country is possible. This structure allows for multiple languages within a given country.

You can specify both the network locale and the user locale for a device. The user locale specified for a device sets the language that will be played, and the network locale sets the tones that will be played. CallManager allows you to edit the announcements as needed.

Device Control and Operation

The Cisco IP Voice Media Streaming App implements the annunciator server. The IP Voice Media Streaming App is the same application software that implements software Unicast conference bridges, MTPs, and the MOH servers. It registers with CallManager in the same way as an MOH server.

When the annunciator device registers with CallManager, CallManager creates a control process that maintains device status, resource availability, and other such information about the device. It is also responsible for device registration and all communication to and from the device. When the MRM is allocating resources, it always queries the device control process for available resources once a potential device is selected.

Configuring Annunciator Servers

You can enable annunciators in the system by activating the Cisco IP Voice Media Streaming App. When the IP Voice Media Streaming App is activated, an annunciator device is automatically created in the CallManager database with default settings.

Upon registration, the device informs CallManager how many resources it can support. Unlike conferencing and MTP resources, annunciator devices do not preserve any stream connections in progress when any a failure occurs. All tones or announcements in progress are interrupted at the time of the failure.

If you install the annunciator device on a dedicated server, it supports up to a total of 400 simultaneous streams. Each stream plays one announcement; thus, the annunciator device can play up to 400 simultaneous announcements. All annunciator servers in a cluster have the same audio source file configuration. This means that the tone or announcement file can be obtained from any available annunciator server. The same tone or announcement can be played on all active output streams simultaneously, or any mix of announcements or tones can be played as needed.

There is a separate audio source file for each tone or announcement for each of the four supported codecs. Thus each announcement has four audio files associated with it on the annunciator server.

The annunciator servers support the same audio codecs as MTPs and MOH servers, as follows:

  • G.711 A-law

  • G.711 μ-law

  • G.729a

  • Wideband

Annunciator Server Initialization

When an annunciator server initializes, it checks the date and timestamp for its audio source files against the values stored in the CallManager database. If the date and timestamps differ from the CallManager database values, the new audio source files will be loaded on the annunciator server. After the transfer is completed, the date and times on the annunciator server are updated for each file that was transferred.

CallManager follows the same process when the annunciator server receives a change notification for the selected audio source. If the audio source is currently being streamed and a change is noted, the new audio source is retrieved and used when the current audio source is no longer active.

Note

CallManager supplies U.S. English tone and announcement audio source files with the system when it is installed. You can install additional locales on the system; when you do, additional announcement files are installed on CallManager as needed to support the new locale.

Annunciator Performance Statistics

A number of performance counters are available to monitor the usage of annunciators. All performance statistics are monitored through Microsoft Windows 2000 counters. You can monitor these counters in the RTMT in Cisco CallManager Serviceability. CallManager provides two sets of counters that are maintained by each CallManager node:

Counters per CallManager Node

Each of the counters listed and described in Table 5-22 is for an individual CallManager node. The counters represent the total for all annunciator servers that are registered with that CallManager node.

Table 5-22. Annunciator Counters per CallManager Node

Counter

Description

AnnunciatorResourceTotal

This represents the total number of annunciator resources provided by all annunciator devices that are currently registered with this CallManager.

AnnunciatorResourceActive

This represents the total number of annunciator resources that are currently in use on all annunciator devices registered with this CallManager.

AnnunciatorResourceAvailable

This represents the total number of annunciator resources that are not active and are currently available.

AnnunciatorOutOfResources

This represents the total number of times that CallManager attempted to allocate an annunciator resource from those that are registered to this CallManager when none were available.

Counters per Annunciator Server from a CallManager’s Perspective

Each annunciator server registers with a CallManager node independently, and CallManager maintains statistics about each annunciator server that is registered. Table 5-23 lists and describes the counters that are maintained for each registered annunciator server.

Table 5-23. Counters per Registered Annunciator Server

Counter

Description

ResourceTotal

This represents the total number of annunciator resources configured for this annunciator device.

ResourceActive

This represents the total number of annunciator resources that are currently active (in use) for this annunciator device.

ResourceAvailable

This represents the total number of resources that are not active and are still available to be used at the current time for the annunciator device.

OutOfResources

This represents the total number of times an attempt was made to allocate an annunciator resource from this annunciator device and failed (for example, because all resources were already in use).

Call Preservation During System Failures

Call preservation refers to the capability of the CallManager node to maintain call connections during failure conditions on either the underlying network or the components within CallManager. This section describes the processing involved in call preservation and covers failure conditions for all major components. Call preservation is included in the media processing section because when a failure occurs, it is the media streaming that must be maintained to keep the call connected.

General Overview of Call Preservation

CallManager consists of a cluster of CallManager nodes, Cisco IP Phones, gateways that provide connections to the PSTN, and various media processing resources such as conference bridges, transcoders, MTPs, and annunciators. It can also support numerous other voice applications, such as call centers and interactive voice response (IVR) systems. Any of these entities can be involved in a call being processed by CallManager.

CallManager nodes provide call processing services and call connection control for all calls processed by a device. After a device has created media streaming connections to other devices under the direction of CallManager, the devices themselves control all aspects of the media streams and connections until directed to terminate the media streaming connections.

Each CallManager node maintains primary call state information for all calls that it controls. If a CallManager node is not involved in a given call, it has no knowledge of that call. If a CallManager node does not control a call but controls devices that are involved in the call, that CallManager node maintains only call state information relating to the devices registered to itself that are part of that call, and not the call itself. Because the various endpoint devices and media processing resources can be registered with different CallManager nodes in the cluster, the entities involved in a given call can be, and usually are, controlled by more than one CallManager node.

Note

Normally without call preservation, each call that is controlled by a CallManager node that fails, or any call that involves a device that is controlled by a node that fails, would terminate immediately on the failure of any node or device involved in the call. This happens either because the other node or nodes involved in the call recognize the node or device failure and disconnect their end of the call (which ends media streaming), or because the devices themselves recognize that the CallManager node to which they are registered has failed. In that case, the device normally closes its media streaming connections and reregisters with another CallManager node.

With the enhanced call preservation, users are generally able to continue their conversations without call processing support. This means that while the call is still active, no supplementary services are available, and the call configuration cannot be changed for the duration of the call. Hanging up will clear the call.

Call preservation involves complex processing in both CallManager and the devices that register with CallManager. Many communication links of various types are involved in calls being processed. This creates complex recovery scenarios, because any one signaling path or any combination of paths might be broken.

The failure of any given device or CallManager node creates some interesting and complex failure and recovery scenarios. This section explores some of the failure possibilities and identifies recovery algorithms used by CallManager and the devices. The following topics are covered:

Failure and Recovery Objectives

In several failure cases, the signaling path for call processing is interrupted, but the media streaming connections are not necessarily affected. When a CallManager node fails, for example, the media streams between devices are not affected. It is also possible that when communication between a CallManager node and a device fails, the streaming connections between devices are not affected. In this case, a CallManager node involved in the call might have communication with other devices that are in the call. It becomes the responsibility of all CallManager nodes involved in the call to clear down the signaling paths that are related to the failure, without instructing the devices with which they still have communication to clear the call as they would in normal circumstances when the signaling path is cleared.

CallManager does not know whether the streaming connections between the devices have been interrupted. In failure conditions, it becomes the responsibility of the devices involved in a call to maintain the streaming connections that are already established. This is true even when the signaling path between the device and its CallManager node has failed.

If communication between a device and its CallManager node did not fail, it is the device’s responsibility to inform its CallManager node when the streaming connections have been closed in the same manner as they do in normal call processing.

When handling failure scenarios, CallManager attempts to accomplish the following objectives:

  • Maintain all active streaming connections that existed at the time of the failure so that no active call is interrupted

  • Clear all calls that are in the call setup phase at the time of the failure and were affected by the failure

  • Maintain communication with all devices that are still accessible after the failure

  • Recover all devices that were registered to a failed CallManager node

  • Minimize downtime for CallManager nodes and devices involved in or affected by a failure

  • Maintain normal system operation as much as possible during the failure

Handling System and Device Failures

Endpoint and media processing devices have responsibility for and control over media connections and media streams, after the streams have been established under the direction of CallManager. Maintaining them in a failure condition is primarily the devices’ responsibility, but it also requires close cooperation with CallManager. Failures present unique and sometimes difficult situations that must be handled correctly to maintain active calls through the system.

The recognized failure cases are as follows:

The main causes for each of these failure cases are defined and some of the failure scenarios are discussed in this section.

CallManager Node Failure

CallManager node failures can be caused by a CallManager software error, by a server failure, or by a network failure. If the failure is caused by a software error or a server failure, the failure causes call processing functions on that node to stop, and all communication with that node is lost.

When this failure occurs, all devices registered to that CallManager node recognize that their current CallManager node has failed. Similarly, the other CallManager nodes in the cluster detect the failure of that node. When a node failure occurs, all remaining CallManager nodes immediately execute a call preservation teardown of all calls that they are processing that involve the failed node. A call preservation teardown is the same as a normal teardown, except that all devices involved in the call are not notified that the call has been torn down, and the device control processes in CallManager for each of the devices involved in the call maintain low-level state information about the call so that they know the device is involved in a call without call signaling support. No new calls are extended to devices that are in a call preservation mode. The affected devices involved in a call maintain all active calls until the end user hangs up or the devices can determine that the media connection has been closed. No call processing features can be invoked on the preserved calls.

If the failure is caused by a network failure, call processing functions are still intact, but communications between that CallManager node and some or all of the devices registered with that node, as well as communication with other nodes in the cluster, might be lost. When communication with a node or device is lost, that device or node is treated as though it has failed.

A CallManager node recognizes that another node has failed when the TCP/IP link to the other CallManager node returns an error that indicates a link failure. If the communication link fails, the other node is considered to have failed.

A CallManager node recognizes that a device has failed in one of two ways: Either the TCP/IP link to the device returns an error that indicates the link has failed, or no KeepAlive request has been received from the device within its prescribed KeepAlive interval. Whether the device actually failed or just the link failed is not significant, because either case is treated the same.

Similarly, a device recognizes that its CallManager node has failed when CallManager fails to respond to its KeepAlive requests within the prescribed time. If the communication link has failed, the device recognizes the error when it receives an error from its TCP/IP stack that indicates the link has failed. Whether the CallManager node actually failed or only the communication link failed is not significant, because either case is treated the same.

Media Processing Device Failure

Typical media processing devices are audio conference bridges, video conference bridges, MTPs, transcoders, annunciators, and MOH servers. CallManager recognizes device failures when a KeepAlive timeout for that device occurs. The failure can be caused by a device software error, a server failure, or a network failure; to CallManager, however, it makes no difference. When a device fails for any reason, the result is a loss of communication with the device. Because all communication is lost, the device must execute its own failure and recovery algorithms. CallManager’s responsibility in this case is to release its own call processing resources as appropriate without terminating the call or calls being handled by the device.

If the device truly failed, call streaming through the device also stops, and other devices involved in the call must detect the streaming failure and clear the call. The device’s active CallManager node recognizes the device failure and clears call processing entities within CallManager that are associated with calls in the failed device.

If the device loses communication with CallManager while media streaming connections are active, the device assumes all responsibility for and control over all active connections and media streams. It must also find another CallManager node with which it can register. The device itself decides when and if it will register with CallManager while it has streaming connections active.

Endpoint Device Failure

Typical endpoint devices are Cisco IP Phones, other IP phones, gateways, video IP phones, and other similar devices. Device failures and loss of communication with a device are considered the same failure.

CallManager-to-Device Communication Failure

A communication failure to a device, regardless of the cause of the failure, is treated as a device failure. CallManager recognizes a device failure when a KeepAlive timeout occurs. CallManager also recognizes a device failure when the TCP/IP socket connection to the device is broken. When a device fails, all call processing resources associated with that device are released, and call signaling is cleared.

Node-to-Node Communication Failure Within a Cluster

A CallManager cluster is fully meshed between all CallManager nodes in the cluster, which means that there is a TCP/IP connection from each CallManager node to every other CallManager node in the cluster. If, for any reason, the TCP/IP link from any given CallManager node to any other CallManager node fails, the other node to which it is connected is considered to have failed. An appropriate call preservation teardown will occur for all calls associated with the failed node.

Device-to-Device Communication Failure

Device-to-device communications are usually in the form of logical channels or, in other words, media streaming connections that are carrying audio or video streaming data. When the communication path breaks, the error is detected as a media streaming error, and the CallManager node to which the device is registered is notified. Device-to-device call preservation is implemented completely in the devices, and the CallManager nodes involved in the call have little or no ability to help or influence the processing, other than making sure that CallManager does not clear the call. This allows the devices to handle processing in the best way they can and to report to CallManager when the call clears, if they are still registered.

Call Preservation Examples

The following two examples illustrate some of the complexities that exist even in these relatively simple configurations.

Example 1: Call Between Two Phones, Each Registered to a Different Node

Figure 5-29 shows a single node failure when two CallManager nodes are involved in a call.

Single Node Failure When Two CallManager Nodes Are Involved in a Call

Figure 5-29. Single Node Failure When Two CallManager Nodes Are Involved in a Call

Note that Phone A is registered to CallManager node 1 and Phone B is registered to CallManager node 2. Phone A calls Phone B, and the call is connected successfully. If CallManager node 2 fails, CallManager node 1 recognizes that signaling path B has failed, and it does a call preservation call teardown for Phone A. Signaling path C also fails, and that failure is recognized by Phone B. This leaves only signaling path A and the media streaming connections still active. No call processing support is available for the remainder of this call, but the devices can continue streaming data to each other indefinitely. The phones tear down the media streaming connections when they are placed on-hook, thus terminating the call. Phone A reports the on-hook to CallManager node 1. Phone B will then register with its backup CallManager node. If CallManager node 1 fails, the same process occurs, with the actions on the two phones being reversed.

If the signaling path B fails, each CallManager node does a call preservation teardown for its respective phone. No call processing support is available for the remainder of the call. When either phone goes on-hook, the call is terminated. Both phones report the termination to their respective CallManager nodes, and each CallManager node will release all remaining low-level resources associated with the call.

Example 2: A Conference Call

Figure 5-30 illustrates the connections that are present for a conference call that was set up by Phone A. This example explains what happens to the call in call preservation situations caused by failures of various devices and communication links. Not all of the possibilities are discussed, but enough are discussed to illustrate how call preservation works.

Call Preservation for Conference Call

Figure 5-30. Call Preservation for Conference Call

Phone A sets up a conference, which includes A, B, and C. Several different scenarios could occur because of failures on this conference call. If CallManager 1 fails, signaling paths A, C, and F fail, and call processing for Phone A, who is the conference controller, is lost. The conference continues, but it cannot be extended to any other parties. When Phone A is placed on-hook, it terminates its media streaming connections to the conference bridge and registers with another CallManager node. The other participants in the conference terminate the conference normally. They are unaffected by the failure.

If CallManager 2 fails, signal paths A, B, D, and E fail, and call processing for the conference bridge and Phone B is lost. The conference can continue only if the conference bridge allows the media connections to remain active even though it cannot communicate with CallManager. No call processing functions are available on this conference call. Even though the conference controller is still active, the conference cannot be extended, because there is no communication between CallManager and the conference bridge. When Phone B is placed on-hook, it terminates its media streaming connections to the conference bridge and registers with another CallManager node. As soon as either Phone A or C hangs up, the conference terminates and the conference bridge registers with another CallManager node.

If CallManager 3 fails, signaling paths B, C, and G fail. The conference can continue, but Phone C has no call processing functions available. The conference can also be extended because the conference controller and the conference bridge are unaffected by the failure. When Phone C is placed on-hook, it terminates its media streaming connections to the conference bridge and registers with another CallManager node.

If Phone A’s network connection fails, signaling path F and the media streaming connections to Phone A are lost. This causes a normal call teardown for Phone A. The conference bridge recognizes the failure of the media streams and closes the media connections, leaving Phone B and Phone C in the conference. The conference cannot be extended because the conference controller is lost. Phone A registers with CallManager again when its network connection is restored.

If Phone B’s or Phone C’s network connection fails, signaling path E or G, respectively, and the media streaming connections to Phone B or Phone C are lost. This causes a normal call teardown for the affected phone. The conference bridge recognizes the failure of the media streams and closes the media connections to the lost phone, leaving Phone A and either Phone B or Phone C in the conference. Phone A can extend the conference, if desired, because the rest of the conference is not affected. The lost phone registers with CallManager again when its network connection is restored.

If signaling path A fails, it causes a call preservation teardown for all phones, because CallManager 1 was controlling the conference and each of the calls. Because CallManager 1 cannot talk to the conference bridge because of the signaling path failure, the entire conference goes into call preservation mode. The conference can continue without call processing support.

If signaling path B fails, it has no effect on the conference call.

If signaling path C fails, it causes a call preservation teardown for Phone C, because CallManager 1 was controlling the call from Phone C to the conference bridge, and the communication link to Phone C is lost. The conference continues, but Phone C does not have call processing support. The conference can be extended, if desired.

Combinations of failures can occur, resulting in even more complex recovery scenarios.

Recovering Devices After a Failure

CallManager is a multinode system, which provides redundancy for CallManager nodes that handle all call processing. All devices are not redundant, meaning, for example, if a Cisco IP Phone fails, there is no backup phone to take over. In the case of gateways, there might be redundancy, depending on the implementation of CallManager. Call processing redundancy is implemented in CallManager by creating a cluster of CallManager nodes, some of which serve as backups for other CallManager nodes in the event of a node failure.

All devices are intelligent endpoints and are responsible for finding a CallManager node with which to register. Redundant call processing support for devices is implemented by assigning each device an ordered list of CallManager nodes with which it is to register. The list is in priority order from first to last and is referred to as the CallManager list. The device registers with the first CallManager node that is in its list and currently available. The first CallManager in its list is often referred to as its primary CallManager. During failure conditions, a device registers with the CallManager node that is highest on its list and available when its primary CallManager fails. The process of unregistering with one CallManager node and registering with a CallManager node that is lower on the list is referred to as failover. Devices reregister with a CallManager node that is higher on their list during recovery from the failure. A failure recovery occurs when the primary CallManager node or another node higher on the list returns to service, or node-to-device communications are restored. The process of unregistering with one CallManager node and registering with a CallManager node that is higher on the list is known as fallback.

Devices and Applications That Support Call Preservation

The following list of devices and applications are known to support call preservation:

  • Cisco IP Phones

  • Software conference bridge (service)

  • MTP (service)

  • Cisco hardware conference bridges

  • Cisco Transcoders

  • Cisco non-IOS gateways using MGCP PRI backhaul

  • IOS MGCP gateways

  • SRST-enabled H.323 gateways

  • CallManager Attendant Console

  • CTI applications (depending on the endpoint devices involved)

  • VG248 gateways

Devices and Applications That Do Not Support Call Preservation

The following devices and applications do not support call preservation:

  • Non-SRST-enabled H.323 devices

  • Annunciators

  • MOH

Call Preservation Algorithms

The next sections describe the failover and fallback algorithms used by devices that are involved in active calls at the time of a failure. These algorithms do not specify how the device should decide to failover or fallback, but rather the actions that must take place once the device has made the decision to failover or fallback.

Failover Algorithms

Two algorithms are used by devices to determine when to fail over to a CallManager node that is lower on their list. Each device that is capable of maintaining calls in failure situations is required to implement either one or both of the algorithms. If the device implements both of the algorithms, you configure the device to use the one you prefer.

Graceful Failover

This algorithm allows the device to delay failover to another CallManager node until the device stops all active streaming connections. The device determines when to terminate the streaming connections based on the disconnect supervision options supported by that device. A Cisco IP Phone, for example, terminates its streams when the user hangs up the phone, or when it detects an error in transmission to the other endpoint in the call.

If no CallManager is lower in its list and is available when the device initiates a failover attempt, the device can reregister with the primary CallManager node if it is available, or another CallManager node that is higher in its list.

If no CallManager node is available when the device initiates a failover, the device terminates the active streaming connections after attempting to locate an available CallManager node for a reasonable amount of time. It continues looking for an available CallManager node to which it can register.

Immediate Failover

This algorithm allows the device to failover immediately to a CallManager that is lower in its list. When this device registers with the new CallManager node, it tells CallManager during registration how many connections it supports and how many of them are active at the time of registration. Thereafter, the device informs CallManager each time one of the active streams is closed.

When a device initiates a failover attempt, it is possible that no backup or lower-order CallManager node is available. In this case, the device can choose to reregister with the original primary or other CallManager higher in its list. This is exactly the same as a failover with a subsequent fallback.

If no CallManager node is available when the device initiates a failover, the device terminates the active streaming connections after attempting to locate an available CallManager node for a reasonable amount of time. It continues looking for an available CallManager node to which it can register.

Fallback Algorithms

Each device implements one or more of the following fallback algorithms. If the device supports more than one fallback algorithm, you configure which algorithm it uses. Only one configuration is active at any given time. A fallback does not occur because of an error condition directly. It is a recovery operation when some or all of the failure conditions have cleared. The device, therefore, has the opportunity to choose when it will fallback to its primary CallManager. Table 5-24 documents all allowed fallback algorithms.

Table 5-24. Fallback Algorithms

Fallback Algorithms

Description

Graceful algorithm

The device delays registering with a CallManager node that is higher in its list until all of its active streaming connections are stopped. This prevents any disruption to existing calls.

Immediate algorithm

The device immediately registers with a CallManager node that is higher in its list as soon as communications with that node are established. The registering device communicates the status of all active connections to the selected CallManager. It also notifies CallManager when each of the active connections is closed as the calls are cleared. When using this algorithm, all calls in progress at the time go into call preservation mode and do not have access to call processing services for the duration of the call.

Schedule-Time algorithm

In this case, you set a configurable timer. The timer must be set to expire within 24 hours from when it is set. On timer expiration, the Immediate algorithm is then invoked. This algorithm allows you to schedule a time when the device will fallback. If it is a phone, for example, it might be scheduled to fallback at 2 a.m., when it is not likely to be used.

Uptime-Delay algorithm

On detection that a CallManager node that is higher in its list is available, a user-configurable timer is set. On timer expiration, the Immediate algorithm is invoked. Basically the same as Schedule-Time algorithm, except that the user has control of the timer.

Graceful with guard timer

A guard timer is set. This guard timer can be statically implemented in the device or user-configurable. The Graceful algorithm is invoked. If the guard timer expires before fallback has been initiated per the Graceful algorithm, the Immediate algorithm is invoked.

This basically says to wait until all calls are finished and the device is idle before executing a fallback. If this does not occur within a prescribed time, it forces a fallback. (Some devices might never go idle.)

Tip

The Immediate option leaves the active maintained calls connected but without call processing support for remainder of their calls. The users cannot change the configuration of their calls and do not have access to features such as hold, transfer, conference, and so forth. This option also drops any calls that are in the process of being established. Only the calls that are already connected at the time of fallback are maintained. Because there is no CallManager node failure or communication failure condition in this case, the Immediate option is the least desirable of all the algorithms, because it affects active calls and is visible to the user.

Call Attempts During Failover and Fallback

It is possible that a new call setup is initiated from the device during the failover or the fallback time frame. The call attempt is handled in the following manner.

During the process of failover or fallback, when the device is not registered with a CallManager node, any new call setup request initiated from the device is ignored until the device has completed its registration with the CallManager node.

If the configured fallback algorithm is other than Immediate, registration with a CallManager node that is higher in its list can be delayed. During this time, the current CallManager node is still the active node and is capable of processing calls.

During any fallback delay introduced by a fallback option, the device processes new call setup attempts normally until the delay condition is satisfied and fallback can be initiated.

Cisco IP Phone Unregistration Sequence Requirements

Unregister requests from Cisco IP Phones are used when the phone is registered to a CallManager node lower in its list and a CallManager node that is higher in its list returns to service. When CallManager receives an unregister request, it checks for pending calls or connections to that phone, such as held calls, transfers in progress, call park in progress, and so forth. These calls can exist in CallManager without the Cisco IP Phone having an active media connection for that call. If CallManager determines that there are pending calls for the device, CallManager returns an unregister acknowledgement with a NAK, indicating that the device is not permitted to unregister at that time.

If CallManager determines that there are no pending calls for the device, it returns an unregister acknowledgement with an ACK, indicating that the Cisco IP Phone is free to register with the higher CallManager node.

Active Connection Management in Device Modules on Device Registration

Some devices can register with a CallManager node while involved in active connections. The following sections detail requirements that CallManager must satisfy to restore active connections and manage their release during call tear down.

Hardware Conference Bridge and Transcoders

When a hardware conference bridge or transcoder registers with CallManager, it reports the number of resources that it supports and the number of resources that are currently active on that device. CallManager notes the number of active resources, and it does not make these resources available for allocation until the device notifies CallManager that the resource is no longer active. The resource is then added to the available pool.

MGCP Gateway Device Modules

On MGCP gateway registration, the CallManager node sends the Audit Endpoint message to each endpoint of each PSTN interface of the registering gateway. When the endpoint returns a connection identifier in the Audit Endpoint Response, the device control process in CallManager marks the device endpoint active. This allows the gateway to control when the resource is released and ready for use.

For each connection identifier returned in the Audit Endpoint Response, the device module that is managing the gateway interfaces in the CallManager node marks the endpoints active to allow the endpoint to control release sequence.

For interfaces that use MGCP call control signaling and support either end-user or media streaming failure disconnect supervision, CallManager sends a Request Notify command to the gateway to have the gateway report call termination events to the CallManager node. As the calls are terminated, the endpoints are made available for use again.

There are specific requirements for MGCP gateways using MGCP call control signaling. MGCP call control signaling is supported for the following interfaces and platforms:

  • FXO/FXS on IOS gateways

  • T1-CAS on IOS gateways

There are specific requirements for MGCP gateways using PRI-backhaul call control signaling. PRI-backhaul signaling is supported for the following interfaces and platforms:

  • T1-PRI on non-IOS (Catalyst 6000 WS-X6608-T1 and DT24+ gateways) and on IOS gateways

  • E1-PRI on non-IOS (Catalyst 6000 WS-X6608-E1 and DE30+ gateways) and on IOS gateways

  • FXS/FXO on non-IOS gateways

  • T1-CAS on Catalyst 6000 WS-C6608-T1 and Catalyst 6000 WS-C6608-E1 gateways

For each of the active connections, the device control process that is managing the gateway ports in the CallManager node sets the ports in an active call state. When working with the PRI protocol, the device control process needs the Q.931 call reference value.

During normal call setup, the CallManager node includes the Q.931 call reference value in the Call ID parameter of the Create Connection command for each connection associated with the PRI interface. The MGCP protocol provides the audit connection sequence to relay active connection information from the gateway to the CallManager node.

Media Streaming Failure Disconnect Supervision Handling

Devices that support media streaming failure disconnect supervision report media failure signals to the CallManager node on detection of the failure. If the associated call is in a preserved state, it should be cleared (from a call control perspective) toward the device. Otherwise, it is assumed that the call will be cleared through normal means.

Summary

This chapter presented basic VoIP concepts and terms and explained their relationship to media processing devices. Six basic types of media processing resources are available to CallManager:

  • Audio conferencing resources

  • Video conferencing resources

  • MTPs

  • Transcoders

  • MOH resources

  • Annunciator resources

All media resources are shared across the entire cluster regardless of where the device is registered. This sharing allows for efficient use of media processing resources In addition, these resources can be associated with endpoint devices on a geographical basis or on any other grouping that seems appropriate. Resource sharing also provides the capability of restricting the use of media processing resources so that certain endpoints or groups of endpoints do not have access to one or more types of resources. Their usage can be organized such that the load is distributed across all resources of a given type, or it can be ordered such that either the hardware or software resources are used before the other type of resource is used. The grouping and ordering of the resources is very flexible and gives you a great deal of control over how media processing resources are registered and used within the cluster. This chapter also discussed the differences between hardware-and software-based resources, and the advantages and disadvantages of each.

CallManager supports a rich set of media processing capabilities, including audio and video processing. Conferencing is supported both by hardware- and software-based conferencing resources. Videoconferencing resources are not directly allocated but are included in the set of resources that you control by configuring their allocation and usage in MRGs and MRGLs.

Annunciators were added to CallManager to support MLPP and other specific announcements. Annunciators also play tones and are used as a tone plant when required. Tones and announcements are stored as .wav files on the annunciator’s disk. The annunciator makes no distinction between them and simply plays specified .wav files over specified connections.

The Cisco IP Voice Media Streaming App can be installed and configured to support several software-based media processing capabilities, including the MOH server, software conference bridge server, MTP server, and the annunciator server.

This chapter introduced and explained call preservation. Call preservation attempts to maintain call connections that are active during failure conditions. In most instances, a call connection can be maintained so long as the endpoint devices involved in the call did not fail. When CallManager fails with calls active, the calls are maintained, but they have no call processing support. This means that they cannot place the call on hold or activate any other feature for the duration of that call. CDR billing information for these calls is not recorded. The algorithms used to recover failed devices were also explained.

After reading this chapter, you should understand the media processing resources that are available and the configuration options that are available through CallManager Administration. You should have a good comprehension of MRGs and MRGLs and the power they give you in configuring the media resources in your system. You should also have an understanding of the basic architecture and support for all media type devices, and the counters available to monitor the usage and state of these devices.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset