Hi,
This is the summary of my understanding and testing.
By default H323 will drop active calls on WAN failure when connectivity is
lost to the other H323 endpoint. In order to preserve active calls on WAN
failure, two methods are available:
1. For PSTN-IP Calls
voice service voip
h323
no h225 timeout keepalive
1. For IP-IP Calls
In this type of calls, preservation can take place by IOS GW or CUCM. In
IOS it can be done as follow:
voice service voip
h323
call preserve
OR
voice-class h323 4
call preserve
!
dial-peer voice 1 voip
voice-class h323 4
On CUCM it can be configured as follow:
a. Choose Service > Service Parameters.
b. From the Service menu select Cisco Unified CallManager
c. Click Advanced
d. Scroll to the Clusterwide Parameter (Device — H.323) section
e. Set the “Allow Peer to Preserve H.323 Calls” parameter to True.
Do rdp
Once the call is preserved, media-inactivity-detection can be used to
identify the end of call (since there is no signaling any more).
RTR(config)#gateway
RTR(config-gateway)#media-inactivity-criteria ?
all Both RTP and RTCP for silence detection
rtcp Use RTCP for silence detection
rtp Use RTP stream for silence detection, this is default
rtplib Use RTP ( comfort noise = activity) for silence detection
!
voice service voip
h323
call preserve limit-media-detection
Here are the restrictions of media-inactivity-detection feature:
- This feature does not support MGCP call legs.
- The Media Inactive Call Detection feature works in IP only. This
feature does not include PSTN inactive call detection.
Example:
IP PHONE <----> H323/SIP GW <----> PSTN
In this example if silence is detected from IP PHONE side,
media-inactivity-detect will be triggered and terminate both call legs.
However, if silence is detected from PSTN side, media-inactivity-detection
won't be triggered.
- This feature supports RTP/RTCP media inactivity detection and
notification only on H.323 and SIP basic calls (RTCP will take precedence
over RTP).
How it work?
This feature is controlled by two commands which are ip rtcp report
interval global command and the timer receive-rtcp gateway-level command.
The multiplication of both commands will generate inactivity timer.
Once calls are preserved, after each RTP packet (in any direction)
inactivity timer will start. In case the timer expired before the next RTP
packet, the GW will drop both call legs.
Note: In case media-inactivity-detection is enabled, it will be applied to
all calls (preserved and non-preserved). This might cause interruption on
normal calls. Therefore you must limit it for preserved calls ONLY using "call
preserve limit-media-detection" and disable VAD as well.
Note: If the call (between GW-CUCM) is placed on hold and WAN interruption
took place, the call will be disconnected. MoH calls aren't preserved by
CUCM or GW. CUCM will indicate to GW in order not to preserve MoH calls.
This is because media-inactivity-detection won't work for MoH calls.
Note: media-inactivity-detection will drop calls if no RTP stream is
detected in any direction (not mandatory to have no RTP in both direction)
To verify call preservation,
RTR#show h323 calls preserved
CallID = 11EC , Calling Number = , Called Number = 3210000 ,
RemoteSignallingIPAddress=9.13.0.26 , RemoteSignallingPort=49760 ,
RemoteMediaIPAddress=9.13.0.11 , RemoteMediaPort=17910 , Preserved Duration
= 262 , Total
Duration = 562 , H225 FD = -1 , H245 FD = -1
In case any of those endpoints is part of the call, CUCM won't use call
preservation:
- Annunciator
- H.323 endpoints such as NetMeeting or third-party H.323 endpoints
- CTI applications
- TAPI applications
- JTAPI applications