用于横越防火墙和网络地址转换(nat)设置的通信系统的制作方法

文档序号:7609438阅读:233来源:国知局
专利名称:用于横越防火墙和网络地址转换(nat)设置的通信系统的制作方法
技术领域
本发明涉及使客户端能够横越防火墙和NAT装置。本发明尤其涉及利用服务器和客户端之间的探测分组来传递由NAT所修正的地址。
背景技术
以下是本文件中所使用的首字母缩写词的列表ALG-应用级网关;ASSENT-扩充的会话信令启动的NAT横越;DMZ-解除武装区域;FW-防火墙;H.323-用于通过非QoS分组网络的基于分组的通信的ITU标准;ITU-国际电信联盟;IP-网际协议;NAT-网络地址转换(RFC1631);NAPT-网络地址端口转换;SIP-会话启动协议(RFC3261);
TCP-传输控制协议(RFC793);UDP-用户数据报协议(RFC768)。
快速发展的IP(网际协议)数据网络正在为多媒体和话音通信服务提供商创造新的机会和挑战。空前水平的投资正由现任电信运营商和下一代载体和服务提供商投入到数据网主干中。同时,诸如DSL和电缆调制解调器的宽带接入技术正为广大用户带来高速因特网接入。服务提供商的想象是利用EP数据网直接向桌面、办公和家用高速因特网接入传送新的话音、视频和数据业务。
H.323标准应用于通过没有服务质量保证的基于分组网络的多媒体通信。其已经设计成独立于底层的传输网络和协议。目前IP数据网是默认的和普遍存在的分组网络,而且H.323的实现的大部分(如果不是全部)都通过IP数据网。用于实时(话音和视频)通信的其它协议,例如SIP和MGCP,也利用IP数据网来传输呼叫信令和媒体。还期望开发用于与经IP数据网传输实时话音和视频相关的新应用的新协议。本发明涉及上述内容以及对单个会话都需要多个业务流的其它协议。
如果来自不同制造商的终端能互操作,则对于广泛分布的通信来说标准的重要性是最根本的。在多媒体业界,当前用于通过分组网络(如IP数据网)的实时通信的标准为ITU标准H.323。H.323是目前相对成熟的标准,其具有来自多媒体通信业的支持,包括诸如Microsoft、Cisco和Intel公司,例如,估计有75%的PC都安装了Microsoft的Netmeeting(商标)程序。Netmeeting是用于多媒体(话音、视频和数据)通信的适应性软件应用。来自不同制造商的设备之间的互操作性目前也得以实现。超过120家世界范围内的公司参加了由国际多媒体电信协会(IMTC)主办的最近一次互操作活动,IMTC是一家独立存在的组织,用于促进多媒体通信设备的互操作性。该活动是允许制造商测试和解决交互工作问题的一次例会。
迄今为止,对于多媒体(尤其是视频)通信的大众理解存在多种阻碍。方便使用、质量、成本和通信带宽都妨碍了其在市场上的发展。视频编码上的技术进步、廉价的IP接入的普遍存在,以及当前在与DSL连同ISDN和电缆调制解调器的首次展示结合的数据网中的投资,目前减缓了大部分这些问题,使得多媒体通信更容易利用。
由于H.323被定义为标准,假设在网络域的边缘存在H.323-H.320网关将H.323转换为H.320,以通过专用网之间的广域传输。因此,通过IP实现H.323集中在单个网络内的通信上。
然而,作为广域协议,IP继续得到偏爱。越来越多的组织仍旧将它们整个的数据网基于IP。均基于EP的高速因特网接入、可控内联网、虚拟专用网(VPN)是常见的。IP的趋势是使作为多媒体协议的H.320削弱。市场需求是完全用经IP的H.323替代H.320。但是,很可能用于通过经IP跨越WAN(广域网)传输实时通信的主要市场驱动力是话音。利用诸如H.323和SIP的标准,用户已经开始利用因特网用他们的计算机进行廉价的话音呼叫。这就标记了全新的话音经IP(VoIP)产业的开始,其看到了新的Vole产品的开发,Vole产品包括以太网电话、IP PBX、SoftSwitches和IP/PSTN网关,它们均适合于在企业和用户之间无缝传输Vole。在此预期H.323、SIP和MGCP将成为主流标准。
遗憾的是,仍存在对于H.323和SIP的现实世界的广泛部署的不可预见的技术阻碍。这些技术阻碍涉及在IP数据网边界处的通信基础设施。
因此,目前经IP的多媒体或话音通信的成功实现被局限于内联网或专用可控IP网络。
由于以下两种IP技术问题出现了网络地址转换(NAT)和防火墙。在考虑对这些问题的解决方案时安全也是个问题。在通过数据网络的实时通信的部署横越共享网络(例如,公众因特网)时,企业需要确保不会危及它们的数据安全。对这些问题的当前解决方案需要企业的外侧或外部IP地址对企业希望与之通信(话音通信通常包括所有人)的人变成公知的。在此提出的本发明并没有经受这个不足,因为企业外部IP地址仅仅需要对于“信任的”服务提供商是已知的,这就是为什么公众因特网得以大规模发展的原因。
NAT已经被引入用于解决‘地址短缺’的问题。IP网中的任何一个端点或‘主机’都具有用于识别该端点的‘IP地址’,使得数据分组能够被正确发送或路由到该端点,以及从该端点接收的分组能够从它们被始发的位置被识别。在定义EP地址字段时,没有人预测到桌面设备的大量增长。在全球IP部署多年之后,人们意识到,想利用IP协议通信的端点数将超过可能从地址字段获得的不同EP地址数。为了增大地址字段以及使更多地址可用,需要升级整个IP基础设施。(业界正计划用EP版本6在某个地点实现)。
当前的解决方案称为NAT。在IETF RFC 1631中被称作简单NAT的第一种NAT解决方案利用一对一映射,其出现在万维网存在之前以及在组织内只有少量主机(例如,邮件服务器、文件传送服务器)需要与该装置的外部进行通信时。NAT允许企业创建专用EP网,在该专用EP网中,该企业内的每个端点都具有仅在该企业内唯一但对全球不是唯一的地址。它们是专用IP地址。这允许组织内的每个主机都能与该组织内的任何其它主机通信(即,寻址)。对于外部通信而言,需要公众的或全球唯一的EP地址。在专用IP网的边缘是负责将专用IP地址转换成公众IP地址或从公众IP地址转换为专用IP地址的装置——NAT功能。企业将具有一个或多个公众地址,这些地址专属于该企业,但一般来说只有比主机所需要的较少的公众地址,这或者是因为仅有一些主机需要与外部通信,或者因为同时进行外部通信的数量较少。NAT的一个更为复杂的实施例具有公众IP地址池,这些公众IP地址池以先到先服务的基础被动态分配给需要进行外部通信的主机。在外部设备需要向特定因特网设备发送未经请求的分组的情况下需要固定网络地址规则。
目前大部分专用网络使用来自10.x.x.x地址范围的专用IP地址。外部通信通常经由服务提供商,服务提供商经由可控或共享IP网或经由公众因特网提供服务。在公众和专用网络之间的边界处,NAT被应用于改变地址,以使地址在分组正横越的IP网络内是唯一的。简单NAT以一对一映射为基础改变完整的IP地址,该映射可在通信会话期间内被永久或动态创建。
Web服务器、邮件服务器和外部服务器是需要静态一对一NAT映射,以允许外部通信到达的主机的实例。
NAT的结果是主机的专用IP地址从外部是不可见的,这就增加了安全等级。
对简单NAT的扩展另外利用了用于转换映射的端口,而且经常被称为NAPT(网络地址端口转换)或PAT(端口地址转换)。端口识别两个主机之间的点对点传输连接的一端。随着公众访问万维网(WWW),再次出现了公众IP地址的短缺,因为目前许多桌面机器都需要在专用网络之外通信。在IETF RFC 1631中规定的解决方案允许专用IP地址对公众IP地址的多对一映射,并在公众IP地址上对从专用装置出来进入到公众或共享网络的每个连接改用唯一端口分配(理论上在每个IP地址上有64k的唯一端口)。由于因特网的发展,PAT成为了地址转换的通用方法。
PAT的特殊性在于,对公众IP地址/端口分配的专用IP地址/端口映射是自动进行的,通常是每当专用装置进行与公众网络的出站连接时。PAT的结果是数据无法入站传输,即从公众网到专用网,除非先前的出站连接已经使这种PAT分配存在。通常,PAT装置不会使PAT分配长久。在指定的‘寂静’周期届满后,即对于该出站启动的连接不再接收到入站数据时,对于该连接的PAT分配不进行分配,而且该端口空闲以被分配给新连接。
虽然经由通用IP连接连接的计算机和网络使得通信更为容易,该通用协议仍使得更为容易破坏私密性和安全性。利用相对少的计算能力就可能访问专用或秘密数据和文件,以及恶意破坏商业信息。业界对这种攻击的解决方案是在专用网的边界处部署‘防火墙’。
防火墙被设计用于限制或‘过滤’可能在专用和公众IP网之间通过的这种类型的IP业务。防火墙能通过多种级别的规则应用限制。限制可以应用于IP地址、端口、IP传输协议(例如,TCP或UDP)或应用程序。限制不是对称的。通常防火墙将被编程用于允许从专用网(防火墙内)到公众网(防火墙外)的通信比另一方向上更多。
很难仅对IP地址应用防火墙规则。任何一个内部主机(即,你的PC)都可能想连接到世界范围内的任何一个外部主机(web服务器)。为允许进一步控制,“公知端口”的概念被应用于该问题。端口识别两个主机之间的点到点传输连接的一端。“公知端口”是运送‘已知’类型的业务的端口。IANA(因特网分配号码权威)指定该公知端口和通过它们运送的业务类型。例如,端口80已经被分配用于web冲浪(http协议),而端口25被分配用于简单邮件传输协议,等等。
用于Web冲浪的防火墙过滤规则的一个实例是任何一个内部的IP地址/任何端口号都可以利用TCP(传输连接协议)和HTTP(用于Web冲浪的应用协议)连接到任何一个外部IP地址/端口80。
该连接是双向的,因此业务可以在同一路径上从Web服务器流回。其观点是连接必须从内部启动。
用于电子邮件的防火墙过滤规则的一个实例是任何一个外部IP地址/任何一个端口号都可以利用TCP和SMTP连接到IP地址192.3.4.5/端口25。
(同时,NAT功能可以将目的IP地址192.3.4.5改变为邮件服务器的内部地址10.6.7.8。)诸如“任何一个内部IP地址/任何一个端口号都可以连接到任何一个外部IP地址/任何一个端口号用于TCP或UDP,反之亦然”的过滤规则相当于去除防火墙并使用直接连接,因为这是一个太宽的过滤器。这些规则被IT管理员表示不满。
H.323已经被设计成独立于底层网络和传输协议。然而,H.323在IP网中的实现借助于以下主要概念的映射是可能的H.323地址IP地址H.323逻辑信道TCP/UDP端口连接在H.323通过IP的实现中,利用TCP或UDP传输协议作为有效载荷在EP分组中发送H.323协议消息。许多H.323消息都包含始发端点或目的地端点或这两个端点的H.323地址。诸如SIP的其它信令协议也将IP地址嵌入到信令协议有效载荷内。
然而,一个问题出现,NAT功能将改变源和目的地主机的显式IP地址(及端口),但不改变H.323有效载荷中的H.323地址。由于主机利用在H.323有效载荷中交换的H.323地址和端口使各个接收的数据分组与该呼叫相关联,这使得H.323协议被违背并需要中间智能来管理H.323有效载荷地址。
由于多媒体通信的复杂性,H.323需要多个逻辑信道在端点之间开放。逻辑信道对呼叫控制、能力交换、音频、视频和数据都是需要的。在仅涉及音频和视频的简单点对点H.323多媒体会话中需要至少6个逻辑信道。在H.323的IP实现中,逻辑信道被映射到TCP或UDP端口连接,这些端口连接中有许多是动态分配的。
由于防火墙功能滤除了它们没有对此作出规定的端口上的业务,或者防火墙被打开,这将使防火墙的用途无效,或者大部分H.323业务将不能通过。
因此,端点之间的NT和防火墙功能都能阻止H.323(以及其它实时协议,例如SIP和MGCP)通信的开展。在端点处于不同的专用网,一个端点在专用网而另一个端点在因特网,或者端点都在不同的可控IP网的情况下通常就是这样。
因此,H.323(以及SIP、MGCP等)通信是令防火墙讨厌的东西。或者防火墙必须知道H.323或者一些中间智能必须以安全的方式管理端口分配。
对此问题的一个可能的解决方案是完全的IP H.323基础设施的升级,这需要●对每个IP网络边界处的NAT功能的H.323升级。NAT功能必须扫描所有的H.323有效载荷并一致地改变IP地址;●对每个EP网络边界处的防火墙功能的H.323升级。防火墙必须了解并观察所有的H.323通信,使得它能够打开被动态分配的端口而且必须过滤在这些端口上的所有非H.323业务;●在边界处或共享IP网络中部署H.323智能以解求和仲裁地址。IP地址很少直接被用户使用。实际上,使用的是IP地址别名。需要智能来求解IP地址的别名。这种H.323功能包含在被称为关受(gatekeeper)的H.323实体内。
这种可能的解决方案有以下缺陷●每个组织/专用网对于H.323通信都必须有相同级别的升级;●升级是昂贵的。必须购买、规划和部署新的功能或新的设备。IT管理员必须了解H.323;●这种部署的规模可能不容易与对其的需求适应,因为技术是被逐步采用的,需要比最初的(可能是试验性的)需求所需的要大和更昂贵的初始部署;●不断解析H.323分组以求解简单NAT,而且防火墙功能对于每个网络边界处的信号造成了等待时间负担。对于音频和视频的等待时间容限是非常小的;●由于有多种实时通信标准,而且这些标准的每一种信令协议都不同,企业将需要多种升级——对其希望使用的每一种协议都有一个升级;●期望媒体在企业之间直接传输,或者在企业和公众网中的装置之间传输。这种传输的结果是企业的EP地址变为公知常识。这被认为是对安全的一种损害,因为任何潜在的攻击者都必须首先找到企业的IP地址作为发起攻击的第一步。
这些问题的结果是,当存在防火墙和/或网络地址转换(NAT)时,H.323协议不被用于多媒体通信。一个方案是将H.323系统置于防火墙和NAT功能的公众方。这使得它们能利用H.323,同时还允许他们保护他们的网络的其余部分。其缺点是1.普遍存在的视频通信装置是桌面PC。将所有桌面计算机置于公众方是无意义的;2.在防火墙的公众方H.323系统无法阻止攻击者;
3.公司无法利用H.323的潜在的无所不在的特性,因为只有特殊的系统才被允许进行H.323通信;4.公司将不能充分利用H.323中的数据共享设施,因为防火墙将阻止H.323系统存取数据。打开防火墙以允许来自H.323系统的数据传送功能不是一种选项,因为它将允许攻击者利用H.323系统作为中继;5.在新兴的话音经IP(VoIP)市场上存在直接与数据网络连接的电话装置的市场,例如以太电话和IP PBX。由于桌面特性,它们通常部署在防火墙和NAT之后的专用网上。如果没有对上述问题的解决方案,使用这些装置的电话被局限于企业专用网络或内联网,或者必须通过IP-PSTN网关以到达外部世界。
因此,所期望的和也正是本发明人所认识到的是允许位于不同安全的和专用的IP数据网络中的端点(利用实时协议,例如H.323、SIP或MGCP)能够相互通信而不危及各个专用网的数据私密性和数据安全性的能力。

发明内容
本发明允许位于不同安全的和专用的IP数据网中的端点(利用实时协议,例如H.323、SIP或MGCP)能够相互通信而不危及各个专用网络的数据私密性和数据安全性。本发明具有与现有的安全功能,例如防火墙,以及在防火墙、路由器和代理中可能出现的NAPT(网络地址端口转换)功能交互工作的优势。本发明的好处是,其节省了将这些装置升级为完全协议适应或部署另外的协议知晓装置的成本。本发明应用于例如,简单的(一对一)NAT(网络地址转换)映射可以应用于专用网的边缘的那些部署以及NAPT(网络地址和端口转换)应用于专用网边缘的部署。这两种配置可以共存,而且该设备可以允许通信发生在遵循一种配置的专用网和遵循另一种配置的专用网之间。类似的,在单个专用网内部,一些终端可以利用一种配置(专用家用系统)而其它终端可利用第二种配置(例如桌面客户端PC)。注意,为了本说明书的目的,NAT将指所有类型的网络地址转换。
本发明是参考ITU H.323和IETF会话启动协议(SIP)标准举例说明的。然而,其同样适用于需要动态分配端口以运送双向信息的其它标准或方法。本发明的好处是,专用网基础设施(防火墙和路由器)无需了解用于实时通信的协议。这使得企业能够不考虑协议来部署设备。这并不是说某些实现出于安全或其它理由可以提供‘协议’检验。


下面通过举例参考附图描述本发明,其中图1是描述用于SIP的本发明的示例性横越体系结构的简图;图2是示意本发明的注册和TLS连接保持有效(keep-alive)过程的流程图;图3是示意处理本发明的呼入过程的流程图;图4是示意处理本发明的呼出过程的流程图;图5是示意建立本发明的媒体过程的流程图;图6是描述用于SIP的本发明的示例性探测分组的简图;图7是描述用于H.323的本发明的示例性横越体系结构的简图;图8是示意本发明的控制路径建立和注册过程的流程图;图9是示意本发明的进行呼出过程的流程图;图10是示意本发明的接收呼入过程的流程图;图11是示意本发明的输出媒体建立过程的信令的流程图;图12是示意本发明的建立输入媒体过程的信令的流程图;图13是示意使用本发明的快速连接建立呼叫过程的媒体建立的流程图;图14是示意利用本发明的快速连接应答呼叫过程的媒体建立的流程图;图15是示意本发明的向外路径探测过程的流程图;图16是示意本发明的向内路径探测过程的流程图;
图17是描述用于H.323的本发明的示例性探测分组的简图;图18是示意本发明的H.225/H.245 TCP保持有效过程的流程图;和图19是与本发明相关的通用计算装置的功能框图。
具体实施例方式
现在参考附图,其中相同的附图标记指示图中的相同或相应部件。
1.有关SIP的实施例如图1所示,防火墙和NAT(“FW/NAT”101)将网络分离为内部103和外部105地址空间。通常,内部地址空间是专用地址空间,而外部地址空间是公众地址空间。然而,外部地址空间可以是分离的专用地址空间。防火墙和NAT可以由多个装置构成,但为方便起见,在此显示为单个实体。用于在内部地址空间和外部地址空间之间通过的路由的任何内部地址(如客户端地址107)将被NAT网络地址转换(NAT)为外部地址。经如此修正的地址被称为经NAT的地址。
客户端109位于NAT和防火墙内部。客户端地址从内部地址空间分配。
远程客户端111被认为位于外部地址空间内,虽然真实的远程客户端实际上可能位于另一NAT之后。因此,与远程客户端111相关联的远程地址113是通过它们远程客户端在外部地址空间内可访问的地址。为此,图1将远程客户端称为“(显式)远程客户端”。下文中对远程客户端的任何引用是指(显式)客户端。
SIP注册主管/代理115位于NAT和防火墙之外。图1示出了作为单个实体的SIP注册主管和代理功能。这纯粹是为了方便起见,而且如果期望的话,这两个功能可以被分离为独立的装置。SIP注册主管/代理是标准装置。
横越服务器117也位于NAT和防火墙外部。它有两套地址内TS地址118和外TS地址119。内TS地址连接防火墙和NAT内部的客户端,而外TS地址连接远程客户端。内TS地址和外TS地址都从外部地址空间分配。横越服务器和SIP注册主管/代理可共址。
本发明使得NAT和防火墙内部的客户端能够与外部地址空间内的远程客户端和代理通信。这是通过在客户端109和横越服务器117之间创建控制信道,以及在客户端和横越服务器之间发送用于了解经NAT修正的地址实现的。
简言之,本发明的协议开始于客户端创建与横越服务器的TLS(传输级安全性)连接并发送SIP注册消息时。横越服务器将在修正该消息的“联系人”标题后将该消息转发到SIP注册主管/代理,使得该注册主管在与该客户端进行呼叫时将联系横越服务器。
当SIP注册主管/代理115接收到对于呼入的INVITE时,其将该消息转发到横越服务器117。在转发该消息到客户端之前,横越服务器再次修正该消息,此时包括关于在该消息的SDP部分中的探测令牌的信息。
一旦接收到INVITE消息,客户端解释该额外的SDP信息并发送探测分组到横越服务器117。横越服务器利用这些探测分组的经NAT的源地址来确定在何处从远程客户端接收的分组将被发送使得它们将被客户端接收。
横越服务器还可添加探测信息到200 OK,它是客户端为响应INVITE而发送的。这使得远程客户端能发送探测分组以验证其发送的分组的源地址。
当该呼叫完成时,呼叫被以常规方式终止,而且横越服务器释放任何被分配的资源。
I.1消息流从客户端发送到横越服务器的探测分组允许横越服务器了解其可用于发送媒体到客户端的经NAT的客户端地址121。本发明还在客户端和横越服务器之间建立控制对系统的访问的持久TLS控制连接,呼叫信令消息通过该连接发送。
以下章节给出了对探测分组和控制连接如何被本发明使用的详细说明。
I.2注册和连接保持有效参考图2说明客户端连接横越服务器并向SIP注册主管/代理注册的方法。
客户端通过通常利用SIP TLS公知端口5061建立与横越服务器的预先配置的公众地址的TLS[TLS]连接启动与横越服务器的通信(201)。横越服务器利用其公众密钥作为TLS连接建立的一部分来向客户端验证自身。
假设客户端被授权这样做,在客户端和横越服务器之间TLS连接被保持客户端希望从SIP注册主管/代理接收呼入的整个周期。客户端和横越服务器之间的所有后续SIP信令都通过这个连接发生。
当TLS连接被建立时,客户端发送SIP REGISTER消息(202)。这包括本发明的标题,称为X-Assent标题(见以下的章节I.5),其告诉横越服务器客户端支持本发明的协议扩展。当横越服务器接收到REGISTER消息时,其创建到SIP注册主管/代理的TCP连接。其修正REGISTER消息中的联系人标题,使得SIP注册主管/代理将联系它而不是客户端,而且添加或修正联系人标题的“期满”字段,使得客户端将在适于确保对于TLS连接的NAT绑定保持有效的周期内重新REGISTER。一旦REGISTER被修正,其被转发到SIP注册主管/代理(204)。
如果SIP注册主管/代理接受该注册,其将发送200 OK(205)。横越服务器接受注册200 OK响应的接收,作为客户被授权利用其资源的指示。横越服务器恢复其已经修正的任何联系人标题位置信息,并插入“X-Assent”标题(见以下的章节1.5)。(术语“Assent”在本发明的软件实现中用于参考本发明的各个实施例)。后者告诉客户端,可能需要本发明的进程。特别在此阶段,其通知客户端优选在注册事项完成后保持TLS连接。结果得到的消息被转发到客户端(206)。
某个时间过后,SIP注册主管/代理可选择关闭与横越服务器的TCP连接(207),可能是为了节省资源。
1.3处理呼入下面参考图3描述用于处理呼入的序列。
如同前面提到的,客户端和横越服务器之间的TLS连接是在客户端希望接收呼入的整个周期内保持的(301)。事件的主要序列开始于SIP注册主管/代理接收到SIP INVITE消息形式的呼入指示时(302)。SIP注册主管/代理将查询URI,并确定INVITE需要被转发到横越服务器。如果在SIP注册主管/代理和横越服务器之间不存在TCP连接,则SIP注册主管/代理创建一个连接(303)并转发已经适当改变了该INVITE的URI的INVITE消息(304)。
在接收到INVITE时,横越服务器进行以下工作●改变URI以交付给客户端;●更新记录路由标题(或者更新联系人标题),使得客户端将向其发送未来的SIP请求,而不是试图将这些SIP请求直接发送给远程客户端;●记录从客户端接收的媒体将被发送到的地址;●任选地更新客户端优选发送媒体所至的地址,使得客户端发送媒体到横越服务器的内TS地址,而不是直接发送到远程客户端;●插入额外的SDP参数[SDP]以描述将被使用的本发明的探测分组(下面将进一步描述对这些分组的处理)。
可以向SDP属性中添加两组探测信息。第一组探测信息(标记为‘rx’)被用于确定客户端希望通过它们接收媒体的经NAT的地址。第二组任选的探测信息(标记为‘tx’)被用于确定客户由此正在进行发送的该组经NAT的地址。
修正的INVITE消息被发送到客户端(305),假设客户端通过发送200 OK响应该INVITE(306),横越服务器在转发该消息到SIP注册主管/代理之前进行以下的改动(307)●更新记录路由标题(或更新联系人标题),使得远程客户端将向其发送未来的请求,而不是试图直接将这些请求发送给客户端;●创建端口以形成外TS地址,来自远程客户端的媒体可以在该外TS地址上接收;●修正SDP中的地址以指定新创建的外TS地址,从而避免远程客户端试图直接向客户端发送媒体。
一旦接收到经修正的200 OK,SIP注册主管/代理将其转发到远程客户端(308)。
跟随200 OK之后的SIP ACK消息完成了该事项,但是并没有在图中示出,这是因为该消息被修正和转发的方式与INVITE消息的基本相同。
在处理了INVITE事项之后,客户端和横越服务器完成了准备交换媒体的步骤。
I.4处理呼出对于图4所示的呼出,再次假设客户端和横越服务器之间的原TLS连接仍然打开(401),而且客户端可利用该连接来将其INVITE消息发送到横越服务器(402)。如果横越服务器没有对SIP注册主管/代理打开的TCP连接,则其打开一个连接(403)。在转发INVITE到SIP注册主管/代理之前(404),横越服务器进行以下工作●更新记录路由标题(或更新联系人标题),使得远程客户端将向其发送未来的请求,而不是试图直接将这些请求发送给客户端;●创建端口以形成外TS地址,来自远程客户端的媒体可以在该外TS地址上接收;●修正SDP中的地址为所创建的外TS地址,从而避免远程客户端试图直接向客户端发送媒体。
当SIP注册主管/代理接收到该消息时,其将该消息转发到远程客户端(405)。
远程客户端对INVITE的200 OK响应(406)通过SIP注册主管/代理被转发到横越服务器(407)。横越服务器对该响应进行如下修正●更新记录路由标题(或者修正联系人标题),使得客户端将向其发送未来的SIP请求,而不是试图将这些SIP请求直接发送给远程客户端;●记录从客户端接收的媒体将被发送到的地址;●修正客户端优选发送媒体所至的地址,使得客户端发送媒体到横越服务器的内TS地址,而不是直接发送到远程客户端;●插入额外的SDP参数以描述将被使用的ASSENT探测分组(下面将进一步描述对这些分组的处理)。
修正的响应被发送到客户(408)。
INVITE事项是利用ACK消息完成的。其并没有进行描述,这是因为其处理基本上与INVITE消息的相同。
一旦会话信令已经完成,则如章节I.7所述启动媒体交换。
I.5SIP标题格式本发明的SIP标题指示当被包含在发送给横越服务器的消息中时,客户端支持本发明的扩展,并指定该扩展优选用在从横越服务器发送到客户端时。标题可包括特定参数。本发明的SIP标题参数的定义在ABNF[ABNF]中有如下定义assent-header="X-Assent"HCOLON[assent-extension-params]assent-extension-params=generic-param*(SEMI generic-param);HCOLON,SEMI&generic-param definedin[SIP]I.6 SDP参数格式为了在横越服务器和客户端之间传送探测配置,本发明引入了另外的SDP参数[SDP]。本发明的SDP参数是媒体级参数,而且本发明的一组参数对描述基于RTP的媒体[RTP][RTPPROF]的每个SDPm=line都包括。该参数的格式利用ABNF[ABNF]被如下定义assent-attribute ="a=x-assent:"probe-specificationprobe-specification =probe-direction spaceprobe-type spaceprobe-schemeprobe-direction ="tx/"rx"probe-type ="rtp"/"rtcp"probe-scheme =probe-basic-scheme/probe-future-schemeprobe-basic-scheme ="basic"space probe-token spaceprobe-ack-tokenprobe-token =1*(HEXDIG HEXDIG);HEXDIG definedin[ABNF]probe-ack-token =1*(HEXDIG HEXDIG)probe-futre-scheme =1*ALPHA space*(%x20-7f)in[ABNF] ;ALPHA definedExamples of the SDP attribute for a basic probe of the present invention are:
a=x-assent:rx rtp basic 0564fde459ba453c 54d5abc671dfa2b1a=x-assent:rx rtcp basic 67344ca43b4578fc fd23a657900ac893在以下的章节I.7中描述了如何使用该信息。
I.7建立媒体在交换了探测信息之后,客户端发送探测分组到横越服务器,使得横越服务器能了解经NAT的地址以将其用于往返客户端发送和接收媒体。
探测消息被用于在客户端之间建立媒体流的事件序列如图5所示。步骤(501)至(505)示意了客户端调用的用以启动媒体流的接收的事件序列,而步骤(506)至(509)示出了客户端用于传输媒体的步骤。
建立RTP和RTCP流基本上相同,除了在某些情况下使用稍微不同的值。为避免重复说明两次,该序列是针对RTP描述的,但是在有不同值用于建立RTCP流时,RTCP值被放在相关的RTP值之后的尖括号内,例如rtp值<rtcp值>。
客户通过从探测方向被设置为‘rx’以及探测类型被设置为rtp<rtcp>的属性中提取探测令牌和探测确认令牌来启动媒体接收。客户端通过将用16进制编码的探测令牌转换为字节序列,并将它们拷贝到章节I.8所述的探测分组中构成一个探针。被构成的探测分组被发送到在相关的SDP c=和m=lines指定的地址中(即使SDP通常使用这些地址来指定媒体被发送到何处,但并不从其接收)(501)。该探测分组被发送所至的端口构成了横越服务器的内TS地址的一部分。
考虑到分组丢失(501),客户端不断地重发该探测分组(502)直到其接收到探测确认分组(503)。
当横越服务器确实接收到探测分组时(502),其使其所包含的探测令牌与其内部记录相关以确定该探测分组与哪一个呼叫相关并用呼叫信息记录探测分组的源地址。探测分组的源地址是横越服务器将为该会话转发从远程客户端接收的媒体所至的地址。
为了通知不需要另外的探测分组,横越服务器向客户端发送探测确认分组。其构成与探测分组相同,但包含探测确认令牌而不是探测令牌(503)。客户端通过确保探测确认分组包含正确的探测确认令牌来核实该探测确认分组是否有效。
横越服务器现在已经有足够的信息来将从远程客户端(504)接收的媒体分组转发到客户端(505)。
注意,如果一个出站的INVITE被拾取,则客户端可以从横越服务器接收来自一个以上远程客户端的媒体。客户端利用RTP分组中的SSRC来区分来自不同源的媒体。
横越服务器可以判断客户端是直接将媒体发送给远程客户端,还是通过自身。如果横越服务器选择中继客户端所发送的媒体,则其用设置为‘tx’的探测方向字段包括本发明的SDP参数。
客户端经由横越服务器发送媒体的机制类似于其接收媒体的方式。客户端提取在已经将探测方向字段设置为‘tx’的本发明的SDP属性中指定的探测信息,并且根据该地址发送探测分组,该探测分组被用于根据在相关的SDPc=和m=lines中指定的地址(506)来传送媒体。横越服务器用对应的探测确认分组确认这些地址(507)。现在,当横越服务器从客户端接收到媒体时(508),其利用分组的源和目的地地址确定该媒体所相关的会话,而且能够利用已经存储的信息正确地将媒体转发到远程客户端(509)。如果客户端接收的SDP不包含本发明的具有设置为‘tx’的探测方向字段的任何SDP属性,则客户端将媒体发送到SDP中指定的地址,而不用使用本发明的进程。
注意,是由客户端决定是否选择在从其进行发送的同一端口上接收媒体。
I.8探测令牌与探测分组格式本发明的探测令牌是由横越服务器选择的,而且优选不可由外部装置预测,即使外部装置完全知道所有先前产生的探测令牌。每个探测令牌优选在横越服务器足以区分不同的连接建立事件的期间内也是唯一的。每个探测令牌都可以被编码/加密。
本发明的探测分组和探测确认分组利用与RTP和RCTP分组相同的源和目的地地址,因此优选能够区分二者。例如,本发明的探测分组能够通过它们的尺寸与RTP和RCTP分组区别开来。RTP或RTCP分组的最小尺寸是12个字节。因此,本发明的探测分组优选短于12个字节。来自SDP参数的探测令牌和探测确认令牌以网络字节顺序被放入探测分组中。图6中示意了使用IETF位编号惯例的示例性探测分组。
I.9媒体保持有效优选在没有任何媒体流时阻止媒体分组NAT绑定超时。如果在可能导致NAT绑定超时的周期内在客户端和服务器之间没有通过用于特定NAT绑定的分组,客户端通过向横越服务器发送适合于该NAT绑定的探测分组刷新该绑定。客户端持续发送该探测分组直到横越服务器用适当的探测确认分组确认该探测分组,从而确保该绑定已经被刷新。
I.10结束呼叫一旦接收到对应于对呼叫的SIP BYE的200 OK,横越服务器将释放其已经分配用于处理该呼叫的任何资源。这将终止横越服务器对该呼叫的中继动作。
如果媒体和媒体保持有效事件在适当长的周期内不发生,则横越服务器也释放资源。
在一个可选实施例中,客户端可以是SIP注册主管,其代表其它装置提供NAT与防火墙横越。注册主管以类似于端点的方式向横越服务器注册。该注册启动了注册主管和横越服务器之间的通信信道。该信道被用于在横越服务器和客户端之间运送SIP消息。SIP呼叫建立于是以上述的方式继续进行。SIP呼叫建立于是以上述的方式继续进行,其中注册主管充当信令的中继。如果端点能够并且希望支持防火墙横越,媒体可在其和横越服务器之间直接通过,否则注册主管还不如中继媒体。
II.涉及H.323的实施例本发明还允许不同地址空间内的端点(例如,客户端)在H.323协议内相互通信。图7示出了对该系统的基本体系结构。在此,网络被NAT和/或防火墙705再次划分为内部701和外部703网络。通常,内部网络是专用网,而且可以由公司或个人管理。外部网通常是公众网,如因特网,而且作为选择可以是另一专用网。通信是通过与外部网内的横越服务器709协同工作的内部网内的端点707(例如,客户端)实现的。因此,内部端点和横越服务器一起工作以建立跨越NAT的持久双向连接,并利用探测分组发现已经被NAT修正的地址。
图7标记了外部网中的端点作为“(显式)远程端点”709。这是因为远程端点709实际上位于另一NAT之后,因此在物理上位于另一地址空间内。如果远程端点在另一NAT之后,则优选能够利用来自外部地址空间的地址访问它,可能通过也使用本发明的远程端点。因此,术语“(显式)远程端点”被用于指借助它远程端点能在外部地址空间被访问的地址,而与其物理所处的地址空间无关。
本发明优选结合关守711工作。关守负责处理注册和呼叫路由选择。关守可以是任何标准适应性的关守,而且不必知道本发明所进行的修正。
图7还示意了在以下章节中涉及的地址的位置。‘端点地址’713属于内部网701中的端点707并从内部地址空间分配。‘远程地址’715和‘关守地址’717分别属于(显式)远程端点和关守,并且被从外部地址空间分配。横越服务器具有两套地址内TS地址719和外TS地址721。这两套地址都是从外部地址空间分配的。内TS地址被用于连接内部网内的端点。外TS地址与外部网内的诸如关守和远程端点的实体相连。用于外TS地址的端口被动态分配。当IP分组从内部地址空间横越到外部地址空间时,分组的源地址被NAT修正。由NAT插入的地址称为‘经NAT的地址’723。经NAT的地址是从外部地址空间分配的。
II.1操作本发明是通过在端点和横越服务器之间穿越NAT建立持久双向控制路径工作的。除了允许端点联系横越服务器,更重要的是允许横越服务器在任何时候联系端点。在本发明针对H.323的情况下,该路径是基于UDP的,并且在端点经由横越服务器向关守注册时建立。本发明还允许建立入站和出站媒体流。本发明利用从接收媒体的端点地址发送给横越服务器的探测分组来了解可用于将媒体发送到端点的经NAT的地址。
以下的每个小节都详细描述了本发明的协议的各个阶段。本发明需要在标准的H.323消息中放入一些另外的信息。
II.2非标准参数(NonStandardParameter)内容本发明需要在横越服务器和端点之间交换附加信息。该信息是利用在H.225[H.225]和H.245[H.245]消息中出现的NonStandardParameter字段传送的,这些字段具有以下的ASN.1[ASN1]定义(或等同物)NonStandardParameter:.=SEQUENCE{nonStandardIdentifier NonStandardIdentifier,data OCTET STRING}NonStandardIdentifier:.=CHOICE{object OBJECT IDENTIFIER,h221NonStandard H221NonStandard,…}
H221NonStandard:.=SEQUENCE{t35CountryCode INTEGER(0..255),t35Extension INTEGER(0..255),manufacturerCode INTEGER(0..65535),对于本发明而言,NonStandardIdentifier的h221NonStandard变量是与以下值使用的t35CountryCode=0xB4t35Extension=0x00manufactureCode=0x5200跟随‘0x’前缀后的值就是16进制数。
NonStandardParameter的数据字段包括两部分。第一部分用于指示该扩展是本发明的扩展,而不是可能利用上述的T35国家码和制造商码的任何其它扩展。其由字符串的ASCII值组成,例如ASSENT即,最初的8位字节具有值0x41、0x53、0x53、0x45、0x4E、0x54、0x3A。紧跟“ASSENT”字符序列(以及没有诸如\0的任何插入的结束字符)是该数据的主要部分,这是按照为H.225定义的ASN.1编码规则编码的ASN.1[ASN1]。ASN.1的示例性定义如下。
ASSENT-MESSAGES DEFINITIONS AUTOMATIC TAGS:._BEGINIMPORTSNonStandardParameter,CallIdentifier,TransportAddressFROM H323-MESSAGES;ASSENT-Info:.=SEQUENCE{nonStandardParameter SEQUENCE OF NonStandardParameter,operation ASSENT-Operation,…}ASSENT-Operation:.=CHOICE{assent-supported ASSENT-Options,transport-request TCP-Trahsport-Request,probe-infoProbe-Info,…}ASSENT-Options:.=SEQUENCE{…}TCP-Transport-Request:.=SEQUENCE{
callback-address TransporAddress,probe-tokenOCTET STRING,…}Probe-Info:.=CHOICE{rx-probe-info Rx-Probe-Info,tx-probe-info Tx-Probe-Info,}Rx-Probe-Info:.=SEQUENCE{rtpIn-Probe-Info,rtcp In-Probe-lnfo,reverse-rtcp Out-Probe-Info OPTIONAL,…}Tx-Probe-Info:.=SEQUENCE{rtpOut-Probe-Info OPTIONAL,rtcp Out-Probe-Info OPTIONAL,reverse-rtcp In-Probe-Info,…}In-Probe-Info:.=SEQUENCE{Probe-tokens Probe-Tokens,
probe-address TransportAddress,}Out-Probe-Info:.=SEQUENCE{probe-tokens Probe-Tokens,}Probe-Tokens:.=SEQUENCE{probe-tokenOCTET STRING,probe-ack-tokenOCTET STRING,}ENDASSENT-Info的NonStandardParameter部分允许包含端到端NonStandardParameters,其中包含“ASSENT”信息将阻止其它非标准信息被包含(例如,到注册消息中)。
在本文件的其它章节中描述了如何使用这些参数。
II.3控制路径建立和注册本发明在端点和横越服务器之间建立持久控制路径,该控制路径可用于在任何时候从任一方交换数据。在本发明针对H.323的实施例的情况下,这种控制信道是基于UDP的。
如图8所示,控制路径建立在端点向横越服务器发送注册请求消息(RRQ)时(801)。注册消息优选包含NonStandardData参数以通知横越服务器该端点支持本发明的扩展。NonStandardData参数包含ASSENT-Info结构(如上面的章节II.2所述),其存在ASSENT-操作结构的被ASSENT支持的选项。
一旦接收到注册消息,横越服务器修正timeToLive参数为保证在用于UDP路径的NAT绑定届满之前端点将重新注册的值。一旦被修正并已经去除了“ASSENT”特定的NonStandardData,RRQ被转发到关守(802)。
如果关守接受了该注册,其用注册确认消息(RCF)响应(803)。横越服务器接受该确认消息作为该端点被授权使用其资源的指示。横越服务器插入在RRQ中使用的NonStandardData参数到RCF中以指示本发明的进程是需要的,而且该消息被转发到端点(804)。
当注册周期届满时,端点向横越服务器发送轻型注册请求消息(805)。端点优选从其发送原始注册消息的相同地址和端口发送该消息。该消息将刷新NAT中的绑定。横越服务器通过向关守转发该消息(806)以及将来自关守的响应(807)转发到端点(808)来完成消息交换。
通过遵循该进程,端点向关守注册,而且在横越服务器和端点之间建立允许横越服务器在任何时候向端点发送消息的持久UDP路径。
II.4呼出信令在本发明中用于呼出的信令阶段与对不用本发明的正常呼叫大部分是一样的。该事件序列如图9所示。
端点首先经由横越服务器与关守执行许可请求/许可确认交换(901)(902)(903)(904)。ARQ不必来自发送RRQ的同一端口。
倘若许可进行呼叫,端点在横越服务器上建立与H.225的公知端口(例如1720)的TCP连接,而且横越服务器创建与关守的前向TCP连接。端点利用该连接发送其H.225建立消息(907),横越服务器将该消息转发到关守(908)。其余的H.225呼叫信令消息以相同的方式交换(909)(910)。
如果会话需要建立H.245连接,横越服务器将在H.225中从关守接收H.245地址。在此情形下,横越服务器基本上以如同关守的基本上相同方式工作。其创建收听的TCP Socket,并在将其转发到端点之前修正H.225消息中的地址。横越服务器在包含H.245地址的消息中还包括本发明的探测信息。如果这样的话,本发明的数据结构的传输请求变量将包含在NonStandardControl参数中。传输请求结构中包含的地址将与主消息中的H.245地址相同。端点将创建与横越服务器的TCP连接(911),并且如果横越服务器包含探测信息,则端点优选立即通过新创建的连接发送对应于指定的探测令牌,如以下章节II.12指定格式化的字节。一旦接收到TCP连接以及任何相关的探测令牌,横越服务器将利用关守提供的地址进行与关守的TCP连接(913)。横越服务器并不将探测令牌转发到关守。H.245消息现在就可以被交换(914)(915)。在交换了呼出信令之后,优选建立该媒体。这在以下的章节II.6和章节II.7中进行了说明。
II.5呼入信令在本发明中用于呼入信令的事件序列类似于正常呼入事件序列,除了在端点和横越服务器之间要建立TCP连接。由于有NAT,横越服务器无法直接建立与端点的TCP连接。横越服务器因此经由利用上面的章节II.3中所述的进程建立的控制路径将NonStandard RAS消息发送到端点。或者,H.225 Facility(设施)消息请求该端点创建与其的TCP连接。结果产生的事件序列如图10所示。
当横越服务器接收到来自关守的H.225建立消息时(1001),其发送一条消息到端点请求会合TCP连接(1002)。横越服务器所发送的消息是RAS NonStandardMessage。该消息的NonStandardData参数包含在章节II.22中定义的数据,其中ASNA部分包含传输请求变量。该消息还包含在该端点被连接所至的横越服务器上的被动态分配的TCP地址,以及探测令牌值,requestSegNum参数中所包含的值没有意义。考虑到UDP的不可靠特性,横越服务器将不断重发该消息直到它在指定端口上接收到TCP连接。当该端点接收到该消息时,如果它尚未创建对应于该指定地址和探测令牌的连接,则其优选创建该连接(1003)。一旦已经创建了TCP连接,端点将通过新创建的TCP连接发送对应于所指定的探测令牌并根据章节II.12格式化的字节序列(1004)。这使得横越服务器能够验证连接的身份。探测令牌字节并不转发到关守。横越服务器于是能转发H.225建立消息(1005),而且消息的交换暂时遵循从步骤1006-1011的正常H.323消息序列。
如果端点希望建立H.245信道,其在发送给横越服务器的H.225消息中包含H.245地址(1010)。该地址的值是任意的并且不使用真实值。当横越服务器接收到包含这种地址的H.225消息时,其创建其自己的动态分配的TCP倾听者,并在转发的H.225消息中包含倾听者地址(1011)。当关守建立与横越服务器的TCP倾听者的TCP连接时(1012),横越服务器动态创建另一TCP倾听者,并发送一条H.225设施消息,请求该端点与新创建的倾听者连接(1013)。该设施消息在NonStandardControl参数中包含NonStandardParameter元。这包含在章节II.2中定义的数据,其中ASNA部分包含传输请求变量。这又包含了端点所连接至的横越服务器上的地址,以及探测令牌值。为完成连接建立,端点创建与指定的横越服务器地址的TCP连接(1014),并立即通过所建立的TCP连接发送对应于该探测令牌并按照章节II.12所述编码的字节(1015)。该探测令牌允许横越服务器将该连接与适当的呼叫相关联,并且不被转发到关守中。于是可能在各方之间交换H.245消息(1016)(1017)。
一旦交换了信令,就如章节II.6和章节II.7所述建立媒体。
II.6利用H.245的输出媒体建立的信令端点能够利用H.245借助独立的传输连接上的H.245信令或通过H.225隧道建立输出媒体。建立输出媒体会话涉及创建向外RTP数据路径、向外RTCP路径和向内反向RTCP路径。在理论上,输出数据路径有可能直接从内部端点到达远程端点。然而,横越服务器可选择中继输出数据。该章节描述了建立这种数据路径的信令方面,这在图11中示出。
端点开始发送正常的H.245 OpenLogicChannel消息到横越服务器(1101)。该消息优选包含在H2250LogicChannelParameters结构中用于反向RTCP路径的地址。横越服务器可以忽略该值,但是优选仍包含由该端点分配的地址以接收反向RTCP数据,以考虑将来的优化。横越服务器创建动态分配的外TS地址以接收反向RTCP,在H.245消息中放入该地址,并将该消息转发到关守(1102)。
一旦从关守接收到H.245 OpenLogicChannelAck消息(1103),横越服务器向H.245 H2250LogicChannelAckParameters结构添加一个包含本发明的控制数据的实例(如章节II.2指定)的nonStandard参数。本发明的控制消息包含Tx-Probe-Info的实例,其又包含In-Probe-Info类型的反向rtcp参数,用于指定反向RTCP数据的向内路径。In-Probe-Info结构包含对于该探针的令牌和探测确认分组,以及探测分组优选被发送的内TS地址。章节II.11中描述了如何使用这种信息。
如果横越服务器选择转发向外RTP和RTCP,则其也进行如下工作●将地址记录到从端点接收的RTP和正向RTCP优选被转发到的位置;●修正H2250LogicChannelParameters结构中的地址,使得RTP和RTCP将被发送至横越服务器内TS地址;●添加探测令牌信息到Tx-Probe-Info结构的rtp和rtcp参数。
一旦H.245 OpenLogicChannelAck消息被编码,其被转发到端点(1104)。
一旦建立输出媒体的信令节段完成,该端点和横越服务器需要利用在章节II.10和章节II.11所述的进程完成数据路径。
II.7用于输入媒体建立的信令输入媒体会话包括向内RTP数据、向内RTCP数据和向外反向RTCP数据。对于将接收向内数据的端点而言,优选创建新的NAT绑定。向外反向RTCP数据可直接从内部端点传递到远程端点。然而,横越服务器可选择中继向外反向RTCP数据。H.245信令可发生在独立的传输连接上或者通过H.225隧道发生。该章节参考图12描述了用于建立输入媒体的信令事件的序列。
输入媒体的建立开始于横越服务器从关守接收到H.245OpenLogicChannelRequest消息(1201)时。当横越服务器接收到该消息时,其向H2250 LogicChannelParameters添加非标准参数。该非标准参数包含章节II.2中指定的信息,其具有选择包含rx-probe-info的实例的选项。Rx-Probe-Info结构包含用于rtp参数中的向内RTP数据的探测信息和用于rtcp参数中的向内RTCP数据的探测信息。rtp和rtcp参数都属于In-Probe-Info类型,这种类型指定了将在探测分组和探测确认分组中使用的令牌,以及端点将发送探测分组所至的横越服务器上的内TS地址。章节II.11描述了如何使用探测信息。
另外,横越服务器可决定中继该向外反向RTCP数据。如果这样做,其记录来自H.245 OpenLogicChannel的指定反向RTCP数据优选被转发至何处的地址,并用其希望在其上接收该反向RTCP数据的内TS地址填充该字段。其然后在Rx-Probe-Info结构的反向rtcp参数中包含向外RTCP的探测信息。章节II.10描述了如何使用这种信息。
经修正的OpenLogicChannel消息被转发至该端点(1202)。
如果端点接受该信道,则其用OpenLogicChannelAck消息响应(1203)。该消息优选在H2250LogicChannelAckParameters结构中包含用于RTP和RTCP路径的地址。横越服务器可忽略这些值,但优选仍包含由该端点分配的地址以接收相应数据,从而考虑将来的优化。
横越服务器动态创建外TS地址,在该外TS地址上将从远程端点接收RTP和RTCP数据,并将地址信息插入到H.245OpenLogicChannelAck消息中。
经修正的OpenLogicChannelAck消息被转发至远程端点(1204)。
一旦建立输入媒体的信令阶段完成,端点和横越服务器需要利用在章节II.10和章节II.11中所述的进程完成数据路径。
II.8利用快速连接进行呼叫的媒体建立本发明也可以用于H.323快速连接。用于本发明扩充的快速连接的事件序列与用于正常快速连接的相同,除了本发明的附加信息扩充了在该交换中传送的寻址信息。本发明的附加信息再次在章节II.2中所述的H2250LogicChannelParameters结构的非标准参数中传送。在此参考图13描述该进程。
为了利用快速连接进行呼叫,端点构建包含快速开始元的H.225建立。包括快速开始元的每个OCTET STRING包含发送媒体的意图或接收媒体的意图。所构成的建立被发送到横越服务器(1301)。
对于在这些意图中的每个唯一的发送和接收地址集合来说,横越服务器动态分配外TS地址。横越服务器在转发该消息之前将该意图中的地址改变为其创建的外TS地址的值(1302)。
来自关守的后续H.225消息优选包含对由远程端点所选择的意图的应答。横越服务器优选将包含Tx-Probe-Info结构的本发明的信息添加每个应答中以发送意图,以及将包含Rx-Probe-Info结构的本发明的信息添加每个应答中以接收意图。如果横越服务器选择中继由端点所发送的媒体,其记录数据将被发送所至的地址并改变该消息中的地址以指定相关的内TS地址。本发明的信息结构还将包含用于探测的相关信息。所修正的信息被发送至端点(1304)。转发该信息后,横越服务器可释放为远程端点没有选择的意图分配的任何资源。
端点和横越服务器利用章节II.10和章节II.11的进程完成媒体建立。
II.9利用快速连接应答呼叫的媒体建立当利用本发明的实施例用于快速连接的呼入时,发生以下参考图14描述的事件序列。
横越服务器将从关守接收包含快速开始意图的H.225建立信息(1401)。
对于发送意图中的每个唯一地址,横越服务器创建包含Rx-Probe-Info结构的本发明的数据实例,并在该地址出现的每个意图中包含其拷贝。横越服务器对于接收意图中的每个唯一的地址集合进行类似演练,但在此情况下本发明的信息包括Tx-Probe-Info结构。
如果横越服务器选择中继由该端点所发送的媒体数据,其将地址记录到该数据优选被转发的地方并修正该意图的H2250LogicChannelParameters部分中的媒体信道和媒体控制信道地址以指定适当的内TS地址。
所修正的信息被发送至端点(1402)。如果该端点接受该呼叫并支持快速连接,则其响应信息将包含对呼叫者的意图的应答(1403)。
对于对发送意图的每个应答,横越服务器动态分配外TS地址以接收RTP和RTCP。对于对接收意图的每个应答,横越服务器动态分配外TS地址以接收反向RTCP。横越服务器将对该意图的应答中的地址改变为被创建的外TS地址并转发该消息到关守(1404)。
端点和横越服务器通过遵循在章节II.10和章节II.11中描述的进程利用本发明的信息完成媒体建立。
II.10向外路径探测理论上,呼出媒体数据可能从内部地址空间中的端点到达远程端点。然而,横越服务器可选择中继向外数据。如果它这样做的话,H.245信令将包含对应于描述需要做的向外探测的RTP和/或RTCP数据的Out-Probe-Info参数。
本章节描述了对于单个数据路径的探测进程。如果向外RTP和RTCP都需要,则该进程的两个实例优选利用Out-Probe-Info结构中的适当探测值实现。本章节和附图15描述了用于RTP数据流的探测操作。RTCP序列也类似。
当端点接收到Out-Probe-Info结构中所包含的探测信息时,其从该地址发送探测分组,从该地址其将发送RTP(或RTCP)分组到在H2250 LogicChannelAckParameters结构中指定的对应地址。探测分组按照章节II.12所述利用在Out-Probe-Info结构的探测令牌元中包含的探测令牌值构成。考虑到UDP分组丢失,端点不断发送探测分组(1501)(1502)直到接收到对应的探测确认分组(1503)。横越服务器将在探测确认分组中放入的值是在Out-Probe-Info结构的探测令牌元的探测确认令牌值中指定的。
横越服务器利用探测分组中的令牌验证数据路径。横越服务器记录探测分组的源地址并使从该源地址在相关内TS地址上接收的任何未来分组与同一数据路径相关(1504)。利用从H.245OpenLogicChannelAck消息中先前存储的信息,横越服务器能够将接收的数据分组转发到正确位置(1505)。
II.11向内路径探测当媒体数据(或者RTCP、前向RTCP或反向RTCP)需要从横越服务器转发到该端点时,优选在NAT中创建适当的地址绑定。这是通过端点向横越服务器发送探测分组实现的。
本章节连同图16描述了向内路径探测进程。注意,为简化文字和附图,本说明书是从建立向内RTP流的观点描述的。RTCP序列也类似。
对于向内RTP(或RTCP)数据路径的探测信息包含在In-Probe-Info结构的实例中,其包含将用于探测分组和探测确认分组的令牌以及端点将发送该探测分组所至的地址。端点利用相关In-Probe-Info结构中的探测令牌值构成如章节II.12所述的探测分组。该探测分组被发送到在In-Probe-Info的探测地址参数中指定的地址(1601)。考虑到UDP分组丢失,端点不断重发该探测分组(1602)直到对应的探测确认分组被接收(1603)。
横越服务器利用探测分组中的令牌验证该数据路径。横越服务器用该数据路径信息存储该探测分组的经NAT的源地址,使得当RTP或RTCP媒体分组从远程端点接收时(1604),其能利用所存储的经NAT的地址将它们转发到该端点(1605)。
II.12探测令牌与探测分组格式本发明的探测分组和探测确认分组利用与RTP和RTCP相同的源和目的地址,因此优选能够区分二者。本发明的探测分组优选通过它们的尺寸与RTP和RTCP分组区别开来。RTP和RTCP分组的最小尺寸为12字节,本发明的探测分组因此优选短于12字节。来自非标准H.245参数的探测令牌和探测确认令牌以网络字节顺序被放入探测分组中。
在图17中利用IETF位编号惯例示意对于符号OxO564fde459ba453c的示例性探测分组。
探测令牌也可用于TCP连接的建立。在此情况下,通过该连接由建立该连接的实体(通常为该端点)发送的第一组字节对应于该探测令牌的值。代表该探测令牌的字节以对于UDP探测分组的相同方式被格式化。探测令牌的值由横越服务器选择,并优选不可由外部装置预测,即使其完全了解所有预先产生的探测令牌。每个探测令牌优选在横越服务器足以区别不同的连接建立事件的周期内也是唯一的。每个探测令牌也可以被编码/加密。
II.13TCP信令保持有效端点和横越服务器之间的TCP连接在可能使NAT释放对该连接的绑定的周期内可能是无效的。为保证不发生这种事情,端点优选保证NAT绑定在适当周期被刷新。发送正常消息可以做到这一点。然而,如果在需要刷新时没有这种适当的消息,优选使用用于刷新该绑定的可选机制。由于随机分组无法被插入到TCP流中以刷新该绑定。本发明要求适当的NAT绑定刷新为通过TCP通信的每个协议定义的序列。在H.225和H.245的情况下,NAT刷新是通过端点向横越服务器发送空的TPKT(仅由字节0x03,0x00,0x00,0x04组成)实现的。如果横越服务器接收到这种空的TPKT,其将它丢弃并且不将它转发到关守。不需要横越服务器在应用级确认该空的TPKT,因为这将由TCP层完成。H.225/H.245 TCP NAT绑定刷新进程在图18中示意。
II.14媒体保持有效如果对应于特定NAT绑定的媒体在可能导致NAT绑定届满的周期内尚未交换,端点优选通过向横越服务器发送探测分组刷新该NAT绑定。探测分组优选包含在该绑定被最初启动时使用的探测令牌。端点优选以适当的间隔不断发送该探测分组直到它从该横越服务器接收到对应的探测分组。
II.15终止呼叫当呼叫被终止时,横越服务器释放使用相同进程的TCP资源,就好像它是关守一样。当最后的TCP资源被释放时,横越服务器释放分配用于中继该媒体的任何资源。
在一个可选实施例中,该客户可以是H.323关守,其代表其它装置提供NAT和防火墙横越。关守以类似于端点的方式向横越服务器注册。该注册启动了关守和横越服务器之间的通信信道。
关守和横越服务器可配置为邻居。如果这样做的话,则它们可相互发出位置请求(LRQ)以确定端点是否在任一位置被注册。如果该端点被如此注册,而且其自身不能支持防火墙横越,则对应于LRQ的装置将充当用于信令的代理和媒体。如果端点能够并且希望支持防火墙横越,则H.225信令将通过关守路由,其它信令和媒体可直接进入横越服务器。
一般而言,应强调本发明的实施例的各个组件可以以硬件、软件或它们的组合实现。例如,客户端可以是蜂窝电话、会议电话、计算机等的一部分,而服务器可以是基站的一部分。任何当前可用或将来部署的计算机软件语言和/或硬件组件都可以在本发明的这种实施例中使用。例如,上述的至少一些功能可以利用Visual Basic,C,C++或对使用处理器适当的任何组件组合语言实现。它还可以写入诸如Java的解释环境中,并被传输到各个用户的多个目的地。
本发明的实施例的多种特征和优势从该详细说明书中是显然的,因此,所附权利要求书意欲覆盖落入本发明的真正精神和范围内的这些特征和优势。此外,由于本领域的技术人员很容易想到各种修正和变化,因此不希望将本发明限制于所示意和描述的确切的结构和操作中,因此所有适当的修正和等效都视为落入本发明的范围内。
图19示意了计算机系统1201,在此之上可以实现本发明的实施例。计算机系统1201包括总线1202或用于传递信息的其它通信机制,以及与总线1202耦合用于处理信息的处理器1203。计算机系统1201还包括主存1204,如随机存取存储器(RAM)或其它动态存储器件(例如,动态RAM(DRAM),静态RAM(SRAM)和同步DRAM(SDRAM)),其与总线1202耦合以存储将由处理器1203执行的信息和指令。另外,主存1204可用于存储在处理器1203执行指令期间产生的临时变量或其它中间信息。计算机系统1201还包括只读存储器(ROM)1205或其它静态存储器件(例如,可编程ROM(PROM),可擦写PROM(EPROM)和电可擦写PROM(EEPROM)),其与总线1202耦合以存储处理器1203的静态信息和指令。
计算机系统1201还包括与总线1202耦合的磁盘控制器1206,以控制一个或多个存储器件存储信息和指令,如硬磁盘1207和可移动媒体驱动器1208(例如,软盘驱动器、只读光盘驱动器、读写光盘驱动器、光盘机、磁带驱动器和可移动磁光驱动器)。这些存储器件可利用适当的装置接口(例如,小型计算机系统接口(SCSI),集成电子器件(IDE),增强IED(E-IDE),直接存储器存取(DMA)或超DMA)添加到计算机系统1201中。
计算机系统1201还可包括专用逻辑器件(例如,专用集成电路(ASIC)或可配置逻辑器件(例如,简单可编程逻辑器件(SPLD)),复杂可编程逻辑器件(CPLD)和场可编程门阵列(FPGA))。
计算机系统1201还可包括与总线1202耦合以控制显示器1210的显示控制器1209,如阴极射线管(CRT),用于向计算机用户显示信息。计算机系统包括输入装置,如键盘1211和指示装置1212,用于与计算机用户交互作用以及为处理器1203提供信息。该指示装置1212可以是例如,鼠标、跟踪球或用于向处理器1203传递方向信息和指令选择以及控制鼠标在显示器1210上移动的指示棒。另外,打印机可提供由计算机系统1201存储和/或产生的数据的打印列表。
计算机系统1201响应处理器1203执行了存储器(如主存1204)中所包含的一个或多个指令的一个或多个序列执行本发明的一部分或所有处理步骤。这些指令可以从另一计算机可读媒体,如硬盘1207或可移动媒体驱动器1208,读入主存1204。多处理设备中的一个或多个处理器可用于执行在主存1204中包含的指令序列。在可选实施例中,硬线电路可用于代替软件指令或与软件指令结合。因此,实施例并不局限于硬件电路和软件的任一特定组合。
如上所述,计算机系统1201包括至少一种计算机可读媒体或存储器,用于保存根据本发明的教导编程的指令和包含在此描述的数据结构、表、记录、或其它数据。计算机可读媒体的例子包括光盘、硬盘、软盘、磁带、磁光盘、PROM(EPROM、EEPROM、快速EPROM)、DROM、SRAM、SDRAM或任何其它磁媒体,光盘(例如CD-ROM)或任何其它光媒体,穿孔卡、纸带或其它具有穿孔图案的物理媒体,载波(以下将说明)或任何计算机由此可读出的其它媒体。
在任何一种计算机可读媒体上或它们的组合上存储的内容包括用于控制计算机系统1201、用于驱动实现本发明的装置以及用于使计算机系统1201能与人类用户(例如打印生产人员)交互的软件。这种软件可包括但不局限于装置驱动程序、操作系统、开发工具和应用软件。这种计算机可读媒体还包括本发明的用于执行在实现本发明时执行的所有或部分(如果该处理被分布)处理的计算机程序产品。
本发明的计算机代码装置可以是任何可解释或可执行的代码机制,包括但不局限于脚本程序、解释程序、动态链接库(DLL)、Java类以及完整的可执行程序。此外,为了取得更好的性能、可靠性和成本,可以使本发明的部分处理分布进行。
在此使用的术语“计算机可读媒体”是指参与为处理器1203提供指令以供执行的任何媒体。计算机可读媒体可采用任何形式,包括但不局限于非易失媒体、易失媒体和传输媒体。非易失媒体包括例如,光盘、磁盘和磁光盘,如硬盘1207和可移动媒体驱动器1208。易失媒体包括动态存储器,如主存1204。传输媒体包括同轴电缆、铜线和光纤,光纤包括构成总线1202的布线。传输媒体还可采用声波或光波的形式,如在无线电波和红外数据通信期间产生的波。
计算机可读媒体的各种形式都可涉及执行一种或多种指令的一个或多个序列到处理器1203供执行。例如,这些指令可最初在远程计算机的磁盘上传送。远程计算机可以将用于实现本发明的所有或部分指令远程安装到动态存储器中,并利用调制解调器通过电话线发送指令。与计算机系统1201本地的调制解调器可以接收电话线上的数据并利用红外发射机将数据转换为红外信号。与总线1202耦合的红外检测器可接收在红外信号中传输的数据,并将数据置于总线1202上。总线1202将数据运送到主存1204,由此处理器1203取出并执行该指令。通过主存1204接收的指令,在由处理器1203执行之前或之后可以任意地存储在存储装置1207或1208上。
计算机系统1201还包括与总线1202耦合的通信接口1213。通信接口1213提供与网络链路1214耦合的双向数据通信,该网络链路1214被连接到局域网(LAN)1215或连接到诸如因特网的另一通信网络1216。例如,通信接口1213可以是连接到任何分组交换LAN的网络接口卡。作为另一个例子,通信接口1213可以是非对称数字用户线(ADSL)卡,综合业务数字网(ISDN)卡或调制解调器,以提供与相应类型的数据通信线路的数据通信连接。也可以实现无线链路。在任一这种实现中,通信接口1213发送和接收电、电磁或光信号,这些信号运送了代表各种类型信息的数字数据流。
网络链路1214通常通过一个或多个网络提供与其它数据装置的数据通信。例如,网络链路1214可通过本地网1215(例如,LAN)或通过业务提供商操作的设备提供与另一计算机的连接,服务提供商通过通信网络1216提供通信业务。本地网络1214和通信网络1216例如使用携带数字数据流的电、电磁或光信号,以及相关的物理层(例如,CAT五类电缆、同轴电缆、光纤等等)。通过各种网络的信号和网络链路1214上的信号以及通过通信接口1213的信号可以以基带信号或基于载波的信号实现,这些信号往返计算机系统1210传输数字数据。基带信号传送数字数据作为描述数字数据位流的非调制电脉冲,其中术语“位”在广义上被认为是指码元,其中每个码元传送至少一个或多个信息位。数字数据还可以用于调制载波,如利用通过导电媒体传播或作为电磁波通过传播媒体发送的幅度、相位和/或频移键控信号。因此,数字数据还可以作为非调制的宽带数据通过“有线”通信信道发送和/或在不同于基带的预定频带内通过调制载波来发送。计算机系统1201可通过网络1215和1216、网络链路1214和通信接口1213发送和接收包含程序代码的数据。此外,网络链路1214可提供通过LAN 1215与移动装置1217的连接,如个人数字助理(PDA)膝上型计算机或蜂窝电话。
权利要求
1.一种被配置成允许位于不同安全和专用IP数据网中的端点(使用实时协议,例如H.323、SIP或MGCP)能够相互通信而不危及各个专用网络的数据私密性和数据安全性的方法、系统、设备和计算机程序产品。
全文摘要
使客户端能通过利用服务器和客户端之间的探测分组传递经网络地址转换NAT修正的地址从而横越防火墙和NAT装置的方法、系统和媒体。
文档编号H04L9/00GK1890945SQ200480036723
公开日2007年1月3日 申请日期2004年12月13日 优先权日2003年12月11日
发明者格里戈·亚当斯, 彼得·库戴尔, 史蒂文·G.·戴维斯, 史蒂文·格雷, 史蒂文·里德, 巴里·斯科特 申请人:泰德通信公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1