【技术实现步骤摘要】
基于零拷贝和Linux内核的软件流控方法及其系统
本专利技术涉及软件流控
,尤其涉及一种基于零拷贝和Linux内核的软件流控方法及其系统。
技术介绍
随着“大数据”与“云计算”概念的提出,各种移动访问、应用资源、云端服务也不断涌现出来,带宽需求不断扩大,对带宽资源的占用也越来越高,如果不加以限制,会严重消耗企业的带宽资源,从而影响正常的业务数据传输。 在这种情形下,软件流控也变得越来越重要,当前主流的软件流控实现方法有两种:一种方法是基于Linux内核提供的流量控制(Traffic Control,以下简称TC)组件,该方法的优点是Linux内核和TC组件提供了丰富的功能支持,可以根据用户需求较快的开发新功能,缺点是所有数据包均需要经过Linux内核转发,转发性能较低。另一种方法是基于零拷贝技术,用户态程序可直接从网卡上读取数据包,并实现流控算法,该方法的优点是转发性能高,缺点是用户需要自己重头开发流控框架,实现起来复杂度大。 鉴于以上内容,有必要提供一种能克服以上缺点的流控方法。
技术实现思路
本专利技术的目的在于提 ...
【技术保护点】
一种基于零拷贝和Linux内核的软件流控方法,其特征在于,包括以下步骤:用零拷贝方式获取网卡上的数据包的步骤;判断所述数据包是否需要流控的步骤;如果所述数据包需要流控,则将所述数据包打上流控队列号标记的步骤;通过虚拟网卡驱动提供的接口,将打上流控队列号标记的数据包发送到Linux内核的虚拟网卡上的步骤;将接收到的所述打上流控队列号标记的数据包转换为内核打上标记后的数据包的步骤;以及利用linux内核TC模块对所述内核打上标记后的数据包进行流量控制,以产生流控后的数据包的步骤。
【技术特征摘要】
1.一种基于零拷贝和Linux内核的软件流控方法,其特征在于,包括以下步骤: 用零拷贝方式获取网卡上的数据包的步骤; 判断所述数据包是否需要流控的步骤; 如果所述数据包需要流控,则将所述数据包打上流控队列号标记的步骤; 通过虚拟网卡驱动提供的接口,将打上流控队列号标记的数据包发送到Linux内核的虚拟网卡上的步骤; 将接收到的所述打上流控队列号标记的数据包转换为内核打上标记后的数据包的步骤;以及 利用Iinux内核TC模块对所述内核打上标记后的数据包进行流量控制,以产生流控后的数据包的步骤。2.如权利要求1所述的基于零拷贝和Linux内核的软件流控方法,其特征在于,所述将接收到的所述打上流控队列号标记的数据包转换为内核打上标记后的数据包的步骤进一步包括: 所述打上流控队列号标记的数据包中的网络数据包转换为Iinux内核存储的sk_bufT格式数据包的步骤;以及 根据所述打上流控队列号标记的数据包的标记值,将所述sk_buff格式数据包打上标记的步骤。3.如权利要求1所述的基于零拷贝和Linux内核的软件流控方法,其特征在于,还包括:用户态程序通过虚拟网卡驱动提供的接口接收所述流控后的数据包,并用零拷贝方式将所述流控后的数据包发送到网卡的步骤。4.如权利要求1所述的基于零拷贝和Linux内核的软件流控方法,其特征在于,所述将接收到的所述打上流控队列号标记的数据包转换为内核打上标记后的数据包的步骤是由Iinux内核的虚拟网卡实现。5.如权利要求1所述的基于零拷贝和Linux内核的软件流控方法,其特征在于:所述流控队列号标记的值是所述打上流控队列号标记的数据包对应在Linux内核TC的流控队列号。6.一种基于零拷贝和Linux内核的软件流控系统,其特征在于,包括: 网卡,连接于流控判断模块,通过网卡零拷贝驱动,获取所述网卡上的数据包,并将所述数据包发送到所述流控判断模块; 所述流控判断模...
【专利技术属性】
技术研发人员:刘永强,吕恩泳,沈智杰,景晓军,唐新民,
申请(专利权)人:任子行网络技术股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。