现在的位置: 首页 > 综合 > 正文

基于SIP 的NAT 穿透研究

2013年09月21日 ⁄ 综合 ⁄ 共 3680字 ⁄ 字号 评论关闭

1 引言
VoIP 是新一代网络时代发展起来的最具代表性和发展前
途的应用技术之一。SIP 作为VoIP 中的一种信令控制协议,具
有很大的增长潜力。因此为了更好地推广VoIP 业务的发展,解
决好SIP 穿越NAT 的问题将是一个重大的研究课题。本文主要
是在STUN 方法的基础上,针对其无法穿越对称型NAT 的缺陷
展开研究的,提出了一个改进的新方案。
2 SIP 协议、NAT 相关技术及STUN 简介
2.1 SIP 协议及相关内容
SIP 是由IETF(Internet 工程任务组)提出的多媒体通信控制
协议,用于发起、更改和终止一个多媒体会话,同时配合会话描
述协议(Session Description Protocol,SDP)可以对会话属性和媒体
属性进行设定和动态修改,并且由于SIP 协议简单、便于扩展和
扩充, 它已被业界选定为NGN 的核心控制协议。SIP 网络有2
个组成要素:SIP 用户代理和SIP 服务器。用户代理是呼叫的终
端系统,SIP 服务器是处理呼叫相关信令的网络设备。SIP 消息
有2 种: 从客户机发到服务器的SIP 请求消息以及从服务器发
到客户机的SIP 响应消息。SIP 定义了INVITE、BYE、OPTIONS
、ACK、REGISTER、CANCEL6 个基本方法。
2.2 NAT 技术介绍及NAT 分类
由于Internet 的迅猛发展,公网IP 地址变得非常紧缺,另外
为了管理方便和网络安全方面的考虑, 许多企业和机构将内部
的主机组织起来形成局域网, 这些主机通过设在网络边界上的
网关与外部网络通信,这样既节约了IP 地址又使内部主机免受
外来攻击,在这个网关上采用了一个非常关键的技术:网络地址
转换,即NAT。NAT 将每个局域网节点的地址转换成一个IP 地
址,反之亦然。它可以应用到防火墙技术里,把个别IP 地址隐藏
起来不被外界发现,使外界无法直接访问内部网络设备,同时,它
还可合理地安排网络中的公有地址和私有地址的使用。但由于
NAT 的工作层次,它又成了制约VoIP 在广泛发展的城域网和企
业网中应用的一大问题。
按照地址转换的方式,可以将NAT 分为3 类,静态NAT、动
态NAT 和网络地址端口转换(NAPT)。按照地址映射的实现方
式,可以将NAT 分为4 类,全锥型NAT(full cone NAT)、受限锥型
NAT (re-stricted cone NAT)、端口受限锥型NAT(portrestricted
cone NAT)和对称NAT(symmetric NAT)。前3 种NAT 均可实现
某内部(IP:端口)对与多个外部(IP:端口)对之间的映射转换,区别
在于NAT 的激活以及端口的限制。第4 种则要求每一对内外
(IP:端口)对对应惟一的映射绑定,即根据目的地址不同而映射
为不同的公网地址。
2.3 STUN
STUN 是UDP 的NAT 简单穿越(simpletraversal of
UDPthrough network address translators)的简称,其解决思路是使
内网用户预先获知自己通过NAT 后将分配的公有地址,这样就
可以在SDP 中直接填入外部地址, 以取代其原来的私有地址。
STUN 解决方案的优点是无需做任何改动, 同时可用于多个
NAT 串联的网络环境,其局限性在于终端需加装STUN 客户端。
目前,业界对NAT 穿越问题非常关注,也提出了多种解决
方案,根据处理部分所在位置的不同,可以分为三种:客户端解决
方案、路由边界解决方案以及服务器端解决方案。
3.1 客户端解决方案
客户端解决方案主要包括:STUN (simple traversal of UDP
through NAT)、TURN(Traversal Using Relay NAT)、ICE(Interactive
Connectivity Establishment)。
3.2 路由边界解决方案
路由边界解决方案主要包括:应用层网关ALG、通用即插
即用UPnP、中间盒通信MIDCOM。
3.3 服务器端解决方案
服务器端解决方案主要包括:B2NUA(Back-to-Back User Agent)
、服务器端RTP 中继。
3.4 各种穿越方案的总结与比较
综上所述,SIP 穿越NAT 问题已有多种解决方案。客户端解
决方案,虽然无需对现有NAT 做任何改动,但对SIP UA 的要求
较高,需要支持相应的协议,而且到目前为止还无法解决通信双
方均处在对称性NAT 的情况;路由边界的各种解决方案,均需
要对NAT 设备升级,但目前网络实际已经部署了大量的不支持
相关特性的NAT 设备,因而这种方式可行性较差;服务器端解
决方案, 通过中继RTP 数据包来解决所有类型NAT 的穿越,缺
点就是增加了包的时延和丢包的可能性。
表3-1 给出了三种典型穿越方案的简单对比:
表3-1
4 一种实现SIP 穿越双对称NAT 的
新方案
4.1 改进方案中NAT 的分类
STUN 方式最大的优点是无须对现有NAT 网关设备做任
何改动,因此是当前业界较为流行的应用方案,其缺陷就是无法
完成对对称型NAT 的穿越;TURN 方式虽然支持所有类型的
NAT 穿越,但是它需要中转通信双方的媒体流,不可避免地增加
了包的延迟和丢包的可能性;ICE 结合使用了STUN 和TURN
两种协议,因而也存在TURN 方式所具有的缺陷。因此,为了能
保留STUN 方式的优越性, 进一步避免包的延迟和丢包的可能
性,对STUN 方式进行改进,扩大其使用范围就显得尤为重要。
在改进的STUN 方案中,把NAT 分为三种类型,分别是恒定
型、增量型和随机型。
(1)恒定型NAT(Constant NAT):在这种类型的NAT 中,来自
同一地址和端口的请求消息将被分配于相同的外部IP 地址和
端口, 这一类的NAT 包含了STUN 方式中的Full-cone 型、Restricted-
cone 型和Port Restricted-cone 型。
(2)增量型NAT(Increment NAT):在这种类型的NAT 中,只有
来自相同内部IP 地址和端口号,并且发送往同一个目的地址和
端口的请求消息才被映射为相同的外部地址和端口号。同时,对
于第i 次外部地址映射分配,有
Addressi=Addressi-1
Porti=Porti-1+ΔP(i> 1)
其中Δp 是一个常数。目前,Internet 上使用的对称型NAT
绝大多数是此种类型。
(3)随机型NAT(Random NAT):在这种类型的NAT 中,对于
第i 次外部地址映射分配,有
Addressi=Addressi-1
Porti≠Porti-1+ΔP(i> 1)
也就是说每次所分配的端口间距不相同, 同时不存在线性
关系。
4.2 改进方案的算法思想
改进方案就是从STUN Server 的响应消息中获取信息,得
知NAT 类型(只考虑恒定型NAT 和增量型NAT),从而采取相应
的策略来完成对NAT 的穿越。算法思想如下:
(1)参与通讯的Clienti(i=1,2)分别向STUNServer1 和STUN
Server2 发送STUN 请求消息, 得到两次响应消息Res1 和Res2,
从两次响应消息中得到被分配的外部地址Addressi 和两次被
分配得到的端口号:pi1,pi2(i=1,2)。
(2)Clienti(i=1,2)根据两次被分配的端口号pi1 和pi2 来判断
所处NAT 类型:
1) 如果两次分配得到的端口号pi1 和pi2 能满足pi1=pi2,
那么NAT 类型是恒定型,转步骤3;
2) 如果两次分配得到的端口号pi1 和pi2 不满足pi1=pi2,
那么NAT 类型是增量型,同时Clienti(i=1,2),根据两次分配得到
的端口号计算端口分配间距:
Δpi1=pi2-pi1(i=1,2)。
(3)Clienti(i=1,2)根据pi1,pi2 以及Δpi 预测实际建立连接时
将被分配到的端口号pipre:
1)如果NAT 类型是恒定型,那么pipre=pi1(i=1,2),转步骤4;
2)如果NAT 类型是增量型,那么pipre=pi1+Δpi(i=1,2)。
(4)Clienti(i=1,2)向Intermediate Server 发送自己的预测端口
号pipre 和Δpi,同时从IntermediateServer 获得对方的预测端口
号p2-ipre 和Δp2-i(i=1,2)。
(5)Clienti (i=1,2) 向目的端对等结点的外部IP 地址Address2-
i 及预测端口号pipre 发送包含连接请求的数据包,从而
建立起UDP 连接。为了确保连接建立的成功率,采取了失败重
试(Retry)的策略,Clienti 将连续N 次(N>1)向目的端发送连接数
据包,直到连接成功建立为止。
(6)连接成功建立,对等结点双方进行后续的通讯内容。至此
完成了对NAT 的穿越。
5 结束语
本文作者创新点:STUN 方式最大的优点是无须对现有NAT
网关设备做任何改动, 因此是当前业界较为流行的应用方案,其
缺陷就是无法完成对对称型NAT 的穿越。本文主要针对STUN
方式无法穿越对称型NAT 这一弊端展开研究, 在STUN 方式的
基础上,进行改进设计,从而达到能够穿越对称型NAT 的目的。
改进方案较其他能够穿越对称型NAT 的方案(如TURN、ICE 方
案)的可贵之处是可以尽量避免包的延迟和丢包的可能性。

 

抱歉!评论已关闭.