唐澤坤+王修剛+宋偉+于珊珊+劉超
摘 要:本文提出了一種基于FPGA的硬件防火墻的實(shí)現(xiàn)方案,采用FPGA來實(shí)現(xiàn)百兆線速以上的防火墻設(shè)計(jì)。網(wǎng)絡(luò)數(shù)據(jù)在建立連接跟蹤后,由FPGA實(shí)現(xiàn)的快速處理板直接轉(zhuǎn)發(fā),實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)的線速處理,通用CPU在操作系統(tǒng)支持下,完成網(wǎng)絡(luò)數(shù)據(jù)連接跟蹤的創(chuàng)建、維護(hù)以及對網(wǎng)絡(luò)規(guī)則表的維護(hù)等工作。
關(guān)鍵詞:防火墻;FPGA;Verilog HDL;CPU
一、引言
防火墻是一種基本的網(wǎng)絡(luò)防護(hù)設(shè)備。它是一種設(shè)置在內(nèi)部網(wǎng)和外部網(wǎng)之間的安全網(wǎng)關(guān),通過安全策略和規(guī)則來控制外部用戶對內(nèi)部資源的訪問,使外部網(wǎng)和內(nèi)部網(wǎng)之間既保持連通性,又根據(jù)規(guī)則間接交換信息。防火墻所采用的硬件設(shè)備必須滿足網(wǎng)絡(luò)處理性能的需求。在早期網(wǎng)絡(luò)中,數(shù)據(jù)速率相對較低,協(xié)議也比較簡單,因此網(wǎng)絡(luò)設(shè)備通常以通用處理器配合分組處理軟件實(shí)現(xiàn)。然而,隨著數(shù)據(jù)速率的不斷提高和協(xié)議的日益復(fù)雜,通用處理器處理能力的增長逐漸落后于數(shù)據(jù)速率的增長,因此,基于通用處理器平臺(tái)的網(wǎng)絡(luò)產(chǎn)品開發(fā)者遇到了性能上的障礙。
本文針對目前防火墻的設(shè)計(jì)方式提出了一種基于FPGA的硬件防火墻的實(shí)現(xiàn)方案,采用FPGA來實(shí)現(xiàn)百兆線速以上的防火墻設(shè)計(jì)。傳統(tǒng)的基于x86等通用CPU的防火墻無法適應(yīng)當(dāng)前快速增長的網(wǎng)絡(luò)速度,無法實(shí)現(xiàn)線速過濾與轉(zhuǎn)發(fā)。本文采用FPGA結(jié)合通用CPU模式,可以快速處理網(wǎng)絡(luò)數(shù)據(jù),能夠避免NP的不足。網(wǎng)絡(luò)數(shù)據(jù)在建立連接跟蹤后,由FPGA實(shí)現(xiàn)的快速處理板直接轉(zhuǎn)發(fā),實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)的線速處理。通用CPU在操作系統(tǒng)支持下,完成網(wǎng)絡(luò)數(shù)據(jù)連接跟蹤的創(chuàng)建、維護(hù)以及對網(wǎng)絡(luò)規(guī)則表(端口黑名單、IP黑名單、端口白名單)的維護(hù)等工作。FPGA硬件板和CPU各司其職,實(shí)現(xiàn)快速轉(zhuǎn)發(fā)的目的。實(shí)踐證明,這是一種兼容性比較好的網(wǎng)絡(luò)安全架構(gòu)。
二、系統(tǒng)整體設(shè)計(jì)方案
硬件防火墻分為兩個(gè)數(shù)據(jù)通道,F(xiàn)PGA硬件板承擔(dān)網(wǎng)絡(luò)數(shù)據(jù)的按規(guī)則高速收發(fā)與轉(zhuǎn)發(fā),并按指定規(guī)則要求通過PCI-E將數(shù)據(jù)上傳至x86CPU;x86主控板承擔(dān)慢速通道工作。
防火墻軟件系統(tǒng)根據(jù)TCP、UDP、ICMP協(xié)議實(shí)現(xiàn)不同的連接跟蹤、跟蹤表項(xiàng)的匹配、跟蹤表的動(dòng)態(tài)維護(hù);x86上防火墻軟件系統(tǒng)通過硬件驅(qū)動(dòng)程序和FPGA硬件板進(jìn)行通訊。
圖1中所示為FPGA系統(tǒng)設(shè)計(jì)過程中網(wǎng)絡(luò)抓包實(shí)驗(yàn)中所形成的硬件架構(gòu)圖。FPGA網(wǎng)絡(luò)抓包的數(shù)據(jù)可以通過串口發(fā)送至上位機(jī),實(shí)驗(yàn)可以清晰判斷當(dāng)前網(wǎng)絡(luò)收發(fā)架構(gòu)設(shè)計(jì)是否合理,能否準(zhǔn)確地收發(fā)100Mbps的網(wǎng)絡(luò)數(shù)據(jù)。
在實(shí)現(xiàn)了基本的數(shù)據(jù)收發(fā)后,確定防火墻系統(tǒng)整體架構(gòu)和功能模塊,如圖2所示。
可以看出在這里主要由網(wǎng)絡(luò)接口、網(wǎng)絡(luò)控制、MAC、外網(wǎng)處理模塊、PC處理模塊、PCI-E與DDR控制模塊幾大部分構(gòu)成。
三、系統(tǒng)HDL設(shè)計(jì)方案
系統(tǒng)使用Verilog HDL語言完成設(shè)計(jì)。下面介紹一些主要模塊設(shè)計(jì)。
1.外網(wǎng)控制
本模塊的主要功能如圖3所示:
(1)存儲(chǔ)接收到的外網(wǎng)報(bào)文;
(2)對接收到的外網(wǎng)報(bào)文進(jìn)行關(guān)鍵字提取和識別;
(3)對提取的結(jié)果根據(jù)用戶配置進(jìn)行過濾;
(4)讀取存儲(chǔ)的本幀數(shù)據(jù),根據(jù)本幀過濾的結(jié)果對其進(jìn)行打包處理。
本模塊時(shí)序圖設(shè)計(jì)如圖4所示。
2.子模塊報(bào)文緩存功能設(shè)計(jì)
本模塊的功能是:用于緩存接收到的報(bào)文,等待本報(bào)文的過濾結(jié)果,由報(bào)文封裝模塊讀取此報(bào)文或者丟棄報(bào)文。本模塊實(shí)質(zhì)上是一個(gè)循環(huán)的buffer,其位寬是64,深度是1024,可以存儲(chǔ)5個(gè)最大的1518Bytes報(bào)文。緩存模塊內(nèi)部維護(hù)讀寫地址和可寫的空間,當(dāng)可寫的空間小于1518Bytes時(shí),不再接收數(shù)據(jù)。
本模塊的結(jié)構(gòu)如圖5所示:
處理流程為:
(1)當(dāng)報(bào)文到達(dá)時(shí),首先檢查可寫空間是否大于1518Bytes,如果大于則向RAM中存入次報(bào)文,寫地址,循環(huán)累加,寫完后將本次寫入的數(shù)據(jù)量送給可寫空間維護(hù),如果小于1518Bytes丟棄本報(bào)文,寫地址不變;
(2)寫空間維護(hù),維護(hù)一個(gè)Counter,累加寫數(shù)據(jù)量,累減讀數(shù)據(jù)量,用RAM的總空間減去這個(gè)Counter就是可寫空間;
(3)當(dāng)收到報(bào)文封裝模塊的讀使能時(shí),讀地址累加,讀取RAM送出讀數(shù)據(jù)。
3.子模關(guān)鍵字提取功能設(shè)計(jì)
本模塊的任務(wù)是:在報(bào)文中提取過濾規(guī)則的關(guān)鍵字,關(guān)鍵字為標(biāo)準(zhǔn)IP協(xié)議數(shù)據(jù)包。
通過Type識別是否為IP報(bào)文,如果是,繼續(xù)提取Protocol、SIP、DIP;通過Protocol識別是否是TCP或者UDP報(bào)文,如果是,繼續(xù)提取SPort與DPort。報(bào)文結(jié)構(gòu)如圖6所示,但是沒有option域。另外需要獲得本報(bào)文的長度(以Byte為單位)。
處理流程圖如圖7所示。
四、設(shè)計(jì)仿真測試
上述設(shè)計(jì)代碼在綜合后下載至硬件FPGA硬件板后,配合x86端測試軟件進(jìn)行測試。限于實(shí)際條件,采用自循環(huán)數(shù)據(jù)測試數(shù)據(jù)收發(fā),以及指定IP地址和端口地址的過濾測試,測試模式如圖8所示。經(jīng)實(shí)際測試,系統(tǒng)能夠完成百兆數(shù)據(jù)的線速收發(fā)和指定規(guī)則的過濾。
五、結(jié)束語
本文基于FPGA的防火墻設(shè)計(jì)完成了基本的設(shè)計(jì)目標(biāo),能夠正常轉(zhuǎn)發(fā)和過濾指定規(guī)則的數(shù)據(jù),能夠準(zhǔn)確進(jìn)行仿真和驗(yàn)證,但仍屬于教學(xué)演示性設(shè)計(jì),后續(xù)可以繼續(xù)進(jìn)行優(yōu)化,使系統(tǒng)更加完善。
(通訊作者:劉超)
參考文獻(xiàn):
[1]夏宇聞.從算法設(shè)計(jì)到硬件邏輯的實(shí)現(xiàn)[M].北京:高等教育出版社,2001.
[2]王金明,楊吉斌. 數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL[M]. 北京:電子工業(yè)出版社,2002.
[3]鄭堯.硬件防火墻中多模式匹配算法的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2009.
[4]唐正軍,李建華.入侵檢測技術(shù)[M].北京:清華大學(xué)出版社,2004.
[5]Wes Noonan, Ido Dubrawsky(美).防火墻基礎(chǔ)[M].北京:人民郵電出版社,2007.
[6]胡道元.網(wǎng)絡(luò)安全[M].北京:清華大學(xué)出版社,2004.
[7]石晶林,程勝,孫江明.網(wǎng)絡(luò)處理器原理、設(shè)計(jì)與應(yīng)用[M].北京:清華大學(xué)出版社,2003.
[8]肖晨陽.基于FPGA的硬件防火墻設(shè)計(jì)和實(shí)現(xiàn)[D].長沙:湖南師范大學(xué),2009.
作者簡介:唐澤坤(1994- ),男,山西長治人,大學(xué)本科在讀,電子科學(xué)與技術(shù)專業(yè);劉超(1981- ),男,遼寧凌源人,碩士,講師,研究方向:嵌入式系統(tǒng)。