SIP :Session Initiation Protocol/会话初始协议,互联网电话
RTP :Real Time Protocol/实时传输协议
RTCP: 每发完一批RTP包的时候,就发一个RTCP包,告诉接收方我刚才发了多少RTP包,多少个字节
PBX :程控交换机,集团电话
SIP: 基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。支持tcp和udp传输,通常使用UDP协议。
SDP:Session Description Protocol/会话描述协议,描述终端设备的特点。用途之一是会话建立时,需要媒体协商,双方才能确定对方的媒体能力以及交换媒体数据。
AOR:Address of Record, 设备无关的唯一地址, 格式为 SIP:user@domain
3PCC: 3rd Party Call Control
SIP协议栈
拨号地址格式: sip/sip:username@ip_address[:port]
注: 端口为可选项,不提供使用默认端口5060。
Kamailio
Kamailio
/
github仓库
,是流行的开源的SIP Proxy。和早期的另一分支OpenSips同样出自SER(SIP Express Router)。
不同于PBX,Kamailio是个纯粹的SIP服务器,它可以作为Proxy、注册服务器、重定向服务器,也可作为简单的Presence服务器,其本身并不处理RTP,可能通过RTPProxy来处理RTP的NAT问题。
Kamailio最新5.2版本,通常与RTPEngine组合,kamailio (995 ★) + rtpengine (311 ★)
# Debian/Ubuntu 仓库: https://deb.kamailio.org/
wget -O- http://deb.kamailio.org/kamailiodebkey.gpg | sudo apt-key add -
sudo apt update
sudo apt install mysql-server
sudo apt install kamailio kamailio-mysql-modules
systemctl start kamailio
# dump
kamcmd ul.dump
# 添加subscriber用户
kamctl add alice secret
kamctl restart
kamctl 命令示例:
– command ‘ul|alias’ - manage user location or aliases
ul show [
]………………. show in-RAM online users
ul show –brief…………………… show in-RAM online users in short format
ul rm
[
]……. delete user’s usrloc entries
ul add
…………… introduce a permanent usrloc entry
ul add
….. introduce a temporary usrloc entry
ul add
.. introduce a temporary usrloc entry
# 开启日志
vi /etc/rsyslog.conf
# 插入下面这行
local0.* -/var/log/kamailio.log
systemctl restart rsyslog.service
更多信息参考:
kamailio-install-guide-deb
RTPEngine
rtpengine
通常作为媒体代理(media proxy)。
rtpengine is a proxy for RTP traffic and other UDP based media traffic.
opensips
opensips
,同kamailio,用作SIP代理和控制信令。
现在主要为3.0/2.4两个版本分支,常见组合:OpenSIPS做sip proxy,FreeSWITCH做SBC和媒体网关,媒体网关也可选Asterisk。
opensips(619 ★) + rtp proxy ( 208 ★)
RTP Proxy
是一个高性能而且开源的RTP流(RTP Stream)软件代理(Software Proxy).
其典型应用就是作为OpenSIP服务器的子模块, 为SIP Call 提供的Video/Audio RTP Stream的转发.
Asterisk
is an Open Source PBX and telephony toolkit.
C实现,0.7k star。
FreeSWITCH
SIP/RTP开源实现
PJSIP: C语言实现的多媒体跨平台通讯库,支持SIP,RTP等多种协议
peers: Java实现
RTSP-Client-Server: Java的RTP实现
安卓客户端
Lumicall
: 支持证书