SIP协议是一个基于应用层的会话控制协议。它可以创建、修改、终止多媒体会话(会议),也可以邀请参与者加入到一个现有的会话。
会话发起协议(Session Initiation Protocol,缩写SIP)是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。2000年11月,SIP被正式批准成为3GPP信号协议之一,并成为IMS体系结构的一个永久单元。SIP与H.323一样,是用于VoIP最主要的信令协议之一。
因为SIP是一个基于应用层的协议,所以它不是一套完整的通讯系统方案,它需要和其它的方案或者协议结合起来实现整套系统。例如,实时传输协议(RTP)(RFC1889)用来传输音视频等实时的流媒体数据。实时流协议(RTSP)(RFC2326)用来控制媒体流的传递。媒体网关控制协议(MEGACO)(RFC3015)用来控制PSTN网关。
由此可见,SIP协议应该用来组合其它协议,从而实现完整的服务,但SIP基础的功能和操作不依赖于其它协议。
下面是一些目前比较活跃的一些SIP协议栈的开源实现。
名字 | 介绍 |
---|---|
NIST SIP | Java SIP stack as reference implementation of JAIN API, so it's has good API and documentation. It also has reference implementation for servers and user agent. |
minisip | GUI user agent and SIP stack with focus on security, and is portable across Win32, Windows Mobile, Linux, and Linux iPaq. Supports audio and video. [LGPL]. |
mjsip | SIP stack written in Java, with layered API approach. Applications include servers and user agent with audio and video capabilities. [GPL] |
opensipstack | SIP stack with media, written in C++ and depends on PWLIB. The website has reference implementation for SBC and also an ActiveX component for building SIP user agents.Footprint is quite large (megs?), but it has media stack implementation (with video?) too. [MPL] |
osip2 and exosip2 | One of the earliest open source SIP stack, so it enjoys good number of adopters.Footprint is quite small (several hundreds KBs), and supported ports include Windows, Linux/*nix, VxWorks, MacOS X, and many embedded targets. Media stack is available via commercial license only. [GPL or commercial]. |
PhAPI | PhoneAPI from OpenWengo project, written in C. It says to provide easy to use high level API for developing SIP audio and video user agents.Ports include Linux, Windows, and MacOS X. Media stack included. (GPL) |
PJSIP | The SIP (and media) stack features in this website.PJSIP SIP stack is written in C and is mainly targetted for small footprint, feature rich user agents, although it has attracted some server side developments too.Footprint is very small (<200KB), performance is very good (thousands of calls per second), and it is very very portable (Windows, Windows Mobile (WinCE, PDA, SmartPhone), Linux, nix, MacOS X, BSD (FreeBSD), RTEMS, Symbian OS, etc.), which makes it good candidate for embedded developments. Complete media framework is available with PJMEDIA. [GPL or other] |
resiprocate | C++ stack from SIPFoundry non-profit SIP community project. The community is backed by many commercial companies and it hosts health number of active developers. (Vocal) |
Sofia SIP | A SIP library written in C for building SIP clients. Supports many SIP call, presence, instant messaging features, as well as TCP, IPv6, TLS, and STUN support.Footprint is quite small (several hundreds KBs), and there is user agent reference implementation which uses gstreamer for the media. (LGPL) |