There are quite a few dependencies to make this work though. Below is a summary of the things I addressed today making it work at a new site.
In your CUCM, you need to enable multicast capabilities on the MoH source, the MoH server, and a Media Resource Group (MRG).
|Audio Source with multi-cast enabled|
|MOH Server with multi-cast enabled|
|MRG with Multi-cast enabled|
Note: You should configure multicast audio sources to increment on the IP address and not the port number (see server configuration above) because:
- IP phones placed on hold join multicast IP addresses, not port numbers
- Cisco IP phones have no concept of multicast port numbers. Therefore, if all the configured codecs for a particular audio stream transmit to the same multicast IP address (even on different port numbers), all streams will be sent to the IP phone even though only one stream is needed. This has the potential of saturating the network with unnecessary traffic because the IP phone is capable of receiving only a single MoH stream.
- IP network routers route multicast based on IP addresses, not port numbers
- Routers have no concept of multicast port numbers. Thus, when it encounters multiple streams sent to the same multicast group address (even on different port numbers), the router forwards all streams of the multicast group. Because only one stream is needed, network bandwidth is over-utilized and network congestion can eventually result.
You then need to create and / or assign a MRGL to the trunk, device pool or other that includes the MRG configured above.
|MRGL used by remote devices that includes multi-cast MRG from above|
Note: You do NOT need to support multicast traffic generically across the network or across the WAN. Because the phones and voice gateway used for streaming the MoH file were on the same subnet at the remote site, I only enabled support for multicast routing on the voice gateway itself. The switch where the phones and voice gateway were connected at the remote site did not even have multicast routing enabled.
Now verify what multi-cast IP address your music will utilize. It is not necessarily the IP address set in the MOH server you see above or even related to the number of the audio source in use. Rather it depends on what codec is being used and in what order the audio sources were added to your server.
Here's a great discussion on the topic: https://supportforums.cisco.com/document/68401/procedure-allocate-ip-address-and-port-srst-multicast-moh
On the MOH server where "Enable Multicast Audio Sources" is enabled, here's how I found the address I needed.
admin:run sql select m.mohaudiosourceid,m.multicastaddress,m.multicastport,c.name from mohservermulticastinfo as m,typemohcodec as c where m.tkmohcodec = c.enum
mohaudiosourceid multicastaddress multicastport name
================ ================ ============= ========
1 184.108.40.206 16384 711 ulaw
51 220.127.116.11 16384 711 ulaw
2 18.104.22.168 16384 711 ulaw
1 22.214.171.124 16384 729
51 126.96.36.199 16384 729
2 188.8.131.52 16384 729
1 184.108.40.206 16384 wideband
51 220.127.116.11 16384 wideband
2 18.104.22.168 16384 wideband
1 22.214.171.124 16384 711 alaw
51 126.96.36.199 16384 711 alaw
2 188.8.131.52 16384 711 alaw
Note, if here I want to use audio source 2 and the G.711 ulaw codec, I should then use multicast address 184.108.40.206 in my gateway config.
My gateway configuration then includes the following critical components:
ip multicast-routing distributed
ip source-address 10.18.140.40 port 2000
moh enable-g711 "flash:/SampleAudioSource.ulaw.wav"
multicast moh 220.127.116.11 port 16384
Here my gateway's LAN IP address is 10.18.140.40 and I have chosen to stream Cisco's sample music from flash on the gateway. If you are interested, here's my tips on how to download music from Cisco's music on hold servers to use elsewhere:
http://webmaxtor.blogspot.com/2012/09/cucm-download-moh-file-from-server-in.html It's the technique I used get the sample music file off the server and on the gateway.
If all goes as planned, when a caller is put on hold you can see evidence of it being streamed from the gateway via the "show ccm-manager music-on-hold" command.
! with no calls on hold
my-router#show ccm-manager music-on-hold
Current active multicast sessions : 0
! with one call on hold
my-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
18.104.22.168 16384 0/0 25939 g711ulaw