In the past two weeks, I have been involved in troubleshooting issues relating to sip trunk and run on all active nodes. In both cases call routing was affected and this led to some form of outage. I have therefore decided to write a short blog on this. In this blog I will be looking at the pros and the cons of using this new feature. As good as it looks; it has its downfalls which without careful planning could create potential issues for you in your network. So before you check that tick box, make sure you read this blog. Do your colleagues a favour too, send it to all of them and if you are a team leader ensure all your team members read, understand and digest this article before deploying that sip trunk. Happy reading
In CUCM 8.5 and above Cisco introduced a new feature on sip trunks and Route List called “Run on all active unified CM nodes” This basically removed the dependency of the sip trunk and the route list on the CUCM group assigned to them. This implies that you can have more than three CUCM servers originating and terminating calls from and to a sip trunk.
Calls over a Single SIP Trunk.
There are two things to consider when SIP trunks are involved.
The source node specifies which CUCM node the call will originate from ( not necessarily the node that your endpoint is registered to). This is very crucial as you will in the coming paragraphs.
The destination node(s)/Remote servers specify which serves the call is sent to.
SIP Trunk connections configured in each cluster may be using standard Unified CM Groups or the Run on all Active Unified CM Nodes feature.
I shall attempt to cover CUCM call routing decisions on both scenarios.
CUCM uses a process called Route Local feature to influence which server is used to initiate outbound calls. This feature selects the CUCM node depending on a number of factors described below:
Before the run on all active unified CM node feature was introduced. The standard behaviour was to use cucm groups with SIP Trunks. There are two scenarios to consider with this type of deployment:
NB: The Route List is active only on the primary CUCM in the RL’s Call Manager Group
The cucm node that will be used for a call in this scenario is determined as follows:
When a trunk is used with Route List and Route groups, the Route List is considered to be the calling device.
A word of caution, as you can see this is a bad idea. You do not get any load balancing with this; hence it is recommended that you DO-NOT-CO-LOCATEthe RL and Trunks in the same CUCM group.
Single ICT---No Route List in USE
In this scenario an ICT is in use and the route pattern points directly to it
The cucm node that will be used for a call in this scenario is determined as follows:
The second deployment type is using the new feature “Run on all active unified CM Nodes”
This feature is available for both the SIP trunk and the Route List. In Pre CUCM 8.5, your RL is only active on one CUCM node, which in some cases means that all outbound calls will originate from the NODE the RL is registered to. That as you can see is not efficient and doesn't give any form of load balancing. For the sip trunks, you can only have up to 3 CUCM NODE to make outbound calls.
This feature enables you to use up to 16 CUCM nodes to initiate outbound calls compared to only 3 you have when using standard CUCM group.
The other excellent thing about this is that you can now have up to 16 CUCM nodes to set as your destination address as compared to the 3 in previous releases. Another advantage of this is that it reduces the intra cluster signaling within the cluster, because the call is routed out locally from the node it arrived on, rather than choosing another node and thereby creating a need for Intra cluster signaling.
When the Run on all Nodes feature is selected on a SIP trunk, then The Route Local rule selects the node to originate calls from as the same node that the inbound call arrives on. i.e. The CUCM node the endpoint is registered to.
When the Run on all Nodes feature is selected on a SIP trunk and the corresponding RL, then The Route Local rule selects the node to originate calls from as the same node that the inbound call arrives on. I.e. The CUCM node the endpoint is registered to.
There are some scenarios where this feature may be enabled on the RL but not on the SIP trunk (not recommended and you will see why). The next few lines details the outcome of test results for all of these scenarios.
The tables below consist of different scenarios in which an outbound call originated from a cucm node. The tests and results detail which cucm node is chosen in a particular scenario. These tests uses the following elements
Feature | |||
---|---|---|---|
RL (192.168.131.11) | SIP TRUNK (192.168.131.11, 192.168.131.12 ) | IP Phone-(192.168.131.12) | |
RL | SIP Trunk | ||
Run on all Active CM Nodes (1a) | X(checked) | --(NoT checked) | |
NB: With this featureenabled: The cucm group is irrelevantThe RL registers with server with highest cti id | Call Routing decision If the phone-node is not in the cucm group of the trunk, use the trunk cucm group if the phone-node is in the cucm group of the trunk, use the phone-node | ||
(SIP TRACE showing node call originated from)
INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.12:5060;branch=z9hG4bK10d6f8419c From: < sip:804453121@192.168.131.12> | |||
scenario 2 (phone registered to a diff cucm) | |||
RL (192.168.131.11) | Sip Trunk (192.168.131.11, 192.168.131.12 ) | IP Phone(192.168.131.11) | |
RL | SIP TRUNK | ||
Run on all Active CM Nodes (1b) | X (checked) | --- (NoT checked) | |
Call Routing decision (phone-node i.e. cucm phone is registered to was used) | |||
(SIP TRACE showing node call originated from) INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.11:5060;branch=z9hG4bK27e119bbd50 From: < sip:804453121@192.168.131.11> | |||
Scenario 3 (phone registered to a cucm that is not in the sip trunk cucm group) | |||
RL (192.168.131.11) | Sip Trunk (192.168.131.12 ) | IP Phone(192.168.131.11) | |
RL | SIP TRUNK | ||
Run on all Active CM Nodes (1b) | X (checked) | ---
(NoT checked) | |
(Call Routing decision) (sip trunk cucm group used)--because phone node is not in cucm group of sip trunk | |||
(SIP TRACE showing node call originated from) INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.12:5060;branch=z9hG4bK14c3ad4a4a9 From: < sip:804453121@192.168.131.12> | |||
When the "Run on all active CM Node" is selected on the RL, but not on the SIP trunk, the Route Local feature uses this algorithm to determine which node the call will originate from;
Header 1 | Header 2 | Header 3 | Header 4 |
---|---|---|---|
RL (192.168.131.11) | Sip Trunk (192.168.131.12 ) | IP Phone(192.168.131.11) | |
RL | SIP TRUNK | ||
Run on all Active CM Nodes | X (Checked) | X (Checked) | |
(Call Routing decision)
Result (phone-node used) | |||
(SIP TRACE showing node call originated from) INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.11:5060;branch=z9hG4bK2a2769f1013 From: < sip:804453121@192.168.131.11> |
When the "Run on all active CM Node" is selected on the RL and on the SIP Trunk the Route Local feature uses this algoritm to determine which node the call will orginate from;
RL (192.168.131.12) | SIP Trunk (192.168.131.12) | IP Phone (192.168.131.11) | |
RL | SIP TRUNK | ||
Run on all Active CM Nodes (3a) | ---(Not CHecked) | X (checked) | |
(Call Routing decision)
Here the call proceeds as when standard cucm group is used the node on which the RL is registerd becomes the node to use for outbound call, if it exist in the sip trunk's cucm group.Because run on all node is selected on the sip trunk, The cucm group is irrelevant and the all the active nodes match. Since the Node that the RL is registred to is one of the active nodes,then the server the RL is registered to is always the server used. | |||
(SIP TRACE showing node call originated from)
INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.12:5060;branch=z9hG4bK1591a496e66 From: < sip:804453121@192.168.131.12> ; | |||
Scenario 2, with different CUCM Group in SIp Trunk | |||
RL (192.168.131.12) | SIP Trunk (192.168.131.11) | IP Phone (192.168.131.11) | |
RL | SIP Trunk | ||
Run on all Active CM Nodes (3b) | ---(Not CHecked) | X (checked) | |
Result (same as 3a above). Even though SIP Trunk CUCM Group was different | |||
INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.12:5060;branch=z9hG4bK1641d2fda0b From: " bob banks2" < sip:800193850@192.168.131.12> ;tag=552~736dccb8-3be2-4f69-88f8-ec5946dd6872-47142526 To: < sip:755670001@192.168.131.40> |
When the "Run on all active CM Node" is selected on the SIP Trunk and NOTselected on the RL, the Route Local feature uses this algorithm to determine which node the call will orginate from;
Header 1 | Header 2 | Header 3 | Header 4 |
---|---|---|---|
SIP Trunk (192.168.131.11) | IP Phone (192.168.131.11) | ||
Direct SIP TRUNK | |||
Run on all Active CM Nodes (4a) | X (checked) | ||
INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.11:5060;branch=z9hG4bK2e34502f9f4 From: <sip:804453121@192.168.131.11> |
Table 4: Scenario 2: IP Phone registred to a Different CUCM
SIP Trunk (192.168.131.11) | IP Phone (192.168.131.12) | ||
Direct SIP TRUNK | |||
Run on all Active CM Nodes (4b) | X (Checked) | ||
Result (Phone-node used) | |||
INVITE sip:755670001@192.168.131.40:5065 SIP/2.0 Via: SIP/2.0/TCP 192.168.131.12:5060;branch=z9hG4bK16e914be66 From: " bob banks2" < sip:800193850@192.168.131.12> |
When the "Run on all active CM Node" is selected on the SIP Trunk WITH NO RL in USE the Route Local feature uses this algorithm to determine which node the call will originate from;
A new feature introduced with 15.(1)2T is the default behavior of a toll-fraud prevention feature. With this feature CUBE(or any IOS gateway) will check any source address against its trusted source list before allowing the call. The router will automatically add any destinations that are defined as an ipv4 target in a VoIP dial-peer to the trusted source list.
The implication of this, when using "run on all active node" is that if a call arrives to the CUBE from a CUCM node that is not defined in the ipv4 target on its VoIP dial-peer, that call will be rejected. This will lead to a scenario where some users will report that they are unable to make outbound calls.
To prevent this ensure that you add the subnet of your CUCM nodes in your IP address trust list as follows:
voice service voip
ip address trusted list
ipv4 10.10.10.0 255.255.255.0 (assuming 10.10.10.X is the subnet of your cucm nodes)
FInally we are here. If you have stayed to read this bit, then I am sure you love what you do and want to do it better. So based on the test results, documentation and results here are my recommendations when deploying sip trunks
Enough of my babbling for now..Hope you find this useful!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: