[p2p-sip] Evaluating SIP implementations

henry at pulver.com (Henry Sinnreich) Tue, 10 January 2006 14:34 UTC

From: "henry at pulver.com"
Date: Tue, 10 Jan 2006 08:34:33 -0600
Subject: [p2p-sip] Evaluating SIP implementations
In-Reply-To: <719D5CCC2F6E3644B0A9F5C9B1D0008801567D4F@esebe104.NOE.Nokia.com>
Message-ID: <200601101434.k0AEYjGt022854@cs.columbia.edu>

Thanks for all the good information about available SIP implementations!

It is hard to judge how much compliant SIP implementations are unless we go
by some objective and agreed criteria.
http://www.huisetalage.nl/sip/stacks.pdf is a good start but some more is
required.

Here is a proposed list of RFCs that a mixed P2P and CS SIP solution has to
support. A matrix with check boxes would be the next step. Maybe Robert
Sparks can also advise us how the SIPit does it now.

I would be interested:

1. Is this list reasonable?
2. How does one check actual compliance with such a list?
3. How would a _reasonable_ compliance matrix look like?

Here is what I mean (some links may be stale already). What do you think?

Sinnreich, H., Lass S., Stredicke C: " IP Telephony Device Requirements and
Configuration"
http://www.ietf.rg/internet-drafts/draft-sinnreich-sipdev-req-08.txt

Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J.,
Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol",
RFC 3261, June 2002.

Sparks, R., "The Session Initiation Protocol (SIP) Refer Method", RFC 3515,
April 2003.

Roach, A., "Session Initiation Protocol (SIP)-Specific Event Notification",
RFC 3265, June 2002.

Sparks, R., "Internet Media Type message/sipfrag", RFC 3420, November 2002.

Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K. Summers,
"Session Initiation Protocol (SIP) 

Basic Call Flow Examples", BCP 75, RFC 3665, December 2003.

Johnston, A., Donovan, S., Sparks, R., Cunningham, C. and K. Summers,
"Session Initiation Protocol (SIP) Public Switched Telephone Network (PSTN)
Call Flows", BCP 76, RFC 3666, December 2003.

Rosenberg, J. and H. Schulzrinne, "Reliability of Provisional Responses in
Session Initiation Protocol (SIP)", RFC 3262, June 2002.

Rosenberg, J. and H. Schulzrinne, "Session Initiation Protocol (SIP):
Locating SIP Servers", RFC 3263, June 2002.

Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session
Description Protocol (SDP)", RFC 3264, June 2002.

Niemi, A., "Session Initiation Protocol (SIP) Extension for Event State
Publication", RFC 3903, October 2004.

Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C. and D. Gurle,
"Session Initiation Protocol (SIP) Extension for Instant Messaging", RFC
3428, December 2002.

Rosenberg, J., "The Session Initiation Protocol (SIP) UPDATE Method", RFC
3311, October 2002.

Faltstrom, P., "E.164 number and DNS", RFC 2916, September 2000.

Peterson, J., "A Privacy Mechanism for the Session Initiation Protocol
(SIP)", RFC 3323, November 2002.

Jennings, C., Peterson, J. and M. Watson, "Private Extensions to the Session
Initiation Protocol (SIP) for Asserted Identity within Trusted Networks",
RFC 3325, November 2002.

Mahy, R., Biggs, B. and R. Dean, "The Session Initiation Protocol (SIP)
"Replaces" Header", RFC 3891, September 2004.

Arkko, J., Torvinen, V., Camarillo, G., Niemi, A. and T. Haukka, "Security
Mechanism Agreement for the Session Initiation Protocol (SIP)", RFC 3329,
January 2003.

Rosenberg, J. and H. Schulzrinne, "An Extension to the Session Initiation
Protocol (SIP) for Symmetric Response Routing", RFC 3581, August 2003.

Rosenberg, J., Schulzrinne, H. and P. Kyzivat, "Caller Preferences for the
Session Initiation Protocol (SIP)", RFC 3841, August 2004.

Sparks, R., "The Session Initiation Protocol (SIP) Referred-By Mechanism",
RFC 3892, September 2004.

Peterson, J., Liu, H., Yu, J. and B. Campbell, "Using E.164 numbers with the
Session Initiation Protocol (SIP)", RFC 3824, June 2004.

Mahy, R., "A Message Summary and Message Waiting Indication Event Package
for the Session Initiation Protocol (SIP)", RFC 3842, August 2004.

Mahy, R., "A Call Control and Multi-party usage framework for the Session
Initiation Protocol (SIP)", draft-ietf-sipping-cc-framework-03 (work in
progress), October 2003.

Rosenberg, J., "A Session Initiation Protocol (SIP) Event Package for
Conference State", draft-ietf-sipping-conference-package-08 (work in
progress), December 2004.

Rosenberg, J., "Indicating User Agent Capabilities in the Session Initiation
Protocol (SIP)", draft-ietf-sip-callee-caps-03 (work in progress), January
2004.

Peterson, J., "Enhancements for Authenticated Identity Management in the
Session Initiation Protocol (SIP)", draft-ietf-sip-identity-05 (work in
progress), September 2004.

Mahy, R., "Connection Reuse in the Session Initiation Protocol (SIP)",
draft-ietf-sip-connect-reuse-03 (work in progress), October 2004.

Rosenberg, J., "Obtaining and Using Globally Routable User Agent (UA) URIs
(GRUU) in the Session Initiation 

Protocol (SIP)", draft-ietf-sip-gruu-02 (work in progress), July 2004.

Levin, O., "Suppression of REFER Implicit Subscription",
draft-ietf-sip-refer-with-norefersub-00 (work in progress), January 2005.

Johnston, A. and R. Sparks, "Session Initiation Protocol Service Examples",
draft-ietf-sipping-service-examples-07 (work in progress), July 2004.

Rosenberg, J., "An INVITE Inititiated Dialog Event Package for the Session
Initiation Protocol (SIP)", draft-ietf-sipping-dialog-package-05 (work in
progress), November 2004.

Sparks, R., "Session Initiation Protocol Torture Test Messages",
draft-ietf-sipping-torture-tests-04 (work in progress), July 2004.

Sparks, R. and A. Johnston, "Session Initiation Protocol Call Control -
Transfer", draft-ietf-sipping-cc-transfer-03 (work in progress), October
2004.

Petrie, D., "A Framework for Session Initiation Protocol User Agent Profile
Delivery", draft-ietf-sipping-config-framework-05 (work in progress),
November 2004..

Camarillo, G. and A. Roach, "Subscriptions to Request-Contained Resource
Lists in the Session Initiation Protocol (SIP)",
draft-ietf-sipping-uri-list-subscribe-02 (work in progress), January 2005.

Jennings, C. and J. Peterson, "Certificate Management Service for SIP",
draft-ietf-sipping-certs-01 (work in progress), October 2004.

Wijk, A., "Framework of requirements for real-time text conversation using
SIP.", draft-ietf-sipping-toip-00 (work in progress), October 2004.

RFC 2327: "SDP: Session Description Protocol"  by M. Handley, V. Jacobson,
IETF, April 1998

RFC 3999: "The TEL URI for Telephone Numbers" by H. Schulzrinne, IETF, June
2004.

Johnston, H. Sinnreich, A. Clark, and A. Pendleton, " SIP Service Quality
Reporting Event" IETF Internet-Draft, October 2004, Work in progress.

RFC 3550: "RTP: A Transport Protocol for Real-Time Applications" by H.
Schulzrinne, S. Casner, R. Frederick, V. Jacobson, IETF, July 2003.

RFC 3551: "RTP Profile for Audio and Video Conferences with Minimal Control
" by H. Schulzrinne and S. Casner, IETF, July 2003.

RFC 3761: "The E.164 to Uniform Resource Identifiers (URI) Dynamic
Delegation Discovery System (DDDS) Application (ENUM)" by P. Falstrom and M.
Mealing, IETF, April 2004.

RFC 3952: "Real-time Transport Protocol (RTP) Payload Format for internet
Low Bit Rate Codec (iLBC) Speech" by A. Duric, S. Andersen, IETF, December
2004.

RFC 3611: "RTP Control Protocol Extended Reports (RTCP XR)" by T. Friedman,
Ed., R. Caceres, Ed., A. Clark, November 2003.

RFC 3711: " The Secure Real-time Transport Protocol (SRTP)," by M. Baugher
et al, March 2004

RFC 3830: "MIKEY: Multimedia Internet KEYing" by J. Arkko et al, August 2004

"Key Management Extensions for Session Description Protocol (SDP) and Real
Time Streaming Protocol (RTSP)" by J. Arkko et al,
draft-ietf-mmusic-kmgmt-ext-12.txt, November 2004.

RFC 2246: "The TLS Protocol Version 1.0" by T. Dierks and  C. Allen, IETF,
January 1999

RFC 3489: "STUN-Simple Traversal of UDP Through NAT" by J. Rosenberg et al.
IETF, March 2003.

"Traversal Using Relay NAT" by J. Rosenberg, R. Mahy, and C. Huitema, IETF
Internet-Draft, October 2004.

"Interactive Connectivity Establishment (ICE): A Methodology for Network
Address Translator (NAT) Traversal for Multimedia Session Establishment
Protocols" by J. Rosenberg, IETF Internet Draft, October 2004.

"Symmetric RTP and RTCP Considered Helpful" by D. Wing, IETF Internet Draft,
October 2004.

RFC 2833: "RTP Payload for DTMF Digits, Telephony Tones and Telephony
Signals" by H. Schuzrinne and S. Petrack, IETF, May 2000.

Thanks, Henry

-----Original Message-----
From: Kai.Vehmanen at nokia.com [mailto:Kai.Vehmanen at nokia.com] 
Sent: Tuesday, January 10, 2006 4:10 AM
To: p2p-sip at cs.columbia.edu
Subject: Re: [p2p-sip] OpenWengo

Hi,

On 10 Jan 2006, Enrico Marocco wrote:
> Aymeric Moizard wrote:
>> I maintain the eXosip stack. (http://www.antisip.com/download/)
>> It's wriiten in C, portable, simple to use, simple to extend and it's

>> GPL code.
>> 
>> I would (and will anyway) personally help much for adding p2p support

>> in it.
>
>Obviously the willingness of the maintainer to cooperate is a 
>big bonus for the stack ;-)

well, some of us in the Sofia-SIP project would be also interested
in this work. It seems we are all here. :)

Anyways, not to turn this into full marketing thread, eXosip/osip 
is a good combo as well, and there are also couple of other
very good alternatives available now such as the new
pjsip stack (plus of course vovida and resip):

   http://www.bulukucing.org/pjsip.html
      
A comparison of basic features is available at:
   http://www.huisetalage.nl/sip/stacks.pdf

A more complete feature set SIP/SDP wise for Sofia-SIP can be found at:
   http://sofia-sip.sourceforge.net/refdocs/sofia_sip_conformance.html

As for our win32/pocketpc support, we basicly have the code
working under both cygwin/mingw and natively compiled with visualc,
but no pocketpc-support yet. Some people have been testing the
code on OSX.

>I think a good starting point should be the implementation on 
>the existing api of a simple application acting as a p2p node; 
>if your stack is well suited for such task, it could be a 
>valid choice IMHO.

With Sofia-SIP, an easy start could be for instance to add p2p-node
functionality to the the gaim+sofia-sip combo:

http://sofia-sip.sourceforge.net/ssip-gst.html

Especially without audio support (no gstreamer needed => turn
gaim into a p2p SIP-IM app), this is very easy combo for developers, 
as both Gaim and Sofia-SIP are well documented and have lots of
example code available. Similar thing can be of course done with
other stacks as well.

--
http://research.nokia.com/people/kai_vehmanen/
Networking Technologies Laboratory, Nokia Research Center