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

SIP系列讲座-SIP-PSTN-2

2017-10-26 13:54:38   作者:james.zhu    来源:Asterisk微信公众号   评论:0  点击:


  在以前的讲座中,我们讨论了SIP-PSTN的一些相关技术要素。今天,我们继续讨论其他几个和SIP/PSTN相关概念,这些概念也是和SIP/PSTN紧密结合的要素,它们包括:TRIP,SIP-T,ISUP/SIP的消息映射,SIP和DTMF。
  1、TRIP全称是Telphone Routing Over IP。它的主要作用就是进行IP和PSTN号码之间的映射查询。它的全称是Telephony Routing Information Protocol 。在SIP/PSTN网络技术的技术中,用户需要首先了解什么是SS7,TUP/ISUP等基本的概念,这样方便用户理解相应的技术细节和方便进行下面的讨论。
  在SIP/PSTN网络环境中,如果要拨打某个地方的电话号码,系统首先需要查询号码的归属地和特性。通过不同定位服务器的查询,最终路由到一个正确的号码地址。具体技术细节,用户可以参考RFC3219标准,以下图例也可以说明基本的框架流程。
  如果用户拨打了一个以702开始的号码,用户需要经过4个步骤来查找号码所在地,然后进行路由。以下图例呼叫流程经过了以下几个定位服务器来查找702开头的号码,最后路由到相应的服务器。
  2、首先,SIP-T不是一种网络协议,它仅是一种PSTN网络到SIP网络的传输机制接口。它支持传输传统网络到SIP网络,然后到传统PSTN网络中的相关功能。SIP通信的主要特征之一就是PSTN的透明传输,这就要求SIP通信架构中需要有相应的映射方式来解析PSTN的功能要求,例如,在SS7中的呼叫等待,免费号码服务等等功能就需要同样在SIP通信中得到相应的体现。
  为了完整集成SIP和PSTN网络,SIP-T 提供了两种主要的特性encapsulation(封装)和translation(转译)的功能。
  SIP-T 通过封装PSTN信令,然后通过多个MIME消息体,SIP消息中包含多个payloads(SDP和ISUP)。translation 则打包所有转译以后的SIP和ISUP之间的消息。在打包过程中,用户需要留意两个核心的模块:
  ISUP SIP 消息映射,例如, IAM对应INVITE消息,REL 对应BYE等等。
  ISUP 参数和SIP header的映射,例如IAM参数中的 Called Party Number 必须映射到SIP ‘to’头域和Request-URL中。
  SIP-T仅是SIP的拓展,支持了大部分SIP的主要功能,但是对于软交换,或者需要更多承载服务能力的软交换系统和SBC来说,显然,SIP-T不能完全满足它们的需求。目前由ITU发布的SIP-I 封装的机制,它和SIP-T相比,更加准确,同时它满足了SIP和SIP/3GPPSIP,BICC/ISUP的功能需求。很多网关厂家,软交换厂家和SBC厂家都推荐使用SIP-I。
  3、上面的讨论中,我们提到了ISUP/SIP消息映射的问题。现在我们讨论一下通过SIP 转换的消息路径。首先,大家看看以下这个图例,这是不通过SIP 网关的一个呼叫流程,完全是局端到终端之间的信令交互。
  以下这个图例说明了通过PSTN呼叫到SIP,然后SIP再呼叫PSTN的整个流程。在这个图例中,SIP承担了一个信令转译的过程。
  以下图例介绍了SIP UA 发起一个INVITE以后,通过SIP 网关,对端创建IAM,通话,然后到最后挂机的流程响应。
  以下是ISUP事件代码和cause code相对应的SIP消息:
  4、SIP和DTMF之间的关系。在介绍DTMF之前,我们首先解释几个基本的技术名称,例如,通常我们谈论的DTMF tone 或者拨号音。完整的拨号音包括以下几种:
 
  DTMF tones, DTMF 按键音生成的语音。读者可以对照自己的手机就可以发现这些按键的对应数字号码。
  Fax-related Tones,它涉及了传真音等传真相关设置。
  Standard subscriber line tones,它涉及了拨号音中的业务服务的语音,例如,忙音,振铃音,拨号音,拥塞音,摘挂机音等语音。
  Country-specific subscriber line tones,它涉及长途呼叫,国际业务等等相关控制的语音。
  Trunk events,它涉及了中继所有相关的事件音的生成,例如MF 多音,脉冲等语音。
  因为以上讨论的涉及了太多TDM的相关技术,我们现在仅讨论一下和SIP相关的话题,SIP所支持的DTMF测试方式。SIP所支持的DTMF传输包括了SIP INFO(RFC6086), RFC 2833(已经更新为RFC4733)和Inband。在以前关于Asterisk讲座中,我们已经介绍过一些DTMF设置的细节,今天我们再补充一点相关的知识。
  Inband 顾名思义,它支持带内传输,传输的DTMF音和本身RTP语音是混在一起的传输的。所以,如果双方在通话时,有一方如果摁DTMF按键的话,双方可以听到通话中有DTMF按键音。但是,因为Inband方式使用的是带内的传输方式,如果编码使用的编码类型是G.729,G.723 时,语音编码经过压缩以后,有时DTMF可能不能正常工作。所以,为了保证DTMF能够正常工作,准确识别DTMF,建议在Inband方式中尽量使用G.711编码,因为G.711是未经压缩的编码,可以保证DTMF正常工作。
  RFC2833方式通常称之为带外传输方式,它本身的RTP语音流和DTMF语音是互相独立分离的。DTMF有自己的RTP数据包。如果RTP语音流使用其他编码传输时,DTMF是不受影响的,这样就可以保证DTMF的稳定性相对好很多。同时,RFC2833也可以支持多种语音编码格式,例如上面所提到的G.729等。同时,它可以支持多种事件tone(上面提到的各种事件tone)的传输,网关测或者UA也可以生成tone的语音。
  RFC2833的更新的版本为RFC4733,但是目前,市场上还没有太多厂家支持,这里不做太多介绍,希望用户随时关注。以下是一个RFC2833 DTMF 跟踪信息,在以下的测试场景中,我们看到用户摁了DTMF 1 按键。同时,在另外一张截图中,我们可以看到用户完整的DTMF输入。
  例如,用户需要输入自己的银行账户信息,这个图例完整地捕捉了所有DTMF信息或密码信息。
  SIP INFO 是由SIP消息来发送DTMF的一种方式,它也是一种带外传输的方式。根据SIP-INFO的标准定义:
  • Applications using this INFO Package MUST include an
  • "application/dtmf-relay" body in INFO requests to indicate which
  • digit was pressed by the user.  The body contains exactly two lines:
  • one of the button pushed, the other of the duration.  The body is
  • described in ABNF form as follows:
  • Dtmf-relay-body = digit-line CRLF duration-line
  • digit-line  = "Signal" EQUAL SP button
  • button  = DIGIT / "A" / "B" / "C" / "D" / "*" / "#"  duration-line   = "Duration" EQUAL SP msecs
  • msecs    = 1*4(DIGIT)  ;100-5000 millisecs
  事实上,在实际应用环境中,因为涉及了SIP信令控制的机制, SIP终端,网关,SBC厂家都支持多种方式的SIP INFO中DTMF传输方式。因此,很多厂家的PBX不推荐使用SIP INFO的方式,因为它不是真正的实时传输机制,很多时候因为网络的时延,可能导致DTMF传输问题。以下截图的跟踪消息,用户可以看到Content-Type中是dtmf-relay,message body中的DTMF是按键4。
  这里提醒大家,还有很少使用的一种方式就是直接使用application/dtmf 而不是dtmf-relay,不带DTMF时长,例如如下格式:
  • INFO sip:7007471000@example.com SIP/2.0
  • Via: SIP/2.0/UDP alice.uk.example.com:5060
  • From: ;tag=d3f423d
  • To: ;tag=8942
  • Call-ID: 312352@myphone
  • CSeq: 5 INFO
  • Content-Length: 1
  • Content-Type: application/dtmf
  5、在以上的讲座中,我们介绍了关于TRIP路由的流程和相关的服务器功能,同时介绍了SIP-T在PSTN/SIP网络中起到的作用,简单说明了SIP-I和SIP-T的区别已经所支持的服务类型,另外就ISUP/SIP的消息映射关系做了描述,最后对SIP传输DTMF的三种方式做了一个说明,同时也进一步提醒用户在使用这三种方式时应该注意的问题。希望读者可以对这些知识点有一个比较清晰的认识,以便在今后的工作中能够应用这些知识,排查问题。
  关注公众号:asterisk-cn 获得更多行业技术分享,访问论坛:www.issabel.cn/forum 获得更多开源PBX技术帮助。
  参考资料:
  https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00

【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题