(计算机应用技术专业论文)基于嵌入式的网络包捕获关键技术研究与实现.pdf_第1页
(计算机应用技术专业论文)基于嵌入式的网络包捕获关键技术研究与实现.pdf_第2页
(计算机应用技术专业论文)基于嵌入式的网络包捕获关键技术研究与实现.pdf_第3页
(计算机应用技术专业论文)基于嵌入式的网络包捕获关键技术研究与实现.pdf_第4页
(计算机应用技术专业论文)基于嵌入式的网络包捕获关键技术研究与实现.pdf_第5页
已阅读5页,还剩78页未读 继续免费阅读

(计算机应用技术专业论文)基于嵌入式的网络包捕获关键技术研究与实现.pdf.pdf 免费下载

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

文档简介

a 艺:二01 , r ,q j 独创性声明 删删j f f i i | f 舢f y 18 0 2 8 乏芝。 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:尘堡焦 日期:知。年g 月2 目 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:导师签 日期:切眸右月日 摘要 摘要 从计算机网络出现到今天,网络逐渐融入到我们生活的各个角落,它在带来 便捷通讯的同时,也带来了各种各样新的问题。其中网络的安全性引起了各个国 家、公司的高度重视。如今,网络安全正面临这巨大的挑战,到处可见规模不等 的安全威胁、攻击和破坏,针对这些问题也出现了各种各样网络安全技术。其在 系统底层都需要网络数据捕获技术的支持。目前基于p c 平台的包捕获技术已经 比较成熟,但其嵌入式平台低存储空间、低c p u 资源情况下的运行效率较低。如 何在嵌入式平台以高效率捕获网络数据包是我们需要解决的问题。 本文对目前已有的网络数据包捕获技术b p f 、d l p i 、s o c kp a c k e t 进行 了详细的介绍。对影响网路数据包捕获性能的原因进行了详尽的分析,同时对提 高数据包捕获效率的“零拷贝技术、内存映射技术、t c p 卸载引擎技术进行了 介绍与对比分析。 本论文的研究目标就是提供一套完整基于嵌入式的网络数据包捕获方案,设 计并实现用户捕获接口,同时根据嵌入式系统的硬件特性设计并实现在嵌入式 1 i n _ 1 1 ) 【平台上的底层网络数据包高效率捕获模块,构成一个完整的基于嵌入式的网 络数据包捕获系统。本系统的三个子模块: 接收模块:提供数据包从网卡接收数据包的功能。该模块从缓冲区管理模块 获取数据包缓冲区并保存接收的数据包内容。 缓冲区管理模块:在内核提供网络数据包缓冲区的创建与释放以及数据包过 滤功能。同时提建内核到用户空间的内存映射与缓冲区的管理功能,实现内核缓 冲区的高效率使用。 应用程序接口模块:提供过滤规则的设置,网络数据包的读取及其他相关设 置功能。 最后通过在嵌入式1 曲u x 平台上对本系统进行的功能和性能测试,证实了本 系统的可行性与高效率。 关键词:数据包捕获,内存映射,l i l 眦,零拷贝,嵌入式系统 a b s t a c t a b s t r a c t s i n c em ec o m p m e rn e t w o r kw a u si n v e l l t e d ,i th a sb e e i lg r a m l a l l yi n t e 鲋i n gi n t o e v e 巧c o m c ro fo u r 1 i v e s i tb r i n 笋u sc o n v e m c n c eo fc 0 忸m u i l i c a :t i o n ,b u ta l s ob r i i 坞sa v 撕e 够o fn e wp r 曲1 e m s m o r e 跹dm o r cc o 嘶e sa n dc 伽叩趾y sp a ya 优e 而o nt o 廿1 e n e t 、o r ks e c u r i 够 t o d a y ,n c t 、7 l ,o r ks e c j t ) ,i sf a c i n gah u g ec h a l l 锄g e 砧1 虹n d so fs e 嘶锣吐l r e a t s , a t t a ( 墩s2 l r l dd e s t r i l c t i o nc a nb ef o u n de v e r y w h e r e a tm es 锄et i m e 吐l e r ea r ev 撕o u s n 咖o r ks e c 嘣t yt e c h n o 均i 笛t os o i v et h i sp r o b i e m m o s to fm et e c h n o i o g l e sn e e dm e n e 觚o r kd a t ac a p t u r et e c h n 0 1 0 缈c 明删y ,m ep a c k e tc 印n 鹏t ec _ h n o l o g yi sr e l a t i v e l y m a n 鹏o np cp l a t f o m l ,b u ti tn mu n d e rm e1 e s se 街c i e n to n 锄曲e d d e dp l a t f o m 删c h h a v eo i l l y1 e s ss t o r a g es p a c ea i l d1 e s sc p ur e s o u r c e s h o wt 0c 印t u r et h en e t w o r kd a t a p a c k e t se 伍c i e n t l yo nt h e 即拍e d d e dp l a t f o m li sap r o b l e mt h a tw e n e e dt 0s 0 1 v e t h j sd i s s e r t a t i o ni n 仃o d u c ec u | 仃e ma v a i la :b l en 鲍) l ,o r kp a c k e tc 印t u r et e c h n o l o g y : b p f d l p i ,s o c k a c k e t 锄da l l a l y z e m er e a s o no ft h e1 0 wp e r f o r m a l l c eo f n e 铆o r kp a c k e tc a p t u 】妇gi nd e t a i l n e l lw e 锄d u c e2 u l da i l a l y z et h et e c t l i l 0 1 0 9 y : ”z e r o - c o p 矿,m e m o 巧m a p p i n g ,t c po m o a de n 舀n et e c l l i l 0 1 0 9 yw l l i c hi m p r o v em e e 伍c i e l l c yo ft h ed a t ap a c k e tc a p t u r e r e s e a r c hd b j e c t i v e so ft h i sd i s s e n a t i o ni st op r o v i d eac 咖p l e t ee n l b e d d e d - b a s e d n e t w o r kp a c k e tc 印t u r ep r o 乒a m ,d e s i g n e da n di m p l e m e n t e dt ot h eu s c ri m e r f a c eo f c 印t u r e ,w 1 1 i l ea c c o r d m gt om eh 衲a r ef e a t u r e so f 即曲e d d e ds y s t e m sd e s i 萨a 1 1 d i m p l e m e n tt l l el l i g hp e r f i o 皿a 1 1 c en e t w o r kp a c k e tc 印t l l r em o d l l l eo nt h ee i 】1 b e d d e d i 觚p l a t f o 衄a n db u i l dac 伽叩1 e t ee i 】1 b e d d e d - b a s e dn e 附o r kp a c k e tc a p t u r es y s t e m t h es y s t e mh a st h r e e 姒b - m o d u l e s : c 印t u r em o d u l e :r e c e i v em ed a t ap a c k e t s 舶mm c a i l ds t o r e di ti nt h ek e n l e l b u 鼢w h i c hw a l sa 1 1 0 c a t e db ym eb u 脓m a n a g e m e n tm o d u l e b u f j 陆m a n a g e i 】a e n tm o d u l e :c r e a t ea n dr e l e a s eb u 侬xt os t o r a g en 酏1 ) l r o r kd a t a p a c k e t si i lm ek 锄e 1a n df i l t e rm ep a c k e t p r o 、,i d et h ek e m e lt ou s e rs p a c em e 力 1 0 巧 m 印p i n g a n db u 岱。rm a n a g 锄e 1 1 t c t i o n st ou s et l l ek e n l e lb u 拭暑re f j i c i e n t l y 一 ! 生! ! ! ! ! ;! 一 - _ - _ _ _ _ _ _ _ _ - _ _ l l - _ _ _ _ _ - - _ - _ _ _ _ _ _ _ - - _ _ _ - _ - _ _ _ _ _ _ _ - _ _ _ _ _ - l _ - _ _ _ _ _ _ _ _ _ - _ _ _ _ - 一一 a p p l i c a t i o np r o g r 锄i i l t e r f a c em o d l l l e :s e tm ef i l t e rm l 骼r e a d s 也en e t w o r k p a c l 【e t s k 锄e 1a 1 1 ds e to m e rf e 舭s f i n a l l y ,l l - o u 曲m e 缸l c t i o na i l dp e 而n i l a n c et e s t so nc o n f i r m e dm ee n l b e d d e d p l a t f 0 1 m l ef e a s i b i l i 锣锄de 伍c i e i l c yo f t h i ss y s t e m k e y w o r d s :p a c k e tc a p t u r e ;m c i i l o r ) rm 印;l i 肌x ;z e r o c o p y ,e i l l b e d d e dp l a t 】白衄 i 目录 目录 第一章绪论1 1 1课题提出的背景和意义1 1 2论文的主要工作2 1 3论文结构2 第二章数据包捕获与l i 仰x 相关技术研究4 2 1网络数据包捕获技术研究4 2 1 1网络数据包捕获原理4 2 1 2b p f 包过滤机制4 2 1 3 数据链路提供者接口7 2 1 4s o c kp a c 玎:l i n u x 系统中的套接字8 2 1 5 影响数据捕获性能的因素8 2 1 6n a p i 9 2 1 7 零拷贝技术9 2 1 8t o e ( t c po m o a de n 西n e ) 技术1 0 2 1 9 l i b p c 印简介1 0 2 2l j n u x 1 4 2 2 1内核模块1 4 2 2 2网卡驱动15 2 2 3l i n u x 内核编程相关知识1 6 2 3嵌入式系统简介2 5 2 4小结2 5 第三章嵌入式网络数据包捕获系统系统需求一2 6 3 1基于嵌入式的网络信息监视和审计系统简介2 6 3 1 1 基于嵌入式的网络信息监视和审计系统的运行平台2 6 3 1 2 基于嵌入式的网络信息监视和审计系统功能2 8 3 1 3 嵌入式网络信息审计网络拓扑图2 9 3 2嵌入式网络数据包捕获需求描述3 2 3 2 1嵌入式网络数据包捕获总体描述3 2 3 2 2 嵌入式网络数据包捕获功能模块逻辑结构3 2 3 3 嵌入式网络数据包捕获数据流3 3 3 4 小结3 5 第四章网络数据包捕获系统设计与实现一3 6 4 1数据包的存储模块的设计与实现3 6 v 目录 4 1 1缓冲区管理模块数据结构的设计3 7 4 1 2 捕获接口的设计与实现4 2 4 1 3 存储模块的设计与实现4 4 4 1 4 包过滤与回收模块设计与实现4 5 4 1 5设备控制接口的设计与实现4 7 4 2数据接收模块的实现5 1 4 2 1对网卡驱动程序的修改5 2 4 3应用程序接口的设计与实现5 3 4 3 1应用程序接口的数据结构5 4 4 3 2 应用程序接口的工作流程5 5 4 4嵌入式网路数据包捕获系统搭建5 7 4 4 1 建立交叉编译环境5 7 4 4 ,2 系统软件平台的搭建5 7 4 4 3 交叉编译l i b p c 即函数库5 8 4 4 4 q p c a p 模块的编译与加载。5 9 4 4 5 接收模块的编译与加载6 0 4 5 小结6 1 第五章系统测试6 2 5 1 功能测试6 2 5 1 。l 测试的网络环境6 2 5 1 2 实验设备与软件环境6 3 5 1 3 测试方案6 3 5 1 4 测试结果6 3 5 2 性能测试6 4 5 2 1 测试网络环境6 4 5 2 2 实验设备与软件环境6 5 5 2 3 测试方案6 5 5 2 4 嵌入式数据包捕获系统捕获测试结果6 5 5 2 5 与传统1 i b p c a p 的性能对比6 6 5 3小结6 9 第六章总结与展望一7 0 参考资料7 1 致谢:7 3 攻读研究生期间的研究成果7 4 v i 第一章绪论 1 1 课题提出的背景和意义 第一章绪论 本课题来源于广东省产学研项目基于嵌入式的网络信息监视和审计系统。 随着网络技术的发展,计算机网络已经深入到人类社会的各个领域,它在人 们社会生产和生活中扮演越来越重要的角色在当今的信息化社会中,计算机网 络的稳定可靠运行已经成为人们生产和生活的基本条件和保障。为了确保日常工 作得以顺利进行,各行各业已越来越多的将关注焦点放在网络安全上。 根据d c 的报告,从2 0 0 1 年起到2 0 0 5 年,世界网络安全市场加速发展,营 销额年增长率高达2 4 ,到2 0 0 5 年,收入超过1 4 0 亿美元。从2 0 0 3 年中国的网 络安全市场来看,整个市场规模达到5 0 多亿元,呈高速增长状态。随着网络安全 事件的增加,特别是重大攻击事件的频发,网络安全问题已经引起各行业企业及 其它事业单位的普遍重视,网络安全产品也受到前所未有的青睐。尤其是各级政 府部门和那些缺乏网络安全技术人员的中小型企业。其中,中小型企业占中国企 业总数9 6 。他们是国内网络安全产品市场的主要推动力量。一项针对企业有关 网络安全开支准备的调查中,8 0 受访者表示,他们将在防火墙硬件和网关级内 容监控产品上进行投资。 针对这种现状,研究开发加强内部网络安全管理以及审计员工网络行为的重 要的。该系统通过监视员工网络行为,记录下当前的违规异常行为以便事后进行 审计。最终能够提高内部网络安全等级,有效降低因内部安全事件,如通过网络 外传内部机密资料而造成的直接或间接经济损失。因此该系统的研发和应用将具 有良好的经济效益和社会效益。 随着后p c 时代的到来,嵌入式技术不断升温,我们有理由相信未来的电子 技术是嵌入式技术的天下。在嵌入式设备上设计实现网络信息审计系统,通过该 系统准确的了解网络运行状态,加强网络安全管理以及审计员工网络行为的重要 工具。进行流量统计分析,监视网络行为,记录下当前的违规异常行为以便事后 进行审计。最终达到对网络能够进行较好的监视和控制。该应用对于日益发展的 网络通信在嵌入式设备中的设计与开发有很好的借鉴意义。 电子科技大学硕士学位论文 但是基于嵌入式的网络信息监视和审计系统的底层支撑技术网络数据包捕 获系统,在p c 平台已经比较完善,但是在嵌入式系统资源受限情况下的运行效 果却不尽如人意。因此研究如何在嵌入式平台实现网络数据包的高效率捕获,具 有重要意义。 1 2 论文的主要工作 本论文系统介绍l i n u x 内核网络结构及内核编程相关技术,研究了目前已有 的网络数据包捕获方法及i j m l x 系统平台的网络数据包捕获机制,设计并实现了 基于i j n u x 平台的网络数据包系统。 对i j n u x 平台的内核技术进行了相关研究,介绍了l i n u 】【内核模块编程的方 法及特点,介绍了i j 玎u x 程序的内存管理机制及内存映射的原理。分析研究了网 络设备驱动的结构及不同实现机制,介绍l i n u x 网络协议栈结构及主要结构体。 对基于嵌入式的网络信息监视和审计系统的项目目标,系统目标进行了 介绍,分析了整个系统的结构及各模块的功能。 对现有的数据包捕获技术进行分类研究,讨论了各种技术的特点,并对现有 的提高数据捕获效率的零拷贝,n a p i 技术进行研究,客观评价了各技术的适用 环境和性能。 设计了网络数据包捕获系统中的几个主要模块:包接收模块,内核缓冲区管 理模块,应用程序接口模块。 实现嵌入式网络数据包捕获系统,并移植到嵌入式l i i 磁系统平台上。实现 对基于嵌入式的网络信息监视和审计系统的底层支持。 1 3 论文结构 本文在研究目前现有的网络数据包捕获技术的基础上,设计实现了机遇嵌入 式平台的网络包捕获系统,全文结构如下: 第一章介绍论文课题提出的相关背景及项目来源,探讨了网络包捕获技术的 作用与价值。 第二章介绍了课题相关技术,包括l i n u x 内核相关知识及现有包捕获系统, 同时对目前已存在的网络数据包捕获技术进行了深入的研究与分析。 第三章介绍了基于嵌入式的网络信息监视和审计系统的项目目标及系统的结 2 第一章绪论 构及各模块的功能,对嵌入式网络数据包捕获系统需求做了详细的论述。 第四章介绍的嵌入式网络数据包捕获系统的设计与实现,针对各模块的设计 与实现进行了详细的介绍。 第五章在嵌入式平台上对整个网络数据包捕获系统进行功能测试,并对系统 性能测试进行分析。 最后对课题及论文相关工作做出总结,并指出目前存在的不足及进一步的工 作方向。 3 电子科技大学硕士学位论文 第二章数据包捕获技术与l 协u x 相关技术研究 2 1 网络数据包捕获技术研究 2 1 1 网络数据包捕获原理 目前网络数据包捕获【l - 2 】主要有二种方式: 利用以太网络的广播特性实现。在以太网上,所有的设备都可以接收到连接 到该网络中的所有设备发送的数据帧,而无论其目的地址是否是当前设备,正常 情况下,设备会检查发送的数据帧目的地址是否为本设备,若是当前设备地址则 向系统上层递交该帧,若不是当前设备地址会丢弃该帧。当需要在以太网中捕获 数据包时,只需设置网络接口为混杂模式 3 】,在此状态下,网络接口会将所有收 到的数据包递交系统。此时其他设备的数据帧已进入系统,但是在上层协议处理 过程中仍然会丢弃不匹配的数据包,要实现在用户态处理数据包,必须绕过系统 中的其他协议,直接访问网络链路层。目前,类i 烈系统中有3 种常见的数据 链路层访问设备,可以用来捕获和过滤链路层上的数据包,分别是:b s d 系统中 采用的b s d 分组过滤器( b p f ) ,s 、,】斟中的数据链路层接口( d l p i ) 和l i l l u x 系统的 s o c kp a c k e t 接口。通过这些机制。应用程序可以绕过通常的t c p 佃协议, 直接获取数据包,实现网络数据的监视功能。整个过程是一种被动接收到方式, 对网络数据的正常传输不产生影响。 通过设置路由器的监听端口实现。目前许多路由器或交换机都提供了端口镜 像功能,根据设置可以将路由器上特定网络接口的数据包完全镜像到另一个网络 接口,通过该镜像接口,可以设置处理设备的网络接口为混杂模式从而接收数据 包,并进行处理。目前有一种专门的网络分接设备,其原理与端口映射相同;对 通过该设备的网络数据进行镜像,从而实现搭线监听。 2 1 2b p f 包过滤机制 b p f 【4 - 8 1 ( b e c l e l e yp a c k e tf i l t 哪,伯克利数据包过滤器,是由美国加州大学伯 4 第二章数据包捕获技术与l i i l l l x 相关技术研究 克利分校在b s d 操作系统上设计实现的一种数据包接收和过滤机制,现在被应用 于很多系统,如l i l l u 】【,b s d 等。 b p f 由两个主要部分:网络分接头( n e 研o r kt 印) 和过滤器q a c k e tf i l t 神。网络 分接头从网络设备驱动程序中获取数据包并转发到监听程序。过滤器根据设定的 过滤规则决定是否捕获该数据包。并且决定复制数据包的哪些部分用以保存。b p f 在内核中设置了过滤器,从网卡驱动获取的数据包首先经过该过滤器过滤,通过 过滤的数据包保存在每一个b p f 拥有的缓冲区。待缓冲区中接收到一定数量的数 据时,在一起提交给用户进程。b p f 采用的是双缓冲机制,当一个缓冲区满时则 调换使用另外一个。这种机制很好的提高了效率。 b s d 平台上的b p f 系统结构如图2 1 所示: 应用程序应用程序应用程序应用程序 ljljljl 用户空间 缓存缓存缓存内核协议栈 t下t 过滤过滤过滤 链路层驱动链路层驱动链路层驱动 枷 h 1 及 网络 图2 。1b s d 平台上的b p f 数据包捕获系统结构 b p f 中数据包捕获的过程可描述如下:当数据包到达网络接口时,链路层驱 动程序将其提交数据包给系统的网络协议栈;如果b p f 正在此网络接口监听,驱 5 电子科技大学硕士学位论文 动程序将首先调用b p f ,b p f 将数据包发送给过滤器,过滤器对数据包进行过滤, 若能够通过过滤,就将数据向上提交给与该过滤器关联的应用程序;然后链路层 驱动继续执行,将数据包提交给系统的网络协议栈处理。 由于网络数据包到达的间隔是很短的,如果对每个到达的数据包都调用一次 系统调提交给用户进程,则效率上开销是非常大的。因此b p f 过滤器会缓存多个 包,然后将它们作为一个整体提交给应用程序。b p f 给每个原始数据包前加上了 一个包头,它包括了包头长度,原始数据包长度,时间戳等信息,用以在这个整 体中区分的每一个独立的数据包。由于各种应用程序往往只关注一部分数据包, 如果对每一个数据包都进行一次复制操作,将会浪费大量的系统资源。对此,b p f 的做法是将数据包的指针提交给过滤器,当过滤器决定接收该数据包时,才将数 据包复制一份。这种方案大大减少了内存拷贝的操作量,极大地提高了系统的性 能。 目前基本的过滤规则描述方式有两种:一种是布尔表达树,另一种是b p f 采 用的可控制流图c f g ( c o m r 0 1f 1 0 wg 慨p h ) 布尔表达树方式如图2 2 所示。在树形模型中,每一个节点代表布尔关系, 每一个叶子代表一个谓词短语,如t y p e = 圯边表示布尔操作和操作数的关系 图2 2 布尔表达树方式 可控制流图c f g 方式如图2 3 所示。在c f g 模型中每个节点代表一个谓词 短语,每一个边代表控制转换。如果谓词短语为真则右转,为假则左转。每个c f g 图右两个终结节点代表返回真或假。 6 第二章数据包捕获技术与1 i i l u ) 【相关技术研究 图2 - 3 可控流图c f g 方式 以上两种模型的计算能力大致相同,但是在实现上却有很大不同。布尔表达 树方式的操作大都基于堆栈操作而c f g 模型可以基于寄存器操作,并且布尔表达 数树方式在解释数据包时可能存在重复计算,而其可控制流图模型解释数据包时 会记录解释状态与路径,所以可控制流图模型布尔表达树模型在实现上要快很多。 b p f 的过滤是通过虚拟机执行过滤程序实现的,虚拟机由累加器、数据存储 器、索引寄存器和程序计数器构成。过滤程序由用户指定,实际上是一组过滤规 则。 i 锄l x 使用的包过滤算法也是使用的b p f 的过滤算法,在本系统中我们将直 接使用。 2 1 3 数据链路提供者接口 d l p i( d a t al i i l kp r o d e ri n t e r f a c e ) 是a t & t 设计的独立于协议的用于访 问数据链路层的接口。s v r 4 通过d l p i 发送和接收流消息来实现对数据链路层 的访问。 d l p i 规定了一个符合i s o 的数据链路服务定义( d a t al i n ks e n ,i c ed e 6 n i t i o n , i s 0 8 8 8 6 ) 和逻辑链路控制( l o 百c a ll i l l l 【c o n 臼o l ,i s 0 8 8 0 2 2 ) 的内核流实现。 d l p i 定义了流消息( s 洹j 蝴m e s s a g e ) 的集合、状态表和以及相应的约定,并 且定义了数据链路服务的使用者和提供者之间交换的原语集合以及原语的使用规 则,允许数据链路服务的提供者( d l sp r 0 访d c r ) 和使用者( d l su s 神的交互动作。 通过d l p i 数据链路服务的使用者可以直接访问数据链路层数据,如获取数据链 7 电子科技大学硕士学位论文 路层的状态,接收和发送数据链路层的原始网络帧,而不需要知道数据链路层的 实际协议。只要数据链路层服务的提供者支持标准的d l p i 接口,不论数据链路 层是x 2 5l 廿b ,s d l c 还是e m 锄e t ,f d d i ,t o k e i l 砒n g 的协议,使用者都可 以通过d l p i 接口来对数据链路层进行访问。 2 1 4s o c kp a c k e t :l i n u x 系统中的套接字 s o c k e t 【9 】主要包括:原始套接字( s o c kr 姗、数据报套接字 ( s o c kd g r a m ) 和流式套接字( s o c ks 汪a m ) 。l i n u x 另外还提供一种套接字: s o c kp a c k e t 【1 1 。13 1 ,通过该套接字用户进程可以从网络底层直接获取数据。 s o c 豳玎接口是i j n l l x 操作系统内核提供给应用程序用以访问网络链路层的编程 接口。通过这个s o c k e t ,应用程序可以获取到网卡传递到l i n u x 内核的所有数 据数据包。数据报文同时会按传统方式提交给内核的网络协议栈,所以在应用程 序中使用s o c kp a c k e t 套接字对正常的网络通讯不会造成任何影响。由于 s o c kp a c k e t 套接字功能强大,能进行内核底层的操作,所以使用起来开发者 进行需要对使用过程进行较好的控制。 2 1 5 影晌数据捕获性能的因素 正常情况下从网络获取数据包以后,需要经过操作系统内核相关处理,最后 到达用户空间,完成数据包的接收。所以影响网络由于数据捕获的必然存在于内 核从网络接收数据,数据在内核中的处理,以及内核到用户的数据传递三个阶段 中。经过测试分析限制捕获性能的因素主要有:中断处理、内存拷贝。 中断处理 根据操作系统原理,硬件产生中断并发送给c p u ,操作系统需要对中断信号 进行响应,每次中断响应都需要进行现场保护和两次上下文切换等操作。在低流 量的网络环境中,中断的响应频率较低,对操作系统的影响较小。但是当网络流 量很大时,数据包大量到达,每一个数据包都会产生一次中断,c p u 只能频繁的 响应中断,而无法进行消耗大量的c p u 时钟,而无法进行后续的数据包处理工作, 严重影响了系统的捕获性能。所以通过解决中断过于平凡的方法可以提高捕获性 能。 8 第二章数据包捕获技术与l i n u ) 【相关技术研究 内存拷贝 传统数据包捕获系统直接通过系统调用来读取内核中的数据包的,这其中涉 及到数据从内核空间向用户的拷贝,重复占用了系统内存,而内存复制过程以及 系统调用本身需要进行的多次任务状态切换都将消耗大量c p u 资源,当有大量数 据包时,这种方式会数据包捕获系统的性能造成严重的影响,首先要解决的就是 数据拷贝问题。 由上面的分析可以看出,在数据包的接收过程中,会发生多次内存拷贝,再 加上频繁的中断处理,这些将消耗大量的c p u 时钟。因此通过减少内存拷贝次数、 改进中断方式即可提高数据包捕获的性能。 2 1 6 脚i n a p p h “,j ( n e wa p i ) 是j 锄a 1h a d js a l i m 、i 油酣0 1 s s o n 和趟e x e yk u 蕊e t s o v 提出的对中断方式接受数据包的一种改进。其主要的思想是在网络高负载情况下 采用轮询方式收包,在低网络负载情况下使用中断方式收包,从而有效解决网络 高负载情况下来的拥塞冲突的问题。借鉴n a p i 技术的思想,可以用于解决数据 包捕获系统中由于网络高负载情况下中断次数过多而大量丢包的问题】。 n a p i 是一种轮询【1 0 】的数据包接接收机制。中断机制在较低的中断符合情况 下可以改进延迟,但当中断负荷超过了最大无损转发率时,会导致系统活锁。通 过系统负荷确定是否采用轮询或中断机制来处理输入数据以便改进性能。n a p l 只能用于实现了d m a 【1 8 1 ( d i r e c tm e m o r ya c c e s s ) 缓冲区环的m c 。当网络数据包 到达时,n a p i 被置入换上的下一个缓冲区中。通常对于每一个报文,处理器都 会中断并且从环中清除该报文。当n a p i 被激活时,响应第一个中断,通知n i c 停止中断,然后n a p i 在换上轮询取出数据包而无需更新更多中断,从而极大地减 少了接受中断。 2 1 7 零拷贝技术 在l i 仰x 的网络系统中,网络数据包的接收过程从网卡驱动到用户进程获得 数据需要进行多次的内存拷贝,需要消耗要消耗大量的c p u 和内存资源,从而大 大的地增加了系统开销,降低了系统的性能。为了提高数据捕获系统在大流量高 速率网络环境下的性能入,减少数据包内核与用户空间传输过程的中间环节,绕 9 电子科技大学硕士学位论文 过操作系统内核,减少甚至消除数据拷贝的次数,以降低系统资源的消耗,使用 户进程数据处理任务获得更多的c p u 和内存资源用。由此诞生了零拷贝技术。 零拷贝( z e r o c o p y ) 【1 9 2 3 】的基本思想是:数据分组从网络设备到用户程序空间 传递的过程中,减少数据拷贝次数和系统调用,实现c p u 的零参与,彻底消除 c p u 在这方面的负担。实现零拷贝的最主要技术是d m a 数据传输技术和内存映 射技术【2 4 1 。 传统的网络数据包处理,需要经过网络设备到操作系统内存空间,系统内存 空间到用户应用程序空间这两次拷贝,同时在拷贝过程中用户还要向系统发出系 统调用。而零拷贝技术则首先利用d m a 技术将网络数据包直接存储到系统内核 预先分配的地址空间中,避免了c p u 的参与;同时将系统内核中存储数据包的内 存区域映射到应用程序的存储空间,应用程序直接对这块内存进行访问,从而减 少了系统内核向用户空间的内存拷贝和系统调用的开销,实现真正的零拷贝。 零拷贝中存在的最关键问题是同步问题,一边是处于内核空间的网卡驱动向 缓存中写入网络数据包,一边是用户进程直接对缓存中的数据包进行分析,由于 两者处于不同的空间,这使得同步问题变得更加复杂。 2 1 8t o e ( t c po f ! c l o a de n g i n e ) 技术 t o e 技术【2 5 2 8 】是对现有t c p 佃协议软件的扩展,从而在网卡上实现对数据 包进行t c p 母协议处理,这样就不必将c p u 资源消耗在对t c p p 帧的处理操作 上,而是提供给应用程序或系统其他需求,从而提高系统的整体性能。 但通用的t c p 卸载解决方案却始终失败,t o e 只适合一些特定的应用场景, 特别是那些进行大块数据传输而连接数又少的应用场景,如存储互联结构、高性 能集群等。利用t o e 技术,在网络数据包捕获系统中,直接在网卡上对数据包做 一些协议过滤的功能,从而减少无效数据包的捕获,提高数据捕获系统的性能。 2 1 9 l i b p c 印简介 l i b p c 印【2 9 1 是由b e r k e l e y 大学l a w 崩l c eb e r k e l e yn a t i o n a ll a b o r a t o 巧研究院 的v 觚ja c o b s o n ,c r a i gl e r e s 和s t e v e nm c c a n n e 编写一个的与实现无关的用户级 数据包捕获接口库。目前由t c p d 吼p 项目组负责维护,可以通过 、棚啊t c p d u n l p o r g 获取相关代码及文档。1 i b p c 印的提供了一个可移植底层网络监 第二章数据包捕获技术与1 i n l l ) 【相关技术研究 控程序框架,包括网络数据统计、安全监控、网络调试等应用。该函数库支持 “n u ) 【,s o l 耐s 和b s d ( b 盯k e l e ys o 胁a r ed i s 仃i b u t i o n ,伯克利软件套件是u n i x 的衍生系统) 系统平台。l i b p c a p 提供了不依赖于操作系统的与实现无关的访问数 据链路层的方法,具有良好的兼容性,为不同的平台提供了一致的编程接口。在安 装了1 i b p c a p 的平台上,使用l i b p c a p 库函数编写的程序能够自由的跨平台使用。 2 1 9 1 常用接口函数介绍 l i b p c a p 源代码由2 0 多个c 文件构成,包括共同的用户接口,以及根据不同 系统的底层具体实现。通过使用这些接口函数,应用程序根据用户指定的规则可 以直接获取特定的网络数据包内容,而不用关注底层具体的包捕获及过滤实现, 用户只需关注自己的信息处理,功能,l i b p c 印主要使用以下函数: c h a r 宰p c a p j o o k u p d e v ( e 曲u f ) 获取网络设备名称指针,用于后续函数。出错返回m i ,砷u f 参数存放 错误消息。 i n t p c a p j o o k 印n e t ( c o n s tc h a r 半d e v i c e ,b p f _ u j n t 3 2 木1 0 c a l n e t ,b p f - u _ i m 3 2 凇n e t m a s k ,c h a r 宰耐b u f ) 获得网络设备的网络地址和掩码。d e v i c e 参数为设备名称,l o c a l n e t 和n e 廿i l a s k 参数是b p fui n t 3 2 类型指针,指向获取的网络地址和掩码,e 圩b u f 参数存放错误 消息。 p c a p j 母p c a p - - 0 p 翎j i v e ( c o n s tc h a r 串s o u r c e ,i n ts n 印l e n ,i 1 1 tp r o m i s c ,i n tt o j n s , c h a r 术e n b u f ) 获得用于捕获网络数据包的描述结构。s o u r c e 参数指定网络设备名称,s n 印1 e 1 1 参数定义捕获数据的最大字节数,p r o 】n i s c 参数指定是否将网络接口置于混杂模 式,t om s 参数指定超时时间( 单位:毫秒) ,锄南u f 参数在函数出错时用于传递 错误消息。 p c a p j 木p c a p _ o p e n f j f l i n e ( c o n s tc h a r 水m 锄e ,c h a r 半e n b u f ) 打开保存捕获数据包的文件,用于读取。向锄e 参数为指定文件名,e 门m u f 参数在函数出错时用于传递错误消息。文件数据格式与t c p d u n l p 兼容。 p c a pd u m p e l j 半p c a p d u n l p 量) p e n ( p c a p j 串p ,f i l e 木f ) 打开保存捕获数据包的文件,用于写入。p 参数为p c 印o p e i u i v e 或 p c 印_ o p e l l _ p f f l i n e 函数返回的p c a p j 结构指针,f 参数指定打开文件名。 曲tp c a pc 锄p i l e ( p c 印。术p ,s t m c tb p p r o 伊锄木p r o 蓼a m ,c o n s tc _ h a r 木b u ei n t 电子科技大学硕士学位论文 o p t i m i z e ,b p fui i 】t 3 2m a s k ) 将用户给定的过滤规则编译成具体的过滤码。p r o 黟a m 参数存放编译后的过 滤码,b u f 存放用户给定的过滤规则,o p t i m i z e 参数控制结果代码的优化,m a s k 为本地网络掩码。 i mp c a p s e t j f i l t e r i c 印j 术p ,s t m c tb p f p r o 伊锄水筇) 指定过滤程序。审为p c a n c o 力叩i l e 产生的过滤码。 i n tp c a p d i s p a t c h q c a p j 宰p ,i n tc n t ,p c a p j l a l l m e rc a l l b a c k ,u _ c h a r 宰u s 哪 捕获并处理数据包。c n t 参数指定函数返回前处理的数据包最大个数,c n t 一1 表示在一个缓冲区中处理所有包,c i l 卢o 表示处理所有数据包,直到读到e o f 或 超时。c a l l b a c k 参数为回调函数函数指针,回调函数用来处理读取到的数据包, 回调函数具有两个uc h a r 指针,分别为用户指定参数和数据包执政,还有一个 p c a pp k t h d r 结构指针,待处理的数据包。 i n tp c a p j o o p o c a p 宰p ,i n tc m ,p c a p a n d l e rc a l l b a

温馨提示

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

评论

0/150

提交评论