蔡鷗,劉一清
(華東師范大學(xué)通信與電子工程學(xué)院,上海 200241)
隨著互聯(lián)網(wǎng)技術(shù)的不斷進步,網(wǎng)絡(luò)速率不斷提升,萬兆以太網(wǎng)接口已經(jīng)成為了核心網(wǎng)的主流設(shè)備接口[1-4],更高的吞吐量帶來了更嚴峻的安全挑戰(zhàn)[5]。為了減少高吞吐量的萬兆以太網(wǎng)鏈路中的數(shù)據(jù)異常以及網(wǎng)絡(luò)攻擊帶來的損失,需要對鏈路中的網(wǎng)絡(luò)流的信息有極深的了解,知道每一包數(shù)據(jù)的來源和目的,知道鏈路的數(shù)據(jù)量和數(shù)據(jù)速率,對流量歷史數(shù)據(jù)進行整理[6-7],以此對該條鏈路進行全面可靠的管理。此時,高性能的萬兆以太網(wǎng)流信息統(tǒng)計架構(gòu)就顯得尤為重要。
ZYNQ-Ultrascale+是Xilinx 公司推出的MPSoC(Multi-ProcessorSystem onChip)芯片,其內(nèi)部可分為PL(Programmable Logic)以及PS(Procressing System)兩部分。PL 端集成了現(xiàn)場可編程陣列(Field-Programmable Gate Array,F(xiàn)PGA),而在PS 端包含多核ARM Cortex-A53 處理器。這種結(jié)構(gòu)保證了PL 和PS之間的高速連接,可以快速處理萬兆以太網(wǎng)數(shù)據(jù)并進行反饋[8-10]。
該架構(gòu)采用了ZYNQ-Ultrascale+器件來管理萬兆以太網(wǎng)的數(shù)據(jù)包,能夠處理達到萬兆線速的網(wǎng)絡(luò)數(shù)據(jù)包,并且具有低延時、高吞吐的特點[11-12]。
所設(shè)計萬兆以太網(wǎng)流信息統(tǒng)計架構(gòu)如圖1 所示,分為PS 和PL 兩個部分。其中,PL 部分主要包括了Xilinx 的萬兆以太網(wǎng)子系統(tǒng)IP 核(10G Ethernet Subsystem)、包頭檢測與校驗?zāi)K(Packet Detection and Checking)、包頭卸載模塊(Packet Offload)、流表控制模塊(Flow Table Control)、流表建立模塊(Flow Table Establish)、流表統(tǒng)計模塊(Flow Table Statistics)、網(wǎng)絡(luò)包數(shù)據(jù)統(tǒng)計模塊(Packet Data Statistics)以及組包模塊(Packet Buliding)。PS 部分主要包含了流表信息計算與分析模塊(Flow Table Calculation and Analysis)以及網(wǎng)絡(luò)包數(shù)據(jù)分析模塊(Packet Data Analysis)。
圖1 總體結(jié)構(gòu)圖
該架構(gòu)中有兩個光口,其中一個光口OP1 接入到網(wǎng)絡(luò)鏈路的鏡像端口,通過鏡像端口輸入該網(wǎng)絡(luò)鏈路的所有網(wǎng)絡(luò)數(shù)據(jù),通過Xilinx 的萬兆以太網(wǎng)子系統(tǒng)IP 核將數(shù)據(jù)解析成為AXI4-Stream 類型的數(shù)據(jù),再通過后續(xù)的包頭檢測與校驗?zāi)K驗證網(wǎng)絡(luò)數(shù)據(jù)包的合法性,包頭卸載模塊將數(shù)據(jù)包的包頭信息和數(shù)據(jù)信息進行分離,同時將包頭中的五元組信息——協(xié)議、源IP 地址、目的IP 地址、源端口、目的端口組裝成為流信息,將所有相同五元組信息視為同一個流,來進行后續(xù)流信息的統(tǒng)計與管理。網(wǎng)絡(luò)流信息大大減少了網(wǎng)絡(luò)數(shù)據(jù),方便了后續(xù)處理[13]。流信息通過流表控制模塊進行匹配,如果是未記錄的流則新建流表表項,如果是已記錄的流則進行流表的更新統(tǒng)計。更新的流表以及網(wǎng)絡(luò)數(shù)據(jù)包的數(shù)據(jù)部分交由PS 部分的流表信息計算與分析模塊以及網(wǎng)絡(luò)包數(shù)據(jù)分析模塊對以太網(wǎng)流信息進行統(tǒng)計分析,包括計算數(shù)據(jù)速率,統(tǒng)計流表表項,統(tǒng)計網(wǎng)絡(luò)數(shù)據(jù)總量,各個協(xié)議的吞吐量等。
另一個光口OP2 連接至管理網(wǎng)絡(luò)鏈路中,用戶可以通過OP2 控制流信息的統(tǒng)計方式以及查看OP1以太網(wǎng)鏈路的統(tǒng)計結(jié)。
該架構(gòu)使用的萬兆以太網(wǎng)子系統(tǒng)IP 核為Xilinx公司推出的10G以太網(wǎng)MAC(Media Access Controller)層和物理層的解析方案,該IP 核支持IEEE 802.3 標準以太網(wǎng)協(xié)議,其中還定義了PCS(Physical Coding Sublayer)子層的64B/65B 編解碼。該IP 核的物理層主要完成了數(shù)據(jù)的編解碼、串化和解串、信號的放大、調(diào)制和整型;MAC 層主要完成了幀定界、同步、尋址、錯誤檢測、沖突處理等任務(wù)[14]。
通過使用萬兆以太網(wǎng)子系統(tǒng)IP 核,可以將10GBASE-R 標準的以太網(wǎng)數(shù)據(jù)流與內(nèi)部可處理的64 位AXI4-Stream 數(shù)據(jù)格式進行轉(zhuǎn)換[15],具體的數(shù)據(jù)時序如圖2 所示。當有外部萬兆以太網(wǎng)數(shù)據(jù)包進入到ZYNQ 芯片,IP 核會將tvalid 信號拉高來表示有數(shù)據(jù)到來,有效的以太網(wǎng)數(shù)據(jù)將會在tdata[63:0]信號上傳輸,同時tkeep[7:0]信號會在數(shù)據(jù)傳輸過程中持續(xù)全部拉高。當一幀以太網(wǎng)數(shù)據(jù)全部傳輸完成,則會在最后一個時鐘拉高tlast 信號,同時tkeep[7:0]信號的每一位會根據(jù)最后tdata 信號的有效位相應(yīng)拉高。如最后一個時鐘只有tdata[7:0]的數(shù)據(jù)有效,則只有tkeep[0]拉高,其他位均拉低。
圖2 AXI4-Stream數(shù)據(jù)時序
該模塊主要將IP 核輸入的AXI4-Stream 格式的以太網(wǎng)數(shù)據(jù)進行協(xié)議檢測,并且根據(jù)相應(yīng)的協(xié)議進行網(wǎng)絡(luò)層校驗。網(wǎng)絡(luò)層的具體校驗過程為:將其中校驗和置0,將所有IP 首部以16 位為單位組成的數(shù)字二進制相加,并且將全部相加得到的高16 位數(shù)字加到低16 位上,將最后得到的數(shù)字二進制取反即可得到傳輸正確的校驗和[16]。該模塊主要保證了進行統(tǒng)計的是傳輸有效的以太網(wǎng)數(shù)據(jù)包。
該模塊主要將傳輸正確的以太網(wǎng)數(shù)據(jù)包的包頭信息以及數(shù)據(jù)部分分離。其中包頭信息包括了MAC 層頭部的源MAC 地址、目的MAC 地址以及網(wǎng)絡(luò)層頭部的源IP 地址、目的IP 地址、源端口、目的端口;數(shù)據(jù)部分指的是以太網(wǎng)數(shù)據(jù)包應(yīng)用層以上的數(shù)據(jù)。經(jīng)過包頭卸載模塊,將分離出來的五元組作為同一個流的判斷標準交給流表控制模塊進行判斷,將分離的數(shù)據(jù)部分交給網(wǎng)絡(luò)包數(shù)據(jù)統(tǒng)計模塊進行統(tǒng)計。
該模塊主要將包頭卸載模塊中的五元組信息,與現(xiàn)有的五元組流表進行匹配。五元組中只要有一個元素不匹配即為一條新的流,每一條流代表的即是一臺主機的一個端口發(fā)送至另一臺主機相同端口的所有數(shù)據(jù)的集合。為了提高匹配的速率,減小統(tǒng)計延時,采用了并行子塊的方式,將3 200 條流表分成了100 個子塊進行匹配。每個子塊最高存儲32 條流表,并且采用橫向存儲的方式,具體的存儲順序為子塊0→子塊1→……→子塊0→子塊1→……,保證了每個子塊的匹配深度大致相同,進一步提高匹配的效率。通過匹配流的五元組信息,如果是新的流則后續(xù)交給流表建立模塊進行流表更新,如果是已有的流,則交給流表統(tǒng)計模塊進行該流的包數(shù)統(tǒng)計。
該模塊完成了新流的建立以及流表的更新,新流的數(shù)據(jù)格式如圖3 所示,其中源MAC 地址和目的MAC 地址為48 位,不作為流表統(tǒng)計的匹配元素。8位協(xié)議、16 位源端口、16 位目的端口、32 位源IP 地址和32 位目的IP 地址作為匹配的關(guān)鍵元素。24 位時間戳是在器件上電之后該流進入流表控制模塊的最新時間,單位為秒,時間戳是用來判斷是否要主動刪除過久沒有數(shù)據(jù)包的流。包數(shù)則是用來統(tǒng)計該流總共的以太網(wǎng)數(shù)據(jù)包數(shù)。
圖3 流數(shù)據(jù)格式
該模塊主要將流表控制模塊的匹配流進行包數(shù)統(tǒng)計。這里主要將已存在流的包數(shù)進行計數(shù)并且更新最新流的時間戳,同時也對流表中過期的流進行刪除,流表中表項的生存時間設(shè)置為7 天,7 天之內(nèi)沒有任何該流的數(shù)據(jù)包到來則認為該流過期,進行刪除。
該模塊主要將包頭卸載模塊的網(wǎng)絡(luò)數(shù)據(jù)部分進行緩存并統(tǒng)計該包數(shù)據(jù)的字節(jié)數(shù)。其中緩存部分用DDR4 存儲器進行,DDR4 的讀寫速率為2 666 Mb/s,同時緩存1 000 包的網(wǎng)絡(luò)數(shù)據(jù),并可交由網(wǎng)絡(luò)包數(shù)據(jù)分析模塊進行后續(xù)處理。
該模塊主要將建立的流表進行計算與分析。經(jīng)過流表建立模塊和流表統(tǒng)計模塊后獲得最新的流表,可以在PS 部分進行數(shù)據(jù)整合以及分析,具體分析結(jié)果包括某一條流的包數(shù),特定協(xié)議的流的個數(shù),TCP 的同步、握手包包數(shù),接收數(shù)據(jù)最多的目的IP 地址,發(fā)送數(shù)據(jù)最多的源IP 地址以及系統(tǒng)時間等等。
該模塊主要對以太網(wǎng)數(shù)據(jù)包數(shù)據(jù)部分進行分析,可以計算出網(wǎng)絡(luò)數(shù)據(jù)包的實時速率,以及系統(tǒng)上電以來的數(shù)據(jù)總數(shù),并且可以對部分應(yīng)用層協(xié)議進行初步解析,包括DNS、HTTP、HTTPS,可以解析出域名網(wǎng)址、請求類型等參數(shù)。
該模塊主要將流表信息計算與分析模塊以及網(wǎng)絡(luò)包數(shù)據(jù)分析模塊的結(jié)果合并為數(shù)據(jù)流,并且加上管理主機的MAC 地址、IP 地址、端口,同時再進行校驗和計算,以此構(gòu)建成AXI4-Stream 格式的合法以太網(wǎng)數(shù)據(jù)包交付給后續(xù)萬兆以太網(wǎng)子系統(tǒng)IP 核通過OP1 來發(fā)送給管理鏈路,供管理人員進行查看。
接下來以實際的“萬兆以太網(wǎng)監(jiān)控系統(tǒng)”為例來介紹設(shè)計的架構(gòu)如何進行應(yīng)用。圖4 展示了監(jiān)控系統(tǒng)的應(yīng)用示意圖,包含了兩臺通信主機、一臺萬兆以太網(wǎng)監(jiān)控系統(tǒng)、一臺管理主機。其中監(jiān)控系統(tǒng)采用的就是所設(shè)計的基于ZYNQ 的萬兆以太網(wǎng)流信息統(tǒng)計架構(gòu)。所用的核心芯片型號為ZYNQ-Ultrascale+系列的XCZU7EG 芯片。監(jiān)控系統(tǒng)主要管理通信主機1 至通信主機2 之間的網(wǎng)絡(luò)鏈路,通過OP1 進行以太網(wǎng)數(shù)據(jù)輸入,再通過所述架構(gòu)的工作,從OP2 將管理結(jié)果傳輸至管理主機進行查看,完成了對于以太網(wǎng)鏈路的監(jiān)控,確保了以太網(wǎng)環(huán)境的可控性。
圖4 萬兆以太網(wǎng)監(jiān)控系統(tǒng)應(yīng)用示意圖
通信主機1 與通信主機2 的網(wǎng)絡(luò)鏈路正常進行數(shù)據(jù)交互,并將所有以太網(wǎng)數(shù)據(jù)復(fù)制一份至監(jiān)控系統(tǒng)的OP1。當OP1 監(jiān)測到以太網(wǎng)數(shù)據(jù),監(jiān)控系統(tǒng)內(nèi)部根據(jù)所述架構(gòu)中PL 部分的萬兆以太網(wǎng)子系統(tǒng)IP核、包頭檢測與校驗?zāi)K、包頭卸載模塊將合法的以太網(wǎng)數(shù)據(jù)包解析成為五元組信息以及數(shù)據(jù)信息。五元組信息通過流表控制模塊、流表建立模塊、流表統(tǒng)計模塊構(gòu)建實時的流表最后交由PS 部分的流表信息計算與分析模塊分析出感興趣的結(jié)果。數(shù)據(jù)信息通過網(wǎng)絡(luò)包數(shù)據(jù)統(tǒng)計模塊統(tǒng)計包的字節(jié)數(shù)再交由PS 部分的網(wǎng)絡(luò)包數(shù)據(jù)分析模塊計算出數(shù)據(jù)速率。最后,將所有計算結(jié)果通過組包模塊、萬兆以太網(wǎng)子系統(tǒng)IP 核封裝成標準以太網(wǎng)數(shù)據(jù)包由OP2 發(fā)送至管理主機。
圖5 上邊為測試系統(tǒng)實物圖,包含了(從左往右)兩臺通信主機、一臺萬兆以太網(wǎng)監(jiān)控系統(tǒng)、一臺本地管理主機、一臺遠程管理主機。其中萬兆以太網(wǎng)監(jiān)控系統(tǒng)如圖5 所示,下邊正插在本地管理主機上。
圖5 測試系統(tǒng)實物圖
協(xié)議統(tǒng)計測試主要測試在通信主機1 與通信主機2 正常通信時,流量統(tǒng)計架構(gòu)能否將各個協(xié)議的字節(jié)數(shù)和包數(shù)統(tǒng)計出來。
為了保證統(tǒng)計的萬兆以太網(wǎng)數(shù)據(jù)可控[17-18],可以直接觀察統(tǒng)計架構(gòu)的正確性,人為控制通信主機1發(fā)送如圖6 所示的各個協(xié)議數(shù)據(jù)包,并按照ARP、ICMP、TCP、UDP 的包數(shù)為1∶1∶1∶4 的比例進行發(fā)送,其中TCP、UDP 的數(shù)據(jù)總量的比例也接近1∶4??梢钥吹阶詈蟮慕y(tǒng)計結(jié)果與發(fā)送數(shù)據(jù)的預(yù)期一致,說明了流量統(tǒng)計架構(gòu)的可行性,并且能夠支持ARP、ICMP、TCP、UDP 等協(xié)議包的管理監(jiān)測。
圖6 協(xié)議統(tǒng)計測試結(jié)果
流表統(tǒng)計測試主要測試通信主機1 與通信主機2 正常通信時,流量統(tǒng)計架構(gòu)能否準確地分辨每一條流,并對不同流進行統(tǒng)計。
如圖7 所示,通信主機1 發(fā)送源IP 地址、目的IP地址、源端口固定,但目的端口從5 600 遞增的以太網(wǎng)數(shù)據(jù)包各10 包,可以看到最后的統(tǒng)計結(jié)果,將流的五元組以及包數(shù)準確地統(tǒng)計出來,支持了3 100 條數(shù)據(jù)記錄,統(tǒng)計延遲僅為703 μs,可以支持高吞吐量的以太網(wǎng)數(shù)據(jù)鏈路。
圖7 流表統(tǒng)計測試結(jié)果
應(yīng)用層分析測試主要測試流量統(tǒng)計架構(gòu)對于應(yīng)用層數(shù)據(jù)各個參數(shù)的分析結(jié)果。測試結(jié)果如圖8 所示,可以看到,流量統(tǒng)計架構(gòu)解析除了HTTP 協(xié)議的請求類型、主機域名、狀態(tài)代碼等信息。說明流量統(tǒng)計架構(gòu)能夠?qū)σ蕴W(wǎng)數(shù)據(jù)的應(yīng)用層的數(shù)據(jù)部分進行分析。
圖8 應(yīng)用層分析測試結(jié)果
為了解決高流量數(shù)據(jù)通路的管理問題,提出了一種基于ZYNQ 的萬兆以太網(wǎng)流量統(tǒng)計架構(gòu),通過將萬兆以太網(wǎng)數(shù)據(jù)包進行卸載分離,并行處理包頭信息和數(shù)據(jù)信息,交給后續(xù)模塊進行統(tǒng)計分析。將所述架構(gòu)應(yīng)用于“萬兆以太網(wǎng)監(jiān)控系統(tǒng)”,經(jīng)測試該監(jiān)控系統(tǒng)功能完善,并且能夠支持多種協(xié)議統(tǒng)計以及高吞吐鏈路統(tǒng)計。