织梦CMS - 轻松建站从此开始!

罗索

基于ICE的VoIP穿越NAT改进方案

落鹤生 发布于 2014-02-11 14:35 点击:次 
统的STUN最大的缺陷在于,它不能保证在所有网络拓扑结构中都正常工作,对于TURN或类似转发方式工作的协议来说,由于服务器的 负担过重,很容易出现丢包或者延迟情况。而ICE方式正好提供了一种负载均衡的解决方案,它将转发服务作为优先级最低的服务,从而在最大程度上保
TAG: ICE  STUN  TURN  

1 引言

    近年来,随着数据网络通信逐渐融入传统的话音业务领域,VoIP技术越来越成为当前商业考虑的对象,并正在向一种正式的商业电话模式演进,而会话初始协议 (SIP,Session Initiation Protoc01)就是用来确保这种演进能够实现而需要的NGN(下一代网络)系列协议中重要的一员。SIP是一个用于建立,更改和终止多媒体会话的应用 层控制I办议。SIP因其简睢、灵活、可扩展性强的特点,已经成为实现VolP系统的热点技术。

    随着计算机网络技术的不断发展,互联网规模飞速膨胀,大量企业和驻地网采用了私有网络通过NAT/防火墙出口来接入公共网络。而由于SIP包头中含有很多 对于路由、接续SIP信令和建立呼叫连接必不可少的地址信息,这样引发了业界对于SIP2穿越NAT/防火墙问题的研究。

    目前,IETF已经对该问题提出了多种解决方案。例如:ALCes(Application Layer Gateways)、MiddleboxControl Protocol、STUN Simple Traversal of UDPthrough NAT)、TURN(Traversal Using Relay NAT)、RSIP(Realm Specific IP)、Symmetric RTP等。然而,当这些技术应用于不同的网络拓扑时都有着显著的利弊,以至于只能根据不同的接入方式来应用不同的方案,所以,未能很好地解决A11- NATⅢ的问题,同时还会给系统引入许多复杂性和脆弱性因素。此外,由于NAT/防火墙已经大量应用,SIP设备也已经比较成熟,对它们进行升级来支持多 媒体通信穿越NAT/防火墙的代价将相当的大。因此,一种不需要升级任何现有网络设备,能够穿越各种NAT/防火墙并且方便在现有网络中实施的解决方案成 为迫切的需要。

    本文试图寻找一种能够穿越各种类型的NAT/防火墙,无需对现有NAT/防火墙没备做任何改动的解决方案——ICE解决方案,这种方式比以前的解决方案更加灵活,具有广阔的应用前景。

   2 现有NAT解决方案的比较分析

    主流的NAT穿越解决方案包括STUN、TURN、Proxy及隧道穿越等,这几种方式各具优缺点,比较如下:

    (1)STUNml(simple traversal of UDP over NAT)的原理是通过某种机制预先得到内部私有IP地址对应在出口NAT上的对外公网IP地址,然后在报文负载中所描述的地址信息就直接填写出口NAT上 的对外IP地址。其最大的优点是无需对现有NAT/防火墙设备做任何改动。局限性在于需要应用程序支持STUN CLIENT的功能,同时STUN并不适合支持TCP连接的穿越。

    (2)TURN即通过Relay方式穿越NAT,也是私网中的SIP终端通过某种机制预先得剑TURN SeI-ver上的公网地址,私网终端发出的报文都要经过TURN Serve:进行Relay转发。这种方式除了具有STUN方式的优点外,还解决了STUN应用无法穿透对称NAT(SymmetricNAT)以及类似 的Firewall设备的缺陷,局限性在于需要SIP终端支持TURN Client,并增大了包的延迟和丢包的可能性。

    (3)Proxy方式是指通过对私网内用户呼叫的信令和媒体||d时做Relay来实现对NAT/防火墙的穿越。由于不用对运营商和客户端的现有网络设备进行任何改造,具有很强的适应性,组网灵活,可满是NGN初期多样化的组网和用户接入。

    (4)隧道穿越技术的基本思想是通过把需要穿越的数据流封装征某种隧道中,从而绕过NAT/防火墙。它在很大程度上解决了对于不问应用协议需要开发不同穿越策略的办法,但是必须多媒体终端和服务器能够支持隧道,这是一个比较大的限制条件。

    3 穿越NAT/防火墙方案的实现

    3.1 ICE方式

    交互式连通建立方式ICE(Interactive ConnectivityEstablishment)并非一种新的协议,它不需要对STUN,TURN或RSIP进行扩展就可适用于各种NAT。ICE 是通过综合运用上面某几种协议,使之征最适合的情况下工作,以弥补单独使用其中任何一种所带来的固有缺陷。对于SIP来说,ICE只需要定义一些 SDP(Sessionescription Protoc01)附加属性即可,对于别的多媒体信令协议也需要制定一些相应的机制来实现。本文是针对SIP呼叫流程实现ICE的功能。

    这种方式的优点是可以根据通讯双方所处的网络环境,选取适合穿越NAT/防火墙的方式。首先,获取用户所征网络中NAT的类型,如果用户没有设置使用何种 方式连接,那么默队首先使用UDP连接,如果一定时间内没有连接成功,接着使用TCP连接,同样如果没有在一定时间内连接成功,那么将采用其他方式如 Upnp、Httptunnel。如果所有穿越方案都失败后,将结果返回给用户,由用户决定是否重试。

    3.2 ICE算法流程

    ICE算法流程分为以F几个过程:

    (1)收集本地传输地址

    会话者从服务器上获得主机上一个物理(或虚拟)接口绑定一个端口的本地传输地址。

    (2)启动STUN

    与传统的STUN不同,ICE用户名和密码可以通过信令协议进行交换。

    (3)确定传输地址的优先级

    优先级反映了UA在该地址上接收媒体流的优先级别,取值范围0到1之间,按照被传输媒体流量来确定。

    (4)构建初始化信息(Initiate Message)

    初始化消息由一系列媒体流组成,每个媒体流的任意Peer之间实现最人连通可能性的传输地址是由公网L转发服务器(如TURN)提供的地址。

    (5)响应处理

    连通性检查和执行ICE算法中描述的地址收集过程。

    (6)生成接受信息(Accept Message)

    若接受则发送Accept消息,其构造过程与InitiateMessage类似。

    (7)接受信息处理

    接受过程需要发起者使用Send命令,由服务器转发至响应者。

    (8)附加ICE过程

    Initiate或Accept消息交换过程结束后,双方可能仍将继续收集传输地址。

3.3 ICE算法实现

    当将ICE算法集成到SIP呼叫过程的时候,流程应该是:(1)SIP终端注册,并且访问STUN(STUNT)服务器,判断NAT/防火墙类型,以及 TCP时三种序列的包的过滤情况。(2)当发起呼叫信息(INVITE)或接收到呼叫信息回应(200 OK)之前根据NAT/防火墙类型进行对RTP进行地址收集(任非对称性NAT/防火墙后需要收集NAT映射地址,在对称性NAT/防火墙后还需要收集 TURN地址)。(3)在RTP的地址端口启动接收线程RSTUN服务程序。(4)发送SIP消息,收集的地址放列SDP消息中的alt属性中。 (5)SIP终端得到通讯双方地址后进行地址配对(将双方地址进行组合),并且根据双方网络情况去掉无效的地址对。(6)根据地址对发

    送STUN check的包,其中STUN消息的用户名,密码从alt属性中得到,标识该地址对。(7)当检测到有效的地址对时(可以发送RTP媒体流的地址),停止接收线程STUN服务),开始传输RTP流。

    本文实现采用Winpcap API首先捕获TCP连接的SYN--out包,修改lP包头的TTL的值,用pcap—sendpacket()。然后使该socket调用listen函数。实现过程中对应于ICE收集地址的算法描述为:

    类中m_nCandidateID对应地址序号,m_nPriority表示地址优先级,m_CandidateAddr表示地址(IP地址,端口)。实现ICE算法的实体算法描述为:


    实现ICE中会话发起者和接收者的步骤基本一样,仅任处理流程中先后次序稍微有些不同,本文中实现的会话流程如图l所示。

 

    图1会话流程

    4 测试

    以安装了SIP软终端的双方都在Full ConeNATNAT/防火墙后为例,进行实例测试。测试过程:

    (1)将两台PC的IP的配置分别为公网59.64.148.187122和私网10.0.0.5/8l

    (2)从公网中的用户代理向私网内的用户代理呼叫,结果能够建立会话,无明显的延时,话音质量良好;

    (3)从私网内的用户代理向公网中的用户代理呼叫,结果能够建立会话,且话音质量良好;

    通过抓包分析可以确定,使用该算法可以成功地穿越NAT/防火墙设备。

    5 结论

    ICE方式的优势是显而易见的,它消除了现有的机制的许多脆弱性。例如,传统的STUN有几个脆弱点,其中一个就是发现过程需要客户端自己去判断所在 NAT类型,这实际上不是一个可取的做法。而应用ICE之后,这个发现过程己经不需要了。另一点脆弱性在于STUN,TURN等机制都完全依赖于一个附加 的服务器,而ICE利用服务器分配单边地址的同时,还允许客户端直接相连,因此即使STUN或TRUN服务器中有任何一个失败了,ICE方式仍可让呼叫过 程继续下去。此外,传统的STUN最大的缺陷在于,它不能保证在所有网络拓扑结构中都正常工作,对于TURN或类似转发方式工作的协议来说,由于服务器的 负担过重,很容易出现丢包或者延迟情况。而ICE方式正好提供了一种负载均衡的解决方案,它将转发服务作为优先级最低的服务,从而在最大程度上保证了服务 的可靠性和灵活性。此外,ICE的优势还在于对IPv6的支持。由于广泛的适应能力以及对未来网络的支持,ICE作为一种综合的解决方案将有着非常广阔的 应用前景。

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201402/16905.html]
本文出处:oschina 作者:秩名 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容