[发明专利]一种基于LINUX的无中断线速收包、发包方法及设备有效
申请号: | 201710187894.3 | 申请日: | 2017-03-27 |
公开(公告)号: | CN107066340B | 公开(公告)日: | 2020-05-12 |
发明(设计)人: | 岑立仲;金红;杨满智;刘长永 | 申请(专利权)人: | 恒安嘉新(北京)科技股份公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;H04L12/863 |
代理公司: | 北京市万慧达律师事务所 11111 | 代理人: | 王虎 |
地址: | 100191 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 断线 速收包 发包 方法 设备 | ||
1.一种基于LINUX的无中断线速收包方法,其特征在于,所述方法包括:
S11、应用程序获取至少一个空闲缓冲块对应的编号;
S12、所述应用程序携带所述至少一个空闲缓冲块的编号触发内核模块与网卡进行数据包交换;
S13、所述内核模块将所述至少一个空闲缓冲块的编号与网卡中的至少一个己存数据包缓冲块的编号交换,并将所述至少一个空闲缓冲块的物理地址配置到所述网卡,以使所述网卡通过所述多个空闲缓冲块接收新的数据包;
S14、所述应用程序根据所述内核模块返回的所述至少一个己存数据包缓冲块编号,处理所述己存数据包缓冲块中数据;
在所述步骤S11之前,所述方法还包括:确定共享内存,所述共享内存用作收发数据包缓冲内存;
所述应用程序通过所述内核模块映射共享所述共享内存;
将所述共享内存中部分内存设置为多个缓冲块,并对所述每个缓冲块进行标记编号;其中,所述多个缓冲块未存储数据包时为空闲缓冲块;
使用所述多个空闲缓冲块初始化网卡收包队列的所有节点,配置所述多个空闲缓冲块物理地址到所述网卡中用于收包,并记录所述多个空闲缓冲块的编号;以及
关闭所述网卡的中断;
其中,在执行步骤S14之后,继续执行步骤S11,所述步骤S11-S14是实时循环进行的。
2.根据权利要求1所述的方法,其特征在于,所述应用程序携带所述至少一个空闲缓冲块的编号触发内核模块与网卡进行数据包交换包括:
所述应用程序通过收包函数携带所述至少一个空闲缓冲块的编号,并将所述至少一个空闲缓冲块编号发送至所述内核模块;以及
调用所述内核模块中的收包函数,以触发所述内核模块根据所述至少一个空闲缓冲块编号与所述网卡进行数据包交换。
3.根据权利要求1或2所述的方法,其特征在于,所述内核模块将所述至少一个空闲缓冲块编号与网卡中的至少一个己存数据包缓冲块的编号交换,并将所述至少一个空闲缓冲块的物理地址配置到所述网卡包括:
所述内核模块中的收包函数判断所述网卡收包队列中是否有己存数据包缓冲块;
若有,则将所述至少一个空闲缓冲块的编号与所述网卡收包队列中的至少一个己存数据包缓冲块的编号进行交换,并将所述至少一个空闲缓冲块的物理地址配置到所述网卡的收包队列中,以用作网卡后续收包;
所述内核模块将所述至少一个己存数据包缓冲块的编号及数量返回至所述应用程序。
4.一种基于LINUX的无中断线速发包方法,其特征在于,所述方法包括:
S21、应用程序获取至少一个空闲缓冲块及对应的编号,并将待发数据存储于所述至少一个空闲缓冲中,形成至少一个待发缓冲块;
S22、所述应用程序携带所述至少一个待发缓冲块的编号触发内核模块与网卡进行数据包交换;
S23、所述内核模块将所述至少一个待发缓冲块的编号与网卡中的至少一个己发数据缓冲块编号交换,并将所述至少一个待发缓冲块的物理地址配置至网卡中,网卡发送所述至少一个待发缓冲块中的数据包;
S24、所述应用程序根据所述内核模块返回的至少一个己发数据缓冲块编号,归还所述至少一个己发数据缓冲块为空闲缓冲块于共享内存中;
在所述步骤S21之前,所述方法还包括:
确定共享内存,所述共享内存用作收发数据包缓冲内存;
所述应用程序通过所述内核模块映射共享所述共享内存;
将所述共享内存中部分内存设置为多个缓冲块,并对所述每个缓冲块进行标记编号;其中,所述多个缓冲块未存储数据包时为空闲缓冲块;
使用所述多个空闲缓冲块初始化网卡收包队列的所有节点,配置所述多个空闲缓冲块物理地址到所述网卡中用于收包,并记录所述多个空闲缓冲块的编号;以及
关闭所述网卡的中断;
在执行步骤S24之后,继续执行步骤S21,所述步骤S21-S24是实时循环进行的。
5.一种基于LINUX的无中断线速收包设备,其特征在于,所述设备包括:
处理模块,用于获取至少一个空闲缓冲块对应的编号;
所述处理模块还用于携带所述至少一个空闲缓冲块的编号触发内核模块与网卡进行数据包交换;
内核模块,用于将所述至少一个空闲缓冲块的编号与网卡中的至少一个己存数据包缓冲块的编号交换,并将所述至少一个空闲缓冲块的物理地址配置到所述网卡,以使所述网卡通过所述多个空闲缓冲块接收新的数据包;
所述处理模块还用于根据所述内核模块返回的所述至少一个己存数据包缓冲块编号,处理所述己存数据包缓冲块中数据;
所述设备还包括共享内存确定模块,用于确定共享内存,所述共享内存用作收发数据包缓冲内存;
所述处理模块还用于通过所述内核模块映射共享所述共享内存;
缓冲块设置模块,用于将所述共享内存中部分内存设置为多个缓冲块,并对所述每个缓冲块进行标记编号;
网卡中断关闭模块,用于关闭所述网卡的中断。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于恒安嘉新(北京)科技股份公司,未经恒安嘉新(北京)科技股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710187894.3/1.html,转载请声明来源钻瓜专利网。