CN105516302A - 一种数据处理方法及网络设备 - Google Patents
一种数据处理方法及网络设备 Download PDFInfo
- Publication number
- CN105516302A CN105516302A CN201510890178.2A CN201510890178A CN105516302A CN 105516302 A CN105516302 A CN 105516302A CN 201510890178 A CN201510890178 A CN 201510890178A CN 105516302 A CN105516302 A CN 105516302A
- Authority
- CN
- China
- Prior art keywords
- session
- cpu core
- packet
- node
- conversational list
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/148—Migration or transfer of sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种数据处理方法及网络设备,该方法包括:第一CPU核在接收到会话一方发送的第一数据包后,在对应会话表中建立会话节点,第一数据包是该会话的第一个数据包且是网卡基于变化前的会话标识信息通过RSS算法映射到第一CPU核上的,基于变化后的会话标识信息通过RSS算法确定该会话另一方发送的数据包将被映射到第二CPU核上;第二CPU核在接收到第一CPU核发送的第一数据包后,在对应会话表中建立会话节点并处理第一数据包;当第一CPU核接收到该会话的第二数据包时,通过查询会话表确定第二数据包由第二CPU核处理,则将第二数据包交给第二CPU核;当第二CPU核接收到该会话的第二数据包时,通过查询会话表确定第二数据包由自己处理,则处理二数据包。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法及网络设备。
背景技术
在防火墙等网络设备中,流量信息的处理一般以网络会话(session)为结点单位。一条网络会话以五元组(源IP,目的IP,源端口,目的端口,协议)等要素作为标识,记录了与所述网络会话相关的各种信息,如:会话何时超时、TCP(TransmissionControlProtocol传输控制协议)的当前状态等等。各个网络会话的标识以哈希表的形式组织起来,形成session表。
RSS(receivesidescaling,接收端调节)是一种网络数据包分发机制。为了提升计算机的性能,现代计算机一般采用多核架构处理数据。当基于多核架构的网络设备接收到一个网络数据包时,相关的网卡需要通过类似RSS的机制决定将这个数据包交由哪个CPU处理。当其参数满足一定条件时,RSS技术可以保证一条session上两个方向的数据包都映射到一个CPU核上。RSS技术应用广泛,尤其是在一些高性能的网络硬件设备中,如Intel推出的基于8259910Gb以太网控制器的万兆网卡就支持使用开发者给定的参数通过RSS来进行CPU的任务分配。
在多核系统中,session一般是全局唯一的,各个CPU核均可访问。当某个CPU核通过RSS等机制收到数据包后,需要确定这个数据包是否有对应的session结点,如果有对应的session结点但可能该session并不是由该CPU核处理。因此,该CPU核首先访问全局session表,查看全局session表上是否有记录了该数据包信息的session结点。如果没有,则在全局session表中添加该session结点,并在该CPU核上处理该数据包;如果有,则通过查到的session结点提取处理该数据包的CPU核的标识信息即id号,并将该数据包转移给该id号对应的CPU核进行处理。
上述数据处理方式可以把各个数据分摊到各个核上处理,但却有着一个明显的缺陷,即session查询的全局唯一性。这种全局性使得多核系统在做session相关的并发数据操作时,比如多个CPU频繁访问全局session表以对session相关信息进行读写操作时,不得不使用频繁加解锁操作,从而使相关网络设备的吞吐量、新建连接数的性能指标受到很大影响(加解锁操作使得相关代码的并发操作无法完成,对性能影响很大)。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种数据处理方法及网络设备,以实现提高网络设备的数据吞吐量、新建连接数等的目的。
为实现上述目的,本发明实施例提供了一种数据处理方法,所述方法应用于一种包括至少两个CPU核的网络设备,每个CPU核分别对应有一个无锁会话表,所述方法包括:
第一CPU核在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;
所述第一CPU核基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点,并处理所述第一数据包;
当所述第一CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第二CPU核处理,则将所述第二数据包交由所述第二CPU核处理;
当所述第二CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
优选地,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
优选地,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
本发明实施例还提供了一种数据处理方法,所述方法应用于一种包括至少两个CPU核的网络设备,每个CPU核分别对应有一个无锁会话表,所述方法包括:
第一CPU核在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;
所述第一CPU核处理所述第一数据包,并基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点;
当所述第二CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第一CPU核处理,则将所述第二数据包交由所述第一CPU核处理;
当所述第一CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
优选地,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
优选地,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
本发明实施例还提供了一种网络设备,所述网络设备包括至少两个CPU核,每个CPU核分别对应有一个无锁会话表;
第一CPU核,用于在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核,用于在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点,并处理所述第一数据包;
所述第一CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第二CPU核处理,则将所述第二数据包交由所述第二CPU核处理;
所述第二CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
优选地,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
优选地,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
本发明实施例还提供了一种网络设备,所述网络设备包括至少两个CPU核,每个CPU核分别对应有一个无锁会话表;
第一CPU核,用于在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;处理所述第一数据包,并基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核,用于在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点;
所述第二CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第一CPU核处理,则将所述第二数据包交由所述第一CPU核处理;
所述第一CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
优选地,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
优选地,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
本发明实施例提供的数据处理方法及网络设备,如果网络设备利用多个CPU核处理网络数据,则每个CPU核都对自己所接收的数据建立无锁会话表,此时,当一个会话两个方向上的数据包被映射到不同的CPU核上时,这两个CPU核利用该会话的第一个数据包分别在自己的无锁会话表中建立该会话的会话节点,其中,该会话节点中记录了该会话由这两个CPU核中的哪个核处理,后续再接收到该会话的相关数据时,这两个CPU核通过查询对应的会话表便可确定该会话由谁处理,如果由自己处理则对接收的数据进行处理,否则转给对应的CPU核处理。可见,本发明实施例在一个会话两个方向上的数据包被映射到不同的CPU核上时,只需要访问对应的会话表即可,解除了现有技术中对全局会话表进行加解锁操作(多核并发访问全局会话表)所带来的性能限制,对于提升网络设备的吞吐量、新建连接数的性能具有很大作用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例数据处理方法的流程示意图之一;
图2为本发明实施例数据处理方法的流程示意图之二;
图3为本发明实施例络设备的组成示意图之一;
图4为本发明实施例络设备的组成示意图之二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明数据处理方法应用于一种包括至少两个CPU核的网络设备,每个CPU核分别对应有一个无锁会话表。也就是说,如果有多个CPU核处理网络流量,则每个CPU核只对自己所接收的流量建立无锁会话表(无锁session表),这样每个CPU核只需要访问与自己对应的会话表,这种一核对一表的访问方式,避免了现有技术中多核对一表的访问方式所产生的加解锁操作。基于此,下面具体介绍本发明实施例。
参见图1,为发明实施例提供的数据处理方法的流程示意图之一,在该实施例中,对于属于第一会话的数据,由网络设备的第一CPU核转发数据,由网络设备的第二CPU核处理数据,其中,所述第一会话为众多网络会话中的一个网络会话,所述第一CPU核为网格设备中的某个CPU核,所述第二CPU核为网格设备中的不同于所述第一CPU核的某个CPU核。
该方法具体包括:
步骤101:所述第一CPU核在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过RSS(receivesidescaling,接收端调节)算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号。
其中,对于所述第一会话的第一数据包来说,所述会话标识信息包括第一数据包的源IP地址、目的IP地址、源端口、目的端口中的一个或多个。
一条会话对应两个会话方,但一个会话两个方向上的数据包很可能会被网卡映射到不同的CPU核上,这时,如果每个CPU核对应一个会话表,则每个CPU核可能只处理某会话的部分数据,这显然是不可接受的。为此,通过选取合适的RSS参数,可以保证数据流在非NAT(NetworkAddressTranslation,网络地址转换)及NAPT(NetworkAddressPortTranslation,网络端口地址转换)的情况下,网卡能够通过所述RSS算法把同一会话两个方向的数据包映射到同一个CPU核上,其中,在申请号为CN201410741100.X,发明名称为“基于RSS的网络会话数据包分发方法及系统”的专利中,公开了非NAT(RSS的参数key满足以16为周期)和NAPT场景下的RSS参数设置方式及对应的RSS算法。需要说明的是,这种映射方式是基于会话双方的IP地址及协议端口不变的情况下的。
所述第一CPU核在对应的会话表中建立所述第一会话的会话节点,该会话节点记录了所述第一会话的相关信息,其中包括所述第一会话由所述第二CPU核处理的信息。
步骤102:所述第一CPU核基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核。
在本发明实施例中,由于所述会话标识信息发生了变化,比如在NAT的情况下,所述第一数据包的源IP地址发生了变化或用户指定了NAPT的转换端口,导致第一会话的另一方发送过来的数据包将不会被映射(通过RSS算法)到所述第一CPU核上,即所述第一会话两个方向上的数据包将被映射到不同的CPU核(分别为第一CPU核和第二CPU核)上,为了使所述第一会话两个方向上的数据包均由同一个CPU核处理,即由第二CPU核处理,此时,所述第一CPU核根据变化后的会话标识信息以及之前选取的RSS参数,通过所述RSS算法预先计算出回包时的CPU核的ID,即确定所述第一会话的另一方发送的数据包将被映射到的CPU核的ID,然后将所述第一数据包发送给该ID对应的CPU核(即第二CPU核)处理,后续均由所述第二CPU核负责处理所述第一会话的各个数据包。
步骤103:所述第二CPU核在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点,并处理所述第一数据包。
所述第二CPU核在对应的会话表中建立所述第一会话的会话节点,该会话节点记录了所述第一会话的相关信息,其中包括所述第一会话由自己处理的信息。
步骤104:当所述第一CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第二CPU核处理,则将所述第二数据包交由所述第二CPU核处理。
由于所述第一CPU核在对应的会话表中建立了所述第一会话的会话节点,该会话节点记录了所述第一数据包的相关信息,其中记录了所述第一数据包由所述第二CPU核处理的信息,因此,当所述第一CPU核再接收到所述第一会话的其它数据包比如第二数据包时,便可通过访问对应的会话表,查看会话表中是否记录了所述第二数据包对应的会话节点,如果有,则通过查到的会话节点提取处理所述第一会话的CPU核ID,即所述第二CPU核的ID,此时便可将所述第二数据包转给所述第二CPU核处理。
步骤105:当所述第二CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包。
由于所述第二CPU核也在对应的会话表中建立了所述第一会话的会话节点,该会话节点记录了所述第一数据包的相关信息,其中记录了所述第一数据包由所述第一CPU核处理的信息,因此,当所述第二CPU核再接收到所述第一会话的其它数据包比如第二数据包时,便可通过访问对应的会话表,查看会话表中是否记录了所述第二数据包对应的会话节点,如果有,则通过查到的会话节点提取处理第一会话的CPU核ID,当所述第二CPU核发现该CPU核ID为自己的ID时,则处理所述第二数据包。
综上可知,对于在所述第一数据包后发送到网络设备的属于第一会话的其它数据包,所述其它数据包的处理任务由所述第二CPU核承担,而所述第一CPU核如果收到所述第一会话的其它数据包则转发给所述第二CPU核处理。
参见图2,为发明实施例提供的数据处理方法的流程示意图之二,在该实施例中,对于属于第一会话的数据,由网络设备的第二CPU核转发数据,由网络设备的第一CPU核处理数据,其中,所述第一会话为众多网络会话中的一个网络会话,所述第一CPU核为网格设备中的某个CPU核,所述第二CPU核为网格设备中的不同于所述第一CPU核的某个CPU核。
该方法具体包括:
步骤201:所述网第一CPU核在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号。
其中,对于所述第一会话的第一数据包来说,所述会话标识信息包括所述第一数据包的源IP地址、目的IP地址、源端口、目的端口中的一个或多个。
一条会话对应两个会话方,但一个会话两个方向上的数据包很可能会被网卡映射到不同的CPU核上,这时,如果每个CPU核对应一个会话表,则每个CPU核可能只处理某会话的部分数据,这显然是不可接受的。为此,通过选取合适的RSS参数,可以保证数据流在非NAT(NetworkAddressTranslation,网络地址转换)及NAPT(NetworkAddressPortTranslation,网络端口地址转换)的情况下,网卡能够通过所述RSS算法把同一会话两个方向的数据包映射到同一个CPU核上,其中,在申请号为CN201410741100.X,发明名称为“基于RSS的网络会话数据包分发方法及系统”的专利中,公开了非NAT(RSS的参数key满足以16为周期)和NAPT场景下的RSS参数设置方式及对应的RSS算法。需要说明的是,这种映射方式是基于会话双方的IP地址及协议端口不变的情况下的。
所述第一CPU核在对应的会话表中建立所述第一会话的会话节点,该会话节点记录了所述第一会话的相关信息,其中包括所述第一会话由自己处理的信息。
步骤202:所述第一CPU核处理所述第一数据包,并基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核。
在本发明实施例中,由所述第一CPU核负责处理所述第一会话的各个数据包。但由于所述会话标识信息发生了变化,比如在NAT的情况下,所述第一数据包的源IP地址发生了变化或用户指定了NAPT的转换端口,导致第一会话的另一方发送过来的数据包将不会被映射(通过RSS算法)到所述第一CPU核上,即所述第一会话两个方向上的数据包将被映射到不同的CPU核(分别为第一CPU核和第二CPU核)上,为了使所述第一会话两个方向上的数据包均由同一个CPU核处理,即由第一CPU核处理,此时,所述第一CPU核需要根据变化后的会话标识信息以及之前选取的RSS参数,通过所述RSS算法预先计算出回包时的CPU核的ID,即确定所述第一会话的另一方发送的数据包将被映射到的CPU核的ID,然后将所述第一数据包发送给该ID对应的CPU核(即第二CPU核),以便所述第二CPU核也在对应的会话表中建立所述第一会话的会话节点。
步骤203:所述第二CPU核在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点。
所述第二CPU核在自己会话表中建立所述第一会话的会话节点,该会话节点记录了所述第一会话的相关信息,其中包括所述第一会话由所述第一CPU核处理的信息。
步骤204:当所述第二CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第一CPU核处理,则将所述第二数据包交由所述第一CPU核处理。
由于所述第二PU核在对应的会话表中建立了所述第一会话的会话节点,该会话节点记录了所述第一数据包的相关信息,其中记录了所述第一数据包由所述第一CPU核处理的信息,因此,当所述第二CPU核再接收到所述第一会话的其它数据包比如第二数据包时,便可通过访问对应的会话表,查看会话表中是否记录了所述第二数据包对应的会话节点,如果有,则通过查到的会话节点提取处理所述第一会话的CPU核ID,即所述第一CPU核的ID,此时便可将所述第二数据包转给所述第一CPU核处理。
步骤205:当所述第一CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包。
由于所述第一CPU核也在对应的会话表中建立了所述第一会话的会话节点,该会话节点记录了所述第一数据包的相关信息,其中记录了所述第一数据包由所述第一CPU核处理的信息,因此,当所述第一CPU核再接收到所述第一会话的其它数据包比如第二数据包时,便可通过访问对应的会话表,查看会话表中是否记录了所述第二数据包对应的会话节点,如果有,则通过查到的会话节点提取处理第一会话的CPU核ID,当所述第一CPU核发现该CPU核ID为自己的ID时,则处理所述第二数据包。
综上可知,对于在所述第一数据包后发送到网络设备的属于第一会话的其它数据包,所述其它数据包的处理任务由所述第一CPU核承担,而所述第二CPU核如果收到所述第一会话的其它数据包则转发给所述第一CPU核处理。
本发明实施例提供的数据处理方法,如果网络设备利用多个CPU核处理网络数据,则每个CPU核都对自己所接收的数据建立无锁会话表,此时,当一个会话两个方向上的数据包被映射到不同的CPU核上时,这两个CPU核利用该会话的第一个数据包分别在自己的无锁会话表中建立该会话的会话节点,其中,该会话节点中记录了该会话由这两个CPU核中的哪个核处理,后续再接收到该会话的相关数据时,这两个CPU核通过查询对应的会话表便可确定该会话由谁处理,如果由自己处理则对接收的数据进行处理,否则转给对应的CPU核处理。可见,本发明实施例在一个会话两个方向上的数据包被映射到不同的CPU核上时,只需要访问对应的会话表即可,解除了现有技术中对全局会话表进行加解锁操作(多核并发访问全局会话表)所带来的性能限制,对于提升网络设备的吞吐量、新建连接数的性能具有很大作用。
参见图3,为本发明实施例提供的网络设备的组成示意图之一,所述网络设备300包括至少两个CPU核,每个CPU核分别对应有一个无锁会话表;
第一CPU核301,用于在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核302上,将所述第一数据包发送至所述第二CPU核302;
所述第二CPU核302,用于在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点,并处理所述第一数据包;
所述第一CPU核301,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第二CPU核处理,则将所述第二数据包交由所述第二CPU核302处理;
所述第二CPU核302,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核301和所述第二CPU核302属于所述网络设备300。
在本发明实施例中,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
在本发明实施例中,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
参见图4为本发明实施例提供的网络设备的组成示意图之二,所述网络设备400包括至少两个CPU核,每个CPU核分别对应有一个无锁会话表;
第一CPU核401,用于在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;处理所述第一数据包,并基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核402上,将所述第一数据包发送至所述第二CPU核402;
所述第二CPU核402,用于在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点;
所述第二CPU核402,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第一CPU核处理,则将所述第二数据包交由所述第一CPU核401处理;
所述第一CPU核401,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核401和所述第二CPU核402属于所述网络设备。
在本发明实施例中,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
在本发明实施例中,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,对于实施例公开的网络设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种数据处理方法,其特征在于,所述方法应用于一种包括至少两个CPU核的网络设备,每个CPU核分别对应有一个无锁会话表,所述方法包括:
第一CPU核在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;
所述第一CPU核基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点,并处理所述第一数据包;
当所述第一CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第二CPU核处理,则将所述第二数据包交由所述第二CPU核处理;
当所述第二CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
2.根据权利要求1所述的方法,其特征在于,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
3.根据权利要求1或2所述的方法,其特征在于,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
4.一种数据处理方法,其特征在于,所述方法应用于一种包括至少两个CPU核的网络设备,每个CPU核分别对应有一个无锁会话表,所述方法包括:
第一CPU核在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;
所述第一CPU核处理所述第一数据包,并基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点;
当所述第二CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第一CPU核处理,则将所述第二数据包交由所述第一CPU核处理;
当所述第一CPU核接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
5.根据权利要求4所述的方法,其特征在于,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
6.根据权利要求4或5所述的方法,其特征在于,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
7.一种网络设备,其特征在于,所述网络设备包括至少两个CPU核,每个CPU核分别对应有一个无锁会话表;
第一CPU核,用于在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核,用于在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点,并处理所述第一数据包;
所述第一CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第二CPU核处理,则将所述第二数据包交由所述第二CPU核处理;
所述第二CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
8.根据权利要求7所述网络设备,其特征在于,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
9.根据权利要求7或8所述的网络设备,其特征在于,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
10.一种网络设备,其特征在于,所述网络设备包括至少两个CPU核,每个CPU核分别对应有一个无锁会话表;
第一CPU核,用于在接收到第一会话的一方发送的第一数据包后,在对应的会话表中建立所述第一会话的会话节点,其中,所述第一数据包是所述第一会话的第一个数据包且是网卡通过接收端调节RSS算法映射到所述第一CPU核上的,所述RSS算法用于基于变化前的会话标识信息使所述第一会话两个方向上的数据包映射到所述第一CPU核上,所述会话标识信息包括IP地址和/或端口号;处理所述第一数据包,并基于变化后的会话标识信息,通过RSS算法预先确定出所述第一会话的另一方发送的数据包将被映射到第二CPU核上,将所述第一数据包发送至所述第二CPU核;
所述第二CPU核,用于在接收到所述第一数据包后,在对应的会话表中建立所述第一会话的会话节点;
所述第二CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由所述第一CPU核处理,则将所述第二数据包交由所述第一CPU核处理;
所述第一CPU核,还用于当接收到网卡通过RSS算法映射过来的所述第一会话的第二数据包时,若查询到对应的会话表中有所述第一会话的会话节点、且根据查询到的会话节点确定所述第一会话由自己处理,则处理所述第二数据包;
其中,所述第一CPU核和所述第二CPU核属于所述网络设备。
11.根据权利要求10所述的网络设备,其特征在于,在网络地址转换NAT的情况下,所述会话标识信息为所述第一数据包的源IP地址或用户指定的网络端口地址转换NAPT的转换端口。
12.根据权利要求10或11所述的网络设备,其特征在于,所述网卡在非NAT或NAPT的情况下,通过所述RSS算法把同一会话两个方向的数据映射到同一个CPU核上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510890178.2A CN105516302B (zh) | 2015-12-07 | 2015-12-07 | 一种数据处理方法及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510890178.2A CN105516302B (zh) | 2015-12-07 | 2015-12-07 | 一种数据处理方法及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105516302A true CN105516302A (zh) | 2016-04-20 |
CN105516302B CN105516302B (zh) | 2018-08-03 |
Family
ID=55723932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510890178.2A Active CN105516302B (zh) | 2015-12-07 | 2015-12-07 | 一种数据处理方法及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105516302B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598747A (zh) * | 2016-12-15 | 2017-04-26 | 东软集团股份有限公司 | 网络数据包的并行处理方法及装置 |
CN108134855A (zh) * | 2017-12-18 | 2018-06-08 | 东软集团股份有限公司 | Arp表管理方法、处理器核心、存储介质、电子设备 |
CN109165100A (zh) * | 2018-09-06 | 2019-01-08 | 郑州云海信息技术有限公司 | 一种网卡rss配置装置及方法 |
CN110177047A (zh) * | 2019-05-27 | 2019-08-27 | 北京字节跳动网络技术有限公司 | 报文发送方法、装置、电子设备和计算机可读存储介质 |
CN111372102A (zh) * | 2020-02-06 | 2020-07-03 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、终端设备和存储介质 |
CN116436855A (zh) * | 2023-06-12 | 2023-07-14 | 建信金融科技有限责任公司 | 数据信息处理方法、装置、电子设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304389A (zh) * | 2008-06-20 | 2008-11-12 | 华为技术有限公司 | 报文处理方法、装置和系统 |
CN101394362A (zh) * | 2008-11-12 | 2009-03-25 | 清华大学 | 基于流分片的对多核网络处理器进行负载均衡的方法 |
CN102907055A (zh) * | 2010-03-26 | 2013-01-30 | 思杰系统有限公司 | 用于在多核装置上进行链路负载平衡的系统和方法 |
CN104618152A (zh) * | 2015-01-19 | 2015-05-13 | 迈普通信技术股份有限公司 | 一种会话表老化方法及系统 |
-
2015
- 2015-12-07 CN CN201510890178.2A patent/CN105516302B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304389A (zh) * | 2008-06-20 | 2008-11-12 | 华为技术有限公司 | 报文处理方法、装置和系统 |
CN101394362A (zh) * | 2008-11-12 | 2009-03-25 | 清华大学 | 基于流分片的对多核网络处理器进行负载均衡的方法 |
CN102907055A (zh) * | 2010-03-26 | 2013-01-30 | 思杰系统有限公司 | 用于在多核装置上进行链路负载平衡的系统和方法 |
CN104618152A (zh) * | 2015-01-19 | 2015-05-13 | 迈普通信技术股份有限公司 | 一种会话表老化方法及系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598747A (zh) * | 2016-12-15 | 2017-04-26 | 东软集团股份有限公司 | 网络数据包的并行处理方法及装置 |
CN108134855A (zh) * | 2017-12-18 | 2018-06-08 | 东软集团股份有限公司 | Arp表管理方法、处理器核心、存储介质、电子设备 |
CN109165100A (zh) * | 2018-09-06 | 2019-01-08 | 郑州云海信息技术有限公司 | 一种网卡rss配置装置及方法 |
CN110177047A (zh) * | 2019-05-27 | 2019-08-27 | 北京字节跳动网络技术有限公司 | 报文发送方法、装置、电子设备和计算机可读存储介质 |
CN110177047B (zh) * | 2019-05-27 | 2022-03-04 | 北京字节跳动网络技术有限公司 | 报文发送方法、装置、电子设备和计算机可读存储介质 |
CN111372102A (zh) * | 2020-02-06 | 2020-07-03 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、终端设备和存储介质 |
CN111372102B (zh) * | 2020-02-06 | 2022-10-28 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、终端设备和存储介质 |
CN116436855A (zh) * | 2023-06-12 | 2023-07-14 | 建信金融科技有限责任公司 | 数据信息处理方法、装置、电子设备和介质 |
CN116436855B (zh) * | 2023-06-12 | 2023-09-12 | 建信金融科技有限责任公司 | 数据信息处理方法、装置、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105516302B (zh) | 2018-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105516302A (zh) | 一种数据处理方法及网络设备 | |
CN104092791B (zh) | 一种综合质量与成本的互联网内容资源调度方法和系统 | |
CN107086966A (zh) | 一种网络的负载均衡、控制及网络交互方法和装置 | |
CN101707617A (zh) | 报文过滤方法、装置及网络设备 | |
CN102790812B (zh) | 基于移动终端的ip地址溯源方法、设备和系统 | |
CN109314664B (zh) | 僵尸主控机发现设备和方法 | |
CN106341338B (zh) | 一种报文的转发方法及装置 | |
CN103200281A (zh) | 内网服务器访问方法、设备和系统 | |
CN105556916A (zh) | 网络流的信息统计方法和装置 | |
CN111083179B (zh) | 物联网云平台、基于物联网云平台的设备交互方法及装置 | |
CN105939284B (zh) | 报文控制策略的匹配方法及装置 | |
CN107846364A (zh) | 一种报文的处理方法和装置 | |
CN103795622A (zh) | 一种报文转发方法及其装置 | |
CN110012118B (zh) | 一种提供网络地址转换nat服务的方法及控制器 | |
CN110011930A (zh) | 一种区块链中多联盟链的负载均衡方法及装置 | |
CN103618801A (zh) | 一种p2p资源共享的方法、设备及系统 | |
CN106411742B (zh) | 一种报文传输的方法和装置 | |
CN103036875A (zh) | 一种用户身份处理装置及识别装置 | |
CN107547346A (zh) | 一种报文传输方法和装置 | |
CN111131448B (zh) | ADSL Nat的运维管理的边缘管理方法、边缘端代理设备及计算机可读存储介质 | |
CN106027356A (zh) | 一种隧道标识的转换方法及装置 | |
CN105099952B (zh) | 一种资源分配方法及装置 | |
CN105357332B (zh) | 一种网络地址转换方法及装置 | |
CN114189492A (zh) | 一种基于网络地址转换技术的网卡压力测试方法和系统 | |
CN107547339A (zh) | 一种网关媒体接入控制mac地址反馈方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |