CN116248590B - 数据转发方法、装置、设备及存储介质 - Google Patents
数据转发方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116248590B CN116248590B CN202211625711.9A CN202211625711A CN116248590B CN 116248590 B CN116248590 B CN 116248590B CN 202211625711 A CN202211625711 A CN 202211625711A CN 116248590 B CN116248590 B CN 116248590B
- Authority
- CN
- China
- Prior art keywords
- target
- data
- address
- snat
- port
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 101000652292 Homo sapiens Serotonin N-acetyltransferase Proteins 0.000 claims abstract description 117
- 102100030547 Serotonin N-acetyltransferase Human genes 0.000 claims abstract description 117
- 238000012545 processing Methods 0.000 claims description 41
- 230000006870 function Effects 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 claims description 20
- 238000013519 translation Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 abstract description 9
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 101150064138 MAP1 gene Proteins 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- 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
- H04L61/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种数据转发方法、装置、设备及存储介质,涉及通信技术领域,用于提高NAT网关对数据转发的效率,包括:NAT网关获取SNAT数据,并为SNAT数据分配目的互联网协议IP地址和目的端口;确定SNAT数据对应的五元组的哈希值;基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,并确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致;当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,通过发送队列对应的CPU核心转发SNAT数据。本申请应用于NAT网关对数据进行转发的场景中。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据转发方法、装置、设备及存储介质。
背景技术
网络地址转换(Network Address Translation,NAT)网关是一种将虚拟私有云(Virtual Private Cloud,VPC)中的内网IP地址和公网IP地址进行转换的网关,是实现VPC内无公网IP的云资源访问互联网的一种实现方式。NAT网关处于互联网和VPC的边界,适用在私有网络内部,部分资源共用公网出口,可以节约带宽与流量资源。
在多核中央处理器(Central Processing Unit/Processor,CPU),网卡多队列架构服务器中,NAT网关拥有多个工作线程,每个工作线程运行在单独的CPU核上独占网卡中的一个接收队列(或发送队列)。这种架构的主要目的是增加***吞吐量、增强伸缩性、非关联会话转发效率高、资源独立。
在这种情况下,如果有大量跨线程处理任务,则数据转发性能就会急速下降。因此,当前NAT网关对数据转发的效率较低。
发明内容
本申请提供一种数据转发方法、装置、设备及存储介质,用于提高NAT网关对数据转发的效率。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供了一种数据转发方法,该方法包括:网络地址转换NAT网关获取源地址转换SNAT数据,并为SNAT数据分配目的互联网协议IP地址和目的端口;确定SNAT数据对应的五元组的哈希值,五元组包括:源IP地址、源端口、目的IP地址、目的端口、协议;基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,并确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致;当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,通过发送队列对应的中央处理器CPU核心转发SNAT数据,目标间接表为基于NAT网关对应的多个CPU核心得到的。
在一种可能的实现方式中,确定SNAT数据对应的五元组的哈希值,包括:NAT网关基于接收方扩展RSS对获取到的SNAT数据进行解析,获取源IP地址、源端口、目的IP地址、目的端口、协议;NAT网关基于预设的哈希函数对SNAT数据对应的五元组进行处理,得到SNAT数据对应的五元组的哈希值。
在一种可能的实现方式中,基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,包括:从哈希值中确定出目标数据,并基于目标数据从目标间接表中确定转发SNAT数据的发送队列,目标数据为哈希值中最低的N位数据,N为正整数。
在一种可能的实现方式中,方法还包括:当确定目标发送队列对应的IP地址与目的IP地址不一致,或目标发送队列对应的端口与目的端口不一致时,重新执行目标操作;其中,目标操作包括:NAT网关重新为SNAT数据分配目的IP地址和目的端口,并重新确定目标发送队列对应的IP地址是否与重新分配的目的IP地址一致、目标发送队列对应的端口是否与重新分配的目的端口一致。
第二方面,提供了一种数据转发装置,该数据转发装置包括:获取单元、处理单元和转发单元;获取单元,用于网络地址转换NAT网关获取源地址转换SNAT数据;处理单元,用于为SNAT数据分配目的互联网协议IP地址和目的端口;处理单元,还用于确定SNAT数据对应的五元组的哈希值,五元组包括:源IP地址、源端口、目的IP地址、目的端口、协议;处理单元,还用于基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,并确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致;转发单元,用于当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,通过发送队列对应的中央处理器CPU核心转发SNAT数据,目标间接表为基于NAT网关对应的多个CPU核心得到的。
在一种可能的实现方式中,处理单元,具体用于NAT网关基于接收方扩展RSS对获取到的SNAT数据进行解析,获取源IP地址、源端口、目的IP地址、目的端口、协议;处理单元,具体用于NAT网关基于预设的哈希函数对SNAT数据对应的五元组进行处理,得到SNAT数据对应的五元组的哈希值。
在一种可能的实现方式中,处理单元,具体用于从哈希值中确定出目标数据,并基于目标数据从目标间接表中确定转发SNAT数据的发送队列,目标数据为哈希值中最低的N位数据,N为正整数。
在一种可能的实现方式中,处理单元,还用于当确定目标发送队列对应的IP地址与目的IP地址不一致,或目标发送队列对应的端口与目的端口不一致时,重新执行目标操作;其中,目标操作包括:NAT网关重新为SNAT数据分配目的IP地址和目的端口,并重新确定目标发送队列对应的IP地址是否与重新分配的目的IP地址一致、目标发送队列对应的端口是否与重新分配的目的端口一致。
第三方面,一种电子设备,包括:处理器以及存储器;其中,存储器用于存储一个或多个程序,一个或多个程序包括计算机执行指令,当电子设备运行时,处理器执行存储器存储的计算机执行指令,以使电子设备执行如第一方面的一种数据转发方法。
第四方面,提供了一种存储一个或多个程序的计算机可读存储介质,该一个或多个程序包括指令,上述指令当被计算机执行时使计算机执行如第一方面的一种数据转发方法。
本申请提供了一种数据转发方法、装置、设备及存储介质,应用于NAT网关对数据进行转发的场景中。当NAT网关获取到SNAT数据时,为SNAT数据分配目的互联网协议IP地址和目的端口;然后确定SNAT数据对应的包括源IP地址、源端口、目的IP地址、目的端口、协议的五元组的哈希值。进一步的,基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,并确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致;当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,通过发送队列对应的中央处理器CPU核心转发SNAT数据。本申请通过SNAT数据对应的五元组的哈希值,从目标间接表中确定转发SNAT数据的目标发送队列,并进一步的判断目标发送队列对应的IP地址是否与分配的目的IP地址一致、目标发送队列对应的端口是否与分配的目的端口一致,从而可以提高NAT网关对数据转发的效率。
附图说明
图1为本申请的实施例提供的一种现有的数据转发***结构示意图;
图2为本申请的实施例提供的一种数据转发***结构示意图一;
图3为本申请的实施例提供的一种数据转发方法流程示意图一;
图4为本申请的实施例提供的一种数据转发方法流程示意图二;
图5为本申请的实施例提供的一种数据转发***结构示意图二;
图6为本申请的实施例提供的一种数据转发方法流程示意图三;
图7为本申请的实施例提供的一种数据转发方法流程示意图四;
图8为本申请的实施例提供的一种数据转发方法流程示意图五;
图9为本申请的实施例提供的一种数据转发装置结构示意图;
图10为本申请的实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在本申请的描述中,除非另有说明,“/”表示“或”的意思,例如,A/B可以表示A或B。本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。此外,“至少一个”“多个”是指两个或两个以上。“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
NAT网关的目的是使VPC内部主机能够共享一个或者多个公网IP访问外部网络(即进行网络源地址转换(Source Network Address Translation,SNAT)),或者外部网络通过访问NAT网关访问VPC内部主机(即进行网络目的地址转换(Destination Network AddressTranslation,DNAT))。单臂NAT网关网卡队列、CPU核心、工作线程是一一对应的,双臂NAT网关的工作线程对应特定的CPU核心,并分别处理网卡1的某一个接收队列,网卡2的某一个接收队列。以单臂NAT网关为例,在进行SNAT的过程中,存在内部会话和外部会话一一对应的关系,如图1所示,内部会话四元组SIP、DIP、sport、dport在经过NAT网关后SIP改为公网IP,sport改为新分配的端口形成外部会话四元组。假如内部会话被网卡接收队列1收到,此接收队列被CPU1所在的工作线程处理,但当此内部会话对应的外部会话报文回到NAT网关时,按照接收方扩展(Receive-Side Scaling,RSS)分流算法分流到网卡的某个接收队列,此队列不一定是网卡接收队列1,可能是接收队列6,由此就会引发跨线程处理任务,如果出现大量跨线程任务,那么多处理器,多网卡队列的NAT网关就会因为访问公共资源、使用锁、或者线程调度,出现大量高速缓存失败(cache miss)的情况,降低转发性能。
本申请的目的是解决NAT网关在SNAT过程中内部会话和外部会话报文被NAT网关网卡不同接收队列接收,从而引发跨线程任务导致NAT网关转发性能降低问题。
需要说明的是,网卡RSS可以使相同四元组(即源IP、源端口、目的IP、目的端口)的数据包被同一网卡接收队列接收,从而被运行在同一CPU核上的工作线程处理,提升了工作线程的转发效率,RSS分为对称哈希算法和非对称哈希算法。对称哈希算法保证一个会话的两个方向都会被同一接收队列接收。非对称哈希算法不能保证一个会话的两个方向都会被同一接收队列接收。但网卡硬件RSS非对称哈希算法只能解决相同四元组进出流量被分流到相同网卡接收队列。
本申请实施例提供的一种数据转发方法,可以适用于数据转发***。图2示出了该数据转发***的一种结构示意图。如图2所示,数据转发***20包括:网络接口控制器(network interface controller,NIC)21和NAT网关22。
其中,数据转发***20可以为一个网络节点,网络接口控制器21用于传输待转发的SNAT数据,NAT网关22用于对待转发的SNAT数据进行处理,确定转发SNAT数据的发送队列。
下面结合附图对本申请实施例提供的一种数据转发方法进行描述。
如图3所示,本申请实施例提供的一种数据转发方法,包括S201-S204:
S201、网络地址转换NAT网关获取源地址转换SNAT数据,并为SNAT数据分配目的互联网协议IP地址和目的端口。
可选的,当NAT网关接收到其他网络设备发送的SNAT数据之后,需要为SNAT数据分配目的互联网协议IP地址和目的端口,以将SNAT数据通过对应的CPU核心进行转发。
S202、确定SNAT数据对应的五元组的哈希值。
其中,五元组包括:源IP地址、源端口、目的IP地址、目的端口、协议。
可选的,在NAT网关获取到SNAT数据之后,需要进一步的确定SNAT数据对应的源IP地址、源端口、目的IP地址、目的端口、协议等信息,以将源IP地址、源端口、目的IP地址、目的端口、协议作为SNAT数据对应的五元组,并确定SNAT数据对应的五元组的哈希值。
在一种设计中,如图4所示,本申请实施例提供的一种数据转发方法,上述步骤S202中的方法,具体可以包括S301-S302:
S301、NAT网关基于接收方扩展RSS对获取到的SNAT数据进行解析,获取源IP地址、源端口、目的IP地址、目的端口、协议。
可选的,如图5所示,NAT网关基于的RSS验算方法,主要是在NAT网关的基本功能的基础上进行的算法改进。主要模块是RSS验算模块,当SNAT内部报文(即SNAT数据)进入NAT网关时,NAT网关根据内部会话分配外部会话的公网IP(即目的IP地址)、端口(即目的端口),RSS验算模块根据外部会话五元组(即SNAT数据对应的五元组)进行验算,最大n次重试验算内保证外部会话和内部会话数据报文被网卡同一接收队列接收,如果超出n次重试没有成功就按照原有流程继续执行。
需要说明的是,RSS是一种网卡驱动技术,能让多核***中跨多个处理器的网络收包处理能力高效能分配。由于同一个核的处理器超线程共享同一个执行引擎,这个效果跟有多个物理核的处理器不一样。因此,RSS不能使用超线程处理器。RSS是网卡提供的分流机制,用来将报文分流到不同的收包队列,以提高收包性能。
并且,RSS也称为多队列接收,它在多个基于硬件的接收队列之间分配网络接收处理,从而允许多个CPU处理入站网络流量。RSS可用于缓解单个CPU过载导致的接收中断处理瓶颈,并减少网络延迟。它的作用是在每个传入的数据包上发出带有预定义哈希键的哈希函数。哈希函数将数据包的IP地址,协议(即传输控制协议(Transport Control Protocol,TCP)或用户数据报协议(User Data Protocol,UDP))和端口构成五元组作为键,并计算哈希值。
S302、NAT网关基于预设的哈希函数对SNAT数据对应的五元组进行处理,得到SNAT数据对应的五元组的哈希值。
可选的,NAT网关通过预设的哈希函数,根据五元组计算出SNAT数据对应的哈希值。
S203、基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,并确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致。
可选的,需要预先确定每个发送队列对应的IP地址和端口,并基于每个发送队列对应的IP地址和端口构建目标间接表。
可选的,在确定SNAT数据对应的五元组的哈希值之后,可以进一步的基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列。
进一步的,在基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列之后,还需要确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致,从而确定为SNAT数据分配目的互联网协议IP地址和目的端口是否可用。
可选的,根据目标间接表中存储的值,确定转发SNAT数据的目标发送队列,以通过目标发送队列对应的中央处理器CPU核心转发SNAT数据。
需要说明的是,RSS的关键点在于哈希函数的选取、哈希mask的选取、RSS key的选取,以及哈希类型的选取。网络接口控制器(network interface controller,NIC)或其微型端口驱动程序使用RSS哈希函数来计算RSS哈希值;哈希值的低几位与哈希mask取余的值索引目标间接表,决定数据包分配到哪个CPU核心,目标间接表一般由驱动程序进行编写;指定的NIC必须用来计算RSS哈希值的接收网络数据部分,分为ipv4、ipv6、tcp-ipv4、udp-ipv4等。NAT网关主要关注tcp-ipv、udp-ipv4;RSS key作为哈希函数的哈希因子,计算哈希值,分为对称RSS key和非对称RSS key;RSS哈希类型选取包括:IP、TCP、UDP。
可选的,NAT网关的RSS验算方法具体可以为:哈希函数的实现具体采用开源软件dpdk rss实现,这也是硬件唯一支持的RSS哈希函数实现方法:
{
for(j=0;j<input_len;j++)
{
for(map=input_tuple[j];map;map&=(map-1))
{
i = rte_bsf32 (map);
ret^=((const u32*)rss_key)[j]<<(31-i)|
(u32)((u64_rss)(((const u32*)rss_key)[j+1])>>(i+1));
}
}
}
RSS key选取:
static u32rss_key_default_i40[]={0x6b793944,
0x23504cb5,0x5bea75b6,0x309f4f12,0x3dc0a2b8,
0x024ddcdf,0x339b8ca0,0x4c4af64a,0x34fac605,
0x55d85839,0x3a58997d,0x2ec938e1,0x66031581};
在一种设计中,如图6所示,本申请实施例提供的一种数据转发方法,上述步骤S203中的“基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列”方法,具体可以包括步骤S401:
S401、从哈希值中确定出目标数据,并基于目标数据从目标间接表中确定转发SNAT数据的发送队列。
其中,目标数据为哈希值中最低的N位数据,N为正整数。
可选的,哈希值的多个最低有效位用于索引目标间接表,目标间接表中的值用于将接收到的数据分配给CPU。通过获取哈希值的低几位(即哈希值中最低的N位数据)作为目标间接表(redirection table,RETA)的索引,RETA又称为重定向方向表。
其中,最低有效位(least significant bit,LSB)指的是一个二进制数字中的第0位(即最低位)。
具体的,NAT网关驱动通过RSS计算的哈希函数取低几位与CPU核心个数整除,得出的值再通过目标间接表获取对应的发送队列。
需要说明的是,驱动在初始化NAT网关时已经按照CPU核心个数生成了对应的目标间接表。NAT网关在初始化时,为网卡设置RSS key、哈希类型、哈希函数等参数。
S204、当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,通过目标发送队列对应的中央处理器CPU核心转发SNAT数据。
其中,目标间接表为基于NAT网关对应的多个CPU核心得到的。
可选的,当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,即确定为SNAT数据分配目的互联网协议IP地址和目的端口可用时,可以通过发送队列对应的中央处理器CPU核心转发SNAT数据。
示例性的,如图7所示,NAT网关在接收到SNAT数据之后,通过哈希函数确定SNAT数据对应的五元组的哈希值,然后基于哈希值通过哈希mask基于索引从目标间接表中确定转发SNAT数据的目标发送队列,并通过目标发送队列对应的CPU核心转发SNAT数据。
在一种设计中,如图8所示,本申请实施例提供的一种数据转发方法中,具体还可以包括S501:
S501、当确定目标发送队列对应的IP地址与目的IP地址不一致,或目标发送队列对应的端口与目的端口不一致时,重新执行目标操作。
其中,目标操作包括:NAT网关重新为SNAT数据分配目的IP地址和目的端口,并重新确定目标发送队列对应的IP地址是否与重新分配的目的IP地址一致、目标发送队列对应的端口是否与重新分配的目的端口一致。
可选的,当内部会话进入NAT网关后,网关为内部会话分配目的IP地址和目的端口,并通过RSS验算函数计算生成的外部会话哈希值,将生成的哈希值除以总线程数(CPU核心数或者workers)得出的值是否是现在处理线程的ID,如果是则说明RSS验算成功,完成对SNAT数据的转发。如果不是则重新为SNAT数据分配IP地址和端口;当重试N次后还是失败,则使用最后一次分配的IP地址和端口完成对SNAT数据的转发。
本申请的核心是软件实现硬件的RSS哈希函数,通过工作线程(CPU核心)生成目标间接表,且保证硬件使用的RSS key和软件使用相同的key,在分配目的IP地址和目的端口时,进行RSS验算,在N次验算内保证NAT内部会话数据包和外部会话数据包被网卡同一接收队列接收。将这个算法运用在NAT网关进行对SNAT数据分配公网IP和端口流程处理中,有效提高NAT网关转发效率。
本申请提供了一种数据转发方法,当NAT网关获取到SNAT数据时,为SNAT数据分配目的互联网协议IP地址和目的端口;然后确定SNAT数据对应的包括源IP地址、源端口、目的IP地址、目的端口、协议的五元组的哈希值。进一步的,基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,并确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致;当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,通过发送队列对应的中央处理器CPU核心转发SNAT数据。本申请通过SNAT数据对应的五元组的哈希值,从目标间接表中确定转发SNAT数据的目标发送队列,并进一步的判断目标发送队列对应的IP地址是否与分配的目的IP地址一致、目标发送队列对应的端口是否与分配的目的端口一致,从而可以提高NAT网关对数据转发的效率。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对一种数据转发装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。可选的,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图9为本申请实施例提供的一种数据转发装置的结构示意图。如图9所示,一种数据转发装置40用于提高NAT网关对数据转发的效率,例如用于执行图3所示的一种数据转发方法。该数据转发装置40包括:获取单元401、处理单元402和转发单元403;
获取单元401,用于网络地址转换NAT网关获取源地址转换SNAT数据;
处理单元402,用于为SNAT数据分配目的互联网协议IP地址和目的端口;
处理单元402,还用于确定SNAT数据对应的五元组的哈希值,五元组包括:源IP地址、源端口、目的IP地址、目的端口、协议;
处理单元402,还用于基于哈希值从目标间接表中确定转发SNAT数据的目标发送队列,并确定目标发送队列对应的IP地址是否与目的IP地址一致、目标发送队列对应的端口是否与目的端口一致;
转发单元403,用于当确定目标发送队列对应的IP地址与目的IP地址一致、目标发送队列对应的端口与目的端口一致时,通过发送队列对应的中央处理器CPU核心转发SNAT数据,目标间接表为基于NAT网关对应的多个CPU核心得到的。
在一种可能的实现方式中,在本申请实施例提供的一种数据转发装置40中,处理单元402,具体用于NAT网关基于接收方扩展RSS对获取到的SNAT数据进行解析,获取源IP地址、源端口、目的IP地址、目的端口、协议;
处理单元402,具体用于NAT网关基于预设的哈希函数对SNAT数据对应的五元组进行处理,得到SNAT数据对应的五元组的哈希值。
在一种可能的实现方式中,在本申请实施例提供的一种数据转发装置40中,处理单元402,具体用于从哈希值中确定出目标数据,并基于目标数据从目标间接表中确定转发SNAT数据的发送队列,目标数据为哈希值中最低的N位数据,N为正整数。
在一种可能的实现方式中,在本申请实施例提供的一种数据转发装置40中,处理单元402,还用于当确定目标发送队列对应的IP地址与目的IP地址不一致,或目标发送队列对应的端口与目的端口不一致时,重新执行目标操作;
其中,目标操作包括:NAT网关重新为SNAT数据分配目的IP地址和目的端口,并重新确定目标发送队列对应的IP地址是否与重新分配的目的IP地址一致、目标发送队列对应的端口是否与重新分配的目的端口一致。
在采用硬件的形式实现上述集成的模块的功能的情况下,本申请实施例提供了上述实施例中所涉及的电子设备的一种可能的结构示意图。如图10所示,一种电子设备60,用于提高NAT网关对数据转发的效率,例如用于执行图3所示的一种数据转发方法。该电子设备60包括处理器601,存储器602以及总线603。处理器601与存储器602之间可以通过总线603连接。
处理器601是通信装置的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器601可以是一个通用中央处理单元(central processing unit,CPU),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
作为一种实施例,处理器601可以包括一个或多个CPU,例如图10中所示的CPU 0和CPU 1。
存储器602可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
作为一种可能的实现方式,存储器602可以独立于处理器601存在,存储器602可以通过总线603与处理器601相连接,用于存储指令或者程序代码。处理器601调用并执行存储器602中存储的指令或程序代码时,能够实现本申请实施例提供的一种数据转发方法。
另一种可能的实现方式中,存储器602也可以和处理器601集成在一起。
总线603,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、***设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图10示出的结构并不构成对该电子设备60的限定。除图10所示部件之外,该电子设备60可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
作为一个示例,结合图9,电子设备中的获取单元401、处理单元402和转发单元403实现的功能与图10中的处理器601的功能相同。
可选的,如图10所示,本申请实施例提供的电子设备60还可以包括通信接口604。
通信接口604,用于与其他设备通过通信网络连接。该通信网络可以是以太网,无线接入网,无线局域网(wireless local area networks,WLAN)等。通信接口604可以包括用于接收数据的接收单元,以及用于发送数据的发送单元。
在一种设计中,本申请实施例提供的电子设备中,通信接口还可以集成在处理器中。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明。在实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机执行该指令时,该计算机执行上述方法实施例所示的方法流程中的各个步骤。
本申请的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行上述方法实施例中的一种数据转发方法。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘。随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的人以合适的组合、或者本领域数值的任何其他形式的计算机可读存储介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(Application Specific Integrated Circuit,ASIC)中。
在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
由于本申请的实施例中的电子设备、计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本申请实施例在此不再赘述。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。
Claims (10)
1.一种数据转发方法,其特征在于,所述方法包括:
网络地址转换NAT网关获取源地址转换SNAT数据,并为所述SNAT数据分配目的互联网协议IP地址和目的端口;
确定所述SNAT数据对应的五元组的哈希值,所述五元组包括:源IP地址、源端口、所述目的IP地址、所述目的端口、协议;
基于所述哈希值从目标间接表中确定转发所述SNAT数据的目标发送队列,并确定所述目标发送队列对应的IP地址是否与所述目的IP地址一致、所述目标发送队列对应的端口是否与所述目的端口一致,所述目标间接表为基于每个发送队列对应的IP地址和端口构建的,所述目标间接表为在初始化NAT网关时按照CPU核心个数生成的;
当确定所述目标发送队列对应的IP地址与所述目的IP地址一致、所述目标发送队列对应的端口与所述目的端口一致时,通过所述目标发送队列对应的中央处理器CPU核心转发所述SNAT数据,所述目标间接表为基于所述NAT网关对应的多个CPU核心得到的。
2.根据权利要求1所述的方法,其特征在于,所述确定所述SNAT数据对应的五元组的哈希值,包括:
所述NAT网关基于接收方扩展RSS对获取到的所述SNAT数据进行解析,获取所述源IP地址、所述源端口、所述目的IP地址、所述目的端口、所述协议;
所述NAT网关基于预设的哈希函数对所述SNAT数据对应的五元组进行处理,得到所述SNAT数据对应的五元组的哈希值。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述哈希值从目标间接表中确定转发所述SNAT数据的目标发送队列,包括:
从所述哈希值中确定出目标数据,并基于所述目标数据从所述目标间接表中确定转发所述SNAT数据的发送队列,所述目标数据为所述哈希值中最低的N位数据,N为正整数。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当确定所述目标发送队列对应的IP地址与所述目的IP地址不一致,或所述目标发送队列对应的端口与所述目的端口不一致时,重新执行目标操作;
其中,所述目标操作包括:所述NAT网关重新为所述SNAT数据分配目的IP地址和目的端口,并重新确定所述目标发送队列对应的IP地址是否与重新分配的目的IP地址一致、所述目标发送队列对应的端口是否与重新分配的目的端口一致。
5.一种数据转发装置,其特征在于,所述数据转发装置包括:获取单元、处理单元和转发单元;
所述获取单元,用于网络地址转换NAT网关获取源地址转换SNAT数据;
所述处理单元,用于为所述SNAT数据分配目的互联网协议IP地址和目的端口;
所述处理单元,还用于确定所述SNAT数据对应的五元组的哈希值,所述五元组包括:源IP地址、源端口、所述目的IP地址、所述目的端口、协议;
所述处理单元,还用于基于所述哈希值从目标间接表中确定转发所述SNAT数据的目标发送队列,并确定所述目标发送队列对应的IP地址是否与所述目的IP地址一致、所述目标发送队列对应的端口是否与所述目的端口一致,所述目标间接表为基于每个发送队列对应的IP地址和端口构建的,所述目标间接表为在初始化NAT网关时按照CPU核心个数生成的;
所述转发单元,用于当确定所述目标发送队列对应的IP地址与所述目的IP地址一致、所述目标发送队列对应的端口与所述目的端口一致时,通过所述发送队列对应的中央处理器CPU核心转发所述SNAT数据,所述目标间接表为基于所述NAT网关对应的多个CPU核心得到的。
6.根据权利要求5所述的数据转发装置,其特征在于,所述处理单元,具体用于所述NAT网关基于接收方扩展RSS对获取到的所述SNAT数据进行解析,获取所述源IP地址、所述源端口、所述目的IP地址、所述目的端口、所述协议;
所述处理单元,具体用于所述NAT网关基于预设的哈希函数对所述SNAT数据对应的五元组进行处理,得到所述SNAT数据对应的五元组的哈希值。
7.根据权利要求5或6所述的数据转发装置,其特征在于,所述处理单元,具体用于从所述哈希值中确定出目标数据,并基于所述目标数据从所述目标间接表中确定转发所述SNAT数据的发送队列,所述目标数据为所述哈希值中最低的N位数据,N为正整数。
8.根据权利要求5或6所述的数据转发装置,其特征在于,所述处理单元,还用于当确定所述目标发送队列对应的IP地址与所述目的IP地址不一致,或所述目标发送队列对应的端口与所述目的端口不一致时,重新执行目标操作;
其中,所述目标操作包括:所述NAT网关重新为所述SNAT数据分配目的IP地址和目的端口,并重新确定所述目标发送队列对应的IP地址是否与重新分配的目的IP地址一致、所述目标发送队列对应的端口是否与重新分配的目的端口一致。
9.一种电子设备,其特征在于,包括:处理器以及存储器;其中,所述存储器用于存储一个或多个程序,所述一个或多个程序包括计算机执行指令,当所述电子设备运行时,处理器执行所述存储器存储的所述计算机执行指令,以使所述电子设备执行权利要求1-4中任一项所述的一种数据转发方法。
10.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当被计算机执行时使所述计算机执行如权利要求1-4中任一项所述的一种数据转发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211625711.9A CN116248590B (zh) | 2022-12-16 | 2022-12-16 | 数据转发方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211625711.9A CN116248590B (zh) | 2022-12-16 | 2022-12-16 | 数据转发方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116248590A CN116248590A (zh) | 2023-06-09 |
CN116248590B true CN116248590B (zh) | 2024-05-10 |
Family
ID=86632098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211625711.9A Active CN116248590B (zh) | 2022-12-16 | 2022-12-16 | 数据转发方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116248590B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101068212A (zh) * | 2007-06-11 | 2007-11-07 | 中兴通讯股份有限公司 | 一种网络地址转换转发的装置及方法 |
CN101227398A (zh) * | 2008-01-31 | 2008-07-23 | 中兴通讯股份有限公司 | 网络地址转换的自动调整应用的***及方法 |
JP2009159141A (ja) * | 2007-12-25 | 2009-07-16 | Duaxes Corp | ネットワークアドレス変換装置 |
CN101573994A (zh) * | 2006-10-23 | 2009-11-04 | 泰克迪亚科技公司 | 使用局部对等群组作为网络群组的路边网络单元 |
CN102763393A (zh) * | 2009-12-23 | 2012-10-31 | 思杰***有限公司 | 用于在多核***中管理跨越核的rtsp的端口的***和方法 |
CN103269317A (zh) * | 2013-04-22 | 2013-08-28 | 北京百度网讯科技有限公司 | 基于对称多处理smp***的无锁化通信方法和*** |
CA2842555A1 (en) * | 2013-02-07 | 2014-08-07 | The Royal Institution For The Advancement Of Learning/Mcgill University | Methods and systems for network address lookup engines |
CN104468412A (zh) * | 2014-12-04 | 2015-03-25 | 东软集团股份有限公司 | 基于rss的网络会话数据包分发方法及*** |
CN104518935A (zh) * | 2013-09-27 | 2015-04-15 | 华为技术有限公司 | 实现虚拟网络通信的方法、装置和*** |
CN105871741A (zh) * | 2015-01-23 | 2016-08-17 | 阿里巴巴集团控股有限公司 | 一种报文分流方法及装置 |
CN107347046A (zh) * | 2016-05-04 | 2017-11-14 | 北京化工大学 | 一种跨网段的数据报头压缩实现方法 |
CN109067935A (zh) * | 2018-08-16 | 2018-12-21 | 深圳市风云实业有限公司 | 分片报文处理方法及多核处理器*** |
CN111447155A (zh) * | 2020-03-24 | 2020-07-24 | 广州市百果园信息技术有限公司 | 数据传输方法、装置、设备及存储介质 |
CN112087533A (zh) * | 2020-09-11 | 2020-12-15 | 北京青云科技股份有限公司 | 报文处理方法、装置、设备和存储介质 |
CN113507532A (zh) * | 2021-08-24 | 2021-10-15 | 优刻得科技股份有限公司 | 网络地址转换的方法及相应服务器、存储介质和电子设备 |
CN114490039A (zh) * | 2021-12-30 | 2022-05-13 | 武汉思普崚技术有限公司 | Cpu负载均衡的网卡流量二次分派方法、***、设备及介质 |
-
2022
- 2022-12-16 CN CN202211625711.9A patent/CN116248590B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101573994A (zh) * | 2006-10-23 | 2009-11-04 | 泰克迪亚科技公司 | 使用局部对等群组作为网络群组的路边网络单元 |
CN101068212A (zh) * | 2007-06-11 | 2007-11-07 | 中兴通讯股份有限公司 | 一种网络地址转换转发的装置及方法 |
JP2009159141A (ja) * | 2007-12-25 | 2009-07-16 | Duaxes Corp | ネットワークアドレス変換装置 |
CN101227398A (zh) * | 2008-01-31 | 2008-07-23 | 中兴通讯股份有限公司 | 网络地址转换的自动调整应用的***及方法 |
CN102763393A (zh) * | 2009-12-23 | 2012-10-31 | 思杰***有限公司 | 用于在多核***中管理跨越核的rtsp的端口的***和方法 |
CA2842555A1 (en) * | 2013-02-07 | 2014-08-07 | The Royal Institution For The Advancement Of Learning/Mcgill University | Methods and systems for network address lookup engines |
CN103269317A (zh) * | 2013-04-22 | 2013-08-28 | 北京百度网讯科技有限公司 | 基于对称多处理smp***的无锁化通信方法和*** |
CN104518935A (zh) * | 2013-09-27 | 2015-04-15 | 华为技术有限公司 | 实现虚拟网络通信的方法、装置和*** |
CN104468412A (zh) * | 2014-12-04 | 2015-03-25 | 东软集团股份有限公司 | 基于rss的网络会话数据包分发方法及*** |
CN105871741A (zh) * | 2015-01-23 | 2016-08-17 | 阿里巴巴集团控股有限公司 | 一种报文分流方法及装置 |
CN107347046A (zh) * | 2016-05-04 | 2017-11-14 | 北京化工大学 | 一种跨网段的数据报头压缩实现方法 |
CN109067935A (zh) * | 2018-08-16 | 2018-12-21 | 深圳市风云实业有限公司 | 分片报文处理方法及多核处理器*** |
CN111447155A (zh) * | 2020-03-24 | 2020-07-24 | 广州市百果园信息技术有限公司 | 数据传输方法、装置、设备及存储介质 |
CN112087533A (zh) * | 2020-09-11 | 2020-12-15 | 北京青云科技股份有限公司 | 报文处理方法、装置、设备和存储介质 |
CN113507532A (zh) * | 2021-08-24 | 2021-10-15 | 优刻得科技股份有限公司 | 网络地址转换的方法及相应服务器、存储介质和电子设备 |
CN114490039A (zh) * | 2021-12-30 | 2022-05-13 | 武汉思普崚技术有限公司 | Cpu负载均衡的网卡流量二次分派方法、***、设备及介质 |
Non-Patent Citations (4)
Title |
---|
Extending Port Forwarding Concept to IOT;Nidhi Verma;《2018 International Conference on Advances in Computing, Communication Control and Networking (ICACCCN)》;20190701;全文 * |
基于iptables防火墙的设计与实现;邹林志;《电脑迷》;20180930;全文 * |
基于网络处理器的NAT-PT转换网关的性能研究;陈沫;《***仿真学报》;20070630;全文 * |
网络处理器技术比较研究;彭墨青;;福建电脑;20090201(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116248590A (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036529B2 (en) | Network policy implementation with multiple interfaces | |
US20220214919A1 (en) | System and method for facilitating efficient load balancing in a network interface controller (nic) | |
US10320683B2 (en) | Reliable load-balancer using segment routing and real-time application monitoring | |
EP2928134B1 (en) | High-performance, scalable and packet drop-free data center switch fabric | |
EP2928135B1 (en) | Pcie-based host network accelerators (hnas) for data center overlay network | |
US9792154B2 (en) | Data processing system having a hardware acceleration plane and a software plane | |
US8661160B2 (en) | Bidirectional receive side scaling | |
US8660137B2 (en) | Method and system for quality of service and congestion management for converged network interface devices | |
WO2017112165A1 (en) | Accelerated network packet processing | |
US11489945B2 (en) | TCP packet processing method, toe component, and network device | |
US11277350B2 (en) | Communication of a large message using multiple network interface controllers | |
US11394804B2 (en) | System and method for stateless distribution of bidirectional flows with network address translation | |
US20190042314A1 (en) | Resource allocation | |
WO2020134153A1 (zh) | 一种分流方法、***和处理设备 | |
US20060251071A1 (en) | Apparatus and method for IP packet processing using network processor | |
KR20100032111A (ko) | 네트워크 프로세서를 이용한 라우팅 시스템에서 ip 패킷의 플레그먼테이션 처리 장치 및 방법 | |
CN116248590B (zh) | 数据转发方法、装置、设备及存储介质 | |
CN110602262A (zh) | 路由器及其处理数据报文的方法 | |
WO2018057165A1 (en) | Technologies for dynamically transitioning network traffic host buffer queues | |
CN116232992B (zh) | 数据转发方法、装置、设备及存储介质 | |
US11271897B2 (en) | Electronic apparatus for providing fast packet forwarding with reference to additional network address translation table | |
Zeng et al. | Middlenet: A high-performance, lightweight, unified nfv and middlebox framework | |
US7290055B2 (en) | Multi-threaded accept mechanism in a vertical perimeter communication environment | |
US20230208913A1 (en) | In-order streaming in-network computation | |
US20240089219A1 (en) | Packet buffering technologies |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |