CN112087533B - 报文处理方法、装置、设备和存储介质 - Google Patents
报文处理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN112087533B CN112087533B CN202010952900.1A CN202010952900A CN112087533B CN 112087533 B CN112087533 B CN 112087533B CN 202010952900 A CN202010952900 A CN 202010952900A CN 112087533 B CN112087533 B CN 112087533B
- Authority
- CN
- China
- Prior art keywords
- message
- node
- type
- nat
- gateway cluster
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/14—Routing performance; Theoretical aspects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文处理方法、装置、设备和存储介质,包括:将待处理报文划分为第一类报文和第二类报文;将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理;第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。本申请实施例提供的技术方案将报文拆分成了第一类和第二类,针对两类报文,做了不同的转发策略处理,保证了一个SNAT集群在伸缩过程中现有流量不中断,并且集群之间不需要状态同步。
Description
技术领域
本发明实施例涉及集群技术领域,尤其涉及一种报文处理方法、装置、设备和存储介质。
背景技术
SNAT网关集群表示一个具备多节点的、用于处理从内网到公网的主动上行流量的、实现不具备公网地址的内网的多设备访问公网时将数据包源地址SNAT成SNAT网关集群上的公网地址的网关集群。
现有的SNAT网关方案有两种,一种是单节点的SNAT网关集群,但是单节点的SNAT网关无法横向扩容。一种是多节点的有状态同步的SNAT网关集群,但是集群节点之间需要复杂的连接状态的同步。
发明内容
本发明提供一种报文处理方法、装置、设备和存储介质,以实现在缩扩容过程中现有流量不中断,并且集群之间不需要状态同步。
第一方面,本发明实施例提供了一种报文处理方法,包括:
将待处理报文划分为第一类报文和第二类报文;
将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理;
第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。
进一步的,将待处理报文分为第一类报文和第二类报文,包括:
通过传输控制协议/网际协议TCP/IP协议栈的分层模型将待处理报文分为第一类报文和第二类报文。
进一步的,所述NAT网关集群正常运行的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,通过节点将所述第一类报文经过NAT***进行SNAT后,并将第一类报文转发至公网;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果所述第一类报文的目标端口未在节点分配的端口范围内,则通过节点将所述第一类报文经过策略路由***后,按照端口组的划分转发到对应的集群节点。
进一步的,所述NAT网关集群正常运行,或所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理,包括:
在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第二类报文转发至公网;
在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行SNAT后,并将第二类报文转发至公网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点。
进一步的,所述NAT网关集群正常运行的情况下,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理,包括:
在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有目的地址转换DNAT并将所述第二类报文转发至内网;
在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行DNAT后,并将第二类报文转发至内网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点。
进一步的,所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有SNAT并将所述第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果原始节点或保留节点接收到所述第一类报文,通过所述原始节点或保留节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果扩容节点接收到所述第一类报文,通过所述扩容节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果缩容节点接收到所述第一类报文,通过所述缩容节点按照新端口组的划分转发到对应的集群节点。
进一步的,所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有DNAT并将所述第二类报文转发至内网;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口在节点分配端口范围内,且该节点是扩容节点或保留节点,通过该节点按照旧端口分组将所述第一类报文转发到相应节点;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口未在节点分配端口范围内,通过该节点按照新端口分组将所述第一类报文转发到相应节点。
第二方面,本发明实施例还提供了一种报文处理装置,包括:
报文划分模块,用于将待处理报文划分为第一类报文和第二类报文;
第一处理模块,用于将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理;
第二处理模块,用于第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。
第三方面,本发明实施例还提供了一种设备,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本申请实施例中任一所述的报文处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请实施例中任一所述的报文处理方法。
上述实施例提供的报文处理方法、装置、设备和存储介质,包括:将待处理报文划分为第一类报文和第二类报文;将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理;第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。本申请实施例提供的技术方案将报文拆分成了第一类和第二类,针对两类报文,做了不同的转发策略处理,保证了一个SNAT集群在伸缩过程中现有流量不中断,并且集群之间不需要状态同步。
附图说明
图1是三种体系结构的比较图;
图2为本发明实施例提供的报文处理方法的流程图;
图3是本实施例提供的少节点,SNAT-ICMP的示意图;
图4是本实施例提供的少节点,DNAT-ICMP的示意图;
图5是本实施例提供的TCP SNAT/DNAT的示意图;
图6是本实施例提供的多节点,SNAT-ICMP示意图;
图7是本实施例提供的多节点,DNAT-ICMP示意图;
图8是本实施例提供的扩容,SNAT-NATed示意图;
图9是本实施例提供的扩容,SNAT-unNATed示意图;
图10是本实施例提供的扩容,SNAT-unNATed,扩容节点示意图;
图11是本实施例提供的扩容,DNAT-NATed的示意图;
图12是本实施例提供的扩容,DNAT-unNATed-本节点端口,扩容节点的示意图;
图13是本实施例提供的扩容,DNAT-unNATed-非本节点端口,(扩容时的)原始节点的示意图;
图14是本实施例提供的扩容,DNAT-unNATed-非本节点端口,扩容节点的示意图;
图15是本实施例提供的缩容,SNAT-unNATed,(缩容时的)保留节点的示意图;
图16是本实施例提供的缩容,SNAT-unNATed,缩容节点的示意图;
图17是本实施例提供的缩容,DNAT-NATed的示意图;
图18是本实施例提供的缩容,DNAT-unNATed-本节点端口,(缩容时的)保留节点的示意图;
图19是本实施例提供的缩容,DNAT-unNATed-非本节点端口,缩容节点的示意图;
图20为本发明实施例提供的报文处理装置的结构示意图;
图21为本发明实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
首先,将本发明实施例中涉及到的关键词进行简单介绍。
IP网络地址转换协议(Network Address Translation,NAT)原理:对于一个传输层的连接,由五元组来作为唯一标识:源IP、源端口、目地IP、目地端口、协议号。
IP NAT分为源地址转换((Source Network Address Translation,SNAT)和目的地址转换(Destination Network Address Translation,DNAT)两种情况:
SNAT:源地址(还可能包含源端口的)转换。如有两个内网IP 192.168.1.2/24和192.168.1.3/24,通过一个网关8.8.8.8来实现共享上网,当192.168.1.2从30273端口通过网关访问外网114.114.114.114的53端口时,网关会把五元组从(192.168.1.2,30273,114.114.114.114,53,6)转换为(8.8.8.8,30273,114.114.114.114,53,6),再发送到114.114.114.114,即实现源地址转换。以SNAT网关集群为第一视角,SNAT可以认为是上行的网络流量。
DNAT:目地地址(还可能包含目标端口的)转换。同上的例子,当公网客户端(1.2.4.8)需要通过网关8.8.8.8访问192.168.1.2的80端口服务时,网关会将客户端发送的数据包的五元组从(1.2.4.8,30273,8.8.8.8,80,6)转换为(1.2.4.8,30273,192.168.1.2,80,6),再发送到192.168.1.2,即实现目的地址转换。DNAT同样还可能转换目标端口。以SNAT网关集群为第一视角,DNAT可以认为是上行的网络流量。
SNAT网关集群表示一个具备多节点的、用于处理从内网到公网(内网、公网是相对的范围)的主动上行流量的、实现不具备公网地址的内网的多设备访问公网时将数据包源地址SNAT成SNAT网关集群上的公网地址的网关集群。
开放式***互联通信参考模型(Open System Interconnection ReferenceModel,缩写为OSI)分为七个层次:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
TCP/IP参考模型:TCP/IP是Transfer Control Protocol/Internet Protocol的缩写,也即传输控制协议/网际协议。
OSI的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不使用。TCP/IP体系结构则不同,它现在得到了非常广泛的应用。它包含了四个层次:应用层、传输层、网络互连层和主机到网络层。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在讲述时,通常采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构:物理层、数据链路层、网络层、传输层和应用层,三种体系结构的比较如图1所示。
TCP/IP协议栈根据不同层,划分了不同的协议。而当今TCP/IP协议栈的应用如此之广泛,应用层也通常构建于TCP/IP协议栈之上,如互联网上最为常见的HTTP协议、DNS协议、FTP协议等。
传输层端口:端口属于传输层的一部分。当一台计算机提供了多种服务(应用层的应用,如HTTP服务)时,计算机是通过给不同的服务,分配不同的端口号来区分服务的。端口号由一个16bit的整型来表示,端口范围是:0~65535。一个传输层的连接,可以用一个五元组来表示:协议、源IP、目标IP、源端口、目标端口。下述TCP协议头UDP协议头表明了TCP/IP协议栈中,传输层的主要协议TCP、UDP的协议头字段,其中均包含了源端口、目标端口。
连接状态:TCP/IP协议栈的传输层有两种最为常见的协议:TCP和UDP。UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务;TCP是面向连接的、可靠的、基于字节流的传输层通信协议,它能确保接收端接收的网络包是无损坏、无间隔、非冗余和有序的。
UDP协议和其它IP层协议虽然在协议中并未定义连接状态,不过仍然可以通过一定的特征(如协议类型、源IP、目标IP、源端口、目标端口和一定的超时时间等)来定义一些虚连接。因此,本方案讨论的数据流均为可以被定义(虚)连接的数据流。TCP协议头如表1所示,UDP协议头的如表2所示。
表1
表2
横向伸缩:对于一个网络组件,在遇到性能瓶颈时,理论上有两个思路可以用于扩展。
横向伸缩:横向伸表现为网络组件在集群模式运行时,逐步增加集群节点;横向缩表现为网络组件在集群模式运行时,逐步减少集群节点。
纵向伸缩:纵向伸表现为网络组件提升硬件配置,如增加CPU核数、增大可用内存等;纵向缩表现为网络组件降低硬件配置,如减少CPU核数、降低可用内存等。
在一个实施例中,图2为本发明实施例提供的报文处理方法的流程图,本实施例可适用于网关集群对报文进行处理的情况,该方法可以由报文处理装置来执行,所述装置可以通过软和/或硬件的方式来实现。
需要说明的是,本申请的技术方案是基于TCP/IP协议栈的、建立在网络层(TCP/UDP)和传输层(IP)的网络组件的集群的平滑伸缩方案。
如图2所示,本申请实施例提供的报文处理方法主要包括如下步骤:
S11、将待处理报文划分为第一类报文和第二类报文。
其中,将待处理报文分为第一类报文和第二类报文,包括:通过传输控制协议/网际协议TCP/IP协议栈的分层模型将待处理报文分为第一类报文和第二类报文。
具体的,将NAT网关的待处理报文,按照TCP/IP模型,分为两类:第一类报文和第二类报文。
第一类报文是指按照TCP/UDP协议传输的报文,这一类是传输层协议,在相应的协议头里,有传输层端口(包含源端口和目标端口)。
第二类报文是指按照除TCP/UDP协议外的其它所有协议传输的报文。
在本实施例中,将NAT网关集群,划分为固定节点的组合。进一步的,本实施例中将一个NAT网关集群的节点数,定为1、2、4、8四种情况。
TCP/UDP协议头里定义的端口是16位,也即合法的端口范围是0-65535。其中0-1023的端口范围通常为***服务,是***预留端口。因此可用于NAT的端口范围,可以定为1024-65535。本实施例中,将合法的端口范围划分为8组:
PG1:1024–9087;PG2:9088–17151;PG3:17152–25215;PG4:25215–33279;PG5:33280–41343;PG6:41344–49407;PG7:49408–57471;PG8:57472–65535。
S12、将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理。
需要说明的是,NAT***,可以对数据包进行SNAT/DNAT的***;并且在对数据包进行NAT后,会记录NAT的连接状态,已NAT的连接标记为NATed连接,其它连接标记为un-NATed连接。
策略路由***,对于NAT***无法处理的数据包,NAT网关集群会将该数据包交由策略路由***来处理并转发。
其中,所述NAT网关集群正常运行的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,通过节点将所述第一类报文经过NAT***进行SNAT后,并将第一类报文转发至公网;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果所述第一类报文的目标端口未在节点分配的端口范围内,则通过节点将所述第一类报文经过策略路由***后,按照端口组的划分转发到对应的集群节点。
a)当NAT网关集群收到第一类报文是主动上行流量时,按照如下方式进行处理。
i)如果该第一类报文在节点内的NAT***中的连接状态为NATed,则节点保持现有的SNAT并转发至公网。该策略可以避免扩容或缩容时现有连接中断。
ii)如果该第一类报文在节点内的NAT***中的连接状态为un-NATed,则节点将该第一类报文经过NAT***进行SNAT后,转发到公网。
b)当NAT网关集群收到第一类报文是被动下行流量时,按照如下方式进行处理。
i)如果该第一类报文在节点内的NAT***中的连接状态为NATed,则节点保持现有的DNAT并转发回内网。该策略可以避免扩容或缩容时现有连接中断。
ii)如果该第一类报文在节点内的NAT***中的连接状态为un-NATed时,分为以下两种情况:
1)如果该第一类报文的目标端口在分配给该节点的端口范围内,由于本实施例未考虑NATed连接失效的情况,所以该分支不存在。
2)如果该第一类报文的目标端口不在分配给该节点的端口范围内,则节点将该流量经过策略路由***后,会按照端口组的划分,转发到对应的集群节点。
例如:对于第一类协议,在NAT网关集群上的处理策略为:
SNAT(上行):
NATed
保持现有的SNAT并转发到公网,避免现有连接中断。
un-NATed
SNAT后,转发到公网。
DNAT(下行)(NAT网关集群节点收到包后,判断目标端口):
NATed
保持现有的SNAT并转发到公网。避免现有连接中断。
un-NATed
本节点端口:
该分支不存在。
非本节点端口:
根据端口组的划分,转发到相应的集群节点。
其中,所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有SNAT并将所述第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果原始节点或保留节点接收到所述第一类报文,通过所述原始节点或保留节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果扩容节点接收到所述第一类报文,通过所述扩容节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果缩容节点接收到所述第一类报文,通过所述缩容节点按照新端口组的划分转发到对应的集群节点。
其中,所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有DNAT并将所述第二类报文转发至内网;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口在节点分配端口范围内,且该节点是扩容节点或保留节点,通过该节点按照旧端口分组将所述第一类报文转发到相应节点;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口未在节点分配端口范围内,通过该节点按照新端口分组将所述第一类报文转发到相应节点。
具体描述如下:
a)当NAT网关集群收到第一类报文是主动上行流量时,按照如下方式进行处理。
i)如果该第一类报文在节点内的NAT***中的连接状态为NATed,则节点保持现有的SNAT并转发至公网。该策略可以避免扩容或缩容时现有连接中断;
ii)如果该第一类报文在节点内的NAT***中的连接状态为un-NATed,
1)如果是(扩容时的)原始节点或者(缩容时的)保留节点收到,则该节点将该第一类报文经过NAT***进行SNAT后,转发到公网。
2)如果是扩容节点收到,则该节点将该第一类报文经过NAT***进行SNAT后,转发到公网。
3)如果是缩容节点收到,则该节点将该流量按照新的端口分组,转发到相应的节点。此条策略表明缩容中的节点不再对新连接做SNAT。
b)当NAT网关集群收到第一类报文是被动下行流量时,按照如下方式处理:
i)如果该第一类报文在节点内的NAT***中的连接状态为NATed,则节点保持现有的DNAT并转发回内网。该策略可以避免扩容或缩容时现有连接中断。
ii)如果该流量在节点内的NAT***中的连接状态为un-NATed,按照如下方式进行处理。
1)如果该流量的目标端口在分配给该节点的端口范围内,按照如下方式进行处理。
如果该节点是(扩容时的)原始节点,由于本实施例未考虑NATed连接失效的情况,所以该分支不存在。
如果该节点是扩容节点,说明该第一类报文属于扩容前建立的老连接,这时需要按照老的端口分组,转发到相应的节点,避免现有连接中断。
如果该节点是(缩容时的)保留节点,说明该第一类报文属于扩容前建立的老连接,这时需要按照老的端口分组,转发到相应的节点,避免现有连接中断。
如果该节点是缩容节点,既然是缩容时的缩容节点,按照新的分组,该节点就不会再有端口了,所以该分支不存在。
2)如果该流量的目标端口不在分配给该节点的端口范围内,按照如下方式进行处理。
总是按照新的端口分组,转发到相应的节点上。
例如:对于第一类报文,在NAT网关集群上的处理策略为:
SNAT(NAT网关集群节点收到包后,判断该数据包在节点本地记录的连接状态):
NATed:
保持现有的SNAT并转发到公网。避免现有连接中断。
un-NATed:
(扩容时的)原始节点或者(缩容时的)保留节点:按新的端口分组划分,新分配一个目标端口,SNAT出去。
扩容节点:按新的端口分组划分,新分配一个目标端口,SNAT出去。
缩容节点:按新的端口分组划分,转发到相应的NAT网关集群节点。相当于拒绝新的连接。
DNAT(NAT网关集群节点收到包后,判断该数据包在节点本地记录的连接状态):
NATed:保持现有的DNAT并转发回内网。避免现有连接中断。
un-NATed(按最新的端口分组来确定是否本节点端口):
本节点端口:
(扩容时的)原始节点:该分支不存在。(既然是扩容时的原始节点,属于本节点端口的连接,一定是NATed状态)
扩容节点:说明是老的连接,按老的分组,转发到相应节点。避免现有连接中断。
(缩容时的)保留节点:说明是老的连接,按老的分组,转发到相应节点。避免现有连接中断。
缩容节点:该分支不存在。(既然是缩容时的缩容节点,按照新的分组,该节点就不会再有端口了)
非本节点端口:
(扩容时的)原始节点:按新的分组,转发到相应节点。
扩容节点:按新的分组,转发到相应节点。
(缩容时的)保留节点:按新的分组,转发到相应节点。
缩容节点:按新的分组,转发到相应节点。
S13、第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。
其中,所述NAT网关集群正常运行,或所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理,包括:在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第二类报文转发至公网;在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行SNAT后,并将第二类报文转发至公网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点。
其中,所述NAT网关集群正常运行,或所述NAT网关集群处于扩容或缩的情况下,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理,包括:在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有目的地址转换DNAT并将所述第二类报文转发至内网;在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行DNAT后,并将第二类报文转发至内网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点。
具体的,集群正常运行时,工作流程如下:
1.对于第二类报文,在NAT网关集群上的处理策略为:
SNAT(上行):
NATed:
保持现有的SNAT并转发到公网。避免现有连接中断。
un-NATed:
节点1:SNAT后,转发到公网。
其它节点:转发给节点1。
DNAT(下行):
NATed:保持现有的SNAT并转发到公网。避免现有连接中断。
un-NATed:
节点1:DNAT后,转发回内网。
其它节点:转发给节点1。
详细描述如下:
a)当NAT网关集群收到第二类报文是主动上行流量时,按照如下方式进行处理。
i)如果该第二类报文在节点内的NAT***中的连接状态为NATed,则节点保持现有的SNAT并转发至公网。该策略可以避免扩容或缩容时现有连接中断;
ii)如果该第二类报文在节点内的NAT***中的连接状态为un-NATed,按照如下方式进行处理。
1)如果是节点1收到,则节点1将该第二类报文经过NAT***进行SNAT后,转发到公网。
2)如果是节点1外的其它节点收到,则其它节点将该第二类报文经过NAT***策略路由***后,转发给节点1。
b)当NAT网关集群收到第二类协议的被动下行流量时,按照如下方式进行处理。
i)如果该第二类报文在节点内的NAT***中的连接状态为NATed,则节点保持现有的DNAT并转发回内网。该策略可以避免扩容或缩容时现有连接中断;
ii)如果该第二类报文在节点内的NAT***中的连接状态为un-NATed:
1)如果是节点1收到,则节点1将该第二类报文经过NAT***进行DNAT后,转发回内网;
2)如果是节点1外的其它节点收到,则其它节点将该第二类报文经过NAT***策略路由***后,转发回节点1。
具体的,集群处于扩容或缩容时,工作流程如下:
1.对于第二类报文,在NAT网关集群上的处理策略为:
SNAT:
NATed:保持现有的SNAT并转发到公网。避免现有连接中断。
un-NATed
节点1:SNAT后,转发到公网。
其它节点:转发给节点1。
DNAT:
NATed:保持现有的SNAT并转发到公网。避免现有连接中断。
un-NATed:
节点1:DNAT后,转发回内网。
其它节点:转发给节点1。
详细描述如下:
a)当NAT网关集群收到第二类报文协议的主动上行流量时,
i)如果该流量在节点内的NAT***中的连接状态为NATed,则节点保持现有的SNAT并转发至公网。该策略可以避免扩容或缩容时现有连接中断;
ii)如果该流量在节点内的NAT***中的连接状态为un-NATed:
1)如果是节点1收到,则节点1将该流量经过NAT***进行SNAT后,转发到公网;
2)如果是节点1外的其它节点收到,则其它节点将该流量经过NAT***策略路由***后,转发给节点1。
b)当NAT网关集群收到第二类协议的被动下行流量时,
i)如果该流量在节点内的NAT***中的连接状态为NATed,则节点保持现有的DNAT并转发回内网。该策略可以避免扩容或缩容时现有连接中断;
ii)如果该流量在节点内的NAT***中的连接状态为un-NATed:
1)如果是节点1收到,则节点1将该流量经过NAT***进行DNAT后,转发回内网;
2)如果是节点1外的其它节点收到,则其它节点将该流量经过NAT***策略路由***后,转发回节点1。
进一步的,:扩容节点上的NAT***记录的NATed连接为0时,把扩容节点标记为正常节点。
缩容节点上的NAT***记录的NATed连接为0时,把缩容节点彻底销毁。
需要说明的是,本发明提供一种方式,可以提供一个基于OSI模型或TCP/IP模型的传输层构建的、不局限于应用层的、面向多节点的网络组件集群的弹性、平滑的集群缩扩容方案。
下面以NAT网关集群节点数为两节点为例,描述本申请的具体技术方案。
在本实施例中,内网是指私有网络,假设其IP地址段为192.168.1.0/24。公网是指公共网络,假设其IP地址段为1.1.1.0/24。
需要说明的是,内网和公网是相对的范围,并非IP地址标准划分里的内网、公网的定义。这里,内网和公网的主要区别在于,内网地址在访问公网地址时,不能直接使用其内网IP,而是需要先通过SNAT,将源IP从内网地址转换成公网地址后,才能访问公网。
涉及到的客户端、NAT网关、公网环境信息:
客户端1:192.168.1.2/24
客户端2:192.168.1.3/24
NAT网关集群1公网IP:1.1.1.1/24
NAT网关1集群节点1:内网IP:192.168.1.11/24
NAT网关1集群节点2:内网IP:192.168.1.12/24
NAT网关1集群节点3:内网IP:192.168.1.13/24
NAT网关1集群节点4:内网IP:192.168.1.14/24
该NAT网关集群1的初始节点数为2,包含节点NAT网关集群节点1和NAT网关集群节点2。
当NAT网关集群1横向扩容时,会增加节点NAT网关集群节点3和NAT网关集群节点4。
当NAT网关集群1横向缩容时,会将节点NAT网关1集群节点2删除。
服务端地址:1.1.1.2/24。
为便于说明下述工作过程,这里第一类协议以TCP协议为例来说明,第二类协议以ICMP协议为例来作为说明。
第一类:TCP;第二类:ICMP,echo-request/echo-reply。
如无特殊说明,规则的优先级高低按规则顺序从上到下,最上面的优先级最高,最下面的优先级最低。
集群正常运行时,会有如下规则:
NAT网关列表如表3所示。
表3
以上述为例,该规则说明:存在一个NAT网关集群1,其公网地址为1.1.1.1/32,且提供SNAT服务,会将源IP为192.168.1.0/24的包在转发出公网前,经过一次SNAT,将其源地址变为1.1.1.1,并在收到回包后,进行一次DNAT,将其源地址变回192.168.1.0/24,再转发回内网;该集群的预期节点数为2,当前节点数为2,该集群的当前状态为正常。
NAT网关集群1的节点列表如表4所示。
表4
内网IP | 端口组 | 状态 | |
NAT网关集群节点1 | 192.168.1.11/24 | PG1+PG2+PG3+PG4 | - |
NAT网关集群节点2 | 192.168.1.12/24 | PG5+PG6+PG7+PG8 | - |
以上述为例,该规则说明:NAT网关集群1有两个节点,分别为:NAT网关集群节点1,其内网IP为192.168.1.11/24;对于第一类协议,将使用端口组(PG1+PG2+PG3+PG4)作为NAT的端口范围;NAT网关集群节点2,其内网IP为192.168.1.12/24;对于第一类协议,将使用端口组(PG5+PG6+PG7+PG8)作为NAT的端口范围。
NAT网关集群节点1内的SNAT规则如表5所示。
表5
以上述为例,该规则说明:NAT网关集群节点1有三条SNAT规则:
1.如果NAT***收到的报文,源IP是192.168.1.0/24在NAT***中是NATed状态,那么NAT网关集群节点1会使用现有NATed连接,将包NAT后转发到公网。
2.如果NAT***收到的报文,源IP是192.168.1.0/24在NAT***中是un-NATed状态。
a)如果该报文的协议是第二类协议,那么NAT网关集群节点1会做一次SNAT,将包SNAT后转发到公网;
b)如果该报文的协议是第一类协议,那么NAT网关集群节点1会做一次SNAT,并且会从PG1+PG2+PG3+PG4中选出一个可用的源端口,将包SNAT后转发到公网。
NAT网关集群节点1内的DNAT规则如表6所示。
表6
以上述为例,该规则说明:NAT网关集群节点1的NAT***有六条DNAT规则:
1.如果NAT***收到的报文,目标IP是1.1.1.1/32在NAT***中是NATed状态,那么NAT网关集群节点1会使用现有NATed连接,将包DNAT后转发到内网。
2.如果NAT***收到的报文,目标IP是1.1.1.1/32在NAT***中是un-NATed状态:
a如果该报文的协议是第二类协议,那么NAT网关集群节点1会做一次DNAT,将包DNAT后转发到内网;
b如果该报文的协议是第一类协议,且其目标端口在范围PG1+PG2+PG3+PG4,那么NAT网关集群节点1会做一次DNAT,将包DNAT后转发到内网;
c如果该报文的协议是第一类协议,且其目标端口在范围PG5+PG6+PG7+PG8,那么NAT网关集群节点1会转发到本节点内的策略路由***,也就是下述的NAT网关集群节点1内的策略路由规则。
NAT网关集群节点1内的策略路由规则如表7所示。
表7
以上述为例,该规则说明:NAT网关集群节点1的策略路由***有一条策略路由规则:
1.当策略路由***收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG5+PG6+PG7+PG8,那么NAT网关集群节点1会将该报文转发到NAT网关集群节点2。
NAT网关集群节点2内的SNAT规则如表8所示。
表8
以上述为例,该规则说明:NAT网关集群节点2有三条SNAT规则:
1.如果NAT***收到的报文,源IP是192.168.1.0/24在NAT***中是NATed状态,那么NAT网关集群节点2会使用现有NATed连接,将包NAT后转发到公网;
2.如果NAT***收到的报文,源IP是192.168.1.0/24在NAT***中是un-NATed状态:
a)如果该报文的协议是第二类协议,那么NAT网关集群节点2将其转发到本节点内的策略路由***;
b)如果该报文的协议是第一类协议,那么NAT网关集群节点2会做一次SNAT,并且会从PG5+PG6+PG7+PG8中选出一个可用的源端口,将包SNAT后转发到公网。
NAT网关集群节点2内的DNAT规则如表9所示。
表9
以上述为例,该规则说明:NAT网关集群节点2的NAT***有六条DNAT规则:
1.如果NAT***收到的报文,目标IP是1.1.1.1/32在NAT***中是NATed状态,那么NAT网关集群节点2会使用现有NATed连接,将包NAT后转发到内网;
2.如果NAT***收到的报文,目标IP是1.1.1.1/32在NAT***中是un-NATed状态:
a)如果该报文的协议是第二类协议,那么NAT网关集群节点2会转发到本节点内的策略路由***;
b)如果该报文的协议是第一类协议,且其目标端口在范围PG5+PG6+PG7+PG8,那么NAT网关集群节点2会做一次DNAT,将包DNAT后转发到内网;
c)如果该报文的协议是第一类协议,且其目标端口在范围PG1+PG2+PG3+PG4,那么NAT网关集群节点2会转发到本节点内的策略路由***,也就是下述的NAT网关集群节点2内的策略路由规则。
NAT网关集群节点2内的策略路由规则如表10所示。
表10
以上述为例,该规则说明:NAT网关集群节点2的策略路由***有三条策略路由规则:
1.当策略路由***收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第二类协议,那么NAT网关集群节点2会将该报文转发到NAT网关集群节点1;
2.当策略路由***收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG1+PG2+PG3+PG4,那么NAT网关集群节点2会将该报文转发到NAT网关集群节点1。
客户端1内的路由规则如表11所示。
表11
以上述为例,该规则说明:客户端1内有两条路由规则:
1.对于目标IP为192.168.1.0/24的数据包,可以直接从网卡发到相应的目标地址;
2.对于目标IP为0.0.0.0/0的数据包,需要将包先从网卡发到地址为192.168.1.11或者192.168.1.12的下一跳的网络设备。在本技术发明方案示例里,也即NAT网关集群节点1或者NAT网关集群节点2。
客户端2内的路由规则如表12所示。
表12
以上述为例,该规则说明:客户端2内有两条路由规则:
1.对于目标IP为192.168.1.0/24的数据包,可以直接从网卡发到相应的目标地址;
2.对于目标IP为0.0.0.0/0的数据包,需要将包先从网卡发到地址为192.168.1.11或者192.168.1.12的下一跳的网络设备。在本技术发明方案示例里,也即NAT网关集群节点1或者NAT网关集群节点2。
连接公网和内网的设备的路由规则如表13所示。
表13
以上述为例,该规则说明,连接公网和内网的设备在收到目标IP为1.1.1.1/32的数据包时,会将其转发到IP为192.168.1.11或192.168.1.12的下一跳设备。
集群正常运行时的工作流程:
图3是本实施例提供的少节点,SNAT-ICMP的示意图,如图3所示,SNAT-ICMP描述了第二类协议在NAT网关集群1上的SNAT过程:
1.对于客户端1发出的echo-request,如果请求是发到了NAT网关集群节点1,那么NAT网关集群节点1会通过NAT***对其做SNAT,把其源地址改为1.1.1.1,并转发到公网;
2.对于客户端1发出的echo-request,如果请求是发到了NAT网关集群节点2,那么NAT网关集群节点2会通过NAT***和策略路由***,将其转发到NAT网关集群节点1,再由#1处理后转发到公网。
图4是本实施例提供的少节点,DNAT-ICMP的示意图,如图4所示,,DNAT-ICMP描述了第二类协议在NAT网关集群1上的DNAT过程:
1.对于公网响应的发出的echo-reply,如果请求是发到了NAT网关集群节点1,那么NAT网关集群节点1会通过NAT***对其做DNAT,把其目标地址改为192.168.1.2,并转发回客户端1;
2.对于公网响应的发出的echo-reply,,如果请求是发到了NAT网关集群节点2,那么NAT网关集群节点2会通过NAT***和策略路由***,将其转发到NAT网关集群节点1,再由#1处理后转发到公网。
图5是本实施例提供的TCP SNAT/DNAT的示意图,如图5所示,描述了第一类协议在NAT网关集群1上的工作流程:
1.flow1的请求包:如果NAT网关集群节点1收到协议为TCP数据包、源IP为192.168.1.2、源端口为121的数据包后,对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了1024(从PG1里选出),并发到了公网。
2.flow1的响应包:如果NAT网关集群节点1收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为1024的数据包后,对其进行DNAT后,其目标IP变为了192.168.1.2、目标端口变为了121,并发回了内网;如果NAT网关集群节点2收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为1024的数据包后,会将其转发到NAT网关集群节点1。
3.flow2的请求包:如果NAT网关集群节点2收到协议为TCP数据包、源IP为192.168.1.3、源端口为132的数据包后,对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了49408(从PG7里选出),并发到了公网。
4.flow2的响应包:如果NAT网关集群节点2收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为49408的数据包后,对其进行DNAT后,其目标IP变为了192.168.1.3、目标端口变为了132,并发回了内网;如果NAT网关集群节点1收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为49408的数据包后,会将其转发到NAT网关集群节点2。
集群处于扩容时,会有如下规则。
NAT网关列表如表14所示。
表14
以上述为例,该规则相较于集群正常运行时的不同:
1.NAT网关集群1的预期节点数为4,当前节点数为4,该集群的状态为扩容中。
NAT网关集群1的节点列表如表15所示。
表15
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群1的两个(扩容时的)原始节点:
NAT网关集群节点1,对于第一类协议,将使用端口组PG1+PG2作为NAT的端口范围;
NAT网关集群节点2,对于第一类协议,将使用端口组PG5+PG6作为NAT的端口范围;
NAT网关集群1的两个扩容节点,分别为:
NAT网关集群节点3,其内网IP为192.168.1.13/24,对于第一类协议,将使用端口组PG3+PG4作为NAT的端口范围,状态为扩容中;
NAT网关集群节点4,其内网IP为192.168.1.14/24,对于第一类协议,将使用端口组PG7+PG8作为NAT的端口范围,状态为扩容中。
NAT网关集群节点1内的SNAT规则如表16所示。
表16
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点1对于源IP为192.168.1.0/24且状态为un-NATed的第一类数据包,在对其做SNAT时,SNAT后的源端口范围变为了PG1+PG2。
NAT网关集群节点1内的DNAT规则如表17所示。
表17
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点1对于目标IP为1.1.1.1/32且状态为un-NATed的第一类且目标端口在PG3+PG4范围的数据包,会转发到本节点内的策略路由***
NAT网关集群节点1内的策略路由规则:
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点1对于目标IP为1.1.1.1/32且状态为un-NATed的第一类数据包,
1.如果其目标端口在范围PG3+PG4,则将该包转发到NAT网关集群节点3;
2.如果其目标端口在范围PG7+PG8,则将该包转发到NAT网关集群节点4。
NAT网关集群节点2内的SNAT规则如表18所示。
表18
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点2对于源IP为192.168.1.0/24且状态为un-NATe的第一类数据包,在对其做SNAT时,SNAT后的源端口范围变为了PG5+PG6。
NAT网关集群节点2内的DNAT规则如表19所示。
表19
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点2对于目标IP为1.1.1.1/32且状态为un-NATed且其目标端口在范围PG7+PG8的第一类数据包,会转发到本节点内的策略路由***。
NAT网关集群节点2内的策略路由规则如表20所示。
表20
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点2对于目标IP为1.1.1.1/32且状态为un-NATed的第一类数据包,
1.如果其目标端口在范围PG3+PG4,则将该包转发到NAT网关集群节点3;
1.如果其目标端口在范围PG7+PG8,则将该包转发到NAT网关集群节点4。
NAT网关集群节点3内的SNAT规则如表21所示。
表21
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点3为新增节点,NAT网关集群节点3有三条SNAT规则:
1.如果(NAT***)收到的报文,源IP是192.168.1.0/24在NAT***中是NATed状态,那么NAT网关集群节点3会使用现有NATed连接,将包NAT后转发到公网;
2.如果(NAT***)收到的报文,源IP是192.168.1.0/24在NAT***中是un-NATed状态:
a)如果该报文的协议是第二类协议,那么NAT网关集群节点3将其转发到本节点内的策略路由***;
b)如果该报文的协议是第一类协议,那么NAT网关集群节点3会做一次SNAT,并且会从PG3+PG4中选出一个可用的源端口,将包SNAT后转发到公网。
NAT网关集群节点3内的DNAT规则如表22所示。
表22
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点3为新增节点,NAT网关集群节点3的NAT***有六条DNAT规则:
1.如果(NAT***)收到的报文,目标IP是1.1.1.1/32在NAT***中是NATed状态,那么NAT网关集群节点3会使用现有NATed连接,将包NAT后转发到内网;
2.如果(NAT***)收到的报文,目标IP是1.1.1.1/32在NAT***中是un-NATed状态:
a)如果该报文的协议是第二类协议,那么NAT网关集群节点3会转发到本节点内的策略路由***;
b)如果该报文的协议是第一类协议,且其目标端口在范围PG3+PG4,说明该连接是个扩容前建立的新连接,这时那么NAT网关集群节点3会按照老的分组,转发到本节点内的策略路由***,也就是下述的NAT网关集群节点3内的策略路由规则;
c)如果该报文的协议是第一类协议,且其目标端口在范围PG1+PG2+PG5+PG6+PG7+PG8,那么NAT网关集群节点3会转发到本节点内的策略路由***,也就是下述的NAT网关集群节点3内的策略路由规则。
NAT网关集群节点3内的策略路由规则如表23所示。
表23
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点3为新增节点,NAT网关集群节点3的策略路由***有四条策略路由规则:
1.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第二类协议,那么NAT网关集群节点3会将该报文转发到NAT网关集群节点1;
2.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG1+PG2,那么NAT网关集群节点3会将该报文转发到NAT网关集群节点1;
3.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG3+PG4,那么NAT网关集群节点3会将该报文转发到NAT网关集群节点1;
4.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG5+PG6,那么NAT网关集群节点3会将该报文转发到NAT网关集群节点2;
5.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG7+PG8,那么NAT网关集群节点3会将该报文转发到NAT网关集群节点4。
NAT网关集群节点4内的SNAT规则如表24所示。
表24
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点4为新增节点,NAT网关集群节点4有三条SNAT规则:
1.如果(NAT***)收到的报文,源IP是192.168.1.0/24在NAT***中是NATed状态,那么NAT网关集群节点4会使用现有NATed连接,将包NAT后转发到公网;
2.如果(NAT***)收到的报文,源IP是192.168.1.0/24在NAT***中是un-NATed状态:
a)如果该报文的协议是第二类协议,那么NAT网关集群节点4将其转发到本节点内的策略路由***;
b)如果该报文的协议是第一类协议,那么NAT网关集群节点4会做一次SNAT,并且会从PG7+PG8中选出一个可用的源端口,将包SNAT后转发到公网。
NAT网关集群节点4内的DNAT规则如表25所示。
表25
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点4为新增节点,NAT网关集群节点4的NAT***有六条DNAT规则:
1.如果(NAT***)收到的报文,目标IP是1.1.1.1/32在NAT***中是NATed状态,那么NAT网关集群节点4会使用现有NATed连接,将包NAT后转发到内网;
2.如果(NAT***)收到的报文,目标IP是1.1.1.1/32在NAT***中是un-NATed状态:
a)如果该报文的协议是第二类协议,那么NAT网关集群节点4会转发到本节点内的策略路由***;
b)如果该报文的协议是第一类协议,且其目标端口在范围PG7+PG8,说明该连接是个扩容前建立的新连接,这时那么NAT网关集群节点4会按照老的分组,转发到本节点内的策略路由***,也就是下述的NAT网关集群节点4内的策略路由规则;
c)如果该报文的协议是第一类协议,且其目标端口在范围PG1+PG2+PG3+PG4+PG5+PG6,那么NAT网关集群节点4会转发到本节点内的策略路由***,也就是下述的NAT网关集群节点4内的策略路由规则。
NAT网关集群节点4内的策略路由规则如表26所示。
表26
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群节点4为新增节点,NAT网关集群节点4的策略路由***有四条策略路由规则:
1.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第二类协议,那么NAT网关集群节点4会将该报文转发到NAT网关集群节点1;
2.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG1+PG2,那么NAT网关集群节点4会将该报文转发到NAT网关集群节点1;
3.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG3+PG4,那么NAT网关集群节点4会将该报文转发到NAT网关集群节点3;
4.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG5+PG6,那么NAT网关集群节点4会将该报文转发到NAT网关集群节点2;
5.当(策略路由***)收到的报文,目标IP段为1.1.1.1/32,且该报文的协议是第一类协议,且其目标端口在范围PG7+PG8,那么NAT网关集群节点4会将该报文转发到NAT网关集群节点1。
客户端1内的路由规则如表27所示。
表27
以上述为例,该规则说明:客户端1内有两条路由规则:
1.对于目标IP为192.168.1.0/24的数据包,可以直接从网卡发到相应的目标地址;
2.对于目标IP为0.0.0.0/0的数据包,需要将包先从网卡发到地址为192.168.1.11或者192.168.1.12或者192.168.1.13或者192.168.1.14的下一跳的网络设备。在本技术发明方案示例里,也即NAT网关集群节点1或者NAT网关集群节点2或者NAT网关集群节点3或者NAT网关集群节点4。
客户端2内的路由规则如表28所示。
表28
以上述为例,该规则说明:客户端2内有两条路由规则:
1.对于目标IP为192.168.1.0/24的数据包,可以直接从网卡发到相应的目标地址;
2.对于目标IP为0.0.0.0/0的数据包,需要将包先从网卡发到地址为192.168.1.11或者192.168.1.12或者192.168.1.13或者192.168.1.14的下一跳的网络设备。在本技术发明方案示例里,也即NAT网关集群节点1或者NAT网关集群节点2或者NAT网关集群节点3或者NAT网关集群节点4。
连接公网和内网的设备的路由规则如表29所示。
表29
以上述为例,该规则说明,连接公网和内网的设备在收到目标IP为1.1.1.1/32的数据包时,会将其转发到IP为192.168.1.11或192.168.1.12或192.168.1.13或192.168.1.14的下一跳设备。
连接公网和内网的设备的路由规则如表30所示。
表30
以上述为例,该规则说明,连接公网和内网的设备在收到目标IP为1.1.1.1/32的数据包时,会将其转发到IP为192.168.1.11或192.168.1.12或192.168.1.13或192.168.1.14的下一跳设备。
集群扩容中的工作流程:
图6是本实施例提供的多节点,SNAT-ICMP示意图,如图6所示,描述了第二类协议在NAT网关集群1上的SNAT过程:
1对于客户端1发出的echo-request,如果请求是发到了NAT网关集群节点1,那么NAT网关集群节点1会通过NAT***对其做SNAT,把其源地址改为1.1.1.1,并转发到公网;
2.对于客户端1发出的echo-request,如果请求是发到了NAT网关集群节点2或NAT网关集群节点3或NAT网关集群节点4,那么NAT网关集群节点2或NAT网关集群节点3或NAT网关集群节点4会通过NAT***和策略路由***,将其转发到NAT网关集群节点1,再由#1处理后转发到公网。
图7是本实施例提供的多节点,DNAT-ICMP示意图,如图7所示,描述了第二类协议在NAT网关集群1上的DNAT过程:
1.对于公网响应的发出的echo-reply,如果请求是发到了NAT网关集群节点1,那么NAT网关集群节点1会通过NAT***对其做DNAT,把其目标地址改为192.168.1.2,并转发回客户端1;
2.对于公网响应的发出的echo-reply,,如果请求是发到了NAT网关集群节点2或NAT网关集群节点3或NAT网关集群节点4,那么NAT网关集群节点2或NAT网关集群节点3或NAT网关集群节点4会通过NAT***和策略路由***,将其转发到NAT网关集群节点1,再由#1处理后转发到公网。
图8是本实施例提供的扩容,SNAT-NATed示意图,如图8所示,描述了第一类协议在NAT网关集群1上的连接状态为NATed的SNAT过程:
1.flow1发到NAT网关集群节点1时,因为该flow在节点内是NATed状态,所以NAT网关集群节点1会使用现有的NAT信息,继续对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了1024(从NAT******中查出),并发到了公网;
2.flow2发到NAT网关集群节点2时,因为该flow在节点内是NATed状态,所以NAT网关集群节点2会使用现有的NAT信息,继续对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了49408(从NAT******中查出,尽管端口49408所在的PG7目前已经分配给了NAT网关集群节点4),并发到了公网;
图9是本实施例提供的扩容,SNAT-unNATed示意图,如图9所示,(扩容时的)原始节点描述了第一类协议在NAT网关集群1上的连接状态为un-NATed时,上行流量发到(扩容时的)原始节点的工作流程:
1.flow3:如果NAT网关集群节点1收到协议为TCP数据包、源IP为192.168.1.2、源端口为123的数据包后,对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了1025(从PG1里选出,1024端口已被flow1占用),并发到了公网;
2.flow4:如果NAT网关集群节点1收到协议为TCP数据包、源IP为192.168.1.3、源端口为134的数据包后,对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了41344(从PG6里选出),并发到了公网;
图10是本实施例提供的扩容,SNAT-unNATed,扩容节点示意图,如图10所示,描述了第一类协议在NAT网关集群1上的连接状态为un-NATed时,上行流量发到(扩容时的)原始节点的工作流程:
1.flow5:如果NAT网关集群节点3收到协议为TCP数据包、源IP为192.168.1.2、源端口为125的数据包后,对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了17152(从PG3里选出),并发到了公网;
2.flow6:如果NAT网关集群节点4收到协议为TCP数据包、源IP为192.168.1.3、源端口为136的数据包后,对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了49409(从PG7里选出,49408端口已被flow2占用),并发到了公网;
图11是本实施例提供的扩容,DNAT-NATed的示意图,如图11所示,描述了第一类协议在NAT网关集群1上的连接状态为NATed时,下行流量的DNAT的工作流程:
1.flow1:如果NAT网关集群节点1收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为1024的数据包后,因为该flowNAT网关集群节点1是NATed状态,因此直接查询现有的NAT信息,对其进行DNAT后,其目标IP变为了192.168.1.2、目标端口变为了121,并发回了内网;
2.flow2:如果NAT网关集群节点2收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为49408的数据包后,因为该flowNAT网关集群节点2是NATed状态,因此直接查询现有的NAT信息,对其进行DNAT后,其目标IP变为了192.168.1.2、目标端口变为了132(尽管49408端口归属的PG7已经分配给了NAT网关集群节点4),并发回了内网。
图12是本实施例提供的扩容,DNAT-unNATed-本节点端口,扩容节点的示意图,如图12所示,描述了第一类协议在NAT网关集群1扩容节点收到数据包的目标端口为本节点端口但节点内记录的连接状态为un-NATed时,下行流量的DNAT的工作流程:
1.flow2:如果NAT网关集群节点4收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为49408的数据包后,尽管端口49408归属的PG7属于当前节点,但因为该连接在NAT网关集群节点4内属于un-NATed状态,说明这是个扩容前产生的老连接,需要按照老的分组,发回相应的节点,也就是NAT网关集群节点2,再由NAT网关集群节点2处理并发回内网。
图13是本实施例提供的扩容,DNAT-unNATed-非本节点端口,(扩容时的)原始节点的示意图,如图13所示,描述了第一类协议在NAT网关集群1(扩容时的)原始节点在收到目标端口不为本节点端口且连接状态为un-NATed时,下行流量的DNAT的工作流程:
1.flow1:如果NAT网关集群节点2收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为1024的数据包后,按照新的分组,发回相应的节点,也就是NAT网关集群节点1,再由NAT网关集群节点1处理并发回内网。
图14是本实施例提供的扩容,DNAT-unNATed-非本节点端口,扩容节点的示意图,如图14所示,描述了第一类协议在NAT网关集群1扩容节点在收到目标端口为非本节点端口,且连接状态为un-NATed时,下行流量的DNAT的工作流程:
1.flow1:如果NAT网关集群节点3或NAT网关集群节点4收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为1024的数据包后,按照新的分组,发回相应的节点,也就是NAT网关集群节点1,再由NAT网关集群节点1处理并发回内网。
集群缩容时,会有如下规则:
NAT网关列表如表31所示。
表31
以上述为例,该规则相较于集群正常运行时的不同:
NAT网关集群1的预期节点数为1,当前节点数为2,该集群的状态为缩容中。
NAT网关集群1的节点列表如表32所示。
表32
以上述为例,该规则相较于集群正常运行时的不同:NAT网关集群1的两个节点:
NAT网关集群节点1,其内网IP为192.168.1.11/24,对于第一类协议,将使用端口组PG1+PG2+PG3+PG4+PG5+PG6+PG7+PG8作为NAT的端口范围;
NAT网关集群节点2,状态为缩容中,也就是该节点将不再做任何主动的SNAT。
NAT网关集群节点1内的SNAT规则如表33所示。
表33
以上述为例,该规则相较于集群正常运行时的不同:
1.NAT网关集群节点1对于源IP为192.168.1.0/24且状态为un-NATed的第一类数据包,在对其做SNAT时,SNAT后的源端口范围变为了PG1+PG2+PG3+PG4+PG5+PG6+PG7+PG8。
NAT网关集群节点1内的DNAT规则如表34所示。
表34
以上述为例,该规则相较于集群正常运行时无变化。
注:目标IP段为1.1.1.1/32、连接状态为un-NATed、匹配协议为第一类且目标端口在范围PG5+PG6和PG7+PG8的两条DNAT规则,表明这个数据包是个缩容前建立的老连接,这时需要按照老的端口分组,将该数据包经由策略路由***(下述的NAT网关集群节点1内的策略路由规则)转发到缩容中的节点(也即NAT网关集群节点2)。
NAT网关集群节点1内的策略路由规则如表35所示。
表35
以上述为例,该规则相较于集群正常运行时无变化。
注:该策略路由规则保证了在缩容前就建立的连接在缩容过程中不会中断。
NAT网关集群节点2内的SNAT规则如表36所示
表36
以上述为例,该规则相较于集群正常运行时的不同:
1.NAT网关集群节点2对于源IP为192.168.1.0/24且状态为un-NATed的第一类数据包,会转发到本节点内的策略路由***。该项不同表明了该缩容中的节点NAT网关集群节点2不再接受任何新的SNAT主动连接。
NAT网关集群节点2内的DNAT规则如表37所示。
表37
以上述为例,该规则相较于集群正常运行时的不同:
1.NAT网关集群节点2对于目标IP为1.1.1.1/32且状态为un-NATed且其目标端口在范围PG5+PG6+PG7+PG8的第一类数据包,会转发到本节点内的策略路由***。该规则的变化,表明该缩容中节点的节点,不再接受对新的连接做SNAT。
NAT网关集群节点2内的策略路由规则如表38所示。
表38
以上述为例,该规则相较于集群正常运行时的不同:
1.NAT网关集群节点2对于源IP段为192.168.1.0/24的第一类数据包,则将该包转发到NAT网关集群节点1,该项不同表明了该缩容中的节点NAT网关集群节点2不再接受任何新的SNAT主动连接;
2.NAT网关集群节点2对于目标IP为1.1.1.1/32的第一类数据包,如果其目标端口在范围PG5+PG6+PG7+PG8,则将该包转发到NAT网关集群节点1。
客户端1内的路由规则如表39所示。
表39
以上述为例,该规则说明:客户端1内有两条路由规则:
1.对于目标IP为192.168.1.0/24的数据包,可以直接从网卡发到相应的目标地址;
2.对于目标IP为0.0.0.0/0的数据包,需要将包先从网卡发到地址为192.168.1.11的下一跳的网络设备。在本技术发明方案示例里,也即NAT网关集群节点1。
客户端2内的路由规则如表40所示。
表40
以上述为例,该规则说明:客户端2内有两条路由规则:
1.对于目标IP为192.168.1.0/24的数据包,可以直接从网卡发到相应的目标地址;
2.对于目标IP为0.0.0.0/0的数据包,需要将包先从网卡发到地址为192.168.1.11的下一跳的网络设备。在本技术发明方案示例里,也即NAT网关集群节点1。
连接公网和内网的设备的路由规则如表41所示。
表41
以上述为例,该规则说明,连接公网和内网的设备在收到目标IP为1.1.1.1/32的数据包时,会将其转发到IP为192.168.1.11或192.168.1.12的下一跳设备。
注:由于NAT网关集群节点2还处在缩容中的状态,因此连接公网和内网的设备上对1.1.1.1/32的下一跳,仍然包含192.168.1.12的IP,只有当NAT网关集群节点2缩容完成、可以销毁时,连接公网和内网的设备才需要把192.168.1.12去掉。
集群缩容中的工作流程:
缩容时的第二类协议的变化过程,也就是从多节点变化为少节点,可比较图多节点,SNAT-ICMP和图少节点,SNAT-ICMP以及图多节点,DNAT-ICMP和图少节点,DNAT-ICMP,此处不再赘述。
图14是本实施例提供的缩容,SNAT-NATed示意图,如图14所示,描述了第一类协议在NAT网关集群1在收到上行流量在NAT***中的状态为NATed的工作流程:
1.flow1发到NAT网关集群节点1时,因为该flow在节点内是NATed状态,所以NAT网关集群节点1会使用现有的NAT信息,继续对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了1024(从NAT******中查出),并发到了公网;
2.flow2发到NAT网关集群节点2时,因为该flow在节点内是NATed状态,所以NAT网关集群节点2会使用现有的NAT信息,继续对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了49408(从NAT******中查出,尽管NAT网关集群节点2已处于缩容中状态、没有分配任何端口组),并发到了公网。
图15是本实施例提供的缩容,SNAT-unNATed,(缩容时的)保留节点的示意图,图15所示,描述了第一类协议在NAT网关集群1的(缩容时的)保留节点在收到上行流量在NAT***中的状态为un-NATed的工作流程:
1.flow7:如果NAT网关集群节点1收到协议为TCP数据包、源IP为192.168.1.2、源端口为127的数据包后,对其进行SNAT后,其源IP变为了1.1.1.1、源端口变为了1025(从PG1里选出,1024端口已被flow1占用),并发到了公网。
图16是本实施例提供的缩容,SNAT-unNATed,缩容节点的示意图,如图16所示,描述了第一类协议在NAT网关集群1的缩容节点在收到上行流量在NAT***中的状态为un-NATed的工作流程:
1.flow8:如果NAT网关集群节点2收到协议为TCP数据包、源IP为192.168.1.3、源端口为138的数据包,因为该flow在NAT网关集群节点2的NAT***中是un-NATed状态,且NAT网关集群节点2处于缩容中,NAT网关集群1没有为其分配任何端口组,所以NAT网关集群节点2需要将该包转发NAT网关集群节点1,由NAT网关集群节点1对其进行SNAT,其源IP变为了1.1.1.1、源端口变为了57472(随机选一个未被占用的端口,这里以PG8的57472端口为例),并发到了公网;
图17是本实施例提供的缩容,DNAT-NATed的示意图,如图17所示,描述了第一类协议在NAT网关集群1在收到下行流量在NAT***中的状态为NATed的工作流程:
1.flow1:如果NAT网关集群节点1收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为1024的数据包后,因为该flowNAT网关集群节点1是NATed状态,因此直接查询现有的NAT信息,对其进行DNAT后,其目标IP变为了192.168.1.2、目标端口变为了121,并发回了内网;
2.flow2:如果NAT网关集群节点2收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为49408的数据包后,因为该flowNAT网关集群节点2是NATed状态,因此直接查询现有的NAT信息,对其进行DNAT后,其目标IP变为了192.168.1.2、目标端口变为了132(尽管49408端口归属的PG7已经分配给了NAT网关集群节点1),并发回了内网。
图18是本实施例提供的缩容,DNAT-unNATed-本节点端口,(缩容时的)保留节点的示意图,如图18所示,描述了第一类协议在NAT网关集群1的(缩容时的)保留节点在收到下行流量在NAT***中的状态为un-NATed的工作流程:
1.flow2:如果NAT网关集群节点1收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为49408的数据包后,尽管目标端口49408所归属的端口组PG7目前已经分配给了NAT网关集群节点1,但因为该flow在NAT网关集群节点1是un-NATed状态,说明该flow是个缩容前就建立的连接,需要按照老的分组,将该flow转发至NAT网关集群节点2,由NAT网关集群节点2对其进行DNAT,并发回了内网。
图19是本实施例提供的缩容,DNAT-unNATed-非本节点端口,缩容节点的示意图,如图19所示,描述了第一类协议在NAT网关集群1的缩容节点在收到下行流量在NAT***中的状态为un-NATed的工作流程:
1.flow1:如果NAT网关集群节点2收到协议为TCP数据包、目标IP为1.1.1.1、目标端口为1024的数据包后,需要按照新的分组,将该flow转发至NAT网关集群节点1,由NAT网关集群节点1对其进行DNAT,并发回了内网。
需要说明的是,DNAT-unNATed-非本节点端口,(缩容时的)保留节点,即第一类协议在NAT网关集群1的(缩容时的)保留节点在收到下行流量在NAT***中的状态为un-NATed的工作流程,与缩容,DNAT-unNATed-非本节点端口,缩容节点一致,此处不再赘述。
在一个实施例中,图20为本发明实施例提供的报文处理装置的结构示意图,本实施例可适用于网关集群对报文进行处理的情况,所述装置可以通过软和/或硬件的方式来实现。
如图20所示,本发明实施例提供的报文处理装置主要包括:
报文划分模块51,用于将待处理报文划分为第一类报文和第二类报文;
第一处理模块52,用于将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理;
第二处理模块53,用于第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。
上述实施例提供的报文处理装置将待处理报文划分为第一类报文和第二类报文;将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理;第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。本申请实施例提供的技术方案将报文拆分成了第一类和第二类,针对两类报文,做了不同的转发策略处理,保证了一个SNAT集群在伸缩过程中现有流量不中断,并且集群之间不需要状态同步。
进一步的,将待处理报文分为第一类报文和第二类报文,包括:通过传输控制协议/网际协议TCP/IP协议栈的分层模型将待处理报文分为第一类报文和第二类报文。
进一步的,所述NAT网关集群正常运行的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,通过节点将所述第一类报文经过NAT***进行SNAT后,并将第一类报文转发至公网;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果所述第一类报文的目标端口未在节点分配的端口范围内,则通过节点将所述第一类报文经过策略路由***后,按照端口组的划分转发到对应的集群节点。
进一步的,所述NAT网关集群正常运行,或所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理,包括:在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第二类报文转发至公网;在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行SNAT后,并将第二类报文转发至公网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点。
进一步的,所述NAT网关集群正常运行的情况下,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理,包括:在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有目的地址转换DNAT并将所述第二类报文转发至内网;在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行DNAT后,并将第二类报文转发至内网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点。
进一步的,所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有SNAT并将所述第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果原始节点或保留节点接收到所述第一类报文,通过所述原始节点或保留节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果扩容节点接收到所述第一类报文,通过所述扩容节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果缩容节点接收到所述第一类报文,通过所述缩容节点按照新端口组的划分转发到对应的集群节点。
进一步的,所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理,包括:在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有DNAT并将所述第二类报文转发至内网;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口在节点分配端口范围内,且该节点是扩容节点或保留节点,通过该节点按照旧端口分组将所述第一类报文转发到相应节点;在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口未在节点分配端口范围内,通过该节点按照新端口分组将所述第一类报文转发到相应节点。
本发明实施例所提供的报文处理装置可执行本发明任意实施例所提供的报文处理方法,具备执行方法相应的功能模块和有益效果。
图21为本发明实施例提供的一种设备的结构示意图,如图21所示,该设备包括处理器610、存储器620、输入装置630和输出装置640;设备中处理器610的数量可以是一个或多个,图21中以一个处理器610为例;设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图21中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的报文处理方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种报文处理方法,该方法包括:
将待处理报文划分为第一类报文和第二类报文;
将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类进行报文转发处理;
第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类进行报文转发处理。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的报文处理方法中的相关操作.
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述报文处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (7)
1.一种报文处理方法,其特征在于,包括:
将待处理报文划分为第一类报文和第二类报文;其中,所述第一类报文是按照TCP/UDP协议传输的报文,所述第二类报文是指按照除TCP/UDP协议外的其它所有协议传输的报文;
第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类报文进行报文转发处理;
所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类报文进行报文转发处理,包括:
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有SNAT并将所述第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果原始节点或保留节点接收到所述第一类报文,通过所述原始节点或保留节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果扩容节点接收到所述第一类报文,通过所述扩容节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果缩容节点接收到所述第一类报文,通过所述缩容节点按照新端口组的划分转发到对应的集群节点;
第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类报文进行报文转发处理;
所述NAT网关集群正常运行,或所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第二策略对所述第二类报文进行报文转发处理,包括:
在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第二类报文转发至公网;其中,所述第一状态为NATed状态;
在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行SNAT后,并将第二类报文转发至公网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点;其中,所述第一节点是NAT网关集群中的节点;所述第二状态为un-NATed状态。
2.根据权利要求1所述的方法,其特征在于,所述NAT网关集群正常运行的情况下,通过NAT网关集群采用第一策略对所述第一类报文进行报文转发处理,包括:
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;
在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,通过节点将所述第一类报文经过NAT***进行SNAT后,并将第一类报文转发至公网;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第一类报文转发至公网;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果所述第一类报文的目标端口未在节点分配的端口范围内,则通过节点将所述第一类报文经过策略路由***后,按照端口组的划分转发到对应的集群节点。
3.根据权利要求1所述的方法,其特征在于,所述NAT网关集群正常运行的情况下,或所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第二策略对所述第二类报文进行报文转发处理,包括:
在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有目的地址转换DNAT并将所述第二类报文转发至内网;
在所述第二类报文是被动下行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行DNAT后,并将第二类报文转发至内网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点。
4.根据权利要求1所述的方法,其特征在于,所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类报文进行报文转发处理,包括:
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有DNAT并将所述第二类报文转发至内网;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口在节点分配端口范围内,且该节点是扩容节点或保留节点,通过该节点按照旧端口分组将所述第一类报文转发到相应节点;
在所述第一类报文是被动下行流量且在节点内的NAT***中的连接状态为第一状态时,如果所述第一类报文对应的目标端口未在节点分配端口范围内,通过该节点按照新端口分组将所述第一类报文转发到相应节点。
5.一种报文处理装置,其特征在于,包括:
报文划分模块,用于将待处理报文划分为第一类报文和第二类报文;其中,所述第一类报文是按照TCP/UDP协议传输的报文,所述第二类报文是指按照除TCP/UDP协议外的其它所有协议传输的报文;
第一处理模块,用于将第一类报文进行网络地址转换NAT后,通过NAT网关集群采用第一策略对所述第一类报文进行报文转发处理;
所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第一策略对所述第一类报文进行报文转发处理,包括:在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有SNAT并将所述第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果原始节点或保留节点接收到所述第一类报文,通过所述原始节点或保留节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果扩容节点接收到所述第一类报文,通过所述扩容节点将所述第一类报文经过NAT***进行SNAT后,将第一类报文转发至公网;在所述第一类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果缩容节点接收到所述第一类报文,通过所述缩容节点按照新端口组的划分转发到对应的集群节点;
第二处理模块,用于第二类报文进行NAT后,通过NAT网关集群采用第二策略对所述第二类报文进行报文转发处理;
所述NAT网关集群正常运行,或所述NAT网关集群处于扩容或缩容的情况下,通过NAT网关集群采用第二策略对所述第二类报文进行报文转发处理,包括:
在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第一状态时,通过节点保持现有源地址转换SNAT并将所述第二类报文转发至公网;其中,所述第一状态为NATed状态;
在所述第二类报文是主动上行流量且在节点内的NAT***中的连接状态为第二状态时,如果第一节点接收到所述第二类报文,通过所述第一节点将所述第二类报文经过NAT***进行SNAT后,并将第二类报文转发至公网;如果除第一节点外的其他节点接收到所述第二类报文,所述其他节点将所述第二类报文经过策略路由***后,转发到所述第一节点;其中,所述第一节点是NAT网关集群中的节点;所述第二状态为un-NATed状态。
6.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的报文处理方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的报文处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010952900.1A CN112087533B (zh) | 2020-09-11 | 2020-09-11 | 报文处理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010952900.1A CN112087533B (zh) | 2020-09-11 | 2020-09-11 | 报文处理方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112087533A CN112087533A (zh) | 2020-12-15 |
CN112087533B true CN112087533B (zh) | 2023-05-09 |
Family
ID=73736657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010952900.1A Active CN112087533B (zh) | 2020-09-11 | 2020-09-11 | 报文处理方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112087533B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114827079B (zh) * | 2022-03-25 | 2024-04-30 | 阿里云计算有限公司 | 网络地址转换网关的扩容方法、设备及存储介质 |
CN115086183B (zh) * | 2022-07-05 | 2024-02-06 | 武汉思普崚技术有限公司 | 一种应用层网关的报文关联方法及装置 |
CN116232992B (zh) * | 2022-12-16 | 2024-05-14 | 中国联合网络通信集团有限公司 | 数据转发方法、装置、设备及存储介质 |
CN116248590B (zh) * | 2022-12-16 | 2024-05-10 | 中国联合网络通信集团有限公司 | 数据转发方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005079717A (ja) * | 2003-08-28 | 2005-03-24 | Matsushita Electric Ind Co Ltd | パケット転送装置およびパケット転送方法 |
CN102025567A (zh) * | 2010-12-13 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种共享接入检测方法以及相关装置 |
CN110290174A (zh) * | 2019-05-24 | 2019-09-27 | 华为技术有限公司 | 一种主主集群的控制方法以及控制节点 |
CN110753137A (zh) * | 2019-10-25 | 2020-02-04 | 浪潮云信息技术有限公司 | 一种实现一对一网络地址转换网关水平扩展的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11570098B2 (en) * | 2016-07-05 | 2023-01-31 | Six Impossible Things Before Breakfast Limited | Systems, apparatuses and methods for cooperating routers |
US10142221B2 (en) * | 2016-09-07 | 2018-11-27 | T-Mobile Usa, Inc. | Network address translation in networks using multiple NAT devices |
-
2020
- 2020-09-11 CN CN202010952900.1A patent/CN112087533B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005079717A (ja) * | 2003-08-28 | 2005-03-24 | Matsushita Electric Ind Co Ltd | パケット転送装置およびパケット転送方法 |
CN102025567A (zh) * | 2010-12-13 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种共享接入检测方法以及相关装置 |
CN110290174A (zh) * | 2019-05-24 | 2019-09-27 | 华为技术有限公司 | 一种主主集群的控制方法以及控制节点 |
CN110753137A (zh) * | 2019-10-25 | 2020-02-04 | 浪潮云信息技术有限公司 | 一种实现一对一网络地址转换网关水平扩展的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112087533A (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112087533B (zh) | 报文处理方法、装置、设备和存储介质 | |
EP3738277B1 (en) | Segment routing network processing of packets | |
US6914905B1 (en) | Method and system for VLAN aggregation | |
US8923296B2 (en) | System and methods for managing network packet forwarding with a controller | |
EP2514152B1 (en) | Distributed routing architecture | |
US8856384B2 (en) | System and methods for managing network protocol address assignment with a controller | |
US6643287B1 (en) | Apparatus and method for forwarding encapsulated data packets on a network having multiple links between nodes | |
US7359383B2 (en) | Load balancing with mesh tagging | |
US7280752B2 (en) | Network address routing using multiple routing identifiers | |
EP3472983B1 (en) | Dynamic switching between edge nodes in autonomous network system | |
EP2514150B1 (en) | Distributed routing architecture | |
US20080205401A1 (en) | Setting a Forwarding Address in an Internet Protocol Version 6 (IPv6) Routing Protocol Domain at a Boundary with a Different Routing Protocol Domain | |
JP6364106B2 (ja) | DiameterシグナリングルータにおいてDiameterメッセージをルーティングするための方法、システムおよびコンピュータ読取可能媒体 | |
CN103155500A (zh) | 用于网络业务流的无状态负载平衡的方法、***和计算机可读介质 | |
CN110061915B (zh) | 跨多个架构交换机的虚拟链路聚合的方法和*** | |
WO2007031593A1 (en) | Routing data packets from a multihomed host | |
US9838323B2 (en) | Priority based anycast routing | |
US8265059B1 (en) | Address scope checking for internet protocol version 6 | |
Grosse et al. | Network processors applied to IPv4/IPv6 transition | |
US20020199017A1 (en) | Routing meta data for network file access | |
Doi et al. | Protocol design for anycast communication in IPv6 network | |
US11700201B2 (en) | Mechanism to enforce consistent next hops in a multi-tier network | |
CN116232992B (zh) | 数据转发方法、装置、设备及存储介质 | |
WO2023169364A1 (zh) | 路由生成方法、数据报文的转发方法及装置 | |
Pasquini et al. | Integrating servers and networking using an xor-based flat routing mechanism in 3-cube servercentric data centers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100000 Unit 501A, Floor 5, 101, Building 1, Yard 5, Laiguangying West Road, Chaoyang District, Beijing Applicant after: Beijing Qingyun Science and Technology Co.,Ltd. Address before: 100020 601, 6 floor, 16 building, No. 36 Chuang Yuan Road, Chaoyang District, Beijing. Applicant before: Beijing Qingyun Science and Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |