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