蔡鷗,劉一清
(華東師范大學通信與電子工程學院,上海 200241)
隨著互聯網技術的不斷進步,網絡速率不斷提升,萬兆以太網接口已經成為了核心網的主流設備接口[1-4],更高的吞吐量帶來了更嚴峻的安全挑戰[5]。為了減少高吞吐量的萬兆以太網鏈路中的數據異常以及網絡攻擊帶來的損失,需要對鏈路中的網絡流的信息有極深的了解,知道每一包數據的來源和目的,知道鏈路的數據量和數據速率,對流量歷史數據進行整理[6-7],以此對該條鏈路進行全面可靠的管理。此時,高性能的萬兆以太網流信息統計架構就顯得尤為重要。
ZYNQ-Ultrascale+是Xilinx 公司推出的MPSoC(Multi-ProcessorSystem onChip)芯片,其內部可分為PL(Programmable Logic)以及PS(Procressing System)兩部分。PL 端集成了現場可編程陣列(Field-Programmable Gate Array,FPGA),而在PS 端包含多核ARM Cortex-A53 處理器。這種結構保證了PL 和PS之間的高速連接,可以快速處理萬兆以太網數據并進行反饋[8-10]。
該架構采用了ZYNQ-Ultrascale+器件來管理萬兆以太網的數據包,能夠處理達到萬兆線速的網絡數據包,并且具有低延時、高吞吐的特點[11-12]。
所設計萬兆以太網流信息統計架構如圖1 所示,分為PS 和PL 兩個部分。其中,PL 部分主要包括了Xilinx 的萬兆以太網子系統IP 核(10G Ethernet Subsystem)、包頭檢測與校驗模塊(Packet Detection and Checking)、包頭卸載模塊(Packet Offload)、流表控制模塊(Flow Table Control)、流表建立模塊(Flow Table Establish)、流表統計模塊(Flow Table Statistics)、網絡包數據統計模塊(Packet Data Statistics)以及組包模塊(Packet Buliding)。PS 部分主要包含了流表信息計算與分析模塊(Flow Table Calculation and Analysis)以及網絡包數據分析模塊(Packet Data Analysis)。

圖1 總體結構圖
該架構中有兩個光口,其中一個光口OP1 接入到網絡鏈路的鏡像端口,通過鏡像端口輸入該網絡鏈路的所有網絡數據,通過Xilinx 的萬兆以太網子系統IP 核將數據解析成為AXI4-Stream 類型的數據,再通過后續的包頭檢測與校驗模塊驗證網絡數據包的合法性,包頭卸載模塊將數據包的包頭信息和數據信息進行分離,同時將包頭中的五元組信息——協議、源IP 地址、目的IP 地址、源端口、目的端口組裝成為流信息,將所有相同五元組信息視為同一個流,來進行后續流信息的統計與管理。網絡流信息大大減少了網絡數據,方便了后續處理[13]。流信息通過流表控制模塊進行匹配,如果是未記錄的流則新建流表表項,如果是已記錄的流則進行流表的更新統計。更新的流表以及網絡數據包的數據部分交由PS 部分的流表信息計算與分析模塊以及網絡包數據分析模塊對以太網流信息進行統計分析,包括計算數據速率,統計流表表項,統計網絡數據總量,各個協議的吞吐量等。
另一個光口OP2 連接至管理網絡鏈路中,用戶可以通過OP2 控制流信息的統計方式以及查看OP1以太網鏈路的統計結。
該架構使用的萬兆以太網子系統IP 核為Xilinx公司推出的10G以太網MAC(Media Access Controller)層和物理層的解析方案,該IP 核支持IEEE 802.3 標準以太網協議,其中還定義了PCS(Physical Coding Sublayer)子層的64B/65B 編解碼。該IP 核的物理層主要完成了數據的編解碼、串化和解串、信號的放大、調制和整型;MAC 層主要完成了幀定界、同步、尋址、錯誤檢測、沖突處理等任務[14]。
通過使用萬兆以太網子系統IP 核,可以將10GBASE-R 標準的以太網數據流與內部可處理的64 位AXI4-Stream 數據格式進行轉換[15],具體的數據時序如圖2 所示。當有外部萬兆以太網數據包進入到ZYNQ 芯片,IP 核會將tvalid 信號拉高來表示有數據到來,有效的以太網數據將會在tdata[63:0]信號上傳輸,同時tkeep[7:0]信號會在數據傳輸過程中持續全部拉高。當一幀以太網數據全部傳輸完成,則會在最后一個時鐘拉高tlast 信號,同時tkeep[7:0]信號的每一位會根據最后tdata 信號的有效位相應拉高。如最后一個時鐘只有tdata[7:0]的數據有效,則只有tkeep[0]拉高,其他位均拉低。

圖2 AXI4-Stream數據時序
該模塊主要將IP 核輸入的AXI4-Stream 格式的以太網數據進行協議檢測,并且根據相應的協議進行網絡層校驗。網絡層的具體校驗過程為:將其中校驗和置0,將所有IP 首部以16 位為單位組成的數字二進制相加,并且將全部相加得到的高16 位數字加到低16 位上,將最后得到的數字二進制取反即可得到傳輸正確的校驗和[16]。該模塊主要保證了進行統計的是傳輸有效的以太網數據包。
該模塊主要將傳輸正確的以太網數據包的包頭信息以及數據部分分離。其中包頭信息包括了MAC 層頭部的源MAC 地址、目的MAC 地址以及網絡層頭部的源IP 地址、目的IP 地址、源端口、目的端口;數據部分指的是以太網數據包應用層以上的數據。經過包頭卸載模塊,將分離出來的五元組作為同一個流的判斷標準交給流表控制模塊進行判斷,將分離的數據部分交給網絡包數據統計模塊進行統計。
該模塊主要將包頭卸載模塊中的五元組信息,與現有的五元組流表進行匹配。五元組中只要有一個元素不匹配即為一條新的流,每一條流代表的即是一臺主機的一個端口發送至另一臺主機相同端口的所有數據的集合。為了提高匹配的速率,減小統計延時,采用了并行子塊的方式,將3 200 條流表分成了100 個子塊進行匹配。每個子塊最高存儲32 條流表,并且采用橫向存儲的方式,具體的存儲順序為子塊0→子塊1→……→子塊0→子塊1→……,保證了每個子塊的匹配深度大致相同,進一步提高匹配的效率。通過匹配流的五元組信息,如果是新的流則后續交給流表建立模塊進行流表更新,如果是已有的流,則交給流表統計模塊進行該流的包數統計。
該模塊完成了新流的建立以及流表的更新,新流的數據格式如圖3 所示,其中源MAC 地址和目的MAC 地址為48 位,不作為流表統計的匹配元素。8位協議、16 位源端口、16 位目的端口、32 位源IP 地址和32 位目的IP 地址作為匹配的關鍵元素。24 位時間戳是在器件上電之后該流進入流表控制模塊的最新時間,單位為秒,時間戳是用來判斷是否要主動刪除過久沒有數據包的流。包數則是用來統計該流總共的以太網數據包數。

圖3 流數據格式
該模塊主要將流表控制模塊的匹配流進行包數統計。這里主要將已存在流的包數進行計數并且更新最新流的時間戳,同時也對流表中過期的流進行刪除,流表中表項的生存時間設置為7 天,7 天之內沒有任何該流的數據包到來則認為該流過期,進行刪除。
該模塊主要將包頭卸載模塊的網絡數據部分進行緩存并統計該包數據的字節數。其中緩存部分用DDR4 存儲器進行,DDR4 的讀寫速率為2 666 Mb/s,同時緩存1 000 包的網絡數據,并可交由網絡包數據分析模塊進行后續處理。
該模塊主要將建立的流表進行計算與分析。經過流表建立模塊和流表統計模塊后獲得最新的流表,可以在PS 部分進行數據整合以及分析,具體分析結果包括某一條流的包數,特定協議的流的個數,TCP 的同步、握手包包數,接收數據最多的目的IP 地址,發送數據最多的源IP 地址以及系統時間等等。
該模塊主要對以太網數據包數據部分進行分析,可以計算出網絡數據包的實時速率,以及系統上電以來的數據總數,并且可以對部分應用層協議進行初步解析,包括DNS、HTTP、HTTPS,可以解析出域名網址、請求類型等參數。
該模塊主要將流表信息計算與分析模塊以及網絡包數據分析模塊的結果合并為數據流,并且加上管理主機的MAC 地址、IP 地址、端口,同時再進行校驗和計算,以此構建成AXI4-Stream 格式的合法以太網數據包交付給后續萬兆以太網子系統IP 核通過OP1 來發送給管理鏈路,供管理人員進行查看。
接下來以實際的“萬兆以太網監控系統”為例來介紹設計的架構如何進行應用。圖4 展示了監控系統的應用示意圖,包含了兩臺通信主機、一臺萬兆以太網監控系統、一臺管理主機。其中監控系統采用的就是所設計的基于ZYNQ 的萬兆以太網流信息統計架構。所用的核心芯片型號為ZYNQ-Ultrascale+系列的XCZU7EG 芯片。監控系統主要管理通信主機1 至通信主機2 之間的網絡鏈路,通過OP1 進行以太網數據輸入,再通過所述架構的工作,從OP2 將管理結果傳輸至管理主機進行查看,完成了對于以太網鏈路的監控,確保了以太網環境的可控性。

圖4 萬兆以太網監控系統應用示意圖
通信主機1 與通信主機2 的網絡鏈路正常進行數據交互,并將所有以太網數據復制一份至監控系統的OP1。當OP1 監測到以太網數據,監控系統內部根據所述架構中PL 部分的萬兆以太網子系統IP核、包頭檢測與校驗模塊、包頭卸載模塊將合法的以太網數據包解析成為五元組信息以及數據信息。五元組信息通過流表控制模塊、流表建立模塊、流表統計模塊構建實時的流表最后交由PS 部分的流表信息計算與分析模塊分析出感興趣的結果。數據信息通過網絡包數據統計模塊統計包的字節數再交由PS 部分的網絡包數據分析模塊計算出數據速率。最后,將所有計算結果通過組包模塊、萬兆以太網子系統IP 核封裝成標準以太網數據包由OP2 發送至管理主機。
圖5 上邊為測試系統實物圖,包含了(從左往右)兩臺通信主機、一臺萬兆以太網監控系統、一臺本地管理主機、一臺遠程管理主機。其中萬兆以太網監控系統如圖5 所示,下邊正插在本地管理主機上。

圖5 測試系統實物圖
協議統計測試主要測試在通信主機1 與通信主機2 正常通信時,流量統計架構能否將各個協議的字節數和包數統計出來。
為了保證統計的萬兆以太網數據可控[17-18],可以直接觀察統計架構的正確性,人為控制通信主機1發送如圖6 所示的各個協議數據包,并按照ARP、ICMP、TCP、UDP 的包數為1∶1∶1∶4 的比例進行發送,其中TCP、UDP 的數據總量的比例也接近1∶4。可以看到最后的統計結果與發送數據的預期一致,說明了流量統計架構的可行性,并且能夠支持ARP、ICMP、TCP、UDP 等協議包的管理監測。

圖6 協議統計測試結果
流表統計測試主要測試通信主機1 與通信主機2 正常通信時,流量統計架構能否準確地分辨每一條流,并對不同流進行統計。
如圖7 所示,通信主機1 發送源IP 地址、目的IP地址、源端口固定,但目的端口從5 600 遞增的以太網數據包各10 包,可以看到最后的統計結果,將流的五元組以及包數準確地統計出來,支持了3 100 條數據記錄,統計延遲僅為703 μs,可以支持高吞吐量的以太網數據鏈路。

圖7 流表統計測試結果
應用層分析測試主要測試流量統計架構對于應用層數據各個參數的分析結果。測試結果如圖8 所示,可以看到,流量統計架構解析除了HTTP 協議的請求類型、主機域名、狀態代碼等信息。說明流量統計架構能夠對以太網數據的應用層的數據部分進行分析。

圖8 應用層分析測試結果
為了解決高流量數據通路的管理問題,提出了一種基于ZYNQ 的萬兆以太網流量統計架構,通過將萬兆以太網數據包進行卸載分離,并行處理包頭信息和數據信息,交給后續模塊進行統計分析。將所述架構應用于“萬兆以太網監控系統”,經測試該監控系統功能完善,并且能夠支持多種協議統計以及高吞吐鏈路統計。