[发明专利]网络数据包的发送方法及装置在审
| 申请号: | 201310690336.0 | 申请日: | 2013-12-16 |
| 公开(公告)号: | CN104717189A | 公开(公告)日: | 2015-06-17 |
| 发明(设计)人: | 王魏强;朱志勇 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06 |
| 代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 余刚;梁丽超 |
| 地址: | 518057 广*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 网络 数据包 发送 方法 装置 | ||
1.一种网络数据包的发送方法,其特征在于,包括:
Linux操作系统的内核空间接收用户进程发送的大的网络数据包,其中,所述大的网络数据包的大小大于或等于所述内核空间能够发送的网络数据包的大小;
所述内核空间将所述大的网络数据包拆分成多个小的网络数据包,其中,每个小的网络数据包的大小小于或等于所述内核空间能够发送的网络数据包的大小;
所述内核空间利用所述内核空间的定时器发送所述多个小的网络数据包。
2.根据权利要求1所述的方法,其特征在于,
Linux操作系统的内核空间接收用户进程发送的大的网络数据包包括:所述内核空间的协议栈接收所述大的网络数据包,并向所述内核空间的网卡驱动层发送所述大的网络数据包;
所述内核空间将所述大的网络数据包拆分成多个小的网络数据包包括:所述网卡驱动层将所述大的网络数据包拆分成所述多个小的网络数据包;
所述内核空间利用所述内核空间的定时器发送所述多个小的网络数据包包括:所述网卡驱动层利用所述定时器发送所述多个小的网络数据包。
3.根据权利要求1所述的方法,其特征在于,在Linux操作系统的内核空间接收用户进程发送的大的网络数据包之前,还包括:
设置所述内核空间,以使所述内核空间能够接收所述大的网络数据包。
4.根据权利要求2所述的方法,其特征在于,在所述内核空间的协议栈接收所述大的网络数据包之前,还包括:
设置所述协议栈层,以使所述协议栈层接收所述大的网络数据包并向所述网卡驱动层发送接收到的所述大的网络数据包。
5.根据权利要求4所述的方法,其特征在于,设置所述协议栈层包括:打开所述Linux操作系统的UFO/GSO功能,通过所述UFO/GSO功能使得所述协议栈层接收所述网络数据包并向所述网卡驱动层发送接收到的数据包。
6.根据权利要求2所述的方法,其特征在于,所述网卡驱动层将所述大的网络数据包拆分成所述多个小的网络数据包包括:
所述网卡驱动层根据所述大的网络数据包中的IP选项头携带的时间信息,将所述大的网络数据包拆分成所述多个小的网络数据包,其中,所述时间信息包括:所述预定时间间隔和包发送时间。
7.根据权利要求2所述的方法,其特征在于,所述网卡驱动层利用所述定时器发送所述多个小的网络数据包包括:
所述网卡驱动层将所述多个小的网络数据包分别挂接到所述包发送时间的时间槽中;
所述网卡驱动层每间隔一个所述预定时间间隔,按照挂接到所述时间槽中的顺序发送所述多个小的网络数据包。
8.根据权利要求1至7中任一项所述的方法,其特征在于,在所述内核空间将所述网络数据包拆分成多个小的网络数据包之前,包括:
申请预定数量的套接字缓存SKB用于存储所述多个小的网络数据包。
9.根据权利要求8所述的方法,其特征在于,在系统的CPU为多核CPU的情况下,包括:
为所述多核CPU的每个内核分配一个percpu变量和一个专用队列。
10.根据权利要求1所述的方法,其特征在于,所述定时器为高精度定时器。
11.一种网络数据包的发送装置,其特征在于,位于Linux操作系统的内核空间,包括:
接收模块,用于接收用户进程发送的大的网络数据包,其中,所述大的网络数据包的大小大于或等于所述内核空间能够发送的网络数据包的大小;
拆分模块,用于将所述大的网络数据包拆分成多个小的网络数据包,其中,每个小的网络数据包的大小小于或等于所述内核空间能够发送的网络数据包的大小;
发送模块,用于利用所述内核空间的定时器发送所述多个小的网络数据包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司;,未经中兴通讯股份有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310690336.0/1.html,转载请声明来源钻瓜专利网。





