SigComp Support

From reSIProcate
Jump to: navigation, search

As of SVN version 6728, the resiprocate stack can make use of the Open SigComp library to support SigComp compression.

To make use of this, you must first download the Open SigComp library (version 0.9.3 or later), compile it, and install it. By default, the library installs in /usr/local (which typically requires root permission). If you want to install elsewhere, edit the Makefile in the src directory of Open SigComp. (A future release of Open SigComp will likely include a configuration system to automate these kinds of options).

Note that Open SigComp is licensed under the GPL, with a specific exemption for the resiprocate library itself. If you link Open SigComp into any application, even if such linking is done via resiprocate, then the application must adhere to the GPL as well. See the Open SigComp Licensing Page for more information.

Next, run resiprocate's configure script, and ensure that you answer "yes" to the question regarding SigComp support. You'll be prompted for the location in which the Open SigComp library was installed.

Applications that wish to make use of SigComp compression first create a Compression object, which is then passed to the stack constructor as its sixth argument. For example:

security = new Security(certpath);
compression = new Compression(Compression::DEFLATE);
SipStack stack(security,DnsStub::EmptyNameserverList,0,false,0,compression);

If the resiprocate stack is constructed with a compression configuration object, it will signal support for SigComp in contact URIs and via header fields, using the syntax described in RFC 3486. It also will use the techniques described in draft-ietf-rohc-sigcomp-sip for compartment identification.

In particular, if the URI used to route a request contains a "comp=sigcomp" parameter, then the stack will compress it before sending. Similarly, if the topmost via header field in a response contains a "comp=sigcomp" parameter, then it will be sent compressed.

While the stack integration has been fairly well tested to ensure that it does not interfere with normal operation, the use of the SigComp stack in conjunction with resiprocate is still somewhat experimental. If you encounter bugs with either the SigComp stack or its integration into resiprocate, please contact bugs@opensigcomp.org. This address is not for general discussion, questions, or other support -- discussion of the SigComp stack should take place on the Open SigComp Developers' Mailing List, while discussion of its integration into resiprocate should take place on the Resiprocate Developers' Mailing List.