专利名称:实现网络地址转换/防火墙穿越的方法
技术领域:
本发明涉及通信领域,尤其涉及一种实现网络地址转换/防火墙穿越的方法。
背景技术:
移动通信领域是近年来竞争最激烈的行业之一,电信运营商越来越需要差异性的业务来提高其竞争力,以软交换和分组交换技术为核心的NGN(下一代网络)技术,由于其具有广阔的应用前景和可以满足人们多样化、个性化的业务需求,已成为业界最关注的热点之一。
目前NGN在应用过程中遇到了很多实际问题,比如NGN用户的接入问题。NGN是一个基于分组网承载的网络,用户接入都是通过IP地址来寻址的。由于IP地址紧缺以及安全等各种原因,所以大量的企业网和驻地网都采用私有IP地址通过出口的NAT/FW(网络地址转换/防火墙)设备接入公网。
NGN网络最大的好处就是能为用户提供丰富的业务,特别是为企业用户提供语音、数据、视频融合的IP Centrex(集中用户交换机移机)业务,但是NAT希望所有的网络应用程序都以一种标准方式(即在数据包头中使用IP地址)进行通信。因此,像H.323、SIP(起始会话协议)、MGCP(媒体网关控制部分)、H.248等在IP上承载语音和视频的协议的控制通道/媒体通道难以穿越传统的NAT/FW设备与公网进行互通,或者说目前的NAT/FW大多只是支持HTTP(超文本传输协议)的数据应用协议穿透,而无法支持这种会话型业务的控制与媒体的NAT/FW穿透,因此基于私网地址的NAT/FW穿越问题的解决显得非常迫切,已经成为目前NGN网络业务开展的最大障碍。
现有技术中一种实现NAT/FW穿越技术的方法为ALG(应用级网关)方法。
ALG是一种能够识别指定IP协议(如H.323、SIP或MGCP)的设备。ALG可以单独地连接于外网和内网之间,也可以内置于NAT/FW内部。ALG通过与NAT/FW交互以建立NAT/FW状态信息,然后,使用建立的NAT/FW状态信息来改变封装在IP报文数据部分中的特定数据,并通过其它一些必需的工作以使应用协议可以穿越NAT/FW设备。
所述ALG方法的主要缺点为目前网络上存在的大量NAT/FW设备并不具备ALG能力,需要对这些NAT/FW设备进行更换或升级。但用户普遍希望运营商在不改变已有NAT/FW设备的情况下,就可以提供一些新的会话型IP业务。因此,ALG方法不能实现无须对NAT/FW做任何改动就可以实现NAT/FW穿越。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种实现NAT/FW穿越的方法,从而可以无需对NAT/FW做任何改动就可以实现NAT/FW穿越。
本发明的目的是通过以下技术方案实现的一种实现网络地址转换/防火墙穿越的方法,包括A、在通过网络地址转换/防火墙设备接入的终端之间部署用户数据报协议UDP隧道客户端UTC和UDP隧道服务器UTS;B、利用所述UTC和UTS在终端之间建立UDP隧道,并通过该UDP隧道实现终端发送的报文穿越网络地址转换/防火墙设备到达另一终端。
所述的UTC和UTS可以通过一单独设备或者通过代理设备、防火墙、路由器或服务器来实现。
所述的步骤A具体包括所述的UTC和UTS可以部署在网络地址转换/防火墙设备的两侧,或者,将UTC部署在网络地址转换/防火墙设备的一侧,将UTS部署在网络地址转换/防火墙设备上。
所述的步骤B具体包括在UTC向UTS传送报文的过程中,UTS通过记录并保存报文中的相关信息,建立所述UTC和UTS之间的UDP隧道,并通过UDP隧道来传输终端之间的报文。
所述的步骤B具体包括B1、UTC收到终端发送过来的报文后,在该报文的IP头之后插入一个UDP隧道头,然后,将该报文传送给网络地址转换/防火墙设备;B2、UTS收到网络地址转换/防火墙设备传送过来的报文后,给该报文分配一个新的源IP,并把报文中UDP隧道头的源端口、目的端口、报文源IP和分配的新的源IP信息,作为UDP隧道信息的一个记录项保存;B3、UTS取出保存的记录项中的新的源IP替换报文中的源IP,将报文发送给接收终端。
所述的UDP隧道头中包括一个协议域,该协议域用来指明原IP报文中承载的报文类型。
所述的步骤B2具体包括B21、UTS以报文中源IP和源端口为索引查找UTS中保存的UDP隧道信息,如果找到相关记录项,则执行步骤B3;否则,执行步骤B22;B22、给该报文分配一个新的源IP,并把报文中UDP隧道头的源端口、目的端口、报文源IP和分配的新的源IP信息,作为UDP隧道信息的一个记录项保存,执行步骤B3。
所述的步骤B具体包括B4、UTC收到终端发送过来的报文后,在该报文的IP头之后插入一个UDP隧道头,然后,将该报文传送给网络地址转换/防火墙设备;B5、UTS收到网络地址转换/防火墙设备传送过来的报文后,给该报文分配一个新的源IP和端口,并把报文中UDP隧道头的源端口、目的端口、UDP隧道头载荷中的源端口、报文源IP、新的源IP和端口信息作为UDP隧道信息的一个记录项保存;B6、UTS以保存的记录项中的新的源IP替换报文中的源IP,新的端口替换报文中UDP隧道头载荷中的源端口,将报文发送给接收终端。
所述的步骤B5具体包括B51、UTS以报文中源IP、源端口和UDP隧道头载荷中的源端口为索引查找UTS中保存的UDP隧道信息,如果找到相关记录项,则执行步骤B6;否则,执行步骤B52;B52、给该报文分配一个新的源IP和端口,并把报文中UDP隧道头的源端口、目的端口、UDP隧道头载荷中的源端口、报文源IP、新的源IP和端口信息作为UDP隧道信息的一个记录项保存,执行步骤B6。
当在UTS中已经建立有UDP隧道信息时,所述的步骤B具体包括B7、UTS收到终端发送过来的报文后,以报文中的目的IP为索引查找UTS中保存的UDP隧道信息,如果找到相关记录项,则执行步骤B8;否则,丢弃该报文;B8、将报文的目的IP替换成相关记录项中的源IP,并在报文的IP头之后插入以该记录项中的UDP隧道头的源端口为目的端口、UDP隧道头的目的端口为源端口的UDP隧道头,将报文发送给NAT/FW设备;
B9、UTC收到NAT/FW设备发送过来的UDP隧道报文后,去掉报文中的UDP隧道头,将报文发送给接收终端。
所述的步骤B8具体包括所述插入的UDP隧道头的协议域为原IP报文IP头的协议域,报文IP头的协议域更新为UDP协议的端口值。
所述的网络地址转换/防火墙可以为下一代网络中的网络地址转换/防火墙。
由上述本发明提供的技术方案可以看出,本发明和现有技术相比,具有如下优点本发明通过为穿越NAT/FW的两个终端分配一个UDP(用户数据报协议)隧道,然后利用建立的UDP隧道实现NAT/FW穿越。因此,本发明无需对现有的NAT/FW设备做任何改动,就可以使H.323、SIP、MGCP、H.248等业务的报文穿越NAT/FW。同时,本发明不影响现有网络的安全性,不影响网络中原有业务的安全性和服务质量要求。
图1为终端和服务器通过UTC和UTS穿越NAT/FW的示意图;图2为终端通过UTC和UTS向服务器发送报文时的具体处理流程图;图3为UTC在终端发过来的报文的IP头之后插入一个UTH的示意图;图4为服务器通过UTS和UTC向终端发送报文时的具体处理流程;图5为终端通过UTC和UTS向服务器发送报文时的具体处理流程;图6为在发明方案和替代方案中,在终端和服务器之间传送数据的过程中,UTH中包括的数据示意图。
具体实施例方式
本发明提供了一种实现NAT/FW穿越的方法。本发明的核心为在NAT/FW设备的两侧分别部署UTC(UDP隧道客户端)和UTS UDP隧道服务器),为穿越NAT/FW的两个终端分配一个UDP隧道,然后利用建立的UDP隧道实现应用协议报文穿越NAT/FW设备。
本发明首先需要在NAT/FW设备的两侧部署UTC(UDP隧道客户端)和UTS(UDP隧道服务器),UTC和UTS可以是单独的一个设备,也可以在防火墙,路由器,服务器等其他任何设备上实现。穿越NAT/FW的两个设备也可以是任何网络设备或终端,比如两个终端、两个服务器、两个路由器等等。终端和服务器通过UTC和UTS穿越NAT/FW的示意图如图1所示。
在图1所示的组网中,UTC部署在终端侧,UTS部署在服务器侧。本发明所述方法可以在终端和服务器之间建立一个UDP隧道,UDP隧道建立后,后续所有在终端和服务器之间传送的报文都通过该UDP隧道传输。
在图1所示的组网中,传送的报文包括终端通过UTC和UTS向服务器发送的报文,以及服务器通过UTC和UTS向终端发送的报文。UDP隧道是通过终端向服务器发送的报文首先建立起来的。
下面结合附图来详细描述本发明所述方法,本发明所述方法在终端通过UTC和UTS向服务器发送报文时的具体处理流程如图2所示,其中包括UTC和UTS分别对报文进行处理的具体处理过程,该流程包括如下步骤步骤2-1、UTC将终端发送过来的报文加上UDP隧道头,向NAT/FW传送报文。
UTC在接收到终端发送过来的报文后,需要在该报文的IP头之后插入一个UTH(UDP隧道头)。
UTH的主要内容包括1、一个标准的UDP头,该项为必选项;2、一个协议域,协议域位于标准的UDP头后面,用来指明原IP报文中承载的报文类型,比如是UDP、TCP(传输控制协议)还是SCTP(流控制传输协议)报文,该项为必选项;3、一个类型域,类型域位于标准的UDP头后面,用来指明UDP隧道自己的报文类型,该项为可选项。
于是,UTC收到终端发过来的报文后,在原报文的IP头之后插入一个上面所述的UDP隧道头,其中UDP隧道头中的协议域等于原IP头中的协议域。然后,UTC重新计算校验和,将该报文发送给NAT/FW。
UTC在终端发过来的报文的IP头之后插入一个UTH的示意图如图3所示。
步骤2-2、UTS确定NAT/FW发送过来的报文为UDP隧道报文,取出报文中源IP和源端口。
NAT/FW在接收到UTS发送过来的报文后,将该报文传送给UTS,UTS收到NAT/FW发过来的报文后,先判断该报文是否为UDP隧道报文。如果是,则取出报文中的源IP和UDP隧道头的源端口,执行步骤2-3;否则,按现有的普通报文处理流程对该报文进行处理。
步骤2-3、UTS以取出的源IP和源端口为索引查找映射表。
因为,一般来说,来自相同UTC的UDP隧道报文隧道头的源端口与目的端口是相同的。因此,本发明在UTS中记录并保存一个包含UDP隧道头的源端口、目的端口、报文源IP和新的源IP四项信息的映射表,该映射表中的一个记录项就代表了一个UTC和UTS之间的UDP隧道。
UTS以取出的报文中的源IP和源端口为索引查找上述映射表,如果没有找到相关记录项,则执行步骤2-4;如果找到相关记录项,则说明针对该源IP的该UTC和UTS之间的UDP隧道已经建立起来了,可以直接利用该UDP隧道来传送报文,执行步骤2-5。
步骤2-4、分配一个新的源IP,并把UDP隧道头的源端口、目的端口、报文源IP、新的源IP信息记录到映射表中。
UTS以取出的报文中的源IP和源端口为索引查找上述映射表,如果没有找到相关记录项,则说明针对该源IP的该UTC和UTS之间的UDP隧道还没有建立起来,于是,UTS分配一个新的源IP,并把报文中的UDP隧道头的源端口、目的端口、报文源IP和新的源IP信息组成一个记录项保存在所述映射表中,针对该源IP的该UTC和UTS之间的UDP隧道便建立起来了。然后,执行步骤2-5。
步骤2-5、取出记录中新的源IP替换报文中的源IP,将报文发送给服务器。
UTS取出所述映射表中保存的,代表该源IP的该UTC和UTS之间的UDP隧道的记录项中的新的源IP,并用该新的源IP替换原报文的源IP,然后。去掉报文的UDP隧道头,重新计算校验和,将报文发送给服务器。
本发明所述方法在服务器通过UTS和UTC向终端发送报文时的具体处理流程如图4所示,其中包括UTC和UTS分别对报文进行处理的具体处理过程,该流程包括如下步骤步骤4-1、UTS收到服务器发送过来的报文后,取出报文中的目的IP。
UTS在收到服务器发送过来的报文后,取出报文中的目的IP,然后,执行步骤4-2。
步骤4-2、UTS以目的IP为索引查找映射表。
UTS以取出的报文中的目的IP为索引,查找在UTS中保存的所述映射表,如果在所述映射表存在一个记录项,该记录项中的新的源IP和取出的报文中的目的IP相等,则执行步骤4-4;否则,执行步骤4-3。
步骤4-3、丢弃该报文。
如果在所述映射表没有找到所述记录项,说明该报文不应该由UTS进行处理,于是,UTS直接丢弃该报文。
步骤4-4、取出记录的源IP替换报文的目的IP,并给报文加上UDP隧道头,将报文发送给NAT/FW。
如果在所述映射表找到所述记录项,说明该报文应该由UTS进行处理,并且相应的UDP隧道已经建立起来了。于是,取出找到的记录项中的源IP,替换报文中的目的IP,并在报文的IP头之后插入以该记录项中的UDP隧道头的源端口为目的端口,以该记录项中的UDP隧道头的目的端口为源端口的UDP隧道头。该UDP隧道头的协议域等于原IP头中的协议域,并且将报文的新的IP头的协议域更新为17,17代表UDP协议的端口值。然后,重新计算校验和,并将报文发送给NAT/FW。
步骤4-5、UTC确定NAT/FW发送过来的报文为UDP隧道报文,去掉报文中的UDP隧道头,将报文发送给终端。
UTC收到NAT/FW发送过来的报文后,判断该报文是否为UDP隧道报文,如果是,去掉报文中的UDP隧道头,并根据报文中的目的IP,将报文发送给相应的终端;否则,UTC按现有的普通报文处理流程对该报文进行处理。
至此,本发明所述方法的具体处理流程结束。
本发明还提出了一种本发明所述方法的替代方案,在替代方案中UTC对报文进行处理的具体处理过程和发明方案相同,UTS对报文进行处理的具体处理过程和发明方案不相同。
在替代方案中,终端通过UTC和UTS向服务器发送报文时的具体处理流程如图5所示,其中包括UTC和UTS分别对报文进行处理的具体处理过程,该流程包括如下步骤步骤5-1、UTC将终端发送过来的报文加上UDP隧道头,向NAT/FW传送报文。
该步骤和发明方案相同,UTC收到终端发过来的报文后,在原报文的IP头之后插入一个所述的UDP隧道头,其中UDP隧道头中的协议域等于原IP头中的协议域。然后,UTC重新计算校验和,将该报文发送给NAT/FW。
步骤5-2、UTS确定NAT/FW发送过来的报文为UDP隧道报文,取出报文中源IP、源端口和UDP隧道头载荷中的源端口。
NAT/FW在接收到UTS发送过来的报文后,将该报文传送给UTS,UTS收到NAT/FW发过来的报文后,先判断该报文是否为UDP隧道报文。如果是,则取出报文中的源IP、UDP隧道头的源端口和UDP隧道头载荷中的源端口,执行步骤5-3;否则,按现有的普通报文处理流程对该报文进行处理。
步骤5-3、UTS以取出的报文数据为索引查找映射表。
和发明方案不同,替代方案在UTS中记录并保存一个包含UDP隧道头的源端口、目的端口、UDP隧道头载荷中的源端口、报文源IP、新的源IP和新的端口信息的映射表,该映射表中的一个记录项就代表了一个UTC和UTS之间的UDP隧道。
UTS以取出的报文中的源IP、源端口和UDP隧道头载荷中的源端口为索引查找上述映射表,如果没有找到相关记录项,则执行步骤5-4;如果找到相关记录项,则说明UDP隧道已经建立起来了,可以直接利用该UDP隧道来传送报文,执行步骤5-5。
步骤5-4、分配一个新的源IP和端口,并把UDP隧道头的源端口、目的端口、UDP隧道头载荷中的源端口、报文源IP,新的源IP和新的端口信息记录到映射表中。
UTS以取出的报文中的源IP、源端口和UDP隧道头载荷中的源端口为索引查找上述映射表,如果没有找到相关记录项,则说明针对该源IP的该UTC和UTS之间的UDP隧道还没有建立起来,于是,UTS分配一个新的源IP和新的端口,并把报文中的UDP隧道头的源端口、目的端口、UDP隧道头载荷中的源端口、报文源IP和新的源IP和新的端口信息组成一个记录项保存在所述映射表中,针对该源IP的该UTC和UTS之间的UDP隧道便建立起来了。然后,执行步骤5-5。
步骤5-5、取出记录中新的源IP替换报文中的源IP,新的源端口替换原报文UDP隧道头载荷中的源端口,将报文发送给服务器。
UTS取出所述映射表中保存的,代表该源IP的该UTC和UTS之间的UDP隧道的记录项中的新的源IP和新的端口,并用该新的源IP替换原报文的源IP,新的端口替换原报文UDP隧道头载荷中的源端口。然后,去掉报文的UDP隧道头,重新计算校验和,将报文发送给服务器。
在该替代方案中,服务器通过UTS和UTC向终端发送报文时的具体处理流程和发明方案相同。
在发明方案和替代方案中,在终端和服务器之间传送数据的过程中,UTH中包括的数据示意图如图6所示。
和发明方案一样,在替代方案中,UTC和UTS可以是单独的一个设备,也可以在Proxy(代理)、NAT、防火墙,路由器,服务器等其他任何设备上实现。
UTS在Proxy设备上实现时,UTS的功能可以与Proxy设备的现有功能相结合,Prxoy设备改变报文的目的IP,最终实现发明方案和替代方案中所述的对报文的具体处理过程。
UTS在NAT/FW设备上实现时,UTS的功能可以与NAT/FW设备的现有功能相结合,NAT/FW设备改变报文的目的IP,最终实现发明方案和替代方案中所述的对报文的具体处理过程。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
权利要求
1.一种实现网络地址转换/防火墙穿越的方法,其特征在于,包括A、在通过网络地址转换/防火墙设备接入的终端之间部署用户数据报协议UDP隧道客户端UTC和UDP隧道服务器UTS;B、利用所述UTC和UTS在终端之间建立UDP隧道,并通过该UDP隧道实现终端发送的报文穿越网络地址转换/防火墙设备到达另一终端。
2.根据权利要求1所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的UTC和UTS可以通过一单独设备或者通过代理设备、防火墙、路由器或服务器来实现。
3.根据权利要求1或2所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的步骤A具体包括所述的UTC和UTS可以部署在网络地址转换/防火墙设备的两侧,或者,将UTC部署在网络地址转换/防火墙设备的一侧,将UTS部署在网络地址转换/防火墙设备上。
4.根据权利要求1所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的步骤B具体包括在UTC向UTS传送报文的过程中,UTS通过记录并保存报文中的相关信息,建立所述UTC和UTS之间的UDP隧道,并通过UDP隧道来传输终端之间的报文。
5.根据权利要求4所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的步骤B具体包括B1、UTC收到终端发送过来的报文后,在该报文的IP头之后插入一个UDP隧道头,然后,将该报文传送给网络地址转换/防火墙设备;B2、UTS收到网络地址转换/防火墙设备传送过来的报文后,给该报文分配一个新的源IP,并把报文中UDP隧道头的源端口、目的端口、报文源IP和分配的新的源IP信息,作为UDP隧道信息的一个记录项保存;B3、UTS取出保存的记录项中的新的源IP替换报文中的源IP,将报文发送给接收终端。
6.根据权利要求5所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的UDP隧道头中包括一个协议域,该协议域用来指明原IP报文中承载的报文类型。
7.根据权利要求6所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的步骤B2具体包括B21、UTS以报文中源IP和源端口为索引查找UTS中保存的UDP隧道信息,如果找到相关记录项,则执行步骤B3;否则,执行步骤B22;B22、给该报文分配一个新的源IP,并把报文中UDP隧道头的源端口、目的端口、报文源IP和分配的新的源IP信息,作为UDP隧道信息的一个记录项保存,执行步骤B3。
8.根据权利要求4所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的步骤B具体包括B4、UTC收到终端发送过来的报文后,在该报文的IP头之后插入一个UDP隧道头,然后,将该报文传送给网络地址转换/防火墙设备;B5、UTS收到网络地址转换/防火墙设备传送过来的报文后,给该报文分配一个新的源IP和端口,并把报文中UDP隧道头的源端口、目的端口、UDP隧道头载荷中的源端口、报文源IP、新的源IP和端口信息作为UDP隧道信息的一个记录项保存;B6、UTS以保存的记录项中的新的源IP替换报文中的源IP,新的端口替换报文中UDP隧道头载荷中的源端口,将报文发送给接收终端。
9.根据权利要求8所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的步骤B5具体包括B51、UTS以报文中源IP、源端口和UDP隧道头载荷中的源端口为索引查找UTS中保存的UDP隧道信息,如果找到相关记录项,则执行步骤B6;否则,执行步骤B52;B52、给该报文分配一个新的源IP和端口,并把报文中UDP隧道头的源端口、目的端口、UDP隧道头载荷中的源端口、报文源IP、新的源IP和端口信息作为UDP隧道信息的一个记录项保存,执行步骤B6。
10.根据权利要求4、5、6、7、8或9所述实现网络地址转换/防火墙穿越的方法,其特征在于,当在UTS中已经建立有UDP隧道信息时,所述的步骤B具体包括B7、UTS收到终端发送过来的报文后,以报文中的目的IP为索引查找UTS中保存的UDP隧道信息,如果找到相关记录项,则执行步骤B8;否则,丢弃该报文;B8、将报文的目的IP替换成相关记录项中的源IP,并在报文的IP头之后插入以该记录项中的UDP隧道头的源端口为目的端口、UDP隧道头的目的端口为源端口的UDP隧道头,将报文发送给NAT/FW设备;B9、UTC收到NAT/FW设备发送过来的UDP隧道报文后,去掉报文中的UDP隧道头,将报文发送给接收终端。
11.根据权利要求10所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的步骤B8具体包括所述插入的UDP隧道头的协议域为原IP报文IP头的协议域,报文IP头的协议域更新为UDP协议的端口值。
12.根据权利要求1所述实现网络地址转换/防火墙穿越的方法,其特征在于,所述的网络地址转换/防火墙可以为下一代网络中的网络地址转换/防火墙。
全文摘要
本发明涉及一种实现网络地址转换/防火墙穿越的方法,该方法主要包括在通过网络地址转换/防火墙设备接入的终端之间部署用户数据报协议UDP隧道客户端UTC和UDP隧道服务器UTS;利用所述UTC和UTS在终端之间建立UDP隧道,并通过该UDP隧道实现终端发送的报文穿越网络地址转换/防火墙设备到达另一终端。利用本发明所述方法,可以无需对NAT/FVV做任何改动就可以实现NAT/FVV穿越。
文档编号H04L29/06GK1870568SQ200510072499
公开日2006年11月29日 申请日期2005年5月23日 优先权日2005年5月23日
发明者姚鑫 申请人:华为技术有限公司