(计算机系统结构专业论文)linux环境下基于intel千兆网卡的高速数据包捕获平台的研究.pdf_第1页
(计算机系统结构专业论文)linux环境下基于intel千兆网卡的高速数据包捕获平台的研究.pdf_第2页
(计算机系统结构专业论文)linux环境下基于intel千兆网卡的高速数据包捕获平台的研究.pdf_第3页
(计算机系统结构专业论文)linux环境下基于intel千兆网卡的高速数据包捕获平台的研究.pdf_第4页
(计算机系统结构专业论文)linux环境下基于intel千兆网卡的高速数据包捕获平台的研究.pdf_第5页
已阅读5页,还剩68页未读, 继续免费阅读

(计算机系统结构专业论文)linux环境下基于intel千兆网卡的高速数据包捕获平台的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 线速地实时处理网络报文流是入侵检测系统、网络协议分析、网络防火墙、 高性能通信系统、高性能路由器、主机路由器,以及其他网络监视系统必须满 足的首要条件。 当前大部分的入侵检测系统、防火墙等网络监视及防御系统都是基于运行 在p c 架构上的l i n u x 平台。 百兆的网络环境下,普通的网卡和l i b p c a p 接口就足以保证运行在l i n u x 用户空间的网络报文处理程序线速地捕获网络报文。如:t c p d u m p 、e t h e r e a l 和 s n o r t 等程序。然而千兆网络时代的到来,使得在通用操作系统下远达不到线 速捕获网络数据包。本文实现了一种高性能的网络数据包的捕获平台,省去了 数据包在内核和用户空间传递过程中的拷贝,缓存,以及系统调用过程,从而 使得网络报文的处理性能有很大提升。 本人主要工作如下: 1 对l i n u x 网络协议栈进行了分析,并对传统报文捕获平台l i b p c a p 进行 了分析研究。 2 深入分析了i n t e l 千兆网卡驱动及相关的中断机制,软中断机制及内存映 射机制。 3 在深入分析l i n u x2 6 内核的基础上,实现了一种新的基于i n t e l 千兆网 卡的高性能的网络数据包捕获平台z e r o p 。z e r o p 由两部分组成,一部分是位于 内核空间的驱动模块,另一部分是用户空间的兼容l i b p c a p 的接口。 4 搭建了c i s c o 测试平台,对z e r o p 平台进行了性能及兼容性测试,并对 测试数据进行了分析。 关键字:n a p i t 中断;e 1 0 0 0 网卡驱动;m m a p a b s 仃a c t a b s t r a c t m a n yn e t w o r km o n i t o r i n gs y s t e m sa r eb a s e do nw i r e s p e e dp a c k e tc a p t u r ea n d r e a l - t i m ea n a l y s i s s u c ha s ,i n t r u s i o nd e t e c t i o ns y s t e m s ,p r o t o c o la n a l y s i s ,n e t w o r k f i r e w a l l ,h i g h - p e r f o r m a n c ec o m m u n i c a t i o n ss y s t e m s ,h i g h p e r f o r m a n c er o u t e r , h o s t r o u t e r sa n do t h e rn e t w o r km o n i t o r i n gs y s t e m s a tp r e s e n t ,m o s to ft h ei n t r u s i o nd e t e c t i o ns y s t e m ,f i r e w a l l ,a n ds oo na r eb a s e do n p ca r c h i t e c t u r er u n n i n go nt h el i n u xp l a t f o r m i nf a s tn e t w o r ke n v i r o n m e n t ,t h ec o m m o ni n t e r f a c ec a r da n dl i b p c a pi se n o u g ht o g u a r a n t e et h a tt h eb s e rs p a c ea p p l i c a t i o n ,o nt h el i n u xs y s t e m ,c a nw i r e - s p e e dc a p t u r e n e t w o r kp a c k e t s s u c ha s :t c p d u m p ,e t h e r e a la n ds n o r t ,a n ds oo n a st h et i m eo ft h e g i g a b i tn e t w o r k ,i ti si m p o s s i b l ef o rg e n e r a lo p e r a t i n gs y s t e mt oc a p t u r ep a c k e to r s e n dp a c k e ta tw i r es p e e d t h i sp a p e rd e s i g n sah i g h - p e r f o r m a n c ez e r o - c o p yp l a t f o r m , i td e c r e a s e st h en u m b e ro ft h ec o p ya n dt h eb u f f e rb e t w e e nk e m e la n du s e rs p a c e , r e d u c e st h eo v e r h e a do ft h es y s t e mc a l l ,t h u st h en e t w o r kp a c k e t p r o c e s s i n g p e r f o r m a n c ei sg r e a t l yi m p r o v i n g m a i nt a s k s : 1 a n a l y s e dt h el i n u xn e t w o r kp r o t o c o ls t a c k ,a n a l y z e dt h et r a d i t i o n a lp a c k e t c a p t u r ep l a t f o r ml i b p c a p 2 a n a l y s e dt h ei n t e lg i g a b i te t h e r n e td r i v e rd e e p l y , t h ei n t e r r u p tm e c h a n i s m , t h es o f ti n t e r r u p tm e c h a n i s ma n dt h em e m o r y m a p p i n gm e c h a n i s m 3 w ei m p l e m e n t e dan e wh i g h p e r f o r m a n c en e t w o r kp a c k e tc a p t u r ep l a t f o r m z c r o pb a s e do ni n t e l - b a s e dg i g a b i te t h e m e ti nt h el i n u x2 6k e r n e l t h ez e r o p p l a t f o r mc o n t a i n st w oc o m p o n e n t s :ad e v i c ed r i v e rm o d u l ei nk e r n e l s p a c ea n da u s e r - s p a c el i b r a r yc o m p a t i b l ew i t hl i b p c a p 4 b u i l tc i s c ot e s tp l a t f o r m ,t e s t e dt h ep e r f o r m a n c ea n dt h ec o m p a t i b i l i t y , a n a l y s e dt h et e s td a t a k e yw o r d s :n a p i ;i n t e r r u p t ;e l0 0 0d r i v e r ;m m a p 厦门大学学位论文原创性声明 兹呈交的学位论文,是本人在导师指导下独立完成的研究成 果。本人在论文写作中参考的其他个人或集体的研究成果,均在 文中以明确方式标明。本人依法享有和承担由此论文产生的权利 和责任。 声明人( 签名) :岁) 咩 少矿形年6 月1 日 厦门大学学位论文著作权使用声明 本人完全了解厦门大学有关保留、使用学位论文的规定。厦门大 学有权保留并向国家主管部门或其指定机构送交论文的纸质版和电 子版,有权将学位论文用于非赢利目的的少量复制并允许论文进入学 校图书馆被查阅,有权将学位论文的内容编入有关数据库进行检索, 有权将学位论文的标题和摘要汇编出版。保密的学位论文在解密后适 用本规定。 本学位论文属于 1 、保密() ,在年解密后适用本授权书。 2 、不保密( “ ( 请在以上相应括号内打“4 ) 作者签名:多7 擘 翩签名:物 日期:2 夕,易年月f 日 日期:啡石月厂日 l , 。 第一章绪论 1 1 课题背景 第一章绪论 随着千兆网络时代的到来,传统的报文捕获机制已经成为整个系统的性能瓶 颈。其一,网络报文以单个报文驱动的机制被l i n u x 内核接收,内核对每一条报 文均无差别地执行缓冲申请,及报头校验等操作;其二,报文处理程序每次通过 系统调用仅从内核读取出一条报文;其三,报文需要通过多次内存拷贝传送到报 文处理程序所在的用户空间。普通的网卡和l i b p c a p 1 】接口就足以保证运行在 l i n u x 用户空间的网络报文处理程序,如:t c p d u m p 2 1 、e t h e r e a l 【3 】和s n o r t 4 1 等,线 速地捕获网络报文。 这个瓶颈问题表现为丢包率急剧上升和“中断淹没 ( 1 i v e l o c k ) 5 1 ,也就是说, 系统无法线速地捕获网络数据包,而且几乎全部的c p u 时钟都被用于处理网卡 产生的中断,而无暇顾及其他任务。 l i n u x2 4 2 3 6 】之后的内核引进了n a p i 7 1 ,它首先采用中断唤醒数据包接收 的处理程序,然后采用轮询的方法来接收数据包。n a p i 机制的引入使得网络报 文的接收方式从纯中断方式发展到半轮询【8 】方式,相当程度地解决了“中断淹没 的问题。同时,标准的l i b p c a p 得到改良,报文传送方式从内存拷贝发展为地址 嘣g ( p c a p m m a p 9 ) 。 但这两项改进仍然无法实现千兆线速网络报文捕获。基于n a p i 机制和 p c a p m m a p 机制的实验表明【1 0 】;运行l i n u x 的p i i i5 5 0 主机,配置i n t e lg e3 2 位 千兆以太网卡,l i n u x 内核版本为2 6 1 。利用n a p i 和地址映射,在网络报文长 度为6 4 字节,流速为9 0 m b p s 时,报文捕获率仅为1 4 9 :当报文长度为5 1 2 字节,流速为7 1 0 m b p s 时,报文捕获率为1 1 7 ;报文长度1 5 0 0 字节,流速 8 3 6 m b p s ,捕获率为9 3 5 。 1 2 数据包捕获技术国内外研究现状 1 2 1 国外现状 a 软件方面,国外在这方面研究具有突出成就的代表人物是l u c ad e r i 。主 l i n u x 环境下基卡i n t e lt 兆网卡的高速数据包捕捩i - 弁的研究 要有两篇代表文章: i m p r o v i n gp a s s i v ep a c k e tc a p t u r e :b e y o n dd e v i c ep o l l i n g ) ) 【1 0 】 和e n c a p :w i r e s p e e dp a c k e tc a p t u r ea n dt r a n s m i s s i o n ) ) j 。 实现p f _ r i n g 1 0 】之后,l u c a 在n c a p :w i r e - s p e e dp a c k e tc a p t u r ea n d t r a n s m i s s i o n ) ) 中,提出了一个新的网络报文捕获及传输方案1 c 印。n e a p 实 现了不需要内核干涉的网络报文接收和传输机制。网卡的寄存器和内存被映射到 上层应用程序所在的用户空间,运行在用户空间的网络报文处理程序以控制 l i n u x 操作系统的设备的形式直接与物理网卡交互。在接收和发送报文的过程中, 完全旁路了内核。 在网络报文接收方面,物理网卡把报文送到上层应用程序通过地址映射可以 直接访问的内核地址空间,由网卡通过d m a 1 2 , 1 3 】直接完成,不需要内核干涉; 在报文传输方面,用户空间程序通过直接存取物理网卡控制寄存器的方式,指挥 网卡发送报文。报文接收和传输过程中的延迟被降低到了同样硬件条件下可能达 到的最低程度。 基于n c a p 的测试结果显示【l l 】,在运行l i n u x 的p 35 5 0 m h z 主机上,n c a p 的性能与运行在p 41 7 g h z 上的p fr i n g 相当;而当运行在6 4 位p c i x 总线 的c p u 为p 4h t 或x e o n 的主机上时,n c a p 的网络报文捕获能力达到千兆以太 网的极限:1 4 8 m p p s 。同时c p u 负载很低,这就保证了在报文捕获能力达到千 兆线速的时候,系统留有充足的c p u 时钟用于处理网络报文。 通过n c a p 提供的应用接口,现有的网络报文实时处理程序只要经过简单地 重新编译,就可以在性能上得到极大的提升。同时,新的应用程序可以完全在用 户空间开发,不需要另外开发内核空间的支持组件。开发人员甚至不需要具备 l i n u x 内核知识,这极大的降低了基于p c 的高速网络报文处理系统的技术门槛 和开发成本。 b 硬件方面,当前市场上有两款专用的千兆以太网报文处理网卡:款是 e n d a c e 公司生产的d a g 1 5 1 网卡,另一款是l i b e r o u t 0 1 6 1 及s c a m p i 1 7 1 项目开发 的c o m b o 网卡。这两款网卡通过网卡上内置协处理器或内置固件完成网络报 文处理,所有处理任务均在网卡内部完成,没有通过p c i 总线传送给主机。 c o m b o 4 m t x 1 8 1 在网络报文长度为1 5 0 0 字节,流速为9 1 6 8 m b p s 时,报文捕 获率为7 2 ;报文长度为6 4 字节,流速为4 4 8 8 m b p s 时,报文捕获率为9 4 。 2 第一章绪论 带协处理器的d a g 4 3 g e 掩】在网络报文长度分别为1 5 0 0 字节“字节,流速为 1 0 0 0 m b p s 时,报文捕获率均为1 0 0 。 专用的千兆网络报文处理网卡与利用n a p i 和地址映射的l i n u x 操作系统对 比,在报文捕获率方面的性能优势非常明显。 d a g 4 3 g e 卡的售价大约是5 0 0 0 7 0 0 0 欧元( 5 7 万人民币) , c o m b o 4 m t x 卡的售价大约是7 0 0 0 一1 0 0 0 0 欧元( 7 1 0 万人民币) 。 由于专用网络报文处理网卡高昂的价格,在运行l i n u x 的普通p c 上通过普 通网卡实现千兆网络线速报文捕获已经成为开发基于p c 的入侵检测系统和防 火墙等千兆网络实时报文处理系统首先需要解决的技术难题。 d a g 卡的生产厂家e n d a c e 公司于2 0 0 5 年底收购n c a p ,添加了d a g 的某 些核心功能后,于2 0 0 6 年三月推出了其最新的网卡加速软件e n c a p 。在e n c a p 销售发布公告中,e n d a c e 公司指出:e n c a p 是一套高速报文捕获软件,它使一台 市场上普通的p c 变成一个高效且廉价的网络测量系统,成为一个很好的网络流 分析平台。e n d a c e 声称:e n c a p 的推出目的是针对更广泛的用户群进一步降低网 络监视和安全方案的门槛。e n c a p 每套售价4 9 9 美元。 无论是n c a p 还是e n c a p ,其市场价值都是非常可观的。由于它们的产生, 市场上的普通p c 才有可能成为高速网络实时报文处理系统的硬件平台。n c a p 和e n c a p 解决了一个门槛问题。 目前,n c a p 和e n c a p 的源代码都没有公开,技术细节是保密的。 1 2 2 国内现状 国内在这方面处于领先的是哈尔滨工业大学的计算机网络与信息安全技术 研究中心和山东大学信息安全实验室。其中前者有五篇代表文章:l 玎l i n u ) 【下 基于半轮询驱动的用户级报文传输机制【1 9 1 ,基于半轮询驱动的网络入侵检测 单元的设计与实现【2 0 】,零拷贝报文捕获平台的研究与实现 2 1 】,l i n u x 下高 性能数据捕获技术的研究与实现瞄1 和并行数据库通讯组件零拷贝技术的研 究与实现【2 3 1 。后者有两篇代表文章:基于d m a的高速网络报文捕获机 制的实现及应用和基于的千兆网络数据r包in9124linux捕捉技术的研究与实现 f 2 5 】 o 在提高网络报文流采集和处理方面,( ( r t l i n u x 下基于半轮询驱动的用户级 3 l i n u x 环境下基十i n t e l - t 兆脚卡的岛速数据包捕获、i ,台的研究 报文传输机制和基于半轮询驱动的网络入侵检测单元的设计与实现提出了 “半轮询驱动 概念。而实际上,2 0 0 3 年底发布的l i n u x 内核2 4 2 3 已经通过 n a p i 实现了类似概念。两者的共同点都是首先采用中断唤醒数据接收的服务程 序,然后通过p o l l 2 6 】方法来轮询网卡,差别在于,“半轮询 概念需要确定网 络报文的输入速率是否达到一个稳定状态,当达到稳定状态时,持续通过轮询的 方式采集网卡接收到的网络报文,反之则恢复中断方式;而应用n a p i 的l i n u x 网卡驱动程序,如e 1 0 0p r o 1 0 0 ,则在轮询失败( 失败表示网卡目前没有新的 网络报文等待l i n u x 内核接收) 后,休眠一段很短时间( 时间长度可定制) 后, 再对网卡轮询一次,如果轮询成功( 表示有新的网络报文到达) ,则保持在轮询模 式,反之恢复中断方式。 ( ( r t l i n u x 下基于半轮询驱动的用户级报文传输机制和基于半轮询驱动 的网络入侵检测单元的设计与实现在“半轮询”概念基础上实现了“用户级报 文传输机制u m p s ” 1 9 】。而基于n a p i 机制,( ( i m p r o v i n gp a s s i v ep a c k e tc a p t u r e : b e y o n dd e v i c ep o l l i n g ) ) 提出了一种新的被动网络报文捕获机制网络套接字 p fr i n g ,p fr i n g 和u m p s 都在内核空间中申请一块物理上连续的地址空间 作为缓冲区,把内核接收到的网络报文复制到该缓冲区中,利用地址映射,上层 应用程序直接读取存放在内核空间的网络报文,网络报文无须从内核空间发送到 用户空间,从而避免网络报文从内核空间传送到用户空间过程中的内存拷贝操 作。 u m p s 在测试过程中使用双p 42 0 g h z 、4 g 内存的曙光服务器作为报文捕 获主机,而p fr i n g 使用单p 41 7 g h z 的p c 。测试结果显示u m p s 的报文捕 获率极限在报文长度为1 5 0 0 字节时达到8 9 5 m b p s ,报文长度为5 1 2 字节时大约 为7 6 0 m b p s ,6 4 字节时为3 9 4 m b p s ;而p fr i n g 在报文长度为1 5 0 0 字节时, 吞吐量是9 7 0 m b p s ,报文长度5 1 2 字节时为8 5 0 m b p s ,6 4 字节时为2 0 2 m b p s 。 在网络报文长度为6 4 字节时,u m p s 对比p fr i n g 表现出来的优势与测试 所用机器硬件性能差异有关系,因为在短报文情况下,高速率的网络报文流使系 统对网络报文的采集模式处于轮询方式,采集速率取决于轮询的快慢,而后者又 直接受制于c p u 的工作频率。u m p s 使用的曙光服务器比p fr i n g 使用的普通 p c 机在c p u 的工作频率上有明显优势。报文长度为5 1 2 字节和1 5 0 0 字节情况 4 第一章绪论 下,p fr i n g 对比u m p s 在性能上有1 0 的优势。 零拷贝报文捕获平台的研究与实现 2 1 】实现了“高性能报文捕获平台 h p p c p ( h i g h p e r f o r m a n c ep a c k e tc a p t u r ep l a t f o r m ) 2 1 1 。比起u m p s ,在同样的硬 件平台上( x 2p 42 0 g 、4 g 内存、高速缓存5 1 2 k b c p u 、i n t e lp r o 1 0 0 0 ) ,h p p c p 性能上有了提高,报文长度6 4 字节时,捕获能力达到4 3 9 m b p s ;报文长度5 1 2 字节时达到9 11 m b p s ;报文长度1 5 0 0 字节时达到9 3 8 m b p s 。 在结构上,h p p c p 比p fr i n g 更优化,p fr i n g 保留传统网卡驱动程序 中内核接收网络报文的模式,即,在每条网络报文到达后内核临时申请堆缓冲的 模式。网络报文被存放到缓冲后,p fr i n g 把报文拷贝到上层应用程序通过地 址映射能够直接访问的内核地址空间( r i n g ) ;而h p p c p 则让网卡直接把网络报 文以d m a 方式存储到上层应用程序通过地址映射能够直接访问的内核地址空 间,比p fr i n g 少了在网络报文在内核空间的一次内存拷贝。 从测试结果看,由于h p p c p 比p fr i n g 少一次内存拷贝,加上测试用的 硬件平台的优势,当报文长度为5 1 2 字节和6 4 字节时,h p p c p 的优势明显;当 报文长度为1 5 0 0 字节时,与p fr i n g 相当。 基于d m a 的高速网络报文捕获机制的实现及应用也是基于半轮ring 询机制,但是由于其基于3 c o m 9 0 5 b t x 百兆网卡的零拷贝技术,这里不做过多 介绍。基于l i n u x 的千兆网络数据包捕捉技术的研究与实现主要工作是在高 端嵌入式实验平台上( p o w e r p c 8 5 4 0 ) 对p fr i n g 进行了移植。 通过对国内外的研究现状进行分析,我们发现无论国内还是国外的高速报文 捕获系统研究都非常火热,主要原因就是千兆时代的到来,高速报文捕获成为系 统的瓶颈。而高速报文捕获是入侵检测系统、网络协议分析、网络防火墙、高性 能通信系统、高性能路由器、主机路由器,以及其他网络监视系统能够充分发挥 其性能的前提。虽然目前专用的千兆以太网报文处理网卡产品很丰富,主要有 d a g 和c o m b o 两个系列,但是由于其价格昂贵,目前还是很难得到普及使用。 同时国内外各种高速软件捕获平台虽然各有千秋,但是终归没有提供一个统一的 接口,如果将现有开发的基于工业接口l i b p c a p 的报文捕获处理程序进行移植也 是一项非常庞大的工程。所以开发一个和工业接口l i b p c a p 兼容的高速报文捕获 平台成为当务之急。国内外的各种软件平台除了修改原来网卡的驱动模块外,还 5 l i n u x 环境下基于t n t e | 干兆州卡的商速数据包捕获、卜台的研究 开发一个附加的模块来完成高速报文捕获,同时对上层应用程序提供一个专用的 接口。本文实现了一种新的高速报文捕获平台z e r o p ,此平台由两部分组成,一 部分是位于内核空间的修改的e 10 0 0 网卡驱动模块,另一部分是在用户空间的 兼容l i b p c a p 的接口,不需要再加载其它的模块。由于接口是兼容工业标准接口 l i b p c a p 的,所以现有开发的基于l i b p c a p 的应用程序不需要修改就可以在本平 台上直接应用,或者重新编译一下就可以应用,移植工作就非常省时省力了。 1 3 本文组织安排 本文对传统报文捕获平台l i b p c a p 进行了分析,并对n a p i 核心机制进行了 分析,最后在此基础上实现了一种新的零拷贝报文捕获平台。主要工作在第 三章和第四章中。后续具体章节安排如下: 第二章对传统报文捕获过程进行了介绍并引出了零拷贝的概念。 第三章主要是零拷贝平台需要掌握的相关技术以及e 1 0 0 0 网卡相关技术介 绍。 第四章对基于i n t e l 千兆网卡的零拷贝网络数据包捕获平台z e r o p 的设计与 实现。 第五章对本零拷贝捕获平台z e r o p 的性能测试及数据分析。 第六章是总结和前景展望。 6 第二章数据包捕获技术研究 第二章数据包捕获技术研究 2 1l i n u x 标准协议栈的数据包捕获过程分析 l a 羽i c a t i o n l l u s e rs 1 0 e c e i l 慨b u f f l k e r n e l s p a c e i s o c k e t t c p 珏p 掇文处理器 t 软中断处理 s k b 呵收包队列 t 硬中断处理 k e r a e lb u f f ,、 d m a i n e t w o r k c a r d i 图2 1 传统报文接收原理图【2 6 1 如图2 1 传统报文接收原理图所示,网络数据包基本接收流程如下: a 网卡驱动程序设置好d m a 传输的目的地址等信息。 b 网卡接收到一个以太数据帧,并通过d m a 方式传输到相应的内核缓冲 区,触发一次硬件中断。 c 中断处理程序发现d m a 传输结束,便将内核中的数据包挂入系统的 s kb u 傅2 刀队列,同时进行校验和的计算,剥除以太包头等相关操作,最后置软 中断处理的标志,返回。 d 网卡继续接收新的数据包,不断往s kb u f f 队列里填充数据包。 e 当中断处理结束后,一般情况是调用软中断处理程序将数据包向协议栈 的上层传递。用户空间的应用程序通过系统调用从s kb u f f 队列里取出一 个数据包,拷贝到用户空间缓冲区。 7 l i n u x 环境下基于i n t e lt 兆嘲卡的高速数据包捕获、p 台的研究 2 2 基于l i b p c a p 的数据包捕获技术介绍 l i b p c a p 的基本运行模式是:首先获取可用的监听设备,即某个网络接口 ( e t h 0 或者e t h l 等) ,再通过系统调用s o c k e t 【2 8 】创建一个原始套接字,指明自己的监 听端口为e t hpa l l ,即接收所有的包,然后不断循环调用一个读包函数读取 数据包,这个读包函数的本质是一个r e c v f r o m t 2 8 】系统调用,它从系统的s kb u f f 缓冲区中每次读取一个包送给上层收包函数,如果缓冲区空,则阻塞等待【2 9 1 。 当有数据到达网卡的时候,会产生一个硬件中断,然后调用网卡驱动程序中 注册的中断处理函数来处理。这个中断处理程序要做的是进行一些i 0 操作,将 数据读入,当数据包成功接收后,转到操作系统通用的处理函数n e t i f 中,rx n e t i f 的一个重要工作就是将数据包放到内核等候队列s kb u 肿,并置软中断标志位_ r x , 然后返回等待下一次网络数据包的到来。当c p u 空闲时,软中断处理函数 n e tr xa c t i o n 被激活,此函数的主要功能是检查系统中已被上层处理函数注册的 端口,并将数据包的一个拷贝传入相应的处理函数中。l i b p c a p 注册的端口为 e t h p a l l ,表示对所有的数据包都接收,其处理函数为p a c k e t _ f c n e s g ( ) 【7 】, 此函数将来自上层的读包函数唤醒后,将数据包向上传递【3 0 】,l i b p c a p 的收包过 程大致如图2 2 所示。从图2 2 中可以发现,数据包在操作系统内部进行了多次拷 贝和缓冲。 4 6 na8 k b i n q u e u e 图2 2l i b p c a p 数据包接收原理图2 2 i 8 第= 帝数据包捕歆技术研究 l i b p c a p 主要缺点如下: a 数据包的传输过程中函数调用和内存拷贝次数过多 br c v f l o m 是一个系统调用函数,每调用一次,它只向用户空间传递一个 包,而系统调用实际上是一个中断,因此用传统的方法进行大流量捕包时,系统 将会不断的进行中断处理和进程切换,那么最后导致中断淹没,使c p u 无暇顾 及其它任务。 c 整个包传输的过程是开中断的这样会造成一个包的传输和处理过程可 能被下一个包的到来发出的硬件中断所打断。当网络流量很大时,就会出现这样 一种情况:后来的包到达网卡后,发出的硬件中断将中断前一个包向用户区的传 输过程,而当驱动程序把这个包从网卡中取出,准备放入s kb u 鲰列时,却发现 队列己满,这个包只好丢弃。从而这一过程所耗用的c p u 时间就白白浪费了。由 于网络流量大,这种“无用”的硬件中断将会频繁的发出,使得数据包迟迟不能 送到用户区而同时虫_ b u 瞅列又不能空出位置给后来的数据包,造成数据包的 大量丢失川。 2 3 数据包捕获过程的影响因素 由于数据包捕获需要硬件完成,所以数据包捕获过程都要在内核中完成,系 统内核和用户空间的应用程序之间的数据通讯,硬件的数据包捕获机制,必然成 为整个数据包捕获系统的性能瓶颈。 l j l h w “ _ m 8 r 4 园c 。p l e s c i t s u m5 a m l m 自w u 。ih a n d i e t7 匿目f r o t 。c o “ 口s o c k e t s l i b 3 4 i k 13 6 图2 3 数据包发送过程q a c p u 使用率比例图j 州 l i n u x 环境下皋于i n t e l 千兆网卡的高速数据包捕获、f ,台的研究 2 3 1 系统调用 应用程序通过系统调用【3 2 3 3 3 4 , 3 5 s e n d ( ) 2 7 】启动一个数据包发送过程,在此过 程中,操作系统要进行用户空间到内核空间的上下文切换,访问套接字,用户空 间缓冲区数据到内核的拷贝,协议栈的相关处理,最后要将数据包放在发送队列 里。而数据包的接收过程与此过程正好相反,所以其c p u 使用率比例基本如上。 通过对图2 3 数据包发送过程中c p u 使用率比例图进行分析,我们发现系统 调用占据了接收数据包过程中的3 4 的时间,所以我们争取屏蔽掉系统调用,以 此来节省c p u 时间是一个比较理想的选择。 2 3 2 数据包拷贝和数据校验 数据包在用户空间和内核空间的拷贝过程中,内核还需要计算整个缓冲区内 容的校验和。这个校验和存储在协议头部,用于数据包接收者检查数据是否正确。 即使不做这次拷贝,内核仍需要遍历缓冲区内容以计算校验和,因为内存带宽是 一个重要的性能因素,这个过程几乎要和内存拷贝一样耗费时间。所以在先进数 据包捕获平台中尽量减少数据校验和的次数也是一个研究重点。 而在i n t e l 千兆网卡中,传统的由软件来做的c r c 校验已经由硬催3 1 】来做了, 可以说对软件来是透明的,这样就减少了c p u 的压力。 2 3 3 硬件中断 每次中断发生时,操作系统都需要保护现场,切换上下文等操作。在网络流 量巨大的情况下,每秒会有几万甚至几十万个数据包,如果每个包都触发一次中 断,每次中断的现场处理和切换上下文的开销最少要三个c p u 周期,这对捕包平 台来说所需花费的开销是巨大的。 鼍 ic _ 耍固 、 “鬣臀t 一一 一一“柢嘈譬謦。螂蕞 葛窆蠹莩基曼掣蓉萋萎薹謦 p_hq糠o“口! f r a m el e n g 蚋i t i 嚼 图2 4i n t e l 千兆网卡的理论每秒中断次数图1 1 4 i 1 0 o o o 0 o o o o o 嘞蚴蝴呦嗍咖蚴呦 6 4 2 o 0 6 4 2 翟口譬螗0皇鲁e皇毒 第二章数据包捕获技术研究 通过对图2 4i n t e l 千兆网卡的理论每秒中断次数图的分析,我们发现在6 4 字 节数据包只考虑单向接收网络数据包的情况下,中断的次数可以达到1 5 m s ,而在 此时c p u 不可能处理掉如此多的中断,这就导致了中断淹没,c p u 无法响应任何 的外界请求,如同宕机一样。 而i n t c l 千兆网卡引入的中断节制机制就是为了减少网卡的中断次数,降低由 于中断而引起的c p u 使用率,第四章会详细介绍。 综上所述,我们发现在一个数据包的接收过程中会发生多次内存拷贝,以及 系统调用,加上频繁的中断处理,这些将消耗掉大部分的c p u 时间,而留给数据 包处理的时间相对较少。 为了提高数据包捕获平台的效率,主要需要在三个方面改进: a 争取屏蔽掉系统调用。 b 减少内存拷贝的次数,节省大部分的c p u 时间。这也是正式零拷贝思想 的切入点。 c 改进中断方式,减少不必要的c p u 周期。 2 3 4 协议处理 由于我们在底层的数据包捕获上采用了零拷贝的思想,数据包进入内存后, 不经过传统协议栈的处理,而是我们在用户空间根据的自己的需要进行处理,去 掉了传统的协议栈中的不需要的影响因素。 2 4 零拷贝思想介绍 2 4 1 零拷贝思想引出 零拷贝( z e r o c o p y ) 【3 6 】基本思想是:数据包从网络设备到用户程序空间传递 的过程中,减少数据拷贝次数和系统调用,实现c p u 的零参与,彻底消除c p u 在 这方面的负载。零拷贝技术首先利用d m a 技术将网络数据包直接传递到系统内 核预先分配的地址空间中,避免c p u 的参与;同时,将系统内核中存储数据包的 内存区域映射到用户空间的应用程序,应用程序直接对这块内存进行访问,从而 减少了系统内核向用户空间的内存拷贝,同时减少了系统调用的开销,这是真正 的“零拷贝 。 l i n u x 环境下皋于i n t e l 干兆帽卡的商速数据包捕获、p 俞的研究 2 4 2 零拷贝技术实现中的关键问题 a 内存映射问题 内核访问用户空间的数据一般不受操作系统的限制,然而用户访问内核空间 的数据出于安全性的考虑就受到限制。所以操作系统收包过程中要把数据从内核 空间拷贝用户空间。如果用户空间和内核空间能够共享某块缓冲区,那么就可以 避免内存之间的拷贝。 内存映射( m e m o r ym a p p i n g ) 【2 7 】的含义是把物理设备上的存储器的“物理 地址 与内核或用户空间进程的“虚拟地址空间 的一段地址建立关联起来。通 过被关联的虚拟地址,内核或用户空间进程实现对物理设备上存储器的直接存 取。所以如果内核空间的虚拟地址和用户空间的虚拟地址如果共同关联一块物理 空间,那么它们就可以共享这块空间,而省去了内存拷贝。第三章将详细介绍内 存映射技术。 b 缓冲环管理问题 2 2 2 3 】 高性能数据包捕获平台往往要求大量的内存用来缓存网络数据包,而分配静 态缓冲区可以消除每次数据包传输时都要进行的缓冲区分配和释放过程所付出 的代价。本平台通过预留一段固定大小的物理内存用来存放网络数据包,并且将 此缓冲区分成大小为2 k 的缓冲块用来存放单个数据包,同时将此缓冲区构造成 一个环形的缓冲队列。第四章将详细介绍缓冲环的管理。 1 2 第三章i n t e l 干兆嘲卡相关技术研究 第三章i n t e l 千兆网卡相关技术研究 3 1i n t e l 千兆网卡接收描述符介绍 3 1 1 接收描述符结构 o 8 图3 1 接收描述符结构1 3 7 i 如图3 1 所示,其中: b u f f e r a d d r e s s 指向内存缓冲区,就是用来存放接收到的网络数据包。 l e n g t h 指示数据包的长度。 s t a t u s 指示这个描述符是否已经被使用,也就是说是否网卡已经在b u f f e r a d d r e s s 所指内存缓冲区存放了数据包。 其他字段主要是由硬件来操控,对软件接收数据包来说,并不需要了解太多, 这里不做介绍。 接收描述符结构主要用来对应一个接收到的网络数据包。在本节后面将要介 绍到函数e 1 0 0 0a l l o cr xb u f f e r s 会说明接收描述符的作用。 3 1 2 接收描述符队列环结构 接收描述符队列环结构是由一定数量的接收描述符组合而成的一个环形队 列结构。硬件控制这个环行队列结构,其中每个方框代表一个接收描述符,h e a d 和t a i l 分别为环的头索引和尾索引。当有数据包到的时候,硬件将数据包放在 h e a d 对应的接收描述符b u f f e ra d d r e s s 所指地址中,同时根据具体情况修改 l e n g t h ,p a c k e tc h e c k s u m ,s t a t u s ,e r r o r s ,s p e c i a l 字段。 如图3 2 所示,h e a d 和t a i l 索引的变化范围都是从b a s e 到b a s e + s i z e ,当 h e a d 或者t a i l 到达b a s e + s i z e 都要回卷到b a s e 。硬件控制着h e a d 索引,当硬 件将所收到的数据包放在内存缓冲区后,h e a d 自动后移一个索引。软件控制着 1 3 l i n u x 环境下基于i n t e lt 兆埘卡的高速数据包捕获v 白的研究 t a i l 索引,当软件取走一个在内存缓冲区中的数据包之后,软件要修改t a i l 索引, c | n :u l a r8 u 何茸q u e u e s b a s e - - _ _ 图3 2 接收描述符队列环结构f 3 7 l 使其后移一个索引。当h e a d 等于t a i l 的时候,此时环为满,硬件要停止将 接收到的数据包放入接收缓冲环,直到有可用的空闲接收描述符为止。图3 2 中 的阴影区域表示硬件已经在接收描述符所指的内存缓冲区中存放了数据包但是 还没有被软件接收的区域,空白区域表示硬件可以使用的用来存放数据包的接收 描述符。当软件要处理数据包的时候是通过对接收描述符中的s t a t u s 字段中的 d d ( d e s c r i p t o rd o n e ) 标志位进行判断的,当d d 标志位被设置为1 的时候,表 示硬件已经将数据包放在内存缓冲区中,可以处理此数据包,然后修改d d 标志 位为0 。 3 1 3 接收数据结构整体框架图 图3 3 接收数据结构整体框架图 1 4 第三章i n t e l 千兆网卡相关技术研究 3 2i n t e l 千兆网卡中断节制机制介绍 i n t e l8 2 5 4 x 系列千兆网卡中断节制( i n t e r r u p tm o d e r a t i o n ) 3 8 1 机制的引入主 要是为了解决中断淹没引起的问题,从而减少因为中断而引起的c p u 使用率的 急剧上升。 3 2 1 基本的中断处理流程 在缺少中断节制机制的情况下,每当有数据包发送或接收的时候,网卡控制 器将发中断给c p u 。 基本流程如下: a 。网卡控制器成功地发送或接收一个数据包。 b 网卡控制器产生一个中断响应此次事件。 c c p u 的中断其目前的活动以处理中断。通常情况下,这涉及到保存状态 信息和执行一个网卡控制器中断处理程序。 d 软件( 通常是设备驱动程序) 查看网卡控制器以确定中断原因。该软件 还可以根据中断的性质承担更多的工作。 e c p u 恢复其先前的活动。 在中断频率较低的情况下,这种处理机制很有效。但是当中断频率不断上升 时,系统要花费更多的时间处理这些中断。处理这些中断的开销会减弱系统的性 能,因为c p u 花费大部分时间去调度和执行相应的中断处理程序。如果中断频 率继续上升,网卡控制器可能过载,导致其丢掉数据包,而且系统本身有可能暂 时无法响应。试验结果也显示,当一台机器给另一台机器不断的发送数据包,但 是当发送频率达到一定程度的时候,接收端的系统停止了响应,如同死机一样, 但是一旦停止了发送,接收端又恢复正常,可以继续响应用户的服务要求。 此外,除了数据包发送和接收事件可以使网卡控制器产生中断外,有些外部 事件也可以产生中断比如连接状态的改变也会产生中断。由于这些中断发生频 率相对较少,不会对系统性能产生什么影响,通常我们不过多考虑,而只考虑由 数据包发送和接收引起的中断。 3 2 2 带中断节制机制的中断处理流程 为了克服由于中断淹没引起的问题,从8 2 5 4 0 e m 网卡控制器开始引出了一 系列的定时器用来缓解或者限制中断数量。软件可以通过设置网卡控制器延迟中 1 5 l i n u x 环境下基于i n t c lt - 兆网卡的i 留速数据包捕获甲秆的研究 断的产生,通过推迟这个中断,网卡控制器可以在这段延迟期间内收集更多的中 断,当中断产生的时候,网卡控制器可以一次投递多个中断给中断处理程序。这 样可以节省调度和执行相应的中断处理程序的时间,无论软件还是硬件都可以在 不影响性能的情况下高效的工作。 基本流程如下: a 网卡控制器成功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论