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