CN105207946A - 一种网络数据包负载均衡和预解析方法 - Google Patents
一种网络数据包负载均衡和预解析方法 Download PDFInfo
- Publication number
- CN105207946A CN105207946A CN201510535316.5A CN201510535316A CN105207946A CN 105207946 A CN105207946 A CN 105207946A CN 201510535316 A CN201510535316 A CN 201510535316A CN 105207946 A CN105207946 A CN 105207946A
- Authority
- CN
- China
- Prior art keywords
- packet
- mpipe
- data packet
- parsed
- tileracpu
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明一种网络数据包负载均衡和预解析方法,属于众核服务器的网络结构领域。包括以下步骤:一、在众核服务器下配置交换芯片;二、数据包经过外接接口进入交换芯片后,平均分给2个MPIPE;三、每个MPIPE将数据包转发到对应的TILERA?CPU上,并进行预解析;四、在每个TILERA?CPU上调用库函数创建数据包处理线程;五、为每个数据包处理线程分别绑定一个TILERA?CPU核;六、将预解析结果分发到对应的数据包处理线程;七、各个处理线程分别通过库函数接收数据包并且得到预解析结果,保存源IP和目的IP。优点在于:使用交换芯片和MPIPE进行各个TILERA?CPU之间的负载均衡,对于处理线程不需要再解析数据包,只对关注的数据包域进行处理;操作更加简便,提高数据包的处理能力。
Description
技术领域
本发明涉及众核服务器的网络结构领域,具体是一种网络数据包负载均衡和预解析方法。
背景技术
传统的网络数据包的负载均衡和预解析方法,是通过CPU的处理能力进行数据包的解析,将解析结果分发到对应的处理模块,这种方法在解析大流量的数据包时,会占用较大的CPU资源并且导致处理模块的处理能力下降。
现有传统方法中,通常采取选用几台众核服务器,然后每一台众核服务器对应一个多核处理器(TILERACPU),通过一台交换机进行多台众核服务器之间的信息交换,这样做占用的空间资源以及功耗会比较大。
传统方法采用的多核可编程智能包引擎(MPIPE),主要功能是进行数据流的分发即把相同的数据流分发到同一个TILERACPU核,缺点是没有预处理功能。
发明内容
本发明针对上述问题,为了最大程度的提高数据包的处理能力,充分利用MPIPE的处理能力,加入了预处理功能,解析协议类型以及数据长度等并把结果传送给对应的TILERACPU核。
一种网络数据包的负载均衡和预解析方法建立于一台众核服务器上,具体包括1个交换芯片和2个MPIPE;交换芯片具有外接接口XGBE,每个MPIPE分别对应1个具有36核的TILERACPU,依次标记为0核-35核;
一种网络数据包的负载均衡和预解析方法,具体包括以下步骤:
步骤一、在众核服务器下配置交换芯片;
交换芯片具有多个物理端口,平均分别对应2个MPIPE,从每个MPIPE对应的物理端口中任选一个组成逻辑端口,通过trunk命令进行逻辑端口的绑定;
步骤二、输入的数据包经过外接接口XGBE进入交换芯片后,平均分给2个MPIPE;
数据包经过交换芯片的逻辑端口后,如果数据包的目的IP和源IP相同,将数据包分发到同一个物理端口,进而转发到物理端口对应的MPIPE,从而将数据包平均分给2个MPIPE;
步骤三、每个MPIPE将数据包转发到对应的TILERACPU上,并进行数据包预解析;
预解析具体步骤如下:
步骤301、判断数据包的IP协议头是否为IPV4或者IPV6,如果不是跳转到步骤306,否则进入步骤302。
步骤302、解析IP协议头记录的源IP,目的IP,以及协议类型。
步骤303、判断协议类型是否为TCP或者UDP,如果是,进入步骤304,否则跳转到步骤306。
步骤304、解析TCP协议或者UDP协议中的信息,并且把信息存放到预解析结果中。
步骤305、解析IP协议后续的数据并且进行字符串比较,把比较结果存放到预解析结果中。
步骤306、把预解析结果发送给TILERACPU。
步骤四、在每个TILERACPU上调用pthread_create库函数创建36个数据包处理线程;
步骤五、为每个数据包处理线程分别绑定一个TILERACPU核;
步骤六、将数据包的预解析结果分发到对应的数据包处理线程。
配置逻辑端口的hash算法,针对具有相同目的IP和源IP的数据包,计算数据包的id值,根据id值判断,将相同id值的数据包传输给绑定的同一个数据包处理线程。
步骤七、36个处理线程分别通过调用库函数gxio_mpipe_iqueue_try_peek接收数据包并且得到预解析结果,保存源IP和目的IP。
本发明的优点与积极效果在于:
1)一种网络数据包负载均衡和预解析方法,在众核服务器下使用交换芯片进行各个TILERACPU之间的负载均衡,通过MPIPE实现TILERACPU核之间的负载均衡。对于处理线程不需要再解析数据包,只需要对需要关注的数据包里面的域进行处理;操作更加简便,最大程度的提高数据包的处理能力。
2)一种网络数据包负载均衡和预解析方法,为各个线程绑定TILERACPU核,实现了并行处理数据包。
3)一种网络数据包负载均衡和预解析方法,通过配置逻辑端口的hash算法,对于相同目的IP+源IP的数据包分发到同一个物理端口,实现TILERACPU之间的负载均衡,提高了众核服务器数据包处理能力。
附图说明
图1是本发明网络数据包负载均衡和预解析的示意图;
图2是本发明一种网络数据包负载均衡和预解析方法的流程图;
图3为本发明预解析具体步骤的流程图;
图4是本发明处理线程分别接收数据包并预解析的示意图;
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
一种网络数据包负载均衡和预解析方法,采用一台众核服务器,如图1所示,包括1个交换芯片,2个多核处理器(TILERACPU)和2个多核可编程智能包引擎(MPIPE);
通过众核服务器上的交换芯片进行数据包负载均衡到各个多核处理器,在各个TILERACPU上通过MPIPE实现网络数据包的接收以及负载均衡,并且将预解析结果发送到指定的TILERACPU核上。通过trunk命令以及hash算法的规则实现负载均衡。
输入的数据包经过外接接口XGBE进入交换芯片后,被平均分成两部分,对应进入两个MPIPE中,MPIPE进行平均分发,把具有相同目的IP和源IP的数据包分发到同一个TILERACPU核。
一种网络数据包的负载均衡和预解析方法,如附图2所示,具体步骤如下:
步骤一、在众核服务器下配置交换芯片;
交换芯片具有多个物理端口,平均分别对应2个MPIPE,从每个MPIPE对应的物理端口中任选一个组成逻辑端口,通过trunk命令进行逻辑端口的绑定;
首先、登陆众核服务器的交换芯片,并进入配置交互界面。
把PC机和众核服务器配置在同一个网段,在PC上通过telnet命令登陆众核服务器的交换芯片的配置交互界面,配置交互界面选用现有的CLI(命令行界面)。
然后、通过trunk命令把交换芯片的多个物理端口绑定为一个逻辑端口。
例如利用trunk命令进行端口绑定如下:
trunkaddid=1Rtag=6pbmp=xe15,xe16,xe17
把物理端口xe15,xe16,x17绑定为一个逻辑端口。
每个MPIPE分别对应3个物理端口,如:第一个MPIPE对应物理端口1,物理端口2和物理端口3;第二个MPIPE1对应物理端口4,物理端口5,物理端口6;
选取物理端口1和物理端口4组成一个逻辑端口;保证了数据流经过逻辑端口平均分配到2个MPIPE;
如果选取物理端口1,物理端口2,物理端口3和物理端口4组成一个逻辑端口,保证了分到第一个MPIPE的是四分之三的数据流,第二个MPIPE的是四分之一的数据流。
步骤二、输入的数据包经过外接接口XGBE进入交换芯片后,平均分给2个MPIPE;
数据包经过交换芯片的逻辑端口后,对于相同目的IP+源IP的数据包分发到同一个物理端口,进而转发到物理端口对应的MPIPE,从而将数据包平均分给2个MPIPE。
交换芯片采用hash算法,将数据包平均分配给2个物理端口:物理端口1和物理端口4,经过物理端口进入到2个MPIPE。
id=hash_fun(srcip,dstip,srcmac,dstmac)。
hash_fun表示通过CRC循环冗余检验算法实现,srcip表示源IP,dstip表示目的IP,srcmac表示源MAC,dstmac表示目的MAC,id为通过规则算法得到的值。
步骤三、每个MPIPE将数据包转发到对应的TILERACPU上;并且进行数据包预解析;
如图3所示,预解析具体步骤如下:
步骤301、判断数据包的IP协议头是否为IPV4或者IPV6,如果不是跳转到步骤306,否则进入步骤302。
步骤302、解析IP协议头记录的源IP,目的IP,以及协议类型。
步骤303、判断协议类型是否为TCP或者UDP,如果是,进入步骤304,否则跳转到步骤306;
步骤304、解析TCP协议或者UDP协议中的信息,如源端口,目的端口以及IP协议长度信息,并且把信息存放到预解析结果中。
步骤305、解析IP协议后续的数据并且进行字符串比较,把比较结果存放到预解析结果中。
步骤306、把预解析结果发送给TILERACPU。
步骤四、在每个TILERACPU上调用pthread_create库函数创建36个数据包处理线程;
步骤五、为每个数据包处理线程分别绑定一个用于处理数据包的TILERACPU核;
36个数据包处理线程分别对应TILERACPU的0核-35核,对于TILERACPU核的绑定通过使用TILERA提供的TMC编程库实现,36个数据包处理线程并行运行。
步骤六、将数据包的预解析结果分发到对应的数据包处理线程。
配置逻辑端口的hash算法,针对具有相同目的IP和源IP的数据包,计算数据包的id值,根据id值映射到对应的TILERACPU核上;通过调用库函数gxio_mpipe_init配置MPIPE,将相同id值的数据包传输给绑定的同一个数据包处理线程。
转发规则算法如下:
id=hash_fun(srcip,dstip,srcmac,dstmac)。
hash_fun表示通过CRC循环冗余检验算法实现,srcip表示源IP,dstip表示目的IP,srcmac表示源MAC,dstmac表示目的MAC,id为通过规则算法得到的值。
针对上万级别的数据包,平均分到2个MPIPE上后,每个MPIPE采用按流分配或者按包分配的方式,将数据包平均分配到各个物理端口上;
比如,针对72万个数据包,每个MPIPE分到36万个数据包,分成36个数据流,每个数据流中含有10000个数据包,如果按流分配,则采用hash算法,将36个数据流分配到36个TILERACPU核上,如果按包分配,则将每个数据包按序平均分配到36个TILERACPU核上,比如:第一个数据包分到第一个TILERACPU核,第二个数据包分到第二个TILERACPU核……,按序平均分配;从而实现网络数据包的负载均衡。
步骤七、36个处理线程分别通过调用库函数gxio_mpipe_iqueue_try_peek接收数据包并且得到预解析结果,处理分发到对应TILERACPU核上的数据包。
通过预解析结果进行后续数据包处理,如保存特定的源IP,目的IP的数据包以及包含特定字符串的数据包。
如图4所示,首先,通过配置MPIPE规则,创建36个数据包处理线程,并绑定用于处理数据包的TILERACPU核;
然后,每个MPIPE将数据包分发到对应的36个TILERACPU核上,每个TILERACPU核将数据流传输给绑定的数据包处理线程,通过转发规则,36个数据包处理线程并行运行,实现TILERACPU核之间的负载均衡。
然后,36个处理线程分别接收数据包并且得到预解析结果,处理数据包。直至将数据包全部处理完。
处理线程调用TILERAMPIPE编程库函数gxio_mpipe_iqueue_try_peek抓取数据包,得到数据包描述符,通过函数gxio_mpipe_idesc_get_l2_start得到数据包的头指针,通过数据包头指针访问数据包数据,并且通过数据包描述符里面记录的MPIPE对数据包的解析结果进行数据包处理。数据包处理为:记录对应SRCIP,DSTIP接收到的数据包的个数以及总长度,记录数据包里面带有的特殊字符串,如:“Host”的数据包个数,保存数据包到硬盘。
通过MPIPE实现数据包的预解析(协议类型,数据长度等)减少了TILERACPU核对数据包的处理步骤,提高了数据包处理能力。
众核处理器平台采用TILERA公司的,具有高性能低能耗的特点。TILERA芯片基于一种新的架构设计,在一块芯片上使用RISC(ReducedInstructionSetComputing)内核,与传统的x86芯片完全不同,网格设计进行更快的数据交换,并且若干并行内核在一个多指针的矩阵内被组织起来以便接受和传递数据,同时TILERA众核处理器平台提供了核间通信非常高的数据带宽,降低了核间通信延时,并通过共享的Cache(高速缓冲存储器)消除了核间互联的性能瓶颈,并降低了芯片功耗。通过交换芯片分流到不同的TILERACPU提高了每个TILERACPU的利用率,通过MPIPE包分流以及预解析功能提高了TILERACPU每个核的利用率。
Claims (2)
1.一种网络数据包的负载均衡和预解析方法,建立于一台众核服务器上,具体包括1个交换芯片和2个多核可编程智能包引擎,简称MPIPE;每个MPIPE分别对应1个具有36核的TILERACPU;其特征在于,具体包括以下步骤:
步骤一、在众核服务器下配置交换芯片;
交换芯片的物理端口平均分成两组,每一组分别对应1个MPIPE,从每个MPIPE对应的物理端口中任选一个组成逻辑端口,通过trunk命令进行逻辑端口的绑定;
步骤二、输入的数据包经过交换芯片的外接接口XGBE进入后,平均分到2个MPIPE;
数据包经过交换芯片的逻辑端口后,如果数据包的目的IP和源IP相同,将数据包分发到同一个物理端口,进而转发到物理端口对应的MPIPE;
步骤三、每个MPIPE将数据包转发到对应的TILERACPU上,并进行数据包预解析;
步骤四、在每个TILERACPU上调用pthread_create库函数创建36个数据包处理线程;
步骤五、为每个数据包处理线程分别绑定一个TILERACPU核;
步骤六、将数据包的预解析结果分发到对应的数据包处理线程;
配置逻辑端口的hash算法,针对具有相同目的IP和源IP的数据包,计算数据包的id值,根据id值判断,将相同id值的数据包传输给绑定的同一个数据包处理线程;
步骤七、36个处理线程分别通过调用库函数gxio_mpipe_iqueue_try_peek接收数据包并且得到预解析结果,保存源IP和目的IP。
2.如权利要求1所述的一种网络数据包的负载均衡和预解析方法,其特征在于,所述的步骤三预解析具体步骤如下:
步骤301、判断数据包的IP协议头是否为IPV4或者IPV6,如果不是跳转到步骤306,否则进入步骤302;
步骤302、解析IP协议头记录的源IP,目的IP,以及协议类型;
步骤303、判断协议类型是否为TCP或者UDP,如果是,进入步骤304,否则跳转到步骤306;
步骤304、解析TCP协议或者UDP协议中的信息,并且把信息存放到预解析结果中;
步骤305、解析IP协议后续的数据并且进行字符串比较,把比较结果存放到预解析结果中;
步骤306、把预解析结果发送给TILERACPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510535316.5A CN105207946B (zh) | 2015-08-27 | 2015-08-27 | 一种网络数据包负载均衡和预解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510535316.5A CN105207946B (zh) | 2015-08-27 | 2015-08-27 | 一种网络数据包负载均衡和预解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105207946A true CN105207946A (zh) | 2015-12-30 |
CN105207946B CN105207946B (zh) | 2018-05-01 |
Family
ID=54955388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510535316.5A Active CN105207946B (zh) | 2015-08-27 | 2015-08-27 | 一种网络数据包负载均衡和预解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105207946B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371921A (zh) * | 2016-08-31 | 2017-02-01 | 成都科来软件有限公司 | 一种多线程分析的均衡分流方法 |
CN112256208A (zh) * | 2020-11-02 | 2021-01-22 | 南京云信达科技有限公司 | 一种离线数据包存储分析方法及装置 |
CN113806083A (zh) * | 2021-09-06 | 2021-12-17 | 杭州迪普科技股份有限公司 | 一种处理聚合流数据的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304322A (zh) * | 2008-06-30 | 2008-11-12 | 杭州华三通信技术有限公司 | 一种网络设备和报文转发方法 |
US20100241831A1 (en) * | 2007-07-09 | 2010-09-23 | Hewlett-Packard Development Company, L.P. | Data packet processing method for a multi core processor |
CN103957154A (zh) * | 2014-04-11 | 2014-07-30 | 国家计算机网络与信息安全管理中心 | 网络数据包url过滤方法 |
-
2015
- 2015-08-27 CN CN201510535316.5A patent/CN105207946B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100241831A1 (en) * | 2007-07-09 | 2010-09-23 | Hewlett-Packard Development Company, L.P. | Data packet processing method for a multi core processor |
CN101304322A (zh) * | 2008-06-30 | 2008-11-12 | 杭州华三通信技术有限公司 | 一种网络设备和报文转发方法 |
CN103957154A (zh) * | 2014-04-11 | 2014-07-30 | 国家计算机网络与信息安全管理中心 | 网络数据包url过滤方法 |
Non-Patent Citations (2)
Title |
---|
周慧娟: "《基于Tilera多核处理器网络视频录像机(NVR)本地管理软件设计》", 《硕士学位论文》 * |
艾鑫: "《众核环境下深度包检测系统的设计与优化》", 《工学硕士学位论文》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371921A (zh) * | 2016-08-31 | 2017-02-01 | 成都科来软件有限公司 | 一种多线程分析的均衡分流方法 |
CN112256208A (zh) * | 2020-11-02 | 2021-01-22 | 南京云信达科技有限公司 | 一种离线数据包存储分析方法及装置 |
CN113806083A (zh) * | 2021-09-06 | 2021-12-17 | 杭州迪普科技股份有限公司 | 一种处理聚合流数据的方法和装置 |
CN113806083B (zh) * | 2021-09-06 | 2023-07-25 | 杭州迪普科技股份有限公司 | 一种处理聚合流数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105207946B (zh) | 2018-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210117360A1 (en) | Network and edge acceleration tile (next) architecture | |
EP4298776A1 (en) | Service mesh offload to network devices | |
EP3625939A1 (en) | Access node for data centers | |
US8751655B2 (en) | Collective acceleration unit tree structure | |
US20210160350A1 (en) | Generating programmatically defined fields of metadata for network packets | |
García-Dorado et al. | High-performance network traffic processing systems using commodity hardware | |
US9356844B2 (en) | Efficient application recognition in network traffic | |
CN1875585A (zh) | 利用mac限制来控制动态未知l2泛滥 | |
CN105207946A (zh) | 一种网络数据包负载均衡和预解析方法 | |
CN107832149B (zh) | 一种针对多核处理器动态分组管理的Receive-side Scaling电路 | |
CN114138707B (zh) | 一种基于fpga的数据传输系统 | |
US20240195749A1 (en) | Path selection for packet transmission | |
CN117529904A (zh) | 分组格式调整技术 | |
Shah et al. | {CSP}: A Novel System Architecture for Scalable Internet and Communication Services | |
US20220321491A1 (en) | Microservice data path and control path processing | |
Su et al. | Technology trends in large-scale high-efficiency network computing | |
Baymani et al. | Exploring RapidIO technology within a DAQ system event building network | |
US20230004395A1 (en) | Methods and systems for distributing instructions amongst multiple processing units in a multistage processing pipeline | |
Yan et al. | UniSec: a unified security framework with SmartNIC acceleration in public cloud | |
Aghdai et al. | Design of a hybrid modular switch | |
US10805436B2 (en) | Deliver an ingress packet to a queue at a gateway device | |
US11936726B2 (en) | Methods and systems for implementing traffic mirroring for network telemetry | |
Zhu et al. | Application and analysis of three common high-performance network data processing frameworks | |
CN116232992B (zh) | 数据转发方法、装置、设备及存储介质 | |
US20230185624A1 (en) | Adaptive framework to manage workload execution by computing device including one or more accelerators |
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 | ||
GR01 | Patent grant |