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