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
Show replies by date