`
javatoyou
  • 浏览: 1071509 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

基于SIP 的NAT 穿透研究

 
阅读更多

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 方
案)的可贵之处是可以尽量避免包的延迟和丢包的可能性。

分享到:
评论

相关推荐

    SIP穿透NAT的研究

    SIP协议穿透NAT的研究

    基于sip的nat_防火墙穿透研究及sbc的设计与实现.pdf

    基于sip的nat_防火墙穿透研究及sbc的设计与实现

    利用STUN实现SIP NAT的穿透技术文档

    **SIP与STUN结合解决NAT穿透问题** 在NAT环境中,SIP用户代理通常无法直接与其他NAT后的UA通信,因为他们的公网地址和端口未知。STUN服务器在此扮演关键角色。SIP UA向STUN服务器发送请求,服务器回应包含UA的公网...

    基于ICE方式SIP穿透SymmetricNAT技术研究 pdf

    ### 基于ICE方式SIP穿透SymmetricNAT技术研究 #### 1. 引言 随着互联网技术的发展,多媒体通信服务(如语音、视频会议等)的需求日益增长。然而,这些服务在运行过程中面临的一大挑战是如何有效地穿透网络地址转换...

    NAT原理类型与SIP穿透

    NAT原理类型与SIP穿透,基本原理讲解 以视频方式讲解,方便理解

    一种实现SIP穿越NAT的新方案

    - **高效性**:相较于传统NAT穿透方案,基于SIP的P2P NAT穿越方案效率更高。SIP代理仅在穿透过程初期发挥作用,一旦连接建立,节点即可独立工作,减少了对中心服务器的依赖。 - **广泛兼容性**:该方案适用于多种...

    基于SIP的网络电话实例

    STUN(Simple Traversal of UDP through NAT)服务器帮助终端确定其公网地址,而TURN(Traversal Using Relays around NAT)服务器则提供中继服务,确保通信能够穿透NAT。 5. 用户界面设计:尽管本实例的UI设计简陋...

    (有用)基于SIP协议的即时通信系统设计与实现.pdf

    【SIP协议详解】 ...总的来说,基于SIP协议的即时通信系统结合了SIP的灵活性、STUN的NAT穿透能力,实现了高效、安全的多媒体通信服务。这种系统设计考虑了网络环境的多样性,提高了用户的通信体验。

    rtp rtsp sip sdp nat 协议

    3. SIP(会话初始化协议):SIP是一种基于文本的信令协议,用于建立、修改和终止多媒体通信会话,包括VoIP电话、视频会议和即时消息等。SIP通过请求和响应消息来管理会话,支持身份验证、重定向、注册等多种功能,是...

    基于SIP协议Android视频通信终端系统.pdf

    然而,基于SIP的视频通信服务面临着一些挑战,比如NAT(Network Address Translation)穿透问题和无线网络环境下的视频通信质量保证。 1. NAT穿越问题:由于NAT设备的广泛部署,基于SIP的视频通信常常受阻。为解决...

    SIP穿越NAT的解决方案

    ICE是一种更现代的解决NAT穿透的方法,它结合了STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relays around NAT)协议。STUN服务器帮助终端发现其公共IP地址和端口,而TURN服务器作为中继,...

    nat穿透--ice--rfc5245

    ICE :解决NAT穿透问题的方法 This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based multimedia sessions established with the offer/answer model. This protocol ...

    基于SIP协议的P2P网络会议文档

    1. **P2P网络架构**:解释了P2P网络的基本结构,如DHT(分布式哈希表)用于节点发现和数据存储,以及如何通过NAT穿透技术解决P2P网络中的连接问题。 2. **SIP协议的应用**:详述了SIP在P2P网络会议中的作用,如发起...

    SIP之穿越NAT.ppt

    在互联网环境中,NAT(Network Address Translation)技术被广泛使用,以解决IP地址短缺的问题,但同时也对SIP通信造成了挑战。 NAT主要有四种类型: 1. **Full Cone NAT**:任何公网地址都能向转换后的私网地址...

    基于SIP协议的音视频的软件开发.pdf

    为了解决NAT导致的通信问题,软件开发中会涉及到SIP ALG(应用层网关)、STUN(简单穿越)、TURN(中继传输协议)等NAT穿透技术。 9. SIP开发库和接口 开发者可以利用各种SIP开发库,如libosip、exosip、libjingle...

    SIP协议的NAT穿越技术

    然而,当涉及到SIP协议和实时传输协议(RTP)时,NAT技术就带来了问题。SIP协议,也就是会话初始协议(Session Initiation Protocol),是一种在互联网上建立和管理多媒体通信会话的应用层协议。它使主叫方可以找到...

Global site tag (gtag.js) - Google Analytics