您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

SIP系列讲座-SIP Trunk

2017-12-04 15:32:02   作者:james.zhu   来源:Asterisk微信公众号   评论:0  点击:


  我们在前面的讲座中已经比较全面完整地介绍了SIP NAT的解决方案,现在我们重点介绍一下SIP的trunk一些技术概要。网络上已经有很多关于SIP trunk的功能介绍和配置介绍,很多资料已经可以帮助用户完成SIP trunk的配置,笔者希望通过其他不同的角度对SIP trunk(中继)进行讨论,以此来帮助读者丰富一些关于SIP trunk的内容。我们将要讨论的内容包括:SIP trunk的优势,SIP 容灾,SIP和MPLS,SD-WAN,SIP trunk 需要考虑到因素,SIP 企业用户的身份验证方式,常见问题排查和SIPit对终端和IPPBX测试数据分享。
  1、SIP trunk可能很多读者已经非常熟悉,为了让一些新人了解trunk的基本概念,我们这里简单重复介绍一下trunk。SIP中继简单来说(当然还有其他类型的连接,例如H323),就是一个对SIP业务进行接入支持的逻辑连接。和SIP trunk对应的就是传统的PSTN网络中trunk,在传统PSTN网络中,我们也会使用trunk这个用法。但是,在传统的PSTN网络中,我们仍然可以看到至少有一个物理的连接方式,通过物理线路的连接方式从运营商对接到客户端网络。在SIP网络中,我们基本上没有看到它的物理形态的连接方式,仅通过虚拟的逻辑连接对接运营商和终端客户的IP解决方案。根据RFC对trunk的定义是:
  以下图例介绍了传统E1/T1 trunk接入方式的企业IPPBX,运营商通过物理的trunk连接到用户端IPPBX。当然,这里的E1接入方式需要本地部署一个E1接入网关或者语音板卡。
  以下图例介绍了用户通过网络使用SIP trunk来实现的SIP接入方式,SIP对接到企业用户本地IPPBX。
  以下图例说明了一个比较完整的传统TDM和SIP混合的接入方式,客户分别使用了SIP trunk和TDM trunk的方式。
  根据目前的发展来看,SIP trunk 已经可以完全兼容目前市场上绝大部分的应用服务器,这里的Asterisk是一个相对比较笼统的称呼,事实上,这里包括了很多厂家使用Asterisk平台开发的商业IPPBX,和非常流行的开源项目FreePBX和Issabel 开源项目。
  使用SIP trunk和传统的PSTN网络相比,SIP trunk 具有以下这些优势:
  • 通话成本相对比较低廉。
  • 部署方式相对比较灵活。
  • 扩容相对比较方便。
  • 终端支持的灵活性相对比较大。
  • 客户可以获得不同落地服务商的号码资源。
  • DID资源丰富,可以支持公司更多分机号码。
  • 如果发生接入设备故障时,SIP trunk非常快速切换到E1/T1中继。
  2、现在我们介绍几个关于SIP trunk在企业应用环境中的典型场景,用户可以了解更多SIP trunk的场景,例如总部分公司之间的连接,LCR和trunk逃生切换。
  以下图例介绍了一个企业多地部署的场景(Peer之间的连接),一个跨国公司通过SIP trunk可以实现不同国家之间(美国,日本,中国和越南)的分公司工厂之间的连接,这也是很多企业客户经常使用的场景,通过这样的部署方式,企业内部通话就可以实现完全免费。当然,除了实现内部免费通话的好处以外,企业总部可以对分公司的电话系统进行有效地监管,方便管理层对公司全局的管理。
  为了实现企业IPPBX多地部署和互通,仍然需要面对很多的技术挑战,用户可能需要考虑很多技术因素,产品兼容性的问题,本地支持力度,本地网络带宽支持能力等问题。企业用户必须根据不同环境和相关要素进行全面考虑,根据公司需求和本地资源来完成部署。
  另外一种场景就是使用LCR实现最低话费呼叫。因为国际业务的需求,有很多企业的国际话费成本仍然很高,如果选择SIP trunk的话,用户可以使用LCR策略对接运营商所提供的不同国家的线路资源实现最低话费计费方式,用户通过最佳的线路呼叫。
  SIP trunk 还可以提供灵活切换保证企业IPPBX正常工作。在实际环境中,企业IPPBX不能正常工作是完全可能发生的事情,如果大容量的企业IPPBX一般都部署一台从IPPBX来作为一个备份,如果主服务器不能工作的话,另外一台从服务器可以继续工作。公司核心人员的分机可以快速切换到从服务器注册。当然,这里需要注意几个方面的因素,运营商是否能够灵活切换客户端IP地址,企业客户防火墙能够支持主从服务器IP路由和安全策略,同时IPPBX必须支持数据交互的同步(例如数据库同步)。我们这里不涉及IPPBX高可靠性解决方案和接入设备的逃生功能。
  3、SIP trunk的性能是企业客户非常关心的一个话题,因为SIP trunk的性能直接影响了SIP呼叫的QoS或语音通话质量。为了提高SIP trunk的性能或稳定性,运营商的网络带宽当然是一个最重要的一个指标。目前,大部分国内运营商带宽已经升级支持了光纤,网络带宽足够,语音质量基本上不会有太大影响。但是仍然有一些地方的运营商在带宽上存在问题。很多ADSL的客户可能会出现语音质量差,容易掉线等情况。很多企业用户可能不了解运营商的技术细节,导致语音质量不好,笔者建议用户和运营商咨询,获得带宽服务的详细说明。很多时候,因为运营商提供的网络带宽的上行和下行的带宽速度不同,客户IPPBX呼入呼出使用了不同的带宽,外部客户呼入时使用的Download带宽,而呼出时则使用的Upload 带宽,导致呼叫的语音质量发生了很大的变化。
  SDSL相对比ADSL好一些,SDSL提供了上下行对称的带宽,所以SIP呼叫的呼入呼出带宽基本上一致,避免了ADSL对SIP trunk支持上的一些缺点。关于ADSL和SDSL的技术细节,用户可以在网络上查找来做进一步研究。除了我们上面提到的带宽问题,大家也需要注意语音编码的选择类型,关于语音编码的类型和带宽占用笔者已经在以前的文章中做过很多介绍,这里不再过多论述。在实际部署环境中,企业用户可以根据计算工具,选择相应的并发呼叫数量和编码就可以算出自己所需要的带宽。
  4、在部署SIP trunk是,MPLS(Multi-Protocol Label Switching)也是我们需要说明的技术内容。虽然,MPLS相对距离我们终端客户比较远,和我们今天讨论的主题不是非常接近,实际上已经在网络中得到了应用,所以我们今天还是有必要花费一点篇幅简单对MPLS做一个介绍。MPLS的一种利用在核心网络中利用标签引导的方式进行数据传输的技术,它可以支持多业务能力,解决了IP分组的局限性。以下图例说明了PE(运营商边界网络)和CE(终端用户边界网络)在核心网络中的相互关系。
  很多时候,MLPS也可以支持语音和数据混合分离的状态,MPLS网络可以独立出语音网络和数据网络,两者之间不会互相影响。
  以下图例是思科在融合通信中使用MPLS技术的拓扑实现。
  MPLS具有以下优势:
  • 节省了成本,和传统的Frame Relay或ATM技术相比,MPLS大幅减少了成本。
  • 支持QoS的管理,优化了对语音和视频的性能支持。
  • MPLS可以支持冗余线路快速切换。
  • 更好的性能支持,因为降低了路由器之间的跳转,性能方面得到了更好保障。
  • 在上面的技术中,因为传统互联网的接入方式发生了很多的变化,DSL,光纤和LTE已经进入了我们的日常生活,但是这些接入方式同时影响着多种企业网络业务。SD-WAN是一种针对WAN进行网络管理优化的技术。一般中文翻译成软件定义的广域网。

  • SD-WAN结合了硬件和软件技术来进行对企业网络的优化和部署管理,充分发挥了网络的作用,使之能够全部网络可以提供更加快速高效的网络环境来支持不同应用需求环境。以下图例说明了传统WAN环境和SD-WAN环境的不同。
  在实际应用环境中,客户对SD-WAN的要求和运营商所提供的服务如以下图例:
  以下引用的数据说明了SD-WAN技术的市场发展预测。
  Over the next five years, SD-WAN sales will grow at a 69% compound annual growth rate, hitting $8.05 billion in 2021, according to IDC’s Worldwide SD-WAN Forecast, 2017–2021.
  因为客户对大数据,云服务,和移动性的要求,很多公司的网络平台需要和第三方平台对接,很多分公司业务需要通过总公司的网络对接到一些服务提供商,这时,就可能导致总公司的网络承载陡然增加,如果单纯使用MPLS已经很难保证网络的稳定性,SD-WAN则可以实现对网络数据的优化和分离,通过SD-WAN实现网络的稳定性,降低了网络的复杂程度。在以下的图例中,读者可以看到,如果公司订阅了云服务,为了对公司全部网络进行控制管理,所有分公司的员工如果要使用软件订阅服务,必须通过总部的网络,这样就会导致总部网络带宽需求和稳定性受到严重影响。
  通过SD-WAN的重新部署,分公司网络可以直接经过互联网访问所订阅的服务,这样就可以大大降低网络的复杂性,同时实现网络的可控。
  但是,读者要注意,SD-WAN本身仅是针对网络本身的实现,它本身不是专门针对通信的网络,所以,它也可能出现数据包丢失,导致客户端出现其他问题。因为客户环境中缺乏对网络的可见性,所以可能造成客户排查问题比较困难,也不会像客户期望的那样简单。
  5、随着企业应用服务能力需求的增加,运营商需要对企业客户提供更多的IPPBX功能来满足用户的需求。传统的IPPBX和一般的SIP trunk仅需要一个呼出号码或者一条PSTN物理连接线路则可以确认IPPBX的身份,而基于SIP trunk的客户一般都可以获得除了电话呼叫业务本身以外,SIP 服务提供商还可以提供短信,在线状态等其他的增值业务,这就需要运营商身份属性的要求更加明确。确认一个企业号码身份必须满足一下条件:
  • 企业IPPBX的分机需要和呼出设备有关联关系,企业用户必须有DID号码。
  • 身份信息中可能包括企业名称和呼叫方名称。
  • 企业用户IPPBX可以接收呼入的DID,并且连接(路由)内部分机。
  • 通常运营商通过两种方式来对企业用户呼出的身份进行确认:
  • 通过SIP 头中的From 消息中的caller name和号码。这个身份消息被作为PSTN呼叫的“private”和“public”身份确认消息。
  因为基于SIP网络的VOIP业务,仍然需要同时兼顾传统PSTN的号码传递和确认机制,但是以前的方式不能满足SIP trunk的业务需求,现在很多SIP运营商不仅仅提供简单SIP呼叫业务,同时增加了很多的增值服务,这些增值服务的身份确认不仅仅需要一个企业呼叫号码,同时还要企业内部分机支持的其他增值服务。因此,RFC标准对P-Asserted Identity进行了规定来支持运营商对企业客户的更多身份确认方式。通过P-Asserted Identity 支持了运营商要求的企业PBX的呼叫的号码,并且提供了对运营商提供的其他服务的确认功能,例如,短信,在线状态等业务功能。这种方式也是运营商普遍使用的一种身份确认方式。这里,IPPBX必须重新把From头的消息映射成一个新的Privancy ID, 这里的name和号码都发生了改变。IPPBX必须在SIP 头中包含Privacy 头对运营商请求一个privacy消息,IPPBX的SIP头中必须包含P-Asserted Identity,这样运营商可以确认这是运营商自己的“私网”用户。我们的示例中介绍的是运营商和企业办公室之间的连接方式,这种方式可能不是运营商一定要要求的,但是如果运营商需要一些加密措施的话,所以这种方式是比较明智的选择。
  根据rfc 3325的规定,如果终端客户要转发一个消息时,此时转发的目的地不在被信任的网络中,则必须移除已经P-Asserted Identity。这里,如果对端不在可信任的网络中,对端收到的信息以后则不会看作是一个private的消息。当代理进行转发时,它必须决定下一个节点是否可信。如果是可信的节点,它不会移除任何自己创建的P-Asserted Identity或来自于可信任节点的P-Asserted Identity(PAI一般用于两个Proxy之间的可信任机制,说明UA是通过可信任机制验证的)。如果是不信任的节点,则必须检查Privacy的消息。P-Prefered-Identity(PPI)是终端通知Proxy使用声明的身份验证方式来支持可信任机制(一般用于UA到Proxy之间的传递)。在P-Asserted Identity 的值中必须包括name-addr/addr-spec,可以是一个值或者两个值。如果是一个值,则必须是sip,sips或者tel URL。如果是两个值,一个值必须是sip或者sips URL,另外值必须是tel URL。P-Prefered-Identity也是一样的要求。
  注意,RFC3325 这是针对P-Asserted Identity做了规定,但是没有非常明确说明P-Asserted Identity(PAI)和P-Prefered-Identity(PPI)在SIP其他methods中的使用方式和响应方式,RFC5876一个针对RFC3325的拓展协议,在RFC5876专门对SIP UPDTAE, MESSAGE和PUBLISH做了规定。事实上,在RFC5876的规定中也没有完全说明以上Methods中的P-Asserted Identity用法。读者如果感兴趣的话,可以查阅RFC5876做进一步研究。
  以下示例是终端支持了P-Prefered-Identity的消息说明,UA首先发送INVITE消息,并且携带了P-Prefered-Identity,经过第一个Proxy(1),创建了P-Asserted Identity(2),然后经过第一个trusted 节点,通过这个trusted 节点到最后一个Untrusted(3),移除P-Asserted Identity消息(4)。
  以下消息是终端未带P-Prefered-Identity的消息说明,因为最后一个节点是Trusted 节点,这里的P-Asserted Identity没有被移除,最后到一个trusted 节点。
  6、企业IPPBX部署时可能需要涉及呼叫音这个概念。通常情况下,运营商会对企业客户端IPPBX发送SIP响应的消息,企业IPPBX则根据不同的响应码生成不同的呼叫音。本地IPPBX可以根据不同的SIP响应码来生成本地的呼叫音。为了满足通信行业标准的呼叫音,IPPBX厂家一般都会根据ITU的标准来生成标准的呼叫音,但是生成什么样的呼叫音完全有赖于本地IPPBX本身。
  7、在部署SIP trunk时,尽管所有厂家都声称遵守RFC,但是在实际应用环境中,因为很多厂家对RFC的解释不同,或者无法支持更多的RFC标准,这样可能导致运营商SIP trunk可能不能和厂家的IPPBX完全兼容。这是非常常见的问题。因此,企业用户在部署SIP trunk时需要考虑以下几个方面的问题:
  • 关于企业IPPBX IP地址的问题,运营商可能需要企业客户提供IP地址,这里的IP地址可能是企业客户的SBC地址,也可能是IPPBX地址,企业客户是否有第二个IP地址,是否通过第二个IP地址做逃生处理。
  • 确认企业SBC是否可以支持SIP Digest Authentication,保证验证消息可以成功接受。
  • 企业客户终支持的号码格式(SIP From URL),是完全纯位数号码还是+164的格式。因为号码格式会影响号码匹配路由方式,用户首先需要了解这个号码格式。
  • 企业客户终端设备是否需要支持Diversion 头的转发。如果终端没有支持的话,运营商可能会添加这个转发的头消息。这个头消息携带了源呼叫号码消息,它可以支持各种拓展的融合通信功能,例如短信,第三方语音邮箱,ACD等功能。更多关于Diversion 支持的内容,读者查阅RFC5806。
  • 是否支持REFER 实现电话转接或re-INVITE。
  • 确认企业客户的终端是否真正支持RFC3264中规定的SDP Offer/Answer模式。
  • SIP终端设备是否支持RFC2833,是否支持RFC4733定义的RTP Payload,终端设备是否支持使用G.711,使用带内传输DTMF。
  • 终端设备是否具备了支持SBC的能力,包括丢包处理,数据包优先级设置,抖动,时延和MoS设置。
  • 终端设备是否完全支持呼叫等待中的头域支持能力支持,例如a=inactive/sendonly/recvonly/sendrecv支持和SDP Offer或Answer中的c=0,0,0,0支持。
  • 运营商是否正常编码打包时长的重新设置,通常情况下,SIP终端支持的G.711的打包时长为默认20 ms,运营商是否可以支持不同的打包时长?
  • SIP终端必须支持From 头,并且结合P-Asserted Identity(PAI)获得可信任身份, 运营商不支持匿名呼出的号码。
  • 为了支持SDP消息中的183,200 Ok,或者202 的带内呼叫音,在到达终端客户之前,终端设备必须能够马上关闭任何本地生成的呼叫音或切断早期媒体流。
  • 终端设备是否可以支持使用RTCP-XR(RTP Control Protocol Extended Reports)生成VOIP报告,它可以方便对SIP设备的排查,主要包括的传输是:丢包,PLC和信号级等参数。读者可以查阅RFC3611获得更多信息。
  8、企业用户在部署SIP trunk可能会遇到一些问题,笔者罗列了一些主要问题,帮助用户可以快速排查问题。这些问题大致包括:
  • SIP trunk 创建失败,一般情况下,客户需要检查域名,防火墙账号和密码设置。
  • 403 Forbidden 错误,用户重新检查密码。
  • 407 Proxy Authentication Required, 企业IPPBX对运营商的Proxy发送一个INVITE消息来验证IPBBX身份。
  • 语音质量问题,企业用户确保支持足够的带宽,通过以上章节介绍的工具来计算所需带宽。
  • 单通问题,双方不能听到对方的声音,此问题通常是因为防火墙引起的,企业用户检查自己的防火墙。
  • trunk 经常掉线的问题,通常情况下,用户需要重新设置IPPBX的SIP定时器来保证trunk 处于keep live状态。企业用户可以考虑把定时器设置到小于20 ms。
  9、目前市场上已经有很多IPPBX,但是用户在选择IPPBX仍然可能会遇到很多兼容性的问题,可能很多厂家对SIP兼容性测试也不够重视,不够严谨,这样就可能导致某些IPPBX功能或对SIP终端支持能力不好,还有因为目前很多厂家都是使用开源平台来开发的IPPBX,厂家也没有花费时间在底层做进一步的研究,如果开源的平台支持了SIP的兼容性参数,则默认厂家的也支持了这些参数。根据SIPit的2014年的测试报告指出(笔者没有拿到最新的测试报告):

 


  以上采集的数据基本上涵盖了目前世界上比较有名的厂家IPPBX和终端产品,对企业用户选择IPPBX有一定的参考作用,企业用户可以根据这些数据进一步和IPPBX或终端厂家进行沟通来保证产品的兼容性。
  在以上章节的讨论中,笔者首先介绍了SIP trunk的一些背景知识和其优势,也介绍了企业部署SIP trunk的拓扑图,在部署时讨论了MPLS和SD-WAN在最新技术方面对SIP的支持。在部署SIP trunk时用户可能面对很多的介绍问题,这些问题需要企业用户逐一对照和进一步的研究来保证能够成功部署SIP turnk。在实际使用过程中,用户可能会遇到一些常见的问题,笔者也做了简单分享,用户可以根据这个思路来做排查工作。最后,笔者根据SIPit的报告罗列出了终端厂家和IPPBX厂家的兼容性测试出现的问题,这样帮助企业用户能够全面掌握存在的问题,在部署IPPBX前及时和厂家进行沟通。
  参考资料:
  https://tools.ietf.org/wg/mpls/
  https://tools.ietf.org/id/draft-rosenberg-sipping-siptrunk-00.txt
  https://yq.aliyun.com/articles/125331
  https://www.sdxcentral.com/
  https://tools.ietf.org/html/rfc5876
  https://tools.ietf.org/html/rfc3325
  http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
  https://www.packetizer.com/rfc/rfc3611/
  http://www.voiptroubleshooter.com/tools/voiptr_rtcpxr.htm
  https://www.sipit.net/SIPit31_summary
  关注微信公众号:asterisk-cn,获得有价值的行业分享。访问开源IPPBX论坛获得技术帮助:www.issabel.cn/forum
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题