一种报文处理方法和装置制造方法及图纸

技术编号:20947423 阅读:29 留言:0更新日期:2019-04-24 03:38
本发明专利技术实施例提供一种报文处理方法和装置,所述方法通过调用数据面开发套件来接收和处理报文,可以让设备驱动运行在用户空间,这样报文就不需要进行内核与用户层之间的数据拷贝,节约了大量时间;并且应用所述数据面开发套件无中断的轮询处理驱动、大页内存机制,提高了报文的处理速度;在报文的处理过程中使用的包分类算法,基于多层映射、逐层缩减的原理,大大减少了查表的次数,节省了内存,提高了查表速度。使用上述方法,使报文的处理速度显著提升,并使处理报文所需占用的内存大大减少。

A Message Processing Method and Device

The embodiment of the present invention provides a message processing method and device, which can make the device driver run in user space by calling the data plane development suite to receive and process the message, so that the message does not need data copy between the kernel and the user layer, and saves a lot of time; moreover, the application of the data plane development suite without interruption polling processing driver is large. Page memory mechanism improves the speed of message processing. Packet classification algorithm used in the process of message processing, based on the principle of multi-layer mapping and layer-by-layer reduction, greatly reduces the number of table lookups, saves memory and improves the speed of table lookup. By using the above method, the processing speed of the message is significantly increased, and the memory required for processing the message is greatly reduced.

【技术实现步骤摘要】
一种报文处理方法和装置
本专利技术涉及计算机
,尤其涉及一种报文处理方法和装置。
技术介绍
随着网络用户群不断的增长以及应用业务的多元化,网络流量持续增长,单位时间到达路由器的数据包变多,为了保证网络的性能,数据包必须被及时处理和转发。影响报文转发速度的因素主要体现在对数据包的快速处理能力和报文的查找速度。为了提高报文的处理能力,目前广泛使用CAVIUM(凯为)多核处理器来接收和处理报文,但是CAVIUM多核处理器的运行必须基于特定的服务器,并且需要在电脑上安装CAVIUM芯片,成本和代价较高;报文的查找速度主要取决于报文分类技术,目前广泛使用三元内容寻址存储器算法、hash表查找算法等包分类算法,但这些算法也都有各自的缺点。例如,三元内容寻址存储器算法对规则数量、维数、维宽度的扩展能力较差,而hash算法的对内存的占用较大,只能用于小规模的包分类。所以,目前需要一种能支持大规模数据流量且能实现高效查表的报文处理方法。
技术实现思路
有鉴于此,本专利技术实施例提出一种报文处理方法和装置,以解决现有的报文处理技术成本和代价较高,且占用内存较大的问题。本专利技术实施例提供一种报文处理方法,所述方法包括:调用数据面开发套件,并对其进行初始化配置;包括:配置接收网卡和发送网卡,配置CPU的收包核、处理核和转发核;在所述数据面开发套件中配置路由器的数据包过滤规则;包括:设置规则id、源IP地址区段、目的IP地址区段、源端口范围、目的端口范围、协议范围和每个规则id对应的包处理动作;将所述数据包的包头拆分成七个块,根据所述数据包过滤规则中的内容确定每个块对应的规则id,设置每个块对应的等价类标识号和规则掩码;使用七个cell数组存储所述七个块中的等价类标识号、规则掩码并记录所述七个块中不重复的等价类标识号的数目;其中,每个cell数组的索引为所述等价类标识号,对应的值为所述规则掩码;同时,建立七个node数组,每个node数组的索引为0-65535,值为所述等价类标识号;以每个cell数组中的不重复的等价类标识号为界限,分阶段进行有限次遍历,根据每一阶段生成的规则掩码确定最后一个阶段的规则掩码;根据所述最后一个阶段的规则掩码确定对应的规则id;并将遍历过程中每一阶段产生的数据组合起来,得到预处理表;通过所述接收网卡接收目标报文;在所述收包核中将所述目标报文的包头分块,并将每一个块作为并行查找的索引,对所述预处理表中的字段进行分阶段查找,且每一阶段查找内存的索引值由上一阶段的查找结果合并而成;根据最后一个阶段得到的索引值,确定所述目标报文命中的规则id;根据所述规则id在所述数据包过滤规则中对应的处理动作处理该目标报文。优选地,以每个cell数组中的不重复的等价类标识号为界限,分阶段进行有限次遍历,根据每一阶段生成的规则掩码确定最后一个阶段的规则掩码;根据所述最后一个阶段的规则掩码确定对应的规则id;并将遍历过程中每一阶段产生的数据组合起来,得到预处理表,包括:将所述七个cell数组分成两类,分别为第一类cell数组和第二类cell数组,其中,所述第一类cell数组中共四个数组,所述第二类cell数组中共三个数组;在第一阶段,以所述第一类cell数组中的四个数组各自的不重复的等价类标识号数目为界限,进行四层遍历,计算出第一阶段数组的索引,并建立第一节点数组;所述第一节点数组中的索引对应的规则掩码为所述第一类中的四个数组对应的规则掩码进行与操作得到的结果;如果所述规则掩码在所述第一节点数组中不存在,将该规则掩码记录在所述第一节点数组中,所述规则掩码对应的索引,为所述第一节点数组的非0成员的数目,即等价类标识号,对应的值为该掩码;如果所述规则掩码在所述第一节点数组中存在,那么,所述规则掩码对应的索引,即等价类标识号,即为第一阶段数组的索引对应的值;记录第一阶段不重复的等价类标识号的数目;在第二阶段,以所述第二类中的三个数组各自的不重复的等价类标识号数目为界限,进行三层遍历,计算出第二阶段数组的索引,并建立第二节点数组;所述第二节点数组中的索引对应的规则掩码为所述第二类中的三个数组对应的规则掩码进行与操作得到的结果;如果所述规则掩码在所述第二节点数组中不存在,将该规则掩码记录在所述第二节点数组中,索引值为所述第二节点数组的非0数组的数目,对应的值为该掩码;如果所述规则掩码在所述第二节点数组中存在,那么,所述规则掩码对应的索引,即等价类标识号,即为第二阶段数组的索引对应的值;记录第二阶段不重复的等价类标识号的数目;在第三阶段,以所述第一阶段数组与所述第二阶段数组中的不重复的等价类标识号的数目为界限,进行二层遍历,计算出第三阶段的索引;并将所述第一阶段数组与所述第二阶段数组对应的规则掩码进行与操作,得到所述第三阶段的索引对应的规则掩码;获取所述规则掩码对应的二进制数,取所述二进制数中位数最小的1对应的规则id作为所述规则命中的规则id;将遍历过程中每一阶段产生的数组、索引、等价类标识号、规则掩码及规则id组合起来,得到预处理表。优选地,在所述收包核中将所述目标报文的包头分块,并将每一个块作为并行查找的索引,对所述预处理表中的字段进行分阶段查找,且每一阶段查找内存的索引值由上一阶段的查找结果合并而成;根据最后一个阶段得到的索引值,确定所述目标报文命中的规则id,包括:将所述目标报文的包头分为七个块,并为每个块标明序号;以所述每个块的序号作为索引,在所述七个node数组中计算出第0阶段的等价类标识号;以所述第一类cell数组中的四个数组对应的不重复的等价类标识号,计算出所述目标报文第一阶段的索引,进而得到所述目标报文第一阶段的等价类标识号;以所述第二类cell数组中的三个数组对应的不重复的等价类标识号,计算出所述目标报文第二阶段的索引,进而得到所述目标报文第二阶段的等价类标识号;使用所述目标报文第一阶段的不重复的等价类标识号和所述目标报文第二阶段的不重复的等价类标识号,计算出第三阶段的等价类标识号,将其作为所述目标报文命中的规则id。优选地,所述根据所述规则id在所述数据包过滤规则中对应的处理动作处理该目标报文,包括:检测所述处理动作是否是丢弃,如果是,则对所述报文进行释放;检测所述处理动作是否是分析处理,如果是,则将所述报文进行解码分析,完成分析后将所述报文写入所述转发核中;检测所述处理动作是否是转发,如果是,则将所述报文写入所述转发核中。本专利技术实施例还提供一种报文处理装置,所述装置包括:初始化配置模块,用于调用数据面开发套件,并对其进行初始化配置;包括:配置接收网卡和发送网卡,配置CPU的收包核、处理核和转发核;过滤规则配置模块,用于在所述数据面开发套件中配置路由器的数据包过滤规则;包括:设置规则id、源IP地址区段、目的IP地址区段、源端口范围、目的端口范围、协议范围每个规则id对应的包处理动作;拆分存储模块,用于将所述数据包的包头拆分成七个块,根据所述数据包过滤规则中的内容确定每个块对应的规则id,设置每个块对应的等价类标识号和规则掩码;使用七个cell数组存储所述七个块中的等价类标识号、规则掩码并记录所述七个块中不重复的等价类标识号的数目;其中,每个cell数组的索引为所述等价类标识号,对应的值为所述规则掩码;同时本文档来自技高网...

【技术保护点】
1.一种报文处理方法,其特征在于,所述方法包括:调用数据面开发套件,并对其进行初始化配置;包括:配置接收网卡和发送网卡,配置CPU的收包核、处理核和转发核;在所述数据面开发套件中配置路由器的数据包过滤规则;包括:设置规则id、源IP地址区段、目的IP地址区段、源端口范围、目的端口范围、协议范围和每个规则id对应的包处理动作;将所述数据包的包头拆分成七个块,根据所述数据包过滤规则中的内容确定每个块对应的规则id,设置每个块对应的等价类标识号和规则掩码;使用七个cell数组存储所述七个块中的等价类标识号、规则掩码并记录所述七个块中不重复的等价类标识号的数目;其中,每个cell数组的索引为所述等价类标识号,对应的值为所述规则掩码;同时,建立七个node数组,每个node数组的索引为0‑65535,值为所述等价类标识号;以每个cell数组中的不重复的等价类标识号为界限,分阶段进行有限次遍历,根据每一阶段生成的规则掩码确定最后一个阶段的规则掩码;根据所述最后一个阶段的规则掩码确定对应的规则id;并将遍历过程中每一阶段产生的数据组合起来,得到预处理表;通过所述接收网卡接收目标报文;在所述收包核中将所述目标报文的包头分块,并将每一个块作为并行查找的索引,对所述预处理表中的字段进行分阶段查找,且每一阶段查找内存的索引值由上一阶段的查找结果合并而成;根据最后一个阶段得到的索引值,确定所述目标报文命中的规则id;根据所述规则id在所述数据包过滤规则中对应的处理动作处理该目标报文。...

【技术特征摘要】
1.一种报文处理方法,其特征在于,所述方法包括:调用数据面开发套件,并对其进行初始化配置;包括:配置接收网卡和发送网卡,配置CPU的收包核、处理核和转发核;在所述数据面开发套件中配置路由器的数据包过滤规则;包括:设置规则id、源IP地址区段、目的IP地址区段、源端口范围、目的端口范围、协议范围和每个规则id对应的包处理动作;将所述数据包的包头拆分成七个块,根据所述数据包过滤规则中的内容确定每个块对应的规则id,设置每个块对应的等价类标识号和规则掩码;使用七个cell数组存储所述七个块中的等价类标识号、规则掩码并记录所述七个块中不重复的等价类标识号的数目;其中,每个cell数组的索引为所述等价类标识号,对应的值为所述规则掩码;同时,建立七个node数组,每个node数组的索引为0-65535,值为所述等价类标识号;以每个cell数组中的不重复的等价类标识号为界限,分阶段进行有限次遍历,根据每一阶段生成的规则掩码确定最后一个阶段的规则掩码;根据所述最后一个阶段的规则掩码确定对应的规则id;并将遍历过程中每一阶段产生的数据组合起来,得到预处理表;通过所述接收网卡接收目标报文;在所述收包核中将所述目标报文的包头分块,并将每一个块作为并行查找的索引,对所述预处理表中的字段进行分阶段查找,且每一阶段查找内存的索引值由上一阶段的查找结果合并而成;根据最后一个阶段得到的索引值,确定所述目标报文命中的规则id;根据所述规则id在所述数据包过滤规则中对应的处理动作处理该目标报文。2.根据权利要求1所述的方法,其特征在于,以每个cell数组中的不重复的等价类标识号为界限,分阶段进行有限次遍历,根据每一阶段生成的规则掩码确定最后一个阶段的规则掩码;根据所述最后一个阶段的规则掩码确定对应的规则id;并将遍历过程中每一阶段产生的数据组合起来,得到预处理表,包括:将所述七个cell数组分成两类,分别为第一类cell数组和第二类cell数组,其中,所述第一类cell数组中共四个数组,所述第二类cell数组中共三个数组;在第一阶段,以所述第一类cell数组中的四个数组各自的不重复的等价类标识号数目为界限,进行四层遍历,计算出第一阶段数组的索引,并建立第一节点数组;所述第一节点数组中的索引对应的规则掩码为所述第一类中的四个数组对应的规则掩码进行与操作得到的结果;如果所述规则掩码在所述第一节点数组中不存在,将该规则掩码记录在所述第一节点数组中,所述规则掩码对应的索引,为所述第一节点数组的非0成员的数目,即等价类标识号,对应的值为该掩码;如果所述规则掩码在所述第一节点数组中存在,那么,所述规则掩码对应的索引,即等价类标识号,即为第一阶段数组的索引对应的值;记录第一阶段不重复的等价类标识号的数目;在第二阶段,以所述第二类中的三个数组各自的不重复的等价类标识号数目为界限,进行三层遍历,计算出第二阶段数组的索引,并建立第二节点数组;所述第二节点数组中的索引对应的规则掩码为所述第二类中的三个数组对应的规则掩码进行与操作得到的结果;如果所述规则掩码在所述第二节点数组中不存在,将该规则掩码记录在所述第二节点数组中,索引值为所述第二节点数组的非0数组的数目,对应的值为该掩码;如果所述规则掩码在所述第二节点数组中存在,那么,所述规则掩码对应的索引,即等价类标识号,即为第二阶段数组的索引对应的值;记录第二阶段不重复的等价类标识号的数目;在第三阶段,以所述第一阶段数组与所述第二阶段数组中的不重复的等价类标识号的数目为界限,进行二层遍历,计算出第三阶段的索引;并将所述第一阶段数组与所述第二阶段数组对应的规则掩码进行与操作,得到所述第三阶段的索引对应的规则掩码;获取所述规则掩码对应的二进制数,取所述二进制数中位数最小的1对应的规则id作为所述规则命中的规则id;将遍历过程中每一阶段产生的数组、索引、等价类标识号、规则掩码及规则id组合起来,得到预处理表。3.根据权利要求2所述的方法,其特征在于,在所述收包核中将所述目标报文的包头分块,并将每一个块作为并行查找的索引,对所述预处理表中的字段进行分阶段查找,且每一阶段查找内存的索引值由上一阶段的查找结果合并而成;根据最后一个阶段得到的索引值,确定所述目标报文命中的规则id,包括:将所述目标报文的包头分为七个块,并为每个块标明序号;以所述每个块的序号作为索引,在所述七个node数组中计算出第0阶段的等价类标识号;以所述第一类cell数组中的四个数组对应的不重复的等价类标识号,计算出所述目标报文第一阶段的索引,进而得到所述目标报文第一阶段的等价类标识号;以所述第二类cell数组中的三个数组对应的不重复的等价类标识号,计算出所述目标报文第二阶段的索引,进而得到所述目标报文第二阶段的等价类标识号;使用所述目标报文第一阶段的不重复的等价类标识号和所述目标报文第二阶段的不重复的等价类标识号,计算出第三阶段的等价类标识号,将其作为所述目标报文命中的规则id。4.根据权利要求1所述的方法,其特征在于,所述根据所述规则id在所述数据包过滤规则中对应的处理动作处理该目标报文,包括:检测所述处理动作是否是丢弃,如果是,则对所述报文进行释放;检测所述处理动作是否是分析处理,如果是,则将所述报文进行解码分析,完成分析后将...

【专利技术属性】
技术研发人员:陈永会宁大鹏
申请(专利权)人:大唐软件技术股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1