| Quote: |
| There is no general agreement about the definition of an SBC, so the first step in creating an open source SBC would be to define exactly what kind of thing it is you want to build. |
As Martyn says the lack of definition of what an SBC is does create a bit of a problem. Generally the term "SBC" has been used to refer to anything that sits on the edge of a VoIP network, in some manner protecting the core network or assisting it.
I think you can break it down into the following high-level requirements/features:-
Signalling Border Control
Some kind of signalling layer firewall and security. This can be a topology hiding system (so no-one can see what's happening in the core or what it is and how it works) coupled perhaps to an anti-DDOS system. The basic idea is to protect the core. If the core is, say, openSER, then the objective is to ensure that (a) no-one can tell it's openSER and (b) the only traffic that gets through to it is in some way pre-authenticated.
Media Border Control
This will generally take the form of some kind of media (RTP) proxy. It assists in NAT traversal and also this is where you're likely to put in your timers for timing calls if you're running the business with a per-minute/second charging model. It'll probably also have some kind of anti-DDOS system in place. It needs to talk to other things (the CDR and billing controller) and an
Enterprise Service Bus type topology is one way of performing that communication. You need to think carefully about how real-time that needs to be - pre-pay and post-pay models have different requirements in this respect. Pre-pay needs to know how long a call at the current rate can last. Post-pay just needs to know how long it was when its finished.
Lawful Intercept
Usually part of the Media Border Controller. It's quite easy to implement - just a case of taking a copy of audio packets flying through the proxy and having the ability to stream that copy elsewhere. The tricky part is matching up which media stream belongs to which conversation. Most media proxies don't care and do not need to know. The police/intelligence services do, of course, need to know - you're likely to get a request in the form of "we want to tap all calls between these two people". Most media servers won't know which streams that refers to, so you need to build something that maintains state of that.
As Gray says, the Borderware devices do all this for you and are reasonably priced (about £3k last time I looked).
One consideration if you're proxying media is whether or not you require more than one, spread about in different continents. Think about the media path - if you have two customers in Australia talking to each other you don't really want to proxy all the audio via London.
As Martyn says, Freeswitch has pretty much all the toolkit you'd need to do any of the above. In terms of signalling border control, openSER/Kamailio also have.
And generally you can find half a dozen open-source SIP and RTP stacks which you could utilise in building what you need.