◆盧宇浩 廖 游
基于狀態(tài)檢測技術(shù)的NAT設(shè)計與FPGA實現(xiàn)
◆盧宇浩 廖 游
(中國電子科技集團第三十研究所 四川 610000)
隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)地址資源需求也在不斷增長,網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT) 依然是緩解網(wǎng)絡(luò)地址緊缺問題非常有效手段,新形勢下網(wǎng)絡(luò)安全設(shè)備對于使用國產(chǎn)化芯片的需求越來越高,本文提出了一種基于狀態(tài)檢測技術(shù)的NAT設(shè)計,并在國產(chǎn)CPU和FPGA的平臺上進行了試驗和驗證。
網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT);狀態(tài)檢測;可編程邏輯陣列(FPGA);國產(chǎn)化平臺
隨著互聯(lián)網(wǎng)的快速發(fā)展,互聯(lián)網(wǎng)用戶數(shù)量、終端以及業(yè)務(wù)類型都在飛速增加,網(wǎng)絡(luò)地址資源需求也在不斷增長[1],雖然業(yè)界提出從IPV4過渡到IPV6,將網(wǎng)絡(luò)協(xié)議中的IP地址從32bits增加到128bits,徹底解決網(wǎng)絡(luò)地址資源緊缺問題[2],但是由于IPV6的全面推廣過程較慢,而5G、物聯(lián)網(wǎng)等技術(shù)突飛猛進,網(wǎng)絡(luò)地址緊缺的現(xiàn)象并沒有緩解,網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT) 依然是緩解網(wǎng)絡(luò)地址緊缺問題非常有效手段[3]。
2019年,中美貿(mào)易戰(zhàn)再次升級,網(wǎng)絡(luò)安全設(shè)備中的進口芯片已成為“卡脖子”問題,新形勢下網(wǎng)絡(luò)安全設(shè)備芯片自主可控勢在必行,然而由于國產(chǎn)處理器網(wǎng)絡(luò)數(shù)據(jù)包處理性能較低,使用國產(chǎn)FPGA來實現(xiàn)硬件加速,提升國產(chǎn)化平臺的整體處理性能就顯得非常重要。
NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù)的基本功能是用一個或幾個公網(wǎng)IP地址來實現(xiàn)一個局域網(wǎng)網(wǎng)絡(luò)上所有主機都可以訪問公網(wǎng)[4]。NAT實現(xiàn)的方式有很多,包括源地址轉(zhuǎn)換(SNAT)、目的地址轉(zhuǎn)換(DNAT)以及雙向地址轉(zhuǎn)換(雙向NAT)。本文設(shè)計將支持以上所有NAT轉(zhuǎn)換方式。各轉(zhuǎn)換方式基本功能和特點如下:
源地址轉(zhuǎn)換(SNAT):用于將符合條件的數(shù)據(jù)進行源IP地址轉(zhuǎn)換,最常用的是設(shè)備部署在公網(wǎng)出口時,代理內(nèi)網(wǎng)用戶上網(wǎng),需要設(shè)置源地址轉(zhuǎn)換規(guī)則進行源地址轉(zhuǎn)換。內(nèi)部網(wǎng)絡(luò)中的所有主機均可共享一個或者多個合法外部網(wǎng)絡(luò)地址實現(xiàn)對外網(wǎng)的訪問[5]。
目標地址轉(zhuǎn)換(DNAT):用于對經(jīng)過設(shè)備的數(shù)據(jù)做目標地址轉(zhuǎn)換。通過將內(nèi)外服務(wù)器的服務(wù)映射到公網(wǎng),使外網(wǎng)用戶通過訪問防火墻上的公網(wǎng)IP訪問到內(nèi)網(wǎng)服務(wù)器。
雙向地址轉(zhuǎn)換(雙向NAT):指在對經(jīng)過設(shè)備的數(shù)據(jù)同時作含源地址和目標地址轉(zhuǎn)換,用于內(nèi)外用戶通過公網(wǎng)IP或者域名訪問內(nèi)網(wǎng)的服務(wù)器的情況。
狀態(tài)檢測技術(shù):是當今防火墻市場中普遍采用的主流技術(shù),是一種基于會話連接的狀態(tài)檢測機制,將屬于同一會話的所有包作為一個整體的數(shù)據(jù)流看待[6],構(gòu)成會話狀態(tài)表,通過規(guī)則表與狀態(tài)表的共同配合,對表中的各個連接狀態(tài)因素加以識別[7],對數(shù)據(jù)報文進行丟棄或放行。
本文設(shè)計的具體業(yè)務(wù)流程如圖1所示,包括FPGA業(yè)務(wù)流程和CPU業(yè)務(wù)流程。
報文進行FPGA的會話表過濾模塊后,提取報文中的五元組信息查表,若未能匹配表項,則表明此數(shù)據(jù)報文為整個會話首包,需將此報文上傳CPU,進入CPU業(yè)務(wù)流程,若匹配到表項,則進入到下一級會話表過濾流程;模塊根據(jù)返回的動作action判斷報文是否需要丟棄,若不需丟棄,則判斷是否需要進行NAT轉(zhuǎn)換,若需要則根據(jù)返回的80bits替換信息將報文中對應(yīng)的源IP+目的IP+源端口+目的端口進行轉(zhuǎn)換后重新計算IP首部的校驗和更新后,整個過程結(jié)束,報文發(fā)出。
CPU收到FPGA上傳的首包后,開始進入會話跟蹤流程,判斷報文是否通過狀態(tài)檢測,若未通過,則報文丟棄,并下發(fā)丟棄規(guī)則表項到FPGA,此會話后續(xù)數(shù)據(jù)報文由FPGA丟棄,若通過,則判斷是否需要進行NAT轉(zhuǎn)換,若不需要,則直接發(fā)走,若需要,則進行對應(yīng)轉(zhuǎn)換、更新首部校驗以及將報文發(fā)出,并將對應(yīng)的轉(zhuǎn)換內(nèi)容表項下發(fā)到FPGA,后續(xù)由FPGA執(zhí)行轉(zhuǎn)換工作。
圖1 基于狀態(tài)檢測技術(shù)的NAT功能業(yè)務(wù)流程圖
本文使用軟硬件結(jié)合(CPU+FPGA)的方式實現(xiàn)NAT功能,在狀態(tài)檢查技術(shù)的基礎(chǔ)上,加入NAT判斷分支,結(jié)合狀態(tài)檢測技術(shù)中的會話表五元組提取、查表、狀態(tài)跟蹤、表項下發(fā)等流程,將SNAT、DNAT、雙向NAT等多種轉(zhuǎn)換方式的NAT功能直接抽象為利用FPGA的并行處理能力,將數(shù)據(jù)報文中的源IP+目的IP+源端口+目的端口(共80bits)全部進行轉(zhuǎn)換。軟件負責(zé)下發(fā)80位的內(nèi)容,其中若不需更改的內(nèi)容填成原有內(nèi)容,F(xiàn)PGA通過查表查出數(shù)據(jù)報文所需的新源IP+目的IP+源端口+目的端口,并進行對位轉(zhuǎn)換,最后計算更新IP首部校驗和,發(fā)送到下一級模塊,完成整個NAT功能。具體FPGA實現(xiàn)架構(gòu)如圖2。
會話表過濾模塊:模塊包括狀態(tài)檢測技術(shù)中會話表過濾功能,數(shù)據(jù)報文進入模塊后,提取報文中的五元組信息(源IP+目的IP+源端口+目的端口+協(xié)議)進行匹配查表,若無匹配表項,則將該數(shù)據(jù)報文上傳CPU處理,若匹配到表項,則更具返回的action動作將數(shù)據(jù)報文轉(zhuǎn)發(fā)相應(yīng)的處理模塊。
action動作的具體含義如表1。
圖2 FPGA實現(xiàn)架構(gòu)圖
表1 動作action的具體含義
搜索引擎接口模塊:負責(zé)搜索引擎芯片初始化,表項配置管理、查表調(diào)度等功能;
主控模塊:(1)將會話表過濾模塊上報的數(shù)據(jù)報文上傳到CPU;(2)將CPU下發(fā)的會話表表項發(fā)送到搜索引擎接口模塊;(3)根據(jù)搜索引擎返回的index查找片內(nèi)SRAM,得到處理動作action以及NAT轉(zhuǎn)換需要的nat_ip、nat_port等信息。
片內(nèi)SRAM:利用FPGA中的block ram資源生成的SRAM,用于存儲五元組表項對應(yīng)的動作action以及NAT轉(zhuǎn)換需要的nat_ip、nat_port等信息。
NAT轉(zhuǎn)換模塊:只對數(shù)據(jù)報文的源IP+目的IP+源端口+目的端口進行轉(zhuǎn)換,用主控發(fā)來80位數(shù)據(jù)按位置進行相應(yīng)替換操作。
更新IP首部校驗和模塊:對NAT轉(zhuǎn)換后的數(shù)據(jù)報文重新計算IP首部校驗和,并更新。
根據(jù)本文提出的設(shè)計方法,在龍芯2h處理器+紫光國微2V6000 FPGA的全國產(chǎn)軟硬件平臺上進行了驗證,采用TestCenter網(wǎng)絡(luò)測試儀進行網(wǎng)絡(luò)吞吐率測試(表2),測試結(jié)果充分表明基于狀態(tài)檢測技術(shù)的NAT功能利用FPGA硬件加速能力,在全國產(chǎn)化平臺上性能得到了極大的提升,64字節(jié)小包提升18倍,大包接近千兆線速水平。
表2 吞吐率測試結(jié)果
[1]趙勝穎,高廣春.基于FPGA的網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)的實現(xiàn)[J].儀器儀表學(xué)報,2008(8):370-373.
[2]張祖林,徐國洪,印成清.計算機組裝與聯(lián)網(wǎng)技術(shù)[M].華中科技大學(xué)出版社,2005.
[3]林滿.基于以太網(wǎng)技術(shù)的寬帶IP城域網(wǎng)建設(shè)[D].廈門大學(xué),2002.
[4]張廣德.基于SIP的NAT穿越防火墻的研究與設(shè)計[D].上海交通大學(xué),2010.
[5]秦添.P2P網(wǎng)絡(luò)中NAT穿透方法的研究與實現(xiàn)[D].湖南大學(xué),2009.
[6]何飛雄.基于Filter-hook網(wǎng)絡(luò)防火墻的設(shè)計與實現(xiàn)[D].華東師范大學(xué),2010.
[7]秦志光.基于網(wǎng)絡(luò)處理器的IPV6狀態(tài)跟蹤防火墻設(shè)計與實現(xiàn)[D].電子科技大學(xué),2006.