◆盧宇浩 廖 游
基于狀態檢測技術的NAT設計與FPGA實現
◆盧宇浩 廖 游
(中國電子科技集團第三十研究所 四川 610000)
隨著互聯網的快速發展,網絡地址資源需求也在不斷增長,網絡地址轉換(NAT) 依然是緩解網絡地址緊缺問題非常有效手段,新形勢下網絡安全設備對于使用國產化芯片的需求越來越高,本文提出了一種基于狀態檢測技術的NAT設計,并在國產CPU和FPGA的平臺上進行了試驗和驗證。
網絡地址轉換(NAT);狀態檢測;可編程邏輯陣列(FPGA);國產化平臺
隨著互聯網的快速發展,互聯網用戶數量、終端以及業務類型都在飛速增加,網絡地址資源需求也在不斷增長[1],雖然業界提出從IPV4過渡到IPV6,將網絡協議中的IP地址從32bits增加到128bits,徹底解決網絡地址資源緊缺問題[2],但是由于IPV6的全面推廣過程較慢,而5G、物聯網等技術突飛猛進,網絡地址緊缺的現象并沒有緩解,網絡地址轉換(NAT) 依然是緩解網絡地址緊缺問題非常有效手段[3]。
2019年,中美貿易戰再次升級,網絡安全設備中的進口芯片已成為“卡脖子”問題,新形勢下網絡安全設備芯片自主可控勢在必行,然而由于國產處理器網絡數據包處理性能較低,使用國產FPGA來實現硬件加速,提升國產化平臺的整體處理性能就顯得非常重要。
NAT(Network Address Translation,網絡地址轉換)技術的基本功能是用一個或幾個公網IP地址來實現一個局域網網絡上所有主機都可以訪問公網[4]。NAT實現的方式有很多,包括源地址轉換(SNAT)、目的地址轉換(DNAT)以及雙向地址轉換(雙向NAT)。本文設計將支持以上所有NAT轉換方式。各轉換方式基本功能和特點如下:
源地址轉換(SNAT):用于將符合條件的數據進行源IP地址轉換,最常用的是設備部署在公網出口時,代理內網用戶上網,需要設置源地址轉換規則進行源地址轉換。內部網絡中的所有主機均可共享一個或者多個合法外部網絡地址實現對外網的訪問[5]。
目標地址轉換(DNAT):用于對經過設備的數據做目標地址轉換。通過將內外服務器的服務映射到公網,使外網用戶通過訪問防火墻上的公網IP訪問到內網服務器。
雙向地址轉換(雙向NAT):指在對經過設備的數據同時作含源地址和目標地址轉換,用于內外用戶通過公網IP或者域名訪問內網的服務器的情況。
狀態檢測技術:是當今防火墻市場中普遍采用的主流技術,是一種基于會話連接的狀態檢測機制,將屬于同一會話的所有包作為一個整體的數據流看待[6],構成會話狀態表,通過規則表與狀態表的共同配合,對表中的各個連接狀態因素加以識別[7],對數據報文進行丟棄或放行。
本文設計的具體業務流程如圖1所示,包括FPGA業務流程和CPU業務流程。
報文進行FPGA的會話表過濾模塊后,提取報文中的五元組信息查表,若未能匹配表項,則表明此數據報文為整個會話首包,需將此報文上傳CPU,進入CPU業務流程,若匹配到表項,則進入到下一級會話表過濾流程;模塊根據返回的動作action判斷報文是否需要丟棄,若不需丟棄,則判斷是否需要進行NAT轉換,若需要則根據返回的80bits替換信息將報文中對應的源IP+目的IP+源端口+目的端口進行轉換后重新計算IP首部的校驗和更新后,整個過程結束,報文發出。
CPU收到FPGA上傳的首包后,開始進入會話跟蹤流程,判斷報文是否通過狀態檢測,若未通過,則報文丟棄,并下發丟棄規則表項到FPGA,此會話后續數據報文由FPGA丟棄,若通過,則判斷是否需要進行NAT轉換,若不需要,則直接發走,若需要,則進行對應轉換、更新首部校驗以及將報文發出,并將對應的轉換內容表項下發到FPGA,后續由FPGA執行轉換工作。

圖1 基于狀態檢測技術的NAT功能業務流程圖
本文使用軟硬件結合(CPU+FPGA)的方式實現NAT功能,在狀態檢查技術的基礎上,加入NAT判斷分支,結合狀態檢測技術中的會話表五元組提取、查表、狀態跟蹤、表項下發等流程,將SNAT、DNAT、雙向NAT等多種轉換方式的NAT功能直接抽象為利用FPGA的并行處理能力,將數據報文中的源IP+目的IP+源端口+目的端口(共80bits)全部進行轉換。軟件負責下發80位的內容,其中若不需更改的內容填成原有內容,FPGA通過查表查出數據報文所需的新源IP+目的IP+源端口+目的端口,并進行對位轉換,最后計算更新IP首部校驗和,發送到下一級模塊,完成整個NAT功能。具體FPGA實現架構如圖2。
會話表過濾模塊:模塊包括狀態檢測技術中會話表過濾功能,數據報文進入模塊后,提取報文中的五元組信息(源IP+目的IP+源端口+目的端口+協議)進行匹配查表,若無匹配表項,則將該數據報文上傳CPU處理,若匹配到表項,則更具返回的action動作將數據報文轉發相應的處理模塊。
action動作的具體含義如表1。

圖2 FPGA實現架構圖

表1 動作action的具體含義
搜索引擎接口模塊:負責搜索引擎芯片初始化,表項配置管理、查表調度等功能;
主控模塊:(1)將會話表過濾模塊上報的數據報文上傳到CPU;(2)將CPU下發的會話表表項發送到搜索引擎接口模塊;(3)根據搜索引擎返回的index查找片內SRAM,得到處理動作action以及NAT轉換需要的nat_ip、nat_port等信息。
片內SRAM:利用FPGA中的block ram資源生成的SRAM,用于存儲五元組表項對應的動作action以及NAT轉換需要的nat_ip、nat_port等信息。
NAT轉換模塊:只對數據報文的源IP+目的IP+源端口+目的端口進行轉換,用主控發來80位數據按位置進行相應替換操作。
更新IP首部校驗和模塊:對NAT轉換后的數據報文重新計算IP首部校驗和,并更新。
根據本文提出的設計方法,在龍芯2h處理器+紫光國微2V6000 FPGA的全國產軟硬件平臺上進行了驗證,采用TestCenter網絡測試儀進行網絡吞吐率測試(表2),測試結果充分表明基于狀態檢測技術的NAT功能利用FPGA硬件加速能力,在全國產化平臺上性能得到了極大的提升,64字節小包提升18倍,大包接近千兆線速水平。

表2 吞吐率測試結果
[1]趙勝穎,高廣春.基于FPGA的網絡地址轉換(NAT)的實現[J].儀器儀表學報,2008(8):370-373.
[2]張祖林,徐國洪,印成清.計算機組裝與聯網技術[M].華中科技大學出版社,2005.
[3]林滿.基于以太網技術的寬帶IP城域網建設[D].廈門大學,2002.
[4]張廣德.基于SIP的NAT穿越防火墻的研究與設計[D].上海交通大學,2010.
[5]秦添.P2P網絡中NAT穿透方法的研究與實現[D].湖南大學,2009.
[6]何飛雄.基于Filter-hook網絡防火墻的設計與實現[D].華東師范大學,2010.
[7]秦志光.基于網絡處理器的IPV6狀態跟蹤防火墻設計與實現[D].電子科技大學,2006.