馬建鵬 喻崇仁 王施人 侯春雷
(北京計算機技術(shù)及應(yīng)用研究所 北京市 100039)
互聯(lián)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,給人們的工作和生活帶來了很多便利[1]。然而,由于TCP/IP 協(xié)議發(fā)展初期,受制于應(yīng)用場景、技術(shù)設(shè)備條件等,缺乏安全性考量,導(dǎo)致通過網(wǎng)絡(luò)傳輸?shù)男畔⒚媾R泄露、冒充與篡改等安全風(fēng)險[2]。
傳統(tǒng)基于軟件的網(wǎng)絡(luò)數(shù)據(jù)加密方案,在高速網(wǎng)絡(luò)數(shù)據(jù)傳輸時,帶來了較大的CPU 運算負(fù)擔(dān),甚至可能影響常規(guī)的業(yè)務(wù)事務(wù)處理?;贔PGA 的網(wǎng)絡(luò)數(shù)據(jù)安全傳輸設(shè)計,在解放CPU 算力的同時,借助FPGA 豐富的IO 與邏輯等資源,帶來了更多設(shè)計靈活性,以及更多的可擴展空間[3]。
本系統(tǒng)使用處理器+FPGA 的硬件架構(gòu)。其中,F(xiàn)PGA 選用美國Xilinx 公司Kintex-7 系列FPGA[4];處理器選用龍芯中科技術(shù)股份有限公司的2K1000 處理器[5];千兆以太網(wǎng)PHY 選用裕太微電子股份有限公司的YT8511 系列芯片[6]。
本系統(tǒng)由處理器軟件與FPGA 邏輯兩部分構(gòu)成,如圖1 所示。其中,處理器軟件主要完成應(yīng)用數(shù)據(jù)的事務(wù)處理;FPGA 邏輯完成收發(fā)數(shù)據(jù)的鏈路層、IP 層與傳輸層協(xié)議[7]處理、應(yīng)用數(shù)據(jù)的加解密處理,以及與處理器軟件的傳輸通信。
圖1:系統(tǒng)詳細(xì)設(shè)計
1.2.1 鏈路層設(shè)計
鏈路層完成TCP/IP 協(xié)議棧鏈路層相關(guān)功能,主要包括以太網(wǎng)MAC IP核、MAC接收緩存、MAC發(fā)送緩存、以太網(wǎng)MAC IP 核參數(shù)控制、接收控制、ARP 控制、發(fā)送控制、IP 包發(fā)送緩存等模塊。
1.2.1.1 以太網(wǎng)MAC IP 核模塊以太網(wǎng)MAC IP 核模塊主要完成以太網(wǎng)鏈路層與物理層的快速接入。本模塊是一個實例化的TEMAC 核,被配置成1Gbps 的最高接口速率,RGMII 的PHY 接口,自適應(yīng)的三速匹配模式,以及配置矢量的管理類型。
1.2.1.2 MAC 接收緩存模塊
MAC 接收緩存模塊對來自以太網(wǎng)MAC IP 核模塊的數(shù)據(jù)進(jìn)行接收緩存以及跨時域轉(zhuǎn)換,是一個實例化的AXI4-Stream Data FIFO IP 核。
1.2.1.3 MAC 發(fā)送緩存模塊
MAC 發(fā)送緩存模塊對發(fā)往以太網(wǎng)MAC IP 核模塊的數(shù)據(jù)進(jìn)行發(fā)送緩存以及跨時域轉(zhuǎn)換,是一個實例化的AXI4-Stream Data FIFO IP 核。
1.2.1.4 以太網(wǎng)MAC IP 核參數(shù)控制模塊
以太網(wǎng)MAC IP 核參數(shù)控制模塊主要完成對以太網(wǎng)PHY 芯片的復(fù)位,以及以太網(wǎng)MAC IP 核模塊配置矢量的生成。
以太網(wǎng)MAC IP 核參數(shù)控制模塊在上電與重連后生成滿足以太網(wǎng)PHY 芯片手冊要求的復(fù)位時序;通過MDIO 接口讀取以太網(wǎng)PHY 芯片連接參數(shù),并生成塊配置矢量。
1.2.1.5 接收控制模塊
接收控制模塊在接收控制狀態(tài)機的控制下,完成報文幀頭解析與數(shù)據(jù)分發(fā)。接收控制狀態(tài)機如圖2 所示。
圖2:接收控制狀態(tài)機
狀態(tài)機在空閑狀態(tài),接收到來自MAC 接收緩存模塊的data_valid 信號后,進(jìn)入接收以太網(wǎng)頭部狀態(tài),并產(chǎn)生data_ready 信號,在該狀態(tài)下,接收并解析以太網(wǎng)頭部長度/類型字段,若為IP 類型,則進(jìn)入轉(zhuǎn)發(fā)IP 數(shù)據(jù)狀態(tài);若為ARP 類型,則進(jìn)入轉(zhuǎn)發(fā)ARP 數(shù)據(jù)狀態(tài);若為其它值,則進(jìn)入處理其它數(shù)據(jù)狀態(tài)。在轉(zhuǎn)發(fā)IP 數(shù)據(jù)狀態(tài)、轉(zhuǎn)發(fā)ARP 數(shù)據(jù)狀態(tài)或處理其它數(shù)據(jù)狀態(tài),完成數(shù)據(jù)轉(zhuǎn)發(fā),則進(jìn)入接收完成狀態(tài);并在一個時鐘周期后,進(jìn)入空閑狀態(tài)。
1.2.1.6 ARP 控制模塊
ARP 控制模塊維護(hù)一個IP 地址-MAC 地址映射表,完成IP 地址到MAC 地址的遍歷匹配,以及ARP 請求幀與響應(yīng)幀的生成。
對IP 地址-MAC 地址映射表的每一個映射對都進(jìn)行了編號。匹配成功時,將匹配的映射對編號設(shè)置為0,并更新其它編號。匹配失敗并獲取新的映射關(guān)系時,采用LRU 更新策略,將最編號最大的映射對進(jìn)行替換,設(shè)置其編號為0,并更新其它編號。
IP 地址到MAC 地址的遍歷匹配過程在MAC 匹配控制狀態(tài)機的控制下進(jìn)行,如圖3 所示。
圖3:MAC 匹配控制狀態(tài)機
在空閑狀態(tài)時,接收到MAC 匹配請求后,進(jìn)入IP地址匹配狀態(tài),進(jìn)行IP 地址-MAC 地址的遍歷匹配,若匹配成功,則完成此次匹配過程,回到空閑狀態(tài);若匹配失敗,則進(jìn)入等待ARP 請求包發(fā)送完成狀態(tài),進(jìn)行ARP 請求幀的生成與傳輸。在等待ARP 請求包發(fā)送完成狀態(tài),若收到ARP 請求幀傳輸完成信號,則進(jìn)入獲取ARP 響應(yīng)包狀態(tài);若收到超時信號,則進(jìn)入ARP請求超時狀態(tài)。在獲取ARP 響應(yīng)包狀態(tài),若收到MAC匹配成功信號,則進(jìn)入MAC 地址獲取成功狀態(tài);若收到超時信號,則進(jìn)入ARP 請求超時狀態(tài)。在MAC 地址獲取成功狀態(tài),收到MAC 地址使用完成信號,則進(jìn)入空閑狀態(tài),完成此次匹配過程。
ARP 請求幀與響應(yīng)幀的生成過程在ARP 傳輸控制狀態(tài)機的控制下進(jìn)行,如圖4 所示。
圖4:ARP 傳輸控制狀態(tài)機
ARP 傳輸控制狀態(tài)機在空閑狀態(tài),接收到ARP 請求幀發(fā)送請求后,進(jìn)入ARP 請求幀發(fā)送確認(rèn)狀態(tài),并在一個時鐘周期后進(jìn)入ARP 請求幀發(fā)送狀態(tài),開始ARP 請求幀的生成與傳輸;在ARP 請求幀發(fā)送狀態(tài),接收到ARP請求幀傳輸完成信號后,進(jìn)入發(fā)送完成狀態(tài)。ARP 傳輸控制狀態(tài)機在空閑狀態(tài),接收到ARP 請求幀接收信號后,進(jìn)入ARP 響應(yīng)幀發(fā)送確認(rèn)狀態(tài),并在一個時鐘周期后進(jìn)入ARP 響應(yīng)幀發(fā)送狀態(tài),開始ARP 響應(yīng)幀的生成與傳輸;在ARP 響應(yīng)幀發(fā)送狀態(tài),接收到ARP 響應(yīng)幀傳輸完成信號后,進(jìn)入發(fā)送完成狀態(tài)。在發(fā)送完成狀態(tài),一個時鐘周期后進(jìn)入空閑狀態(tài)。
1.2.1.7 發(fā)送控制模塊
發(fā)送控制模塊在發(fā)送控制狀態(tài)機的控制下,完成以太網(wǎng)幀的傳輸。發(fā)送控制狀態(tài)機如圖5 所示。
圖5:發(fā)送控制狀態(tài)機
發(fā)送控制狀態(tài)機在空閑狀態(tài),接收到MAC 地址匹配超時信號與緩存full 信號后,進(jìn)入丟棄緩存數(shù)據(jù)狀態(tài),進(jìn)行緩存數(shù)據(jù)的清除處理再接收到丟棄完成信號,進(jìn)入空閑狀態(tài)。在空閑狀態(tài),接收到MAC 地址匹配成功信號與緩存full 信號,進(jìn)入發(fā)送緩存數(shù)據(jù)以太網(wǎng)頭部狀態(tài),完成以太網(wǎng)頭部的生成與傳輸后,進(jìn)入發(fā)送緩存數(shù)據(jù)狀態(tài),待緩存數(shù)據(jù)傳輸完成后,進(jìn)入空閑狀態(tài)。在空閑狀態(tài),接收到IP 數(shù)據(jù)就緒信號后,進(jìn)入獲取MAC 地址狀態(tài),若接收到MAC 地址匹配失敗信號且緩存不滿,進(jìn)入緩存IP 數(shù)據(jù)狀態(tài),并在完成緩存后回到空閑狀態(tài);若接收到MAC 地址匹配成功信號,進(jìn)入發(fā)送IP 數(shù)據(jù)以太網(wǎng)頭部狀態(tài),完成以太網(wǎng)頭部的生成與傳輸后,進(jìn)入發(fā)送IP 數(shù)據(jù)狀態(tài),并在完成傳輸后回到空閑狀態(tài)。在空閑狀態(tài),接收到ARP 數(shù)據(jù)就緒信號后,進(jìn)入發(fā)送ARP 數(shù)據(jù)狀態(tài),并在完成傳輸后回到空閑狀態(tài)。
1.2.1.8 IP 包發(fā)送緩存模塊
IP 包發(fā)送緩存模塊對來自IP 層功能模塊的發(fā)送數(shù)據(jù)進(jìn)行臨時緩存,是一個實例化的AXI4-Stream Data FIFO IP 核。
1.2.2 IP 層設(shè)計
IP 層完成TCP/IP 協(xié)議棧IP 層相關(guān)功能,主要包括IP 層接收控制、ICMP 控制、IP 層發(fā)送緩存和IP 事務(wù)處理控制等模塊。
1.2.2.1 IP 層接收控制模塊
IP 層接收控制模塊在IP 層接收控制狀態(tài)機的控制下,完成IP 包的解析與數(shù)據(jù)分發(fā)。IP 層接收控制狀態(tài)機如圖6 所示。
圖6:IP 層接收控制狀態(tài)機
IP 層接收控制狀態(tài)機在空閑狀態(tài),接收到數(shù)據(jù)有效信號進(jìn)入接收IP 頭部狀態(tài),并在頭部完成接收后,進(jìn)入IP 有效性檢查狀態(tài),對IP 頭部進(jìn)行合規(guī)性檢測。在IP 有效性檢查狀態(tài),若IP 頭部字段值不合規(guī),則回到空閑狀態(tài);若協(xié)議類型字段為UDP,則進(jìn)入轉(zhuǎn)發(fā)UDP數(shù)據(jù)狀態(tài),并在完成轉(zhuǎn)發(fā)后,進(jìn)入轉(zhuǎn)發(fā)完畢狀態(tài);若協(xié)議類型字段為ICMP,則進(jìn)入轉(zhuǎn)發(fā)ICMP 數(shù)據(jù)狀態(tài),并在完成轉(zhuǎn)發(fā)后,進(jìn)入轉(zhuǎn)發(fā)完畢狀態(tài);若協(xié)議類型字段為其他值,則進(jìn)入轉(zhuǎn)發(fā)其它數(shù)據(jù)狀態(tài),并在完成轉(zhuǎn)發(fā)后,進(jìn)入轉(zhuǎn)發(fā)完畢狀態(tài)。在轉(zhuǎn)發(fā)完畢狀態(tài),一個時鐘周期后,回到空閑狀態(tài)。
1.2.2.2 ICMP 控制模塊
ICMP 控制模塊主要完成ICMP 回顯請求報文的接收解析與ICMP 回顯響應(yīng)報文的生成,由ICMP 接收緩存、ICMP 發(fā)送緩存與ICMP 傳輸控制邏輯組成。ICMP控制模塊在完成ICMP 回顯請求報文的接收解析后,根據(jù)請求報文數(shù)據(jù)內(nèi)容生成ICMP 回顯響應(yīng)報文。
1.2.2.3 IP 層發(fā)送緩存模塊
IP 層發(fā)送緩存模塊對來自IP 層功能模塊的發(fā)送數(shù)據(jù)進(jìn)行緩存,是一個實例化的AXI4-Stream Data FIFO IP 核。
1.2.2.4 IP 事務(wù)處理控制模塊
IP 事務(wù)處理控制模塊主要完成數(shù)據(jù)的IP 協(xié)議封裝與解析,即對來自鏈路層的網(wǎng)絡(luò)接收數(shù)據(jù)進(jìn)行IP 協(xié)議頭部的去除,以及對來自傳輸層的待傳輸網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行IP 協(xié)議頭部的生成。
1.2.3 傳輸層設(shè)計
傳輸層完成TCP/IP 協(xié)議棧傳輸層相關(guān)功能,主要由UDP 事務(wù)處理控制模塊構(gòu)成。
UDP 事務(wù)處理控制模塊主要完成應(yīng)用數(shù)據(jù)的分片,以及特定端口號數(shù)據(jù)的UDP 協(xié)議封裝與解析,即對來自應(yīng)用層的數(shù)據(jù)按照最大路徑傳輸長度進(jìn)行分片處理并對分片數(shù)據(jù)進(jìn)行UDP 數(shù)據(jù)包的生成,對來自IP 層的網(wǎng)絡(luò)接收數(shù)據(jù)進(jìn)行UDP 協(xié)議頭部的緩存與UDP 協(xié)議數(shù)據(jù)的傳輸。
1.2.4 應(yīng)用層設(shè)計
應(yīng)用層完成TCP/IP 協(xié)議棧應(yīng)用層相關(guān)功能,包括應(yīng)用數(shù)據(jù)加解密模塊、處理器接口控制模塊與應(yīng)用事務(wù)處理控制軟件。
1.2.4.1 應(yīng)用數(shù)據(jù)加密模塊
應(yīng)用數(shù)據(jù)加密模塊對來自傳輸層的數(shù)據(jù)使用SM4算法[8]進(jìn)行解密轉(zhuǎn)發(fā)處理,以及對來自處理器接口控制模塊的數(shù)據(jù)使用SM4 算法進(jìn)行加密處理。
1.2.4.2 處理器接口控制模塊
處理器接口控制模塊完成對PCIe 接口數(shù)據(jù)的收發(fā)控制與DMA 傳輸控制,以及收發(fā)數(shù)據(jù)的緩存控制。本模塊是一個實例化的XDMA 核。
1.2.4.3 應(yīng)用事務(wù)處理控制軟件
應(yīng)用事務(wù)處理控制軟件完成分片數(shù)據(jù)的重組,以及實際的業(yè)務(wù)處理。
系統(tǒng)測試通過調(diào)試計算機進(jìn)行,如圖7 所示。調(diào)試計算機與系統(tǒng)硬件通過網(wǎng)線相連。
圖7:測試平臺
調(diào)試計算機為x86 架構(gòu),運行Win7 操作系統(tǒng),IP地址為192.168.1.221,通過CMD 命令或網(wǎng)絡(luò)調(diào)試助手軟件產(chǎn)生測試激勵,通過WireShark 軟件或網(wǎng)絡(luò)調(diào)試助手軟件觀察系統(tǒng)輸出結(jié)果。
ping 命令測試,即在命令行界面,通過使用ping命令,產(chǎn)生ICMP 回顯請求報文,并期待ICMP 回顯響應(yīng)報文。測試過程如圖8 所示。
調(diào)試計算機執(zhí)行ping 命令后,產(chǎn)生ARP 請求幀用以獲取IP 目的地址對應(yīng)的MAC 地址。調(diào)試計算機得到合規(guī)的ARP 響應(yīng)幀后,產(chǎn)生ping 命令對應(yīng)的ICMP 回顯請求報文。調(diào)試計算機得到合規(guī)的ICMP 回顯響應(yīng)報文后,完成一輪交互。由圖8 可知,系統(tǒng)通過ping 命令測試。
應(yīng)用事務(wù)測試,即通過網(wǎng)絡(luò)調(diào)試助手軟件產(chǎn)生UDP測試報文,并期待系統(tǒng)處理后的UDP 響應(yīng)報文。測試過程如圖9 所示。
圖9:應(yīng)用事務(wù)測試
系統(tǒng)接收到測試激勵后,提取UDP 報文數(shù)據(jù),進(jìn)行解密處理后,交由處理器進(jìn)行事務(wù)處理;接收到處理器數(shù)據(jù)后,進(jìn)行加密處理,再回復(fù)調(diào)試計算機。由圖9可知,系統(tǒng)完成對應(yīng)用事務(wù)的處理測試。
本文在深入分析研究TCP/IP 協(xié)議和網(wǎng)絡(luò)安全控制技術(shù)的基礎(chǔ)上,提出并實現(xiàn)了基于以太網(wǎng)接口的安全傳輸系統(tǒng),并通過了系統(tǒng)仿真和基于調(diào)試板卡的半實物驗證。測試表明,系統(tǒng)可以完成正常網(wǎng)絡(luò)協(xié)議交互,以及應(yīng)用數(shù)據(jù)加解密處理功能。