Hi,
We use Kamailio as a SIP server, and SEMS as an SBC. We have a need to use the dispatcher/carrierroute modules to provide HA/load sharing across two different parts of our environment: 1) Our SBCs 2) Our peer’s SIP servers
We have pairs of SBCs (for now) and they have the same network connectivity - different IPs of course, but they can reach the same things. Our peer’s network has 2 SIP servers (again, for now) reachable through either SBC. We select which SBC pair to use based on where the calls are going, in a branch route. In some cases, we use parallel forking, in others we use serial forking (i.e. to a media server for a prompt, then sending the call to wherever it needs to go).
Right now there is no automatic failover or load sharing, so this is all simple logic - if call is to x peer or y customer, use x SBC or y SBC. I’m trying to add the failover/loadbalancing now.
I have a few half baked ideas about how to achieve a network like this, but thought I’d ask if anyone else had done this first before I went too overboard.
Currently I’m thinking of calling cr_route to figure out which peer SIP server, from there figuring out which SBC pair, and then calling ds_select_dst to select which SBC in the pair to set $du. I’m being tripped up though, as I can’t call cr_route or ds_select_dst in a branch route, but, as far as I’m aware that’s where I’d need to do so in order to handle this for multiple branches. Should I be looping the request through the SIP server to achieve this (i.e. force $du = 127.0.0.1 in my branch_route), or, can I avoid that complexity?
-- Nathan Ward