基于改进型零拷贝技术的高性能内核的网络数据处理系统的制作方法

文档序号:7716177阅读:167来源:国知局
专利名称:基于改进型零拷贝技术的高性能内核的网络数据处理系统的制作方法
技术领域
本发明涉及一种网络数据处理系统,尤其是涉及一种基于改进型零拷贝技术的高 性能内核的网络数据处理系统。
背景技术
网络行为管理系统架设在互联网出口,对网内所有计算机的网络行为进行管理。 它要对所有流经系统的IP数据包进行分析、统计和处理。诸如端口检测之类的传统检测 方法在实际应用中有其局限性,因此在本发明的系统背景中,就有必要采用要深度包检测 (DPI)技术。深度包检测(DPI)技术是一种基于应用层的流量检测和控制技术。当IP数据包过 系统时,该系统深入读取IP包应用层的内容来对协议进行识别,进而对其作出相应处理。 深度包检测(DPI)技术能拦截通过端口伪装的网络入侵,克服传统识别的缺陷。但是,如果应用深度包检测(DPI)技术,则必然会增加系统的负担。在千兆乃至 万兆的网络环境里,对流经系统的所有数据包进行逐个拆包检测,工作量相当繁重。因此, 如何对高速数据流进行处理是提升网络行为分析系统性能的关键点之一。系统功能的增加相应的会带来性能上的下降,Linux本身并不是实时性很好的一 个操作系统,内核进程抢占性不明显,进程调度并没有突出实施进程的绝对优先级,中断响 应的可屏蔽性以及时钟精度较大都是Linux操作系统在实时应用场景下的先天瓶颈,将其 应用在这种实时性要求很高的系统里面本身就有点捉襟见肘。要提高系统对网络数据的处理性能,零拷贝以及NAPI技术是一个有效的解决办 法,本发明改进了零拷贝技术的形式,并应用到网络行为管理系统中。NAPI技术是在网络设备驱动中接收网络数据的一种新形式,传统的网络设备驱动 接收网络数据一般采用中断或者轮训的方式,如采用中断方式,则每个数据包进来都会产 生一次硬件中断,如果数据包都是64bytes的小包,那么中断产生的次数就会很频繁,系统 会不堪负重;同时如果采用轮询方式,当在一段时间里面系统没有收到网络数据的时候,驱 动也会一直轮询接收缓存,看是否有数据可以处理,在一定程度上会浪费系统性能。NAPI技 术是一种在两者之间折中的办法当设备接收到数据时先产生硬件中断,驱动程序响应该 中断时首先关闭网络接口的硬件中断,将设备添加到设备轮询队列并发出网络数据包接收 软中断信号,在网络接口中断屏蔽期间,网络数据包以DMA的方式传输到驱动程序预先准 备好的网络数据包专用内存池的节点中,系统内核在CPU相对空闲时,会运行软中断处理 程序;在软中断处理程序中,采用轮询的方式,一次将多个数据包传递到上层协议栈,直到 接收缓冲区中的数据全部被读出或者达到本次轮询的数据包数目,然后再次打开硬件接收 中断。与传统的驱动程序相比,基于NAPI的驱动程序主要有以下的优点(1)接收到数据包后首先关闭中断,将耗时的数据包处理工作放在软中断中执行, 避免出现中断活锁。
(2)当软中断处理程序的执行时间超过一个时间片,但缓冲区中仍有数据未处理 时,软中断处理程序会将自身挂起等待下一次调度,避免长期占用处理器资源。(3)关闭硬件中断期间,到达的数据包通过DMA直接放入接收缓冲,不需要CPU的 参与,节省大量系统资源。实现零拷贝技术的关键点在于两个环节(1)网络设备硬件与系统内核(驱动)之间的数据交互,接收网络数据包的时候, 系统用DMA的方式将数据从网络设备硬件缓存传输到事先建立好DMA映射的内存区域;同 样,在发送网络数据包的时候,也用DMA方式将数据包从内存传输到硬件缓存中,然后再由 硬件发送出去,利用DMA方式的好处是在数据传输期间过程基本不用CPU的参与,由总线负 责传输,极大减少了系统的负担。(2)系统内核空间与用户空间之间的数据交互。利用内存映射即mmap方式将一块 内存区域从内核空间映射到用户空间,即用户进程的地址空间中有一段线性地址区域是指 向这块内核、用户共享的内存区域,这样用户进程就能直接读写该块内存区域,零拷贝技术 可以避免内存数据在内核、用户空间的拷贝,可以提高系统性能。

发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于改进型零 拷贝技术的高性能内核的网络数据处理系统。本发明的目的可以通过以下技术方案来实现一种基于改进型零拷贝技术的高性能内核的网络数据处理系统,其特征在于,该 系统在内存上可分为内核空间、用户空间,所述的内核空间设有数据处理模块、网络设备驱 动模块,所述的数据处理模块包括网络数据包专用内存池、网络数据包管理模块、协议栈、 预处理模块、转发模块,所述的用户空间设有模式匹配引擎,当网络数据包通过DMA方式传 输到网络数据包专用内存池后,通过NAPI方式传输给协议栈,所述的协议栈并不将数据包 往上层提交,而是在IPV4的入口 ip_rCV()处将网络数据包提交给预处理模块处理,所述的 预处理模块判断网络数据包是否需要识别,若需要识别,向模式匹配引擎发送该网络数据 的地址,所述的模式匹配引擎根据预处理模块提供的地址通过内存映射的方式从网络数据 包专用内存池中提取网络数据包,识别结束后将网络数据包通过转发模块发送,并将识别 结果反馈给预处理模块,若预处理模块判断不需要识别,直接将网络数据包通过转发模块 发送。所述的网络数据包管理模块设有 skbpool_create、mempool_get、skbpool_free 三个管理函数,所述的slcbp00l_creat负责初始化网络数据包专用内存池,将内存池划分 为若干个节点,并组织成链表形式;所述的mempoolget函数功能是从网络数据包专用内 存池中申请一个可用节点,将链表的第一个可用单元节点从链表中断开后提供使用;所述 的slApoolfree函数将识别模块已经处理完,并由网络设备转发后的网络数据包回收,将 该网络数据包所占用的单元节点加到链表尾部。所述的NAPI处理过程如下1)关闭网卡接收中断;2)将系统加入轮询队列;
3)触发软中断信号;4)软中断开始5)系统判断软中断执行时间是否超过一个时间片,若为否,执行步骤6),否则,执 行步骤10);6)系统判断软中断处理的数据包是否超过最大预设值,若为否,执行步骤7),否 则,执行步骤10);7)系统判断接收缓冲是否为空,若为否,执行步骤8),否则,执行步骤11);8)将数据包提交给协议栈;9)创建新的数据接收缓冲并建立新的DMA映射,并返回步骤5);10)触发另一次软中断,并返回步骤4);11)打开网卡接收中断。所述的内存映射为将一块内存区域从内核空间映射到用户空间,即用户进程的地 址空间中有一段线性地址区域是指向这块内核、用户共享的内存区域。所述的模式匹配引擎与数据处理模块通过Netlink的方式进行数据交换。所述的网络数据包为IPV4型。与现有技术相比,本发明具有以下优点采用DMA技术、NAPI技术、内存映射技术,使系统在对网络数据的处理过程中不存 在任何形式的内存间拷贝,减少了数据包在系统内部的拷贝次数,缩短了数据包在系统内 部的滞留时间,降低了时延,达到减少系统开销,提高了系统吞吐量的目的。


图1为本发明一种基于改进型零拷贝技术的高性能内核的网络数据处理系统在 网络中的连接拓扑图;图2为本发明一种基于改进型零拷贝技术的高性能内核的网络数据处理系统的 结构示意图;图3为本发明一种基于改进型零拷贝技术的高性能内核的网络数据处理系统的 NAPI处理过程流程图;图4为本发明一种基于改进型零拷贝技术的高性能内核的网络数据处理系统的 网络数据包专用内存池的结构示意图。
具体实施例方式下面结合附图和具体实施例对本发明进行详细说明。实施例如图1所示,该系统主要由两部分组成,一个是网络数据处理系统本身,以及4个 IOM/IOOM/1000M自适应接口。其中ethO和ethl两个接口用来转发双向的网络数据;eth2 用来和后台服务器进行系统配置和会话流统计信息数据的交互;eth3是数据镜像口,系统 可以根据配置,从镜像口导出特定协议或特定五元组的原始数据包给后台服务器,用来做 进一步的分析。如图2所示,一种基于改进型零拷贝技术的高性能内核的网络数据处理系统,该系统在内存上可分为内核空间、用户空间,数据处理模块、网络设备驱动模块在所述的内核 空间,所述的数据处理模块包括网络数据包专用内存池(SlApool)、网络数据包管理模块、 协议栈、预处理模块( 印rocess)、转发模块,模式匹配引擎在所述的用户空间。当网络数 据包通过DMA方式传输到网络数据包专用内存池后,通过NAPI方式传输给协议栈,所述的 协议栈将网络数据包提交给预处理模块处理,所述的预处理模块判断网络数据包是否需要 识别,若需要识别,向模式匹配引擎发送该网络数据的地址,所述的模式匹配引擎根据预处 理模块提供的地址通过内存映射的方式从网络数据包专用内存池中提取网络数据包,识别 结束后将网络数据包通过转发模块发送,并将识别结果反馈给预处理模块,若预处理模块 判断不需要识别,直接将网络数据包通过转发模块发送。skbpool的数据结构如图4所示链表有一个头指针head和尾指针tail,head指 向第一个单元节点,tail指向最后一个单元节点,每个单元节点由一个next指针,packet 区域和slib_shared_info结构体3部分组成,其中next指针指向下一个单元节点,packet 区域用来存储具体的网络数据包,packet存储区域统一为1600字节,skb_shared_info结 构体用来指向其他的IP分片。slibpool管理模块主要有3个管理函数,分别是slibp00l_ create、mempool_get 禾口 skbpool—free, 其中slibpool_create主要在系统初始化的时候被 调用,将分配到的网络数据包专用内存区域划分成一个个单元节点并组织成可用节点的链 表,此时所有单元节点都在该连表中,连表链表中的每个单元节点可用来存储网络数据包; mempool_get函数将链表的第一个可用单元节点从链表中断开,用来储存网络数据,脱离链 表的节点变成已用节点;slcbpoolfree函数将识别模块已经处理完,并由网络设备转发后 的网络数据包回收,将该网络数据包所占用的单元节点加到链表尾部,已用节点变成可用 节点。用mempoolget来代替all0C_Slib里分配数据包内存存储区域的函数,即系统原 有的网络数据包分配函数,驱动程序在接收网络数据的时候调用all0C_S!A函数从内存池 中取出一个节点用于存放数据,并将该节点从原来的链表中删除;其次用slApoolfree函 数代替_kfree_s!A里释放网络数据包内存存储区域的函数,即系统原有的网络数据包释 放函数,在释放网络数据的时候调用_kfree_s!A回收数据包所占用的单元节点,并将该节 点重新加到链表的尾部,等待下一次的分配,因为数据包的长度都有sk_buff结构体中的 Ien成员来控制,所以重新加入链表的节点的数据不用被释放或清零,直接被下一个网络数 据包覆盖即可。使用上述这种改进型的网络数据包分配和释放方式,可以统一有效的管理系统中 现有的所有网络数据包,减少系统因为要释放网络数据包所产生的系统开销。同时,这块用 于存储网络数据包的专用内存区域与用户空间建立了内存映射,在用户空间映射了这块内 存区域以后得到该内存区域在用户空间中的首地址uSer_addr,如果用户空间的识别模块 需要读取某个数据包的应用层数据进行具体分析的话,只要由内核传递一个该数据包相对 内存池起始地址的偏移offset到用户进程,这样用户进程就可以得到该数据包在用户空 间白勺具体4立置 packet_addr,艮口 :packet_addr = user_addr+offset0如图3所示,所述的NAPI处理过程如下步骤101,关闭网卡接收中断;步骤102,将系统加入轮询队列;
步骤103,触发软中断信号;步骤104,软中断开始步骤105,系统判断软中断执行时间是否超过一个时间片,若为否,执行步骤106, 否则,执行步骤110;步骤106,系统判断软中断处理的数据包是否超过最大预设值,若为否,执行步骤 107,否则,执行步骤110 ;步骤107,系统判断接收缓冲是否为空,若为否,执行步骤108,否则,执行步骤 111 ;步骤108,将数据包提交给协议栈;步骤109,创建新的数据接收缓冲并建立新的DMA映射,并返回步骤105 ;步骤110,触发另一次软中断,并返回步骤104 ;步骤111,打开网卡接收中断。将本发明中的所述技术应用到网络行为管理系统的Linux-2. 6. 23内核里面以 后,系统的吞吐量有显著的提高。
权利要求
1.一种基于改进型零拷贝技术的高性能内核的网络数据处理系统,其特征在于,该系 统在内存上可分为内核空间、用户空间,所述的内核空间设有数据处理模块、网络设备驱动 模块,所述的数据处理模块包括网络数据包专用内存池、网络数据包管理模块、协议栈、预 处理模块、转发模块,所述的用户空间设有模式匹配引擎,当网络数据包通过DMA方式传输 到网络数据包专用内存池后,通过NAPI方式传输给协议栈,所述的协议栈并不将数据包往 上层提交,而是在IPV4的入口 ip_rCV()处将网络数据包提交给预处理模块处理,所述的 预处理模块判断网络数据包是否需要识别,若需要识别,向模式匹配引擎发送该网络数据 的地址,所述的模式匹配引擎根据预处理模块提供的地址通过内存映射的方式从网络数据 包专用内存池中提取网络数据包,识别结束后将网络数据包通过转发模块发送,并将识别 结果反馈给预处理模块,若预处理模块判断不需要识别,直接将网络数据包通过转发模块 发送。
2.根据权利要求1所述的一种基于改进型零拷贝技术的高性能内核的网络数据处 理系统,其特征在于,所述的网络数据包管理模块设有slibpoolcreate、mempool_get, skbpool_free三个管理函数,所述的slibpoolcreat负责初始化网络数据包专用内存池, 将内存池划分为若干个节点,并组织成链表形式;所述的mempoolget函数功能是从网络 数据包专用内存池中申请一个可用节点,将链表的第一个可用单元节点从链表中断开后提 供使用;所述的slcbpoolfree函数将识别模块已经处理完,并由网络设备转发后的网络数 据包回收,将该网络数据包所占用的单元节点加到链表尾部。
3.根据权利要求1所述的一种基于改进型零拷贝技术的高性能内核的网络数据处理 系统,其特征在于,所述的NAPI处理过程如下1)关闭网卡接收中断;2)将系统加入轮询队列;3)触发软中断信号;4)软中断开始5)系统判断软中断执行时间是否超过一个时间片,若为否,执行步骤6),否则,执行步 骤 10);6)系统判断软中断处理的数据包是否超过最大预设值,若为否,执行步骤7),否则,执 行步骤10);7)系统判断接收缓冲是否为空,若为否,执行步骤8),否则,执行步骤11);8)将数据包提交给协议栈;9)创建新的数据接收缓冲并建立新的DMA映射,并返回步骤5);10)触发另一次软中断,并返回步骤4);11)打开网卡接收中断。
4.根据权利要求1所述的一种基于改进型零拷贝技术的高性能内核的网络数据处理 系统,其特征在于,所述的内存映射为将一块内存区域从内核空间映射到用户空间,即用户 进程的地址空间中有一段线性地址区域是指向这块内核、用户共享的内存区域。
5.根据权利要求1所述的一种基于改进型零拷贝技术的高性能内核的网络数据处理 系统,其特征在于,所述的模式匹配引擎与数据处理模块通过Netlink的方式进行数据交 换。
6.根据权利要求1所述的一种基于改进型零拷贝技术的高性能内核的网络数据处理 系统,其特征在于,所述的网络数据包为IPV4型。
全文摘要
本发明涉及一种基于改进型零拷贝技术的高性能内核的网络数据处理系统,该系统在内存上可分为内核空间、用户空间,所述的内核空间设有数据处理模块、网络设备驱动模块,所述的数据处理模块包括网络数据包专用内存池、网络数据包管理模块、协议栈、预处理模块、转发模块,所述的用户空间设有模式匹配引擎。与现有技术相比,本发明具有提高系统吞吐量等优点。
文档编号H04L29/08GK102082698SQ20091019942
公开日2011年6月1日 申请日期2009年11月26日 优先权日2009年11月26日
发明者卢旌平, 叶文晨, 文旭, 潘志浩, 顾蔚, 顾鹏 申请人:上海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1