The ability to integrate Music On Hold features within Cisco Call Manager allows Users to place calls on hold regardless if the call was made on net or off net. Users who are placed on hold or parked will stream from a streaming source usually the Call Manager Server or group of Call Manager Servers within the Cluster. The list of on network devices include station devices and applications that are placed on hold, consult hold, or parked calls The list of off network users include those who are connected through such Media Gateways as MGCP, H.323 or POTS. 

Telephony Services

  • The ability to perform Call Agent functionality without Call Manager

Survivable Remote Site Telephony

  • Ensure business continuity or dial tone in the event of a WAN outage

For this example I’m going to focus on configuring Multicast Music On Hold within the frame work of SRST. I started off deploying CME in out environment, but it wasn’t long before we moved onto bigger and better Call Manager. I started off deploying Call Manager on version 8.5, but it wasn’t long before we upgraded our environment to Call Manager 10.5. 

Limitations

The audio sources are shared among all the MOH Servers in the Cisco Unified Call Manager cluster. Unfortunately you can only configure up to but not beyond 51 unique audio sources per Call Manager cluster without adding additional MOH Servers to the cluster. Basically 50 audio file sources along with one fixed Music On Hold audio source. I’m not really sure why or how Cisco came up with this limitation, but if your environment requires more then 51 unique MOH audio files you going to have to consider following.

  • Option # 1: Add additional Music Hold Holder Servers to your cluster
  • Option # 2: Consider running Multicast Music On Hold locally on each router

A good place to start off before diving head first into any voice configuring on your Gateway is by simply checking the current licensing features. You want make sure that at the vary least you have the UCK9, and CME-SRST features enabled with the Right To Use enabled. 

Router#show license feature | include uck9
Feature name  Enforcement   Evaluation   Subscription   Enabled    RightToUse 
uck9                  yes           yes          no             yes          yes 
Router#

Now lets check so see if SRST is enabled as well

Router#show license feature | include srst
Feature name  Enforcement   Evaluation   Subscription   Enabled    RightToUse 
cme-srst              yes           yes          no             yes          yes 
Router#

The other major piece of the Multicast Music On Hold puzzle are the Call Manager requirements. You should already have most if not all of these requirements in place with the exception of the line 4 enabling Multicast on the Media Resource Group.

  1. Define the Music On Hold Servers
  2. Configure a Multicast base IP address 239.1.1.1 for G.711
  3. Configure the Multicast Port 16386 for G.711
  4. Define the Media Resource Groups or MRG with Multicast enabled
  5. Define the Media Resource Group Lists or MRGL 
  6. Add MRG to the MRGL and assign it to the Common Device Configuration or CDC
  7. Define the Music On Hold Audio Sources

So basically what I’ve depicted in the diagram below is an environment with a Publisher and Subscriber that has grown beyond the maximum 51 unique Music On Hold streams, and has elected to address the issue by adding additional Music On Hold Servers to cluster. 

MOH

Option # 1 vs Option # 2

As I mentioned above there are really only a couple of options to resolve this issue. Personally I prefer to go with option number # 2 for a couple of reasons. The first would be the bandwidth savings on the WAN, and second would be not polluting your existing voice cluster with additional Music On Hold Servers. Turns out the configuration on the branch Routers is simple to implement, and if your our already utilizing SRST then the addition of Multicast Music On Hold is a simple fix. Another important thing to consider is the Music On Hold file name. I would recommend keeping it simple such as MOH.wav or something similar. I must match the name Music On Hold Audio Source you defined within Call Manager. 

Now lets consider a couple of options for loading the MOH files onto the Router flash. If you have a large environment with lots of remote branch offices you might consider using FTP locally off the Branch Servers as opposed to TFTP across the WAN. So lets assume that we have a branch server with an IP address of 172.16.30.200.  

Bouter#configure terminal
Router(config)#ip host SERVER 172.16.30.200
Router(config)#ip ftp username moh
Router(config)#ip ftp password transfer
Router(config)#end
Router#copy ftp://SERVER/MOH.wav flash0:/
Router#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Router#

Now lets do the same thing using TFTP across the WAN

Router#
Router#copy tftp://172.21.200.67/MOH.wav flash0:/
Router#!!!!!!!!!!!!OOO!!!O!!!!!!!!!!!!!!!!!OO!!!!!!!!O!!!!!!!!!!!!!!!!!
Router#

First things first lets create a simple loopback interface for the CCM / MGCP bind.

Router#configure terminal
Router(config)#interface loopback 0
Router(config-if)#description Music On Hold
Router(config-if)#ip address 1.1.1.1 255.255.255.255
Router(config-if)#no shutdown
Router(config-if)#end
Router#

Next lets jump into configuring CCM Manager

Router#configure terminal
Router(config)ccm-manager fallback-mgcp 
Router(config)#ccm-manager redundant-host 192.168.100.20
Router(config)#ccm-manager mgcp
Router(config)#ccm-manager music-on-hold bind Loopback0
Router(config)#ccm-manager config server 192.168.90.20 192.168.100.20
Router(config)#end
Router# 

Now we can finally move onto the SRST MOH configuration. The following contains a lot of standard SRST configuration with the additional of the Multicast Music On Hold. As you can see the loopback interface that was defined above is being CCM bind the when a call is placed on-hold or parked. 

Router#configure terminal
Router(config)#call-manager-fallback
Router(config-cm-fallback)#secondary-dialtone 9
Router(config-cm-fallback)#max-conferences 8 gain -6
Router(config-cm-fallback)#transfer-system full-consult
Router(config-cm-fallback)#timeouts interdigit 7
Router(config-cm-fallback)#ip source-address 192.168.16.1 port 2000
Router(config-cm-fallback)#max-ephones 42
Router(config-cm-fallback)#max-dn 42
Router(config-cm-fallback)#pickup 8175682000
Router(config-cm-fallback)#alias 1 8175682000 to 1070
Router(config-cm-fallback)#moh "flash0:/MOH.wav"
Router(config-cm-fallback)#multicast moh 239.1.1.1 port 16386 route 1.1.1.1 192.168.16.1
Router(config-cm-fallback)#time-zone 8
Router(config-cm-fallback)#end
Router#

Now lets take a look at a call that has been placed on-hold or parked

Router#show ccm-manager music-on-hold
Current active multicast sessions : 1

Multicast   RTP port  Packets   Call  Codec       Incoming
Address     number    in/out    id                Interface
==============================================================
239.1.1.1   16386     321/331   42    G.711ulaw   Lo0

Something worth mentioning about the output from above would be the fact that the Packets are incremeting and which clearly indicates that the User is in fact hearing the Music On Hold wav file. Something else worth noting would be the fact that the Loopback interface 0 is being used as the incoming interface for the stream.

Troubleshooting tools

  • debug ephone moh
  • show ccm-manager music-on-hold
  • debug ccm-manager moh
  • debug mgcp packet

I hope you found this post on Multicast Music On Hold helpful and informative. Be sure to let me know what you think by leaving suggestions, and feedback in the comments section below. You can find out more about these and other articles be checking out recent posts and archives. To learn more about me be sure to check out the About page. And as always thanks again for visiting The Packet.