CN102299975B - 自适应多层nat环境的nat设备调整方法和系统 - Google Patents

自适应多层nat环境的nat设备调整方法和系统 Download PDF

Info

Publication number
CN102299975B
CN102299975B CN201010221114.0A CN201010221114A CN102299975B CN 102299975 B CN102299975 B CN 102299975B CN 201010221114 A CN201010221114 A CN 201010221114A CN 102299975 B CN102299975 B CN 102299975B
Authority
CN
China
Prior art keywords
nat
nat device
neighbours
upper strata
parameter
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.)
Active
Application number
CN201010221114.0A
Other languages
English (en)
Other versions
CN102299975A (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.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
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 Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201010221114.0A priority Critical patent/CN102299975B/zh
Publication of CN102299975A publication Critical patent/CN102299975A/zh
Application granted granted Critical
Publication of CN102299975B publication Critical patent/CN102299975B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提出一种自适应多层网络地址转换(NAT)环境的NAT设备调整方法和系统,其中方法包括:本端NAT设备从WAN接口获取IP地址,判断所述IP地址是否为私网IP地址,如果是,则判断上层NAT设备是否发送携带该上层NAT设备的NAT参数的NAT种子(Seed),如果是,则从NAT Seed中获取该上层NAT设备的NAT参数,如果否,则本端NAT设备与邻居NAT设备进行NAT参数测试,获取上层NAT设备的NAT参数;之后,所述本端NAT设备根据上层NAT设备的NAT参数,对自身的NAT参数进行调整。本发明能够解决整网NAT设备对NAT参数的选择和配置问题,保证多层NAT环境中NAT穿越的正常进行。

Description

自适应多层NAT环境的NAT设备调整方法和系统
技术领域
本发明涉及网络地址转换(NAT,Network Address Translation)技术领域,尤其涉及一种自适应多层NAT环境的NAT设备调整方法和系统。
背景技术
NAT技术是解决因特网中IP地址不足的技术,它的解决方案是:设备在内部网络中使用私网IP地址,通过NAT把私网IP地址翻译成合法的公网IP地址,在Internet上使用。
根据RFC 1631的定义,NAT可以分为以下四种不同类型:
完全圆锥型(Full Cone),图1A为现有技术中Full Cone NAT的示意图。内网主机使用内网IP X和端口y建立一个套接字(Socket),第一次使用这个Socket向外部主机发送数据时,NAT会为其分配一个公网IP A和端口b。之后,内网主机用这个Socket向外部任何主机发送数据都将使用IP A和Port b。此外,任何外部主机只要向IP A和Port b发送数据,该内网主机就能收到这些数据。
地址限制圆锥型(Restricted Cone),图1B为现有技术中Restricted Cone NAT的示意图。内网主机使用内网IP X和端口y建立一个Socket,第一次使用这个Socket向外部主机发送数据时,NAT会为其分配一个公网IP A和端口b。之后,内网主机用这个Socket向外部任何主机发送数据都将使用IP A和Port b。此外,外部主机使用IP P和任意端口向IP A和Port b发送数据,并且内网主机曾经使用这个Socket向外部主机IP P发送过数据,满足以上两个必要条件,内网主机就能收到这些数据。
端口限制圆锥型(Port Restricted Cone),图1C为现有技术中Port RestrictedCone NAT的示意图。内网主机使用内网IP X和端口y建立一个Socket,第一次使用这个Socket向外部主机发送数据时,NAT会为其分配一个公网IP A和端口b。之后,内网主机用这个Socket向外部任何主机发送数据都将使用IP A和Port b。此外,外部主机使用IP M和端口n向IP A和Port b发送数据,并且内网主机曾经使用这个Socket向外部主机IP M和端口n发送过数据,满足以上两个必要条件,内网主机就能收到这些数据。
对称型(Symmetric),图1D为现有技术中Symmetric NAT的示意图。内网主机使用内网IP X和端口y建立一个Socket,第一次使用这个Socket向外部主机IP P和端口q发送数据时,NAT会为其分配一个公网IP A和端口b。之后,内网主机用这个Socket向外部主机IP P和端口q发送任何数据都将使用IP A和Port b。如果内网主机同时用这个Socket给外部主机IP M和端口n发送数据,第一次发送时,NAT会为其重新分配一个公网IP C和端口d,以后内网主机发送给外部主机IP M和端口n的所有数据都是用这个公网IP C和端口d。如果NAT有多于一个公网IP,则公网IP A和公网IP C可能不同;如果NAT只有一个公网IP,即公网IP A和公网IP C相同,则Port b和Port d肯定不同。此外,如果任何外部主机想要发送数据给内网主机,那么首先应该收到内网主机发给它的数据,然后根据报文源IP和源端口才能往回发送,否则无法发送。
另外,为了保证UDP数据流穿越NAT,现有技术还提出了UDP HolePunching技术。UDP Hole Punching技术能够解决不同NAT设备后方私有网络的客户端通信问题,包括点对点方式通信和VoIP业务等等。UDP Hole Punching技术的主要思想是:利用一个任何客户端都可达的服务器,在服务器上事先存储、维护客户端的UDP公用端点地址;当双方客户端需要通信时,可以通过服务器的“介绍”获取对方的端点地址,建立“直接”的连接。
如图1E为现有技术中一种NAT网络的结构示意图。在图1E所示的NAT网络中,客户端A和B是两个分为位于不同的NAT设备(即N1和N2)后方的客户端,S是一个拥有公网IP地址的服务器。在图1E所示的NAT网络中应用UDP Hole Punching技术的过程可以为:1)A和B分别向S发起UDP方式通信,这样,NAT设备N1和N2会创建UDP连接,并分配临时的端口号P1和P2;2)S将N1开放的临时端口号P1通知B,将N2开放的临时端口号P2通知A;3)A和B可以分别使用UDP报文直接访问N2和N1设备开放的临时端口号,以达到通信的目的。需要特别说明的是,如果N1和N2是圆锥形或者端口限制型NAT设备,则以上通信没有问题;如果N1和N2是地址限制型路由器,那么A与B通信时,需要伪造源IP地址为公网服务器S的IP地址;如果N1和N2是对称型NAT设备,那么A和B通信无法使用UDP Hole Punching技术。
以上介绍了四种不同类型NAT设备的特性。
在目前的NAT网络中,经常采用宽带路由器作为NAT设备。宽带路由器是一种新兴的网络设备,该设备一般有多个局域网(LAN)接口、以及一个和多个广域网(WAN)接口;WAN接口通常用于连接宽带网,分配公网IP地址;LAN接口通常用于用户接入,分配私网IP地址。
在一个大中型局域网中,通常需要使用多个NAT设备进行多层NAT设备级联,以实现节省公共资源、隔离公网和私网的目的。但是在这种网络环境下,存在的一个主要问题就是:业务报文不易穿越NAT正常运行,即下层NAT设备发出的某些报文可能被上层NAT设备安全策略丢弃而导致网络访问中断。
通常情况下,业务报文穿越NAT涉及以下三个方面的NAT参数:
(1)NAT转换模式
前面提到,NAT分为四种不同类型,相应的,NAT设备的NAT转换模式也包括四种,即:Full Cone NAT模式、Restricted Cone NAT模式、Port RestrictedCone NAT模式和Symmetric NAT模式。
目前宽带路由器的转换模式一般选择Full Cone NAT模式或Symmetric NAT模式。
(2)源端口选择策略
NAT设备在传递由内网发送至外网的报文时,会对该内网报文的原端口进行转换,将转换后的端口称为源端口;在选择源端口时所采用的策略即称为源端口选择策略。通常的源端口选择策略有两种,一种是选择原端口型,也就是选择源端口与内网报文的原端口相同;另一种是递增或随机选择型,也就是在一定范围内以递增或随机的方式选择源端口。
(3)NAT老化时间
基于硬件限制,NAT设备不可能无限制地创建NAT连接;因此,已经创建的NAT通道必须设置一个老化时间,以便及时释放资源。这个老化时间就是NAT老化时间。
以上就是业务报文穿越NAT所涉及的三个NAT参数。为了保证NAT穿越的正常进行,在多层NAT环境中,各层NAT设备上配置的NAT参数应该满足一定的要求,特别是NAT转换模式应满足一定要求。目前,多层NAT环境中的自动调整和适应技术,主要是由各个NAT设备通过查找本身的NAT会话表来配置自身的NAT转换模式;可见,现有技术仅仅解决了单台NAT设备选择NAT转换模式的技术问题,而无法解决整网NAT设备对NAT参数(其中包括NAT转换模式)的选择和配置问题,也就无法保证多层NAT环境中NAT穿越的正常进行。
发明内容
本发明提出一种自适应多层NAT环境的NAT设备调整方法,可以实现整网NAT设备对NAT参数的合理选择和配置,从而保证多层NAT环境中NAT穿越的正常进行。
本发明还提出一种自适应多层NAT环境的NAT设备调整系统、远端服务器和NAT设备,可以实现整网NAT设备对NAT参数的合理选择和配置,从而保证多层NAT环境中NAT穿越的正常进行。
本发明的技术方案是这样实现的:
一种自适应多层NAT环境的NAT设备调整方法,应用于包括远端服务器、本端NAT设备、邻居NAT设备、上层NAT设备和下层NAT设备的系统,所述方法包括:
A、本端NAT设备接入多层NAT网络后,从WAN接口获取IP地址,判断所述IP地址是否为私网IP地址,如果是,则判断上层NAT设备是否发送携带该上层NAT设备的NAT参数的NAT Seed,如果是,则所述本端NAT设备从该NAT Seed中获取该上层NAT设备的NAT参数,继续执行步骤C;否则执行步骤B;
B、所述本端NAT设备向远端服务器发送参数测试请求,所述远端服务器在自身维护的在线NAT设备列表中优选邻居NAT设备,将所述邻居NAT设备信息发送至所述本NAT设备;本端NAT设备与所述邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数,继续执行步骤C;
C、所述本端NAT设备根据所述上层NAT设备的NAT参数,对自身的NAT参数进行调整。
一种自适应多层NAT环境的NAT设备调整系统,所述系统包括:远端服务器、本端NAT设备、邻居NAT设备、上层NAT设备和下层NAT设备;其中,
所述本端NAT设备,用于接入多层NAT网络后,从WAN接口获取IP地址,判断所述IP地址是否为私网IP地址,如果是,则判断上层NAT设备是否发送携带该上层NAT设备NAT参数的NAT Seed,如果是,则从该NAT Seed中获取该上层NAT设备的NAT参数,根据该NAT参数对自身的NAT参数进行调整;如果否,则向所述远端服务器发送参数测试请求,接收远端服务器反馈的邻居NAT设备信息,与所述邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数,根据该NAT参数对自身的NAT参数进行调整;
所述远端服务器,用于接收来自本端NAT设备的参数测试请求,在自身维护的在线NAT设备列表中优选邻居NAT设备,将所述邻居NAT设备信息发送至所述本端NAT设备;
所述邻居NAT设备,用于协助所述本端NAT设备进行NAT参数测试。
一种远端服务器,包括:接收模块、维护模块、优选模块和发送模块;其中,
所述接收模块,用于接收来自本端NAT设备的参数测试请求,通知优选模块优选邻居NAT设备;
所述维护模块,用于维护在线NAT设备列表;
所述优选模块,用于在收到所述接收模块的通知后,在所述在线NAT设备列表中优选邻居NAT设备,将所述邻居NAT设备信息发送至发送模块;
所述发送模块,用于将所述邻居NAT设备信息发送至所述本端NAT设备。
一种NAT设备,包括:地址获取模块、第一判断模块、第二判断模块、测试模块和调整模块;其中,
所述地址获取模块,用于当所述NAT设备接入多层NAT网络后,从WAN接口获取IP地址;
所述第一判断模块,用于判断所述IP地址是否为私网IP地址,如果是,则通知第二判断模块进行判断;
所述第二判断模块,用于在接收到第一判断模块的通知后,判断上层NAT设备是否发送携带该上层NAT设备的NAT参数的NAT Seed,如果是,则通知所述调整模块采用所述上层NAT设备的NAT参数对本端NAT设备的NAT参数进行调整;如果否,则通知所述测试模块测试上层NAT设备NAT参数;
所述测试模块,用于在接收到第二判断模块的通知后,向远端服务器发送参数测试请求,接收远端服务器反馈的邻居NAT设备信息,与所述邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数,通知所述调整模块采用所述上层NAT设备的NAT参数对所述NAT设备的NAT参数进行调整;
所述调整模块,用于在接收到第二判断模块或测试模块的通知后,采用上层NAT设备的NAT参数对所述NAT设备的NAT参数进行调整。
可见,本发明提出的自适应多层NAT环境的NAT设备调整方法、系统及装置,在本端NAT设备接入多层NAT网络后,如果该本端NAT设备不是该多层NAT网络中最高层的NAT设备,则获取上层NAT设备的NAT参数,根据上层NAT设备的NAT参数对自身的NAT参数进行调整,从而解决整网NAT设备对NAT参数的选择和配置问题,保证多层NAT环境中NAT穿越的正常进行。
附图说明
图1A为现有技术中Full Cone NAT的示意图;
图1B为现有技术中Restricted Cone NAT的示意图;
图1C为现有技术中Port Restricted Cone NAT的示意图;
图1D为现有技术中Symmetric NAT的示意图;
图1E为现有技术中一种NAT网络的结构示意图;
图2为本发明所应用的多层NAT环境的结构示意图;
图3为本发明实施例自适应多层NAT环境的宽带路由器调整方法流程图;
图4为本发明实施例一测试源端口选择策略的方法流程图;
图5为判定上层路由器R的源端口选择策略为递增或随机选择型后,本发明实施例二测试NAT老化时间的方法流程图;
图6为本发明实施例三测试NAT老化时间的方法流程图。
图7为本发明实施例自适应多层NAT环境的宽带路由器调整系统的结构示意图;
图8为本发明实施例远端服务器的结构示意图;
图9为本发明实施例宽带路由器的结构示意图。
具体实施方式
本发明提出一种自适应多层NAT环境的NAT设备调整方法,其主要思想是,在多层NAT组网中,下层NAT设备根据上层NAT设备的NAT参数,对自身的NAT参数进行调整,从而实现整网NAT设备对NAT参数的合理选择和配置,保证多层NAT环境中NAT穿越的正常进行。其中,NAT参数可以包括NAT转换模式、源端口选择策略和NAT老化时间。
其中,下层NAT设备获取上层NAT设备的NAT参数的方式可以为:接收上层NAT设备泛洪的携带NAT参数的NAT种子(NAT Seed);或者,与邻居NAT设备进行NAT参数测试,获取上层NAT设备的NAT参数。
由于在现有的NAT网络中,经常采用宽带路由器作为NAT设备;因此,在以下的内容中,本发明以宽带路由器为例进行介绍,当然,NAT设备也可以是除宽带路由器以外的其他设备。
如图2为本发明所应用的多层NAT环境的结构示意图。为了实现本发明,首先需要在多层NAT环境中明确以下几个设备角色。
■远端服务器(Remote Server)
远端服务器需要对本端宽带路由器上报的信息进行存储和更新,当有新的路由器申请进行NAT参数测试时,远端服务器需要为这个路由器分配2台最优邻居路由器协助测试。
■本端宽带路由器(Local Router)
本端宽带路由器在接入Internet网络后,首先根据WAN接口获取的IP地址来判断是否需要进行NAT参数调整(判断的方式为:如果WAN IP为公网IP地址,说明该本端宽带路由器是位于最高层的NAT设备,则该本端宽带路由器不需要进行NAT参数调整;否则,说明该本端宽带路由器不是位于最高层的NAT设备,则该本端宽带路由器需要根据其上层路由器的NAT参数进行NAT参数调整)。如果需要进行调整,则需要进一步判断上层路由器是否发送携带该上层路由器NAT参数的NAT Seed,如果能够收到,则直接根据该NAT参数进行NAT参数的调整;如果无法收到,则向远端服务器申请2台邻居路由器进行NAT参数测试,获取该上层路由器NAT参数,并根据该NAT参数进行NAT参数的调整。
同时,本端宽带路由器将WAN接口获取的IP地址、监听端口、资源空闲状态、上层路由器的NAT转换模式等信息告知远端服务器,以便协助其他路由器来进行NAT参数测试。
本端宽带路由器还需要在LAN内通过定时发送NAT Seed的方式来向下层路由器通报自己的NAT参数,以便它的下层路由器直接进行NAT参数调整。
■邻居路由器(Neighbor Router)
邻居路由器通过监听端口监听远端服务器的报文,来确认自身是否需要协助进行其他路由器NAT参数测试。
■上层路由器(Previous Router)
上层路由器是本端路由器所在多层NAT网络环境中上层路由器的集合。
■下层路由器(Following Router)
下层路由器是本端路由器所在多层NAT网络环境中下层路由器的集合。
以上介绍了图2所示多层NAT环境中的几个设备角色。应用于图2所示的多层NAT环境,本发明提出一种自适应多层NAT环境的NAT设备调整方法,其中,NAT设备可以具体为宽带路由器,如图3为本发明实施例自适应多层NAT环境的宽带路由器调整方法流程图,该方法包括:
步骤301:本端宽带路由器接入多层NAT网络后,从WAN接口获取IP地址,判断所述IP地址是否为私网IP地址,如果是,则执行步骤302;
步骤302:本端宽带路由器判断上层路由器是否发送携带该上层路由器NAT参数的NAT Seed,如果是,则从该NAT Seed中获取该上层路由器的NAT参数,继续执行步骤305;否则执行步骤303;
步骤303:本端宽带路由器向远端服务器发送参数测试请求,所述远端服务器在自身维护的在线路由器列表中优选邻居路由器,将所述邻居路由器信息发送至所述本端宽带路由器;
步骤304:本端宽带路由器与所述邻居路由器进行NAT参数测试,获取所述上层路由器的NAT参数;
步骤305:本端宽带路由器根据所述上层路由器的NAT参数,对自身的NAT参数进行调整。
至此,本端宽带路由器的NAT参数调整过程结束。
在上述过程中,本端宽带路由器N还需要周期性地向远端服务器上s报自己的状态信息,包括WAN接口IP地址、监听端口、资源空闲状态、上层路由器R的NAT转换模式等,远端服务器S将这些信息保存入自身维护的在线路由器列表中。这一方面是为了能够让远端服务器S维护网络中路由器的实时状态;另一方面也是为了在上层路由器R上开启UDP Hole Punching,以便远端服务器在选择该本端宽带路由器N作为其它服务器的邻居服务器时,及时将信息传达该上层路由器R后方的本端宽带路由器N。
此外,上述步骤305之后,本端宽带路由器N还可以将调整后的NAT参数通知下层路由器。
上述步骤303中,远端服务器收到参数测试请求后,可以首先对该本端宽带路由器进行鉴权,当确认该本端宽带路由器为合法用户后,远端服务器为该宽带路由器优选2个邻居路由器,优选邻居路由器的原则可以为:
(1)尽量选择WAN接口配置公网IP地址的路由器,也可以选择在非Symmetric方式NAT路由器后面的路由器作为邻居路由器。不能选择Symmetric方式NAT路由器后面的路由器作为邻居路由器(因为这种路由器的测试报文无法正常发出);
(2)选择系统资源相对比较空闲的路由器,方便后续进行一系列NAT参数测试。
需要说明的是,当远端服务器接收到来自本端宽带路由器的参数测试请求之后,如果由于自身维护的在线路由器列表的内容有限,导致暂时无法为该本端宽带路由器优选出邻居路由器,则本端宽带路由器首先保持默认的NAT参数不变(但是本端宽带路由器需要通知远端服务器,将自身注册为其他路由器的邻居路由器),一直到远端服务器能够为本端宽带路由器优选出邻居路由器时,再与该邻居路由器一起进行NAT参数测试。
在远端服务器S选择出邻居服务器A和B之后,远端服务器S发送报文通知本端宽带路由器N、A和B相互的通信方式。由于不确认上层路由器R的NAT转换模式,所以首先必须由本端宽带路由器N向邻居路由器A和B的监听端口发起连接,即在上层路由器R的NAT上做2条UDP Hole Punching。此外,邻居路由器A和B之间也需要相互发送消息进行关联。此时,本端宽带路由器N、邻居路由器A和B之间就正式建立了信息交互通道,能够进行步骤304中的NAT参数测试。
在步骤304中,本端宽带路由器可以分别对3个NAT参数进行测试,以下参照附图详细介绍。
为了测试NAT转换模式,远端服务器S首先优选出两个邻居路由器,即第一邻居路由器和第二邻居路由器(为方便起见,以下分别记为邻居路由器A和邻居路由器B)。以下以邻居路由器A和B的WAN接口均配置了公网IP地址为例进行说明;如果邻居路由器A和B的WAN接口没有配置公网IP地址(也就是邻居路由器A和B在其它NAT设备的后方),则在进行测试之前,可以先由本端宽带路由器N通知邻居路由器A和B在NAT设备上打好对应端口的UDPHole Punching,然后再由本端宽带路由器N发送报文执行测试。
选择出邻居路由器后,远端服务器S将邻居路由器信息发送至本端宽带路由器N,本端宽带路由器N就可以和邻居路由器一起进行NAT参数测试。具体包括对以下3个参数的测试。
第一,测试NAT转换模式
测试NAT转换模式的过程可以为:
本端宽带路由器N以随机端口Port n向邻居路由器A的监听端口Port a发送UDP请求报文,邻居路由器A通知邻居路由器B,要求邻居路由器B使用端口Port b向本端宽带路由器N发送UDP应答报文,如果本端宽带路由器N接收到邻居路由器B发送的UDP应答报文,则本端宽带路由器N判定上层路由器R的NAT转换模式为Full Cone NAT转换方式;或者,
本端宽带路由器N以随机端口Port n向邻居路由器A的监听端口Port a发送UDP请求报文,要求邻居路由器A返回该UDP请求报文的源端口和IP地址;本端宽带路由器N向邻居路由器B的监听端口Port b发送UDP请求,要求邻居路由器B返回该UDP请求报文的源端口和IP地址;本端路由器N比较上述两个UDP请求报文使用的源端口和IP地址是否相同,如果相同,则判定上层路由器R的NAT转换模式为Symmetric NAT模式;或者,
本端宽带路由器N与任意一个邻居路由器配合进行NAT转换模式的测试,以与邻居路由器A配合为例,本端宽带路由器N向邻居路由器A的监听端口Port a发送UDP请求报文,要求邻居路由器A使用一个不同于Port a的端口发送UDP应答报文;如果本端宽带路由器N无法接收到邻居路由器A的回应,则判定上层路由器R的NAT转换模式为Port Restricted Cone NAT模式;如果能够接收到,则判定上层路由器R的NAT转换模式为Restricted Cone NAT模式。
上述判断方法是根据NAT转换模式的不同特点设计的。上述过程并无先后顺序的限制。本端宽带路由器N可以选择上述任意一种方式获取上层NAT设备的NAT转换模式,当获取不到时,采用尚未选择的其他方式获取上层NAT设备的NAT转换模式,直至获取到为止;如果本端宽带路由器N已经获取到上层路由器R的NAT转换模式,则其他的获取方式可以不再进行。
以下对上述测试NAT转换模式的过程举具体的实例进行介绍:
测试方式一:测试是否为Full Cone NAT转换方式,包括:
步骤1:本端宽带路由器N以随机端口Port n向邻居路由器A的监听端口Port a发送UDP请求报文,该UDP请求报文要求邻居路由器A通知邻居路由器B反馈UDP应答报文;
步骤2:邻居路由器按照该UDP请求报文的要求,通知邻居路由器B向N反馈UDP应答报文;
步骤3:B使用端口Port b向N反馈UDP应答报文;
步骤4:N判断是否能够接收到B反馈的UDP应答报文,如果能够接收到,则判定上层路由器R的NAT转换模式为Full Cone NAT转换方式。
测试方式二:测试是否为Symmetric NAT模式,包括:
步骤1:本端宽带路由器N以随机端口Port n向邻居路由器A的监听端口Port a发送UDP请求报文,该UDP请求报文要求邻居路由器A返回该UDP请求报文的源端口和IP地址;
步骤2:N接收A反馈的该UDP请求报文的源端口和IP地址;
步骤3:本端宽带路由器N向邻居路由器B的监听端口Port b发送UDP请求报文,该UDP请求报文要求邻居路由器B返回该UDP请求报文的源端口和IP地址;
步骤4:N接收B反馈的该UDP请求报文的源端口和IP地址;
在上述过程中,步骤1、2和步骤3、4是N分别与A和B的交互过程,二者并无先后顺序的限制。
步骤5:N比较上述步骤2和4中接收的UDP请求报文使用的源端口和IP地址是否相同,如果相同,则判定上层路由器R的NAT转换模式为SymmetricNAT模式。
测试方式三:测试是否为Port Restricted Cone NAT模式或Restricted ConeNAT模式,包括:
步骤1:本端宽带路由器N向邻居路由器A的监听端口Port a发送UDP请求报文,要求A使用一个不同于Port a的端口发送UDP应答报文;
步骤2:N判断是否能够接收到A的回应,如果无法接收到,则判定上层路由器R的NAT转换模式为Port Restricted Cone NAT模式;如果能够接收到,则判定上层路由器R的NAT转换模式为Restricted Cone NAT模式。
第二,测试源端口选择策略
如图4为本发明实施例一测试源端口选择策略的方法流程图,在本实施例中,以邻居路由器A协助本端宽带路由器N进行测试为例进行说明,包括:
步骤401:本端宽带路由器N以随机端口Port n向邻居路由器A的监听端口Port a发送报文(可以是TCP或UDP报文),记录该随机端口Port n。
步骤402:邻居路由器A将N经过R的NAT转换后的报文源端口记录为Port r,将所述Port r通知本端宽带路由器N。
步骤403:本端宽带路由器N判断n与r是否相同,如果n=r,则判定上层路由器R的源端口选择策略为选择原端口型;如果n≠r,则判定上层路由器R的源端口选择策略为递增或随机选择型。
第三,测试NAT老化时间
针对上述源端口选择策略两种不同的测试结果,本端宽带路由器N采用不同的方式测试NAT老化时间,具体如下:
如图5为判定上层路由器R的源端口选择策略为递增或随机选择型后,本发明实施例二测试NAT老化时间的方法流程图。
本实施例可以预先为本端宽带路由器N设定一个基准时间T,例如为1秒;并设定一个累加时间t,例如为0.1秒。之后,本端宽带路由器N就可以进行NAT老化时间的测试,具体过程包括:
步骤501:本端宽带路由器N以随机端口Port n向邻居路由器A的监听端口Port a发送TCP同步(SYN)报文,邻居路由器A将本端宽带路由器N经过上层路由器R的NAT转换后的报文源端口标识记录为X,并将X发送至本端宽带路由器N。
步骤502:本端宽带路由器N立即向邻居路由器A发送TCP终止(FIN)报文,那么此时在上层路由器R中必然产生1个处于TIME WAIT状态的NAT表项。
步骤503:因为R在生成的NAT表项处于TIME WAIT状态期间,对于路由器N使用相同IP和源端口发起的TCP请求,一定会重用已经生成的NAT表项;所以,为了测试NAT老化时间,本端宽带路由器N等待预先设定的基准时间,即1秒。
步骤504:本端宽带路由器N再次以端口Port n向邻居路由器A的监听端口Port a发送TCP SYN报文,邻居路由器A将本端宽带路由器N经过上层路由器R的NAT转换后的报文源端口标识记录为X1,并将X1发送至本端宽带路由器。
步骤505:本端宽带路由器N判断X与X1是否相同;
如果X=X1,说明上层路由器R生成的NAT表项还没有老化,则本端宽带路由器N等待预先设定的累加时间(即0.1秒),继续执行步骤504;
如果X≠X1,则说明上层路由器R生成的NAT表项已经老化,可以判定上层路由器R的NAT老化时间等于本端宽带路由器N的累计等待时间,结束当前流程。考虑到报文转发传输延时,累加时间t的精度等因素,本端宽带路由器N测试出的上层路由器R的NAT老化时间要略大于R的实际NAT老化时间。
通过上述过程,本端宽带路由器N就能够测试出上层路由器的NAT老化时间。
举一个应用实施例二测试NAT老化时间的实例,例如,上层路由器R实际的NAT老化时间为1.15秒,预先设定本端宽带路由器N的基准时间T为1秒,累加时间为0.1秒。本端宽带路由器N测试该上层路由器R的NAT老化时间的过程包括:
步骤1:本端宽带路由器N以端口Port n向邻居路由器A的监听端口Port a发送TCP SYN报文,要求建立TCP连接;该TCP SYN报文经由上层路由器R转发;A记录该TCP SYN报文的源端口X,并告知N。
步骤2:N立即向A发送TCP FIN报文,要求断开TCP连接,R中产生一个处于TIME WAIT状态的NAT表项。
步骤3:N等待1秒,再次以端口Port n向A的监听端口Port a发送TCP SYN报文;该TCP SYN报文经由上层路由器R转发;A记录该TCP SYN报文的源端口X10,并告知N。
步骤4:N判断X与X10是否相同。由于此时N累计等待1秒,没有超过R实际的NAT老化时间1.15秒,因此,该NAT表项尚未老化,则N的判断结果是X=X10。
步骤5:N等待0.1秒,再次以端口Port n向A的监听端口Port a发送TCPSYN报文;该TCP SYN报文经由上层路由器R转发;A记录该TCP SYN报文的源端口X11,并告知N。
步骤6:N判断X与X11是否相同。由于此时N累计等待1.1秒,没有超过R实际的NAT老化时间1.15秒,因此,该NAT表项尚未老化,则N的判断结果是X=X11。
步骤7:N再等待0.1秒,再次以端口Port n向A的监听端口Port a发送TCPSYN报文;该TCP SYN报文经由上层路由器R转发;A记录该TCP SYN报文的源端口X12,并告知N。
步骤8:N判断X与X12是否相同。由于此时N累计等待1.2秒,已经超过R实际的NAT老化时间1.15秒,因此,该NAT表项已经老化,则N的判断结果是X≠X12。此时,N的累计时间是1.2秒,N判定R的NAT老化时间为1.2秒,判定的结果略大于R实际的NAT老化时间。
可以看出,上述方法是通过测试两次经NAT转换后的源端口是否相同来判断NAT表项是否老化的,因此仅适用于源端口选择策略为递增或随机选择型的上层路由器;而对于源端口选择策略为选择原端口型的上层路由器,上述方法并不适用。本发明提出另一种测试NAT老化时间的方法,对于上述两种源端口选择策略的上层路由器均适用。
如图6为本发明实施例三测试NAT老化时间的方法流程图。
本实施例可以预先为本端宽带路由器N设定一个基准时间T,例如为1秒;并设定一个累加时间t,例如为0.1秒。之后,本端宽带路由器N就可以进行NAT老化时间的测试,具体过程包括:
步骤601:本端宽带路由器N以随机端口Port n向邻居路由器A的监听端口Port a发送TCP SYN报文,要求建立TCP连接;此处将该TCP SYN报文称为第一TCP SYN报文,N记录第一TCP SYN报文的初始序列号(ISN,InitialSequence Number)。
步骤602:N立即向A发送TCP FIN报文,要求断开该TCP连接;此时R中必然产生1个处于TIME WAIT状态的NAT表项。
步骤603:因为R在生成的NAT表项处于TIME WAIT状态期间,对于N使用相同IP和源端口发起的TCP SYN报文,如果新连接的TCP SYN的ISN小于旧连接实例的最后序号项,那么R会过滤该报文。所以,为了测试NAT老化时间,本端宽带路由器N等待预先设定的基准时间,即1秒。
步骤604:本端宽带路由器N以累加时间为周期,周期性地向邻居路由器A发送第二TCP SYN报文,所述各个第二TCP SYN报文中的ISN各不相同,并且均小于步骤601中第一TCP SYN报文的ISN;本端宽带路由器还记录各个第二TCP SYN报文中的ISN与发送该第二TCP SYN报文时的累计等待时间的对应关系;
步骤605:邻居路由器A收到一个第二TCP SYN报文,该第二TCP SYN报文没有被R过滤掉,表明此时R的NAT表项已经老化,A记录该第二TCP SYN报文中的ISN,将该ISN反馈至本端宽带路由器N。
步骤606:本端宽带路由器N接收A反馈的ISN,停止发送第二TCP SYN报文,根据步骤604中记录的对应关系查找该ISN对应的累计等待时间,判定上层路由器R的NAT老化时间等于所述累计等待时间。
考虑到报文转发传输延时,累加时间t的精度等因素,本实施例中本端宽带路由器N测试出的上层路由器R的NAT老化时间要略大于R的实际NAT老化时间。
通过上述过程,本端宽带路由器N就能够测试出上层路由器的NAT老化时间。
举一个应用实施例三测试NAT老化时间的实例,例如,上层路由器R实际的NAT老化时间为1.25秒,预先设定本端宽带路由器N的基准时间T为1秒,累加时间为0.1秒。本端宽带路由器N测试该上层路由器R的NAT老化时间的过程包括:
步骤1:本端宽带路由器N以端口Port n向邻居路由器A的监听端口Port a发送TCP SYN报文,要求建立TCP连接;将该TCP SYN报文记为第一TCP SYN报文,N记录第一TCP SYN报文的ISN。假定该ISN=6000
步骤2:N立即向A发送TCP FIN报文,要求断开该TCP连接,R中产生一个处于TIME WAIT状态的NAT表项。
步骤3:N等待1秒。
步骤4:N以0.1秒为周期,周期性地向A发送TCP SYN报文,可以将这些TCP SYN报文记为第二TCP SYN报文。各个第二TCP SYN报文中的ISN各不相同,并且均小于步骤1中第一TCP SYN报文的ISN;N还记录各个第二TCPSYN报文中的ISN与发送该第二TCP SYN报文时的累计等待时间的对应关系,如下表1:
 第二TCP SYN报文的编号   ISN   累计等待时间
  0   4025   1秒
  1   4022   1.1秒
  2   4001   1.2秒
  3   4000   1.3秒
  ……   ……   ……
表1
在本步骤中,将第二TCP SYN报文中的ISN设置为小于第一TCP SYN报文的ISN的原因是:根据TCP协议规定,在旧的TCP连接实例还处于TIMEWAIT状态期间时,采用相同的Socket对打开一个新的TCP连接实例就会被服务器拒绝,除非这个新连接的TCP SYN大于旧连接实例的最后序列号。因此,将第二TCP SYN报文中的ISN设置为小于第一TCP SYN报文的ISN,会使得后续步骤中当NAT表项尚未老化时,第二TCP SYN报文被R过滤掉。
步骤5:对于编号为0、1、2的第二TCP SYN报文,由于在发送这些报文时R生成的NAT表项尚未老化(老化时间为1.25秒),并且这些报文ISN比第一TCP SYN报文的ISN小,因此均被R过滤掉,A无法收到这些报文。
对于编号为3的第二TCP SYN报文,由于在发送时R生成的NAT表项已经老化,因此不会被R过滤掉,A能够收到该报文。A记录该报文的ISN=4000,将其反馈至N。
步骤6:N接收ISN=4000,查找表1,获取到该ISN对应的累计等待时间=1.3秒,则N判定R的NAT老化时间为1.3秒,判定的结果略大于R实际的NAT老化时间。
以上详细介绍了附图3步骤304中本端宽带路由器进行NAT参数进行测试的具体方法。测试完成之后,根据测试结果,本端宽带路由器可以执行附图3步骤305,对自身的NAT参数进行调整。调整方式可以为:
第一,本端宽带路由器可以将自身的NAT转换模式调整为与上层路由器的NAT转换模式相同。这主要是为了方便下层路由器进行NAT参数的调整。
第二,本端宽带路由器可以将自身的源端口选择策略调整为与上层路由器的源端口选择策略相反。也就是说,如果上层路由器选择选用原端口型策略,则本端宽带路由器选择递增或随机选择型策略;如果上层路由器选择递增或随机选择型策略,则本端宽带路由器选择选用原端口型策略。
第三,本端宽带路由器将自身的NAT老化时间调整为大于或等于上层路由器的NAT老化时间。
需要说明的是,上述NAT参数的调整方式是根据目前的NAT设备的特点设计的,如果NAT设备的特点发生变化,本发明也可以根据改变后NAT设备的特点来改变NAT参数的调整方式。
本发明实施例还提出一种自适应多层NAT环境的NAT设备调整系统,该系统中的NAT设备可以具体为宽带路由器,如图7为本发明实施例自适应多层NAT环境的宽带路由器调整系统的结构示意图,该系统包括:远端服务器701、本端宽带路由器702、邻居路由器703、上层路由器704和下层路由器705;其中,
本端宽带路由器702,用于接入多层NAT网络后,从WAN接口获取IP地址,判断所述IP地址是否为私网IP地址,如果是,则判断上层路由器704是否发送携带该上层路由器NAT参数的NAT Seed,如果是,则从该NAT Seed中获取该上层路由器的NAT参数,根据该NAT参数对自身的NAT参数进行调整;如果否,则向所述远端服务器701发送参数测试请求,接收远端服务器701反馈的邻居路由器信息,与所述邻居路由器703进行NAT参数测试,获取所述上层路由器的NAT参数,根据该NAT参数对自身的NAT参数进行调整;
远端服务器701,用于接收来自本端宽带路由器702的参数测试请求,在自身维护的在线路由器列表中优选邻居路由器,将所述邻居路由器信息发送至所述本端宽带路由器702;
邻居路由器703,用于协助所述本端宽带路由器702进行NAT参数测试。
本发明实施例还提出一种远端服务器,如图8为本发明实施例远端服务器的结构示意图,该服务器可以用于为NAT设备优选邻居NAT设备,本实施例中将NAT设备具体为宽带路由器进行介绍,该远端服务器包括:接收模块801、维护模块802、优选模块803和发送模块804;其中,
接收模块801,用于接收来自本端宽带路由器的参数测试请求,通知优选模块803优选邻居路由器;
维护模块802,用于维护在线路由器列表;
优选模块803,用于在收到所述接收模块801的通知后,在所述在线路由器列表中优选邻居路由器,将所述邻居路由器信息发送至发送模块804;
发送模块804,用于将所述邻居路由器信息发送至本端宽带路由器。
上述在线路由器列表包含的信息可以包括:本端宽带路由器WAN接口获取的IP地址、监听接口、资源空闲状态以及上层路由器的NAT参数。
上述优选模块803优选邻居路由器的方式可以包括:
选择WAN接口配置公网IP地址的路由器、或者选择非对称型NAT路由器后面的路由器作为邻居路由器。
上优选模块803优选邻居路由器的方式可以进一步包括:
在所述WAN接口配置公网IP地址的路由器、以及非对称型NAT路由器后面的路由器中,选择系统资源空闲的路由器作为邻居路由器。
本发明实施例还提出一种NAT设备,该NAT设备可以具体为宽带路由器,如图9为本发明实施例宽带路由器的结构示意图,该路由器包括:地址获取模块901、第一判断模块902、第二判断模块903、测试模块904和调整模块905;其中,
地址获取模块901,用于当所述宽带路由器接入多层NAT网络后,从WAN接口获取IP地址;
第一判断模块902,用于判断所述IP地址是否为私网IP地址,如果是,则通知第二判断模块903进行判断;
第二判断模块903,用于在接收到第一判断模块902的通知后,判断上层路由器是否发送携带该上层路由器NAT参数的NAT Seed,如果是,则通知所述调整模块905采用所述上层路由器的NAT参数对该宽带路由器的NAT参数进行调整;如果否,则通知所述测试模块904测试上层路由器NAT参数;
测试模块904,用于在接收到第二判断模块903的通知后,向远端服务器发送参数测试请求,接收远端服务器反馈的邻居路由器信息,与所述邻居路由器进行NAT参数测试,获取所述上层路由器的NAT参数,通知所述调整模块905采用所述上层路由器的NAT参数对该宽带路由器的NAT参数进行调整;
调整模块905,用于在接收到第二判断模块903或测试模块904的通知后,采用上层路由器的NAT参数对该宽带路由器的NAT参数进行调整。
上述NAT参数可以为NAT转换模式;所述测试模块904与邻居路由器进行NAT参数测试,获取所述上层路由器的NAT参数的方式可以为:
测试模块向第一邻居路由器发送UDP请求报文,以使第一邻居路由器通知第二邻居路由器,要求第二邻居路由器向测试模块发送UDP应答报文;测试模块接收到所述第二邻居路由器发送的UDP应答报文时,则判定上层路由器的NAT转换模式为Full Cone NAT模式;或者,
测试模块向第一邻居路由器发送UDP请求报文,要求第一邻居路由器返回该UDP请求报文的源端口和IP地址;测试模块向第二邻居路由器的发送UDP请求报文,要求第二邻居路由器返回该UDP请求报文的源端口和IP地址;测试模块比较上述两个UDP请求报文的源端口和IP地址是否相同,如果相同,则判定上层路由器的NAT转换模式为Symmetric NAT模式;或者,
测试模块向第一邻居路由器的监听端口Port a发送UDP请求报文,要求第一邻居路由器使用一个不同于Port a的端口发送UDP应答报文;所述测试模块无法接收到所述第一邻居路由器发送的UDP应答报文时,则判定上层路由器的NAT转换模式为Port Restricted Cone NAT模式;所述测试模块能够接收到所述第一邻居路由器发送的UDP应答报文时,则判定上层路由器的NAT转换模式为Restricted Cone NAT模式。
上述NAT参数可以为NAT转换模式;所述测试模块904与邻居路由器进行NAT参数测试,获取所述上层路由器的NAT参数的方式可以为:
测试模块向邻居路由器发送报文,记录发送所述报文的端口标识;所述报文指示邻居NAT设备记录所述报文的源端口标识,并将所述源端口标识发送至测试模块;
测试模块判断自身保存的端口标识与来自邻居路由器的源端口标识是否相同,如果相同,则判定所述上层路由器的源端口选择策略为选择原端口型;如果不相同,则判定所述上层路由器的源端口选择策略为递增或随机选择型。
上述NAT参数可以进一步包括NAT老化时间;测试模块判定上层路由器的源端口选择策略为递增或随机选择型时,则所述测试模块904与邻居路由器进行NAT参数测试,获取所述上层路由器的NAT参数的方式可以为:
测试模块通过一个端口向邻居路由器发送TCP SYN报文,邻居路由器记录所述TCP SYN报文的源端口标识X,将X发送至测试模块;测试模块立即向所述邻居路由器发送TCP FIN报文;测试模块等待预先设定的基准时间后,通过所述端口向邻居路由器发送TCP SYN报文,邻居路由器记录所述TCP SYN报文的源端口标识X1,将X1发送至测试模块;测试模块判断所述X与X1是否相同,如果不同,则判定所述上层路由器的NAT老化时间等于本端宽带路由器的累计等待时间,结束当前流程;如果相同,则测试模块等待预先设定的累加时间,继续向邻居路由器发送TCP SYN报文,直至判定出上层路由器的NAT老化时间。
上述测试模块904与邻居路由器进行NAT参数测试,获取所述上层路由器的NAT参数的方式还可以为:
测试模块通过一个端口向邻居路由器发送第一TCP SYN报文,记录所述第一TCP SYN报文的ISN;测试模块立即向所述邻居路由器发送TCP FIN报文;测试模块等待预先设定的基准时间后,以预先设定的累加时间为周期,周期性地向邻居路由器发送第二TCP SYN报文,所述各个第二TCP SYN报文中的ISN各不相同,并且均小于第一TCP SYN报文的ISN;测试模块还记录各个第二TCPSYN报文中的ISN与发送该第二TCP SYN报文时的累计等待时间的对应关系;邻居路由器收到第二TCP SYN报文后,记录该第二TCP SYN报文中的ISN,将该ISN反馈至测试模块;测试模块接收所述邻居路由器反馈的ISN,停止发送所述第二TCP SYN报文,根据记录的所述对应关系查找该ISN对应的累计等待时间,判定所述上层路由器的NAT老化时间等于所述累计等待时间。
上述调整模块905调整本端宽带路由器的NAT参数的方式可以为:
调整模块905将本端宽带路由器的NAT转换模式调整为与所述上层路由器的NAT转换模式相同;
调整模块905将本端宽带路由器的源端口选择策略调整为与所述上层路由器的源端口选择策略相反;
调整模块905将本端宽带路由器的NAT老化时间调整为大于或等于所述上层路由器的NAT老化时间。
综上可见,本发明提出的自适应多层NAT环境的NAT设备调整方法、系统及装置,在本端NAT设备接入多层NAT网络后,如果该本端NAT设备不是多层NAT网络中最高层的NAT设备,则获取其上层NAT设备的NAT参数,根据上层NAT设备的NAT参数对自身的NAT参数进行调整,从而解决整网NAT设备对NAT参数的选择和配置问题,保证了多层NAT环境中NAT穿越的正常进行。在本发明中,获取上层NAT设备的NAT参数的方式可以有两种,第一种是直接接收上层NAT设备泛洪的携带其NAT参数的NAT Seed;第二种是与邻居NAT设备一起测试上层NAT设备的NAT参数。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (22)

1.一种自适应多层网络地址转换NAT环境的NAT设备调整方法,应用于包括远端服务器、本端NAT设备、邻居NAT设备、上层NAT设备和下层NAT设备的系统,其特征在于,所述方法包括:
A、本端NAT设备接入多层NAT网络后,从广域网WAN接口获取IP地址,判断所述IP地址是否为私网IP地址,如果是,则判断上层NAT设备是否发送携带该上层NAT设备的NAT参数的NAT Seed,如果是,则所述本端NAT设备从该NAT Seed中获取该上层NAT设备的NAT参数,继续执行步骤C;否则执行步骤B;
B、所述本端NAT设备向远端服务器发送参数测试请求,所述远端服务器在自身维护的在线NAT设备列表中优选邻居NAT设备,将所述邻居NAT设备信息发送至所述本端NAT设备;本端NAT设备与所述邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数,继续执行步骤C;
C、所述本端NAT设备根据所述上层NAT设备的NAT参数,对自身的NAT参数进行调整;
其中,所述远端服务器在自身维护的在线NAT设备列表中优选邻居NAT设备的方式包括:选择WAN接口配置公网IP地址的NAT设备、或者选择非对称型NAT设备后面的NAT设备作为邻居NAT设备。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
本端NAT设备将调整后的NAT参数通知所述下层NAT设备;
本端NAT设备将所述WAN接口获取的IP地址、监听接口、资源空闲状态以及上层NAT设备的NAT参数通知所述远端服务器,远端服务器将本端NAT设备通知的信息保存入自身维护的在线NAT设备列表中。
3.根据权利要求1所述的方法,其特征在于,所述步骤B中远端服务器优选邻居NAT设备的方式进一步包括:
在所述WAN接口配置公网IP地址的NAT设备、以及非对称型NAT设备后面的NAT设备中,选择系统资源空闲的NAT设备作为邻居NAT设备。
4.根据权利要求1所述的方法,其特征在于,所述NAT参数为NAT转换模式;
步骤B中所述远端服务器优选出2个邻居NAT设备,分别为第一邻居NAT设备和第二邻居NAT设备;所述本端NAT设备与邻居NAT设备进行NAT参数测试,获取上层NAT设备的NAT参数的步骤包括:选择B1、B2和B3中的任意一种方式获取上层NAT设备的NAT转换模式,当获取不到上层NAT设备的NAT转换模式时,采用B1、B2和B3中的尚未选择的其他方式获取上层NAT设备的NAT转换模式,直至获取到上层NAT设备的NAT转换模式;
B1、本端NAT设备向第一邻居NAT设备发送UDP请求报文,第一邻居NAT设备通知第二邻居NAT设备,要求第二邻居NAT设备向本端NAT设备发送UDP应答报文;如果本端NAT设备接收到所述第二邻居NAT设备发送的UDP应答报文,则判定上层NAT设备的NAT转换模式为完全圆锥型Full Cone NAT模式;
B2、本端NAT设备向第一邻居NAT设备发送UDP请求报文,要求第一邻居NAT设备返回该UDP请求报文的源端口和IP地址;本端NAT设备向第二邻居NAT设备的发送UDP请求报文,要求第二邻居NAT设备返回该UDP请求报文的源端口和IP地址;本端NAT设备比较上述两个UDP请求报文的源端口和IP地址是否相同,如果相同,则判定上层NAT设备的NAT转换模式为对称型Symmetric NAT模式;
B3、本端NAT设备向第一邻居NAT设备的监听端口Port a发送UDP请求报文,要求第一邻居NAT设备使用一个不同于Port a的端口发送UDP应答报文;如果所述本端NAT设备无法接收到所述第一邻居NAT设备发送的UDP应答报文,则判定上层NAT设备的NAT转换模式为端口限制圆锥型Port Restricted ConeNAT模式;如果所述本端NAT设备能够接收到所述第一邻居NAT设备发送的UDP应答报文,则判定上层NAT设备的NAT转换模式为地址限制圆锥型Restricted Cone NAT模式。
5.根据权利要求1所述的方法,其特征在于,所述NAT参数为源端口选择策略;
步骤B中所述本端NAT设备与邻居NAT设备进行NAT参数测试,获取上层NAT设备的NAT参数的步骤包括:
本端NAT设备向邻居NAT设备发送报文,本端NAT设备保存发送所述报文的端口标识;
邻居NAT设备接收所述报文,记录所述报文的源端口标识,将所述源端口标识发送至本端NAT设备;
本端NAT设备判断自身保存的端口标识与来自邻居NAT设备的源端口标识是否相同,如果相同,则判定所述上层NAT设备的源端口选择策略为选择原端口型;如果不相同,则判定所述上层NAT设备的源端口选择策略为递增或随机选择型。
6.根据权利要求5所述的方法,其特征在于,所述NAT参数进一步包括NAT老化时间;
如果判定上层NAT设备的源端口选择策略为递增或随机选择型,则所述步骤B中本端NAT设备与邻居NAT设备进行NAT参数测试,获取上层NAT设备的NAT参数的步骤进一步包括:
B01、本端NAT设备通过一个端口向邻居NAT设备发送TCP同步SYN报文,邻居NAT设备记录所述TCP SYN报文的源端口标识X,将X发送至本端NAT设备;
B02、本端NAT设备立即向所述邻居NAT设备发送TCP终止FIN报文;
B03、本端NAT设备等待预先设定的基准时间;
B04、本端NAT设备通过所述端口向邻居NAT设备发送TCP SYN报文,邻居NAT设备记录所述TCP SYN报文的源端口标识X1,将X1发送至本端NAT设备;
B05、本端NAT设备判断所述X与X1是否相同,如果不同,则本端NAT设备判定所述上层NAT设备的NAT老化时间等于本端NAT设备的累计等待时间;如果相同,则本端NAT设备等待预先设定的累加时间,继续执行步骤B04。
7.根据权利要求5所述的方法,其特征在于,所述NAT参数进一步包括NAT老化时间;
所述步骤B中本端NAT设备与邻居NAT设备进行NAT参数测试,获取上层NAT设备的NAT参数的步骤进一步包括:
B11、本端NAT设备通过一个端口向邻居NAT设备发送第一TCP SYN报文,本端NAT设备记录所述第一TCP SYN报文的初始序列号ISN;
B12、本端NAT设备立即向所述邻居NAT设备发送TCP FIN报文;
B13、本端NAT设备等待预先设定的基准时间后,以预先设定的累加时间为周期,周期性地向邻居NAT设备发送第二TCP SYN报文,所述各个第二TCPSYN报文中的ISN各不相同,并且均小于步骤B11中第一TCP SYN报文的ISN;本端NAT设备还记录各个第二TCP SYN报文中的ISN与发送该第二TCP SYN报文时的累计等待时间的对应关系;
B14、邻居NAT设备收到第二TCP SYN报文后,记录该第二TCP SYN报文中的ISN,将该ISN反馈至本端NAT设备;
B15、本端NAT设备接收所述邻居NAT设备反馈的ISN,停止发送所述第二TCP SYN报文,根据步骤B13中记录的所述对应关系查找该ISN对应的累计等待时间,判定所述上层NAT设备的NAT老化时间等于所述累计等待时间。
8.根据权利要求1或4所述的方法,其特征在于,所述步骤C包括:本端NAT设备将自身的NAT转换模式调整为与所述上层NAT设备的NAT转换模式相同。
9.根据权利要求1或5所述的方法,其特征在于,所述步骤C包括:本端NAT设备将自身的源端口选择策略调整为与所述上层NAT设备的源端口选择策略相反。
10.根据权利要求1、6或7所述的方法,其特征在于,步骤C包括:本端NAT设备将自身的NAT老化时间调整为大于或等于所述上层NAT设备的NAT老化时间。
11.一种自适应多层NAT环境的NAT设备调整系统,其特征在于,所述系统包括:远端服务器、本端NAT设备、邻居NAT设备、上层NAT设备和下层NAT设备;其中,
所述本端NAT设备,用于接入多层NAT网络后,从WAN接口获取IP地址,判断所述IP地址是否为私网IP地址,如果是,则判断上层NAT设备是否发送携带该上层NAT设备NAT参数的NAT Seed,如果是,则从该NAT Seed中获取该上层NAT设备的NAT参数,根据该NAT参数对自身的NAT参数进行调整;如果否,则向所述远端服务器发送参数测试请求,接收远端服务器反馈的邻居NAT设备信息,与所述邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数,根据该NAT参数对自身的NAT参数进行调整;
所述远端服务器,用于接收来自本端NAT设备的参数测试请求,在自身维护的在线NAT设备列表中优选邻居NAT设备,将所述邻居NAT设备信息发送至所述本端NAT设备;其中,所述远端服务器在自身维护的在线NAT设备列表中优选邻居NAT设备的方式包括:选择WAN接口配置公网IP地址的NAT设备、或者选择非对称型NAT设备后面的NAT设备作为邻居NAT设备;
所述邻居NAT设备,用于协助所述本端NAT设备进行NAT参数测试。
12.一种远端服务器,其特征在于,所述远端服务器包括:接收模块、维护模块、优选模块和发送模块;其中,
所述接收模块,用于接收来自本端NAT设备的参数测试请求,通知优选模块优选邻居NAT设备;
所述维护模块,用于维护在线NAT设备列表;
所述优选模块,用于在收到所述接收模块的通知后,在所述在线NAT设备列表中优选邻居NAT设备,将所述邻居NAT设备信息发送至发送模块;其中,所述优选模块在所述在线NAT设备列表中优选邻居NAT设备的方式包括:选择WAN接口配置公网IP地址的NAT设备、或者选择非对称型NAT设备后面的NAT设备作为邻居NAT设备;
所述发送模块,用于将所述邻居NAT设备信息发送至所述本端NAT设备。
13.根据权利要求12所述的远端服务器,其特征在于,所述在线NAT设备列表包含的信息包括:
本端NAT设备WAN接口获取的IP地址、监听接口、资源空闲状态以及上层NAT设备的NAT参数。
14.根据权利要求12所述的远端服务器,其特征在于,所述优选模块优选邻居NAT设备的方式进一步包括:
在所述WAN接口配置公网IP地址的NAT设备、以及非对称型NAT设备后面的NAT设备中,选择系统资源空闲的NAT设备作为邻居NAT设备。
15.一种NAT设备,其特征在于,所述NAT设备包括:地址获取模块、第一判断模块、第二判断模块、测试模块和调整模块;其中,
所述地址获取模块,用于当所述NAT设备接入多层NAT网络后,从WAN接口获取IP地址;
所述第一判断模块,用于判断所述IP地址是否为私网IP地址,如果是,则通知第二判断模块进行判断;
所述第二判断模块,用于在接收到第一判断模块的通知后,判断上层NAT设备是否发送携带该上层NAT设备的NAT参数的NAT Seed,如果是,则通知所述调整模块采用所述上层NAT设备的NAT参数对本端NAT设备的NAT参数进行调整;如果否,则通知所述测试模块测试上层NAT设备NAT参数;
所述测试模块,用于在接收到第二判断模块的通知后,向远端服务器发送参数测试请求,接收远端服务器反馈的邻居NAT设备信息,与所述邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数,通知所述调整模块采用所述上层NAT设备的NAT参数对所述NAT设备的NAT参数进行调整;
所述调整模块,用于在接收到第二判断模块或测试模块的通知后,采用上层NAT设备的NAT参数对所述NAT设备的NAT参数进行调整。
16.根据权利要求15所述的NAT设备,其特征在于,所述NAT参数为NAT转换模式;所述测试模块与邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数的方式为:
测试模块向第一邻居NAT设备发送UDP请求报文,以使第一邻居NAT设备通知第二邻居NAT设备,要求第二邻居NAT设备向测试模块发送UDP应答报文;测试模块接收到所述第二邻居NAT设备发送的UDP应答报文时,则判定上层NAT设备的NAT转换模式为Full Cone NAT模式;或者,
测试模块向第一邻居NAT设备发送UDP请求报文,要求第一邻居NAT设备返回该UDP请求报文的源端口和IP地址;测试模块向第二邻居NAT设备的发送UDP请求报文,要求第二邻居NAT设备返回该UDP请求报文的源端口和IP地址;测试模块比较上述两个UDP请求报文的源端口和IP地址是否相同,如果相同,则判定上层NAT设备的NAT转换模式为Symmetric NAT模式;或者,
测试模块向第一邻居NAT设备的监听端口Port a发送UDP请求报文,要求第一邻居NAT设备使用一个不同于Port a的端口发送UDP应答报文;所述测试模块无法接收到所述第一邻居NAT设备发送的UDP应答报文时,则判定上层NAT设备的NAT转换模式为Port Restricted Cone NAT模式;所述测试模块能够接收到所述第一邻居NAT设备发送的UDP应答报文时,则判定上层NAT设备的NAT转换模式为Restricted Cone NAT模式。
17.根据权利要求15所述的NAT设备,其特征在于,所述NAT参数为源端口选择策略;所述测试模块与邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数的方式为:
测试模块向邻居NAT设备发送报文,记录发送所述报文的端口标识;所述报文指示邻居NAT设备记录所述报文的源端口标识,并将所述源端口标识发送至测试模块;
测试模块判断自身保存的端口标识与来自邻居NAT设备的源端口标识是否相同,如果相同,则判定所述上层NAT设备的源端口选择策略为选择原端口型;如果不相同,则判定所述上层NAT设备的源端口选择策略为递增或随机选择型。
18.根据权利要求17所述的NAT设备,其特征在于,所述NAT参数进一步包括NAT老化时间;测试模块判定上层NAT设备的源端口选择策略为递增或随机选择型时,则与邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数的方式为:
测试模块通过一个端口向邻居NAT设备发送TCP SYN报文,邻居NAT设备记录所述TCP SYN报文的源端口标识X,将X发送至测试模块;测试模块立即向所述邻居NAT设备发送TCP FIN报文;测试模块等待预先设定的基准时间后,通过所述端口向邻居NAT设备发送TCP SYN报文,邻居NAT设备记录所述TCP SYN报文的源端口标识X1,将X1发送至测试模块;测试模块判断所述X与X1是否相同,如果不同,则判定所述上层NAT设备的NAT老化时间等于所述NAT设备的累计等待时间;如果相同,则所述测试模块等待预先设定的累加时间,继续向邻居NAT设备发送TCP SYN报文,直至判定出上层NAT设备的NAT老化时间。
19.根据权利要求17所述的NAT设备,其特征在于,所述NAT参数进一步包括NAT老化时间;所述测试模块与邻居NAT设备进行NAT参数测试,获取所述上层NAT设备的NAT参数的方式为:
测试模块通过一个端口向邻居NAT设备发送第一TCP SYN报文,记录所述第一TCP SYN报文的ISN;测试模块立即向所述邻居NAT设备发送TCP FIN报文;测试模块等待预先设定的基准时间后,以预先设定的累加时间为周期,周期性地向邻居NAT设备发送第二TCP SYN报文,所述各个第二TCP SYN报文中的ISN各不相同,并且均小于第一TCP SYN报文的ISN;测试模块还记录各个第二TCP SYN报文中的ISN与发送该第二TCP SYN报文时的累计等待时间的对应关系;邻居NAT设备收到第二TCP SYN报文后,记录该第二TCP SYN报文中的ISN,将该ISN反馈至测试模块;测试模块接收所述邻居NAT设备反馈的ISN,停止发送所述第二TCP SYN报文,根据记录的所述对应关系查找该ISN对应的累计等待时间,判定所述上层NAT设备的NAT老化时间等于所述累计等待时间。
20.根据权利要求15或16所述的NAT设备,其特征在于,所述调整模块调整所述NAT设备的NAT参数的方式为:
所述调整模块将所述NAT设备的NAT转换模式调整为与所述上层NAT设备的NAT转换模式相同。
21.根据权利要求15或17所述的NAT设备,其特征在于,所述调整模块调整所述NAT设备的NAT参数的方式为:
所述调整模块将所述NAT设备的源端口选择策略调整为与所述上层NAT设备的源端口选择策略相反。
22.根据权利要求15、18或19所述的NAT设备,其特征在于,所述调整模块调整所述NAT设备的NAT参数的方式为:
所述调整模块将所述NAT设备的NAT老化时间调整为大于或等于所述上层NAT设备的NAT老化时间。
CN201010221114.0A 2010-06-28 2010-06-28 自适应多层nat环境的nat设备调整方法和系统 Active CN102299975B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010221114.0A CN102299975B (zh) 2010-06-28 2010-06-28 自适应多层nat环境的nat设备调整方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010221114.0A CN102299975B (zh) 2010-06-28 2010-06-28 自适应多层nat环境的nat设备调整方法和系统

Publications (2)

Publication Number Publication Date
CN102299975A CN102299975A (zh) 2011-12-28
CN102299975B true CN102299975B (zh) 2014-02-26

Family

ID=45360145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010221114.0A Active CN102299975B (zh) 2010-06-28 2010-06-28 自适应多层nat环境的nat设备调整方法和系统

Country Status (1)

Country Link
CN (1) CN102299975B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105450791A (zh) * 2015-12-07 2016-03-30 北京汉柏科技有限公司 一种基于nat的地址转换方法和系统
CN105939404B (zh) * 2016-05-04 2019-02-19 杭州迪普科技股份有限公司 Nat资源的获取方法及装置
CN109361562B (zh) * 2018-10-31 2020-10-30 广东电网有限责任公司信息中心 一种基于关联网络设备接入的自动化测试方法
CN115348207B (zh) * 2022-07-21 2023-08-15 佛山职业技术学院 一种基于udp的主备nat设备流表同步方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101018201A (zh) * 2007-01-17 2007-08-15 黄从来 一种p2p流媒体直播技术的平行扩展方法
CN101374141A (zh) * 2007-08-23 2009-02-25 浙江省电信有限公司 一种基于pcp协议的tcp nat穿越方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656017B2 (en) * 2007-05-16 2014-02-18 Microsoft Corporation Peer-to-peer collaboration system with edge routing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101018201A (zh) * 2007-01-17 2007-08-15 黄从来 一种p2p流媒体直播技术的平行扩展方法
CN101374141A (zh) * 2007-08-23 2009-02-25 浙江省电信有限公司 一种基于pcp协议的tcp nat穿越方法

Also Published As

Publication number Publication date
CN102299975A (zh) 2011-12-28

Similar Documents

Publication Publication Date Title
CN104202266B (zh) 一种通信方法、交换机、控制器及通信系统
DE602006000007T2 (de) Automatische Erkennung von Pseudo-Wire Peer-Adressen in Ethernet-basierten Netzen
CN101217482B (zh) 一种穿越nat下发策略的方法和一种通信装置
CN105554179B (zh) 局域网内dns解析方法、系统
CN102299975B (zh) 自适应多层nat环境的nat设备调整方法和系统
CN103873826B (zh) 媒体流发送控制方法及装置
CN105281951B (zh) Vsu系统中双主用设备冲突检测方法及网络设备
CN103763407A (zh) 二层虚拟局域网实现地址解析协议代理方法及局域网系统
CN101771732B (zh) 报文处理方法、装置和网络设备
CN106357542B (zh) 提供组播业务的方法和软件定义网络控制器
DE102011114272B4 (de) Paketweiterleitungsfunktion eines Mobilitätsswitchs, der als Routed-SMLT-(RSMLT-)Knoten eingesetzt wird
KR101908532B1 (ko) 산업 자동화 시스템의 모듈식 제어 디바이스를 구성하는 방법, 및 모듈식 제어 디바이스
CN104158686A (zh) 一种配置管理方法和系统
CN102571814B (zh) 一种ip监控系统中穿越隔离设备的方法及代理设备
CN108234217A (zh) 组网设备自动配置方法、电子设备及存储介质
CN103812957B (zh) 地址解析协议arp记录管理方法和装置
CN104468306A (zh) 一种vxlan网络中的报文传输方法和设备
CN102420748A (zh) 防止arp报文攻击的方法和路由设备
CN106850281A (zh) 网络设备管理方法
CN102244620A (zh) 一种确定网关与设备关联关系的方法和系统
EP3142334B1 (de) Verfahren zum betrieb von kommunikationsgeräten innerhalb eines industriellen automatisierungssystems
CN103873335B (zh) 终端设备的拨号方法和接入设备
CN104363312A (zh) 一种简洁高效的nat打洞方法和装置
CN104468467A (zh) 一种dhcp报文转发方法和设备
CN101383727B (zh) 路由器维护方法和路由器

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.