Friday, April 3, 2015

Multicast MoH to PSTN combined with ASA , IGMP Snooping, VRFs

Configuring MMoH for PSTN in L3 networks require some work to be done at network level as well as IPT level.


  • CUCM Configuration

  1. Enable IP Voice Media Streaming (IPVMS) service
  2. Configure Location, DP, Region to be used by MoH servers. Note: MMoH isn't deducted from locations BW.
  3. By default, G711ulaw is the only supported codec by MoH servers. Navigate to System > Service Parameters > #Server# > IPVMS and enable other codecs based on your regions configuration.
  4. By default MMoH DSCP is EF, you can change this value based on your network QoS (e,g, CS3)
  5. Navigate to Media Resource > Music On Hold Source > #File# and make sure to enable Allow Multicasting checkbox.
  6. Navigate to Media Resource > Music On Hold (MoH) Server and configure the following:
    1. Max Hops for each Source File (you need to make sure that this value is enough for the MMoH stream to reach PSTN. For above diagram should be mini 3)
    2. Max multicast connections
    3. Assign DP, Location, and enable Run Flag
    4. Enable Multi-cast Audio Sources on this MOH Server
    5. Configure Base multicast IP and Port
    6. Make sure to configure Increment Multicast on IP Address. This is used when multiple codecs are enabled for MoH server. Each codec will use a unique multicast IP as below



Inc. Multicast on IP Address

Audio Stream
Codec
Dst. IP Address
Dst. Port
1
G.711 ulaw
239.1.1.10
16384
1
G.711 Alaw
239.1.1.11
16384
1
G.729
239.1.1.12
16384
1
Wideband
239.1.1.13
16384

Increment on Port will cause the CUCM to use same IP for all codecs with different ports for each. Since multicast routing on the network level is based on IP and not ports, all the endpoints on hold or PSTN will receive all mulitcast streams sharing the same IP which will cause multicast flooding in the network (especially when multiple endpoints are on hold at same time) .
  1. Create Media Resource Group (MRG) and enable Use Multi-cast for MOH Audio (If at least one multi-cast MOH resource is available)
  2. Create MRGL, add the MRG, and assign the MRGL to device pool, endpoint, or common device configuration.
  • Voice Gateway Configuration
On the voice gateway it is very important to enable the command ccm-manager music-on-hold. Without this command, the voice gateway will connect to the MoH server using call forwarding message but won't send IGMP message to join the multicast group for MMoH.
  • Multicasting Network Configuration
    • On the voice gateway the following configuration will be applied:
ip multicast-routing vrf DMVPN
!
interface Loopback170
 ip vrf forwarding DMVPN
 ip address 10.170.170.2 255.255.255.255
 ip pim sparse-mode
!
interface GigabitEthernet0/1.111
 encapsulation dot1Q 111
 ip vrf forwarding DMVPN
 ip address 10.170.200.84 255.255.255.240
 ip pim sparse-mode
!
ip pim vrf DMVPN send-rp-announce Loopback170 scope 100
ip pim vrf DMVPN send-rp-discovery scope 100

  • On ASA the following configuration will be applied
object-group network CUCM-SERVERS
 network-object host 10.170.4.10
 network-object host 10.170.4.11
 network-object host 10.170.4.12
!
object-group network MMoH-SERVERS
 network-object 239.1.1.10 255.255.255.255
 network-object 239.1.1.11 255.255.255.255
 network-object 239.1.1.12 255.255.255.255
 network-object 239.1.1.22 255.255.255.255
 network-object 239.1.1.21 255.255.255.255
 network-object 239.1.1.20 255.255.255.255
!
access-list ACL-VOICE-VIDEO extended permit ip object-group CUCM-SERVERS object-group MMoH-SERVERS

  • On 4500 the following configuration will be applied
ip multicast-routing vrf VOICE/VIDEO
!
ip igmp snooping querier
!
interface Vlan51
 ip vrf forwarding VOICE/VIDEO
 ip address 10.170.200.20 255.255.255.240
 ip pim sparse-mode
!
interface Vlan104
 description VoIP Subnet
 ip vrf forwarding VOICE/VIDEO
 ip address 10.170.4.2 255.255.254.0
 ip pim sparse-mode

Note: ASA supports sparse-mode only. Therefore, sparse-mode is used across the network.

During MoH condition, here are some outputs from different devices:

On Voice Gateway

C2951-router-02#sh voip rtp connections
VoIP RTP Port Usage Information:
Max Ports Available: 8091, Ports Reserved: 101, Ports in Use: 1
Port range not configured, Min: 16384, Max: 32767

                                                Ports       Ports       Ports    
Media-Address Range                             Available   Reserved    In-use   

Default Address-Range                           8091        101         1        

VoIP RTP active connections :
No. CallId     dstCallId  LocalRTP RmtRTP LocalIP                                       RemoteIP                              
1     21751      21752      21540    16384  10.170.170.2                                239.1.1.12                            
Found 1 active RTP connections

C2951-router-02#show ip mroute vrf DMVPN 239.1.1.12
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group,
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
       Q - Received BGP S-A Route, q - Sent BGP S-A Route,
       V - RD & Vector, v - Vector, p - PIM Joins on route,
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.12), 08:09:57/stopped, RP 10.170.170.2, flags: SJCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/1.111, Forward/Sparse, 00:02:00/00:02:18

(10.170.4.10, 239.1.1.12), 08:09:57/00:02:48, flags: PLTX
  Incoming interface: GigabitEthernet0/1.111, RPF nbr 10.170.200.81
  Outgoing interface list: Null

C2951-router-02#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.12        16384   9305/9305        21752   g729r8  Gi0/1.111

On ASA Firewall

ASA5545X# show conn address 239.1.1.12
6952 in use, 14310 most used

UDP DMVPN  239.1.1.12:16384 VOICE-VIDEO  10.170.4.10:16384, idle 0:00:00, bytes 390880, flags -

ASA5545X# show mroute 239.1.1.12

Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
       C - Connected, L - Local, I - Received Source Specific Host Report,
       P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
       J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State

(*, 239.1.1.12), 00:05:21/never, RP 0.0.0.0, flags: SCJ
  Incoming interface: Null
  RPF nbr: 0.0.0.0
  Immediate Outgoing interface list:
    DMVPN, Null, 00:05:21/never
    OUTSIDE, Forward, 00:05:21/never
    MPLS, Forward, 00:05:21/never
             
(10.170.4.10, 239.1.1.12), 00:05:21/00:03:30, flags: SJT
  Incoming interface: VOICE-VIDEO
  RPF nbr: 10.170.200.21
  Immediate Outgoing interface list:
    DMVPN, Forward, 00:05:21/00:03:25
  Inherited Outgoing interface list:
    OUTSIDE, Forward, 00:05:21/never
    MPLS, Forward, 00:05:21/never

On 4500

C4507-switch#show ip mroute vrf VOICE/VIDEO 239.1.1.12
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report,
       Z - Multicast Tunnel, z - MDT-data group sender,
       Y - Joined MDT-data group, y - Sending to MDT-data group,
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
       Q - Received BGP S-A Route, q - Sent BGP S-A Route,
       V - RD & Vector, v - Vector, p - PIM Joins on route,
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*, 239.1.1.12), 08:18:47/stopped, RP 10.170.170.2, flags: SP
  Incoming interface: Vlan51, RPF nbr 10.170.200.18
  Outgoing interface list: Null

(10.170.4.10, 239.1.1.12), 08:18:47/00:02:04, flags: PT
  Incoming interface: Vlan104, RPF nbr 0.0.0.0
  Outgoing interface list: Null

C4507-switch#sh ip igmp snooping groups vlan 111
Vlan      Group                    Version     Port List
---------------------------------------------------------
111       224.0.1.39               v2          Te3/1
111       239.1.1.12               v2          Te3/1

Tuesday, February 24, 2015

CUCM and Instant Messaging & Presence Integration


IMP Configuration

  1. Navigate to System > Cluster Topology.  Edit the IMP server to change the node name from domain to IP. Important to restart the server after the change.
  2. Enable the following services:

  • Cisco SIP Proxy
  • Cisco Presence Engine
  • Cisco Sync Agent
  • Cisco Unified Presence XCP (Extensible Communications Platform) Connection Manager. This service is used to facilitate services communication.
  • Cisco Unified Presence XCP Directory Service
  • Cisco Unified Presence XCP Authentication Service

  1. Add CUCM TFTP Servers in Application > Legacy Clients > Settings. As the clients first connect to IMP server, the TFTP servers are provided by IMP to CUPC and Jabber Clients to register with CUCM servers.
  2. Navigate to System > Settings. Configure cluster ID Name  and Domain Name. The cluster ID name is just a descriptive name.
  3. Navigate to System > CUCM Publisher. Configure CUCM Publisher IP, DB secret, AXL username, AXL password.
  4. Navigate to System > Settings. Make sure to enable XMPP Client to IMP
  5. Navigate to System > Service Parameters. Change the CUCM domain to match the IMP domain configured in step 4.
  6. Navigate to Application > Legacy Settings > CCMIP Profile and add CUCM Groups to be used by clients. This defines the primary and secondary CUCM servers as desired. You can create multiple CCMIP profiles and assign different users to different profiles (e.g. Dubai users to DXBCCM01 as primary while Mumbai user to BOMCCM01 as primary).
  7. Navigate to Presence > Gateways and add CUCM as gateway to be used for call control.
  8. Navigate to Presence > Settings and select the SIP trunk created in CUCM. This is the trunk to be used by IMP for CUCM communication (SUBSCRIBE, NOTIFY, REFER, etc)
  9. Navigate to Presence > Routing > Settings. Select the Preferred Proxy Listener as Default SIP Proxy TCP Listener.
  10. Navigate to Messaging > Settings and enable instant messaging

Notes:

  • No need to configure IMP in CUCM similar to old version of presence
  • The moment IMP sync with CUCM, incoming and outgoing ACLs will be added in IMP allowing all CUCM servers.
  • Although CCMIP Profile should be configured for Jabber prior to 8.x as per Cisco doc, practically it is needed for new versions as well.


CUCM Configuration

  1. Create UC services to be used on IMP clients by navigating to User Management > User Settings > UC Service. You can create UC Service to point to IMP server, to point to CTI server, to point to Voice Mail Server and to point to Directory Server.
  2. Create UC Profile to combine all the services to be used by IMP clients in one profile. Navigate to User Management > User Settings > UC Profile.
  3. Assign UC Profile to end users who are using IMP clients. Also, you need to enable IMP capability for these users.
  4. Configure SIP trunk pointing to IMP. This trunk should have a security profile with Accept Presence Subscription, Accept out-of-dialog Refer, Accept Unsolicited Notification, Accept Replaces Header enabled.
  5. Create CSF devices for soft clients (CUPC and Jabber). Assign the owner user ID, primary phone, and tune options.
  6. On the end user page, assign the CSF device to the controlled devices, assign primary extension, and assign CTI privileges (CTI Control Devices/CTI Enabled).

Cisco Instant Messaging & Presence Clustering


In one presence cluster you can have up to 6 servers (1 publisher and 5 subscribers). A presence cluster can be divided into subclusters (Max of 2 servers per subcluster which provide a max of 3 subclusters).

The subclusters can be configured in 3 modes:

  1. Active/Active
In this mode the users are distributed across both nodes in the subcluster. Assuming that we have 3 subclusters with servers names as A1/B1, A2/B2, A3/B3, the distribution algorithm will distribute the users as A1 -> A2 -> A3 -> B1 -> B2 -> B3.
  1. Active/Standby
In this mode the users are distributed to the first server in each subcluster with second server as backup. Assuming that we have 3 subclusters with servers names as A1/B1, A2/B2, A3/B3, the distribution algorithm will distribute the users as A1 -> A2 -> A3.
  1. None
In this mode the users should be assigned to servers and subclusters manually instead of sync agent.

IMP publisher will sync with CUCM publisher to get all IMP enabled users and their information. Also, note that IMP cluster can connect to single CUCM cluster ONLY.

Why do we need subclusters?
They are mainly used to divide the database size into sub databases. This will make the databases more manageable. For example when taking database backup, the backup job might not complete in the specified window for a single large DB. However, with sub-sized DBs, the backup can be completed within time frame specified.

DNS Performance Troubleshooting

When you are troubleshooting internet performance, there are different parts of the connection should be verified:   ·         DNS Pe...