CN102685141B - 一种VoIP中基于语音可达性的融合穿越方法 - Google Patents

一种VoIP中基于语音可达性的融合穿越方法 Download PDF

Info

Publication number
CN102685141B
CN102685141B CN201210160885.2A CN201210160885A CN102685141B CN 102685141 B CN102685141 B CN 102685141B CN 201210160885 A CN201210160885 A CN 201210160885A CN 102685141 B CN102685141 B CN 102685141B
Authority
CN
China
Prior art keywords
server
nat
proceed
port
compartment wall
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210160885.2A
Other languages
English (en)
Other versions
CN102685141A (zh
Inventor
双锴
朱潇
苏森
徐鹏
王玉龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201210160885.2A priority Critical patent/CN102685141B/zh
Publication of CN102685141A publication Critical patent/CN102685141A/zh
Application granted granted Critical
Publication of CN102685141B publication Critical patent/CN102685141B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种VoIP中基于语音可达性的融合穿越方法,属于通信领域。所述方法首先对系统架构中的防火墙进行探测,如果存在防火墙,则进行防火墙穿越;如果不存在防火墙,则进行NAT类型检测,检测结果为对称型NAT环境或非对称型NAT环境;对于对称型NAT环境,所述方法只针对主机候选地址和中继候选地址的连通性进行检查;对于非对称型NAT环境,所述方法只针对主机候选地址和服务器返回候选地址的连通性进行检查。本发明方法融合了防火墙穿越和NAT穿越两种穿越方案,能为处于防火墙和NAT独存或共存的各类不同网络环境下的用户终端提供一种通用的穿越方案。

Description

一种VoIP中基于语音可达性的融合穿越方法
技术领域
本发明属于通信领域,具体涉及一种VoIP中基于语音可达性的融合穿越方法。
背景技术
随着VoIP(Voice over Internet Protocol的缩写(业界一般称为IP电话))和软交换技术的成熟和广泛应用,越来越多的企业和个人采用了VoIP和软交换技术进行企业内部数据网络和语音网络的整合。但是,出于安全的考虑,在企业内部网络中存在大量的防火墙;同时,为了节省IPv4的地址,目前很多企业采用NAT(Network Address Translation即网络地址转换)技术,也就是私网,使内网中大量的主机通过少数几个IP访问Internet。这些技术在早期的Internet网络中起到了很大的作用,能够用来阻挡来自企业外部网络攻击、节省IP地址、保护企业内部的数据安全。然而在VoIP的应用中,各种各样的业务要求和底层协议的特点,使得企业遗留的防火墙和NAT严重阻碍了VoIP的应用。于是,如何使VoIP穿越企业遗留的防火墙就成了一个亟待解决的问题。
目前在语音和视频通讯领域,私网穿越有如下方法:应用层网关(ALG)、MIDCOM、STUN、TURN、完全代理(Full proxy)、ICE方案。防火墙穿越方案存在网关思路、代理思路、应用层网关思路、虚拟专用网(VPN)思路以及隧道穿越方案。因此,针对上述亟待解决的问题,即在VoIP中穿越私网与防火墙两种主要网络环境,目前主要有以下方法:
1,网关思路
在传统PSTN网络中,可以使用网关把局域网上的IP语音和视频转换为公共电路交换网上的PSTN语音和视频。使用这样一个网关就不用关心网络防火墙的穿透问题,因为没有数据包要通过防火墙,这也解决了NAT问题,所有到局域网内终端的呼叫都是可路由的,因为通过网关进入局域网的呼叫都是可路由的。
但是,该方法的缺点是:网关属于早期传统网络中使用的一种方法,同时也是一个局部解决方案,要求所有参与呼叫者在最后一道NAT和防火墙要有一个相应的网关。
2,代理思路
H.323代理能解决NAT问题或者同时解决NAT和防火墙问题,这取决于代理如何被配置,代理其实是一种特殊类型的网关,但并不是把IP协议转换为别的,在代理两边使用的是相同的协议。代理使终端到终端的呼叫看起来像两个分离的呼叫:一个是从私有网上的终端到代理,另一个是从代理到公众网上的终端,代理通过对这个呼叫进行中转解决了NAT问题。
但是,该方法的缺点是:这种解决方案典型应用是在防火墙后放一个H.323代理,代理需要被分配公有IP地址。防火墙被配置允许代理和外部进行多媒体通讯。有时候沿着网络路径在许多位置都应用了NAT设备,这时就需要在每一个使用NAT的地方放置代理。
3,应用层网关
应用层网关(Application layer gateways)是被设计能识别指定IP协议(如H.323和SIP协议)的防火墙,它不是简单地察看包头信息来决定数据包是否可以通过,而是更深层的分析数据包负载内的数据,也就是应用层的数据。H.323和SIP协议(Session Initiation Protocol,是一个应用层的信令控制协议)都在负载中放了重要的控制信息,例如语音和视频终端使用哪一个数据端口来接收别的终端的语音和视频数据。通过分析哪一个端口需要打开,防火墙动态地打开那些被应用的端口,而所有别的端口依然安全地保持关闭状态。如果一个NAT被应用来屏蔽内部IP地址,这时ALG就需要一个代理,一些防火墙生产厂商把代理结合到ALG上越过NAT。
但是,这种解决方案的缺点是:由于要分析数据包负载,这样就加重了防火墙的处理任务,影响网络的运行,成为潜在的网络瓶颈;并且如果这儿有多层防火墙和NAT,则在呼叫路径上的每个防火墙都必须被升级来支持ALG功能;对大多数公司的网络来说防火墙是关键部件,在一些公司增加一个ALG或许是困难的。
4,虚拟专用网(VPN)
VPN技术是当前在IP网络上提供安全通讯的的方法之一,在同一个VPN网内可以解决防火墙穿越问题;是通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。由VPN的特性可以知道,VPN可以提供以上几种防火墙穿越方式所不能提供的安全性、可靠性。可以把VPN看做是对企业的内部网的扩展。严格的说VPN并不是为了穿越的防火墙和NAT而提出,但是其特性为防火墙穿越提供了现成的机制。
VPN虽然解决了VoIP的安全问题,但是同时因为它的报文需经过过SSL等加密技术加密后在网络上传输,无形中加重了报文处理的时间,对语音的实时性有着很大的影响,如果用户超过一定数目,通话质量将大大下降。同时,如果需要多个局域网互通,VPNServer必须知道所有客户子网的网络地址和掩码。这使得VPN的配置需求比较复杂,并且VPN只允许同一个VPN中的用户进行通信,无法与位于公众网的用户进行通信,所以VPN更加适合应用于企业分布式网络的连接与管理。
5,隧道穿透方案
一般企业网都不想升级或者改动他们的防火墙和NAT设备的配置,也不想让内外的交互通讯绕过这些设备,采用允许IP语音和视频穿越防火墙和NAT的隧道穿透方案也许是最合适的,隧道穿透解决方案由两个组件构成,Server软件和Client软件。Client放在防火墙内的私有网,它同时具有网守功能和代理功能,私有网内的终端注册到Client上,它和防火墙外的Server创建一个信令和控制通道,可以把所有的注册和呼叫控制信令转发到Server,也把音视频数据转发到Server,在转发时它把内部终端发送的和外部发往终端的数据包的地址和端口号替换为自己的。Server放在防火墙外的公众空间内。
这个方法最大的缺点是所有经过防火墙的通讯都必须经由Server来进行中转,这会引起潜在的瓶颈,这个经由Client和Server的过程会增加少于5ms的延迟。但是这又是必须的,因为Server是防火墙唯一信任的设备。
在一般包含有NAT实际网络场景中,防火墙总是伴随出现,在该情况下,前述的所有现有技术都无法在兼顾效率的同时有效对NAT和防火墙两者同时进行穿越,在考虑穿越效率的前提下,各现有技术针对的网络环境都比较单一,不能解决VoIP中最常见网络环境中NAT与防火墙穿越问题。
发明内容
本发明的目的在于解决上述现有技术中存在的难题,提供一种VoIP中基于语音可达性的融合穿越方法,解决语音通信过程中需要穿越的两种常见网络环境,即通信过程中存在的防火墙和NAT。
本发明是通过以下技术方案实现的:
一种VoIP中基于语音可达性的融合穿越方法,所述方法首先对系统架构中的防火墙进行探测,如果存在防火墙,则进行防火墙穿越;如果不存在防火墙,则进行NAT类型检测,检测结果为对称型NAT环境或非对称型NAT环境;对于对称型NAT环境,所述方法只针对主机候选地址和中继候选地址的连通性进行检查;对于非对称型NAT环境,所述方法只针对主机候选地址和服务器返回候选地址的连通性进行检查。
本发明方法包括以下步骤,这些步骤都是由软终端上的穿越模块完成的:
(1),开始;
(2),进行防火墙探测,探测的结果如果是存在防火墙,则转入步骤(3),如果不存在防火墙,则转入步骤(4);
(3),进行防火墙穿越,然后转入步骤(7);
(4),NAT类型探测,同时完成地址收集的过程,此时仅收集主机候选地址和服务器返回候选地址;如果探测结果是不存在NAT环境,则进行媒体协商,然后转入步骤(7);如果探测结果是存在NAT环境,则判断是否为对称型NAT环境,如果是对称型NAT环境,则进行TURN server地址分配,然后进行地址配对和处理,再根据收集到的地址进行连通性检查,再转入步骤(5);如果为非对称型NAT环境,则根据收集到的地址进行连通性检查,然后转入步骤(6);
(5)进行媒体协商,然后转入步骤(7);
(6)进行媒体协商,然后转入步骤(7);
(7)结束。
所述第(2)步中的防火墙探测具体如下:
(21)UDP端口检测:
客户端给服务器的UDP端口发送消息,然后根据在规定时间内客户端是否收到服务器的返回消息来判断是否允许UDP数据包通过,如果允许,则转入步骤(22),如果不允许,则转入步骤(23);
(22)DTLS端口检测:
客户端向服务器的DTLS端口发检测(check)消息,如果收到检测通过(checkok)的回复消息,则说明该端口开放,判定为不存在防火墙,然后转入步骤(25);如果没有收到回复消息,则转入步骤(23);
(23)TLS端口检测:
客户端通过TLS端口和服务器建立连接,并且发送一个检测(check)消息到服务器,服务器的回复消息应该是检测通过(check ok);
客户端保持这个连接,从接收到检测通过(check ok)的回复消息开始计时,若干分钟后发送重新检测消息(check again)到服务器,服务器的回复消息应该是重新检测通过(check again ok);
如果在这两步检测中服务器返回正确的回复消息,则表示允许TLS通过,判定为不存在防火墙,转入步骤(25),否则表示不允许TLS通过,转入步骤(24);
(24)HTTP端口检测:
客户端建立到服务器的TCP端口的连接,服务器向客户端发送HTTP数据包,客户端接收到服务器数据包后开始计时,若干分钟后发送重新检测消息(checkagain)到服务器,如果服务器返回的消息是重新检测通过(check again ok),则表示客户端支持HTTP通信,判定为不存在防火墙,转入步骤(25),否则判定为存在防火墙,转入步骤(25);
(25)防火墙探测结束。
所述步骤(3)中的进行防火墙穿越包括以下步骤:
(31),从本地(即终端所在主机)的网卡上抓取要发送的数据包;
(32),分析数据包,确定应用层协议类型;
(33),与SOCKS5服务器协商,建立逻辑通道;
(34),根据不同协议的传输层承载(TCP或UDP)采用对应的SOCKS5代理方式代理数据包(一共分为TCP和UDP方式两种,SOCKS5为标准协议,可参见RFC1928);
(35),将从对端收到的代理数据包的返回消息包放回到本地网卡上,完成了防火墙穿越。
所述步骤(4)中的NAT类型探测具体包括以下步骤:
A1等待,当从本地网卡上收集到主机候选地址后开始;
A2第一次进行测试一,然后判断是否获得返回消息,如果否,则转入第A3步,如果是,则转入第A4步;
A3判定为阻塞的UDP,然后转入第A11步;
A4收到返回消息后,判断映射IP和端口是否与主机相同,如果不同,则转入第A5步,如果相同,则转入第A10步;所述返回消息中携带服务器返回候选地址;
A5进行测试二,然后判断是否获得返回消息,如果否,则转入第A6步,如果是,则转入第A9步;
A6第二次进行测试一,但该次测试使用与第一次测试一不同IP地址的服务器,然后判断映射IP与端口是否与第一次测试一返回的IP和端口相同,如果相同,则转入第A7步,如果不同,则转入第A8步;
A7判定NAT类型为受限型NAT环境,然后转入第A11步;所述受限型NAT环境包括端口受限型NAT环境和地址受限型NAT环境;
A8判定NAT类型为对称型NAT环境,然后转入第A11步;
A9判定NAT类型为全锥形NAT环境,然后转入第A11步;
A10进行测试二,然后判断是否获得返回消息,如果是,则判定为公网IP,然后转入第A11步,如果否,则判定为对称防火墙,然后转入第A11步;
A11结束NAT类型检测。
所述测试一是指:给服务器发送消息,从服务器的返回消息中获得NAT环境给本机映射的IP和端口号;
所述测试二是指:给服务器发送消息,要求服务器用不同的IP和端口号作为返回消息的源IP和端口号。
与现有技术相比,本发明的有益效果是:
(1)本发明方法通过融合防火墙穿越和NAT穿越两种穿越方案,能为处于防火墙和NAT独存或共存的各类不同网络环境下的用户终端提供一种通用的穿越方案;
(2)本发明方法能智能地辨别出网络环境的类型,并且能在针对特定不同网络环境的前提下提供一种穿越效率最优的适合的穿越方法。
附图说明
图1是本发明VoIP中具有私网穿越功能的系统架构图。
图2是本发明的终端穿越模块的结构图。
图3是本发明的防火墙穿越的原理图。
图4是本发明方法的步骤框图。
图5是本发明方法中的防火墙穿越的步骤框图。
图6是本发明方法中的NAT类型探测的步骤框图。
具体实施方式
下面结合附图对本发明作进一步详细描述:
本发明方法整合了基于交互式连接(Interactive ConnectivityEstablishment,ICE)建立的优化方案和SOCKS5(socket security,SOCKS5)于一体,其中后者是一种基于传输层的网络代理协议。
本发明的系统架构如图1所示,包括SIP软终端系统、NAT和防火墙、STUN/TURN服务器和SOCKS5服务器;所述SIP软终端系统包括各种类型的SIP软终端,例如PC、Pad或智能手机,所述SIP软终端系统均位于NAT或防火墙之后、SIP软终端系统分别通过NAT或防火墙接入STUN和TURN服务器和SOCKS5服务器,STUN和TURN服务器(简称为STUN/TURN服务器)和SOCKS5服务器再分别和核心网业务逻辑服务器(核心网业务逻辑服务器包括注册服务器、群组服务器、运维管理服务器、状态呈现服务器等,具体服务器和核心网能提供的业务相关联,如图1中的注册、业务、管理等服务器所示。)连接。具体如下:
SIP软终端系统(包括图1中的PC、Pad等)基于会话初始协议SIP进行通信,每个软终端均包括SIP信令代理模块(SIP UA模块)、媒体处理模块和音视频编解码模块(这些都是现有的SIP软终端系统共有的。)。SIP UA模块,作为整个SIP软终端系统中SIP信令的代理模块,所有SIP信令的交互过程都由SIPUA模块完成;媒体处理模块,用以捕获音、视频设备的音视频流,然后调用音视频编解码模块进行编码,最终打包成实时传输协议RTP包发送给对端通信方;音视频编解码模块,用以对所述音、视频流的编解码。
除此之外,SIP软终端系统还要包括穿越模块,该模块是本发明创新的,作为整个SIP软终端系统的一个非常重要的模块,在通信过程中,与STUN/TURN服务器、SOCKS5服务器交互,将探测到的网络信息反馈给SIP UA模块,从而保证通信的可达性,共同完成SIP软终端会话的交互过程。
如图2所示,图2中的连线表示相连接。所述穿越模块具体包括3个大的子模块:私网和防火墙探测模块、私网穿越功能模块和防火墙穿越功能模块,私网穿越功能模块和防火墙穿越功能模块均与私网和防火墙探测模块连接;
其中私网穿越功能模块包括ICE逻辑部分和与之相连的TURN客户端模块、STUN客户端模块和STUN服务器模块(子模块的功能合作完成私网穿越的任务,Turn模块完成和Turn相关的部分,stun模块完成和stun相关的部分);
所述防火墙穿越功能模块包括防火墙穿越客户端模块,其包括SOCKS5协议模块和发送TCP/UDP消息的模块,也就是说防火墙穿越功能模块采用基于传输层的网络代理协议SOCKS5,传输层的通讯协议采用TCP/UDP。
所述穿越模块通过私网和防火墙探测模块识别当前网络的具体环境,从而决策是采用优化后的ICE方案,还是采用SOCKS5全代理的方式进行防火墙穿越,如果是采用前者,则启动私网穿越功能模块,如果是采用后者,则启动防火墙穿越功能模块。针对同时存在NAT与防火墙的网络环境,SOCKS5方式可一并代理完成穿越。
本发明方法可根据当前网络环境中的防火墙与NAT环境的存在情况,决定是采用优化后的ICE方案穿越NAT还是采用SOCKS5代理完成防火墙的穿越。首先,UE(SIP软终端)进行防火墙探测步骤,完成当前网络环境防火墙存在与否的判断,并通过若干次必要的消息来回,获取到该存防火墙的过滤规则。若当前网络存在防火墙则采用SOCKS5进行穿越,此时,不管网络当前是否存在NAT,均使用SOCKS5服务器进行所有消息的全代理;若网络中没有防火墙,则进行当前NAT类型的探测,从而根据当前网络环境(不存在NAT或存在对称性NAT或存在非对称性NAT)来决定下一步中ICE步骤需要收集的地址类型与数量,从而加速整个ICE步骤的逻辑。当收集完所需网络地址后,UE发起连通性检查,根据优先级选择最后可用的媒体流传媒地址,从而进行语言通话。
传统ICE方案(Interactive Connectivity Establishment,交互式连通方案)不管当前网络环境存在的是对称型NAT环境,还是非对称型NAT环境,均采用相同的步骤,而实际上对称型NAT环境仅能使用TURN方式穿越,非对称NAT环境又不用使用TURN方式这种较高成本的穿越方式,分析后发现,对于非对称型NAT环境,TURN server分配给用户进行信令与媒体中转的地址(即后面所说的中继候选地址)没有必要收集,对于对称型NAT环境,用户映射到公网上的地址(即后面所说的服务器返回候选地址)没有必要收集,因此,在传统的ICE步骤中的“本地候选地址收集处理”可根据具体的网络环境只收集最小集,从而省略不必要的“连通性检查”过程。
在收集传输地址的过程中,会话发起者需要收集的对象包括主机候选地址(host candidate,该地址又被称为本地传输地址(Local Transport Address))和服务器返回候选地址(server reflexive candidate,该地址又被称为来源传输地址(Derived Transport Address))。主机候选地址通常是由主机上1个物理(或虚拟)接口绑定1个端口而获得。会话发起者还将访问提供UNSAF(Unilateral self-address fixing)的服务器,例如STUN、TURN、TEREDO(即面向IPv6的IPv4 NAT网络地址转换穿越)。对于每一个主机候选地址,会话者都可以从服务器上获得1级服务器返回候选地址。
本发明中的优化后的ICE方案是在传统ICE方案前,增加NAT类型探测,即在ICE步骤中的本地候选地址收集处理步骤之前先进行NAT类型探测,从而根据不同私网环境,收集不同的地址,加快连通性检测过程。
具体来说,本发明方法的步骤如图4所示。具体包括以下步骤:
(1),开始;
(2),进行防火墙探测,包括防火墙存在与否以及其过滤规则的探测,探测的结果如果是存在防火墙,则不管存不存在私网(即NAT环境),转入步骤(3),如果不存在防火墙,则转入步骤(4);
(3),进行防火墙穿越,然后转入步骤(7);
(4),NAT类型探测,同时完成地址收集的过程(NAT类型探测的过程实际上也是个收集地址的过程,判断NAT类型的依据即为将收集到的地址和本地候选地址进行比较),此时仅收集主机候选地址和服务器返回候选地址,这两个地址即构成了前面所说的最小集。这个最小集中不包括TURN server上分配的中继候选地址(relayed Address),也就是说除开中继候选地址,传统ICE中的本地候选地址(又称为主机候选地址)收集处理步骤中的其它所有地址都收集;
如果探测结果是不存在NAT环境,则进行媒体协商,然后转入步骤(7);因为不存在NAT环境的情况其实不需要ICE过程进行穿越,其不是本发明关注的重点;不存在对应于NAT环境的情况图6中的公网IP的情况;
如果探测结果是存在NAT环境,则判断是否为对称型NAT环境,如果是对称型NAT环境,则进行TURN server地址分配,然后进行地址配对和处理(具体如何进行地址配对和处理请参考ICE协议中的相关描述),再根据收集到的地址进行连通性检查,然后转入步骤(5);如果为非对称型NAT环境,则根据收集到的地址进行连通性检查,然后转入步骤(6);图6是对步骤(4)局部的细化,图6中主要是侧重于展示NAT类型判断的方法和所用的方法(测试一和测试二),这些在图4中简单带过了,图6描述的是判断NAT类型的具体步骤,其目的是检查是否有NAT和具体NAT类型;
(5)进行媒体协商,然后转入步骤(7);
(6)进行媒体协商,然后转入步骤(7);
(7)结束。
所述步骤(4)、(5)、(6)由私网穿越功能模块完成。
所述第(2)步中的防火墙探测具体如下:
若信令和媒体流还需穿越防火墙,则需要防火墙开放相应的信令和媒体流端口。其中信令需要开放5060端口,媒体流需要开放1024-65535端口段(主要原因是终端分配的媒体端口不可控)。由于防火墙策略只能静态开放端口,而不能根据SIP信令动态开放媒体流端口,因此存在一定的安全风险(因为媒体流需要开放1024-65535端口段,如果全部开放的话是有风险的)。检测防火墙端口主要是为了检测系统所需的端口(无论是UDP还是TCP端口)是不是开放了,如果被禁止了,则需要去检测防火墙的可用端口,并使用该可用端口来进行SOCKS5代理实现防火墙穿越,检测端口的顺序是依照端口常用程度来依次进行的,如果上一个检测显示结果为端口未开放则进行下一个检测。防火墙的探测可以看出是对端口的试探,即测试所需的端口是不是开放,如果客户端所需的端口被封住,则判断为有防火墙。防火墙探测具体包括以下几部分:
(21)检测UDP端口
客户端给服务器的UDP端口(即系统收发消息所需的udp)发送消息,然后根据在规定时间内客户端是否收到服务器的返回消息来判断是否允许UDP数据包通过,如果允许,则转入步骤(22),如果不允许,则转入步骤(23);
(22)检测DTLS(数据报安全传输层协议)端口
利用DTLS承载消息并没有惯用端口,检查的端口依照系统实际需求而定。检测方式为:客户端会向服务器的特定端口(即DTLS使用的端口)发“check”消息,如果收到回复“check ok”,则说明该端口开放,判定为不存在防火墙,然后转入步骤(25);如果没有收到回复,则转入步骤(23);
(23)检测TLS(安全传输层协议)端口
客户端(即SIP软终端)会通过TLS 443这个端口和穿越服务器建立连接,并且客户端发送一个“check”字符串到服务器,服务器端的回应是“check ok”字符串;
客户端保持这个连接,从接收到“check ok”字符串开始计时,若干分钟后发送“check again”,客户端回应是字符串“check again ok”。
如果在这两步检测中服务器端返回正确信息,表示客户端允许TLS通过,判定为不存在防火墙,转入步骤(25),如果在这两步检测中服务器端没有返回正确信息,则表示不允许TLS通过,转入步骤(24);
(24)HTTP端口检测
客户端建立到服务器TCP 80端口的连接,并且向服务器发送HTTP数据包,内容为“check”字符串,客户端接收到服务器数据包(即“check ok”字符串)后开始计时,2分钟后再次和服务器交互信息,这次客户端发到服务器的HTTP的内容是“check again”,如果服务器返回HTTP的内容为“check again ok”,表示客户端网络环境支持HTTP通信,判定为不存在防火墙,转入步骤(25),否则客户端网络环境不支持HTTP通信,判定为存在防火墙,转入步骤(25);
(25)防火墙探测结束。
TLS端口开始就是普通TCP检测了,UDP和DTLS都是基于UDP消息的检查,而TLS和HTTP都是基于TCP的检测。最后根据端口检测结果来判断是否有防火墙。如果UDP和TCP端口检测显示端口被封禁,则判定为有防火墙,然后进入防火墙穿越步骤。
所述步骤(3)中进行防火墙穿越的原理如图3所示,其中终端位于防火墙之后,通过连接到防火墙外具有公网地址的防火墙穿越服务器(FT-Server)上,通过FT-Server来进行消息的转发。
防火墙穿越功能模块是采用基于SOCKS5协议(RFC 1928)来进行消息的全代理,网卡抓包和将数据包放回网卡采用JPCAP类库,防火墙穿越功能模块的工作步骤(也就是上述步骤(3)的具体步骤)如图5所示,具体包括以下步骤:
(31),从本地(即SIP软终端所在主机,主机指SIP软终端安装的物理机器)的网卡上抓取要发送的数据包;
(32),分析步骤(31)中得到的数据包,确定应用层协议类型;
(33),与FT-Server(FT-Server为一个SOCKS5 server)协商,建立逻辑通道;
(34),根据不同协议的传输层承载(TCP或UDP)采用对应的SOCKS5代理方式代理数据包(一共分为TCP和UDP方式两种,SOCKS5为标准协议,可参见RFC1928);
(35),将从对端(即另一个SIP软终端)收到的代理数据包的返回消息包放回到本地网卡上,完成了防火墙穿越。
所述第(4)步的NAT类型探测的具体步骤为标准的NAT类型探测方法,实际实现时,该过程在VoIP上一般都是由VoIP客户端(即SIP软终端)调用的,具体如图6所示,包括以下步骤:
A1等待,当从本地网卡上收集到主机候选地址(Host Candidateaddress)后开始;
A2第一次进行测试一,然后判断是否获得返回消息,如果否,则转入第A3步,如果是,则转入第A4步;
A3判定为阻塞的UDP,然后转入第A11步;由于在判定为阻塞的UDP之后不会用到ICE方法,因此其后续处理不在本发明的范围内;
A4收到返回消息后,判断映射IP和端口是否与主机相同,如果不同,则转入第A5步,如果相同,则转入第A10步;所述返回消息中携带服务器返回候选地址(Server reflexive address)。
A5进行测试二,然后判断是否获得返回消息,如果否,则转入第A6步,如果是,则转入第A9步;
A6第二次进行测试一,但该次测试使用与第一次测试一不同IP地址的服务器,然后判断映射IP与端口是否与第一次测试一返回的IP和端口相同,如果相同,则转入第A7步,如果不同,则转入第A8步;
A7判定NAT类型为受限型NAT环境(Restricted Cone NAT)(包括地址受限型和端口受限型这2种,由于不需要进一步的判断结果,所以不再进行进一步测试),然后转入第A11步;图6中的受限型NAT环境(Restricted Cone NAT)包括图4中的端口受限型NAT环境和地址受限型NAT环境,由于所需的结果是是否为对称型NAT环境,而受限型NAT环境被包含在非对称型NAT环境一类中进行统一处理了,所以没有必要继续通过进一步测试来判断是端口受限型NAT环境还是地址受限型NAT环境;
A8判定NAT类型为对称型NAT环境(Symmetric NAT),然后转入第A11步;
A9判定NAT类型为全锥形NAT环境(Full Cone NAT),然后转入第A11步;
A10进行测试二,然后判断是否获得返回消息,如果是,则判定为公网IP,然后转入第A11步;如果否,则为对称防火墙,然后转入第A11步;因为如果是公网IP或防火墙,那么不需要用到本发明所述的ICE方法,所以本发明中没有详述,只是做出简单介绍,不描述之后的处理过程;
A11结束NAT类型检测。
第(5)步和第(6)步所做的步骤其实一样,但是针对不同的地址对进行的;
第(4)步到第(6)步是由VoIP客户端(UE,即SIP软终端)和服务器(TurnServer和Stun Server)共同完成的,判断都是在UE侧进行的,然而需要服务器返回消息的帮助;
所述第(4)步中的非对称型NAT环境包括全锥形NAT环境、地址受限型NAT环境和端口受限型NAT环境;
所述第(4)步中,对于对称型NAT环境的地址连通性检查只对主机候选地址(host candidate)和中继候选地址(relayed candidate)的连通性进行检查,具体是将这两个地址分别和对端地址进行配对,通过试探连通性来选出一对可用的媒体通信地址。进行地址连通性检测的具体步骤请参考ICE协议;
所述第(4)步中,对于非对称型NAT环境的地址连通性检查只对主机候选地址与服务器返回候选地址的连通性进行检查;
第(4)步中的媒体协商属于与ICE无关的协商,而第(5)步和第(6)步中的媒体协商都是要使用ICE相关参数的媒体协商;所述媒体协商通过通信双方信令消息的交互实现,如sip信令系统中的invite消息体的和200OK消息体中的SDP进行交互,媒体协商的结果是通信双方选出一对双方公认的地址和一种双方公认的媒体形式来进行媒体通信,简而言之就是对媒体方式达成一致。
上述步骤中用到两种测试具体如下:
1)测试一:给服务器发送消息,从服务器的返回消息中获得NAT环境给本机映射的IP和端口号(返回消息中携带有该IP和port,通过解析返回消息获得);
2)测试二:给服务器发送消息,要求服务器用不同的IP和端口号作为返回消息的源IP和端口号(该测试的目的是看有没有返回消息,消息中返回的参数没有进一步分析的必要)。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。

Claims (5)

1.一种VoIP中基于语音可达性的融合穿越方法,其特征在于:所述方法首先对系统架构中的防火墙进行探测,如果存在防火墙,则进行防火墙穿越;如果不存在防火墙,则进行NAT类型检测,检测结果为对称型NAT环境或非对称型NAT环境;对于对称型NAT环境,所述方法只针对主机候选地址和中继候选地址的连通性进行检查;对于非对称型NAT环境,所述方法只针对主机候选地址和服务器返回候选地址的连通性进行检查;
所述方法包括以下步骤:
(1),开始;
(2),进行防火墙探测,探测的结果如果是存在防火墙,则转入步骤(3),如果不存在防火墙,则转入步骤(4);
(3),进行防火墙穿越,然后转入步骤(7);
(4),NAT类型探测,同时完成地址收集的过程,此时仅收集主机候选地址和服务器返回候选地址;如果探测结果是不存在NAT环境,则进行媒体协商,然后转入步骤(7);如果探测结果是存在NAT环境,则判断是否为对称型NAT环境,如果是对称型NAT环境,则进行TURN server地址分配获得中继候选地址,然后进行地址配对和处理,再根据收集到的主机候选地址和中继候选地址进行连通性检查,再转入步骤(5);如果为非对称型NAT环境,则根据收集到的地址进行连通性检查,然后转入步骤(6);
(5)进行媒体协商,然后转入步骤(7);
(6)进行媒体协商,然后转入步骤(7);
(7)结束。
2.根据权利要求1所述的VoIP中基于语音可达性的融合穿越方法,其特征在于:所述第(2)步中的防火墙探测具体如下:
(21)UDP端口检测:
客户端给服务器的UDP端口发送消息,然后根据在规定时间内客户端是否收到服务器的返回消息来判断是否允许UDP数据包通过,如果允许,则转入步骤(22),如果不允许,则转入步骤(23);
(22)DTLS端口检测:
客户端向服务器的DTLS端口发检测消息,如果收到检测通过的回复消息,则说明该端口开放,判定为不存在防火墙,然后转入步骤(25);如果没有收到回复消息,则转入步骤(23);
(23)TLS端口检测:
客户端通过TLS端口和服务器建立连接,并且发送一个检测消息到服务器,服务器的回复消息应该是检测通过;
客户端保持这个连接,从接收到检测通过的回复消息开始计时,若干分钟后发送重新检测消息到服务器,服务器的回复消息应该是重新检测通过;
如果在这两步检测中服务器返回正确的回复消息,则表示允许TLS通过,判定为不存在防火墙,转入步骤(25),否则表示不允许TLS通过,转入步骤(24);
(24)HTTP端口检测:
客户端建立到服务器的TCP端口的连接,服务器向客户端发送HTTP数据包,客户端接收到服务器数据包后开始计时,若干分钟后发送重新检测消息到服务器,如果服务器返回的消息是重新检测通过,则表示客户端支持HTTP通信,判定为不存在防火墙,转入步骤(25),否则判定为存在防火墙,转入步骤(25);
(25)防火墙探测结束。
3.根据权利要求2所述的VoIP中基于语音可达性的融合穿越方法,其特征在于:所述步骤(3)中的进行防火墙穿越包括以下步骤:
(31),从本地网卡上抓取要发送的数据包;
(32),分析数据包,确定应用层协议类型;
(33),与SOCKS5服务器协商,建立逻辑通道;
(34),根据不同协议的传输层承载采用对应的SOCKS5代理方式代理数据包;
(35),将从对端收到的代理数据包的返回消息包放回到本地网卡上,完成了防火墙穿越。
4.根据权利要求1所述的VoIP中基于语音可达性的融合穿越方法,其特征在于:所述步骤(4)中的NAT类型探测具体包括以下步骤:
A1等待,当从本地网卡上收集到主机候选地址后开始;
A2第一次进行测试一,然后判断是否获得返回消息,如果否,则转入第A3步,如果是,则转入第A4步;
A3判定为阻塞的UDP,然后转入第A11步;
A4收到返回消息后,判断映射IP和端口是否与主机相同,如果不同,则转入第A5步,如果相同,则转入第A10步;所述返回消息中携带服务器返回候选地址;
A5进行测试二,然后判断是否获得返回消息,如果否,则转入第A6步,如果是,则转入第A9步;
A6第二次进行测试一,但该次测试使用与第一次测试一不同IP地址的服务器,然后判断映射IP与端口是否与第一次测试一返回的IP和端口相同,如果相同,则转入第A7步,如果不同,则转入第A8步;
A7判定NAT类型为受限型NAT环境,然后转入第A11步;所述受限型NAT环境包括端口受限型NAT环境和地址受限型NAT环境;
A8判定NAT类型为对称型NAT环境,然后转入第A11步;
A9判定NAT类型为全锥形NAT环境,然后转入第A11步;
A10进行测试二,然后判断是否获得返回消息,如果是,则判定为公网IP,然后转入第A11步,如果否,则判定为对称防火墙,然后转入第A11步;
A11结束NAT类型探测。
5.根据权利要求4所述的VoIP中基于语音可达性的融合穿越方法,其特征在于:所述测试一是指:给服务器发送消息,从服务器的返回消息中获得NAT环境给本机映射的IP和端口号;
所述测试二是指:给服务器发送消息,要求服务器用不同的IP和端口号作为返回消息的源IP和端口号。
CN201210160885.2A 2012-05-22 2012-05-22 一种VoIP中基于语音可达性的融合穿越方法 Expired - Fee Related CN102685141B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210160885.2A CN102685141B (zh) 2012-05-22 2012-05-22 一种VoIP中基于语音可达性的融合穿越方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210160885.2A CN102685141B (zh) 2012-05-22 2012-05-22 一种VoIP中基于语音可达性的融合穿越方法

Publications (2)

Publication Number Publication Date
CN102685141A CN102685141A (zh) 2012-09-19
CN102685141B true CN102685141B (zh) 2015-09-02

Family

ID=46816504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210160885.2A Expired - Fee Related CN102685141B (zh) 2012-05-22 2012-05-22 一种VoIP中基于语音可达性的融合穿越方法

Country Status (1)

Country Link
CN (1) CN102685141B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105516058B (zh) * 2014-09-25 2019-04-23 中国电信股份有限公司 用于建立VoIP呼叫的方法和系统
CN105635076B (zh) * 2014-10-31 2019-08-20 华为技术有限公司 一种媒体传输方法和设备
CN104506666A (zh) * 2014-12-18 2015-04-08 北京邮电大学 一种大量tcp穿越对称型nat的代理方法和系统
CN105187567B (zh) * 2015-06-24 2019-01-08 东莞市南星电子有限公司 一种基于sip和ice的音视频通信方法
CN105391817A (zh) * 2015-11-26 2016-03-09 上海紫越网络科技股份有限公司 基于sdp自检测nat穿越系统及方法
CN105721570B (zh) * 2016-02-04 2019-06-25 福建星网锐捷通讯股份有限公司 数据点对点传输方法及装置
CN105635346B (zh) * 2016-03-31 2018-12-14 北京奇艺世纪科技有限公司 一种nat网络类型检测方法及装置
CN105827748B (zh) * 2016-05-12 2019-03-15 东莞市南星电子有限公司 一种基于ICE的SIP穿越Symmetric NAT设备的方法
CN105915534B (zh) * 2016-05-23 2019-02-19 掌赢信息科技(上海)有限公司 一种穿越防火墙的方法和电子设备
CN106411836B (zh) * 2016-05-30 2017-09-19 深圳市鼎盛智能科技有限公司 通话连接方法及客户端
CN110611692A (zh) * 2018-06-15 2019-12-24 上海宽翼通信科技股份有限公司 一种基于点对点穿越的web访问方法、系统及客户端
CN109600671B (zh) * 2018-12-13 2021-02-19 四川九州电子科技股份有限公司 一种网络机顶盒快速升级的系统及其方法
CN112671944A (zh) * 2020-12-18 2021-04-16 杭州叙简科技股份有限公司 一种基于webrtc和ice探测的音视频交互方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1719776A (zh) * 2004-07-10 2006-01-11 深圳市凌宇创展科技有限公司 一种穿越nat和防火墙的通讯方法
CN101873324A (zh) * 2010-06-22 2010-10-27 北京神州泰岳软件股份有限公司 穿越防火墙的方法
CN101938532A (zh) * 2010-09-17 2011-01-05 北京神州泰岳软件股份有限公司 基于udp的穿越nat设备的方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694127B2 (en) * 2003-12-11 2010-04-06 Tandberg Telecom As Communication systems for traversing firewalls and network address translation (NAT) installations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1719776A (zh) * 2004-07-10 2006-01-11 深圳市凌宇创展科技有限公司 一种穿越nat和防火墙的通讯方法
CN101873324A (zh) * 2010-06-22 2010-10-27 北京神州泰岳软件股份有限公司 穿越防火墙的方法
CN101938532A (zh) * 2010-09-17 2011-01-05 北京神州泰岳软件股份有限公司 基于udp的穿越nat设备的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VoIP防火墙穿越方法的研究与比较;李颖晖等;《微型电脑应用》;20060331;第22卷(第3期);第11-14页 *

Also Published As

Publication number Publication date
CN102685141A (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
CN102685141B (zh) 一种VoIP中基于语音可达性的融合穿越方法
CN102685268B (zh) 一种VoIP中基于ICE协议的快速私网穿越方法
EP1693998B1 (en) Method and system for a proxy-based network translation
US8166533B2 (en) Method for providing media communication across firewalls
US9497168B2 (en) Method and apparatus for supporting communications between a computing device within a network and an external computing device
KR100804291B1 (ko) Ip 어드레스 바인딩들에 기초한 멀티미디어 트래픽의필터링 방법 및 시스템
US7773580B2 (en) Apparatus and method for voice processing of voice over internet protocol (VoIP)
US20050286538A1 (en) Method and call server for establishing a bi-directional peer-to-peer communication link
JP5357873B2 (ja) 一連の境界ゲートウェイを介したインターネット・プロトコル・マルチメディア・ベアラ経路を最適化するための方法および機器
US10601773B2 (en) Method and a system for using relays for network optimization in IP-based communication networks
CN101064712B (zh) 一种基于Linux内核实现双通道穿越多级NAT和防火墙的系统及方法
US7385975B2 (en) Routing method and SIP server using the same
KR20090057097A (ko) 호출자 통신 클라이언트와 피호출자 통신 클라이언트 간의 통신 세션을 셋업하는 방법과 이 통신 세션의 셋업을 가능하게 하는 통신 네트워크와 컴퓨터 프로그램
US6922786B1 (en) Real-time media communications over firewalls using a control protocol
Tseng et al. Can: A context-aware NAT traversal scheme
CN100514939C (zh) Ip多媒体通信业务处理系统及实现ip多媒体通信的方法
CN101465852A (zh) 在网络视频会议系统中实现网内穿透的方法
CN106921624B (zh) 会话边界控制器及数据传输方法
US20050177718A1 (en) Systems and methods for video transport service
US20140112334A1 (en) Device, system, and method of conversation proxy
KR102033816B1 (ko) 보조 데이터 전송 방식
US20080137544A1 (en) Method and terminal for setting up a packet-oriented communication link
Tse Feasibility study of VoIP integration into the MYSEA environment
Khan et al. An extensive study on application level gateways (ALGs)
Cook Design of a Voice-Aware Firewall Architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150902

Termination date: 20210522

CF01 Termination of patent right due to non-payment of annual fee