杭靜文,羅洪斌,劉 穎
(北京交通大學電子信息工程學院,北京100044)
近年來,隨著互聯網技術的發展和企業大量業務的需要,構建在網絡上的應用越來越多,其復雜程度及對網絡的依賴程度也日益提高,各種各樣的網絡問題也隨之產生。然而,由于網絡的異構性和復雜性,對網絡行為及其特征的了解仍然有限,因此采用網絡測量方法獲取網絡參數是研究網絡性能、進行網絡管理的有效方法,同時它對解決網絡問題及進行網絡規劃有著重要意義。
網絡流量監測方法主要有基于SNMP、基于分組嗅探、基于ROMN和基于Flow技術等幾種[1]。其中,NetFlow是一種網絡數據包交換技術,并可同步實現對高速轉發的IP數據流進行測量和統計。最新的NetflowV9版本已經提交給IETF以IPFIX(IP Flow Information Export)[2]的名稱進行標準化,在正式獲得采納前,NetFlow已經獲得許多主流廠商的支持,被廣泛應用于網絡安全管理[3]與流量監測[4~5]。
本文首先介紹現有的網絡流量監測方法,對各自的優缺點進行簡單分析,詳細介紹了NetFlow技術,并提出了一種基于NetFlow的流量監測系統模型。該模型利用NetFlow技術進行流量監測,通過提取相應信息組成流記錄,將流記錄匯總存入數據庫,為進一步數據挖掘提供依據。該模型采用自定義模板采集流量信息,靈活性高,可擴展性強。測試證明了該模型的可行性,能夠為網絡流量分析提供合理高效的數據支持,對于網絡管理、異常檢測以及網絡規劃等方面有重要意義。
網絡流量監測是指捕獲網絡中流動的數據包,并通過查看分組內部數據以及進行相關的協議、流量分析、統計等來發現網絡運行中出現的問題,它是網絡和系統管理人員進行網絡故障和性能診斷的有效工具,下面介紹幾種常見的網絡流量監測方法。
簡單網絡管理協議(Simple Network Management Protocol, SNMP)[6]是專門設計在IP網絡中管理網絡節點(路由器、交換機等)的一種標準協議,它是一種應用層協議,是TCP/IP協議族的一部分。基于SNMP的流量信息采集的核心思想是在每個網絡節點上存放一個管理信息庫(Management Information Base, MIB),并由節點上的代理Agent負責維護,管理站中的網絡管理系統(Network Management System, NMS)通過應用層協議對這些信息庫進行統一管理。
當網絡設備不支持SNMP,或者用戶需要細節網絡流信息,如網絡協議類型、某特定IP地址的流量時,經常采用實時抓包分析的分組嗅探方法[7]。然而這種方法只能通過某個網絡接口進行抓包,并且幾乎所有現存的分組嗅探工具都是基于Libpcap[8]程序包運行的,其中包括最早的TcpDump[9]、當前流行的Wireshark[10]、Sniffer等。
遠程網絡監控(Remote Network Monitoring,RMON)是IETF定義的MIB[11],它是為了解決SNMP協議在日益擴大的分布式網絡中的局限性所提出的。RMON MIB的主要目的是使SNMP更為有效、更為積極主動地監控遠程設備,提高傳送管理信息的有效性、減少管理站的負擔,滿足監控網絡性能的目的。
目前基于流(Flow)的分析技術主要有2種:sFlow和NetFlow。sFlow采用數據流隨機采樣技術,可以使用超大網絡流量環境下的流量分析,為用戶提供詳細實時的流量性能分析,并能分析流量趨勢以及存在的問題,目前只有HP、Extreme Networks等少數廠商部分型號的交換機支持sFlow,它的缺陷是輸出信息都是單個數據包,沒有會話的概念,進行數據分析時需要聚合計算。NetFlow的特點是其流量統計基于IP流,IP流包含了豐富的信息,非常適合網絡性能的監測和分析。
綜上所述,基于SNMP和RMON[12]的流量監測方法,主要檢測網絡設備端口整體流量,流量信息內容過于簡單,無法針對用戶與業務進行分析;基于分組嗅探的流量監測方法,由于其需要采集的數據量過大,因此不適合大流量的網絡環境,并且輸出信息不支持會話概念。以上這些方法都無法滿足高帶寬網絡環境的性能要求和分析需求,目前大多數流量監測系統采用NetFlow作為主要的流量采集手段。
NetFlow是一種網絡數據包交換技術,它首先被用于網絡設備對數據交換進行加速,并可同步實現對高速轉發的IP數據流進行測量和統計。
NetFlow以“流”為采集單位進行數據統計,能對IP網絡的通信流量進行詳細的行為模式分析和計量。NetFlow中的關鍵概念是“流”(flow),它由以下7個關鍵域定義:
(1)源IP地址(Source IP address);
(2)目的IP地址(Destination IP address);
(3)源端口號(Source Port Number);
(4)目的端口號(Destination Port Number);
(5)協議類型(Layer 3 Protocol Type);
(6)服務類型(Type of Service);
(7)輸入邏輯接口(Input Logical Interface)。
一個NetFlow流定義為在一個源IP地址和目的IP地址間傳輸的單向數據包流,且所有數據包具有共同的傳輸層源、目的端口號。不同數據包,如果以上7個關鍵域都匹配,將被視為同一股流。每股流的開始時間、持續時間,流中報文數、字節數等信息都被記錄下來。當該股流結束或到期后,輸出過程將這些流信息根據自定義的模板組成NetFlow報文。
在NetFlow技術的演進過程中,開發出了5個主要的實用版本,即NetFlow V1,V5,V7,V8和V9,NetFlow V9[13]目前被IETF組織從5個候選方案中確定為IPFIX標準。不同版本間的差異直觀的表現在輸出報文格式上,NetFlow V9是一種全新的靈活可擴展的NetFlow數據輸出格式,采用了基于模板(Template)的統計數據輸出,可以很方便地添加需要輸出的數據域,解決了數據類型不斷變化的需求,同時支持多種NetFlow新功能如Multicase NetFlow,BGP Next Hop V9,NetFlow for IPv6等。
流量監測系統中的采集對象是指產生NetFlow流記錄的網絡設備,主要是中高端路由器和高端交換機。對于采集對象的選擇,要根據網絡結構以及流量監測系統的綜合情況來決定,可以是網絡的聚合層設備,也可以是核心層設備。流量監測系統由采集器和收集器以及數據庫組成。本文所提出的流量監測系統模型,如圖1所示。

圖1 流量監測系統模型
采集器可以布置在任何產生流量的地方,當系統規模較大時,需要配置多個采集器。本文采用收集器和數據庫集中部署,由多個采集器共同負責采集全網內路由器上產生的流量。
該模型的優點:采集器分散在各個采集域的邊緣,可以監測到整個域內的流量信息,收集器和數據庫集中部署,便于統一管理和維護,提高了設備的利用率。
采集器模塊的功能:捕獲原始網絡流量,提取相應信息按自定義模板封裝成NetFlow報文,以UDP包的形式不斷發送給收集器。
采集器模塊的工作原理:調用pcap類庫從數據鏈路層進行抓包,提取流量信息封裝成Netflow報文,然后發送到收集器。采集器處理流程簡圖見圖2。

圖2 采集器處理流程
(1)抓包過程主要由Pcap_thread線程負責。主要功能是調用系統庫函數從數據鏈路層進行抓包,然后在抓取的包中提取相關的信息并存入FLOW鏈表中。
(2)分析和封裝過程由Unpending_thread和Scan_thread來完成。
Unpending_thread線程的主要功能是不停的把FLOW鏈表里的數據通過hash計算放入到指針數組FLOWS[] 里。在放入的過程中,如果FLOWS[] 之前沒有此數據,則直接復制進來;如果之前有數據,則更新。Scan_thread線程的操作很簡單,就是把FLOWS[] 里所關聯的數據根據不同的屬性送到不同的鏈表中,完整且滿足活動期要求的數據存放flow_emit鏈表中,不完整且超過生存期的數據存放scan_flag_drag鏈表中,以便進行下一步的操作。
(3)發送過程由emit_thread完成,它的主要功能就是發送NetFlow格式的數據包。
其中,自定義的NetFlow報文模板包括以下選項:IPVersion,ProtocolIdentifier,SourceIPv-4Address,DestinationIPv4Address,SourceIP-v6Address,DestinationIPv6Address,Source-TransportPort,DestinationTransportPort,Flow-StartSysUpTime,FlowEndSysUpTime,Octet-DeltaCount,PacketDeltaCount。該模板是根據用戶網絡行為分析的需要所定義,確定了后續發送的包含流記錄的數據包的格式和長度,便于收集器對數據包的處理。模板中各字段域在文獻[14] 中進行了詳細說明。除了模板信息和流信息外,NetFlow報文中還包含了報文輸出時間、序列號和采集區域ID,收集器可以以此來區分每個NetFlow報文的到達時間和采集器。
收集器負責解析來自采集器的數據報文,依據模板進行處理,提取出流記錄信息,然后存儲到數據庫中。收集器處理流程如圖3。

圖3 收集器處理流程
數據收集的過程比較簡單,關鍵是收集器必須有模板,所以采集器在發送NetFlow報文前,需要先將模板發送給收集器,使收集器能夠依據模板正確處理NetFlow報文中的流信息。收集器接收來自各個采集器的NetFlow報文,按照模板提取出流信息,然后存儲到數據庫中,為進一步流量分析提供數據支持。
在實驗中,對終端A產生的數據流進行監測,采集器和收集器集成在一臺服務器上。首先運行數據捕獲程序通過集線器將網絡內流量鏡像到服務器的eth0口,然后將eth0口收到的數據轉化成NetFlow流,使用NetFlow模板發送到回環地址的特定端口,收集器從這個端口提取流記錄存入數據庫。測試環境拓撲如圖4。

圖4 測試環境拓撲圖
終端A文件下載完成之后,立即終止流量監測系統的相應進程。查看服務器中數據庫文件,使用IPv6協議的數據流,信息存入表 receive_pkt_v6中。查詢表receive_pkt_v6中終端A有關的流記錄信息,查詢語句:mysql> select * from receive_pkt_v6 where src_ip='2001:da8:205:2060:20c:29ff:fe66:ca59' or dst_ip='2001:da8:205:2060:20c:29ff:fe66:ca59 '; 表中部分數據如圖5。

圖5 表receive_pkt_v6中數據
使用IPv4協議的數據流,信息存入表 receive_pkt_v4中,查看表中終端A有關的流記錄信息, 表中部分數據如圖6。

圖6 表receive_pkt_v4中數據
圖5與圖6中,各字段用“|”隔開,數據中各字段的含義:| 序號 | 接收時間 | 源地址 | 目的地址 | 協議類型 | 源端口 | 目的端口 | 流開始時間| 流結束時間 | 字節數 | 包數量 |。圖5和圖6中的流記錄分別表示終端A接收和發出的流量,序號為71的記錄,表示源地址2001:da8:8000:1::80,目的地址為終端A的IPv6數據流,源端口80,目的端口32767協議類型為6(TCP),流量大小為3919173 byte,流量持續時間為5 s,該股流的數據包數量為2615;其它記錄信息與此類似,不再表述。
從圖5、圖6中數據可以看出,已經完整監測到終端A產生的IPv4和IPv6流量,每股流量的開始與結束時間,流量大小等信息。至此,實現了利用NetFlow技術進行流量監測的目的,且擁有較高的性能。
本文提出了一種基于NetFlow的網絡流量監測系統模型,采用自定義的NetFlow模板來采集處理流信息,能同時處理IPv4和IPv6數據流,并對所設計的方案進行了測試,證明了該方案的可行性和較高的性能。在今后的工作中,將繼續研究利用NetFlow進行數據挖掘和流量分析的方法,發揮NetFlow在流量監測分析方面的優勢。
[1] 王志. 基于NetFlow的流量統計分析系統設計與實現[D] .北京:北京郵電大學,2007.
[2] CLAISE B. Specification of the IP Flow Information Export(IPFIX) Protocol for the Exchange of IP Traffic Flow Information[S] . RFC 5101. January 2008.
[3] 劉廣義,盧泉,楊國良. 基于NetFlow流量采樣的誤差分析[J] . 電信科學,2005, 21(5):68-70.
[4] 曾國鑒,魯士文. 分布式異常流量監測系統的設計[J] . 計算機應用與軟件,2008,25(11):154-156.
[5] 劉璇,張鳳荔,葉李. 基于NetFlow的用戶行為挖掘算法設計[J] . 計算機應用研究,2009,26(2): 713-715.
[6] GALVIN J, MCCLOGHRIE K. Administrative Model for version 2 of the Simple Network Management Protocol (SNMPv2)[S] . RFC 1445. April 1993.
[7] FUENTES F, KAR D C. Ethereal vs. Tcpdump: a comparative study on packet sniffing tools educational purpose[J] . Journal of Computing Sciences in Colleges. 2005, Vol. 20, No. 4. pp.169-176.
[8] Programming with Pcap[EB/OL] . [2011-10-13] . http://www.tcpdump.org/pcap. htm.
[9] TCPdump[EB/OL] .[2011-11-16] . http://www.tcpdump.org.
[10] Wireshark[EB/OL] . [2011-09-07] . http://www.wireshark.org.
[11] WALDBUSSER S. Remote Network Monitoring Management Information Base[S] . RFC 1757, May 2000.
[12] 田海燕, 王換招, 李玉鵬. 基于RMON的網絡流量測量系統設計及實現[J] . 計算機工程與應用,2004,40(5):160-162.
[13] CLAISE B. Cisco Systems NetFlow Services Export Version 9[S] . RFC 3954. October 2004. http://www.ietf.org/rfc/rfc3954.txt.
[14] QUITTEK J, BRYANT S, CLAISE B, et al. Information Model for IP Flow Information Export[S] . RFC 5102. January 2008. http://www.ietf.org/rfc/rfc5102.txt.