盘点那些必知的SIP开源项目
本文系统梳理了主流SIP开源项目,包括Kamailio、OpenSIPS、WVP-GB28181-Pro、ZLMediaKit、FreeSWITCH、Flexisip和Asterisk。这些项目在实时音视频通信中扮演关键角色,涵盖了SIP服务器、流媒体处理、GB28181协议支持等功能。文章详细介绍了各项目的功能特点、应用场景,并提供了源码获取、编译安装和配置方法。这些成熟的开源方案解决了协议实现
在实时音视频与VoIP系统里,SIP(Session Initiation Protocol,会话发起协议)几乎是绕不开的“信令中枢”:注册、呼叫建立、修改会话、挂断等流程都由它来编排。也正因为SIP处在系统最核心的位置,工程实践里很少有人从零开始实现一套完整协议栈或服务器——成熟的开源项目不仅覆盖了大量RFC细节与互通性“坑点”,还在NAT穿透、安全、并发性能、可扩展模块等方面积累了多年经验,直接决定了系统能否稳定上线与长期演进。
本文将系统梳理主流SIP开源项目的定位与能力边界;在逐一介绍它们的功能特点与典型应用场景的同时,文章会给出项目的编译与运行步骤、关键配置项。
一、kamailio
1、简介:
Kamailio 是一个开源的 SIP 信令服务器实现。SIP 是由 IETF 制定的开放标准协议,其核心规范文档为RFC3261。
Kamailio SIP 服务器专为可扩展性而设计,主要面向大型部署(例如拥有庞大用户群或处理大量呼叫的 IP 电话运营商或网络运营商),但也可用于企业或个人用途,提供 VoIP、即时消息和状态显示功能。Kamailio 以其灵活性、稳健性、强大的安全性和丰富的功能而闻名
2、功能描述
强大且高性能的 SIP (RFC3261) 服务器版本
-
注册服务器
-
位置服务器
-
代理服务器
-
SIP应用服务器
-
重定向服务器
灵活性
-
占用空间小——适用于嵌入式设备——二进制文件体积小,可通过模块添加/移除功能。
-
即插即用模块接口——无需修改核心代码即可添加新的扩展功能,从而确保核心组件的稳定性。
-
模块化架构——核心、内部库和用于扩展服务器功能的模块接口
-
令人印象深刻的扩展库——Kamailio 源代码树中总共包含了超过 150 个模块。
SIP路由功能
-
无状态和事务性有状态 SIP 代理处理
-
串行和并行分叉
-
支持 SIP 和 RTP 流量的 NAT 穿越
-
支持多种分布式算法的负载均衡和故障转移
-
灵活的最低成本路线
-
路由故障转移
-
高可用性 (HA) 复制
传输层
-
支持通过 UDP、TCP、TLS 和 SCTP 进行通信
-
IPv4 和 IPv6
-
传输层网关(IPv4 到 IPv6、UDP 到 TLS 等)
-
SCTP多宿主和多流
-
WebRTC 的 WebSocket
异步处理
-
异步 TCP 处理
-
异步SIP消息处理
-
异步进程间消息队列通信系统
-
分布式消息队列
安全通信
-
摘要式 SIP 用户身份验证
-
通过 ACL 或组成员身份进行授权
-
IP和网络认证
-
TLS对SIP信令的支持
-
透明处理 SRTP 以实现安全音频
-
TLS 域名扩展支持
-
针对数据库(MySQL、PostgreSQL、UnixODBC、BerkeleyDB、Oracle、文本文件)、RADIUS 和 DIAMETER 的身份验证和授权
3、源码:https://github.com/kamailio/kamailio
https://github.com/kamailio/kamailio
4、编译:
直接进入到源码目录下执行make,编译比较简单,这里不再说明。需要注意的是,make时指定安装路径:make prefix=/usr/local install
二、OpenSIPS
1、简介:
OpenSIPS 是一个采用 GPL 许可的 SIP 服务器实现。它起源于 Fokus Fraunhofer SIP Express Router (SER) 项目的一个分支。OpenSIPS 希望成为一个更加开放的项目,不仅体现在许可方面,也体现在项目管理方面,尤其是在外部贡献方面。 OpenSIPS 旨在克服当前 SER 项目的开发滞后问题,从而缩短新增功能的发布周期。OpenSIPS 是由 OpenSIPS Solutions( http://www.opensips-solutions.com/)维护的项目 ,其团队成员包括 SER 项目的核心和主要开发人员。
2、功能描述:
主要功能包括:网络桥接、NAT穿越、协议转化、洪水检测、IP过滤。
3、源码:https://opensips.org/pub/opensips/latest/
https://opensips.org/pub/opensips/latest/
4、文档:https://www.opensips.org/Documentation/Manual-4-0
https://www.opensips.org/Documentation/Manual-4-0
5、编译安装
# 安装必要的库
apt-get install libncurses5-dev
# 可视化编译配置,选择需要支持的功能
make menuconfig
# 编译
make all
# 安装
make install
#运行
sudo /usr/local/sbin/opensips -f /usr/local/etc/opensips/opensips.cfg
6、配置类型
Residential Script
-
ENABLE_TCP:OpenSIPS 将监听 TCP 以接收 SIP 请求。
-
ENABLE_TLS:OpenSIPS将监听TCP以接收SIP请求。
-
USE_ALIASES:OpenSIPS 将允许 SIP 用户使用别名。
-
USE_AUTH:OpenSIPS 将对注册和邀请请求进行身份验证
-
USE_DBACC:OpenSIPS 会将所有呼叫的 ACC 条目保存到数据库中
-
USE_DBUSRLOC:OpenSIPS 会将用户位置条目持久存储在数据库中。
-
USE_DIALOG:OpenSIPS 将跟踪活动对话
-
USE_MULTIDOMAIN:OpenSIPS 将处理多个域的用户。
-
USE_NAT:OpenSIPS 将尝试通过修复 SIP 消息和启用 RTPProxy 来应对 NAT。
-
USE_PRESENCE:OpenSIPS 将充当 Presence 服务器
-
USE_DIALPLAN:OpenSIPS 将使用拨号方案来转换本地号码
-
VM_DIVERSION:OpenSIPS 会将无法接通用户的 VM 呼叫重定向。
-
HAVE_INBOUND_PSTN:OpenSIPS 将接受来自 PSTN 网关的呼叫(使用静态 IP 认证)
-
HAVE_OUTBOUND_PSTN:OpenSIPS 将向 PSTN 网关(具有静态 IP 定义)发送数字拨号。
-
USE_DR_PSTN:OpenSIPS 将使用动态路由支持 (LCR) 进行 PSTN 互连。
Trunking Script
-
ENABLE_TCP:OpenSIPS 将监听 TCP 以接收 SIP 请求。
-
ENABLE_TLS:OpenSIPS将监听TCP以接收SIP请求。
-
USE_DBACC:OpenSIPS 会将所有呼叫的 ACC 条目保存到数据库中
-
USE_DIALPLAN:OpenSIPS 将使用拨号方案来转换本地号码
-
USE_DIALOG:OpenSIPS 将跟踪活动对话
-
DO_CALL_LIMITATION:OpenSIPS 将限制每个中继的并行呼叫数量。
Load-Balancer Script
-
ENABLE_TCP:OpenSIPS 将监听 TCP 以接收 SIP 请求。
-
ENABLE_TLS:OpenSIPS将监听TCP以接收SIP请求。
-
USE_DBACC:OpenSIPS 会将所有呼叫的 ACC 条目保存到数据库中
-
USE_DISPATCHER:OpenSIPS 将使用 DISPATCHER 而不是负载均衡器来分配流量。
-
DISABLE_PINGING:OpenSIPS 将不会 ping 所有目标地址(否则,当检测到连接失败时,它会进行 ping 操作)。
OpenSIPs控制面板
-
https://controlpanel.opensips.org/
https://controlpanel.opensips.org/ -
https://github.com/OpenSIPS/opensips-cp/tree/9.3.5
https://github.com/OpenSIPS/opensips-cp/tree/9.3.5 -
编译安装
apt-get install apache2 libapache2-mod-php php-curl systemctl status apache2.service chown -R www-data:www-data /var/www/html/opensips-cp/ apt-get install php php-mysql php-gd php-pear php-cli php-apcu
三、WVP-GB28181-Pro
1、简介:
WEB视频平台是一个基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台,负责实现核心信令和设备管理后台部分,支持NAT,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将其他不带国标功能的基站/直播流/直播推流转发到国标平台。
2、应用场景
-
支持浏览器无插件播放网络头视频。 支持国标设备(地铁、平台、NVR等)设备接入 支持rtsp、rtmp,直播设备设备接入,充分利旧。 支持国标级联。多平台级联。跨网视频预览。 支持跨网网闸平台互联。
3、源码:https://gitee.com/pan648540858/wvp-GB28181-pro.git
https://gitee.com/pan648540858/wvp-GB28181-pro.git
4、文档:https://doc.wvp-pro.cn/#/_content/introduction/compile
https://doc.wvp-pro.cn/#/_content/introduction/compile
5、编译:
# 源码下载
git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git
cd wvp-GB28181-pro/web/
# 源码编译
npm --registry=https://registry.npmmirror.com install
npm npm run build:prod
cd wvp-GB28181-pro
mvn package
cd wvp-GB28181-pro
mvn package -P war
四、ZLMediaKit
1、简介
基于C++11的高性能运营级流媒体服务框架
2、功能特点:
-
基于C++11开发,避免使用裸虾,代码稳定性可靠,性能相当。
-
支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。
-
使用多路复用/多线程/异步网络IO模式开发,并发性能提升,支持海量客户端连接。
-
代码经过长期大量的稳定性、性能测试,已经在线上验证已久。
-
支持linux、macos、ios、android、windows全平台。
-
支持x86、arm、risc-v、mips、龙芯、申威等指令集平台。
-
支持画面秒开、极低延迟( 500毫秒内,最低可达100毫秒)。
-
提供完善的标准C API,可以用作SDK,或提供其他语言调用。
-
提供完整的MediaServer服务器,可以免开发直接部署为服务器。
-
提供完善的restful api以及web hook,支持丰富的业务逻辑。
-
打通了视频监控协议栈与直播协议栈,对RTSP/RTMP的支持非常完善。
-
功能完善,支持集群、互转协议、插入推拉流、先播后推、断连续推等功能。
-
最大性能,单机10W级别播放器,100Gb/s级别io带宽能力。
-
极致体验,独家特性
-
谁在使用 zlmediakit?
-
全面支持ipv6网络
-
支持多轨道模式(一个流中多个视频/音频)
-
全协议支持H264/H265/AAC/G711/OPUS/MP3/VP8/VP9/AV1,部分支持JPEG/H266/ADPCM/SVAC/G722/G723/G729
3、源码:https://github.com/ZLMediaKit/ZLMediaKit
https://github.com/ZLMediaKit/ZLMediaKit
4、文档:
https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
5、编译运行
### 1、编译
# 国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 千万不要忘记执行这句命令
git submodule update --init
### 2、运行
cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &
五、FreeSWITCH
1、简介:
FreeSWITCH是一个开源的电话软交换平台,支持实时音视频通信及会议,支持SIP及WebRTC等多种通信协议。其主要开发语言是C,某些模块使用了C++,以MPL1.1发布。
2、源码:https://github.com/signalwire/freeswitch
https://github.com/signalwire/freeswitch
3、编译
# --prefix指定安装目录:--prefix=/home/test/freeswitch-1.10.8.-release/build_bin
./configure --prefix=/home/test/freeswitch-1.10.8.-release/build_bin LDFLAGS="$LDFLAGS -L/home/test/freeswitch-1.10.8.-release/spandsp-master/build/lib -L/home/test/freeswitch-1.10.8.-release/sofia-sip-master/build/lib -L/home/test/freeswitch-1.10.8.-release/speex-Speex-1.2.1/build/include/lib -L/home/test/freeswitch-1.10.8.-release/speexdsp-SpeexDSP-1.2.1/build/lib" CPPFLAGS="$CFLAGS -Werror=deprecated-declarations -I/home/test/freeswitch-1.10.8.-release/spandsp-master/build/include -I/home/test/freeswitch-1.10.8.-release/sofia-sip-master/build/include -I/home/test/freeswitch-1.10.8.-release/speex-Speex-1.2.1/build/include/ -I/home/test/freeswitch-1.10.8.-release/speexdsp-SpeexDSP-1.2.1/build/include" PKG_CONFIG_PATH=/home/test/freeswitch-1.10.8.-release/spandsp-master/build/lib/pkgconfig/:/home/test/freeswitch-1.10.8.-release/sofia-sip-master/build/lib/pkgconfig/:/home/test/freeswitch-1.10.8.-release/speex-Speex-1.2.1/build/lib/pkgconfig:/home/test/freeswitch-1.10.8.-release/speexdsp-SpeexDSP-1.2.1/build/lib/pkgconfig:/usr/local/lib/pkgconfig/:$PKG_CONFIG_PATH --disable-core-libedit-support --disable-libvpx --disable-libyuv --with-openssl --disable-mod_av
FreeSWITCH编译相对复杂,目前没有编译通过!!!
六、Flexisip
1、简介:
Flexisip 是一个全面、模块化且可扩展的 SIP 服务器套件,采用 C++17 编写
2、功能特点:
-
代理服务器:作为路由SIP消息的中央枢纽。 推送通知服务:即使应用已启动,仍向移动设备发送SIP通知(通话中、消息) 没有在运行。
-
在线服务器:允许用户查看他人的在线状态及其通话可用性。
-
会议服务器:支持组队语音和视频通话。
-
背靠背用户代理(B2BUA)服务器:支持呼叫者身份转换、媒体级转码和SIP 集群。
-
RegEvent 服务器:通知分层域名用户注册情况。
3、源码:https://github.com/BelledonneCommunications/flexisip
https://github.com/BelledonneCommunications/flexisip
4、编译:
编译环境依赖:
-
C 和 C++ 编译器。只要GCC 和 Clang 版本足够新,能够编译 C++17 代码,就都受支持。
-
CMake >= 3.13
-
make or Ninja
-
Python >= 3
-
Doxygen
mkdir ./build
cmake -S . -B ./build
make -C ./build -j<njobs>
七、Asterisk
1、简介:
Asterisk 是一个用于构建通信应用程序的开源框架
2、源码:https://github.com/asterisk/asterisk
https://github.com/asterisk/asterisk
3、编译:
./configure
make menuselect
make
make install
更多推荐
所有评论(0)