Archive for September, 2008

Sipper on Solaris

Tuesday, September 9th, 2008

Recently we ported Sipper to Solaris, the port went smoothly. The only native libraries in Sipper are for media handling (Sipper RTP and RTCP implementation). Sipper is now available on Windows, Linux and Solaris. We have only tested on Fedora / RedHat on Linux but I don’t see a reason why there would be any problem on other Linuces, given that Solaris port was straighforward compilation.

Proxy and B2BUA

Friday, September 5th, 2008

One of the often asked question in interviews (for positions requiring SIP knowledge) is – “What is the difference between a Proxy and B2BUA”

Of course there are several fundamental differences between the two SIP entities, notwithstanding that B2BUA ‘behavior’ is not defined by SIP standard. Both however are used on the Server side either as routing entities or for creating applications.

Another interesting question I have seen is “If or How can we find out by just looking at the SIP traces, if the request was sent by a Proxy or a B2BUA”.

Some people say that Max-Forwards would be 69 or less in case of a proxy while 70 in case of B2BUA, while true in most cases this cannot be the rule because the value 70 is just a recommendation.

Another answer I have heard is that only Proxied requests should have a Record-Route header, this may be true for record routing proxies but not so for non record routing variety.

The (almost) right answer is that in case of a Proxy you will have at least 2 Via headers while in case of B2BUA there should be only 1 Via header, that coming from the UAC part of B2BUA. I said ‘almost’ because nobody can stop a B2BUA from adding another Via header in the outgoing request (though most do not).

Sipper had a B2BUA support for a long time which is simple and intuitive, you can write a simple B2BUA with very few lines of script [http://pastie.org/254732], recently while testing for remote target update tests we added support for a rudimentary Proxy in Sipper. We based the implementation off the B2BUA base class having two Sessions in contrast to a single SipSession in case of Proxy in SIP Servlets. Having 2 Sessions not only enabled us to re-use a lot of behavior but also retained the flexibility that the developers on Sipper deserve. Of course the Proxy is rudimentary and is there for simple test scenarios not involving forking etc. but it works.

Oh and if you want to add another Via in your B2BUA or remove your own Via from Proxy then you can easily do that in Sipper before sending the request…