Wednesday, June 29, 2016

Stream Multicast MOH from gateway notes

Cisco CUCM deployments can provide MoH / music on hold to callers that is streamed from the CUCM server(s) themselves.  If the devices you are putting on hold are far from the CUCM servers though and you don't want the music streams to cross lower bandwidth WAN links, one option you have is to stream the MoH from a voice gateway that is local to the devices on hold.

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:

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, from mohservermulticastinfo as m,typemohcodec as c where m.tkmohcodec = c.enum
mohaudiosourceid multicastaddress multicastport name
================ ================ ============= ========
1             16384         711 ulaw
51            16384         711 ulaw
2             16384         711 ulaw
1             16384         729
51            16384         729
2             16384         729
1             16384         wideband
51            16384         wideband
2             16384         wideband
1             16384         711 alaw
51            16384         711 alaw
2             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 in my gateway config.

My gateway configuration then includes the following critical components:
ip multicast-routing distributed
ip source-address port 2000
moh enable-g711 "flash:/SampleAudioSource.ulaw.wav"
multicast moh port 16384

Here my gateway's LAN IP address is 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:  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
===================================================================        16384   0/0              25939 g711ulaw            

No comments:

Post a Comment