优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

基于Linux的一种快速数据包捕获方法

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:
研究意义
随着网络流量的不断增长,对网络流量分析提出了新的挑战。在高速网络链路环境中,设计高效率的流量监测分析系统的一个关键点就在于如何线速捕获和分析所有的网络数据包。
传统的数据包捕获方案,不仅要为数据包动态的分配和释放缓存,更重要的是需要将数据包从操作系统的内核空间拷贝到用户空间,这些操作将产生大量的系统调用开销,耗费CPU资源,因此基于此种架构实现的流量监测分析系统很难适用于高速网络链路环境的监测需求。
基于内核的数据包捕获方法在网卡驱动收到数据包会直接把数据包存储在结构为SKBuffer的链表中,然后直接在内核处理SKbuffer中的数据包。因此基于内核的方法只需要一次拷贝(从网卡到内核空间),并且由于不需要把数据包送入用户空间,系统调用的开销大大减少。除了网卡发起的硬件中断外,基于内核的方法大大降低了其他几个相关部分(如内存访问、系统调用)的开销。
所以基于内核的捕包方案基本上能够解决传统的基于libpcap捕包方法带来的问题,满足了在高速链路下数据包捕获的要求,并且提高了数据包深度分析的能力,为网络流量测量和预测提供了有力的支持。
1.3 研究现状
近几年来,伴随着互联网上层出不穷的应用和服务,网络技术高速发展,网络监测需求也不断多样化,作为主流监测技术的被动网络流量监测分析越来越受到国内外研究机构和组织的普遍关注。被动流量监测是网络流量监测的一种重要方法,该方法通过观察经过监测点上的所有数据包,解码进行协议分析获得相关的流量统计信息。由于其被动的特征所以不需要向网络中注入流量,从而不会对网络造成负面的影响,在低速率低带宽的网络环境下其表现优越。但是近年来由于网络速率的不断提高,网络带宽的增加以及高带宽需求的实时业务的出现,使得被动测量技术面临高带宽、大规模、实时分析以及提供符合各种粒度需求的指标的挑战,基于数据包级的被动流量监测呈现出了诸多的问题。网络应用的普及与网络技术的发展导致网络流量也日益庞大,在面对高速链路时流量监测和分析技术所依赖的传统数据包捕获方法开始受到诸多条件的限制,如PCI(Periphery Component Interconnect)总线吞吐量、存储容量、内存访问速度、磁盘阵列访问速率、内存拷贝开销、系统调用开销、中断开销以及操作系统中的任务调度机制等都对数据包在高速链路条件下的捕获产生影响。 [资料来源:http://think58.com]
一般的,在普通PC上基于Linux实现的数据包分析相关的工具如tcpdump[4], ethereal[5],sniffer,snort[6]等的实现大多是在用户空间利用LIBPCAP[3]等函数库提供的函数方法,经系统调用通过SOCKET(RAW SOCKET)接口从内核空间将NIC获得数据包拷贝然后从内核空间拷贝到用户空间来,然后再在用户空间做进一步的分析处理。在高速链路(Gigabits)链路环境下,常规方法数据包捕获性能的表现不尽如人意,不能适应高速链路的要求。
目前,为了克服操作系统、PCI总线带宽和系统资源所带来的性能限制,一些研究人员和硬件生产厂商已经开始进行了一番探索。首先进行的一种尝试是采用网络处理器NP[7] (Network Processor)的系统架构替代通用硬件平台来实现数据包捕获、完成流量监测和分析功能,通常采用网络处理器的方法价格非常昂贵,且开发和升级周期较长,大量部署不太现实;第二种尝试方案是试图通过专用硬件来实现数据包捕获进而完成被动流量监测分析,如OC3MON及DAG[2],然而这种实现方式价格比较昂贵,且系统缺乏足够的灵活性,很难跟上当今瞬息万变的网络发展现状与具体的流量监测分析需求。
数据包监测的定义
 数据包监测可以被认为是一根窃听电话线在计算机网络中的等价物。当某人在“监听”网络时,他们实际上是在阅读和解释网络上传送的数据包。 copyright think58

[来源:http://think58.com]


 如果你在互联网上,正通过其它计算机发送数据。发送一封电子邮件或请求下载一个网页都会使数据通过你和数据目的地之间的许多计算机。这些你传输信息时经过的计算机都能够看到你发送的数据。数据包监测工具可以在网上的任何一个位置实施,如局域网中的一台主机、网关上或远程网的调制解调器之间等,他允许某人截获数据并且查看它。
当然数据包监测可以是一个重要的管理工具,也可以成为一项邪恶的黑客技术。事实上,它两者皆是,一个好的数据包监测软件通常可以在网络管理和黑客技术工具包中同时找到。黑客可以用数据包监测软件监听互联网,并且追踪一些敏感数据的交换如登录对话和财经交易。网络管理员可以用数据包监测软件检测错误布线,网络运行状况,损坏的数据包和其它网络问题。
这里需要说明的是,进行流量监测的前提是捕获别人的包,也即我毕业设计的工作――数据包的捕获。
2.1.3中断活锁的概念
中断活锁[8]是指高速网络设备每秒钟接收到的数据包数目超过系统最大无丢包接收速率MLFRR(Max Loss-Free Receive Rate)时,随着接收速率的进一步增加导致IP处理线程根本没有机会从系统中取走数据包。在传统意义上中断是为一些低频率的I/O设备如键盘、磁盘等设计的,这些低速设备通常每秒钟产生几百个中断,在750Mbps背景流量,包长64Byte情况下,理论上千兆网卡每秒钟将会产生约1,116,000个硬件中断,因为中断的处理优先级较高,大量产生的中断将导致CPU持续响应中断服务请求、执行中断服务例程ISR(Interrupt Service Routine),CPU时钟将完全被网卡驱动程序的ISR垄断,从而无法正常处理CPU Backlog队列中缓存的数据包,同样也无法响应其他所有进程的调度请求。 copyright think58

[资料来源:http://think58.com]


2.2 网络监听原理
2.2.1 以太网监听原理
Ethernet(以太网)是一种适用于小型机及微型机的总线型局部网络系统。Ethernet在逻辑上一条总线和一群挂在总线上的节点组成,网络上所有节点(包括网络接口,控制器和主机)都通过收发器连接到公共总线上,总线是一条共享信道,通过它来实现不同节点之间的信息传输。
Ethernet协议的工作方式是将要发送的数据包发往连接在一起的所有主机,所以在报头中包括有应该接收数据包的主机的正确地址。一般情况下只有与数据包中目标地址一致的那台主机才能接收到信息包。但如果主机工作在监听模式下(网卡设置为混杂模式下),那么不管数据包中的目标物理地址是什么,主机都将可以接收到。
在 Ethernet实际传送过程中,填写了物理地址的数据包从网络接口(也就是从网卡)传送到物理的线路上,当数字信号到达一台主机的网络接口时,在正常情况下,网络接口读入数据包进行检查,如果数据包中携带的物理地址是自己的,或者物理地址是广播地址,则将数据数据包交给上层协议软件,也就是IP层软件,否则就将这个数据包丢弃。对于每一个到达网络接口的数据包,都要进行这个过程。然而,当主机工作在监听模式下,则所有的数据包都将被交给上层协议软件处理。
 Ethernet的这种工作方式,举一个例子来说,有很多人在一个大房间内,大房间就像是一个共享的信道,里面的每个人好像是一台主机。人们所说的话是信息包,在大房间中到处传播。当我们对其中某个人说话时,所有的人都能听到。但只有名字相同的那个人,才会对这些话语做出反映,进行处理。如果有人想了解大家谈话的主题,他也可以对所有的谈话内容作出反应。
[来源:http://think58.com]