In CUCM you can achieve redundancy for SIP trunk at different levels. It is very important to tune them properly when deploying all of them together.
CUCM Server Group Redundancy
CUCM SIP trunks are having DPs which can contain up to three CUCM servers for cluster redundancy purpose. The selection of CUCM node which will source SIP messages over the trunk is controlled by Route Local Service and depends on:
Without 'Run on All Active Nodes'
In this mode, we have two sub-divisions:
i. If Route-Pattern is pointing to Route-List/Route-Group
RL will be active ONLY on the CUCM server which it is registered with. Also, CUCM will consider the RL as the calling device. Accordingly,
If the calling device (Route List) isn't registered with any of the servers in the outgoing SIP Trunk CUCM Server Group, CUCM will distribute the outgoing calls signaling in round-robin mode across all the servers in the SIP trunk CUCM Server Group
If the calling device (Route List) is registered to a server in the outgoing SIP trunk CUCM Server Group, this server will be used to initiate the outbound calls (i.e. the server where the RL is registered to)
ii. If Route-Pattern is pointing to SIP Trunk Directly
If the calling endpoint is registered to the same CUCM server that is part of the CUCM group assigned to the sip trunk, then use the server the phone/endpoint is registered to for initiating the outbound SIP call
If the calling endpoint is registered to a CUCM server that is not part of the CUCM group assigned to the sip trunk, then cucm will distribute the call across the servers in the trunk’s CUCM group using round-robin
With 'Run on All Active Nodes'
Similarly, we have two sub-divisions:
If enabled on Route-List
This feature will enable RL on all CUCM nodes instead of primary CUCM. Outbound Trunk calls originate from the same node that the inbound call arrives on
If enabled on SIP Trunk
This feature will enable up to 16 nodes on CUCM cluster to originate SIP signaling instead of 3 nodes associated with CUCM Server Group. Outbound Trunk calls originate from the same node that the inbound call arrives on
CUCM SIP Trunk Destination
Prior to CUCM 8.5, SIP trunks can point to one remote destination ONLY. Therefore redundancy across multiple destinations can't be done. BUT pointing the trunk to domain name instead of IP address will provide redundancy at DNS level. The domain-name can be associated with multiple IPs with different resolving priorities (preferences) for redundancy. It’s always preferred to keep the number of IPs mapped to domain-name equal to number of servers in UCM Group assigned to the trunk.
Starting from CUCM 8.5, SIP trunk can point to 16 destination IPs or single DNS record (by checking Destination Address is an SRV).
Route-List & Route-Group Redundancy
Another level of redundancy can be provided using CUCM Call Routing Route-Groups/Route-Lists as mentioned in Call Routing section. Multiple trunks can be assigned to Route-Group with configurable distribution algorithm. Also, Route-Groups can be placed in Priority Order in Route-List.
However, similar to IOS SIP, timers at CUCM level should be tuned properly to achieve failover between trunks before call disconnect. This can be tuned as follow:
SIP OPTIONS Ping
Pre-CUCM 8.5, SIP implementation didn't have keepalive monitoring mechanism for destination peer. The call signaling has to be sent to destination peer and if no response is received within specific time, SIP trunk failover will take place.
Starting from CUCM 8.5, SIP OPTION ping was introduced. SIP OPTIONS are requests to the configured destination address on the SIP trunk. If the remote SIP device fails to respond or sends back a SIP error response such as 503 Service Unavailable or 408 Timeout, CUCM marks the trunk as 'Out of Service'. If the remote destination is responding with valid SIP message such as 200OK, the trunk will be marked as 'In Service'.
This feature is configured under SIP profile It is enabled using the checkbox 'Enable OPTIONS Ping to monitor destination status for Trunks with Service Type "None (Default)'.