專利名稱:一種實(shí)現(xiàn)包過(guò)濾的防火墻及其實(shí)現(xiàn)包過(guò)濾的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種實(shí)現(xiàn)包過(guò)濾的防火墻及其實(shí)現(xiàn)包過(guò)濾的方法,尤其涉及一種用網(wǎng)絡(luò)處理器實(shí)現(xiàn)包過(guò)濾的防火墻和一種使用該防火墻來(lái)實(shí)現(xiàn)包過(guò)濾的方法。
背景技術(shù):
網(wǎng)絡(luò)處理器(以下簡(jiǎn)稱NP)是一種可編程的新型的并行處理器,具有集成電路的速度和CPU的靈活性,現(xiàn)在并沒(méi)有使用NP的防火墻以及應(yīng)用這種防火墻實(shí)現(xiàn)數(shù)據(jù)包過(guò)濾的技術(shù)。
目前的防火墻基本是采用基于通用CPU開發(fā)的用軟件實(shí)現(xiàn)的防火墻,這樣設(shè)計(jì)的防火墻有轉(zhuǎn)發(fā)效率低的缺點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種實(shí)現(xiàn)包過(guò)濾的防火墻及其實(shí)現(xiàn)包過(guò)濾的方法。利用NP具有可編程、研發(fā)周期短、投入小、易修改、易升級(jí)的特點(diǎn),將非常耗時(shí)的IP數(shù)據(jù)包處理用NP實(shí)現(xiàn),解決了系統(tǒng)性能低下的問(wèn)題。
為了達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案一種實(shí)現(xiàn)包過(guò)濾的防火墻,包括,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器;網(wǎng)絡(luò)處理器芯片,與所述同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器相連;靜態(tài)隨機(jī)存儲(chǔ)器,與所述網(wǎng)絡(luò)處理器芯片相連;緩存器,與所述網(wǎng)絡(luò)處理器芯片和所述靜態(tài)隨機(jī)存儲(chǔ)器相連;引導(dǎo)只讀存儲(chǔ)器,與所述緩存器相連。
一種實(shí)現(xiàn)包過(guò)濾的方法,使用所述實(shí)現(xiàn)包過(guò)濾的防火墻,由Ixp1200芯片的6個(gè)微引擎完成以下操作a、接收處理,由Ixp1200芯片的1個(gè)微引擎完成處理,包括以下步驟,a1、接收?qǐng)?bào)文;
a2、報(bào)文頭部信息處理;a3、報(bào)文尾部信息處理;b、規(guī)則處理,由Ixp1200的4個(gè)微引擎并行完成處理,包括以下步驟,b1、從規(guī)則的隊(duì)列中取報(bào)文;b2、解析并處理報(bào)文;b3、對(duì)報(bào)文進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換處理;b4、轉(zhuǎn)發(fā)報(bào)文,將報(bào)文放到對(duì)應(yīng)端口的發(fā)送隊(duì)列上;c、發(fā)送處理,由Ixp1200的1個(gè)微引擎完成處理;由Ixp1200的strongarm核完成以下操作,d、控制處理,由Ixp1200的strongarm核完成處理,包括以下步驟,d1、控制信息處理;d2、數(shù)據(jù)信息處理;d3、進(jìn)行互斥控制。
所述步驟a1、接收?qǐng)?bào)文包括如下步驟,a11、為報(bào)文分配接收緩存,包括存放控制信息的靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存和存放報(bào)文內(nèi)容的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存;a12、通過(guò)檢查接收有效寄存器的狀態(tài)確定從哪個(gè)端口收取報(bào)文;a13、向IX總線接口發(fā)送接收請(qǐng)求;a14、將報(bào)文分成若干長(zhǎng)度固定的分片,每次接收一個(gè)分片,接收完成后,通過(guò)檢查接收控制寄存器確定該分片的接收狀態(tài);a15、該分片的接收狀態(tài)為錯(cuò)誤則回到步驟a11;a16、如果該分片的內(nèi)容不是報(bào)文頭部信息,則將該分片的內(nèi)容復(fù)制到同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中自第65個(gè)字節(jié)起的空間中,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存的前64個(gè)字節(jié)用來(lái)存放報(bào)文頭部信息,轉(zhuǎn)到步驟a31,如果所述分片是報(bào)文頭部信息,轉(zhuǎn)到步驟a21。
所述步驟a2、報(bào)文頭部信息處理包括如下步驟,a21、如果當(dāng)前端口的狀態(tài)為關(guān)閉,記錄該報(bào)文需要丟棄,轉(zhuǎn)到步驟a31;a22、分析分片的前16個(gè)字節(jié),得到以太網(wǎng)協(xié)議字段、以太網(wǎng)媒體接入控制器地址和IP版本字段,如果以太網(wǎng)協(xié)議字段為地址解析協(xié)議或協(xié)議字段不是802.3協(xié)議,或,如果目的以太網(wǎng)媒體接入控制器地址為廣播或組播,或,如果不是不帶選項(xiàng)的IP4版本則轉(zhuǎn)到上層處理并轉(zhuǎn)到步驟a31;a23、解析分片的17至48共32個(gè)字節(jié),得到IP協(xié)議、目的IP地址、校驗(yàn)和、報(bào)文的總長(zhǎng)度和報(bào)文的源地址;a24、如果IP協(xié)議為INTERNET網(wǎng)關(guān)控制協(xié)議或INTERNET控制報(bào)文協(xié)議的出錯(cuò)報(bào)告,則轉(zhuǎn)到上層處理并轉(zhuǎn)到步驟a31;a25、分析目的IP地址,過(guò)濾保留的地址;a26、檢驗(yàn)校驗(yàn)和,如果校驗(yàn)和出錯(cuò)則丟棄該報(bào)文,轉(zhuǎn)到步驟a31;a27、計(jì)算報(bào)文的索引值,按此索引值來(lái)尋找相應(yīng)的規(guī)則,如果IP協(xié)議為傳輸控制協(xié)議、用戶數(shù)據(jù)報(bào)協(xié)議則根據(jù)IP的源和目的地址、協(xié)議號(hào)和源目的端口得到哈希索引值,如果IP協(xié)議為INTERNET控制報(bào)文協(xié)議則根據(jù)根據(jù)IP的源和目的地址、協(xié)議號(hào)和INTERNET控制報(bào)文協(xié)議的類型、代碼、標(biāo)示符得到哈希索引值,其余情況根據(jù)IP的源和目的地址、協(xié)議號(hào)計(jì)算索引值;a28、如果是第一個(gè)分片,根據(jù)的源和目的IP地址、源和目的端口號(hào),協(xié)議號(hào)來(lái)匹配規(guī)則的哈希表,分片的ID匹配分片的哈希表,如果沒(méi)有匹配的規(guī)則就建立新的規(guī)則項(xiàng),如果不是第一個(gè)分片,根據(jù)IP的源和目的地址,分片的ID匹配分片的哈希表,沒(méi)有匹配的規(guī)則就丟棄;a29、查找該索引值下的各個(gè)規(guī)則,如果沒(méi)有匹配的規(guī)則則創(chuàng)建一個(gè)空的規(guī)則項(xiàng),在這個(gè)規(guī)則項(xiàng)里填上所述計(jì)算索引值用的相關(guān)數(shù)據(jù),規(guī)則的引用次數(shù)為1,將所述規(guī)則項(xiàng)里的信息以及規(guī)則的地址交給上層處理,記錄該規(guī)則的地址,轉(zhuǎn)到步驟a31,如果有匹配的規(guī)則,則該規(guī)則的引用次數(shù)加1,記錄該規(guī)則的地址,將該規(guī)則的地址放入所述報(bào)文的靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中,將報(bào)文內(nèi)容放入同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中。
所述步驟a3、報(bào)文尾部信息處理,包括如下步驟a31、如果分片不是報(bào)文尾部信息,轉(zhuǎn)到步驟a11;a32、如果該報(bào)文需要丟棄,轉(zhuǎn)到步驟a39;a33、如果如步驟a23解析得到的報(bào)文長(zhǎng)度值與報(bào)文實(shí)際長(zhǎng)度不符,轉(zhuǎn)到步驟a39;a34、開始隊(duì)列處理,讀取規(guī)則的狀態(tài)字段,如果需要丟棄該條流則轉(zhuǎn)到步驟a39;a35、如果該報(bào)文所對(duì)應(yīng)的規(guī)則尚不完整,則將所述報(bào)文放到該規(guī)則的等待隊(duì)列上;a36、如果需要將該報(bào)文放到上層,則將所述報(bào)文放到上層的等待隊(duì)列上;a37、將報(bào)文放到規(guī)則的總隊(duì)列上,如果總隊(duì)列已滿則轉(zhuǎn)到步驟a39,總隊(duì)列不滿則插入對(duì)應(yīng)該報(bào)文的隊(duì)列;a38、清除標(biāo)志位和所述緩存的偏移量,將所述緩存設(shè)置為未分配,轉(zhuǎn)到步驟a11;a39、清除標(biāo)志位和所述緩存的偏移量,如果所述報(bào)文找到了對(duì)應(yīng)的規(guī)則則將規(guī)則的引用次數(shù)減1,轉(zhuǎn)到初始處理a11。
所述步驟b11、從規(guī)則的隊(duì)列中取報(bào)文,包括如下步驟b11、鎖定規(guī)則隊(duì)列并讀取規(guī)則隊(duì)列信息;b12、如果該規(guī)則隊(duì)列的長(zhǎng)度為0,將該隊(duì)列解除鎖定狀態(tài),轉(zhuǎn)到步驟b11;b13、從該規(guī)則隊(duì)列中讀取報(bào)文,隊(duì)列長(zhǎng)度減1,將該隊(duì)列解除鎖定狀態(tài);b14、如果報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值為1,釋放該報(bào)文的緩存,將規(guī)則引用次數(shù)減1,轉(zhuǎn)到步驟b11,如果報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值不為1,修改報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值,重新計(jì)算校驗(yàn)和,但不寫回同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存。
所述步驟b2、解析并處理報(bào)文,包括如下步驟b21、解析報(bào)文的緩存,對(duì)于分片報(bào)文只解析第一個(gè)分片,如果是INTERNET控制報(bào)文協(xié)議報(bào)文,轉(zhuǎn)到步驟b22,如果是傳輸控制協(xié)議報(bào)文,轉(zhuǎn)到步驟b23,如果是用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文,轉(zhuǎn)到步驟b29,其他類型的報(bào)文,只刷新超時(shí)時(shí)間;b22、修改規(guī)則的計(jì)數(shù)器的值;b23、鎖定規(guī)則隊(duì)列,讀取TCP報(bào)文的狀態(tài)標(biāo)志;b24、解析報(bào)文的狀態(tài);b25、根據(jù)報(bào)文的方向、原來(lái)的狀態(tài)、當(dāng)前報(bào)文查找TCP狀態(tài)表得到新的狀態(tài);b26、根據(jù)報(bào)文的狀態(tài)作相應(yīng)的處理并解除隊(duì)列的鎖定狀態(tài);b27、如果報(bào)文的狀態(tài)標(biāo)志為特定字段,則將該報(bào)文對(duì)應(yīng)的規(guī)則的狀態(tài)標(biāo)志中的“ESTABLISHED”設(shè)為1;b28、根據(jù)當(dāng)前的狀態(tài)刷新該規(guī)則的TCP超時(shí)時(shí)間;b29、如果收到過(guò)回復(fù)報(bào)文,則將當(dāng)前的狀態(tài)標(biāo)志中的“ESTABLISHED”設(shè)為1;b210、根據(jù)是否回復(fù)刷新該規(guī)則的超時(shí)時(shí)間。
所述步驟b3、對(duì)報(bào)文進(jìn)行網(wǎng)絡(luò)地址變換處理,包括如下步驟b31、判斷是否需要進(jìn)行網(wǎng)絡(luò)地址變換處理,不需要?jiǎng)t轉(zhuǎn)到步驟b41;b32、讀取規(guī)則的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中的網(wǎng)絡(luò)地址變換信息,如果是源類型,修改源地址和端口,如果是回復(fù)和目的類型,修改目的地址和端口;b33、如果是傳輸控制協(xié)議報(bào)文且為文件傳輸協(xié)議的“pasv”和“port”命令或者用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文且端口為53都送到上層處理;b34、如果是傳輸控制協(xié)議報(bào)文/用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文,根據(jù)步驟b32的結(jié)果修改傳輸控制協(xié)議報(bào)文或用戶數(shù)據(jù)報(bào)協(xié)議的源或目的端口,重新計(jì)算IP的校驗(yàn)和;b35、如果是INTERNET控制報(bào)文協(xié)議報(bào)文,修改INTERNET控制報(bào)文協(xié)議ID并重新計(jì)算INTERNET控制報(bào)文協(xié)議的校驗(yàn)和;b36、根據(jù)步驟b32的結(jié)果修改源或目的端口,重新計(jì)算IP的校驗(yàn)和,重新寫入IP的校驗(yàn)和、傳輸控制協(xié)議校驗(yàn)和或INTERNET控制報(bào)文協(xié)議校驗(yàn)和。
所述步驟b4、轉(zhuǎn)發(fā)報(bào)文,包括如下步驟b41、讀取規(guī)則中的路由信息;b42、修改源和目的以太網(wǎng)媒體接入控制器地址;b43、將報(bào)文放到對(duì)應(yīng)端口的發(fā)送隊(duì)列上。
所述步驟d1、控制信息處理,包括如下步驟d11、讀取控制信息;d12、目的地址為本地規(guī)則則將該鎖定該規(guī)則,將該規(guī)則標(biāo)記為未完成初始化;d13、查找該規(guī)則的信息,如果失敗,刪除該規(guī)則上的報(bào)文并從哈希表里刪除該規(guī)則,如果成功,根據(jù)路由發(fā)送地址解析協(xié)議報(bào)文,解析下一條的以太網(wǎng)媒體接入控制器地址并返回;
d14、如果以太網(wǎng)媒體接入控制器地址解析成功,將規(guī)則的信息填寫完畢,標(biāo)記規(guī)則已準(zhǔn)備好,將該規(guī)則的隊(duì)列上的報(bào)文放到規(guī)則總隊(duì)列上。
圖1是本發(fā)明的采用網(wǎng)絡(luò)處理器的防火墻的系統(tǒng)框圖;圖2是本發(fā)明采用的網(wǎng)絡(luò)處理器芯片Intel Ixp1200的內(nèi)部結(jié)構(gòu)框圖;圖3a、圖3b、圖3c、圖3d是本發(fā)明的實(shí)現(xiàn)包過(guò)濾的方法中的微引擎部分的處理流程圖;圖4是本發(fā)明的實(shí)現(xiàn)包過(guò)濾的方法中的strongarm核部分控制信息處理的處理流程圖。
具體實(shí)施例方式
下面結(jié)合附圖進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案,圖1是本發(fā)明的采用網(wǎng)絡(luò)處理器的防火墻的系統(tǒng)框圖,如圖1所示,包括,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器11,與網(wǎng)絡(luò)處理器芯片12相連,用來(lái)存放報(bào)文內(nèi)容;網(wǎng)絡(luò)處理器芯片12,與靜態(tài)隨機(jī)存儲(chǔ)器13以及緩存器14相連,用來(lái)處理報(bào)文;靜態(tài)隨機(jī)存儲(chǔ)器13,與緩存器14相連,用來(lái)存放報(bào)文控制信息;緩存器14,與引導(dǎo)只讀存儲(chǔ)器15相連;引導(dǎo)只讀存儲(chǔ)器15,用來(lái)存放引導(dǎo)信息。
本實(shí)施例中,網(wǎng)絡(luò)處理器芯片12采用的是Intel公司的Ixp1200網(wǎng)絡(luò)處理器,該網(wǎng)絡(luò)處理器包括6個(gè)微引擎以及一個(gè)StrongArm核。
圖2是Ixp1200網(wǎng)絡(luò)處理器芯片的內(nèi)部結(jié)構(gòu)框圖,從圖中可見位于由下方的6個(gè)微引擎和位于左上方的StrongArm核。
圖3a、圖3b、圖3c、圖3d是本發(fā)明的實(shí)現(xiàn)包過(guò)濾的方法中的微引擎部分的處理流程圖,包括由Ixp1200芯片的6個(gè)微引擎完成以下操作a、接收處理,由Ixp1200芯片的1個(gè)微引擎完成處理,該微引擎工作包括從讀取數(shù)據(jù)到同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中,分析以太網(wǎng)媒體接入控制器地址和IP地址判斷是否需要送到上層;判斷報(bào)文頭部的正確性,根據(jù)頭部參數(shù)生成哈希值,根據(jù)哈希值查找是否有相匹配的規(guī)則;如果沒(méi)有匹配的規(guī)則就建立一個(gè)空的規(guī)則掛在哈希表中,將報(bào)文放在該規(guī)則的隊(duì)列上,并將控制信息送到上層,如果有則記錄報(bào)文頭部信息和規(guī)則的信息到靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中并將該報(bào)文掛到規(guī)則總隊(duì)列上;如果是INTERNET控制報(bào)文協(xié)議的差錯(cuò)報(bào)文要先按照INTERNET控制報(bào)文協(xié)議的差錯(cuò)報(bào)文內(nèi)部的報(bào)文頭部信息匹配規(guī)則,如果沒(méi)有則按照外層的報(bào)文頭部匹配規(guī)則;該微引擎每個(gè)線程對(duì)于一個(gè)端口的接收;包括以下步驟,a1、接收?qǐng)?bào)文;a2、報(bào)文頭部信息處理;a3、報(bào)文尾部信息處理。
其中,步驟a1、接收?qǐng)?bào)文包括如下步驟,a11、為報(bào)文分配接收緩存,包括存放控制信息的靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存和存放報(bào)文內(nèi)容的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存;a12、通過(guò)檢查接收有效寄存器的狀態(tài)確定從哪個(gè)端口收取報(bào)文;a13、向IX總線接口發(fā)送接收請(qǐng)求;a14、將報(bào)文分成若干長(zhǎng)度固定的分片,例如將報(bào)文分成每一片長(zhǎng)度為64字節(jié)的分片,每次接收一個(gè)分片,接收完成后,通過(guò)檢查接收控制寄存器確定該分片的接收狀態(tài);a15、該分片的接收狀態(tài)為錯(cuò)誤則回到步驟a11;a16、如果該分片的內(nèi)容不是報(bào)文頭部信息,則將該分片的內(nèi)容復(fù)制到同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中自第65個(gè)字節(jié)起的空間中,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存的前64個(gè)字節(jié)用來(lái)存放報(bào)文頭部信息,轉(zhuǎn)到步驟a31,如果所述分片是報(bào)文頭部信息,轉(zhuǎn)到步驟a21。
步驟a2、報(bào)文頭部信息處理包括如下步驟,a21、如果當(dāng)前端口的狀態(tài)為關(guān)閉,記錄該報(bào)文需要丟棄,轉(zhuǎn)到步驟a31;a22、分析分片的前16個(gè)字節(jié),得到以太網(wǎng)協(xié)議字段、以太網(wǎng)媒體接入控制器地址和IP版本字段,如果以太網(wǎng)協(xié)議字段為地址解析協(xié)議或協(xié)議字段不是802.3協(xié)議(協(xié)議字段小于1500),或,如果目的以太網(wǎng)媒體接入控制器地址為廣播或組播,或,如果不是不帶選項(xiàng)的IP4版本(IP版本字段不為0x45)則轉(zhuǎn)到上層處理并轉(zhuǎn)到步驟a31;a23、解析分片的17至48共32個(gè)字節(jié),得到IP協(xié)議、目的IP地址、校驗(yàn)和、報(bào)文的總長(zhǎng)度和報(bào)文的源地址;a24、如果IP協(xié)議為INTERNET網(wǎng)關(guān)控制協(xié)議或INTERNET控制報(bào)文協(xié)議的出錯(cuò)報(bào)告,則轉(zhuǎn)到上層處理并轉(zhuǎn)到步驟a31;a25、分析目的IP地址,過(guò)濾保留的地址(224.X.X.X,127.X.X.X,240.X.X.X);a26、檢驗(yàn)校驗(yàn)和,如果校驗(yàn)和出錯(cuò)則丟棄該報(bào)文,轉(zhuǎn)到步驟a31;a27、計(jì)算報(bào)文的索引值,按此索引值來(lái)尋找相應(yīng)的規(guī)則,如果IP協(xié)議為傳輸控制協(xié)議、用戶數(shù)據(jù)報(bào)協(xié)議則根據(jù)IP的源和目的地址、協(xié)議號(hào)和源目的端口得到哈希索引值,如果IP協(xié)議為INTERNET控制報(bào)文協(xié)議則根據(jù)根據(jù)IP的源和目的地址、協(xié)議號(hào)和INTERNET控制報(bào)文協(xié)議的類型、代碼、標(biāo)示符得到哈希索引值,其余情況根據(jù)IP的源和目的地址、協(xié)議號(hào)計(jì)算索引值;a28、如果是第一個(gè)分片,根據(jù)的源和目的IP地址、源和目的端口號(hào),協(xié)議號(hào)來(lái)匹配規(guī)則的哈希表,分片的ID匹配分片的哈希表,如果沒(méi)有匹配的規(guī)則就建立新的規(guī)則項(xiàng),如果不是第一個(gè)分片,根據(jù)IP的源和目的地址,分片的ID匹配分片的哈希表,沒(méi)有匹配的規(guī)則就丟棄;a29、查找該索引值下的各個(gè)規(guī)則,如果沒(méi)有匹配的規(guī)則則創(chuàng)建一個(gè)空的規(guī)則項(xiàng),在這個(gè)規(guī)則項(xiàng)里填上所述計(jì)算索引值用的相關(guān)數(shù)據(jù),規(guī)則的引用次數(shù)為1,將所述規(guī)則項(xiàng)里的信息以及規(guī)則的地址交給上層處理,記錄該規(guī)則的地址,轉(zhuǎn)到步驟a31,如果有匹配的規(guī)則,則該規(guī)則的引用次數(shù)加1,記錄該規(guī)則的地址,將該規(guī)則的地址放入所述報(bào)文的靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中,將報(bào)文內(nèi)容放入同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中。
步驟a3、報(bào)文尾部信息處理,包括如下步驟a31、如果分片不是報(bào)文尾部信息,轉(zhuǎn)到步驟a11;a32、如果該報(bào)文需要丟棄,轉(zhuǎn)到步驟a39;a33、如果如步驟a23解析得到的報(bào)文長(zhǎng)度值與報(bào)文實(shí)際長(zhǎng)度不符,轉(zhuǎn)到步驟a39;
a34、開始隊(duì)列處理,讀取規(guī)則的狀態(tài)字段,如果需要丟棄該條流則轉(zhuǎn)到步驟a39;a35、如果該報(bào)文所對(duì)應(yīng)的規(guī)則尚不完整,則將所述報(bào)文放到該規(guī)則的等待隊(duì)列上;a36、如果需要將該報(bào)文放到上層,則將所述報(bào)文放到上層的等待隊(duì)列上;a37、將報(bào)文放到規(guī)則的總隊(duì)列上,如果總隊(duì)列已滿則轉(zhuǎn)到步驟a39,總隊(duì)列不滿則插入對(duì)應(yīng)該報(bào)文的隊(duì)列;a38、清除標(biāo)志位和所述緩存的偏移量,將所述緩存設(shè)置為未分配,轉(zhuǎn)到步驟a11;a39、清除標(biāo)志位和所述緩存的偏移量,如果所述報(bào)文找到了對(duì)應(yīng)的規(guī)則則將規(guī)則的引用次數(shù)減1,轉(zhuǎn)到初始處理a11。
b、規(guī)則處理,由Ixp1200的4個(gè)微引擎并行完成處理,根據(jù)IP協(xié)議號(hào)執(zhí)行相關(guān)的狀態(tài)驗(yàn)證,主要是傳輸控制協(xié)議的狀態(tài)驗(yàn)證;其中對(duì)于需要?jiǎng)h除規(guī)則的報(bào)文比如說(shuō)傳輸控制協(xié)議的復(fù)位報(bào)文都送到上層,其余的主要是刷新超時(shí)時(shí)間和更新狀態(tài);執(zhí)行規(guī)則的對(duì)應(yīng)操作;首先判斷是否丟,如果不丟棄判斷是否需要網(wǎng)絡(luò)地址轉(zhuǎn)換,如果要?jiǎng)t根據(jù)網(wǎng)絡(luò)地址轉(zhuǎn)換連接的方向和屬性(源或目的)修改IP地址和端口號(hào),對(duì)于文件傳輸協(xié)議的某些命令以及DNS等特殊的報(bào)文送到上層;將放該報(bào)文掛到發(fā)送的隊(duì)列上。包括以下步驟,b1、從規(guī)則的隊(duì)列中取報(bào)文;b2、解析并處理報(bào)文;b3、對(duì)報(bào)文進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換處理;b4、轉(zhuǎn)發(fā)報(bào)文,將報(bào)文放到對(duì)應(yīng)端口的發(fā)送隊(duì)列上;其中,步驟b11、從規(guī)則的隊(duì)列中取報(bào)文,包括如下步驟b11、鎖定規(guī)則隊(duì)列并讀取規(guī)則隊(duì)列信息;b12、如果該規(guī)則隊(duì)列的長(zhǎng)度為0,將該隊(duì)列解除鎖定狀態(tài),轉(zhuǎn)到步驟b11;b13、從該規(guī)則隊(duì)列中讀取報(bào)文,隊(duì)列長(zhǎng)度減1,將該隊(duì)列解除鎖定狀態(tài);b14、如果報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值為1,釋放該報(bào)文的緩存,將規(guī)則引用次數(shù)減1,轉(zhuǎn)到步驟b11,如果報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值不為1,修改報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值,重新計(jì)算校驗(yàn)和,但不寫回同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存。
步驟b2、解析并處理報(bào)文,包括如下步驟b21、解析報(bào)文的緩存,對(duì)于分片報(bào)文只解析第一個(gè)分片,如果是INTERNET控制報(bào)文協(xié)議報(bào)文,轉(zhuǎn)到步驟b22,如果是傳輸控制協(xié)議報(bào)文,轉(zhuǎn)到步驟b23,如果是用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文,轉(zhuǎn)到步驟b29,其他類型的報(bào)文,只刷新超時(shí)時(shí)間;b22、修改規(guī)則的計(jì)數(shù)器的值;b23、鎖定規(guī)則隊(duì)列,讀取傳輸控制協(xié)議報(bào)文的狀態(tài)標(biāo)志,包括從報(bào)文的緩存中讀取當(dāng)前傳輸控制協(xié)議報(bào)文的狀態(tài)標(biāo)志th_flags和seq從規(guī)則中讀取傳輸控制協(xié)議的狀態(tài)oldstate;b24、解析報(bào)文的狀態(tài),包括current,RST,SYN,F(xiàn)IN,ACK或者none;b25、根據(jù)報(bào)文的方向、原來(lái)的狀態(tài)、當(dāng)前報(bào)文查找TCP狀態(tài)表得到新的狀態(tài)newstate;b26、根據(jù)報(bào)文的狀態(tài)作相應(yīng)的處理如果狀態(tài)為rlIV,規(guī)則的引用次數(shù)減一,解除規(guī)則的鎖定狀態(tài),釋放緩存,轉(zhuǎn)到步驟b11否則修改當(dāng)前狀態(tài);如果oldstate為rlSS,且當(dāng)前報(bào)文為回復(fù)報(bào)文的SYN&ACK,將該規(guī)則的傳輸控制協(xié)議狀態(tài)中的handshake_ack值改為seq+1;如果規(guī)則的status沒(méi)有RL_CONN_SEEN_REPLY位且當(dāng)前報(bào)文為復(fù)位,則標(biāo)記該規(guī)則需要?jiǎng)h除,解除規(guī)則的鎖定狀態(tài),轉(zhuǎn)到步驟b28;對(duì)于其他情況,則解除報(bào)文的鎖定狀態(tài);b27、如果報(bào)文的狀態(tài)標(biāo)志oldstate為rlSR,且dir為ORIG,th_flag的ACK位為1,SYN位為0,并且seq等于規(guī)則的傳輸控制協(xié)議狀態(tài)中的handshake_ack,則將該報(bào)文對(duì)應(yīng)的規(guī)則的狀態(tài)標(biāo)志中的“ESTABLISHED”設(shè)為1;b28、根據(jù)當(dāng)前的狀態(tài)刷新該規(guī)則的TCP超時(shí)時(shí)間;b29、如果當(dāng)前的狀態(tài)置了SEEN_REPLY位就表示收到過(guò)回復(fù)報(bào)文,則將當(dāng)前的狀態(tài)標(biāo)志中的“ESTABLISHED”設(shè)為1;b210、根據(jù)是否回復(fù)刷新該規(guī)則的超時(shí)時(shí)間。
步驟b3、對(duì)報(bào)文進(jìn)行網(wǎng)絡(luò)地址變換處理,包括如下步驟b31、判斷是否需要進(jìn)行網(wǎng)絡(luò)地址變換處理,不需要?jiǎng)t轉(zhuǎn)到步驟b41;
b32、讀取規(guī)則的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中的網(wǎng)絡(luò)地址變換信息,如果是源類型,修改源地址和端口,如果是回復(fù)和目的類型,修改目的地址和端口;b33、如果是傳輸控制協(xié)議報(bào)文且為文件傳輸協(xié)議的“pasv”和“port”命令或者用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文且端口為53(DNS)都送到上層處理;b34、如果是傳輸控制協(xié)議報(bào)文/用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文,根據(jù)步驟b32的結(jié)果修改傳輸控制協(xié)議報(bào)文或用戶數(shù)據(jù)報(bào)協(xié)議的源或目的端口,重新計(jì)算IP的校驗(yàn)和;b35、如果是INTERNET控制報(bào)文協(xié)議報(bào)文,修改INTERNET控制報(bào)文協(xié)議ID并重新計(jì)算INTERNET控制報(bào)文協(xié)議的校驗(yàn)和;b36、根據(jù)步驟b32的結(jié)果修改源或目的端口,重新計(jì)算IP的校驗(yàn)和,重新寫入IP的校驗(yàn)和、傳輸控制協(xié)議校驗(yàn)和或INTERNET控制報(bào)文協(xié)議校驗(yàn)和。
步驟b4、轉(zhuǎn)發(fā)報(bào)文,包括如下步驟b41、讀取規(guī)則中的路由信息,包括輸出端口和目的以太網(wǎng)媒體接入控制器地址;b42、修改源和目的以太網(wǎng)媒體接入控制器地址;b43、將報(bào)文放到對(duì)應(yīng)端口的發(fā)送隊(duì)列上。
c、發(fā)送處理,由Ixp1200的1個(gè)微引擎完成處理,基本功能就是發(fā)送同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中的數(shù)據(jù);由Ixp1200的strongarm核主要是配合微引擎的處理,負(fù)責(zé)指導(dǎo)下層的微引擎如何轉(zhuǎn)發(fā)報(bào)文,當(dāng)收到微引擎的建立新的規(guī)則的控制信息后,首先判斷是否需要轉(zhuǎn)發(fā),如果是到本地的報(bào)文,在規(guī)則中做送到本地的標(biāo)記;否則查找策略信息,填補(bǔ)必要的規(guī)則的剩余信息,如果需要進(jìn)行地址解析協(xié)議解析的話同時(shí)發(fā)其地址解析協(xié)議的請(qǐng)求,如果成功響應(yīng)在規(guī)則中填入必要的地址解析協(xié)議信息并通知下層規(guī)則建立好,如果規(guī)則的信息創(chuàng)建失敗,就刪除這個(gè)規(guī)則,并清除該規(guī)則隊(duì)列上的數(shù)據(jù)包,包括以下步驟d、控制處理,d1、控制信息處理;d2、數(shù)據(jù)信息處理;d3、進(jìn)行互斥控制。
圖4是本發(fā)明的實(shí)現(xiàn)包過(guò)濾的方法中的strongarm核部分控制信息處理的處理流程圖。
步驟d1、控制信息處理,控制信息的處理主要是規(guī)則的建立,包括如下步驟d11、讀取控制信息;d12、目的地址為本地規(guī)則則將該鎖定該規(guī)則,將該規(guī)則標(biāo)記為未完成初始化(清除NOINIT標(biāo)志位),將該規(guī)則上的報(bào)文掛到本地隊(duì)列上,解除規(guī)則的鎖定狀態(tài);d13、查找該規(guī)則的信息,如果失敗,刪除該規(guī)則上的報(bào)文、清除NOINIT標(biāo)志位并從哈希表里刪除該規(guī)則;如果成功,根據(jù)路由發(fā)送地址解析協(xié)議報(bào)文,解析下一條的以太網(wǎng)媒體接入控制器地址并返回;d14、如果以太網(wǎng)媒體接入控制器地址解析成功,將規(guī)則的信息填寫完畢,標(biāo)記規(guī)則已準(zhǔn)備好,將該規(guī)則的隊(duì)列上的報(bào)文放到規(guī)則總隊(duì)列上。
步驟d2、數(shù)據(jù)信息處理,這里收到的數(shù)據(jù)信息主要是到本地的報(bào)文,有些特殊的報(bào)文如文件傳輸協(xié)議報(bào)文網(wǎng)絡(luò)地址轉(zhuǎn)換中的pasv和port命令以及DNS報(bào)文的網(wǎng)絡(luò)地址轉(zhuǎn)換直接在strongarm核中處理。
步驟d3、進(jìn)行互斥控制,目前互斥都采用靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存的Lock機(jī)制來(lái)實(shí)現(xiàn),分為以下幾種隊(duì)列的互斥,這里的隊(duì)列包括數(shù)據(jù)隊(duì)列和控制隊(duì)列,每個(gè)隊(duì)列都是獨(dú)立的,所以互斥的時(shí)候用的地址根據(jù)每個(gè)隊(duì)列實(shí)際地址進(jìn)行互斥;規(guī)則的互斥,所有對(duì)規(guī)則的操作都需要互斥,包括規(guī)則的查找,修改,刪除,建立,另外傳輸控制協(xié)議狀態(tài)檢測(cè)的互斥也采用這種形式。這里只有一個(gè)互斥地址;時(shí)鐘的互斥,針對(duì)時(shí)鐘的操作采用這個(gè)互斥量。
這三個(gè)互斥量之間應(yīng)該不存在嵌套關(guān)系,另外考慮到規(guī)則的互斥可能太多,可以考慮采用全局寄存器控制微引擎的每一個(gè)線程使得只有一個(gè)線程訪問(wèn)規(guī)則。
權(quán)利要求
1.一種實(shí)現(xiàn)包過(guò)濾的防火墻,其特征在于,包括同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器;網(wǎng)絡(luò)處理器芯片,與所述同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器相連;靜態(tài)隨機(jī)存儲(chǔ)器,與所述網(wǎng)絡(luò)處理器芯片相連;緩存器,與所述網(wǎng)絡(luò)處理器芯片和所述靜態(tài)隨機(jī)存儲(chǔ)器相連;引導(dǎo)只讀存儲(chǔ)器,與所述緩存器相連。
2.如權(quán)利要求1所述的采用網(wǎng)絡(luò)處理器的防火墻,其特征在于,所述網(wǎng)絡(luò)處理器芯片是Intel Ixp1200芯片。
3.一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,使用所述實(shí)現(xiàn)包過(guò)濾的防火墻,由Ixp1200芯片的6個(gè)微引擎完成以下操作a、接收處理,由Ixp1200芯片的1個(gè)微引擎完成處理,包括以下步驟,a1、接收?qǐng)?bào)文;a2、報(bào)文頭部信息處理;a3、報(bào)文尾部信息處理;b、規(guī)則處理,由Ixp1200的4個(gè)微引擎并行完成處理,包括以下步驟,b1、從規(guī)則的隊(duì)列中取報(bào)文;b2、解析并處理報(bào)文;b3、對(duì)報(bào)文進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換處理;b4、轉(zhuǎn)發(fā)報(bào)文,將報(bào)文放到對(duì)應(yīng)端口的發(fā)送隊(duì)列上;c、發(fā)送處理,由Ixp1200的1個(gè)微引擎完成處理;由Ixp1200的strongarm核完成以下操作,d、控制處理,由Ixp1200的strongarm核完成處理,包括以下步驟,d1、控制信息處理;d2、數(shù)據(jù)信息處理;d3、進(jìn)行互斥控制。
4.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟a1、接收?qǐng)?bào)文包括如下步驟,a11、為報(bào)文分配接收緩存,包括存放控制信息的靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存和存放報(bào)文內(nèi)容的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存;a12、通過(guò)檢查接收有效寄存器的狀態(tài)確定從哪個(gè)端口收取報(bào)文;a13、向IX總線接口發(fā)送接收請(qǐng)求;a14、將報(bào)文分成若干長(zhǎng)度固定的分片,每次接收一個(gè)分片,接收完成后,通過(guò)檢查接收控制寄存器確定該分片的接收狀態(tài);a15、該分片的接收狀態(tài)為錯(cuò)誤則回到步驟a11;a16、如果該分片的內(nèi)容不是報(bào)文頭部信息,則將該分片的內(nèi)容復(fù)制到同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中自第65個(gè)字節(jié)起的空間中,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存的前64個(gè)字節(jié)用來(lái)存放報(bào)文頭部信息,轉(zhuǎn)到步驟a31,如果所述分片是報(bào)文頭部信息,轉(zhuǎn)到步驟a21。
5.如權(quán)利要求4所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述分片的長(zhǎng)度為64字節(jié)。
6.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟a2、報(bào)文頭部信息處理包括如下步驟,a21、如果當(dāng)前端口的狀態(tài)為關(guān)閉,記錄該報(bào)文需要丟棄,轉(zhuǎn)到步驟a31;a22、分析分片的前16個(gè)字節(jié),得到以太網(wǎng)協(xié)議字段、以太網(wǎng)媒體接入控制器地址和IP版本字段,如果以太網(wǎng)協(xié)議字段為地址解析協(xié)議或協(xié)議字段不是802.3協(xié)議,或,如果目的以太網(wǎng)媒體接入控制器地址為廣播或組播,或,如果不是不帶選項(xiàng)的IP4版本則轉(zhuǎn)到上層處理并轉(zhuǎn)到步驟a31;a23、解析分片的17至48共32個(gè)字節(jié),得到IP協(xié)議、目的IP地址、校驗(yàn)和、報(bào)文的總長(zhǎng)度和報(bào)文的源地址;a24、如果IP協(xié)議為INTERNET網(wǎng)關(guān)控制協(xié)議或INTERNET控制報(bào)文協(xié)議的出錯(cuò)報(bào)告,則轉(zhuǎn)到上層處理并轉(zhuǎn)到步驟a31;a25、分析目的IP地址,過(guò)濾保留的地址;a26、檢驗(yàn)校驗(yàn)和,如果校驗(yàn)和出錯(cuò)則丟棄該報(bào)文,轉(zhuǎn)到步驟a31;a27、計(jì)算報(bào)文的索引值,按此索引值來(lái)尋找相應(yīng)的規(guī)則,如果IP協(xié)議為傳輸控制協(xié)議、用戶數(shù)據(jù)報(bào)協(xié)議則根據(jù)IP的源和目的地址、協(xié)議號(hào)和源目的端口得到哈希索引值,如果IP協(xié)議為INTERNET控制報(bào)文協(xié)議則根據(jù)根據(jù)IP的源和目的地址、協(xié)議號(hào)和INTERNET控制報(bào)文協(xié)議的類型、代碼、標(biāo)示符得到哈希索引值,其余情況根據(jù)IP的源和目的地址、協(xié)議號(hào)計(jì)算索引值;a28、如果是第一個(gè)分片,根據(jù)的源和目的IP地址、源和目的端口號(hào),協(xié)議號(hào)來(lái)匹配規(guī)則的哈希表,分片的ID匹配分片的哈希表,如果沒(méi)有匹配的規(guī)則就建立新的規(guī)則項(xiàng),如果不是第一個(gè)分片,根據(jù)IP的源和目的地址,分片的ID匹配分片的哈希表,沒(méi)有匹配的規(guī)則就丟棄;a29、查找該索引值下的各個(gè)規(guī)則,如果沒(méi)有匹配的規(guī)則則創(chuàng)建一個(gè)空的規(guī)則項(xiàng),在這個(gè)規(guī)則項(xiàng)里填上所述計(jì)算索引值用的相關(guān)數(shù)據(jù),規(guī)則的引用次數(shù)為1,將所述規(guī)則項(xiàng)里的信息以及規(guī)則的地址交給上層處理,記錄該規(guī)則的地址,轉(zhuǎn)到步驟a31,如果有匹配的規(guī)則,則該規(guī)則的引用次數(shù)加1,記錄該規(guī)則的地址,將該規(guī)則的地址放入所述報(bào)文的靜態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中,將報(bào)文內(nèi)容放入同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中。
7.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟a3、報(bào)文尾部信息處理,包括如下步驟a31、如果分片不是報(bào)文尾部信息,轉(zhuǎn)到步驟a11;a32、如果該報(bào)文需要丟棄,轉(zhuǎn)到步驟a39;a33、如果如步驟a23解析得到的報(bào)文長(zhǎng)度值與報(bào)文實(shí)際長(zhǎng)度不符,轉(zhuǎn)到步驟a39;a34、開始隊(duì)列處理,讀取規(guī)則的狀態(tài)字段,如果需要丟棄該條流則轉(zhuǎn)到步驟a39;a35、如果該報(bào)文所對(duì)應(yīng)的規(guī)則尚不完整,則將所述報(bào)文放到該規(guī)則的等待隊(duì)列上;a36、如果需要將該報(bào)文放到上層,則將所述報(bào)文放到上層的等待隊(duì)列上;a37、將報(bào)文放到規(guī)則的總隊(duì)列上,如果總隊(duì)列已滿則轉(zhuǎn)到步驟a39,總隊(duì)列不滿則插入對(duì)應(yīng)該報(bào)文的隊(duì)列;a38、清除標(biāo)志位和所述緩存的偏移量,將所述緩存設(shè)置為未分配,轉(zhuǎn)到步驟a11;a39、清除標(biāo)志位和所述緩存的偏移量,如果所述報(bào)文找到了對(duì)應(yīng)的規(guī)則則將規(guī)則的引用次數(shù)減1,轉(zhuǎn)到初始處理a11。
8.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟b11、從規(guī)則的隊(duì)列中取報(bào)文,包括如下步驟b11、鎖定規(guī)則隊(duì)列并讀取規(guī)則隊(duì)列信息;b12、如果該規(guī)則隊(duì)列的長(zhǎng)度為0,將該隊(duì)列解除鎖定狀態(tài),轉(zhuǎn)到步驟b11;b13、從該規(guī)則隊(duì)列中讀取報(bào)文,隊(duì)列長(zhǎng)度減1,將該隊(duì)列解除鎖定狀態(tài);b14、如果報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值為1,釋放該報(bào)文的緩存,將規(guī)則引用次數(shù)減1,轉(zhuǎn)到步驟b11,如果報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值不為1,修改報(bào)文的報(bào)文轉(zhuǎn)發(fā)次數(shù)值,重新計(jì)算校驗(yàn)和,但不寫回同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存。
9.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟b2、解析并處理報(bào)文,包括如下步驟b21、解析報(bào)文的緩存,對(duì)于分片報(bào)文只解析第一個(gè)分片,如果是INTERNET控制報(bào)文協(xié)議報(bào)文,轉(zhuǎn)到步驟b22,如果是傳輸控制協(xié)議報(bào)文,轉(zhuǎn)到步驟b23,如果是用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文,轉(zhuǎn)到步驟b29,其他類型的報(bào)文,只刷新超時(shí)時(shí)間;b22、修改規(guī)則的計(jì)數(shù)器的值;b23、鎖定規(guī)則隊(duì)列,讀取TCP報(bào)文的狀態(tài)標(biāo)志;b24、解析報(bào)文的狀態(tài);b25、根據(jù)報(bào)文的方向、原來(lái)的狀態(tài)、當(dāng)前報(bào)文查找TCP狀態(tài)表得到新的狀態(tài);b26、根據(jù)報(bào)文的狀態(tài)作相應(yīng)的處理并解除隊(duì)列的鎖定狀態(tài);b27、如果報(bào)文的狀態(tài)標(biāo)志為特定字段,則將該報(bào)文對(duì)應(yīng)的規(guī)則的狀態(tài)標(biāo)志中的“ESTABLISHED”設(shè)為1;b28、根據(jù)當(dāng)前的狀態(tài)刷新該規(guī)則的TCP超時(shí)時(shí)間;b29、如果收到過(guò)回復(fù)報(bào)文,則將當(dāng)前的狀態(tài)標(biāo)志中的“ESTABLISHED”設(shè)為1;b210、根據(jù)是否回復(fù)刷新該規(guī)則的超時(shí)時(shí)間。
10.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟b3、對(duì)報(bào)文進(jìn)行網(wǎng)絡(luò)地址變換處理,包括如下步驟b31、判斷是否需要進(jìn)行網(wǎng)絡(luò)地址變換處理,不需要?jiǎng)t轉(zhuǎn)到步驟b41;b32、讀取規(guī)則的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器內(nèi)存中的網(wǎng)絡(luò)地址變換信息,如果是源類型,修改源地址和端口,如果是回復(fù)和目的類型,修改目的地址和端口;b33、如果是傳輸控制協(xié)議報(bào)文且為文件傳輸協(xié)議的“pasv”和“port”命令或者用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文且端口為53都送到上層處理;b34、如果是傳輸控制協(xié)議報(bào)文/用戶數(shù)據(jù)報(bào)協(xié)議報(bào)文,根據(jù)步驟b32的結(jié)果修改傳輸控制協(xié)議報(bào)文或用戶數(shù)據(jù)報(bào)協(xié)議的源或目的端口,重新計(jì)算IP的校驗(yàn)和;b35、如果是INTERNET控制報(bào)文協(xié)議報(bào)文,修改INTERNET控制報(bào)文協(xié)議ID并重新計(jì)算INTERNET控制報(bào)文協(xié)議的校驗(yàn)和;b36、根據(jù)步驟b32的結(jié)果修改源或目的端口,重新計(jì)算IP的校驗(yàn)和,重新寫入IP的校驗(yàn)和、傳輸控制協(xié)議校驗(yàn)和或INTERNET控制報(bào)文協(xié)議校驗(yàn)和。
11.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟b4、轉(zhuǎn)發(fā)報(bào)文,包括如下步驟b41、讀取規(guī)則中的路由信息;b42、修改源和目的以太網(wǎng)媒體接入控制器地址;b43、將報(bào)文放到對(duì)應(yīng)端口的發(fā)送隊(duì)列上。
12.如權(quán)利要求3所述的一種實(shí)現(xiàn)包過(guò)濾的方法,其特征在于,所述步驟d1、控制信息處理,包括如下步驟d11、讀取控制信息;d12、目的地址為本地規(guī)則則將該鎖定該規(guī)則,將該規(guī)則標(biāo)記為未完成初始化;d13、查找該規(guī)則的信息,如果失敗,刪除該規(guī)則上的報(bào)文并從哈希表里刪除該規(guī)則,如果成功,根據(jù)路由發(fā)送地址解析協(xié)議報(bào)文,解析下一條的以太網(wǎng)媒體接入控制器地址并返回;d14、如果以太網(wǎng)媒體接入控制器地址解析成功,將規(guī)則的信息填寫完畢,標(biāo)記規(guī)則已準(zhǔn)備好,將該規(guī)則的隊(duì)列上的報(bào)文放到規(guī)則總隊(duì)列上。
全文摘要
一種實(shí)現(xiàn)包過(guò)濾的防火墻及其實(shí)現(xiàn)包過(guò)濾的方法,該防火墻包括同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,網(wǎng)絡(luò)處理器芯片,靜態(tài)隨機(jī)存儲(chǔ)器,緩存器和引導(dǎo)只讀存儲(chǔ)器;該實(shí)現(xiàn)包過(guò)濾的方法使用所述防火墻包括以下步驟,由微引擎完成以下操作a.接收處理,包括a1、接收?qǐng)?bào)文;a2、報(bào)文頭部信息處理;a3、報(bào)文尾部信息處理;b.規(guī)則處理,包括,b1、從規(guī)則的隊(duì)列中取報(bào)文;b2、解析并處理報(bào)文;b3、對(duì)報(bào)文進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換處理;b4、轉(zhuǎn)發(fā)報(bào)文;c.發(fā)送處理;由strongarm核完成以下操作d.控制處理,包括d1、控制信息處理;d2、數(shù)據(jù)信息處理;d3、進(jìn)行互斥控制。
文檔編號(hào)G06F12/14GK1536497SQ03116178
公開日2004年10月13日 申請(qǐng)日期2003年4月4日 優(yōu)先權(quán)日2003年4月4日
發(fā)明者周耀華, 黃 煥, 彭鍇, 姚能長(zhǎng) 申請(qǐng)人:上海廣電應(yīng)確信有限公司