[发明专利]一种网络数据包处理方法、装置和网络处理设备有效
申请号: | 201410044200.7 | 申请日: | 2014-01-30 |
公开(公告)号: | CN104821924B | 公开(公告)日: | 2018-11-27 |
发明(设计)人: | 郭涛;郭代飞;隋爱芬 | 申请(专利权)人: | 西门子公司 |
主分类号: | H04L12/861 | 分类号: | H04L12/861;G06F9/50 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 李慧 |
地址: | 德国*** | 国省代码: | 德国;DE |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 网络 数据包 处理 方法 装置 设备 | ||
本发明实施方式公开了一种网络数据包处理方法、装置和网络处理设备。方法包括:经由网络接收数据包,并将接收的数据包存储到预定缓存空间;并行处理预定缓存空间中的数据包。本发明实施方式提出一种基于共享缓存空间的多进程数据包处理方式,数据包接收工作和包处理工作分离,各个处理进程并行处理数据包,可以充分发挥多核CPU优势,降低资源浪费。
技术领域
本发明涉及信息处理技术领域,特别是涉及一种网络数据包处理方法、装置和网络处理设备。
背景技术
随着硬件技术的发展,目前多核CPU的使用已经非常普遍,尤其是在网络处理服务器方面。但是,如果没有良好的软件架构设计,系统总的CPU使用率只能维持在较低的水平,这就存在较大资源浪费。为了处理高速网络流量(比如1Gbps、10Gbps,甚至更高),对当前软件架构进行改进可以充分发挥多核CPU的优势。
为提高整个系统的CPU使用效率,常见有两种方法:多线程和多进程。多线程方式可以较好发挥多核CPU的性能,但是为了避免线程间竞争,需要使到线程锁,而线程锁的开销可能会占到CPU总开销的30%,这是一个不小的资源浪费,而且多线程实现方式对于代码编写还提出了更高要求。在多进程处理方式中,多个进程都需要从网卡收包,而包捕获是一项消耗CPU资源的工作,这对CPU资源造成了极大浪费,甚至会因此造成丢包。
发明内容
本发明实施方式提出一种网络数据包处理方法和处理装置,以降低CPU资源浪费。
本发明实施方式还提出一种网络处理设备,以降低CPU资源浪费。
本发明实施方式的技术方案如下:
一种网络数据包处理方法,包括:
经由网络接收数据包,并将接收的数据包存储到预定缓存空间;
并行处理所述预定缓存空间中的所述数据包。
所述预定缓存空间包括一数据包缓存队列环;该方法包括:
基于该数据包的接收编号以及所述数据包缓存队列环包含的存储单元总数,确定该数据包在所述数据包缓存队列环中的存储位置。
所述预定缓存空间还包括一数据包获取队列环,所述数据包获取队列环中保存有该数据包在所述数据包缓存队列环中的存储位置。
所述数据包获取队列环还保存有与该存储位置关联的该数据包接收编号和数据包长度。
所述预定缓存空间还包括一指向该数据包获取队列环当前位置的指针。
该方法包括:
在所述数据包获取队列环中确定一目标数据包在所述数据包缓存队列环中的存储位置;
从所确定的存储位置处获取并处理该目标数据包。
该方法包括:
从该数据包获取队列环当前位置开始,按照节点递减顺序查找接收编号小于或等于该目标数据包接收编号的匹配节点,当找到匹配节点时,获取该匹配节点与数据包获取队列环当前位置之间所有节点各自保存的存储位置,并利用所述存储位置从所述数据包缓存队列环中获取并处理该目标数据包。
该方法还包括,
当递减到所述数据包获取队列环的第一节点还找不到匹配节点时,从所述数据包获取队列环的最末节点开始按照节点递减顺序查找接收编号小于或等于该目标数据包的接收编号的匹配节点,一直查找到该数据包获取队列环当前位置;其中在该查找过程中,当找到匹配节点时,获取该匹配节点与数据包获取队列环当前位置之间所有节点各自保存的存储位置,并利用所述存储位置从所述数据包缓存队列环中获取并处理该目标数据包。
所述节点递减顺序为逐一递减、按照固定值递减或无规律递减。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西门子公司,未经西门子公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410044200.7/2.html,转载请声明来源钻瓜专利网。