[发明专利]一种数据包的规则匹配方法及装置有效
申请号: | 201310493721.6 | 申请日: | 2013-10-18 |
公开(公告)号: | CN103560958B | 公开(公告)日: | 2017-01-18 |
发明(设计)人: | 姜海洋;丁万夫;林程勇;谢高岗;关洪涛;刘俊杰 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | H04L12/741 | 分类号: | H04L12/741 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙)44285 | 代理人: | 唐华明 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据包 规则 匹配 方法 装置 | ||
技术领域
本发明涉及通信技术领域,尤其涉及一种数据包的规则匹配方法及装置。
背景技术
随着网络设备新技术的不断发展及网络流量的快速增长,需要网络设备具有处理高速网络流量的能力。例如,对于运行在实际网络中的OpenFlow交换机,就需要具有处理高速网络流量的能力,在OpenFlow交换机的处理流程中,需要对到来的每一个数据包进行协议处理、流表查询等非常耗时的操作,目前,主要采用以下数据处理方式:
一种是软硬件结合的方式:基于硬件所具有的处理速度快的优点,利用FPGA、TCAM等硬件进行大部分的数据包处理,但在OpenFlow交换机中,由于流表中的规则条目多而复杂,一些复杂规则不能在硬件上实现,所以,部分的数据包处理还需要送入软件模块进行数据包的规则匹配。但是,这种方式有以下缺点:一是软硬件协作需要占用一定的网络资源;二是在硬件上完成流表查询的功能,规则定期更新不够灵活;三是硬件本身的价格较高。
为了克服上述软硬件结合的数据处理方式所带来的缺陷,采用数据并行这种全软件的工作方式,在数据并行方式中,利用多个OpenFlow进程同时运行多个OpenFlow实例,即利用多个OpenFlow进程同时处理多个数据包。具体地,由于任一个数据包都属于一个流,这些流分布于流空间中,把流空间划分为N份,每一份绑定一个OpenFlow的进程;当有数据包到来时,检查预先保存的一张用来记录流和进程间对应关系的表,如果该数据包是表中的已有流,则根据表中记录的对应关系,把数据包分配给相应的进程进行处理;如果是新来流,则查看这个流所属的流空间所对应的进程,再把当前流和进程的对应关系保存在表中,以后属于这个流的数据包都会由这个进程处理。
基于上述流空间的划分,根据划分是否可变,可分为静态划分和动态划分两种。对于静态的流空间划分方法,流空间的划分和进程之间的对应关系是不 变的,但互联网中的流量存在Zipf分布的特性,会导致某些进程分配的流量很大,负载很重,但是另一些进程的负载却很轻,由于这些局部性的存在,对流的划分很难使并行的进程达到负载均衡。而采用动态的流空间划分方法可缓解静态划分方法所带来的缺陷,采用动态的划分方法,需要系统实时的监测每一个进程的负载情况,如果某个进程的负载过大,新来的流就不会再分配给这个进程,已分配给这个进程的流也可以交给别的进程处理,但是,动态的划分方法也存在缺陷:一方面,对进程负载情况的监控,增加了系统的开销,另一方面,系统监测负载均衡情况和进行负载调整的过程是周期运行的,周期性的处理方式会出现突发流量的现象而造成严重的负载不均衡,此外,由于无法预测一个流所对应的负载情况,这种调整无法从根本上解决流量的不均衡问题。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种数据包的规则匹配方法及装置,以通过实现负载均衡来加强网络数据处理能力的目的。
为了解决以上技术问题,本发明采取的技术方案是:
第一方面,本发明提供了一种数据包的规则匹配方法,包括:
在接收到数据包后,利用确定的包获取线程捕获数据包,所述确定的包获取线程为根据第一负载均衡算法在至少两个包获取线程中确定的一个包获取线程;
利用确定的协议处理线程获取所述数据包的协议信息,所述确定的协议处理线程为根据第二负载均衡算法在所述确定的包获取线程绑定的至少两个协议处理线程中确定的一个协议处理线程;
将所述协议信息分别发送至所述确定的协议处理线程绑定的至少两个数据包处理线程中;
每个数据包处理线程分别利用所述协议信息与对应加载的至少一个规则条目进行匹配;
如果有数据包处理线程匹配出规则条目,则判断是否有至少两个数据包处理线程分别匹配出优先级最高的第一规则条目,如果是,则从至少两个第一规则条目中选取优先级最高的第二规则条目,以将所述第二规则条目作为与所述 数据包匹配的规则条目,如果否,则将所述第一规则条目作为与所述数据包匹配的规则条目。
在第一方面的第一种可能的实现方式中,所述方法还包括:
确定分配给每个数据包处理线程使用的至少一个规则条目,以使每个数据包处理线程分别加载分配给自己的至少一个规则条目;
所述确定分配给每个数据包处理线程使用的至少一个规则条目,具体包括:
从所有规则条目中提取至少一个规则子组,每个规则子组中包含了匹配信息均相同的所有规则条目,所述协议信息中包含有所述匹配信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310493721.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于网络编码和复制的机会网络混合路由方法
- 下一篇:高铁施工深度用外限位块