[发明专利]基于X86平台实现万兆大流量快速收包的方法有效
申请号: | 201410021519.8 | 申请日: | 2014-01-16 |
公开(公告)号: | CN103731364B | 公开(公告)日: | 2017-02-01 |
发明(设计)人: | 逯利军;钱培专;姜健;汪海林;凌志辉;李克民;宋聚平;侯卫东 | 申请(专利权)人: | 赛特斯信息科技股份有限公司 |
主分类号: | H04L12/801 | 分类号: | H04L12/801 |
代理公司: | 上海智信专利代理有限公司31002 | 代理人: | 王洁,郑暄 |
地址: | 210042 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于X86平台实现万兆大流量快速收包的方法,其中包括设置支持多队列的网卡收包队列的CPU亲和性;修改内核中数据包的传入地址为收包内核态模块;将数据包向内核协议栈进行传输;所述的收包内核态模块通过地址映射机制将内核队列地址映射到用户态;所述的用户态收取数据包。采用该种基于X86平台实现万兆大流量快速收包的方法,主要解决了传统收包的不足和性能瓶颈,采用网卡RSS技术、内核动态module挂载、零拷贝技术和无锁RingBuffer技术,实现在大流量的环境和基于X86的平台上,快速不丢的将流量从网卡内核空间收到用户进程空间,适用于需要提取流量的局域网或广域网以及各运营商流量出口,具有广泛的应用范围。 | ||
搜索关键词: | 基于 x86 平台 实现 万兆大 流量 快速 方法 | ||
【主权项】:
一种基于X86平台实现万兆大流量快速收包的方法,其特征在于,所述的方法包括以下步骤:(1)设置支持多队列的网卡收包队列的CPU亲和性;(2)修改内核中数据包的传入地址为收包内核态模块;(3)将数据包向内核协议栈进行传输;(4)所述的收包内核态模块通过地址映射机制将内核队列地址映射到用户态;(5)所述的用户态收取数据包所述的用户态收取数据包,具体为:所述的用户态通过无锁RingBuffer结构的内存收取数据包;所述的用户态通过无锁RingBuffer结构的内存收取数据包,包括以下步骤:(51)内核态采用Kmalloc函数申请无锁RingBuffer结构的内存;(52)对整块内存进行内存块分割且在内存的第一块存放公用信息;(53)每当有数据写入内存时,通过取第一块内存中的写位置指针和读位置指针判断此次写入的内存节点位置;(54)写入数据后,将所对应的内存节点信息进行更新并将写位置指针向后移动;(55)每当从内存收取数据时,通过取第一块内存中读位置指针来获取待收取的内存节点并通过该内存节点的状态信息标志位判断是否有数据可读。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于赛特斯信息科技股份有限公司,未经赛特斯信息科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410021519.8/,转载请声明来源钻瓜专利网。