已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分 类 号 学号611810200671309学校代码 10487 密级 硕士学位论文安全网关中流量采集和监控代理的设计与实现学位申请人:学科专业:通信与信息系统指导教师:答辩日期:2011年01月10日A Dissertation Submitted in Partial Fulfillment of the Requirements独创性声明本人声明所呈交的学位论文是我个人在导师的指导下进行的研究工作及取得的研究成果。尽我所知,除文中已标明引用的内容外,本论文不包含任何其他人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。学位论文作者签名:日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密,在_年解密后适用本授权书。本论文属于 不保密 。(请在以上方框内打“”)学位论文作者签名: 指导教师签名:日期: 年 月 日 日期: 年 月 日摘 要随着网络架构的日益复杂和网络业务的爆炸式增长,网络计费和网络监控成了研究热点。网关特别是接入层网关是网络管理的重要实施点,必须为网络计费和网络监控提供更好的支持。网络计费通常根据流量来计费,网络监控限于资源一般是在监控流量的基础上开展流量控制,流量采集和监控代理为远程管理服务器提供了流量上报和实施流量监控的接口,因此是网关的重要组成部分。传统的网关在流量采集方面仅提供基于RMON/SNMP的粗粒度的流量统计,不能按业务统计,在流量监控方面仅支持远程登录后手动设置防火墙或流量控制规则,不方便集中式自动化监控。本文在研读国内外论文的基础上,参考CISCO和华为等设备厂商的解决方案,在基于嵌入式Linux平台的接入层安全网关中,实现了一个提供类NetFlow的细粒度的统计信息,并支持集中式自动化推送防火墙或流量控制规则的流量采集和监控代理,并将其大规模应用于实际网络环境中。本文首先分析了流量采集中不同捕包方式和数据导出格式的优缺点,并介绍了防火墙和流量控制规则等流量监控手段。然后重点介绍了为增强扩展性采用多进程的系统架构,为提高性能利用Netfilter在内核捕包,并利用共享内存和Netlink实现零拷贝的流量统计模块,为提高可靠性利用状态机实现事务回滚的流量监测模块。接着通过介绍关键的流程、数据结构和函数,给出了系统的实现框架。最后从功能、性能和稳定性等方面进行了测试,测试结果表明系统达到了预期需求。由于时间限制,流量监测模块功能还比较单一,不能根据流量采集结果自动实施合适的流量监控。关键词: 嵌入式网关; 网络计费; 网络监控; 流量采集; 流量监控; NetFlow; NetfilterAbstractWith the improving demand of informational family, the concept of Digital Home arises at a historic moment. As the core equipment of digital home, RG (Residential gateway) is not only the bridge between home networking and external networks, but also the key point of various services and applications of digital home. Home media gateway is one of the implementations of RG equipments based on MoIP(Multimedia over IP)technology. And streaming media server is the basic platform of various functions of home media sever. Moreover, streaming media server based on embedded Linux system has extra advantages of small volume, low cost and well stability. With this background, this thesis has studied the realization principles of the streaming media technologies, and designed a streaming media server based on ARM9 SoC(System on Chip)platform. The thesis firstly introduces the relevant protocols and key technologies about streaming media. Secondly, a software system framework of the server side is designed according to the application demand and the hardware foundation of the MoIP gateway. Thirdly, transmission module and signaling control module are designed orderly. After that, the interfaces and relationships of each module are discussed and process flows are described in detail. In the end, the testing process is inroduced. The result shows that the embedded streaming server meets the design objectives. The quality of media is beyond excellent and communicates well with client.The innovation of the thesis lays in selecting suitable model, standards and protocols according to the demand and application scenarios of MoIP gateway, implementing the sreaming media server and putting it into the pratical application. The design not only ensures the compression capability, but also decreases the coupling relationship between software and hardware, so as to make the system be with good transplantation and expandability. The design is easy to be implemented and makes full use of the hardware resources. Right now the module supports unicast only. So futher research and development can be made based on current achievements.Keywords: Embedded System; Residential Media Gateway; Streaming Media Server; MPEG-4; Unicast目 录摘 要IAbstractII目 录III图表索引V1绪论11.1 研究背景及意义11.2 课题来源及研究内容21.3 研究现状和发展趋势31.4 本文组织结构52相关理论与技术62.1 流量采集62.2 流量监控122.3 其他理论与技术123流量采集和监测代理的研究与设计143.1 功能需求(需带场景图)143.2 系统设计153.3 接口设计203.4 模块设计244流量采集和监控代理的实现与测试364.1 流量采集的实现364.2 流量监控的实现474.3 通信代理的实现554.4 测试与结果分析585总结与展望635.1 本文总结635.2 工作展望64致 谢65参考文献66图表索引图 1.1 数字家庭网关应用场景(错误!未定义书签。)图 2.1 流媒体系统组成(错误!未定义书签。)图 2.2 MPEG-2系统传输层结构(错误!未定义书签。)图 2.3 TCP客户机-服务器通信模型(错误!未定义书签。)图 2.4 XML文件解析流程(错误!未定义书签。)图 3.1 MoIP网关硬件整体框图(错误!未定义书签。)图 3.2 FFMpeg软件架构图(错误!未定义书签。)图 3.3 流媒体服务器软件架构图(错误!未定义书签。)图 3.4 传输模块架构图(错误!未定义书签。)图 3.5 传输模块的线程结构(错误!未定义书签。)图 3.6 改进的FFmpeg编码流程(错误!未定义书签。)图 3.7 Thread_Accept线程和SocketThreadProc线程流程(错误!未定义书签。)图 3.8 客户机与服务器消息交互图(错误!未定义书签。)图 3.9 Thread_Accept_thread线程和TCP_write_thread线程流程(错误!未定义书签。)图 3.10 控制信令模块架构图(错误!未定义书签。)图 3.11 processXMLSetting()调用关系(错误!未定义书签。)图 4.1流媒体服务器模块的测试网络拓扑(错误!未定义书签。)表 3.1传输模块使用协议及端口(错误!未定义书签。)表 3.2服务器/客户端信令交互(错误!未定义书签。)表 3.3反馈控制部分接口(错误!未定义书签。)表 4.1测试设备一览(错误!未定义书签。)表 4.2测试用例一(错误!未定义书签。)表 4.3测试用例二(错误!未定义书签。)表 4.4测试用例三(错误!未定义书签。)表 4.5测试用例四(错误!未定义书签。)VI1 绪论电子商务、网上证券交易、IPTV、远程教育和“三网合一”等的飞速发展,对电信运营商和服务提供商的网络管理提出了更高的要求。网络计费和网络监控作为网络管理的重要内容,自然受到了前所未有的重视。网关特别是接入层网关是网络管理的重要实施点,必须为网络计费和网络监控提供更好的支持。网络计费通常基于采集到的用户流量计费,网络监控限于网关资源不会还原分析用户的应用层数据,而只是在监控流量的基础上开展流量控制。因此,网关一般以流量采集和监控代理的形式,对外提供上报流量信息和实施流量监控的接口。流量分析和监控中心通过远程控制流量采集和监控代理,可以获取所有流经该网关的用户流量信息,在发现流量异常或流量隐患时,通过流量监控接口不仅可以获取网关的网络接口状态、路由转发表、防火墙或流量控制规则等网络信息来诊断异常,而且可以给网关推送防火墙或流量控制规则、软件补丁等以消除流量异常或流量隐患。事实上,Cisco、Juniper和华为等著名网络设备厂商在其交换机和路由器上提供了基于NetFlow和NetStream等的流量采集代理,并支持以远程登录等方式配置设备的防火墙或流量控制规则。本课题中的百兆企业级安全网关,是面向中小企业的集成多种应用与服务的安全性较高的接入层网关。流量采集和监控代理作为提高该网关的安全性,并支撑语音与视频服务计费的基础设施,在理论研究和技术实现上都有极强的意义和价值。1.1 研究背景及意义随着企业信息化的深度发展,企业与Internet的联系越来越密切。通过Internet发布和销售产品,提供客户服务,使用VPN远程办公,基于电话和视频会议开展远程谈判和协作,已成为绝大多数企业的运营关键。很明显,与Internet信息化相伴的一个难题是如何保证企业的信息安全和企业Intranet的持续运转。具体来说有这样一些难点:如何保证Intranet不被外部攻击,企业机密不被窃取;如何规范Intranet用户的上网行为,包括控制其上网流量,禁止其访问受限的站点和服务;如何保证企业的网站和信息服务少受攻击,即算受到攻击也不影响Intranet;如何保证驻外或出差员工通过Internet访问Intranet不会威胁企业的信息安全。解决这些问题的办法是采用集应用与安全于一体的安全网关接入Internet。一体化安全网关提供防火墙、虚拟服务、DMZ、VLAN、QoS、VPN、RMON/SNMP代理、流量采集和监控代理等功能让用户方便并且安全地接入Internet,并且能提供安全的信息发布和远程办公等服务。本课题中的百兆企业级安全网关就是一款这样的一体化网关,它应用在如图()所示的场景中。 应用与安全一体化网关中,防火墙用来防止内网受到外网攻击,并禁止内网用户访问有风险的站点和服务;虚拟服务和DMZ可以将网站、媒体和文件等服务器组成DMZ服务器域,域内的服务器可正常对外提供服务,但不能与内网直接通信,因此域内服务器即算被黑客控制也不会影响到内网;VLAN将不同部门划到不同的虚拟局域网,使得部门内部的通信对其他部门不可见;QoS控制内网用户的上网流量,通过给不同权限的用户设定不同的流量,能实现内网用户的区分服务;VPN提供安全的远程办公;RMON/SNMP用来监控网内MAC层单播包数、多播包数、广播包数、CRC校验错误包数等MAC层信息;流量采集和监控代理用来获取内网用户访问Internet的流量信息,并提供远程获取网关网络状态、配置防火墙或流量控制规则、升级网关软件等功能。流量采集和监控代理是一体化网关的重要模块,正是因为这个模块,普通用户可基于流量和其他网络信息对网络实施监控,电信运营商和服务提供商还可以方便地根据流量来计费。因此,研究和实现流量采集和监控具有很高的理论和实用价值。1.2 课题来源及研究内容本课题设计与实现的流量采集和监控代理是湖北省智能互联网重点实验室与某公司的合作项目百兆企业级安全网关下的子项目。百兆企业级安全网关是一个速率达100Mbps,集成多种网络应用和安全机制的面向中小企业的接入层网关。该网关应用在图()所示的网络环境中,除提供普通路由器的功能外,还特别提供了双WAN口链路级或网卡级负载均衡、防火墙、虚拟服务、DMZ、VLAN、VPN、QoS、RMON代理、类NetFlow流量采集、流量监控等功能。流量采集和监控代理用来实现类NetFlow的流量采集和流量监控。流量采集实现类NetFlow的功能,采集流经网关的网络包的二层到四层的信息,包括网络流的源IP、目的IP、运输层的源端口、运输层的目的端口、第三层协议类型、IP层TOS字节、流入逻辑端口(即逻辑网口)。流量监控提供远程获取网络状态、配置防火墙或流量控制规则、远程升级软件等功能。从上述实现目标,不难得出本课题的研究内容是研究流量采集和流量监控的相关理论和技术,在了解流量采集和流量监控的通常流程的基础上,熟悉链路层Socket、Libpcap、Netfilter钩子函数等捕包方法,重点研究NetFlow、sFlow、NetStream等流量采集方式,了解Linux下Iptables防火墙和TC流量控制,参考Cisco、Juniper等厂商的实现,在以MPC8377为处理器、Linux为操作系统的嵌入式安全网关上设计并实现出可用性强、可靠性好、性能高、扩展性强的流量采集和监控代理。1.3 研究现状和发展趋势流量采集有三个关键的研究点:捕获数据包,流量处理和输出提取数据包信息并加以处理后按特定协议输出流量信息,呈现和分析流量信息。流量监控有两个关键的研究点:判断流量异常,避免和消除流量异常。研究者们或改进某个研究点以增强整体的功能和性能,或修正已有的解决方案以适应特定的设备和环境,或从应用和用户体验出发实现通用性强、易用性好的流量分析和监控工具。捕获数据包方面,聂朝恩等利用Netfilter的钩子函数在内核捕获数据包以提高捕包效率;王佰玲等修改网卡驱动将数据包直接DMA到用户空间,这种零拷贝技术减少了一次拷贝,避免了数据包在内核协议栈的处理,较大幅度地提升了捕包性能。流量处理和输出,应遵循一定的规范,通常采用RMON或Flow协议。基于RMON的流量采集,一般首先用某种方式采集到MIB-II和RMON等MIB(管理信息库)所规定的流量信息,然后通过SNMP协议发送给管理服务器处理。马远东等设计并实现了一个RMON流量采集代理,用来管理电力信息网。李信满部署了多个RMON流量采集代理,并以此作为其分布式网络协议分析系统的数据源。李馥娟重点研究了基于RMON1和RMON2的网络管理。RMON1和MIB-II只能采集到1-2层的信息,RMON2虽然可以采集到1-7层的信息,但实现复杂度大,一般需要专用的硬件支持,又考虑到RMON代理使用的SNMP协议基于轮询机制且报文格式采用名称/值方式不能高效地传输流量信息,因此在需要2层以上流量信息的场合,一般使用Flow协议。目前使用最多的Flow协议是NetFlow、sFlow和NetStream,其中NetStream与NetFlow非常相似。传统的NetFlow只支持2-4层信息,最新的NetFlow v9中已经能部分地支持第7层信息。sFlow支持2-7层信息,视网络流为无状态,从而无需像NetFlow一样判断一个TCP流何时开始何时结束,所以实现复杂度低,一般以ASIC硬件的方式实现。秦刚等研究了NetFlow在网络计费中的应用,按NetFlow流量采集代理与NetFlow流量分析处理中心是否放同一台服务器上给出了集中式计费方案和分布式计费方案。王华分析了流量处理中的关键技术,重点介绍了流量聚合时采用的散列技术,以及几种TOPN排序的优劣。张红林等详细介绍了基于sFlow分析网络流量的架构,并以实例的方式介绍了如何根据经sFlow抽样的流量信息近似地计算出实际流量。李彭军等首先用sFlow准实时地采集校园网内数据包,然后分析各机器的流量来定位已感染蠕虫病毒的机器。不少研究者对RMON、NetFlow和sFlow的优缺点和适用场合进行了深入的研究。田东等在阐述NetFlow和RMON2的原理的基础上,分析了两者各自的优缺点。杨策等从CPU、内存、网络IO开销,以及实时采集、生成流量矩阵等功能比较了RMON、NetFlow和sFlow,最后指出了这三者的适用场合。为提高吞吐,采集代理不会对网络数据包全盘采集而是抽样采集一部分,所以如何抽样,以及如何根据抽样得到的流量信息快速、准确地计算出实际的流量信息成了研究热点。王洪波等指出NetFlow的固定抽样率的抽样机制缺乏自适应性,提出了一种自适应抽样方法。汤小波等分析了网络流的持续时间对抽样采集的影响,基于随机过程和统计学理论给出了一个实时计算网络流量的模型。呈现和分析流量方面,目前业界已经有了丰富的工具,如MRTG支持SNMP可用来分析RMON采集代理的流量,FlowScan和NfSen是类Unix平台下流行的NetFlow分析工具,以web页面的方式支持多种格式的流量信息图表,Scrutinizer NetFlow & sFlow Analyzer则是一款可同时分析NetFlow和sFlow的工具,既有Linux版本也有Windows版本。判断流量异常,避免和消除异常是流量监控的研究热点。黄艳等根据DoS(拒绝服务)攻击、蠕虫病毒等的特征来判断路由器的NetFlow流量信息是否异常,如果异常则通过修改ACL(访问控制列表)、切断物理连接等方法消除异常,实现了一个轻量级的基于NetFlow的入侵检测系统。杨嵘等利用分布分析、频度分析等方法首先提取出当前NetFlow流量信息的网络行为分布特征和频度特征,然后比较这些特征与网络正常时的特征,从而发现并定位出当前的网络攻击。1.4 本文组织结构本文在研究流量采集和监控的相关理论和技术的基础上,参考国内外学术界和产业界的方法和实现,针对以MPC8377为处理器、Linux为操作系统的嵌入式安全网关的应用场景和需求,设计并实现了一个可用性强、可靠性好、性能高、扩展性强的流量采集和监控代理。本文共分为五章,具体结构如下。第一章,绪论。首先介绍了流量采集和监控在网络计费和网络监控中的重要作用,明确了本课题的研究背景和意义,接着介绍了本课题的来源于研究内容,然后介绍了本课题的研究点在国内外的研究现状和发展趋势,最后给出了本文的组织结构。第二章,相关理论与技术。首先给出流量采集的定义、架构和分类,重点探讨架构中用到的捕包技术、数据采集和导出标准。然后介绍了防火墙和流量控制规则这两种在网关中最常用的流量监控技术。最后简要介绍实现系统时用到的Socket网络编程、IPC(进程间通信)机制、内核与用户空间通信机制和加密技术。第三章,流量采集和监控代理的研究与设计。首先简要介绍了嵌入式安全网关,并描述了流量采集和监控代理的功能需求。然后针对需求和应用环境,探讨了系统的概要设计,明确了系统的各功能模块、各功能模块间的接口以及系统对外提供的接口。最后在模块设计部分给出了各模块的架构和设计思路。第四章,流量采集和监控代理的实现与测试。首先介绍了各模块实现过程中关键的数据结构、接口函数和流程,重点介绍了对功能、性能、可扩展性有重要影响的组件的实现细节。然后从功能、性能和稳定性三个方面对系统进行了充分的测试,并对测试结果进行了分析。第五章,总结与展望。总结了本文的工作和成果,指出了本文的不足,明确了改进目标,给出了可能的改进方案。2 相关理论与技术流量采集和监控代理是嵌入式安全网关的核心模块之一,涉及到很多理论和技术。本章首先在给出流量采集的定义、分类和架构的基础上,从捕包技术、数据采集和导出标准两方面探讨了流量采集涉及到的关键技术。然后以防火墙和流量控制规则为例,介绍了网关中常用的流量监控技术。最后简介系统实现时用到的其他技术,包括Socket网络编程、IPC(进程间通信)机制、内核与用户空间通信机制和加密技术。2.1 流量采集2.1.1 定义、架构和分类流量采集就是采集网络数据包中位于OSI各层次的流量信息,如第二层的MAC地址、第三层的IP地址、TOS,第四层的运输层端口,以及更上层次的有效载荷等。如上述定义所述,流量采集可以根据需要采集不同粒度的流量信息,粗到只记录每个网络接口的收发包数和字节数,细到除记录链路层到运输层的有效字段外还包含全部应用层数据甚至原始的数据包。这些不同粒度的流量信息是网络诊断、分析、还原、计费和监控等各类工具的数据源,如Snort和Wireshark等支持应用层协议的工具以采集到的原始数据包为数据源,而Tcpdump、Iptables防火墙等只需分析链路层到运输层的包头即可,对于流量计费类的软件来说,按运输层端口统计字节数和包数就足够,但对于流量分析软件来说,往往需要有按五元组统计的字节数和包数。如前所述,Snort和Wireshark等都以原始数据包为数据源,Libpcap捕包库可看成是它们的流量采集代理,而Snort等本身可看成流量分析和应用中心。在这个例子中,Libpcap这个流量采集代理仅需捕获原始的数据包而无需对数据包进行其他加工处理,并且其与Snort这个流量分析和应用中心位于同一机器上。而流量计费类软件中的流量采集代理则要做复杂得多的工作,在捕获到数据包的基础上,还需按运输层端口或五元组统计字节数和包数,并且其与流量计费类软件在不同机器上,两者之间一般通过网络通信。尽管流量采集代理的工作复杂度有差别,并且与基于它们的分析和应用中心的通信方式也有差异,还是可以用图()来概括流量采集代理及基于其的应用系统(如分析、监控和还原等)的架构。如图()所示,一个基于流量采集的应用系统由流量采集代理、流量聚合和分析服务器、应用服务器三部分组成。流量采集代理采集到的只是某一小段时间内的信息,流量聚合和分析服务器负责将这些信息按日、月、年或按源IP、目的IP等聚合,并将聚合信息存入数据库,流量计费和流量监控等应用系统直接从数据库中提取出流量信息进行后续处理。这三者间没有明显的界限,某个部分负责的工作多一点,另一部分负责的工作则少一点,对于特殊的如Snort和Wireshark等直接将流量聚合、分析与应用层处理做在一起。三者间的通信也不一定如图()所示,如Snort和Wireshark中,流量采集代理与其他两部分部署在同一机器上,无需通过网络通信。如前所述,流量采集有两个重要工作:一是怎样捕获到数据包,另外是如何加工处理数据包,具体是采集数据包中何种信息,并将这些信息组织成何种格式以何种方式发送到流量聚合和分析服务器。前者涉及到捕包技术,后者涉及到数据采集和导出标准,流量采集按这两种技术可分成多类。主动采集和被动采集。采集时如果向被采集网络注入探测包则是主动采集,否则是被动采集。主动采集意味着像用ping测往返时延一样,根据探测包的特征表现来推断整个网络的情况,这样只能粗略地估算出网络整体流量的大小,因此流量采集一般采用被动采集。串接采集和旁路采集。采集代理如果直接插入被采集网络的正常处理流程中则是串接采集,否则是旁路采集。串接采集中,被采集网络包必须经采集代理处理后才能继续后续流程,所以采集性能必须很高才不会影响被采集网络的正常工作,也正因为采集代理可直接处理被采集网络包,所以Iptables防火墙等利用串接采集来控制被采集网络。被动采集时,往往利用旁路器或镜像口从被采集网络中备份出包拷贝,处理的是包拷贝所以不会影响原网络。在共享式网络中,如集线器组成的以太网络中,被动采集只需开启网卡的混杂模式,其它情况下需要前述的旁路器或镜像口等硬件支持。RMON采集、NetFlow采集和sFlow采集。按RMON、NetFlow和sFlow技术采集、组织和发送流量信息的采集方式分别称为RMON采集、NetFlow采集和sFlow采集。按RMON等协议采集、组织和发送流量信息,是指采集协议里规定的流量信息,然后将这些流量信息封装成符合协议规范的包,最后按协议规定的通信流程将包发送给流量聚合和分析服务器。RMON、NetFlow和sFlow技术在2.1.3中介绍。硬件采集和软件采集。如果采集逻辑简单,但要求吞吐量高,则可用硬件实现流量采集,例如RMON2和sFlow一般都以硬件实现。相反,如果采集逻辑复杂,且对吞吐量无特殊要求,则可用软件实现,例如NetFlow中需聚合流,硬件难以实现所以用软件实现。硬件采集性能高,但灵活性差,软件采集性能略低,但灵活性和可维护性强。2.1.2 常用捕包技术Linux下常用的捕包方式有三种方法。第一种方法是利用协议栈为用户空间提供的接口,如链路层Socket捕包;第二种方法是利用成熟的第三方库,如Libpcap捕包;第三种方法是利用协议栈在内核提供的接口,如Netfilter内核捕包。1. 链路层Socket捕包Linux链路层Socket捕包有两套接口,新接口使用PF_PACKET协议族接口,旧接口使用PF_INET协议族接口,但指定协议类型为SOCK_PACKET。这两套接口与通常的UDP和TCP编程共享一套接口函数,只是在接口参数上略有不同,图()是示例代码。fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ARP); /* 新接口 */fd = socket(PF_INET, SOCK_PACKET, htons(ETH_P_ARP); /* 旧接口,不推荐使用 */sll.sll_family = AF_PACKET; /* struct sockaddr_ll 地址 */sll.sll_ifindex = 0; /* 指定网络接口 */sll.sll_protocol = htons(ETH_P_ARP); /* 指定协议 */bind(fd, (struct sockaddr *)&sll, sizeof(sll); /* 绑定套接字描述符到网络接口 */图()的代码体现了链路层Socket捕包的几个特性。首先,链路层Socket提供了简单的内核过滤功能,socket函数的第三个参数ETH_P_XX用来指定感兴趣的协议包(第三层协议),如ETH_P_ARP表示仅处理以太网ARP包,ETH_P_ALL表示处理所有以太网包。其次,链路层Socket提供了绑定套接字到网络接口和协议的功能,这个特性只有新接口才提供,利用这个特性,只有来自绑定的网络接口并且是绑定的协议的包才会被投递到接收进程。最后,链路层Socket中使用sockaddr_ll结构体地址,该地址视调用上下文而可能包含了网络接口、包的第三层协议类型、包类型(单播、多播和广播)等信息。2. Libpcap库捕包Libpcap是一个使用广泛的捕包库,可以工作在绝大多数类Unix平台上,Windows上的版本较Winpcap。Tcpdump、Snort和Wireshark等优秀的网络工具都使用Libpcap捕获数据包。相比链路层Socket,使用Libpcap有如下三个优势。简化了捕包流程。最简单的捕包流程只有两步,首先调用pcap_open_live打开网络设备(网络接口),获取到一个捕获句柄,然后对捕获句柄调用pcap_loop或pcap_next等函数注册一个处理包的回调函数,最后每当有指定数目的包需要处理时,Libpcap会调用之前注册的回调函数,之后就可以在回调函数里做任何包处理了。此外,使用pcap_perror和pcap_strerror系列错误处理函数可以简化并规范了错误处理流程。跨平台的编程接口,增强了程序的可移植性。如前所述Libpcap可工作在Linux、FreeBSD和Solaris等大部分类Unix系统上,并且有Windows下版本Winpcap。Libpcap统一的编程接口大幅降低了移植和维护难度,这也是Tcpdump等大量软件使用它的一个重要原因。提供了强大的BPF过滤能力。BPF(Berkeley Packet Filter)是类Unix系统上用来捕获链路层数据包的原始套接字接口,支持强大的内核过滤。对于Linux来说,BPF指的是内核提供的BPF过滤。BPF过滤模式下,不感兴趣的包是在内核而不是用户空间被丢弃,大大节省了开销。Linux链路层Socket虽然也支持ETH_P_XX等简单的内核过滤,但对于复杂的多重条件过滤无能为力。与此相反,调用Libpcap的pcap_compile和pcap_setfilter可将复杂如“src host 192.168.0.27 and tcp and dest port 80”的语句编译成BPF虚拟机器码并作用在BPF过滤器上,这样内核就只保留源IP地址为192.168.0.27且目的端口是TCP的80端口的数据包,而丢弃其它数据包。3. Netfilter内核捕包Netfilter内核捕包是利用Netfilter Hook(钩子)机制在钩子函数里捕获数据包的技术。Netfilter是Linux内核中用来实现防火墙和NAT转换的一套框架,它通过在内核协议栈中安插5个钩子点来实现对网络包的截取和处理。使用nf_register_hook可以在某个钩子点注册钩子函数,当网络数据包经过某个钩子点时,内核将调用这个钩子点处的所有钩子函数来处理数据包(一个钩子点可注册多个钩子函数,多个钩子函数组织成链表形式)。在钩子函数中可以做任何处理包括提取包的流量信息甚至丢弃、拒绝或修改数据包,如果所有钩子函数都处理完毕后,数据包还需要投递就继续沿协议栈进行后续操作。5个钩子点都设置在IP层,具体位置如图()所示。如图()所示,5个钩子点处理的数据包类型和处理时机,如表()所示。钩子点处理的数据包类型处理时机NF_IP_PRE_ROUTING所有进入IP层的数据包刚进入IP层,还未作路由查找NF_IP_FORWARD所有要转发的数据包经路由查找,马上要转发到另一网络接口NF_IP_POST_ROUTING所有发出IP层的数据包马上要发出IP层,有两个来源:本地NF_IP_LOCAL_IN所有发往本地数据包经路由查找,马上要发往本地NF_IP_LOCAL_OUT所有本地发出的数据包刚发入IP层,还未作路由查找Netfilter内核捕包是串接捕包方式,为不影响协议栈工作,必须保证钩子函数里的捕包处理速度快且可靠性高。另一方面,在内核捕包并提取包信息相比于前述的两种用户空间捕包方式,不用拷贝原始网络包到用户空间而只需将数据规模小得多的包信息拷贝到用户空间,并且如果让内核与用户空间共享存放包信息的内存,则不用任何拷贝(即零拷贝)就可实现包信息的提取,这大幅提高了捕包的性能。2.1.3 采集和导出标准采集和导出标准,用来规范采集数据包中何种信息,用何种格式组织这些信息,用何种方式将组织好的信息发送给流量聚合和分析服务器。如前所述,RMON、NetFlow和sFlow技术是三种最常用的流量采集和导出标准。此外,NetFlow的变种NetStream也用得较多。1. RMON技术RMON是一个远程管理MIB(管理信息库)标准,有RMON1和RMON2两个版本。基于RMON的流量采集,一般先采集MIB-II和RMON等MIB所规定的流量信息,然后通过SNMP协议将MIB流量信息发送给管理服务器处理。RMON1用来监视OSI第一层和第二层的以太网或令牌网信息,它提供了统计量(Statistics)、历史(History)、告警(Alarm)、事件(Event)、令牌环网(Token Ring)等十个组,限于资源RMON代理一般只实现统计量、历史、告警和事件等四个组。统计组提供了实时的被监控网络的统计信息,包括数据字节数、数据包数、广播包数、多播包数、CRC校验错误包数、过小包数、过大包数、多个包长区间内的包数(如64字节以下的包数、64128字节的包数等);历史组提供多个统计组历史数据;告警组用来设定当某统计值超过或低于某门限时,触发报警事件;事件组用来向管理服务器报警由告警组触发的报警事件,并且会记录包括事件类型、事件最后一次发送的时间等信息的日志。相比传统的MIB-II中的Interface组,这四个组已经提供了更详细的MAC层及MAC层以下的信息。RMON2添加了网络层到应用层的监控规范。它添加了包括Network-Layer Host、Network-Layer Matrix、Application-Layer Host和Application-Layer Matrix在内的10个组。Network-Layer Host根据IP地址统计网络层流量,Network-Layer Matrix根据源IP和目的IP对来统计网络层流量,Application-Layer Host根据IP地址和应用层协议来统计流量,Application-Layer Matrix根据源IP、目的IP和应用层协议来统计。由此可见,RMON2已能提供OSI第一层至第7层的信息,但其实现复杂度大,一般需要专用硬件支持。RMON的问题在于,首先SNMP协议通过轮询获取MIB信息加大了服务器的负载,使得单台服务器只能管理较少的RMON代理,其次,SNMP报文格式为了通用采用名称/值对的方式来编码MIB信息,导致包开销过大而不能高效地传输流量信息,再者RMON1只能提供二层及二层以下的粗粒度的流量信息,RMON2虽然可提供第一层至第七层的流量信息,但实现复杂,所以在需要采集第二层以上流量信息的场合,一般采用Flow技术。常用的Flow技术有NetFlow、sFlow和NetStream,分别介绍如下。2. NetFlow技术又考虑到RMON代理使用的SNMP协议基于轮询机制且报文格式采用名称/值方式不能高效地传输流量信息,因此在需要2层以上流量信息的场合,一般使用Flow协议。目前使用最多的Flow协议是NetFlow、sFlow和NetStream,其中NetStream与NetFlow非常相似。传统的NetFlow只支持2-4层信息,最新的NetFlow v9中已经能部分地支持第7层信息。sFlow支持2-7层信息,视网络流为无状态,从而无需像NetFlow一样判断一个TCP流何时开始何时结束,所以实现复杂度低,一般以ASIC硬件的方式实现。秦刚等研究了NetFlow在网络计费中的应用,按NetFlow流量采集代理与NetFlow流量分析处理中心是否放同一台服务器上给出了集中式计费方案和分布式计费方案。王华分析了流量处理中的关键技术,重点介绍了流量聚合时采用的散列技术,以及几种TOPN排序的优劣。张红林等详细介绍了基于sFlow分析网络流量的架构,并以实例的方式介绍了如何根据经sFlow抽样的流量信息近似地计算出实际流量。李彭军等首先用sFlow准实时地采集校园网内数据包,然后分析各机器的流量来定位已感染蠕虫病毒的机器。采集数据包中何种信息,并将这些信息组织成何种格式以何种方式发送到流量聚合和分析服务器RMON采集、NetFlow采集和sFlow采集。按RMON、NetFlow和sFlow协议采集、组织和发送流量信息的采集方式分别称为RMON采集、NetFlow采集和sFlow采集。按RMON等协议采集、组织和发送流量信息,是指采集协议里规定的流量信息,然后将这些流量信息封装成符合协议规范的包,最后按协议规定的通信流程将包发送给流量聚合和分析服务器。RMON、NetFlow和sFlow协议在2.1.3中介绍。RMON/SNMP协议。Netflow和sFlow协议,Flow技术。私有协议。2.2 流量监控监测分为监视和简单的控制。监视基于采集到的流量,控制则是在流量异常时采取措施,如控制流量(包括TC)、设定防火墙规则等。2.3 其他理论与技术Socket网络编程,内核编程。IPC机制,内核与用户空间通信方式。安全和加密。对称加密、非对称加密和摘要。3 流量采集和监测代理的研究与设计Xxxxx3.1 功能需求(需带场景图)流量采集和监测代理是百兆企业安全网关的一个子系统。百兆企业安全网关是速率达100Mbps,支持网络过滤、多种网络数据采集方式、多种网络应用服务,安全性较高的面向中小企业的网关。该网关除具有普通路由器的功能外,还特别提供了防火墙、双WAN口链路级或网卡级负载均衡、虚拟服务、VPN、Qos、VLAN划分、类Netflow的流量采集、桥接或旁路式流量采集、流量监测、RMON代理、远程升级、硬复位等功能。百兆企业级安全网关采用MPC8377为处理器,Linux为操作系统,对外提供了三个交互接口。(1) web页面。web页面为设备用户提供管理和配置设备的功能,例如设置网络接口参数、防火墙规则、DDNS等。(2) RMON/SNMP远程管理。该接口支持RMON statistics、history、alarm和event等MIB组。(3) 远程后台私有管理。该接口是设备厂商预留的后台管理接口,流量采集和流量监测利用该接口与远程管理服务器通信。此外,该接口还提供了远程升级等功能。系统的总体目标是采集流经设备的网络流量供网络计费和网络异常诊断,提供监测接口供远程获取系统信息和控制系统。具体来说有如下需求(带层次需求图)1. 流量采集(1) 实现类NetFlow的功能,在指定周期内统计流经设备的网络数据包的二层到四层的信息,包括网络流的源IP、目的IP、运输层的源端口、运输层的目的端口、第三层协议类型、IP层TOS字节、流入流出的逻辑端口。(2) 在远程管理服务器的控制下,即时或周期统计网络流量信息,并将所有统计信息上传给远程管理服务器。统计周期等可由远程管理服务器设置。2. 流量监测(3) 在远程管理服务器的控制下,即时或周期探测设备到特定主机的通断性、网络性能和所经路由。探测周期、探测对象IP等参数可由远程管理服务器设置。(4) 提供接口供远程管理服务器,获取或设置网络接口状态、防火墙规则、流控规则等网络参数。远程管理服务器可以推送防火墙规则、流控规则、组件补丁或新组件到设备以应对流量异常。3. 公共需求(1) 通信协议要简洁、扩展性强。系统与远程管理服务器通信所用的协议包头开销要小,以降低网络开销;扩展性要强,使得协议新增命令字或字段时,通信程序的改动很小。(2) 为保证设备一直受控,要求通信足够隐蔽而不致于被防火墙屏蔽掉,并且能穿越NAT。(3) 为保证设备不被黑客劫持,通信要加密。(4) 性能高。系统运行在嵌入式Linux环境下,CPU和存储等资源要小,不能影响设备的其他功能。(5) 可靠性好。系统是厂商固化的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年气候变化对农业生产的可行性研究报告及总结分析
- 2025年绿色建筑设计与建造可行性研究报告及总结分析
- 2025年环保材料生产及应用项目可行性研究报告及总结分析
- 2025年数字化消费体验平台项目可行性研究报告及总结分析
- 2025年可再生资源再利用项目可行性研究报告及总结分析
- 矿山设备预售合同范本
- 退货补充协议合同范本
- 酒吧酒水提成合同范本
- 酒店运营管理合同范本
- 数据红利释放与数字经济价值研究
- 仓储管理招聘题库及答案
- 医院感染预防措施
- 景区物业服务特色方案可行性报告
- 2026年海南工商职业学院单招综合素质考试必刷测试卷及答案1套
- 专题12 记叙文阅读写人记事专项训练(解析版)
- 2025云南楚雄州元谋县国有资产投资管理有限公司及所属子公司合同制员工招聘13人笔试考试备考题库及答案解析
- (2025年版)儿童肺炎支原体肺炎诊疗指南解读
- 2025贵州茅台(集团)生态农业产业发展限公司招聘21人易考易错模拟试题(共500题)试卷后附参考答案
- 冬季防冻防烫伤指南
- 2025广东深圳市龙岗区国资国企系统面向全市集中选聘中层管理人员考试及考察笔试历年参考题库附带答案详解
- 2025年吉林事业单位招聘考试职业能力倾向测验试卷(石油化工)
评论
0/150
提交评论