[发明专利]多核处理器网络设备的控制系统及方法有效
申请号: | 201410234696.4 | 申请日: | 2014-05-29 |
公开(公告)号: | CN104050036B | 公开(公告)日: | 2018-04-27 |
发明(设计)人: | 宁志明 | 申请(专利权)人: | 汉柏科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 北京中政联科专利代理事务所(普通合伙)11489 | 代理人: | 陈超 |
地址: | 300384 天津市西青*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多核 处理器 网络设备 控制系统 方法 | ||
技术领域
本发明涉及到一种多核处理器网络设备的控制系统及方法,特别的,涉及到控制面和数据面相分离的网络设备软件架构,进而能够提高报文处理和设备吞吐性能的方法。
背景技术
随着网络技术的发展,对防火墙技术的要求也越来越高,防火墙设备的处理器由单核处理器已经发展到多核处理器,如Broadcom公司的XLP832处理器,为8核MIPS处理器,每个核由4个硬件线程,这样可以理解为32核处理器。如何合理的使用多核处理器资源,充分发挥多核处理器的优势,尽量提高设备的吞吐性能,已成为各个厂商非常关注的问题。
传统的防火墙设备对多核处理器的使用多采用控制和数据转发分离的模型,比如32核处理器,各个核编号为CPU0–CPU31,那么几个CPU专门做控制相关的处理,如命令配置、路由维护、地址管理、网页展示等业务,这几个CPU称之为“控制平面”,剩下的CPU全部做数据转发处理,如报文收发,查路由,VPN,攻击防护等业务,这几个CPU称之为“数据平面”。通过这种控制面和数据面相分离的模型,来提高报文处理的性能。
但这种控制面和数据面分离的模型,通常实现都很复杂,需要很大的软件编码去实现上述模型,也需要很强的技术积累。同时,因为要区分处理各个处理器,需要对处理器做很多强相关的底层编码,如果设备换了一种处理器后,要想实现这种控制面-数据面模型,可能还需要重新编码,费时费力。
因此,有必要在保证报文处理能力和设备吞吐性能的前提下,提供一种控制面和数据面实现方法简单、通用性强的多核处理器网络设备的控制系统及方法。
发明内容
本发明的目的是提供一种多核处理器网络设备的控制系统及方法,其采用控制面和数据面相分离的控制架构,通过内核线程实现数据面操作,利用内核函数绑定数据面的内核线程到单独的CPU,最后利用内核参数屏蔽其他程序,以防占用数据面CPU资源,实现控制面和数据面相分离的网络设备控制系统及方法。根据本发明,可以在保证各个数据面执行效率的前提下,提高报文处理和设备吞吐性能,且方法实现简单,通用性强,灵活稳定,便于移植。
根据本发明的一个方面,提供了一种多核处理器网络设备的控制系统,包括:控制面单元11,用于提供系统综合控制;数据面单元12,用于控制数据面的线程运行;用户态单元13,用于在指定的CPU上运行用户态的线程,以避免这些线程干扰数据面的CPU。
其中,所述控制面单元11以Linux的SMP方式运行于内核态,控制命令配置、路由维护、地址管理、网页展示业务的调度分配;所述数据面单元12运行于内核态,其中的多个内核线程分别绑定在不同的CPU上运行;以及所述用户态单元13的所有线程在所述控制面单元11指定的CPU上执行。
优选的,所述数据面单元12还包括:内核线程控制模块100,用于创建并设置数据面的线程;数据面执行模块200,用于执行数据面的线程;以及进程隔离模块300,用于隔离数据面的线程,以隔离控制面和用户态的线程,使其不会在数据面的CPU上运行。
优选的,所述内核线程控制模块100进一步包括:线程创建模块110,用于通过kthread_create函数创建线程;和线程控制模块120,用于通过kthread_bind函数控制线程运行于特定CPU上。
优选的,所述数据面执行模块200通过kthread_create函数创建数据面的执行函数dataplane_process,创建方式表示为:
其中,dataplane_process表示数据面要执行的线程,参数dp_cpu_start表示数据面线程运行的起始CPU,参数dp_cpu_end表示数据面线程运行的结尾CPU,dataplane_data[cpu]为该cpu私有的数据,用于dataplane_proces内核线程执行时该内核线程使用;dataplane/x为数据面内核线程的名称,dp_thread[cpu]用于存储内核线程创建后的结构。
优选的,所述进程隔离模块300通过isolcpus函数指定数据面的线程只运行于规定范围的CPU。
优选的,所述kthread_create函数表示为:
上述函数的参数含义为:
threadfn:内核线程的执行函数,
data:传递给threadfn函数的数据指针,
namefmt:内核线程的别名。
优选的,所述kthread_bind函数表示为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410234696.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种紫笋茶的加工方法
- 下一篇:一种液压油吸送装置