Wednesday, 3 February 2016

MGCP Switchover


  • MGCP GW sends keepalives to primary CUCM every 15 sec using empty NTFY message
  • CUCM acknowledges the message using 200OK
  • If no-response is received within 30 sec, MGCP will consider CUCM dead and will try to switchover to next CUCM.
  • In case secondary isn’t available, the gateway can fall back to using the default H.323 session application, if it is configured.

Note: The difference between switchover and fallback. Switchover between CUCM servers while fallback will take place when all CUCM servers aren't responding.

  • If the Primary CUCM fails:
    • D-channel will remain up since Q921 messages terminate on the gateway
    • Backhaul will go down since Q931 messages terminate on CUCM
  • During CUCM Switchover, calls will be treated as follow:
    • Active calls will be preserved because D-Channel is up
    • New calls will be rejected because backhaul is to CUCM is down
    • Calls in Transition state will be cleared
  • The messaging will be as follow:

  • After NTFY messages being sent for 30 seconds without response, MGCP Gateway will send RSIP Graceful message to Primary Failed CUCM (without a response from CUCM)

Jan 27 21:49:11 MST: MGCP Packet sent to 10.170.4.11:2427--->
RSIP 329754022 *@kl2951-router.shelfdrilling.com MGCP 0.1
RM: graceful
<--- p="">

  • MGCP Gateway will send RSIP Restart message to Secondary CUCM

Jan 27 21:49:11 MST: MGCP Packet sent to 10.170.4.10:2427--->
RSIP 329754024 *@kl2951-router.shelfdrilling.com MGCP 0.1
RM: restart
<--- p="">

  • Secondary CUCM will respond with 200OK Acknowledgement confirming that it is alive

Jan 27 21:49:11 MST: MGCP Packet received from 10.170.4.10:2427--->
200 329754024
<--- p="">

  • Secondary CUCM will send AUEP messages for each Voice Port or PRI Channel requesting X (RequestIdentifer), I (ConnectionId), A (Capabilities)

Jan 27 21:49:11 MST: MGCP Packet received from 10.170.4.10:2427--->
AUEP 760 S0/SU0/DS1-0/1@kl2951-router.shelfdrilling.com MGCP 0.1
F: X, A, I
<--- p="">

  • MGCP Gateway will respond with 200OK acknowledgement providing the requested details.

Jan 27 21:49:11 MST: MGCP Packet sent to 10.170.4.10:2427--->
200 760
I: 6
X: 1
L: p:10-20, a:PCMU;PCMA;G.nX64, b:64, e:on, gc:1, s:on, t:10, r:g, nt:IN;LOCAL, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-220, a:G.729;G.729a;G.729b, b:8, e:on, gc:1, s:on, t:10, r:g, nt:IN;LOCAL, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-110, a:G.726-16;G.728, b:16, e:on, gc:1, s:on, t:10, r:g, nt:IN;LOCAL, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-70, a:G.726-24, b:24, e:on, gc:1, s:on, t:10, r:g, nt:IN;LOCAL, v:T;G;D;L;H;R;ATM;SST;PRE
L: p:10-50, a:G.726-32, b:32, e:on, gc:1, s:on, t:10, r:g, nt:IN;LOCAL, v:T;G;D;L;H;R;ATM;SST;PRE
M: sendonly, recvonly, sendrecv, inactive, loopback, conttest, data, netwloop, netwtest
<--- p="">

  • If there is no active call, I will be empty and X will be '0'.
  • If there is an active call, I will point to ConnectionId of the call and X will point to RequestIdentifier of the call

  • Once Secondary CUCM completes the query of AUEP, it will send AUCX message using I (ConnectionId) requesting for C (CallId) and M (ConnectionMode)

Jan 27 21:49:11 MST: MGCP Packet received from 10.170.4.10:2427--->
AUCX 790 S0/SU0/DS1-0/1@kl2951-router.shelfdrilling.com MGCP 0.1
I: 6
F: C, M
<--- p="">

  • MGCP GW will acknowledge the message with 200OK and provide the details

Jan 27 21:49:11 MST: MGCP Packet sent to 10.170.4.10:2427--->
200 790
C: D000000002924996000000F500000001
M: sendrecv
<--- p="">

  • Secondary CUCM will request MGCP Gateway to monitor DTMF Events using RQNT message. MGCP will acknowledge the request

Jan 27 21:49:12 MST: MGCP Packet received from 10.170.4.10:2427--->
RQNT 791 S0/SU0/DS1-0/1@kl2951-router.shelfdrilling.com MGCP 0.1
X: 1
R: R/iu
Q: process,loop
<--- p="">

Jan 27 21:49:12 MST: MGCP Packet sent to 10.170.4.10:2427--->
200 791 OK
<--- p="">

  • Secondary CUCM will send Q.931 Status Enquiry message to the PRI device attached to the gateway to confirm the status of any calls CUCM believes are preserved.

Jan 27 21:49:12 MST: ISDN Se0/0/0:15 Q931: TX -> STATUS_ENQ pd = 8  callref = 0x0001
Jan 27 21:49:12 MST: ISDN Se0/0/0:15 Q931: RX <- pd="8<span" status="" style="mso-spacerun: yes;"> 
callref = 0x8001
        Cause i = 0x829E - Response to STATUS ENQUIRY or number unassigned
        Call State i = 0x0A

Note: You can't enable or disable MGCP call preservation at GW or CUCM level unlike H323.

Note the difference between SIP/H323 & MGCP. Here call preservation matters if its PRI or non-PRI endpoint because of backhaul concept. However, in SIP/H323, it won't matter since those protocols are independent.

  • During fallback, MGCP gateway will keep probing CUCM servers and once any of them is restored, MGCP GW (in fallback mode) will Rehome to register with that CUCM.
  • The message will be RSIP Graceful > RSIP Restart > 200OK > AUEP > 200OK
  • There are multiple modes of switchback:
    • Graceful (after last call completed) - Default
    • Immediate (even with active calls)
    • Never (disable switchback)
    • Schedule (schedule switchback)
    • Uptime (wait for x time of CUCM restoration before switchback. This is guard time to avoid flapping)

2 comments:

  1. BlueHost is ultimately one of the best hosting provider for any hosting plans you need.

    ReplyDelete