本发明涉及网络传输技术,特别涉及一种基于分类优先级的五元组查询方法。

背景技术:

近年来,随着网络的快速发展,网络数据包的转发效率显的尤为重要;目前,信息技术快速发展,其对应的数据量也迅速增长,在对大量数据量进行五元组信息查询时面临规则查询时间较长,现有的研究主要是通过改善规则存储算法的方式,从而来提高规则查询时间。五元组规则查找是网络数据转发过程中比较重要的一步,因而五元组规则查找成为一个值得研究的问题。

技术实现要素:

本发明的目的就是提出一种根据分类优先级进行五元组规则查询的方法。

本发明一种基于分类优先级的五元组查询方法,其中,包括:建立有效规则链表,该有效规则链表按照五元组分类的优先级进行排列,有效规则是指其对应的五元组分类存在对应的规则,当该系统不存在任何规则时,则该链表为空;建立有效规则链表和五元组分类对应的32个元素的数组,并对该两个部分进行初始化,有效规则链表为空;当系统框架初始化完毕后,进行规则的插入和删除,查询管理;从待处理数据包中提取所需的待处理五元组,随后利用优先级链表中高优先级元素所指向的规则,来进行五元组规则查询,若命中,则结束查找,若未命中,则遍历优先级链表继续进行查找。

根据本发明的基于分类优先级的五元组查询方法的一实施例,其中,在查找过程中,从数据包中提取五元组,如最高优先级属于某一类,则查找时忽略提取到的其余4类元素。

根据本发明的基于分类优先级的五元组查询方法的一实施例,其中,五元组分类对应的32个元素中的参数num设置为0;当进行规则插入操作时,首先根据五元组中的有效字段来创建五元组,同时根据有效字段计算五元组分类数组中对应的下标,用A表示,根据下标找到该分类对应的规则链表,进行规则的插入,当插入完成后,参数num值加1,之后遍历有效规则链表,若链表中某一元素的五元组分类数组对应下标的值与A相同,则此次插入完成,否则根据优先级向有效规则链表中插入对应元素。

根据本发明的基于分类优先级的五元组查询方法的一实施例,其中,当进行规则删除时,根据有效字段计算五元组分类数组中对应的下标,通过五元组分类数组中的指向规则实体部分的参数discipline找到规则实体链表删除对应规则,同时num成员变量减1,当num的值减小到0后,删除优先级链表对应的元素,否则优先级链表不做任何修改。

根据本发明的基于分类优先级的五元组查询方法的一实施例,其中,在五元组中,共有五个元素,对该五个元素采用排列组合的方式,共有32种可能性,采用具有32个元素的数组表示五元组不同的组合方式,数组中的每个成员有指向规则实体部分参数discipline和规则实体部分的个数num;五元组对每一个元素,1表示有效,0表示无效,组成的数正好对应数组的下标。

根据本发明的基于分类优先级的五元组查询方法的一实施例,其中,所有规则按照所属五元组分类进行存储,在规则中体现对于五元组分类关心的元素。

根据本发明的基于分类优先级的五元组查询方法的一实施例,其中,待处理数据包中包含待处理五元组,负载数据以及信息,通过编程从待处理数据包中提取待处理的五元组。

本发明缩小了每一种五元组分类方式对应的规则容量大小,致使插入,删除,查询时间缩短,且根据排列组合的方式包含了所有的可能性,使模糊查找和精确查找综合在一起,使其具有更广泛的适用性。

附图说明

图1所示是五元组查询的系统架构图;

图2所示是维护流程图;

图3所示是五元组查询流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

图1所示的是五元组查询的系统架构图,如图1所示,该系统主要由三部分组成,分别在图1上方进行的标示,各部分说明如下:五元组分类,在五元组中,共有五个元素,对该五个元素采用排列组合的方式,共有32(因此NR_CATEGORY=32)种可能性,采用具有32个元素的数组表示五元组不同的组合方式,数组中的每个成员有两个参数,分别是参数discipline(指向规则实体部分)和uint32_t num(规则实体部分的个数);该部分是该系统的枢纽部分,前后连接了其余两部分;

五元组包含源IP地址,源端口,目的IP地址,目的端口,传输层协议,针对每一个元素,1表示有效,0表示无效,用此方法组成的数正好对应数组的下标。

建立有效规则链表,该链表是按照五元组分类的优先级进行排列的,有效规则是指其对应的五元组分类存在对应的规则,当该系统不存在任何规则时,则该链表为空,当进行五元组查询时,依据链表优先顺序priority_order依次查找;

该有效规则链表中的每个成员有四个参数,分别是struct list_head *next,struct rules*category,uint8_t priority,uint8_t subscript,利用上述参数在进行规则插入和删除时做对应改动,查询时利用该链表按优先级从高到低进行遍历。数next指向链表中下一个元素,最后一个成员的next指针为NULL,参数priority_order指向链表的头结点;参数category指向五元组分类对应的位置处;参数priority是对应的五元组分类的优先级,数据越高,优先级越高,越靠近优先顺序priority_order,在进行链表元素插入时,遍历链表,寻找相邻的两个元素,其中一个元素的priority大于待插入元素的priority,一个元素的priority小于待插入元素的priority,待插入元素插入已找到的两个元素之间;subscript为图1中的中间部分数组的数组下标,该下标在规则的插入和删除中起关键作用。

对应分类规则,该部分是规则实体部分,所有规则按照所属五元组分类进行存储。为节约空间,不同的五元组分类对应的规则实体所采用的结构体存在差异。对于五元组分类中不关心的元素,不在规则中体现,因此共有32中不同的规则实体结构,比如对于类型的规则,规则实体中仅有一个成员。

图2是维护流程图,如图2所示,首先需要建立系统框架,首先建立有效规则链表和五元组分类对应的32个元素的数组,并对该两个部分进行初始化,有效规则链表为空,五元组分类对应的32个元素中的num设置为0,discipline设置为NULL,规则实体部分为空;

当系统框架初始化完毕后,就可以进行规则的插入和删除,查询管理。

当进行规则插入操作时,首先根据五元组中的有效字段来创建五元组,同时根据有效字段计算五元组分类数组中对应的下标,用A表示,根据下标可以找到该分类对应的规则链表,从而实现规则的插入,当插入完成后,结构体rules中的num字段值加1,之后遍历有效规则链表,若链表中某一元素的subscript的值与A相同,则此次插入完成,否则根据优先级(用户进行设置)向有效规则链表中插入对应元素,并设置参数category,参数priority和参数subscript。

参考图1,进行插入规则的过程,插入时,考虑图1中的三部分,规则插入到对应分类规则链表;struct rules中的成员num增加1,表示其对应分类规则成员增加1;遍历有效规则链表,若其中所有成员的结构体subsript均不等于A,则有效规则链表增加一个成员,否则不做处理。

当进行规则删除时,同插入操作相同,根据有效字段计算五元组分类数组中对应的下标,通过五元组分类数组中的discipline找到规则实体链表删除对应规则,同时结构体rules中的num成员变量减1,当num的值减小到0后,删除优先级链表对应的元素,否则优先级链表不做任何修改。

该方法采用的这种方式,控制了优先级链表的元素个数在可控范围内,元素个数少,致使插入和删除,查询操作很快完成。

图3所示是五元组查询流程图,如图3所示,五元组规则查询包括:

首先从待处理数据包中提取所需的待处理五元组,(其中待处理数据包中包含待处理五元组,负载数据等信息,通过编程从待处理数据包中提取待处理的五元组),随后利用优先级链表中高优先级元素所指向的规则(即找到对应规则库和查找规则节点,该节点相对于同一五元组分类位置固定),来进行五元组规则查询,若命中,则结束查找,若未命中,则遍历优先级链表继续进行查找。

在查找过程中,会从数据包中提取五元组,假如最高优先级属于类(属于该类的五元组分类共有五种),则查找时忽略提取到的其余4类元素,只关心有效元素,该特点使五元组精确查找和模糊查找综合在一起。

本发明是对五元组所包含的5种元素进行排列组合分类,其种类个数不超过32,因此在该方法中,实际的种类个数在0到32之间,每一类具有其相对应的规则,且对实际存在的种类进行优先级排列,进而确定五元组查找的顺序。

本发明利用排列组合方式,包含了五元组所有的分类方式,针对不同分类方式,设置其对应优先级,按照该优先级顺序进行五元组查询。

与现有技术相比,较多的分类方式,缩小了每一种五元组分类方式对应的规则容量大小,致使插入,删除,查询时间缩短,且根据排列组合的方式包含了所有的可能性,使模糊查找和精确查找综合在一起,使其具有更广泛的适用性。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

linux五元组结构体,一种基于分类优先级的五元组查询方法与流程相关推荐

  1. linux ipmitool检测内存,一种基于ipmitool工具循环侦测内存的方法与流程

    本发明涉及服务器技术领域,具体的说是一种基于ipmitool工具循环侦测内存的方法. 背景技术: 随着计算机技术的发展,计算机已经广泛应用于生活.工作中各个领域,对计算机计算处理能力和存储能力也提出了 ...

  2. 基于linux火焰识别算法,一种基于深度学习模型的火焰识别方法与流程

    本发明属于通信领域,具体涉及一种基于深度学习模型的火焰识别方法. 背景技术: 随着我国工业化与城镇水平的不断提高,现代设施大型公共建筑朝着空间大.进深广功能复杂的多元化方向发展,这对于防烟火朝着空间大 ...

  3. html5音频剪辑,一种基于HTML5Canvas画布音视频分段剪辑方法与流程

    技术特征: 1.一种基于html5canvas画布音视频分段剪辑方法,其特征在于:包括如下步骤: 步骤一:首先使用者预先获取源音视频文件,然后使用者对音视频文件分段剪辑时,进入音视频文件分段剪辑主单元 ...

  4. 直播弹幕 html5,一种基于HTML5的弹幕播放器及其方法与流程

    本发明涉及互联网技术领域,具体涉及一种基于HTML5的弹幕播放器及其方法. 背景技术: 弹幕是指一种在观看视频时,大量以字幕(有且不限于文字和图片)形式呈现的评论与视频同在一个画面的现象.在视频上方大 ...

  5. spatialite android,一种基于Android系统的Spatialite空间数据库加密方法与流程

    本发明属于数据库技术领域,具体涉及一种基于Android系统的Spatialite空间数据库加密方法. 背景技术: 随着经济建设及智能终端和移动GIS技术的不断发展,终端的CPU.GPU.内存.显示屏 ...

  6. 电容屏物体识别_一种基于触摸屏触摸点的物体识别方法与流程

    本发明涉及触摸屏触摸点物体识别技术领域,具体为一种基于触摸屏触摸点的物体识别方法. 背景技术: 多触点触摸屏支持多个触点同时输入,通过触摸屏的点的特征,进行物体识别是一个成熟的技术,以下简称物体识别为 ...

  7. 机器人测钢卷直径_一种基于关节机器人的冷轧钢卷卷芯焊接方法与流程

    本发明涉及冶金技术领域,特别涉及一种基于关节机器人的冷轧钢卷卷芯焊接方法. 背景技术: 在冷轧罩式退火工序,钢卷采用立式吊具吊运,为防止钢卷卷芯松动导致卷芯钢带损坏和抽芯故障,必须将钢卷卷芯内圈焊接固 ...

  8. 航测大数据量处理_一种基于动态航测的图像大数据分析方法与流程

    本发明涉及数据处理技术领域,具体为一种基于动态航测的图像大数据分析方法. 背景技术: 数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的 ...

  9. python应用如何实现升级_一种基于Python实现BMC批量升级的方法与流程

    本发明涉及BMC批量升级,尤其涉及一种基于Python实现BMC批量升级的方法. 背景技术: 随着现代服务器主板技术的发展,主板设计形态复杂多变.无论是设计成本还是后期使用过程中的维护成本都很高.如何 ...

最新文章

  1. ORACLE NOT EXISTS不等值 改写成hive
  2. zz Microsoft Chart Controls for Microsoft .NET Framework 3.5
  3. windows8.1如何分盘
  4. php mysql需要服务器配置_php服务器配置(php+mysql+iis)步骤
  5. [转]面向接口编程详解(一)——思想基础
  6. 中标麒麟/NeoKylin 安装QT开发环境
  7. Exsi6.5修改主机密码
  8. 微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题
  9. 亲串 (hdu 2203 KMP)
  10. Bravo.Reporting:使用 .Net 实现基于 ODF 文档格式的报表系统
  11. 直线插补和圆弧插补的区别
  12. DiskGenius无法分区
  13. 树莓派4B设置USB启动
  14. 导致计算机重启的原因,电脑自动重启的原因分析
  15. Python串口异步通信
  16. “人货场”模型,该怎么搭建?
  17. Windows安装达梦数据库(Intel CPU)
  18. C++元编程——CNN进行Minist手写数字识别
  19. 白杨SEO:SEO转型系列之四,SEO如何转型自媒体?转型方向有哪些?
  20. linux端口占用eclipse,Linux 中 eclipse 的tomcat端口号被占用

热门文章

  1. UObject反序列化--大象无形10.1.2笔记
  2. 阿里云centos7下环境部署和项目部署
  3. 2021年熔化焊接与热切割复审考试及熔化焊接与热切割
  4. vue+element密码和确认密码校验以及隐藏显示密码的小眼睛
  5. Mac 网页全屏截图
  6. 首届AAAI/ACM SIGAI博士论文奖公布, 清华姚班毕业生、MIT学霸吴佳俊获奖
  7. 互联网创业真的很难找到“技术合伙人”吗?
  8. android keystore作用,Android KeyStore理解及簽名
  9. java枚举类型加入springbean_spring 注入一个以枚举类型对象
  10. 微信小程序自定义tabBar以及图标-使用vant-weapp