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.
- Define the Music On Hold Servers
- Configure a Multicast base IP address 239.1.1.1 for G.711
- Configure the Multicast Port 16386 for G.711
- Define the Media Resource Groups or MRG with Multicast enabled
- Define the Media Resource Group Lists or MRGL
- Add MRG to the MRGL and assign it to the Common Device Configuration or CDC
- 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.
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.