[发明专利]基于零拷贝和Linux内核的软件流控方法及其系统有效
| 申请号: | 201410603601.1 | 申请日: | 2014-10-27 |
| 公开(公告)号: | CN104320351B | 公开(公告)日: | 2019-04-05 |
| 发明(设计)人: | 刘永强;吕恩泳;沈智杰;景晓军;唐新民 | 申请(专利权)人: | 任子行网络技术股份有限公司 |
| 主分类号: | H04L12/801 | 分类号: | H04L12/801;H04L12/863 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 拷贝 linux 内核 软件 方法 及其 系统 | ||
1.一种基于零拷贝和Linux内核的软件流控方法,其特征在于,包括以下步骤:
用零拷贝方式获取网卡上的数据包的步骤;
判断所述数据包是否需要流控的步骤;
如果所述数据包需要流控,则将所述数据包打上流控队列号标记的步骤;
通过虚拟网卡驱动提供的接口,将打上流控队列号标记的数据包发送到Linux内核的虚拟网卡上的步骤;
将接收到的所述打上流控队列号标记的数据包转换为内核打上标记后的数据包的步骤;以及
利用linux内核TC模块对所述内核打上标记后的数据包进行流量控制,以产生流控后的数据包的步骤,其中,
所述将接收到的所述打上流控队列号标记的数据包转换为内核打上标记后的数据包的步骤进一步包括:
将所述打上流控队列号标记的数据包中的网络数据包转换为linux内核存储的sk_buff格式数据包的步骤;以及
根据所述打上流控队列号标记的数据包的标记值,将所述sk_buff格式数据包打上标记的步骤。
2.如权利要求1所述的基于零拷贝和Linux内核的软件流控方法,其特征在于,于所述利用linux内核TC模块对所述内核打上标记后的数据包进行流量控制,以产生流控后的数据包的步骤之后,还包括:用户态程序通过虚拟网卡驱动提供的接口接收所述流控后的数据包,并用零拷贝方式将所述流控后的数据包发送到网卡的步骤。
3.如权利要求1所述的基于零拷贝和Linux内核的软件流控方法,其特征在于,所述将接收到的所述打上流控队列号标记的数据包转换为内核打上标记后的数据包的步骤是由linux内核的虚拟网卡实现。
4.如权利要求1所述的基于零拷贝和Linux内核的软件流控方法,其特征在于:所述流控队列号标记的值是所述打上流控队列号标记的数据包对应在Linux内核TC的流控队列号。
5.一种基于零拷贝和Linux内核的软件流控系统,其特征在于,包括:
网卡,连接于流控判断模块,通过网卡零拷贝驱动,获取所述网卡上的数据包,并将所述数据包发送到所述流控判断模块;
所述流控判断模块,连接于流控队列号标记模块,判断所述数据包是否需要流控,如需要流控,则将所述数据包发送至所述流控队列号标记模块,如不需要流控,则将所述数据包回传至所述网卡;
所述流控队列号标记模块,连接于虚拟网卡模块,将需要流控的所述数据包打上流控队列号标记,并将打上流控队列号标记的数据包发送到所述虚拟网卡模块;
所述虚拟网卡模块,连接于流量控制模块以及所述网卡,在linux内核 与所述网卡之间建立数据连接,将所述打上流控队列号标记的数据包转换为内核打上标记后的数据包结构,并将所述内核打上标记后的数据包发送到所述流量控制模块,其中,所述将所述打上流控队列号标记的数据包转换为内核打上标记后的数据包结构的步骤进一步包括:将所述打上流控队列号标记的数据包中的网络数据包转换为linux内核存储的sk_buff格式数据包,以及根据所述打上流控队列号标记的数据包的标记值,将所述sk_buff格式数据包打上标记;以及
所述流量控制模块,对所述内核打上标记后的数据包进行流量控制,以产生流控后的数据包,并通过所述虚拟网卡模块将所述流控后的数据包传送至所述网卡。
6.如权利要求5所述的基于零拷贝和Linux内核的软件流控系统,其特征在于:所述流控判断模块是在用户态程序收到所述数据包后,判断所述数据包是否需要流控。
7.如权利要求5所述的基于零拷贝和Linux内核的软件流控系统,其特征在于:所述流控队列号标记的值是所述打上流控队列号标记的数据包对应在Linux内核TC的流控队列号。
8.如权利要求5所述的基于零拷贝和Linux内核的软件流控系统,其特征在于:所述流量控制模块属于linux内核TC模块。
9.如权利要求5所述的基于零拷贝和Linux内核的软件流控系统,其特征在于,所述虚拟网卡模块进一步包括:
结构转换模块,连接于数据包收发模块,对所述打上流控队列号标记的数据包进行结构转换处理,将所述打上流控队列号标记的数据包转换为所述内核打上标记后的数据包结构;以及
所述数据包收发模块,在linux内核与所述网卡之间建立数据连接,进行数据互通,接收所述流控队列号标记模块发送的所述打上流控队列号标记的数据包,并将所述结构转换模块进行结构转换处理后的所述内核打上标记后的数据包发送到所述流量控制模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于任子行网络技术股份有限公司,未经任子行网络技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410603601.1/1.html,转载请声明来源钻瓜专利网。





