一种多NAT网关流量转发的方法和设备转让专利

申请号 : CN201110201909.X

文献号 : CN102355479A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘雄威

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种多NAT网关流量转发的方法和设备,该方法包括:当第一网关设备接收到来自内网应用服务器的第一数据时,所述第一网关设备通过所述第一数据中携带的地址信息查询所述NAT同步会话表;如果通过所述NAT同步会话表获知应由第二网关设备向所述公网设备发送所述第一数据,所述第一网关设备将所述第一数据发送给所述第二网关设备,所述第二网关设备向所述公网设备发送所述第一数据。本发明中,可保证NAT映射数据的转发路径一致。

权利要求 :

1.一种多网络地址转换NAT网关流量转发的方法,其特征在于,所述多NAT网关中的各网关设备上维护有NAT同步会话表,该方法包括以下步骤:当所述多NAT网关中的第一网关设备接收到来自内网应用服务器的第一数据时,所述第一网关设备通过所述第一数据中携带的地址信息查询所述NAT同步会话表;

如果通过所述NAT同步会话表获知应由所述多NAT网关中的第二网关设备向公网设备发送所述第一数据,所述第一网关设备将所述第一数据发送给所述第二网关设备,由所述第二网关设备向所述公网设备发送所述第一数据。

2.如权利要求1所述的方法,其特征在于,所述多NAT网关中的第一网关设备接收到来自内网应用服务器的第一数据,之前还包括:所述第二网关设备接收到来自所述公网设备的第二数据,所述第二网关设备将所述第二数据的目的地址信息映射为应用服务器的地址信息;所述第一数据为所述第二数据的响应;

所述第二网关设备通过所述第二数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;

如果所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录,所述第二网关设备将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第二网关设备的信息添加到所述NAT同步会话表;

所述第二网关设备将所述NAT同步会话表更新的信息发送给所述第一网关设备;所述第一网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第二网关设备的信息。

3.如权利要求2所述的方法,其特征在于,地址信息包括IP地址和端口、第二网关设备的信息包括第二网关设备的IP地址;

在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;在所述第一网关设备查询所述NAT同步会话表时,通过所述第一数据中携带的源IP地址和源端口查询应用服务器的IP地址和端口,通过所述第一数据中携带的目的IP地址和目的端口查询公网设备的IP地址和端口;或者,在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中;在所述第一网关设备查询所述NAT同步会话表时,通过所述第一数据中携带的源IP地址和源端口、目的IP地址和目的端口、以及协议号获得HASH值,并通过该HASH值查询所述NAT同步会话表。

4.如权利要求2所述的方法,其特征在于,所述第二网关设备将所述NAT同步会话表更新的信息发送给所述第一网关设备,具体包括:所述第二网关设备与所述第一网关设备建立传输控制协议TCP连接,并当所述第二网关设备与所述第一网关设备之间需要协商的同步连接参数相同时,所述第二网关设备将所述NAT同步会话表更新的信息发送给所述第一网关设备。

5.如权利要求4所述的方法,其特征在于,所述方法还包括:

当所述第一网关设备与所述第二网关设备之间的TCP连接断开后,所述第一网关设备删除所述NAT同步会话表中记录的由所述第二网关设备向所述公网设备转发数据的表项。

6.如权利要求4所述的方法,其特征在于,所述方法还包括:

当所述第一网关设备在指定时间内没有接收到所述第二网关设备的报文时,所述第一网关设备向所述第二网关设备发送用于检测存活状态的Keepalive报文,如果指定次数内没有接收到所述第二网关设备返回的响应报文,所述第一网关设备删除所述NAT同步会话表中记录的由所述第二网关设备向所述公网设备转发数据的表项。

7.如权利要求1-6任一项所述的方法,其特征在于,所述多NAT网关之间运行虚拟路由冗余协议VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。

8.一种路由转发设备,其特征在于,所述路由转发设备可用于多NAT网关中,且作为多NAT网关中的第一网关设备,所述多NAT网关中的各网关设备上维护有NAT同步会话表,所述路由转发设备包括:接收模块,用于接收来自内网应用服务器的数据;

处理模块,用于通过所述数据中携带的地址信息查询所述NAT同步会话表;

发送模块,用于当通过所述NAT同步会话表获知应由所述多NAT网关中的第二网关设备向公网设备发送所述数据时,将所述数据发送给所述第二网关设备,由所述第二网关设备向所述公网设备发送所述数据。

9.如权利要求8所述的路由转发设备,其特征在于,

所述接收模块,还用于接收来自所述公网设备的数据;

所述处理模块,还用于将所述数据的目的地址信息映射为应用服务器的地址信息;通过所述数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;当所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录时,将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为第一网关设备的信息添加到所述NAT同步会话表;

所述发送模块,还用于将所述NAT同步会话表更新的信息发送给第二网关设备;由第二网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第一网关设备的信息。

10.如权利要求9所述的路由转发设备,其特征在于,地址信息包括IP地址和端口、第一网关设备的信息包括第一网关设备的IP地址;

在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;在所述第一网关设备查询所述NAT同步会话表时,通过数据中携带的源IP地址和源端口查询应用服务器的IP地址和端口,通过数据中携带的目的IP地址和目的端口查询公网设备的IP地址和端口;或者,在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中;在所述第一网关设备查询所述NAT同步会话表时,通过数据中携带的源IP地址和源端口、目的IP地址和目的端口、以及协议号获得HASH值,并通过该HASH值查询所述NAT同步会话表。

11.如权利要求8-10任一项所述的路由转发设备,其特征在于,所述多NAT网关之间运行VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。

12.一种路由转发设备,其特征在于,所述路由转发设备可用于多NAT网关中,且作为多NAT网关中的第二网关设备,所述多NAT网关中的各网关设备上维护有NAT同步会话表,所述路由转发设备包括:接收模块,用于接收来自公网设备的数据;

处理模块,用于将所述数据的目的地址信息映射为应用服务器的地址信息;通过所述数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;当所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录时,将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为第二网关设备的信息添加到所述NAT同步会话表;

发送模块,用于将所述NAT同步会话表更新的信息发送给第一网关设备;

由所述第一网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第二网关设备的信息。

13.如权利要求12所述的路由转发设备,其特征在于,地址信息包括IP地址和端口、第一网关设备的信息包括第一网关设备的IP地址;

在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;或者,在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中。

14.如权利要求12所述的路由转发设备,其特征在于,

所述发送模块,具体用于与所述第一网关设备建立TCP连接,并当所述第二网关设备与所述第一网关设备之间需要协商的同步连接参数相同时,将所述NAT同步会话表更新的信息发送给所述第一网关设备。

15.如权利要求12-14任一项所述的路由转发设备,其特征在于,所述多NAT网关之间运行VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。

说明书 :

一种多NAT网关流量转发的方法和设备

技术领域

[0001] 本发明涉及通信技术领域,特别是涉及一种多NAT网关流量转发的方法和设备。

背景技术

[0002] 由于实际网络中公网地址资源有限,网关设备通常使用NAT(Network Address Translation,网络地址转换)功能来实现内网对Internet的访问,NAT是将IP数据报文头中的IP地址转换为另一个IP地址的过程,即NAT将数据中的私网地址转换为公网地址,以实现私有网络访问公共网络,且NAT通过使用少量的公网地址表示较多的私网地址,从而可减缓可用地址空间的枯竭。
[0003] 现有技术中,当企业内网部署了应用服务器,且应用服务器对公网设备开放时,通过在网关设备的WAN(Wide Area Network,广域网)接口上配置NAT映射功能,可以将外部地址和端口映射到应用服务器的私有地址和端口上,从而使公网设备通过访问网关设备的公网地址和端口,访问应用服务器。
[0004] 在实际组网中,如果安装多台网关设备,为了提高网络的可靠性,则可以在多台网关设备之间运行VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议),并且在每个网关设备上配置NAT映射功能以实现公网设备对应用服务器的访问。
[0005] 如图1所示的多台网关设备之间运行VRRP的组网示意图,各网关设备配置NAT映射功能,当公网设备(202.101.1.182)访问WAN接口(201.101.3.50)时,备设备会将目的地址由201.101.3.50修改为私有地址(192.168.1.100),并将相应的端口修改为应用服务器的端口,从而将来自公网设备的数据发送给应用服务器,实现公网设备对应用服务器的访问。
[0006] 但是,由于上述公网设备访问的公网地址(201.101.3.50)不是主设备地址(212.1.1.2),在应用服务器返回响应数据时,响应数据的目的地址为VRRP的虚地址(192.168.1.10),即应用服务器返回的响应数据会发送到主设备上,并由主设备发送给公网设备,且该数据的源地址将转换为主设备的公网地址,因此会出现数据进入的地址(201.101.3.50)和返回的地址(212.1.1.2)不一致的情况,并导致用户业务应用出现问题。
[0007] 为了解决上述问题,还可以在网关设备连接内网的接口启用NAT功能,在将数据发送给应用服务器之前,将公网设备访问数据的源地址转换为网关设备的接口地址(192.168.1.2),使得应用服务器在返回数据时,将数据返回给指定网关设备(备设备)。因此网关设备可通过进行两次NAT转换,保证接收数据和发送数据的路径一致。但是,这种情况下应用服务器无法识别公网设备的真实地址,导致一些安全策略和日志无法生效。

发明内容

[0008] 本发明提供一种多NAT网关流量转发的方法和设备,以保持NAT映射数据的转发路径一致。
[0009] 为了达到上述目的,本发明提供一种多网络地址转换NAT网关流量转发的方法,所述多NAT网关中的各网关设备上维护有NAT同步会话表,该方法包括以下步骤:
[0010] 当所述多NAT网关中的第一网关设备接收到来自内网应用服务器的第一数据时,所述第一网关设备通过所述第一数据中携带的地址信息查询所述NAT同步会话表;
[0011] 如果通过所述NAT同步会话表获知应由所述多NAT网关中的第二网关设备向公网设备发送所述第一数据,所述第一网关设备将所述第一数据发送给所述第二网关设备,由所述第二网关设备向所述公网设备发送所述第一数据。
[0012] 所述多NAT网关中的第一网关设备接收到来自内网应用服务器的第一数据,之前还包括:
[0013] 所述第二网关设备接收到来自所述公网设备的第二数据,所述第二网关设备将所述第二数据的目的地址信息映射为应用服务器的地址信息;所述第一数据为所述第二数据的响应;
[0014] 所述第二网关设备通过所述第二数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;
[0015] 如果所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录,所述第二网关设备将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第二网关设备的信息添加到所述NAT同步会话表;
[0016] 所述第二网关设备将所述NAT同步会话表更新的信息发送给所述第一网关设备;所述第一网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第二网关设备的信息。
[0017] 地址信息包括IP地址和端口、第二网关设备的信息包括第二网关设备的IP地址;
[0018] 在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;在所述第一网关设备查询所述NAT同步会话表时,通过所述第一数据中携带的源IP地址和源端口查询应用服务器的IP地址和端口,通过所述第一数据中携带的目的IP地址和目的端口查询公网设备的IP地址和端口;或者,
[0019] 在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中;在所述第一网关设备查询所述NAT同步会话表时,通过所述第一数据中携带的源IP地址和源端口、目的IP地址和目的端口、以及协议号获得HASH值,并通过该HASH值查询所述NAT同步会话表。
[0020] 所述第二网关设备将所述NAT同步会话表更新的信息发送给所述第一网关设备,具体包括:
[0021] 所述第二网关设备与所述第一网关设备建立传输控制协议TCP连接,并当所述第二网关设备与所述第一网关设备之间需要协商的同步连接参数相同时,所述第二网关设备将所述NAT同步会话表更新的信息发送给所述第一网关设备。
[0022] 所述方法还包括:当所述第一网关设备与所述第二网关设备之间的TCP连接断开后,所述第一网关设备删除所述NAT同步会话表中记录的由所述第二网关设备向所述公网设备转发数据的表项。
[0023] 所述方法还包括:当所述第一网关设备在指定时间内没有接收到所述第二网关设备的报文时,所述第一网关设备向所述第二网关设备发送用于检测存活状态的Keepalive报文,如果指定次数内没有接收到所述第二网关设备返回的响应报文,所述第一网关设备删除所述NAT同步会话表中记录的由所述第二网关设备向所述公网设备转发数据的表项。
[0024] 所述多NAT网关之间运行虚拟路由冗余协议VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。
[0025] 一种路由转发设备,所述路由转发设备可用于多NAT网关中,且作为多NAT网关中的第一网关设备,所述多NAT网关中的各网关设备上维护有NAT同步会话表,所述路由转发设备包括:
[0026] 接收模块,用于接收来自内网应用服务器的数据;
[0027] 处理模块,用于通过所述数据中携带的地址信息查询所述NAT同步会话表;
[0028] 发送模块,用于当通过所述NAT同步会话表获知应由所述多NAT网关中的第二网关设备向公网设备发送所述数据时,将所述数据发送给所述第二网关设备,由所述第二网关设备向所述公网设备发送所述数据。
[0029] 所述接收模块,还用于接收来自所述公网设备的数据;
[0030] 所述处理模块,还用于将所述数据的目的地址信息映射为应用服务器的地址信息;通过所述数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;当所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录时,将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为第一网关设备的信息添加到所述NAT同步会话表;
[0031] 所述发送模块,还用于将所述NAT同步会话表更新的信息发送给第二网关设备;由第二网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第一网关设备的信息。
[0032] 地址信息包括IP地址和端口、第一网关设备的信息包括第一网关设备的IP地址;
[0033] 在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;在所述第一网关设备查询所述NAT同步会话表时,通过数据中携带的源IP地址和源端口查询应用服务器的IP地址和端口,通过数据中携带的目的IP地址和目的端口查询公网设备的IP地址和端口;或者,
[0034] 在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中;在所述第一网关设备查询所述NAT同步会话表时,通过数据中携带的源IP地址和源端口、目的IP地址和目的端口、以及协议号获得HASH值,并通过该HASH值查询所述NAT同步会话表。
[0035] 所述多NAT网关之间运行VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。
[0036] 一种路由转发设备,所述路由转发设备可用于多NAT网关中,且作为多NAT网关中的第二网关设备,所述多NAT网关中的各网关设备上维护有NAT同步会话表,所述路由转发设备包括:
[0037] 接收模块,用于接收来自公网设备的数据;
[0038] 处理模块,用于将所述数据的目的地址信息映射为应用服务器的地址信息;通过所述数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;当所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录时,将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为第二网关设备的信息添加到所述NAT同步会话表;
[0039] 发送模块,用于将所述NAT同步会话表更新的信息发送给第一网关设备;
[0040] 由所述第一网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第二网关设备的信息。
[0041] 地址信息包括IP地址和端口、第一网关设备的信息包括第一网关设备的IP地址;
[0042] 在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;或者,在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中。
[0043] 所述发送模块,具体用于与所述第一网关设备建立TCP连接,并当所述第二网关设备与所述第一网关设备之间需要协商的同步连接参数相同时,将所述NAT同步会话表更新的信息发送给所述第一网关设备。
[0044] 所述多NAT网关之间运行VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。
[0045] 与现有技术相比,本发明至少具有以下优点:
[0046] 通过在各网关设备上维护NAT同步会话表,可以获知需要由哪个网关设备向公网设备发送数据,以使得多台网关设备同时配置NAT映射功能时,保证NAT映射数据的转发路径一致(即接收和发送数据路径一致);而且不需要修改公网设备访问流量的源地址,应用服务器可以根据公网设备的真实源IP地址实施安全策略和日志。

附图说明

[0047] 图1是现有技术中多台网关设备之间运行VRRP的组网示意图;
[0048] 图2是本发明提供的一种多NAT网关流量转发的方法流程图;
[0049] 图3-图8是本发明中报文交互过程以及报文格式示意图;
[0050] 图9是本发明提出的一种路由转发设备的结构图;
[0051] 图10是本发明提出的另一种路由转发设备的结构图。

具体实施方式

[0052] 以图1为本发明参考网络模型示意图,本发明提出一种多NAT网关流量转发的方法,该方法应用于包括公网设备(如需要访问应用服务器的用户设备)、位于内网的应用服务器、多个网关设备(即多NAT网关)的系统中,以多个网关设备之间启用VRRP,且VRRP的虚地址为应用服务器的默认网关为例进行说明;实际应用中并不局限于上述VRRP的组网,针对存在多出口的网关设备,导致接收数据和发送数据的路径不一致的问题,均可采用本发明提供的技术方案以解决该问题。
[0053] 如图2所示,该多NAT网关流量转发的方法包括以下步骤:
[0054] 步骤201,第二网关设备接收来自公网设备的第二数据。第二数据的源IP地址和源端口为公网设备的IP地址和端口;第二数据的目的IP地址和目的端口为第二网关设备的IP地址和端口。
[0055] 本发明中,需要解决接收数据和发送数据路径不一致的问题,以VRRP的组网为例,当VRRP的备设备接收到公网设备数据,VRRP的主设备接收到应用服务器数据时,会出现接收数据和发送数据路径不一致的问题,因此,为了区分方便,接收到公网设备数据的VRRP的备设备为第二网关设备,接收到的公网设备的数据为第二数据;接收到应用服务器数据的VRRP的主设备为第一网关设备,接收到的应用服务器的数据为第一数据。
[0056] 步骤202,第二网关设备将第二数据的目的IP地址和目的端口映射为应用服务器的IP地址和端口。
[0057] 在为各网关设备配置了NAT映射功能后,当第二网关设备通过自身的WAN口接收到第二数据时,该第二网关设备需要将第二数据的目的IP地址和目的端口映射为应用服务器的IP地址和端口,从而可以将第二数据发送给应用服务器。
[0058] 步骤203,第二网关设备通过第二数据中携带的源地址信息和目的地址信息查询NAT同步会话表。该源地址信息为公网设备的IP地址和端口,该目的地址信息为应用服务器的IP地址和端口。
[0059] 为了保持NAT映射数据的转发路径一致,本发明中,需要在多NAT网关中的各网关设备上维护相同的NAT同步会话表;实际应用中,由于四元组(源IP地址、源端口、目的IP地址和目的端口)可以唯一确定向公网设备发送数据的网关设备,因此NAT同步会话表中可以记录公网设备的地址信息(公网设备的IP地址和端口)、应用服务器的地址信息(应用服务器的IP地址和端口)、以及收到公网设备数据的网关设备的信息(如网关设备的接口IP地址)。
[0060] 需要注意的是,为了保持NAT映射数据的转发路径一致,则收到公网设备数据的网关设备即为需要向公网设备发送响应数据的网关设备。
[0061] 优选的,为了更加方便的获知向公网设备发送数据的网关设备,NAT同步会话表中还可以记录公网设备的地址信息、应用服务器的地址信息、数据的协议号、HASH值、TTL(Time To Live,生存时间)、以及收到公网设备数据的网关设备的信息。如表1所示的优选的NAT同步会话表。
[0062] 表1
[0063]Hash Protocol SIP Sport DIP DPort TTL Forward IP[0064] 在表1中,Protocol为数据的协议号,SIP为数据的源IP地址(即公网设备的IP地址),SPort为数据的源端口(即公网设备的端口),DIP为数据的目的IP地址(该目的IP地址为数据进行NAT映射后的IP地址,即应用服务器的IP地址),DPort为数据的目的端口(即应用服务器的端口),TTL为相应表项的超时时间,Hash为根据Protocol、SIP、Sport、DIP、DPort计算出的Hash值,Forward IP为向公网设备发送数据的网关设备的IP地址。
[0065] 实际应用中,NAT同步会话表并不局限于上述两种表示方式,可以唯一确定收到公网设备数据的网关设备的方式均在本发明保护范围之内,例如,NAT同步会话表中可以记录公网设备的IP地址、应用服务器的IP地址、以及收到公网设备数据的网关设备的IP地址,本发明中不再详加赘述。
[0066] 本步骤中,在各网关设备上维护了NAT同步会话表后,第二网关设备可通过第二数据中携带的地址信息(源IP地址和源端口、进行NAT映射后的目的IP地址和目的端口)查询NAT同步会话表。
[0067] 如果NAT同步会话表中有源IP地址和源端口、目的IP地址和目的端口对应的记录,第二网关设备按照现有流程(如执行QoS处理,路由转发处理,Firewall处理等)将第二数据发送给应用服务器。如果NAT同步会话表中没有源IP地址和源端口、目的IP地址和目的端口对应的记录,执行步骤204。
[0068] 步骤204,第二网关设备将第二数据中携带的源地址信息(即公网设备的地址信息)、目的地址信息(即应用服务器的地址信息)、收到公网设备数据的网关设备为第二网关设备的信息(即第二网关设备的IP地址)添加到NAT同步会话表中。
[0069] 以NAT同步会话表以表1方式维护为例,VRRP的备设备为第二网关设备,如果该第二数据中携带的地址信息为Protocol=6、SIP=202.101.1.182、SPort=10710、DIP=201.101.3.50、DPort=8080;应用服务器的IP地址为192.168.1.100,端口为80;步骤202中将第二数据中的DIP由201.101.3.50映射为192.168.1.100,将第二数据中的DPort由8080映射为80。因此,第二网关设备接收到第二数据所更新后的NAT同步会话表可以如表2所示。
[0070] 表2
[0071]Hash Protocol SIP SPort DIP DPort TTL Forward IP
123456 6 202.101.1.182 10710 192.168.1.100 80 60 192.168.1.2[0072] Hash = HASH(Protocol:SIP:SPort:DIP:DPort),123456 为 举 例 值;TTL =Value(Value为配置的NAT同步会话表的超时时间,单位可以为秒);Forward IP=IPaddress(IPaddress为第二网关设备预先配置的本机接口的IP地址)。
[0073] 步骤205,第二网关设备将NAT同步会话表更新的信息发送给第一网关设备。当NAT同步会话表发生更新后,第二网关设备需要将NAT同步会话表更新的信息发送给其他各网关设备(如第一网关设备)。
[0074] 第一网关设备(其他网关设备的处理与第一网关设备类似)更新自身的NAT同步会话表,在NAT同步会话表中添加第二数据的源地址信息(即公网设备的地址信息)、目的地址信息(即应用服务器的地址信息)、以及收到公网设备数据的网关设备为第二网关设备的信息(即第二网关设备的IP地址)。实际应用中,第二网关设备可以将表2所示的NAT同步会话表发送给第一网关设备,由第一网关设备在自身的NAT同步会话表中添加表2所示的记录。
[0075] 本发明中,第二网关设备将NAT同步会话表更新的信息发送给第一网关设备的过程具体包括:第二网关设备与第一网关设备建立TCP(Transmission Control Protocol,传输控制协议)连接,并当第二网关设备与第一网关设备之间需要协商的同步连接参数相同时,第二网关设备将NAT同步会话表更新的信息发送给第一网关设备。
[0076] 为了实现上述过程,如图3所示,需要在各网关设备上配置同步组,该同步组用于配置需要进行同步的其他网关设备的IP地址(如Forwarding IP)和参数(如Keepalive周期);之后,各网关设备向同步组内的IP地址发起TCP连接(TCP连接可由IP地址较小的网关设备主动发送连接)。
[0077] 在TCP连接建立后,各网关设备向其他网关设备发送OPEN报文,该OPEN报文中携带需要协商的同步连接参数(包括但不限于Version,Keepalive Interval,Keepalive Times,Option字段信息等);如果OPEN报文中需要协商的同步连接参数相同,则网关设备之间的同步连接建立完成;否则断开TCP连接并记录错误日志,等待下次周期时再重新连接。
[0078] 在同步连接建立完成后,当第二网关设备接收到第二数据,并获知NAT同步会话表需要更新,且需要将NAT同步会话表更新的信息发送给第一网关设备时,第二网关设备向第一网关设备发送Update报文,该Update报文用于将NAT同步会话表更新的信息发送给第一网关设备,以保证同步组内所有网关设备的NAT同步会话表保持一致。
[0079] 需要注意的是,各网关设备之间交互报文的格式如图4所示,在图4中,Length:标示信息部分总长度,包含头部分;Type:信息类型字段,1表示Open报文,2表示Update报文,3表示Keepalive报文。
[0080] 上述报文中Open信息的定义格式如图5所示,在图5中,Version:版本信息;Keepalive Interval:Keepalive报文发送间隔;Keepalive Times:Keepalive报文重传发送次数;Forward IP:网关设备本身的接口地址,一般为与其他网关设备直连的接口地址;
Opt Parm Len:可选参数长度。
[0081] 此外,Option字段采用如图6所示的TLV结构,Type:值为1,表示支持的同步表项类型的能力;Length:大于等于3,包括Type和Length字段长度;Value:每个字节代表支持1种同步表项类型的能力。
[0082] 上述报文中Update信息定义格式如图7所示,在图7中,Type:同步信息类型,值为1表示NAT同步会话;Delete Information Length:删除信息长度,0表示没有需要删除的信息;Add Information Length:新增信息长度,0表示没有需要新增加的信息。
[0083] 此外,在值为1表示NAT同步会话时,NAT同步会话信息格式如图8所示,各字段的值分别从NAT映射同步表中读取。
[0084] 上述报文中Keepalive报文的格式不进行特殊定义,只需要包含报文头部分即可。
[0085] 需要说明的是,上述各数值只是为了方便描述的一种示例情况,实际应用中可进行调整,本发明中不再赘述。
[0086] 本发明中,上述步骤201-205是第二网关设备接收来自公网设备的第二数据的处理过程,实际应用中,第一网关设备也会接收到来自公网设备的数据,之后,该第一网关设备将维护NAT同步会话表。
[0087] 具体的,第一网关设备接收来自公网设备的数据,将数据的目的地址信息映射为应用服务器的地址信息,通过数据中携带的源地址信息和目的地址信息查询NAT同步会话表,当NAT同步会话表中没有源地址信息和目的地址信息对应的记录时,将源地址信息、目的地址信息、收到公网设备数据的网关设备为第一网关设备的信息添加到NAT同步会话表;将NAT同步会话表更新的信息发送给第二网关设备;第二网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到公网设备数据的网关设备为第一网关设备的信息。该维护过程与第二网关设备的处理过程类似,在此不再详加赘述。
[0088] 步骤206,第二网关设备将第二数据发送给应用服务器,由应用服务器向第一网关设备发送第一数据(即第二数据的响应),该第一数据的源IP地址和源端口为应用服务器的IP地址和端口、该第一数据的目的IP地址和目的端口为公网设备的IP地址和端口。
[0089] 步骤207,当第一网关设备接收到来自应用服务器的第一数据时,第一网关设备通过第一数据中携带的地址信息查询NAT同步会话表。
[0090] 需要说明的是,由于本发明的处理流程用于解决接收数据和发送数据的路径不一致的问题,因此以第二网关设备接收到来自公网设备的第二数据,并更新对应的NAT同步会话表;第一网关设备接收到来自应用服务器的第一数据为例进行说明。
[0091] 本步骤中,由于各网关设备上维护了NAT同步会话表,第一网关设备可通过第一数据中携带的地址信息(源IP地址和源端口、目的IP地址和目的端口)查询NAT同步会话表。
[0092] 如果NAT同步会话表中没有第一数据中携带的地址信息对应的表项,则第一网关设备按照现有流程(如执行QoS处理,路由转发处理,Firewall处理等)将第一数据发送给公网设备。如果NAT同步会话表中有第一数据中携带的地址信息对应的表项,且查询结果是应由第二网关设备向公网设备发送第一数据,则执行步骤208。
[0093] 在第一网关设备查询NAT同步会话表时,如果NAT同步会话表中记录公网设备的IP地址和端口(在NAT同步会话表中为源IP地址和源端口)、应用服务器的IP地址和端口(在NAT同步会话表中为目的IP地址和目的端口)、收到公网设备数据的网关设备的IP地址,则第一网关设备通过第一数据中携带的源IP地址和源端口查询NAT同步会话表中的目的IP地址和目的端口,并通过目的IP地址和目的端口查询NAT同步会话表中的源IP地址和源端口,以获知收到公网设备数据的网关设备的IP地址;之后利用该IP地址将第一数据发送给对应的网关设备,以及通过该网关设备将第一数据发送给公网设备。
[0094] 在第一网关设备查询NAT同步会话表时,如果NAT同步会话表采用表1的方式记录相关信息,则第一网关设备通过第一数据中携带的源IP地址和源端口、目的IP地址和目的端口、以及协议号获得HASH值,并通过该HASH值查询NAT同步会话表,以获知收到公网设备数据的网关设备的IP地址;之后利用该IP地址将第一数据发送给对应的网关设备,以及通过该网关设备将第一数据发送给公网设备。
[0095] 步骤208,第一网关设备通过NAT同步会话表中记录的第二网关设备的信息(IP地址)将第一数据发送给第二网关设备,由第二网关设备向公网设备发送该第一数据。
[0096] 本发明中,当第一网关设备与第二网关设备之间的TCP连接断开或者Keepalive报文超时后,第一网关设备与第二网关设备之间需要关闭与对端的同步连接;该第一网关设备还需要删除NAT同步会话表中由第二网关设备向公网设备发送数据的记录;该第二网关设备还需要删除NAT同步会话表中由第一网关设备向公网设备发送数据的记录。之后,等待同步连接重新建立后再重新发送本地NAT同步会话表和学习对端NAT同步会话表。
[0097] 当第一网关设备在指定时间(可根据实际经验进行选择)内没有接收到第二网关设备的报文(如Update或者Keepalive报文)时,第一网关设备向第二网关设备发送用于检测存活状态的Keepalive报文,第二网关设备接收到Keepalive报文后需要回复Keepalive报文且对本身的存活计时器清零;第一网关设备接收到第二网关设备回复的Keepalive报文后,需要对存活计时器清零。
[0098] 如果第一网关设备没有接收到第二网关设备回复Keepalive报文,则重新发送指定次数(可根据实际经验进行选择)的Keepalive报文,如果指定次数内均没有接收到第二网关设备返回的响应报文,则认为第二网关设备已Down机,第一网关设备关闭与第二网关设备之间的同步连接;且删除NAT同步会话表中由第二网关设备向公网设备发送数据的记录。之后,等待同步连接重新建立后再重新发送本地NAT同步会话表和学习对端NAT同步会话表。
[0099] 基于与上述方法同样的发明构思,本发明还提出了一种路由转发设备,所述路由转发设备可用于多NAT网关中,且作为多NAT网关中的第一网关设备,所述多NAT网关中的各网关设备上维护有NAT同步会话表,如图9所示,所述路由转发设备包括:接收模块11、处理模块12、发送模块13;
[0100] 所述接收模块11,用于接收来自内网应用服务器的数据;所述处理模块12,用于通过所述数据中携带的地址信息查询所述NAT同步会话表;所述发送模块13,用于当通过所述NAT同步会话表获知应由所述多NAT网关中的第二网关设备向公网设备发送所述数据时,将所述数据发送给所述第二网关设备,由所述第二网关设备向所述公网设备发送所述数据。
[0101] 所述接收模块11,还用于接收来自所述公网设备的数据;所述处理模块12,还用于将所述数据的目的地址信息映射为应用服务器的地址信息;通过所述数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;当所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录时,将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为第一网关设备的信息添加到所述NAT同步会话表;所述发送模块13,还用于将所述NAT同步会话表更新的信息发送给第二网关设备;由第二网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第一网关设备的信息。
[0102] 本发明中,地址信息包括IP地址和端口、第一网关设备的信息包括第一网关设备的IP地址;在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;在所述第一网关设备查询所述NAT同步会话表时,通过数据中携带的源IP地址和源端口查询应用服务器的IP地址和端口,通过数据中携带的目的IP地址和目的端口查询公网设备的IP地址和端口;或者,
[0103] 在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中;在所述第一网关设备查询所述NAT同步会话表时,通过数据中携带的源IP地址和源端口、目的IP地址和目的端口、以及协议号获得HASH值,并通过该HASH值查询所述NAT同步会话表。
[0104] 此外所述处理模块12,还用于当所述第一网关设备与所述第二网关设备之间的TCP连接断开后,删除所述NAT同步会话表中由所述第二网关设备向所述公网设备发送数据的记录。
[0105] 所述处理模块12,还用于当所述第一网关设备在指定时间内没有接收到所述第二网关设备的报文时,向所述第二网关设备发送用于检测存活状态的Keepalive报文,如果指定次数内没有接收到所述第二网关设备返回的响应报文,则删除所述NAT同步会话表中由所述第二网关设备向所述公网设备发送数据的记录。
[0106] 本发明中,所述多NAT网关之间运行VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。
[0107] 其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0108] 基于与上述方法同样的发明构思,本发明还提出了一种路由转发设备,所述路由转发设备可用于多NAT网关中,且作为多NAT网关中的第二网关设备,所述多NAT网关中的各网关设备上维护有NAT同步会话表,如图9所示,所述路由转发设备包括:接收模块21、处理模块22、发送模块23;
[0109] 接收模块21,用于接收来自公网设备的数据;处理模块22,用于将所述数据的目的地址信息映射为应用服务器的地址信息;通过所述数据中携带的源地址信息和目的地址信息查询所述NAT同步会话表;当所述NAT同步会话表中没有所述源地址信息和目的地址信息对应的记录时,将源地址信息、目的地址信息、收到所述公网设备数据的网关设备为第二网关设备的信息添加到所述NAT同步会话表;发送模块23,用于将所述NAT同步会话表更新的信息发送给第一网关设备;由所述第一网关设备在自身的NAT同步会话表中添加源地址信息、目的地址信息、收到所述公网设备数据的网关设备为所述第二网关设备的信息。
[0110] 本发明中,地址信息包括IP地址和端口、第一网关设备的信息包括第一网关设备的IP地址;在NAT同步会话表中添加源地址信息和目的地址信息时,源地址信息为所述公网设备的IP地址和端口,目的地址信息为所述应用服务器的IP地址和端口;或者,在NAT同步会话表中添加源地址信息和目的地址信息时,利用源IP地址和端口、目的IP地址和端口、以及所述第二数据的协议号获得HASH值,并将所述HASH值添加到所述NAT同步会话表中。
[0111] 所述发送模块23,具体用于与所述第一网关设备建立TCP连接,并当所述第二网关设备与所述第一网关设备之间需要协商的同步连接参数相同时,将所述NAT同步会话表更新的信息发送给所述第一网关设备。
[0112] 本发明中,所述多NAT网关之间运行VRRP,且所述第一网关设备为VRRP主设备,所述第二网关设备为VRRP备设备。
[0113] 其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0114] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0115] 本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0116] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0117] 上述本发明序号仅仅为了描述,不代表实施例的优劣。
[0118] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。