2021-4-10 | 互聯網
1概述
隨著互聯網的快速發展,人們不斷在互聯網的數據采集和分析方面進行深入研究和系統開發,以期能向社會提供豐富的統計和決策分析信息,同時提高對互聯網業務的控制和監管。國內外互聯網數據采集分析方法主要分為3類,即采用SNMP協議、RMON協議或NetFlow技術采集數據。但是國內外同類產品在具體應用中都有一定的局限性[1]。考慮到應用的安全性,更希望能采用具有國內自主知識產權的產品。
本文對數據匯聚分發和采集分析進行了研究,開發了一套集數據匯聚、分發、采集和分析于一體的綜合系統。
2互聯網流量匯聚分發采集分析系統總體框架
本文系統主要用于提供復雜接入環境下多鏈路數據采集、互聯網原始數據分發、綜合數據發布、綜合流量識別與分析等服務,系統的研制目標包括以下4個方面:
(1)多路接入環境下多條大容量鏈路數據進行匯聚,匯聚的接入鏈路包括光纖、電路2類,數據類型包括以太、ATM2種格式。
(2)對多條大容量鏈路數據進行分發,將多路匯聚后的數據向數據輸出端若干組端口實時并行發送。數據分發的目的包括信息安全、國家安全、公共安全等。
(3)實時采集大容量多路原始數據,并生成網絡數據會話流。
(4)基于應用協議進行數據識別及實時統計分析,為其他應用系統提供靈活的數據格式和分析結果。
3系統關鍵技術實現
本文系統的實現主要從數據匯聚分發和數據采集分析兩方面進行關鍵技術研發。
3.1數據匯聚分發
數據匯聚分發的主要功能是在多路接入環境下將多條大容量鏈路的數據進行匯聚和分發。各鏈路數據進行匯聚分發時,系統數據輸入端配置N個輸入端口,數據輸出端可以分不同組別進行分發。按照不同需求,系統輸出可以分為4類:
(1)單/雙端口萬兆輸出;(2)N個端口千兆輸出;(3)M個端口千兆輸出(M<N);(4)N個端口百兆輸出。在研發中,基于H3CS9500系列核心交換機,聯合杭州華三公司進行了二次定制開發,實現了數據的匯聚和分發系統,其關鍵技術包括:(1)利用虛擬管道使不同流量進入不同復制域虛擬管道是利用標簽而衍生出來的,指匯聚分發的報文進入S9500后,S9500采用內部標簽標識,利用標簽技術對相應的報文增加不同的標簽進行標識。對不同的輸入端報文構建了不同的虛擬管道,不同輸入端的報文可以不考慮其帶有沖突的802.1q內容,從而為不同客戶劃定不同的復制域,這些復制域還同時具有防802.1q沖突的能力。
這里只需設置不同客戶接入端口為虛擬管道入口,而各輸出端口為各自的虛擬管道出口。在管道中,通過硬件底層下發訪問控制列表(AccessControlList,ACL)規則,使流量只能從管道的入口進、管道的出口出,因此,不會出現環路風暴問題。
(2)以組播技術實現每個復制域內單播報文的多份復制IP組播報文在路由器、交換機的轉發是一對多的轉發,IP組播報文進入S9500后,直接進入硬件的組播交換引擎,查找組播硬件轉發表,確定下一跳和出接口列表,并完成報文目的和源地址內容的修改,在組播引擎完成組播報文的多份復制后,從各個出接口送出。
3.2數據采集分析
在數據采集分析模塊開發中,聯合上海直真視通公司,實現該模塊的關鍵技術包括:
(1)流量捕獲
基于端口識別網絡流量的傳統方法已不適用于識別新型的、復雜互聯網應用類型產生的流量,應用級流量采集與分析應采用數據包深度分析技術識別網絡流量。本文系統采用了高性能網卡加Libpcap軟件的方式捕獲數據包。Libpcap是Unix/Linux平臺下通用的數據包捕獲函數包。捕獲數據包時,Libpcap將網卡設置為混雜模式,在內核空間內復制網絡驅動程序讀取的數據包,再傳遞到用戶空間。Libpcap捕獲數據包需要二次內存復制,限制了其捕獲性能,因此,采用了零拷貝和負荷平衡方法來改進Libpcap[2]。
(2)網絡流生成
網絡流生成是將鏈路上獲取的原始數據包歸并為網絡流形式輸出。網絡流是對一個測量間隔內一些具有相同屬性的數據包集合的抽象描述,可以定義為一個測量間隔內具有相同(源IP地址,目的IP地址,源端口,目的端口,協議類型)五元組的網絡包集合,它是一種單向的、細粒度的流量聚合形式。
網絡流生成過程如下:網絡流生成器在內部維持當前活躍網絡流的記錄緩存結構,當捕獲到新的原始數據包時,網絡流生成器判斷這個數據包是否屬于當前活躍網絡流,如果是,修改網絡流相關信息;如果不是,創建新的網絡流記錄并設置網絡流相關信息。
(3)網絡流應用類型識別
本文系統的應用級流量采集與分析方法首先在網絡流生成的同時,融合多種流量識別算法識別網絡流的應用類型。
目前互聯網上常見的協議和應用主要包括傳統型(HTTP、研制了網絡協議分析和識別系統TAS,其核心為iSIE互聯網會話識別引擎。TAS由采集探針和協議分析引擎兩部分組成,如圖2所示。其中,采集探針負責采集寬帶流量數據并進行預處理,將預處理結果提供給協議分析引擎;協議分析引擎能夠接收一個或者多個探針的預處理數據,并對這些預處理數據進行綜合分析,統計、識別協議類型,將分析結果存入數據庫。
在具體實現時,將流量采集與分析分為多個階段來實現,包括原始流量捕獲、會話流生成、會話流存儲、流量分析和信息呈現。其中的流量分析主要使用網絡流應用類型識別和基于網絡流關聯識別應用類型的方式進行流量識別和實時統計。