高速网络流量监测系统的设计与实现
2012-08-08任富新
任富新
(华北计算技术研究所,北京 100083)
随着互联网技术的快速发展,网络应用范围不断扩大,网络结构和网络应用越来越复杂,这使得网络出现各种问题的可能性增大,同时管理网络的难度也增大。网络流量监测提供了一种探索实际环境中网络特性的手段。从实现方法的角度,目前所存在的流量测量方法可分为两大类:基于硬件的测量方法和基于通用PC平台测量方法。基于硬件的测量方法由于在高速链路的环境下具有了巨大的性能优势,一般为大型开发商和运营商所用,但是因为其价格比较昂贵,大多数的中小企业还是选用基于通用PC的流量监测方法。然而,随着网络速率的不断提高,基于通用PC平台的流量监测因为受到操作系统和硬件性能的限制,不能满足高速链路流量监测的需求。
本文设计并实现了一种高速网络流量监测系统。该系统基于高速数据采集卡和普通服务器,在硬件采集、存储数据的基础上,实现数据捕获、分析、统计、报表等功能。通过该系统,用户可以制定针对特定业务的流量监测,并且可以对网络的健康状况和瓶颈等进行测试,帮助用户迅速地确定网络问题。
1 设计方案
网络流量监测验证系统由硬件支撑平台、软件支撑平台和网络流量监测应用软件(ntop)三部分构成。
1.1 硬件支撑平台
1.1.1 TurboCap高速捕获卡
TurboCap是一种双端口千兆捕获与注入工具,具备多种功能,包括同时全速捕获与注入、多端口通信聚合以及可调控的pass-thru模式。该工具套件同时提供TurboCap API以及 winPcap/libpcap API。TurboCap套件包括TurboCap千兆捕获卡、TurboCap驱动和用户级的API三部分。
1.1.2 服务器
TurboCap卡是一种基于PCI-E的接口卡 (4x或8x),为了最大程度发挥其性能,网络流量监测系统采用HP380G6服务器,该服务器主要配置如下:PCI-E为X8 PCI-E卡插槽;CPU采用2.4GHz双核Intel Xeon W3503;内存为 8 GB;存储为SAS硬盘(10 000转)RAID卡。
1.2 软件支撑平台
软件支撑平台主要包括Linux操作系统、TurboCap卡驱动和 TurboCap Libpcap(Packet Capture Library)开发包模块等。
Linux操作系统采用Fedora 10,主要因为捕获卡的驱动为 Fedora 10。
1.2.1 Libpcap开发模块
Libpcap由 Berkeley大学的 JACOBSON V、LERES C和MCCANNE S编写,是一个平台独立的网络数据包捕获开发包,应用非常广泛,几乎只要涉及网络数据包的捕获功能,都可以使用Libpcap开发包。Libpcap可以在绝大多数类Unix/Linux平台下工作。Libpcap软件包可从http://www.tcpdump.org下载,目前最新版本为 1.1.1。
本文采用的Libpcap版本号为libpcap-1.0.0-tc_17.fc10.x86_64,是由CACE公司提供的与TurboCap卡驱动配套的开发包。
1.2.2 支撑软件安装
以ROOT用户安装TurboCap驱动,TurboCap内核模块,TurboCap开发库、文档、例子以及支持TurboCap修改版的libpcap 1.0.0,操作如下:
[root@x86_64]# rpm -ivh kernel-firmware-2.6.27.12-170.2.5.preemptive.kernel.kt.fc10.x86_64.rpm
[root@x86_64]# rpm -ivh kernel-2.6.27.12-170.2.5.preemptive.kernel.kt.fc10.x86_64.rpm
[root@x86_64]# rpm -ivh turbocap-1.6.2117-1.fc10.x86_64.rpm libpcap-1.0.0-tc_16.fc10.x86_64.rpm
[root@x86_64]#rpm -ivh turbocap-module-2.6.27.12-170.2.5.preemptive.kernel.kt.fc10-1.6.2117-1.fc10.x86_64.rpm
之后重启计算机,确认选择启动的内核是:Fedora(2.6.27.12-170.2.5.preemptive.kernel.kt.fc10.i686)或 者Fedora(2.6.27.12-170.2.5.preemptive.kernel.kt.fc10.x86_64)
1.3 网络流量监测应用软件
ntop是一套网络流量监控软件,由意大利Pisa大学教授DERI L于1997年开始开发,并以开源方式提供使用,可以从http://www.ntop.org下载,目前最新版本为4.0.3。ntop以sniffery方式运作,采用网页接口,主要功能有网络监控、网络流量统计、提供网络最佳化与除错的信息以及侦测可疑的网络流通信息等。
1.3.1 ntop功能
ntop可以监测的数据包括:网络流量、使用协议、系统负载和端口情况等。
ntop能够更加直观地将网络使用量的情况和每个节点计算机的网络带宽使用详细情况显示出来。可以通过分析网络流量来确定网络上存在的各种问题,如瓶颈效应或性能下降;也可以用来判断是否有黑客正在攻击网络系统。如果怀疑网络正在遭受攻击,通过ntop截获的数据包可以确定正在攻击系统的是什么类型的数据包,以及它们的源头,从而可以及时地作出响应,或者对网络进行相应的调整,以保证网络运行的效率和安全。通过ntop网管员还可以很方便地确定哪些通信量属于某个特定的网络协议、占主要通信量的是哪个主机、各次通信的目标是哪个主机、数据包发送时间、各主机间数据包传递的间隔时间等。这些信息为网管员判断网络问题及优化网络性能,提供了十分宝贵的信息。
1.3.2 ntop基本架构
ntop基本架构分成三个模块:数据包捕获(Packet Sniffer)模块,数据包分析(Packet Analyser)模块以及报告引擎 (Report Engine)模块,如图1所示。由Packet Sniffer收集网络上的Packet,然后送给 Packet Analyser去处理,再由Report Engine将处理分析后的数据呈现出来。
图1 ntop的基本架构
1.3.3 ntop安装与使用
在FC10下,ntop的安装配置更简单,大多数库默认都已经安装,只需另外安装GeoIP和 rrdtool,下面简单介绍一下ntop的安装和配置。
解压缩源码:tar-zxvf ntop-4.0.3.tar.gz;
运行:cd ntop-4.0.3;
运行:./autogen.sh;
运行:make&&make install;
添加用户:useradd-M-s/sbin/nologin-r ntop;
设置用户权限:chown ntop:root/usr/local/var/ntop/;
设置用户权限:chown ntop:ntop/usr/local/share/ntop/;
设置密码:ntop-A;
ntop作为守护进程运行:/usr/local/bin/ntop-d-L-u ntop-P/usr/local/var/ntop--skip-version-check--usesyslog=daemon;
查看统计信息:打开浏览器,在地址栏输入 http://host_ip:3000(“IP”就是安装 ntop的那台网管工作站的IP地址),即可打开ntop界面。
2 网络流量监控系统的接入方式
2.1 网络数据获得技术
在交换网络中,有两种有效的获得数据的方法:
(1)镜像端口 SPAN(Switch Port Analysis):某些交换机可以将一个或几个端口的数据包复制到一个指定的端口,然后可以在该端口上接网络流量监测系统。
(2)分 路 器 TAP(Test Access Port):可 以 把 任 意 一个端口收到的数据注入到另一个端口。可用于即时分析网络流量,且不占用任何网络资源。分路器TAP串接在被监控链路上,可永久固定在被监控链路上,避免插拔链路,不用配置交换机和额外占用交换机端口。
2.2 网络流量监控系统的部署方式——SPAN方式
网络流量监控系统的部署方式为SPAN方式。下面主要说明如何在Catalyst 2950上配置SPAN功能,以下是SPAN实现的范例:
在使用SPAN时需要注意:(1)保证镜像端口的线速等于或高于被监测端口的线速,防止数据过载,造成数据包丢失;(2)SPAN功能会增加交换机的负荷,占用交换机的CPU、内存等系统资源,致使交换机性能下降,所以在获取到足够的数据后,需要去除SPAN功能;(3)由于不同交换机转发机制不同,有的交换机的SPAN功能会自动丢弃错误的数据包,导致无法获取到错误的数据包,而错误的数据包能为解决网络问题提供重要依据。
2.3 网络流量监控系统的部署方式——TAP方式
网络流量监控系统的部署方式采用TAP方式,TAP方式又分以下几种:
(1)交换分路器 (TAP)模式。当TurboCap卡处于pass-thru模式时,TurboCap把一个端口收到的数据注入到同卡上的另一个端口。两个端口支持全速对发,从而使TurboCap具有分路器的功能。
(2)汇聚 TAP模式。安装方法类似于交换TAP。汇聚TAP可以将多条链路的全双工数据合并到单一数据流中,这样可以从单一数据流中看到来自多个SPAN端口的汇聚流量,将其复制后供分析使用。TurboCap支持同卡上的全速双口通信聚合。用户可以通过一个叫做Board Aggregationg Port(BAP)的虚拟端口来访问聚合通信。TurboCap还支持对多TurboCap卡的端口进行聚合,这样用户可以一次捕获超过两个端口的通信。
在借助TAP分析网络数据的时候,需要注意以下三点:(1)TAP主要用于对骨干链路数据的获取(当然也可以用于其他链路),使用时需要预先布放(串接)到链路中,避免监测骨干链路时再串接TAP而引起中断网络的情况发生;(2)被监测的链路流量不要超过TAP端口的线速,防止数据包因过载而丢失;(3)将不同的TAP组合起来使用可以实现更高要求的数据监测,通过TAP模式和聚合功能,就可以实现聚合TAP的功能。
本文基于高速采集卡和普通服务器设计了高速网络流量监测系统,采用Linux操作系统和开源软件,成本低,满足了高速链路流量监测的需求。该系统既支持SPAN方式,也支持TAP方式,这两种技术在网络监测、分析时都普遍应用。用户可以根据自己的使用情况,选择合适的部署方式来部署网络流量监测系统。
[1]郑惠之,罗进文.一种有效的流量控制策略—ntop[J].信息科技,2002(3):38-39.
[2]赵冉.网络流量测量系统Ntop的分析与研究[D].西安:西北大学,2008.
[3]TAMON M A.Ntop network monitoring guide[EB/OL].[2008].http://techowto.wordpress.com.