已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆邮电大学硕士论文摘要 摘要 网络监控是i n t e m e t i n t r a n e t 上的一个重要课题,如何能够在保证各种监控功 能的情况下,尽量提高系统的性能,直是一个难点。本文设计和实现了一个高 性能的网络数据包捕获与分析系统,并且分析和测试了它在千兆网络上的性能和 功能。 本文介绍了该系统的整体构架,具体描述了该系统的两大模块的设计一 个是网络数据包捕获与预过滤模块,另一个是网络数据包分析与处理模块 针对第一个模块的性能优化,本系统采用了预过滤、反馈机制、分流派发、 多级缓冲和优先级定义等多种技术。针对第二个模块的性能优化,本系统采用了 插件、链式结构、反馈机制、高效的内存管理算法等多种技术。实验证明这些方 法是有效的。本系统不以单纯提高某个模块的性能为目的,而是强调两者的平衡 以取得整个系统的性能最优化。 最后对系统进行了长达2 0 天的实地测试,实测的结果表明本系统能够有效 的在千兆网络中使用。 关键词:数据包捕获,数据包分析,千兆网络,缓冲 重庆邮电大学硕士论文 摘要 a b s t r a c t n e t w o r km o n i t o r i n gi sa ni m p o r t a n tp r o b l e mo fi n t e m e t i n t r a n e t i t sa l w a y s d i f f i c u l tt oi m p r o v et h ep e r f o r m a n c eo fam o n i t o rs y s t e mw i t hg i v e nf u n c t i o n s t h i s p a p e rd e s i g n sa n da c h i e v e sah i g h - p e r f o r m a n c es y s t e mf o rn e t w o r kp a c k e tc a p t u r e a n da n a l y s i s ,a n dd i s c u s s e si t sp e r f o r m a n c ei ng i g a b y t en e t w o r k t h i sp a p e rp r e s e n t sa l li n t e g r a t es y s t e ma r c h i t e c t u r e ,c o n c r e t e l yd e s c r i b e s s y s t e m a t i cr e a l i z a t i o no ft w oi m p o r t a n tm o d e l s o n ep a r ti st h a tf o rn e t w o r kp a c k e t c a p t u r ea n dl o r e - f i l t e r , a n da n o t h e ri so n ef o rn e t w o r kp a c k e ta n a l y s i sa n dh a n d l e r i no r d e rt oa c h i e v eh i g hp e 商d r m 趾c c ,s o m et e c h n o l o g i e sa r eu s e dt oo p t i m i z et h i s s y s t e m , s u c ha sp r o - f i l t e r , f e e d b a c km e c h a n i s m , d a t ad i s t r i b u t i o na n dd i s p a t e h m e n t , m u l t i l e v e lb u f f e ra n dp a c k e tp r i o r i t yi nt h ef i r s tp a r t , a n dp l u g - i nt e c h n o l o g y , c h a i n s t r u c t u r e ,m e m o r ym a n a g e m e n ti nt h es e c o n dp a r t e x p e r i m e n tr e s u l t sp r o v et h a tt h e y a l ev a l i da n de f f i c i e n t w ea c c e p tt h a tt h eb a l a n c em u s tb em a i n t a i n e db e t w e e nt w o p a r t si n s t e a do fe m p h a s i so ne i t h e ro ft h e mw i t h o u t a n o t h e ro n e ,s u c ht h a tt h e p e r f o r m a n c eo f t h ew h o l es y s t e mc a l li n c r e a s es i g n i f i c a n t l y r e s u l t so f2 0 - d a y sm a dt e s td e m o n s t r a t et h a tt h es y s t e mc a nw o r kw e l li nt h e g i g a b y t en e t w o r k k e y w o r d s :p a c k e tc a p t u r e ,p a c k e t a n a l y s i s ,c - i g a b y t en e t w o r k , b u f f e r n 、 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得 的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包 含其他人已经发表或撰写过的研究成果,也不包含为获得重庞噬电太堂或 其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所 做的任何贡献均己在论文中作了明确的说明并表示谢意。 学位论文作者签名:袤两晕仇 签字日期;硼年后矽日 学位论文版权使用授权书 本学位论文作者完全了解重废整电太堂有关保留、使用学位论文的 规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文 被查阅和借阅。本人授权重庆鲣虫太堂可以将学位论文的全部或部分内 容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇 编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:撇 导师签名: 凇v 签字日期: z 帅i ,年月的 签字日期:伊二年占, e l 夕日 重庆邮电大学硕士论文 第一章绪论 1 1 课题的背景和意义 第一章绪论 随着i n t e r a c t 的飞速发展,以i n t c r n e t i n t r a n c t 为平台的各种应用越来越广泛 和深入,社会信息化程度不断提高,网络在带来巨大的经济效益和社会效益的同 时,也面临日益严重的管理和安全问题。网络监控常被作为解决这些问题、提高 计算机网络性能和安全性的机制使用。 在目前网络中,不同的用户出于不同的目的监控网络的不同方面。一些仅要 求统计流量,而一些可能对网络通信的某些字节感兴趣。可以说网络监控是网络 故障检测、入侵检测、流量统计和安全审计等多种应用的基本技术。网络监控的 目的是从网络中得到必要信息;网络监控的对象是网络数据包;网络监控通过对 网络数据包进行捕获和分析处理来实现的。所有使用网络监控基本技术的应用系 统我们都可以称之为网络监控系统。 近些年,虽然网络监控相关技术不断的完善,但随着高速网络的发展,这些 技术和实践被迁移到千兆网络上时,面对高速网络流量,数据包的捕获和分析处 理都碰到了困难,网络监控越来越慢,系统性能下降。因此提高系统整体性能成 为迫切的需求。 网络监控只是基本技术,基于该基本技术实现的应用系统才具有现实意义。 为了维护企业信息安全,不少企业投入应用了很多网络安全类的系统,比较常见 的如网络流量监测系统、网络故障检测和性能管理方面的工具、入侵检测系统 ( d s ) 、安全审计系统等等这些系统各自具有自己独特的功能,比如网络流 量监测系统能够提供流量监测功能,安全审计系统能够提供敏感关键词报警和日 志功能等。实际中,有些用户希望能够将其中不同系统的一些功能融合在一起, 比如流量的监测与网页过滤。 于是,性能和功能成为用户最为关心的两个问题。而目前常见网络监控系统 或多或少存在一些性能问题和功能缺陷。比较常见的,如s n i f f e r 网络分析仪以 及e t h e r p e e k 网络分析仪,虽然它们能够运行于千兆环境,并且提供了丰富的网 络协议分析、流量监控和故障诊断功能,但是缺少企业用户所需的聊天邮件等行 为的监视、网页关键词报警等功能。另外它们都部署在w i n d o w s 系统,没有提 供l i n u x u n i x 下的相关版本。比较著名的开源工具e t h e r e a l 提供和s n i f f e r 类似的 功能,能够运行于w i n d o w s 和l i n u x u n i x 平台,适应千兆的环境,但是有很多严 重的缺陷,其中一项就是其协议识别大多采用端口识别,如果将f t p 协议从2 l 端口换成1 2 0 0 端口,它就没办法识别了。目前在一些企业中使用比较多网络监 重庆邮电大学硕士论文 第一章绪论 视和信息过滤系统,比如网路岗,具有很强的聊天、邮件、上网等监视和过滤行 为,但是不能够流畅的运行于千兆环境中,也没提供功能升级的接口,这意味着 企业用户没办法通过2 次开发来进行功能升级。 解决这些问题,目前比较流行的方式是硬件实现,采用专门硬件对网络进行 监视。该方案的优点是性能相对高,缺点是分析功能相对固定,不易定制,成本 相对高。于是,低成本、灵活性好的纯软件系统不失为一种有效的解决方案。 综上所述,设计并实现一个高性能的、能够运行于千兆网络环境的、功能可 方便扩展的、可集合多种监控应用的网络监控系统是有现实意义的,并且是能够 产生一定经济效益的。 1 2 论文的主要工作内容 本文的主要内容是提出一种纯软件的通用的基于l i b p c a p ( 一种数据包捕获函 数库,运行于l i n u x u n i x ,w i n d o w s 下对应的是w i n p c a p ) 的高速网络包捕获和分 析处理系统框架。 我们进行了网络数据包捕获和分析处理的性能优化,展示了功能扩充支持的 方法。在综合了系统性能、功能可扩充性、可行性、性价比、可移植性等因素的 前提下,给出了系统新的设计方案并予以实现。本系统具有如下的特点; 高度模块化的系统框架设计。模块间具有较低的耦合性,提供了统一的 接口,并且是可复用的因此基于此系统框架,可以较为方便的开发不 同的实际应用系统。 高性能。能以很高的效率运行在千兆级的网络环境中。 功能可扩展性强。目前可以很方便挂接不同的功能模块,能够实现一些 审计系统和主动防御系统的功能融合。由于功能模块的开发采用了插件 链式结构,基于系统的2 次功能开发也是很方便的。 良好的性价比。本系统采用普通低成本的p c 机,没有其他任何专门的 硬件设备。 较好的可移植性。本系统目前可以在w i n d o w s n t 系列和l i n u x 系列下运 行,支持3 2 位和6 4 位系统。并且将来还可以方便的移植到u n i x 系统中。 在本文设计和实现的系统框架的基础上开发完成了一个具体的适应千兆网 络环境的安全审计和信息过滤系统绿色网景。该产品符合公安部信息技术网 络通讯安全审计产品检验规范,并通过评测,享受自主的知识产权。 另外本文设计和实现的系统框架在另外一个实际应用系统n a d 主动防 御系统中也有应用,主要涉及流量监测和网络行为控制。 本文的重点在于系统框架的设计方案的选择、测试和验证。本论文重点研究 2 重庆邮电大学硕士论文 第一章绪论 了网络安全的核心技术之一网络数据包捕获和分析技术,并且针对实际情况 对一些原有实现方案进行了改进。 1 3 论文的组织与结构 本论文以高性能的网络数据包捕获和分析系统为对象,介绍了该系统的整体 框架,详细描述了数据包捕获以及数据包分析处理两大模块的设计和实现。 本文包括七章,组织结构如下: 第一章首先介绍了网络监控核心技术之一一数据包的捕获和分析技术;分析 了目前用户对网络监控系统的性能和功能要求;通过对一些用户常用工具和系统 的使用分析,阐明了本系统设计和实现以及基于本系统的实际应用系统开发的现 实意义。 第二章首先分析了一些常用系统在于兆级网络中性能和功能表现,明确细化 了本系统的设计要求;然后提出了纯软件的系统设计方案,并对其中最关键的问 题做了分析;最后介绍了系统的整体架构。 第三章介绍了本系统的两大模块之网络数据包捕获与过滤模块,介绍 了多线程的处理方式并且解决了使用多线程可能带来的竞争条件问题;重点描述 了预过滤技术和缓冲技术,并且进行了实验测试。 第四章介绍了本系统的两大模块之二网络数据包分析与处理模块,重点 描述了应用处理模块的插件链式结构,并且结合实际的绿色网景信息安全审计系 统和n a d 主动防御系统给出了一些功能组合的例子;接着具体解释了f 口协议 处理模块和网络连接与流量统计分类模块的工作方式。最后进行了实验澳4 试。 第五章对基于本系统框架开发的绿色网景信息安全审计系统进行了长时间 实测,验证了本系统设计的正确性。 第六章对本文进行了总结,并提出了对进一步研究的建议 重庆邮电大学硕士论文 第二章系统设计要求和整体构架 第二章系统设计要求和整体构架 2 1 系统设计要求 本文实现的是一种纯软件的通用的基于l i b p c a p ( 一种数据包捕获函数库,运 行于l i n u r d u n i x ,w i n d o w s 下对应的是w i n p c a p ) 的高速网络包捕获和分析的系统 框架。 本系统深入研究了其中的核心技术之一,即网络数据包的捕获和分析技术, 解决了常用系统在实际应用中的功能单一、性能低下等问题,从软件设计的角度 提出了一个比较通用的模块化设计结构。本系统的设计和实现需要满足以下的要 求。 2 1 1 高度模块化的系统框架设计 目前较为常用的网络管理和性能监测工具是s n i f f e r 分析仪,它在数据包捕 获、协议分析、实时流量监控统计和报警等方面做的相当好。但是其功能相对固 定,系统并没有方便的接口提供给用户完成2 次开发。用户满足s n i f f e r 基本功 能的同时,也希望其某个方面的功能能够得到细化,比如s n i f f e r 的监控报警能 够以标准的协议,比如s y s l o g ,与用户其他安全类产品进行通信。从设计角度讲, 用户希望软件系统具有很好的扩展性。 对系统进行模块化设计,对系统的开发者来说意味着高效的开发效率和低廉 的维护成本 不管是从用户角度还是从开发者角度,模块化设计的系统比非模块化设计的 要好 我们将高度模块化作为本系统的设计要求之一,实现了系统各模块的可复 用通过不同模块之间的组合,系统可以实现不同的功能要求。在开发绿色网景 的过程中,我们将本属于网络流量监控系统的流量监测功能和本属于安全审计系 统的日志审计有效的结合起来了。 2 1 2 高效的性能 本系统作为网络流量监控、i d s 、安全审计等应用的基础,高性能是重点。 如果不能做到占用系统资源少,那么系统就失去了实用价值。同时,系统也不能 对被监控的网络造成过大影响。 一般情况,通过专门的硬件来实现数据包捕获与分析是最高效的,但是也有 4 重庆邮电大学硕士论文第二章系统设计要求和整体构架 着成本高、部署不灵活,可移植性差等缺点。本系统采用的是成本低、定制灵活 的纯软件系统,使用普通的p c 机完成上述任务。众所周知,纯软件系统有着致 命的缺陷,就是它需要和操作系统以及系统中其他应用程序共享系统中的所有软 硬件资源,难免会出现系统资源不够用的情况。那么对纯软件系统进行性能优化 显得尤为重要。 在目前企业常使用的软件系统中,单纯就流量查看功能,s n i f f e r 网络分析仪 的性能相当优秀。我们做过下面测试:开启s n i f f e rd a s h b o a r d 功能对千兆网络的 整体流量进行监控,在平均2 0 0 m b p s 的流量下,s n i f f e r 能够正常运行2 个月而 不出现故障,而内存占用大约9 0 m b 。不过这仅仅是开启一项功能的结果,如果 附加更多的功能,比如保存f t p 文件,回放h r r p 访问过程,s n i f f e r 是否还是 具有如此优秀的性能,由于s n i f f e r 并不提供这些功能,我们无法验证。 本系统设计要求能够在保证性能的前提下,提供更多的功能选项。因此,我 们使用了多线程、数据包预过滤、反馈机制、分流派发、多级缓冲、优先级定义、 插件链式结构等多种方法,来获取高效的性能。但是高性能不是绝对的,而是相 对的,很明显,纯软件系统无论如何是无法超过硬件实现的系统的。 2 1 3 功能可扩充性 本系统将功能模块组织在插件链式结构中,来实现功能可扩充性虽然目前 一款开源软件e t h e r e a l 同样采用了插件的方式来进行功能模块的组织,但是其协 议解析的功能有缺陷,并且在支持用户自定义功能方面也存在不足比如,用户 需要指定e t h e r e a l 保存建立于端1 31 2 0 0 上的f l p 服务会话的所有传输的文件,这 项功能e t h e r e a l 很难办到,即使通过插件的方式进行2 次开发 2 。1 4 其他要求 实际情况中,网络监控系统有以下4 种常见的部署情况: 1 h u b 环境,见图2 1 。 图2 1 删b 环境 5 图2 2 s w i t c h 环境 重庆邮电大学硕士论文第二章系统设计要求和整体构集 2 s w r r c h 环境,见图2 2 。 3 h u b - b s w i t c h 环境,见图2 3 。 一一一国 晖慧黧苎幽l鳓旗凇濯熬 一l 1鳓囝 酋蜜磨子同鬯j , 图2 3h u b + s w i t c h 环境 4 部署于网关,见图2 4 。 图2 4 部署于网关 本系统支持以上四种部署情况。 本系统还具有良好的可移植性。目前能够运行于w i n d o w sh i t 系列和 l i n u x u n i x 系统,完全支持3 2 位系统,支持“位l i n u x 。 本系统的性价比也是比较高的。由于使用了普通的p c 机,极大的降低了实 际产品的成本。 2 2 系统整体构架 作为一个完整的系统,本系统的整体构架如下图2 5 所示。整个系统研究了 以下两个问题: 网络数据包的捕获 ( 无特殊说明,以下简称数据包捕获) 网络数据包的分析与处理 ( 无特殊说明,以下简称数据包分析) 图2 5 系统整体构架 6 重庆邮电大学硕士论文第二章系统设计要求和整体构架 如图2 5 所示,本系统由如下几个部分组成: 1 预过滤模块。预过滤模块封装数据包的捕获和过滤过程。( 1 ) 本模块屏 蔽具体的捕包操作和包来源。图中显示数据包可能来自网络也可能来自文件。( 2 ) 对数据包进行预过滤,使得紧随其后的各个模块所获取的数据包绝对不包含无用 的信息。( 3 ) 同时,本模块还提供了反馈机制,通过这种通信方式,应用过滤器 可以通知本模块对其请求做出响应。( 4 ) 为了与缓冲中心进行数据交换,本模块 还对数据包进行优先级定义和分流派发。 2 。缓冲中心。缓冲中心是整个系统的中心,为整个系统提供良好的缓冲机 制。缓冲中心包括l ( 多) 个3 级缓冲结构缓冲的采用使用系统能够在高速流量 下保持良好的性能,兼顾了系统响应速度和高流量负荷的双重要求。缓冲结构使 用两种缓冲方式,一是内存中的环形缓冲,另一个是硬盘中的文件缓冲。数据包 优先级标识使得缓冲中心能够对包进行适当处理,即紧迫的数据立即处理,不重 要的数据延迟处理。整个系统不会出现性能随流量的进行大幅度波动的情况。 3 应用处理模块是整个系统的数据分析和处理部分,即功能实现部分,所 有的数据都会被最终发往本模块进行处理。本模块中各个应用过滤器,即具体功 能实现,采用插件的方式编写,并且组织成链式的结构,需要时挂载,不需要时 卸载特别的,本模块还提供与预过滤模块进行通信的机制,能够动态的改变预 过滤模块的某些特征。应用过滤器已有实现中除了按应用层协议进行数据分析+ ? 外,还实现了网络连接和流量统计分类功能。更方便的是,本模块的结构设计可 以保证用户完全按照自己的需要来进行功能开发,并且动态加载到本系统中。 如图2 5 所示,网络数据包在整个系统中的流动过程是:预过滤模块专缓冲 中心专应用处理模块。 2 3 系统测试环境 测试对本系统来说是极其重要的一个环节。目前,对千兆级网络环境中数据 包捕获和分析性能进行测试的资料比较少,尤其是对一个完整系统的测试。一些 已经实现了的比较优秀的系统,比如s n i f f e r ,由于商业机密等原因,我们无法知 晓其实现原理。我们希望开发拥有自主知识产权的系统,系统中所有的方案设计 和性能改进都必须通过测试来进行验证,测试通过了,就证明该方案可行 如不加特殊说明,以下所有的测试都在重庆邮电大学网络中心机房进行,平 均网络流量大于3 0 0 m b s ,峰值在7 0 0 m b s - - 8 0 0 m b s 之间。 由于数据包捕获在整个系统中处于最基础的地位,而且本系统又是采用 l i b p c a p 函数库的纯软件系统,所以有必要对l i b p c a p 的捕包性能进行测试。如果 事实证明l i b p c a p 在千兆环境中无法胜任单纯捕包的工作,那么基于此所做的其 重庆邮电大学硕士论文第二章系统设计要求和整体构架 他工作都是没有任何意义的 测试环境如下表: 表2 1 测试环境 测试机器配置 网络环境测试程序测试结果 1 i n t e l3 o g 超线程 c a p f l o w e x e ,具有如 c p u ( 关闭超线程功 下特征: 能1 l 。单线程捕包,不拷c p u 占用3 - 5 , 2 1 g bd d r 4 0 0平均流量 贝数据包到应用程测试期间,网络流 3 s a r a8 0 g 硬盘4 0 0 m b s 序空间量峰值曾达到 4 i n t d8 2 5 4 0 8 2 5 4 1 2 过滤规则为空,即7 6 3 m b s 千兆网卡 捕获所有数据包 5 r e d h a t9 0l i a a x ( 内 3 带流量统计功能 核版本2 4 2 0 8 ) , 测试结果表明:在只进行单纯捕包和流量统计的情况下,基于l i b p c a p 开发 的程序是能够正常工作在千兆流量环境下的,即h b r c a p 能够胜任千兆流量下的 捕包工作。 。 3 重庆邮电大学硕士论文 第三章网络数据包捕获与预过滤 第三章网络数据包捕获与预过滤 对网络数据包进行捕获是所有需要进行网络数据采集的系统都必须面对的 问题。由于千兆网络和百兆网络的巨大差别,很多在百兆级网络运行良好的系统, 比如s n o r t ,在千兆级网络中,性能大打折扣。原因是大多数系统的数据包捕获 和处理基本处于单一的顺序处理过程中,数据包捕获和分析之间相互抢占资源。 类似的系统还有t c p f l o w 等。本系统和这两个系统一样,都基于l i b p c a p 开发,但 是采用了多线程、预过滤、缓冲、分流派发、数据包优先级标识等技术,有效的 避免了类似的问题。 3 1 功能模块处理逻辑 预过滤模块缓冲中心 处理模块 处理模块 图3 1 功能模块处理逻辑 如图3 1 所示,来自网络或者文件中的数据包首先进入预过滤模块,经过预 过滤处理器的过滤和格式转换,然后通过分流派发器,被派发到缓冲中心的一个 缓冲结构中。在缓冲结构中,数据或被存储在环形缓冲中,或被存储在文件缓冲 中。经过缓冲中心后,数据被发往应用处理模块在上述过程中预过滤处理器使 用的过滤规则以及分流派发器使用的h a s h 表由过滤规则中心生成和更新。 本模块包括2 大部分: 预过滤模块。包括预过滤规则中心、预过滤处理器和分流派发器,主要 进行数据包的捕获、预过滤、分流派发和优先级别标识。 缓冲中心。包括多个缓冲结构;每个结构包括2 种类型缓冲,即环形缓 冲和文件缓冲,主要对数据包进行缓存 9 重庆邮电大学硕士论文第三章网络数据包捕获与预过滤 在本模块的设计和实现中,使用了如下方法:预过滤、反馈、分流派发、缓 冲、数据包优先级别标识。 3 2 设计方案选择 3 2 1 平台系统和开发库的选择 基于国内的现状和大多数用户的操作习惯,本系统设计之初就选择w i n d o w s n t 系列操作系统和内核版本为2 4 2 0 8 的r e dh a t9 0l i n u x 操作系统。 选择w i n d o w sn t 系列操作系统的理由是: 可靠性高。w i n d o w sn t 系列操作系统,特别是w i n d o w s2 0 0 0 p 陀0 0 3 作为新一代的网络操作系统,无论是性能还是可靠性都比以前的 w i n d o w s 系统有了质的飞跃。 操作方便。一般的用户对w i n d o w s 系列操作系统的操作都不会陌生。 部署广泛越来越多的使用w i n d o w sn t 系列的系统被用来作为网关、 代理等,方便本系统的部署。 选择r e d h a t l i n u x 操作系统的理由是: 低费用。相对其他操作系统,l i n u x 能够节省不少费用。 能方便移植到其他类u n i x 系统( 指s o l a r i s 、f r e e b s d 等) 1 i n u x 和这些 类u n i x 系统存在很大的相似,移植工作的难度相对较小 w i n d o w sn t 系列操作系统和r c x lh a tl i n u x 操作系统都具有自己的优势,同 时两者之间也有本质的区别,具体开发过程会遇到许多跟平台相关的问题。为减 少平台带来的差异,本系统实现中大量使用了一些成熟的跨平台的中间件和开发 库比如a c e 、u b p c a p 、w i n p c a p 、l i b n 就等。 3 。2 2 捕包方案的选择 捕包函数库l i b p c a p ,它是本系统在l i n u x 系统中的实现版本所采用的捕包方 案。1 9 9 2 年l a w r e n c 宅b e r k e l e yl a b 的s t e v e nm c c a n n c 和v a nj a e o b s o n 提出了包 过滤器的一种实现b p f ( b s dp a c k e tf i l t e r ) 。l i b p c a p 是一个基于b p f 的开放源码 的捕包函数库现有的大部分l i n u x 捕包系统都是基于这套函数库或者是在它的 基础上傲了一些针对性的修改。l i b p c a p 的另外一个优点是优秀的跨平台性,它 在几乎所有的主流l i n u x u n i x 系统下都能使用。在w i n d o w s 系统中,意大利人 f u l v i or i s s o 和l o f t sd c g i o a n n i 提出并实现了w i n p c a p 函数库,被称之为n p f 。 n p f 的主要思想就是源于b p f ,它的设计目标就是为了移植l i b p c a p 到w i n d o w s 。 1 0 重庆邮电大学硕士论文 第三章嘲络数据包捕获与预过滤 w i n p c a p 函数库同l i b p c a p 函数库具有一致的函数接口。 b p f ( n p f ) 采用了在内核中设置过滤器和缓冲区的方法,具有很好的包捕获性 能。b p f ( n p f ) 的过滤器采用无圈控制流图算法。这种算法根据协议的层次进行 比较,比如如果确定了协议使用的是p 则不必去比较a r p 了,它能够大大的提 高包过滤的效率,特别是在网络流量大的情况下。b p f ( n p f ) 的缓冲为非共享式 环形缓冲,特别适合大流量环境。缓冲被放置于内核,其好处是数据包经过滤后 被直接放在内核中,操作系统不必在内核态和应用态进行切换。 网络管理工具s n i f f e r 采用的是它自己开发的w i n d o w s 下的网络驱动,由于 商业机密,外界无法知晓它的具体实现机制。另外s n i f f e r 也不能够运行于 l i n u x u n i x ,可移植性较差。 根据本系统的设计要求,采用基于l i b p e a p 和w i n p e a p 函数库的捕包方案是最 合适的。 随着版本的更新,w i n p e a p 和l i b p e a p 函数库会修正一些b u g 或者改变一些 函数的实现,具体变化细节可以参考官方文档。本系统开发时所采用函数库版本 分别是u u p c a p0 8 1 和w i n p e a p3 0 3 3 预过滤技术 在分析预过滤之前,先看一个测试结果,如表3 1 所示。 表3 1 预测试结果 实际网络环境实际流量运行程序及参数c p u 占用比例 百兆网络6 0 - - 8 0 m b s c a p h o w c x ee t h l 约1 c a p f l o w c x ee t h lh t t o s c s s i o n 3 0 一4 0 千兆网络3 0 0 一7 0 0 m b ,s c a s h o w e x ee t h l 3 一5 c a p h o w e x ee t h lh t t p s c s s i o n 9 9 9 测试程序同2 3 节,不同的是现在加载了一个应用过滤器h t t p s e s s i o n ,用来 记录使用h t t p 上传下载的文件。整个程序是单线程工作。表3 1 的结果显示, 在单线程的情况下,加载了应用过滤器后,从百兆网络切换到千兆网络,程序的 性能变得极其糟糕。其根本原因是单线程的情况下,数据包捕获和分析互相抢占 资源,导致系统整体性能下降。根据该项测试的结果,我们可以从以下几个方面 来进行性能优化: 采用多线程方式。将捕包和分析分开,避免两者相互影响。 过滤无用的数据包。根据重庆邮电大学网络中心实地测试,h t l p 协议 数据包大约占4 0 ,能够过滤一半以上无用的数据,也能提升系统性能。 缓冲。缓冲是解决低效率的上层应用分析和底层高速捕包之间速度差异 重庆邮电大学硕士论文 第三章网络数据包捕获与预过滤 的方法之一。 本节和下一节将对这几个优化措施进行详细的描述。 3 3 1 过滤规则中心 过滤规则中心维护整个系统所有的过滤规则,它根据应用过滤模块对它的反 馈来动态的更新过滤规则。一方面,它向预过滤处理器提供i i b p c a p ( 、 r i 印c a p ) 可 编译的过滤规则;另方面,它向分流派发器提供h a s h 表,将数据包按照应用 层协议类型进行分类和派发,并且在派发的过程中对数据包进行优先级别标识。 过滤规则中心所有的规则按照特定的格式进行组织。第一种类型的过滤规则 是按p 分类,第二种类型的过滤规则按应用层协议类型( 传输层的端口号) 分 类两种规则的逻辑关系是“与”,其格式如下图: 图3 2 规则格式 上面两种类型的过滤规则均组织成链结构,每个链式结构又分成静态和动态 两种。静态链表中过滤规则从配置文件中读取,该规则由用户定义,在系统运行 之前就可以确定;而动态链表则用于接收应用过滤器的反馈,动态的进行调整。 有了以上基础,就可以生成预过滤处理器可使用的过滤规则。如果有这样的 规则f i l t e r r u l ei p r a n g et ( 1 0 1 0 1 0 4 0 ,1 0 1 0 1 0 4 0 ) 和f i l t e r r u l e _ p r o t o c o l p o r tt ( 8 0 。f pt c p , f ph t t p ,f se n a b l e d ) ,在e t h e r n e t 中,生成的规则如下:( s r c 1 0 1 0 1 0 4 0 ) a n d ( p o r t8 0 ) 。生成规则时需要考虑一个重要的问题,即具体的网络 环境。根据m a c 层协议字段,可以将常用的网络环境划分为3 种类型:e t h e r n e t 、 v l a n 和p p p o e 规则f i l t e r r u l et ( ,f pp 哪_ p r o m c o l p o r t 8 0t c p , f f se n a b l e d ) 在v l 柚和p p p o e 环境中生成的对应规则是:v l a na n d ( p o r t8 0 ) 和 1 2 重庆邮电大学硕士论文第三章网络数据包捕获与预过滤 e t h e r 一2 3 4 + e t h e r 2 2 :1 + 4 :2 】= g oo re t h e r - 2 3 2 + e t h e r 2 2 :1 4 :2 】= g o 根据过滤规则链中的f i l t e r r u l e _ p r o t o c o l p o r t _ t 类型规则,可以生成一张映射 表。分流派发器根据这张映射表,将数据包派发到不同的缓冲结构。映射表采用 h a s h 表,整个派发过程的时间复杂度为0 ( 1 ) 。 3 3 2 预过滤处理器 预过滤处理器接收过滤规则中心生成的过滤规则,将其提交给 l i b p c a p ( w i n p c a p ) 函数库中相应函数,同时开启捕包线程。整个过程是:首先 l i b p c a p ( w i n p c a p ) f l 数库开启网卡混杂模式或者读取特定格式文件( t c p d u m p 导出 文件格式) ,接着应用过滤规则过滤数据包,最后从预过滤处理器流出的数据包 都是可分流派发的,不包含应用过滤器不需要的任何无用数据。如何使用 l i b pc a :p c 而n p c 印) 函数库进行捕包,在其官方文档上有详细描述,这里不再赘述。 预过滤处理器进行两项优化:( 1 ) 屏蔽具体的网络环境,不再区分e t h e m e t 、 v l a n 和p p p o e 。( 2 ) 尽可能的过滤无用的数据包,仅仅保留应用处理模块所需 要的数据包。 3 3 3 分流派发器 分流派发器接收从预过滤处理器流出的数据包,根据h a s h 表,派发数据包 到缓冲中心中相应的缓冲结构中h a s h 表中每一项为二元组 ( f i l t e r r u l e _ _ p r o t o e o l p o r tt ,b l l = f f c r p o i n t c rt ) ,因此,不同应用层协议的数据包被 发往不同的缓冲结构。 分流派发器在对数据包按照应用层协议分类后,还对所有数据包进行优先级 别标识。这是因为,在所有的数据包中,有些是必须尽快处理的比如,当需要 实现一个切断h t t p 会话的功能时,带g e t 和p o s t 命令的请求是必须及时处 理的,如果对该包的处理延迟到该会话完成后,功能就无法实现。丽有些数据包 是可以延迟处理的,比如记录h t r p 上网网址,延迟一段时间处理数据并不对功 能产生影响。还有些数据是可以暂时一段时间内不用处理的,可以等待网络流量 较小、c p u 空闲时再进行处理。比如对于s m r p 这样的长时间会话行为,系统 为维护一个连接,需要许多额外的信息,需要占用大量的系统资源。在网络流量 很大时,可以先将其会话过程中所有数据包先保存到文件,待系统空闲时处理。 数据包优先级别定义如下图: 重庆邮电大学硕士论文 第三章网络数据包捕获与预过滤 图3 3 数据包优先级 对数据包进行优先级别标识的依据有: 用户定义的规则,比如用户可以指定要求优先监视f t p 会话,那么系统 会将f t p 数据包标识为p ph i g h 。 功能实现需要,比如用户需要切断目的端口号为1 0 0 0 0 的t c p 连接,那 么系统会自动将端1 2 号为1 0 0 0 0 的所有数据包标识为p p 3 4 缓冲技术 本系统中数据包捕获和分析采用的是多线程技术。相比核心态的数据包捕 获,用户态的数据包分析速度没有前者快,于是就需要一个良好的缓冲机制来进 行协调。本系统结合数据包的优先级,采用3 级缓冲机制,设计和实现了两种类 型的缓冲,一种是进程空间的环形缓冲,另外一种是硬盘中的文件缓冲。 3 4 1 生产者一消费者模型和竞争条件 本系统中,缓冲数据的写入由数据包捕获线程执行,缓冲数据的读出由数据 包分析和处理线程执行,我们使用生产者一消费者模型1 2 8 1 | 2 9 3 0 1 来描述它们之闻 的关系。其原理图如下: 缓冲区 程 圈3 4 生产者一消费者模型原理图 在实际实现中,内存缓冲区我们采用有限槽的环形缓冲来实现。下图是一个 拥有8 个槽的环形缓冲区示意图。缓冲区中有3 个数据条目,其中5 个槽是空闲 的变量b u f o u t 是下一个要删除的数据条目的缓冲槽的编号,变量b u f m 是下一 重庆邮电大学硕士论文第三章网络数据包捕获与预过滤 个要填充的缓冲槽的编号 b u f i n 6 b u f o u t 2 图3 , 5 环形缓冲区 数据包捕获线程捕获到数据包后,写数据到环形缓冲中,占用其中的一个槽, 同时将变量b u f i n 加l ;一旦缓冲中有数据,数据包分析线程读取环形缓冲中的 一个槽,同时将b u f o u t 加l 。在进行这种读写过程时,会有同步问题。根据m u r p h y 法则,可能会发生以下的情况。线程a ( 数据包分析线程) 读取到槽0 ,记录槽编 号s l o t i n d c - x 为0 。此时发生一次时钟中断,c p u 认为线程a 已运行了足够长的 时间,决定切换到进程b 线程( 数据包捕获线程) 。线程b 进行数据写入,同样占 用了编号为0 的槽,于是它将新的包数据存放到0 号槽。最后,线程a 从上次 中止的地方开始运行,它检查变量s l o t i n d e x ,发现值为0 ,于是读取o 号槽的数 据。此时进程线程a 发现不了任何错误,但是线程a 本来要读取的数据已经被 覆盖掉了类似这样的情况,即两个或者多个线程读写共享数据,最后的结果取 决于线程运行的精确时序,就称为竞争条件 3 0 l 。 在l i n u x 和w i n d o w s 这样的现代抢先式多任务操作系统中,线程的控制权由 操作系统强制转移,它们之间的执行次序是不可预期的当多个线程对共享的资 源进行访问时就可能造成竞争条件。虽然竞争条件发生的几率极小,但是现在的 c p u 至少以每秒几千万个指令的速度在运行,一天可能会发生多起竞争条件。 要避免竞争条件,我们在系统中提供同步机制,可以避免以下的错误。 消费者删除了一个生产者正在向缓冲区中插入的条目。 消费者删除了一个根本不存在的条目。 消费者删除了一个已经被删除了的条目。 没有空闲槽的时候,生产者向缓冲区中插入一个条目。 生产者改写了一个还没有被删除的条目。 重庆邮电大学硕士论文 第三章网络数据包捕获与预过滤 在同步中,需要两种时间尺度短期的、有限时长的资源占用和甚至某些 事件发生为止的无限时长的等待。本系统中,数据包捕获线程只有在有条目要插 入时( 即捕获到数据包时) ,并且缓冲区中有空闲槽可用时,才能获得缓冲区的 锁。它们只在插入期间拥有锁。同样,数据包分析线程只在删除条目时( 分析完 一个数据包需要删除对应的槽时) 锁定缓冲区。上面这两种行为是短期的。当缓 冲区中为空时,数据包分析线程应该一直等待到有数据为止。这是个等待到某事 件发生为止的无限时长的等待。与一般的生产者一消费者模型的区别是,本系统 中的数据包捕获线程不会在缓冲区满的时候一直等待,而是丢弃数据立即返回。 这个不同点体现在对缓冲区的读写算法设计中。 3 4 2 缓冲设计 本系统缓冲中心由多个3 级缓冲结构构成。缓冲结构的数量跟系统需要处理 的应用层协议数量、不同应用层协议数据包的合并规则、应用过滤器的链式结构 组成等有关系。 一个完整的缓冲结构由3 部分组成:2 个环形缓冲区和1 个文件缓冲。由一 个b u f f c r i n f ot 结构来维护这些缓冲信息。b u f f e r l n f ot 指定了存放优先级为 p ph i g h 的数据包的环形缓冲区、存放优先级为p p - n o r m a l 的数据包的环形 缓冲区、存放优先级为p pi d l e 的数据包的文件缓冲、唤醒标志和一些其他辅 助变量。下图描述了该结构。 图3 6b u f f e r l n f o _ t 结构 此结构中,缓冲指针p b u f f c rp ph i g h 指向存放优先级为p ph i g h 数据包 的缓冲;缓冲指针p b u f f c rp p n o r m a l 指向存放优先级为p p n o r m a l 数据 包的缓冲;缓冲指针p b u f f e r指向存放优先级为数据包的缓_ p p i d l e p p _ i d l e 冲;唤醒标志w a k e u p f l a g s 是一个标志或一组o r 连接起来的标志,用来测试特 定的唤醒位下表给出了几个主要标志取值和含义。 1 6 重庆邮电大学硕士论文 第三章同络数据包捕获与预过滤 表3 2 主要标志取值和含义 标志含义 w fh i g h 表示p b u f f e r p p h i g h 所指向的缓冲中有数据 、fn o r m a l表示p b u f f e r p p n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论