首页 / 专利库 / 软件 / 命令行界面 / 一种网络数据包负载均衡和预解析方法

一种网络数据包负载均衡和预解析方法

阅读:526发布:2020-05-19

专利汇可以提供一种网络数据包负载均衡和预解析方法专利检索,专利查询,专利分析的服务。并且本 发明 一种网络数据包负载均衡和预解析方法,属于众核 服务器 的网络结构领域。包括以下步骤:一、在众核服务器下配置交换芯片;二、数据包经过外接 接口 进入交换芯片后,平均分给2个MPIPE;三、每个MPIPE将数据包转发到对应的TILERA CPU上,并进行预解析;四、在每个TILERA CPU上调用库函数创建数据包处理线程;五、为每个数据包处理线程分别绑定一个TILERA CPU核;六、将预解析结果分发到对应的数据包处理线程;七、各个处理线程分别通过库函数接收数据包并且得到预解析结果,保存源IP和目的IP。优点在于:使用交换芯片和MPIPE进行各个TILERA CPU之间的负载均衡,对于处理线程不需要再解析数据包,只对关注的数据包域进行处理;操作更加简便,提高数据包的处理能 力 。,下面是一种网络数据包负载均衡和预解析方法专利的具体信息内容。

1.一种网络数据包的负载均衡和预解析方法,建立于一台众核服务器上,具体包括1个交换芯片和2个多核可编程智能包引擎,简称MPIPE;每个MPIPE分别对应1个具有36核的TILERA CPU;其特征在于,具体包括以下步骤:
步骤一、在众核服务器下配置交换芯片;
交换芯片的物理端口平均分成两组,每一组分别对应1个MPIPE,从每个MPIPE对应的物理端口中任选一个组成逻辑端口,通过trunk命令进行逻辑端口的绑定;具体为:
首先、登录众核服务器的交换芯片,并进入配置交互界面;
把PC机和众核服务器配置在同一个网段,在PC上通过telnet命令登录众核服务器的交换芯片的配置交互界面,配置交互界面选用现有的命令行界面CLI;
然后、通过trunk命令把交换芯片的多个物理端口绑定为一个逻辑端口;
步骤二、输入的数据包经过交换芯片的外接接口XGBE进入后,平均分到2个MPIPE;
数据包经过交换芯片的逻辑端口后,如果不同数据包的目的IP和源IP均相同,将数据包分发到同一个物理端口,进而转发到物理端口对应的MPIPE;
步骤三、每个MPIPE将数据包转发到对应的TILERA CPU上,并进行数据包预解析;
步骤四、在每个TILERA CPU上调用pthread_create库函数创建36个数据包处理线程;
步骤五、为每个数据包处理线程分别绑定一个TILERA CPU核;
步骤六、将数据包的预解析结果分发到对应的数据包处理线程;
配置逻辑端口的hash算法,计算数据包的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、把预解析结果发送给TILERA CPU。

说明书全文

一种网络数据包负载均衡和预解析方法

技术领域

[0001] 本发明涉及众核服务器的网络结构领域,具体是一种网络数据包负载均衡和预解析方法。

背景技术

[0002] 传统的网络数据包的负载均衡和预解析方法,是通过CPU的处理能进行数据包的解析,将解析结果分发到对应的处理模,这种方法在解析大流量的数据包时,会占用较大的CPU资源并且导致处理模块的处理能力下降。
[0003] 现有传统方法中,通常采取选用几台众核服务器,然后每一台众核服务器对应一个多核处理器(TILERA CPU),通过一台交换机进行多台众核服务器之间的信息交换,这样做占用的空间资源以及功耗会比较大。
[0004] 传统方法采用的多核可编程智能包引擎(MPIPE),主要功能是进行数据流的分发即把相同的数据流分发到同一个TILERA CPU核,缺点是没有预处理功能。

发明内容

[0005] 本发明针对上述问题,为了最大程度的提高数据包的处理能力,充分利用MPIPE的处理能力,加入了预处理功能,解析协议类型以及数据长度等并把结果传送给对应的TILERA CPU核。
[0006] 一种网络数据包的负载均衡和预解析方法建立于一台众核服务器上,具体包括1个交换芯片和2个MPIPE;交换芯片具有外接接口XGBE,每个MPIPE分别对应1个具有36核的TILERA CPU,依次标记为0核-35核;
[0007] 一种网络数据包的负载均衡和预解析方法,具体包括以下步骤:
[0008] 步骤一、在众核服务器下配置交换芯片;
[0009] 交换芯片具有多个物理端口,平均分别对应2个MPIPE,从每个MPIPE对应的物理端口中任选一个组成逻辑端口,通过trunk命令进行逻辑端口的绑定;
[0010] 步骤二、输入的数据包经过外接接口XGBE进入交换芯片后,平均分给2个MPIPE;
[0011] 数据包经过交换芯片的逻辑端口后,如果数据包的目的IP和源IP相同,将数据包分发到同一个物理端口,进而转发到物理端口对应的MPIPE,从而将数据包平均分给2个MPIPE;
[0012] 步骤三、每个MPIPE将数据包转发到对应的TILERA CPU上,并进行数据包预解析;
[0013] 预解析具体步骤如下:
[0014] 步骤301、判断数据包的IP协议头是否为IPV4或者IPV6,如果不是跳转到步骤306,否则进入步骤302。
[0015] 步骤302、解析IP协议头记录的源IP,目的IP,以及协议类型。
[0016] 步骤303、判断协议类型是否为TCP或者UDP,如果是,进入步骤304,否则跳转到步骤306。
[0017] 步骤304、解析TCP协议或者UDP协议中的信息,并且把信息存放到预解析结果中。
[0018] 步骤305、解析IP协议后续的数据并且进行字符串比较,把比较结果存放到预解析结果中。
[0019] 步骤306、把预解析结果发送给TILERA CPU。
[0020] 步骤四、在每个TILERA CPU上调用pthread_create库函数创建36个数据包处理线程;
[0021] 步骤五、为每个数据包处理线程分别绑定一个TILERA CPU核;
[0022] 步骤六、将数据包的预解析结果分发到对应的数据包处理线程。
[0023] 配置逻辑端口的hash算法,针对具有相同目的IP和源IP的数据包,计算数据包的id值,根据id值判断,将相同id值的数据包传输给绑定的同一个数据包处理线程。
[0024] 步骤七、36个处理线程分别通过调用库函数gxio_mpipe_iqueue_try_peek接收数据包并且得到预解析结果,保存源IP和目的IP。
[0025] 本发明的优点与积极效果在于:
[0026] 1)一种网络数据包负载均衡和预解析方法,在众核服务器下使用交换芯片进行各个TILERA CPU之间的负载均衡,通过MPIPE实现TILERA CPU核之间的负载均衡。对于处理线程不需要再解析数据包,只需要对需要关注的数据包里面的域进行处理;操作更加简便,最大程度的提高数据包的处理能力。
[0027] 2)一种网络数据包负载均衡和预解析方法,为各个线程绑定TILERA CPU核,实现了并行处理数据包。
[0028] 3)一种网络数据包负载均衡和预解析方法,通过配置逻辑端口的hash算法,对于相同目的IP+源IP的数据包分发到同一个物理端口,实现TILERA CPU之间的负载均衡,提高了众核服务器数据包处理能力。附图说明
[0029] 图1是本发明网络数据包负载均衡和预解析的示意图;
[0030] 图2是本发明一种网络数据包负载均衡和预解析方法的流程图
[0031] 图3为本发明预解析具体步骤的流程图;
[0032] 图4是本发明处理线程分别接收数据包并预解析的示意图;

具体实施方式

[0033] 下面将结合附图和实施例对本发明作进一步的详细说明。
[0034] 一种网络数据包负载均衡和预解析方法,采用一台众核服务器,如图1所示,包括1个交换芯片,2个多核处理器(TILERA CPU)和2个多核可编程智能包引擎(MPIPE);
[0035] 通过众核服务器上的交换芯片进行数据包负载均衡到各个多核处理器,在各个TILERA CPU上通过MPIPE实现网络数据包的接收以及负载均衡,并且将预解析结果发送到指定的TILERA CPU核上。通过trunk命令以及hash算法的规则实现负载均衡。
[0036] 输入的数据包经过外接接口XGBE进入交换芯片后,被平均分成两部分,对应进入两个MPIPE中,MPIPE进行平均分发,把具有相同目的IP和源IP的数据包分发到同一个TILERA CPU核。
[0037] 一种网络数据包的负载均衡和预解析方法,如附图2所示,具体步骤如下:
[0038] 步骤一、在众核服务器下配置交换芯片;
[0039] 交换芯片具有多个物理端口,平均分别对应2个MPIPE,从每个MPIPE对应的物理端口中任选一个组成逻辑端口,通过trunk命令进行逻辑端口的绑定;
[0040] 首先、登陆众核服务器的交换芯片,并进入配置交互界面。
[0041] 把PC机和众核服务器配置在同一个网段,在PC上通过telnet命令登陆众核服务器的交换芯片的配置交互界面,配置交互界面选用现有的CLI(命令行界面)。
[0042] 然后、通过trunk命令把交换芯片的多个物理端口绑定为一个逻辑端口。
[0043] 例如利用trunk命令进行端口绑定如下:
[0044] trunk add id=1 Rtag=6 pbmp=xe15,xe16,xe17
[0045] 把物理端口xe15,xe16,x17绑定为一个逻辑端口。
[0046] 每个MPIPE分别对应3个物理端口,如:第一个MPIPE对应物理端口1,物理端口2和物理端口3;第二个MPIPE1对应物理端口4,物理端口5,物理端口6;
[0047] 选取物理端口1和物理端口4组成一个逻辑端口;保证了数据流经过逻辑端口平均分配到2个MPIPE;
[0048] 如果选取物理端口1,物理端口2,物理端口3和物理端口4组成一个逻辑端口,保证了分到第一个MPIPE的是四分之三的数据流,第二个MPIPE的是四分之一的数据流。
[0049] 步骤二、输入的数据包经过外接接口XGBE进入交换芯片后,平均分给2个MPIPE;
[0050] 数据包经过交换芯片的逻辑端口后,对于相同目的IP+源IP的数据包分发到同一个物理端口,进而转发到物理端口对应的MPIPE,从而将数据包平均分给2个MPIPE。
[0051] 交换芯片采用hash算法,将数据包平均分配给2个物理端口:物理端口1和物理端口4,经过物理端口进入到2个MPIPE。
[0052] id=hash_fun(srcip,dstip,srcmac,dstmac)。
[0053] hash_fun表示通过CRC循环冗余检验算法实现,srcip表示源IP,dstip表示目的IP,srcmac表示源MAC,dstmac表示目的MAC,id为通过规则算法得到的值。
[0054] 步骤三、每个MPIPE将数据包转发到对应的TILERA CPU上;并且进行数据包预解析;
[0055] 如图3所示,预解析具体步骤如下:
[0056] 步骤301、判断数据包的IP协议头是否为IPV4或者IPV6,如果不是跳转到步骤306,否则进入步骤302。
[0057] 步骤302、解析IP协议头记录的源IP,目的IP,以及协议类型。
[0058] 步骤303、判断协议类型是否为TCP或者UDP,如果是,进入步骤304,否则跳转到步骤306;
[0059] 步骤304、解析TCP协议或者UDP协议中的信息,如源端口,目的端口以及IP协议长度信息,并且把信息存放到预解析结果中。
[0060] 步骤305、解析IP协议后续的数据并且进行字符串比较,把比较结果存放到预解析结果中。
[0061] 步骤306、把预解析结果发送给TILERA CPU。
[0062] 步骤四、在每个TILERA CPU上调用pthread_create库函数创建36个数据包处理线程;
[0063] 步骤五、为每个数据包处理线程分别绑定一个用于处理数据包的TILERA CPU核;
[0064] 36个数据包处理线程分别对应TILERA CPU的0核-35核,对于TILERACPU核的绑定通过使用TILERA提供的TMC编程库实现,36个数据包处理线程并行运行。
[0065] 步骤六、将数据包的预解析结果分发到对应的数据包处理线程。
[0066] 配置逻辑端口的hash算法,针对具有相同目的IP和源IP的数据包,计算数据包的id值,根据id值映射到对应的TILERA CPU核上;通过调用库函数gxio_mpipe_init配置MPIPE,将相同id值的数据包传输给绑定的同一个数据包处理线程。
[0067] 转发规则算法如下:
[0068] id=hash_fun(srcip,dstip,srcmac,dstmac)。
[0069] hash_fun表示通过CRC循环冗余检验算法实现,srcip表示源IP,dstip表示目的IP,srcmac表示源MAC,dstmac表示目的MAC,id为通过规则算法得到的值。
[0070] 针对上万级别的数据包,平均分到2个MPIPE上后,每个MPIPE采用按流分配或者按包分配的方式,将数据包平均分配到各个物理端口上;
[0071] 比如,针对72万个数据包,每个MPIPE分到36万个数据包,分成36个数据流,每个数据流中含有10000个数据包,如果按流分配,则采用hash算法,将36个数据流分配到36个TILERA CPU核上,如果按包分配,则将每个数据包按序平均分配到36个TILERA CPU核上,比如:第一个数据包分到第一个TILERA CPU核,第二个数据包分到第二个TILERA CPU核……,按序平均分配;从而实现网络数据包的负载均衡。
[0072] 步骤七、36个处理线程分别通过调用库函数gxio_mpipe_iqueue_try_peek接收数据包并且得到预解析结果,处理分发到对应TILERA CPU核上的数据包。
[0073] 通过预解析结果进行后续数据包处理,如保存特定的源IP,目的IP的数据包以及包含特定字符串的数据包。
[0074] 如图4所示,首先,通过配置MPIPE规则,创建36个数据包处理线程,并绑定用于处理数据包的TILERA CPU核;
[0075] 然后,每个MPIPE将数据包分发到对应的36个TILERA CPU核上,每个TILERA CPU核将数据流传输给绑定的数据包处理线程,通过转发规则,36个数据包处理线程并行运行,实现TILERA CPU核之间的负载均衡。
[0076] 然后,36个处理线程分别接收数据包并且得到预解析结果,处理数据包。直至将数据包全部处理完。
[0077] 处理线程调用TILERA MPIPE编程库函数gxio_mpipe_iqueue_try_peek抓取数据包,得到数据包描述符,通过函数gxio_mpipe_idesc_get_l2_start得到数据包的头指针,通过数据包头指针访问数据包数据,并且通过数据包描述符里面记录的MPIPE对数据包的解析结果进行数据包处理。数据包处理为:记录对应SRCIP,DSTIP接收到的数据包的个数以及总长度,记录数据包里面带有的特殊字符串,如:“Host”的数据包个数,保存数据包到硬盘
[0078] 通过MPIPE实现数据包的预解析(协议类型,数据长度等)减少了TILERA CPU核对数据包的处理步骤,提高了数据包处理能力。
[0079] 众核处理器平台采用TILERA公司的,具有高性能低能耗的特点。TILERA芯片基于一种新的架构设计,在一块芯片上使用RISC(Reduced Instruction Set Computing)内核,与传统的x86芯片完全不同,网格设计进行更快的数据交换,并且若干并行内核在一个多指针的矩阵内被组织起来以便接受和传递数据,同时TILERA众核处理器平台提供了核间通信非常高的数据带宽,降低了核间通信延时,并通过共享的Cache(高速缓冲存储器)消除了核间互联的性能瓶颈,并降低了芯片功耗。通过交换芯片分流到不同的TILERA CPU提高了每个TILERA CPU的利用率,通过MPIPE包分流以及预解析功能提高了TILERA CPU每个核的利用率。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈