SIP电话的NAT穿越技术研究

2011-08-04 06:37郭朝鑫
通信技术 2011年12期
关键词:公网端口消息

郭朝鑫

(中国电子科技集团第三十研究所,四川 成都 610041)

0 引言

近年来,随着通信技术和网络技术的飞速发展,网络融合的进程进一步加快,IP分组网络作为实时和非实时业务的承载已成为大势所趋,IP电话相关技术及应用受到广泛关注。其中,会话初始协议(SIP,Session Initiation Protocol)由于简单、灵活、可扩展性强的特点,是目前通信界最为活跃的通信协议之一,SIP电话是当前研究的热点之一,也是电话网发展的方向之一。

当前越来越多企业采用 SIP电话进行企业内部数据网络和语音网络的整合,出于共享公网 IP资源及保护内网安全的考虑,大量的企业网和用户本地网采用了私有 IP地址通过出口的网络地址转换器(NAT, Network Address Translators)接入公网,NAT的大量部署给SIP电话的应用造成了较大困难。一方面,NAT后的SIP电话作为被叫时,由于其 IP地址是私有的,对公网不可见,呼叫消息无法到达NAT后的SIP电话,通信不能建立;另一方面,即使NAT后的SIP电话做主叫时,由于其 SIP呼叫消息中包含了IP层的信息如主叫的IP地址等,而此IP地址是私有的,对于公网上的网络设备和被叫都是不可路由的,同样会导致通信无法正常建立。综上所述,SIP电话的NAT穿越技术是影响SIP电话大规模部署应用的关键技术之一,该技术的研究对推动SIP电话的大规模应用具有重要的意义。

1 SIP电话简介

SIP电话系统包含两个基本组件:SIP用户代理[1]和SIP网络服务器。用户代理是呼叫的终端系统元素,而SIP网络服务器是处理与多个呼叫相关信令的网络设备。网络服务器包括代理服务器、注册服务器和重定向服务器。

SIP的消息采用文本方式,报文语法格式和整体框架都借鉴了超文本传输协议(HTTP,Hypertext Transfer Protocol)和简单邮件传输协议(SMTP,Simple Mail Transfer Protocol),简单、扩展性好。SIP协议[2-3]定义了INVITE、ACK、BYE、CANCEL、REGISTER、OPTIONS 等 6 种基本方法来实现呼叫,每一种方法都是一个请求消息。

图1表示了一种典型的中小规模SIP电话系统。该系统中,SIP服务器集成了代理服务器、注册服务器和重定向服务器的功能,为方便进行集中的媒体控制和提供增值服务以及媒体的NAT穿越,系统配置了媒体服务器,SIP电话终端位于NAT之后。

图1 一个中小规模的SIP电话系统组成

2 NAT穿越技术分析

2.1 NAT类型

NAT穿越技术与NAT的类型[4]关系密切,根据映射方式的不同,NAT可分为完全圆锥型,地址受限圆锥型,端口受限圆锥型和对称型这4种。

完全圆锥型 NAT:将从同一内部 IP 地址和端口出来的所有请求,都映射到相同的外部 IP 地址和端口。任何外部主机通过向映射的外部地址发送报文,可以实现和内部主机进行通信。

地址受限圆锥型 NAT:将从相同的内部 IP 地址和端口的所有请求,映射到相同的外部 IP 地址和端口。但是与完全圆锥型NAT 不同,当且仅当内网主机之前已经向公网主机发送了分组,此公网主机才能够向内网主机发送分组。

端口受限圆锥型 NAT:类似于地址受限圆锥型 NAT,但更严格,它增加了端口号的限制。

对称型NAT:从相同的内部IP地址和端口,并且到相同的目的地址和端口的所有请求,都映射到同一个外部 IP地址和端口。如果同一个内部主机,用相同的内部 IP地址和端口,发送了一个报文到另一个目的主机,则会使用不同的映射。而公网主机,只有在接收到分组后,才能与发送分组的内网主机进行通信。

2.2 NAT穿越技术

目前主要的NAT穿越技术[5-6]有以下几类。

(1)应用层网关

应用层网关(ALG,Application Level Gateway)工作在应用层,一般驻留在NAT设备中。ALG通过修改SIP信令中所携带的内网终端的地址和端口为NAT 的公网地址和端口,并保存相应的映射,控制NAT打开映射条目所对应的NAT端口来穿透 NAT。ALG 原理比较简单,但扩展性不好,每增加一种应用时,都需要对NAT进行升级。

(2)基于UDP的NAT简单穿越

基于UDP的NAT简单穿越(STUN[7],Simple Traversal of UDP Through Network Address Translators),通过某种机制由内网终端预先从 STUN 服务器(部署于公网)获得内网主机IP 和端口在NAT 上映射的IP 和端口,然后在报文消息中所描述的地址信息直接填写NAT上的对外地址,从而实现NAT穿越。该方式最大的优点是无需改动NAT,局限性在于终端需具备STUN代理功能,不支持TCP连接的穿越,不支持对称NAT的穿越。

(3)采用中继的NAT穿越

采用中继的 NAT穿越(TURN[8],Traversal Using Relay NAT)解决NAT问题的思路与STUN相似,也是基于用户通过某种机制预先得到其内网地址对应在公网的地址,STUN方式得到的地址为出口NAT上的地址,而TURN方式得到的地址为TURN服务器上的地址。该方式解决了STUN应用无法穿透对称NAT的缺陷,同时支持基于TCP的应用,局限性在于所有报文都必须经过 TURN服务器转发,增大了包的延迟和丢包的可能性。

(4)会话边界控制器

会话边界控制器(SBC,Session Border Controller)是近几年一种较新的NAT穿越技术,它位于接入控制层,其服务器部署在内网和SIP服务器(公网)之间,完成信令中转和媒体转发。对于SIP终端而言,可以将SBC看作集成注册服务器和代理服务器的SIP服务器。SBC进行NAT穿越最大的优点在于不需要对现有的网络结构作任何的假设和变更,但是SBC服务器也容易成为内网和公网通信的瓶颈。

3 NAT穿越设计

3.1 需求分析

在图1所示的SIP电话系统中,针对NAT的穿越设计,主要的应用需求分析如下:

①SIP电话系统最好不对网络结构提出限制;

②不要对现有的网络设备如NAT等升级改造;

③为减少维护管理投入,在内网和公网边界处不建议新增设备;

④SIP相关服务设备直接与公网连接,无NAT;

⑤SIP相关服务设备种类应尽量少,以减少系统部署后的维护工作量;

⑥SIP电话以及SIP相关服务设备可以增加支持NAT穿越的功能实体。

3.2 设计方案

根据上述需求分析,ALG方式需要对NAT进行升级改造,不适合该SIP电话系统采用。而SBC方式需要在NAT边界处部署SBC服务器,也不能完全满足需求,但是,SBC的NAT穿越思路对本系统有较大借鉴意义。STUN方式和TURN方式,与本系统的NAT穿越需求比较接近,然而,如单独使用其中的一种方式,仍存在着或多或少的缺陷,如STUN方式对NAT的类型有较大限制,TURN方式其服务器较容易成为系统瓶颈。因此,需综合分析本系统的NAT穿越需求,借鉴这几种NAT穿越技术,设计出适合的NAT穿越方案。

针对图1所示的SIP电话系统,设计NAT穿越方案如下。

对于SIP信令等协议消息的穿越,借鉴TURN方式,SIP电话终端通过与公网服务器的消息交互,预先得到其内网地址与公网地址的映射关系,然后在协议消息中修改相关信息。同时,为简化设备种类,将NAT穿越服务器功能实体与SIP服务器集成在一起。SIP服务器采用分布式部署方式,在系统用户规模较大时,配置多台SIP服务器进行负荷分担,同时 SIP服务器可互为备份。SIP服务器还具有控制媒体服务器完成媒体通道的开启和释放相关功能。

为解决SBC方式媒体转发的瓶颈,将媒体转发功能独立出来,采用单独的媒体服务器完成。媒体服务器采用分布式部署的方式,根据系统用户的规模,系统中可配置一台或多台媒体服务器,1台SIP服务器可控制管理多台媒体服务器。在SIP服务器管理区域内,媒体服务器可互为备份。

对于SIP电话终端,针对NAT穿越,主要的功能包括:维护与SIP服务器的消息交互,以获得其内网地址与公网地址的映射关系;修改SIP消息相关参数;话音通信时建立与媒体服务器的媒体转发通道。

3.3 协议流程

图2给出了一次典型通话的通信流程。在图2中,假定SIP电话终端A、B均位于NAT之后,NAT的类型为对称型。

图2 一次典型通话的通信流程

SIP电话终端A、B入网时,需向SIP服务器发出探测消息,终端根据SIP服务器的应答,获得NAT上的外部地址。同时,为维持该地址绑定,终端应定时向SIP服务器发送探测消息。该过程在图2中未表示。

通信流程描述如下:

①终端A向SIP服务器发出“INVITE”消息,SIP服务器收到此消息后,通知媒体服务器开启媒体转发通道;

②SIP服务器向终端A发送“100TRY”消息,消息中携带媒体服务器的地址;

③终端A收到SIP服务器的“100TRY”消息,得到媒体服务器地址,向媒体服务器发出媒体转发请求消息,由此媒体服务器和终端A均获得媒体转发时的NAT上的外部地址;

④SIP服务器向终端B转发“INVITE”消息,消息中携带媒体服务器的地址;

⑤终端B收到SIP服务器的“INVITE”消息,得到媒体服务器地址,向媒体服务器发出媒体转发请求消息,媒体服务器和终端B均获得媒体转发时的NAT上的外部地址;

⑥终端B向SIP服务器发送“100TRY”消息;

⑦终端B向SIP服务器发送“180RING”消息,SIP服务器转发至终端A;

⑧终端B向SIP服务器发送“200 OK”消息,SIP服务器转发至终端A,终端A发送“ACK”消息至SIP服务器,SIP服务器转发给终端B;

⑨终端 A、B进入通话态,媒体通过媒体服务器转发方式完成NAT的穿越;

⑩通话结束后,终端A向SIP服务器发送“BYE”消息,SIP服务器通知媒体服务器释放此媒体通道;SIP服务器转发“BYE”消息给终端B;

4 结语

上述SIP电话系统的NAT穿越方案,将SIP代理服务器、注册服务器和重定向服务器,以及针对NAT穿越的信令代理功能集成到SIP服务器中,大大减少了用户的使用维护成本,同时,将媒体转发功能采用独立的服务器实现,结合分布式部署方式,克服了通常的NAT穿越方案媒体转发的瓶颈。该方案特别适合于对网络结构无限制,网络设备不改造的应用环境。话音数据通过媒体服务器转发带来的时延和抖动,对SIP电话语音质量的影响评估以及相应的技术解决途径,是下一步需要研究的工作之一。

[1] 陈蕊,唐红,赵国峰.SIP协议用户代理的研究与实现[J]. 通信技术,2010,43(02):171-173.

[2] ROSENBERG J, SCHULZRINNE H, CAMARILLO G,et al.RFC3261,SIP:Session Initiation Protocol[S].[s.l.]:IETF, 2002.

[3] HANDLEY M, JACOBSON V.RFC2327,SDP:Session Description Protocol[S]. [s.l.]:IETF, 1998.

[4] 贾姗姗.基于SIP协议的VoIP系统中NAT穿越方案的研究与实现[D].北京:北京邮电大学,2009.

[5] 王啸,周渊平.VoIP系统中 NAT穿越技术的研究与实现[J].通信技术,2010,43(11): 111-113.

[6] 曹淼,李健,张烨,等. 基于 SIP的 VoIP穿透 NAT方法的研究与实现[J].网络安全技术与应用,2009(04):64-66.

[7] ROSENBERG J, WEINBERGER J, HUITEMA C, et al.RFC3489,STUN -Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) [S]. [s.l.]: IETF, 2003.

[8] 闵江. 一种利用TURN穿越对称型NAT方案的设计与实现[D].武汉:华中科技大学,2008.

猜你喜欢
公网端口消息
浅析大临铁路公网覆盖方案
一种端口故障的解决方案
公网铁路应急通信质量提升的技术应用
一张图看5G消息
端口阻塞与优先级
如何迎接公网对讲的春天
系统网络端口安全防护
基于公网短信的河北省高速公路数据传输应用
消息
消息