Neil Sunerton - 2013-02-21


I have a number of 'voice servers' (which run Asterisk) and a number of phones which register to a specific voice server. I want to introduce a 'front-end' layer which all of the phones are given as their 'SIP server' (mainly so that moving a service around on the voice servers doesn't require a reconfig on the phones, and for security). Effectively this front-end layer acts a bit like an SBC except it doesn't take part in media.

I've chosen OpenSIPS for this role because I think it's probably best for the job, but I'm not sure how to implement what I want, possibly because there's too much choice. I think I want B2BUA with Topology Hiding, but I'll explain my thinking:

Proxy isn't suitable because I want to give the phones the addesss of the OpenSIPS server as their SIP server (the only server address I want to give them) and not as the SIP proxy address. Also the OpenSIPS server will need to remember where to reach the phones.

B2BUA with Topology Hiding looks right, but I can't find out how to tell it the destination address.

All REGISTER, INVITE, SUBSCRIBE and OPTIONS requests received from phones by the OpenSIPS server need to be forwarded on to a 'voice server' (a database lookup on From address will give the server) in such a way that the voice server will respond to the OpenSIPS server. All responses from the voice server received by the OpenSIPS server need to be forwarded back to the phone (and all REGISTER, 401 Unauthorized, REGISTER, 200 OK mechanisms need to work properly).

Once registered, any INVITE, NOTIFY or OPTIONS requests from the 'voice server' and received at the OpenSIPS server need to be forwarded on to the relevant phone (based on the SIP To address) at the IP address it registered from, so the OpenSIPS server needs to remember this.

I'd describe what I want as a SIP forwarder as it passes requests and responses between the 'voice servers' and the phones, based on the From address in SIP from phones (looking-up voice server in database) and based on To address in SIP to phones (remembering the address of the phone). The OpenSIPS server won't be invloved in any RTP and won't be doing any authentication.

Anyway, thanks for reading and any advice/guidance welcome.