Asterisk社区还真够活跃,刚刚在Asterisk 增加了 webrtc, ICE等新技术的支持,这不,又要在Asterik 12中替换其原有的SIP
协议栈,对Asterisk 内部了解的人都知道,其现有SIP协议栈有诸多弊端,导致其已经很难维护,以下是其现有SIP协议栈的缺点:
1. 整个SIP协议的实现代码不是一个以协议栈方式组织的,全部代码在一个文件 chan_sip.c中,没有SIP协议分层的概念,导致添加一个传输层的支持
要在整个源码里面各种找。
2. 改一个bug往往导致新的bug出现,原因是其代码抽象很差,一个标志位可能用在多个地方来标识某个特性,稍有疏忽,就会导致一个新的BUG。
终于 asterisk向第三方SIP协议栈招手,在流行的SIP协议栈 pjsip, reprocate, sofia-sip中选择了 pjsip. asterisk-scf也是用的这个协议栈,但遗憾的是asterisk-scf项目
中途夭折了。。
采用新SIP协议栈将实现如下功能:
- Transports (all IPv4 and IPv6)
- UDP
- TCP
- TLS
- Websocket
- Digest authentication
- Media sessions
- Basic phone calls
- Call transfer
- Audio/video capability negotiation (to include T.38 negotiation)
- Direct media
- Session timers
- Party Identity
- Registration
- Registrar for incoming registrations
- Client registration (i.e. outgoing registration)
- Subscriptions
- Presence
- Dialog-info
- Message-summary
- Call-completion
- Messaging
- Out-of-call messaging