用CAM實(shí)現(xiàn)OC-48線(xiàn)速字符串匹配的FPGA設(shè)計(jì)
發(fā)布時(shí)間:2008/5/28 0:00:00 訪(fǎng)問(wèn)次數(shù):1209
互聯(lián)網(wǎng)絡(luò)蓬勃發(fā)展的今天,在網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(nids)中,大部分的網(wǎng)絡(luò)入侵檢測(cè)設(shè)備幾乎都依賴(lài)于一些基于特征碼檢測(cè)的字符串匹配算法,而字符串匹配算法的實(shí)現(xiàn)幾乎都是由軟件來(lái)實(shí)現(xiàn)的。目前應(yīng)用比較成功的實(shí)例有,snort軟件使用字符串匹配算法對(duì)包含特征碼的數(shù)據(jù)包進(jìn)行檢測(cè)。但是軟件在內(nèi)容字節(jié)流中進(jìn)行搜索匹配時(shí),需要在不同的處理單元中/內(nèi)搬移或讀取數(shù)據(jù),這對(duì)于高速實(shí)現(xiàn)線(xiàn)速(oc-48)的檢測(cè)系統(tǒng)來(lái)說(shuō),帶來(lái)了很大的處理負(fù)荷。因此,如果采用硬件在數(shù)據(jù)包進(jìn)入內(nèi)存之前實(shí)現(xiàn)字符串匹配這一功能,將大大減少后端軟件操作的處理負(fù)載。
基于ixp2400和fpga的系統(tǒng)結(jié)構(gòu)
ixp2400是英特爾公司推出的第二代網(wǎng)絡(luò)處理器芯片,大量應(yīng)用于寬帶接入、防火墻、nids和負(fù)載均衡等系統(tǒng)中,它能滿(mǎn)足oc-48網(wǎng)絡(luò)線(xiàn)速的處理要求。玉衡銥達(dá)公司設(shè)計(jì)開(kāi)發(fā)的骨干網(wǎng)絡(luò)監(jiān)控系統(tǒng)采用了ixp2400作為數(shù)據(jù)包主處理器,fpga作為協(xié)處理器的硬件架構(gòu)來(lái)實(shí)現(xiàn),系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
如圖1所示,系統(tǒng)外接了4個(gè)千兆光口,用以接收和發(fā)送數(shù)據(jù)包,它是整個(gè)監(jiān)控系統(tǒng)和骨干網(wǎng)絡(luò)的交際通道。光口數(shù)據(jù)包通過(guò)光模塊進(jìn)入pmc-sierra公司的mac3386芯片。接收數(shù)據(jù)包時(shí),以太網(wǎng)幀數(shù)據(jù)包從千兆光口進(jìn)入mac3386,mac3386對(duì)數(shù)據(jù)包進(jìn)行解碼后通過(guò)pos phy3接口進(jìn)入fpga的fifo單元,同時(shí)對(duì)進(jìn)入fpga的數(shù)據(jù)包進(jìn)行模式字符串(pattern-string)的匹配操作,處理后的數(shù)據(jù)包通過(guò)pos phy3接口傳輸?shù)絠xp2400的msf單元進(jìn)行下一步的處理。發(fā)送時(shí),fpga只需要將ixp2400發(fā)送來(lái)的數(shù)據(jù)包通過(guò)pos phy3接口傳輸給mac3386,mac3386對(duì)數(shù)據(jù)包進(jìn)行編碼后發(fā)送給光模塊,光模塊通過(guò)光口將數(shù)據(jù)包發(fā)送出去。ixp2400提供了一組數(shù)據(jù)總線(xiàn)來(lái)訪(fǎng)問(wèn)外部設(shè)備寄存器,ixp2400中稱(chēng)之為慢端口(slow port)。在這里,和fpga相連的慢端口總線(xiàn)的一部分功能是作為寫(xiě)入fpga的模式字符串通道。
圖1:基于ixp2400和fpga的系統(tǒng)結(jié)構(gòu)示意圖。
pos phy3是一種標(biāo)準(zhǔn)化的網(wǎng)絡(luò)傳輸接口,接口數(shù)據(jù)傳輸速率為2.5gbps,最大支持oc-48的傳輸速率接口。pos phy3包括接收和發(fā)送兩組32位總線(xiàn),工作頻率為104mhz,峰值吞吐率為3.2gbps。支持2.5gbps數(shù)據(jù)包的全雙工操作。pos phy3接口接收時(shí)序圖如圖2所示。
圖2:pos phy3接口接收邏輯時(shí)序圖。
該時(shí)序圖描述了pos phy3接口接收數(shù)據(jù)包時(shí),數(shù)據(jù)流在pos phy3總線(xiàn)上的傳輸方式和相關(guān)的控制信號(hào)關(guān)系。關(guān)于更進(jìn)一步的詳細(xì)描述可以參考pos phy3接口標(biāo)準(zhǔn)文檔。
系統(tǒng)采用時(shí)鐘同步設(shè)計(jì),在時(shí)鐘上升沿進(jìn)行數(shù)據(jù)采樣,與fpga相連的mac3386、ixp2400的工作時(shí)鐘由fpga的dcm單元提供,可以保證數(shù)據(jù)采集的同步和穩(wěn)定性。
cam的設(shè)計(jì)
本設(shè)計(jì)中,由于要實(shí)現(xiàn)幾路32b的模式字符串匹配,需要占用大量的ram存儲(chǔ)單元,同時(shí)還得為數(shù)據(jù)包緩存fifo保留一定的存儲(chǔ)單元,綜合幾家fpga芯片廠商ram的存儲(chǔ)容量,決定選用賽靈思的virtex2或virtex pro系列的fpga芯片,因?yàn)閷?duì)于相同規(guī)模的邏輯資源和寄存器資源來(lái)說(shuō), virtex2或virtex pro系列的fpga芯片的ram容量比其他廠商都要多幾倍。
fpga中,與ram存儲(chǔ)單元相關(guān)的資源有三類(lèi):block ram、lut、寄存器。這三類(lèi)資源可以通過(guò)配置和粘合邏輯(glue logic)實(shí)現(xiàn)為不同類(lèi)型和位寬大小的單端口/雙端口ram、rom、cam、fifo等。fpga中cam的實(shí)現(xiàn)和配置非常靈活,cam是實(shí)現(xiàn)模式字符串模式匹配的核心資源。
cam即內(nèi)容可尋址存儲(chǔ)器。cam這種存儲(chǔ)器在其每個(gè)存儲(chǔ)單元都包含了一個(gè)內(nèi)嵌的比較邏輯,cam基于內(nèi)容尋址,通過(guò)硬件電路并行查找,實(shí)現(xiàn)快速匹配。一般來(lái)說(shuō)在一個(gè)時(shí)鐘周期內(nèi),寫(xiě)入cam的待比較數(shù)據(jù)和其內(nèi)部存儲(chǔ)的每一個(gè)數(shù)據(jù)進(jìn)行比較,并返回與端口數(shù)據(jù)相同的內(nèi)部數(shù)據(jù)存儲(chǔ)的地址和是否匹配的標(biāo)識(shí)符。cam的這種并行處理特性使得它在數(shù)據(jù)分選領(lǐng)域倍受青睞,被廣泛應(yīng)用在以太網(wǎng)網(wǎng)址搜尋、路由器中的地址交換表、高速數(shù)據(jù)處理等方面。
cam對(duì)于高速的數(shù)據(jù)包模式字符串匹配查找操作來(lái)說(shuō),我們需要足夠快的時(shí)間來(lái)完成,如果按照pos phy3接口標(biāo)準(zhǔn)來(lái)說(shuō),必須保證寄存器建立(setup)時(shí)間和cam一次查找匹配時(shí)間之和小于1個(gè)周期10ns(一般情況下,fpga設(shè)計(jì)中的保持(hold up)時(shí)間都可以滿(mǎn)足,可以不予考慮)。根據(jù)fpga芯片廠商數(shù)據(jù)手冊(cè)提供的性能基準(zhǔn)數(shù)據(jù),我們配置cam存儲(chǔ)器選用的資源是block ram,配置的地址匹配類(lèi)型選擇的是非編碼地址的多匹配方式(multi match unencoded),選用該項(xiàng)配置的cam32_32完成一次匹配查找的操作時(shí)間為7ns左右,cam32_32的配置大小是32位位寬,32個(gè)存儲(chǔ)單元的地址深度。
對(duì)于pos phy3的接口標(biāo)準(zhǔn)來(lái)說(shuō),數(shù)據(jù)傳輸操作周期為10ns,根據(jù)性能基準(zhǔn)數(shù)據(jù),我們因此除去寄存器的建立時(shí)間(<2ns),完成一次cam匹配操作是完全可以和pos phy3的接口標(biāo)準(zhǔn)相匹配的。根據(jù)數(shù)據(jù)包在pos phy3接口的傳輸字節(jié)
互聯(lián)網(wǎng)絡(luò)蓬勃發(fā)展的今天,在網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(nids)中,大部分的網(wǎng)絡(luò)入侵檢測(cè)設(shè)備幾乎都依賴(lài)于一些基于特征碼檢測(cè)的字符串匹配算法,而字符串匹配算法的實(shí)現(xiàn)幾乎都是由軟件來(lái)實(shí)現(xiàn)的。目前應(yīng)用比較成功的實(shí)例有,snort軟件使用字符串匹配算法對(duì)包含特征碼的數(shù)據(jù)包進(jìn)行檢測(cè)。但是軟件在內(nèi)容字節(jié)流中進(jìn)行搜索匹配時(shí),需要在不同的處理單元中/內(nèi)搬移或讀取數(shù)據(jù),這對(duì)于高速實(shí)現(xiàn)線(xiàn)速(oc-48)的檢測(cè)系統(tǒng)來(lái)說(shuō),帶來(lái)了很大的處理負(fù)荷。因此,如果采用硬件在數(shù)據(jù)包進(jìn)入內(nèi)存之前實(shí)現(xiàn)字符串匹配這一功能,將大大減少后端軟件操作的處理負(fù)載。
基于ixp2400和fpga的系統(tǒng)結(jié)構(gòu)
ixp2400是英特爾公司推出的第二代網(wǎng)絡(luò)處理器芯片,大量應(yīng)用于寬帶接入、防火墻、nids和負(fù)載均衡等系統(tǒng)中,它能滿(mǎn)足oc-48網(wǎng)絡(luò)線(xiàn)速的處理要求。玉衡銥達(dá)公司設(shè)計(jì)開(kāi)發(fā)的骨干網(wǎng)絡(luò)監(jiān)控系統(tǒng)采用了ixp2400作為數(shù)據(jù)包主處理器,fpga作為協(xié)處理器的硬件架構(gòu)來(lái)實(shí)現(xiàn),系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
如圖1所示,系統(tǒng)外接了4個(gè)千兆光口,用以接收和發(fā)送數(shù)據(jù)包,它是整個(gè)監(jiān)控系統(tǒng)和骨干網(wǎng)絡(luò)的交際通道。光口數(shù)據(jù)包通過(guò)光模塊進(jìn)入pmc-sierra公司的mac3386芯片。接收數(shù)據(jù)包時(shí),以太網(wǎng)幀數(shù)據(jù)包從千兆光口進(jìn)入mac3386,mac3386對(duì)數(shù)據(jù)包進(jìn)行解碼后通過(guò)pos phy3接口進(jìn)入fpga的fifo單元,同時(shí)對(duì)進(jìn)入fpga的數(shù)據(jù)包進(jìn)行模式字符串(pattern-string)的匹配操作,處理后的數(shù)據(jù)包通過(guò)pos phy3接口傳輸?shù)絠xp2400的msf單元進(jìn)行下一步的處理。發(fā)送時(shí),fpga只需要將ixp2400發(fā)送來(lái)的數(shù)據(jù)包通過(guò)pos phy3接口傳輸給mac3386,mac3386對(duì)數(shù)據(jù)包進(jìn)行編碼后發(fā)送給光模塊,光模塊通過(guò)光口將數(shù)據(jù)包發(fā)送出去。ixp2400提供了一組數(shù)據(jù)總線(xiàn)來(lái)訪(fǎng)問(wèn)外部設(shè)備寄存器,ixp2400中稱(chēng)之為慢端口(slow port)。在這里,和fpga相連的慢端口總線(xiàn)的一部分功能是作為寫(xiě)入fpga的模式字符串通道。
圖1:基于ixp2400和fpga的系統(tǒng)結(jié)構(gòu)示意圖。
pos phy3是一種標(biāo)準(zhǔn)化的網(wǎng)絡(luò)傳輸接口,接口數(shù)據(jù)傳輸速率為2.5gbps,最大支持oc-48的傳輸速率接口。pos phy3包括接收和發(fā)送兩組32位總線(xiàn),工作頻率為104mhz,峰值吞吐率為3.2gbps。支持2.5gbps數(shù)據(jù)包的全雙工操作。pos phy3接口接收時(shí)序圖如圖2所示。
圖2:pos phy3接口接收邏輯時(shí)序圖。
該時(shí)序圖描述了pos phy3接口接收數(shù)據(jù)包時(shí),數(shù)據(jù)流在pos phy3總線(xiàn)上的傳輸方式和相關(guān)的控制信號(hào)關(guān)系。關(guān)于更進(jìn)一步的詳細(xì)描述可以參考pos phy3接口標(biāo)準(zhǔn)文檔。
系統(tǒng)采用時(shí)鐘同步設(shè)計(jì),在時(shí)鐘上升沿進(jìn)行數(shù)據(jù)采樣,與fpga相連的mac3386、ixp2400的工作時(shí)鐘由fpga的dcm單元提供,可以保證數(shù)據(jù)采集的同步和穩(wěn)定性。
cam的設(shè)計(jì)
本設(shè)計(jì)中,由于要實(shí)現(xiàn)幾路32b的模式字符串匹配,需要占用大量的ram存儲(chǔ)單元,同時(shí)還得為數(shù)據(jù)包緩存fifo保留一定的存儲(chǔ)單元,綜合幾家fpga芯片廠商ram的存儲(chǔ)容量,決定選用賽靈思的virtex2或virtex pro系列的fpga芯片,因?yàn)閷?duì)于相同規(guī)模的邏輯資源和寄存器資源來(lái)說(shuō), virtex2或virtex pro系列的fpga芯片的ram容量比其他廠商都要多幾倍。
fpga中,與ram存儲(chǔ)單元相關(guān)的資源有三類(lèi):block ram、lut、寄存器。這三類(lèi)資源可以通過(guò)配置和粘合邏輯(glue logic)實(shí)現(xiàn)為不同類(lèi)型和位寬大小的單端口/雙端口ram、rom、cam、fifo等。fpga中cam的實(shí)現(xiàn)和配置非常靈活,cam是實(shí)現(xiàn)模式字符串模式匹配的核心資源。
cam即內(nèi)容可尋址存儲(chǔ)器。cam這種存儲(chǔ)器在其每個(gè)存儲(chǔ)單元都包含了一個(gè)內(nèi)嵌的比較邏輯,cam基于內(nèi)容尋址,通過(guò)硬件電路并行查找,實(shí)現(xiàn)快速匹配。一般來(lái)說(shuō)在一個(gè)時(shí)鐘周期內(nèi),寫(xiě)入cam的待比較數(shù)據(jù)和其內(nèi)部存儲(chǔ)的每一個(gè)數(shù)據(jù)進(jìn)行比較,并返回與端口數(shù)據(jù)相同的內(nèi)部數(shù)據(jù)存儲(chǔ)的地址和是否匹配的標(biāo)識(shí)符。cam的這種并行處理特性使得它在數(shù)據(jù)分選領(lǐng)域倍受青睞,被廣泛應(yīng)用在以太網(wǎng)網(wǎng)址搜尋、路由器中的地址交換表、高速數(shù)據(jù)處理等方面。
cam對(duì)于高速的數(shù)據(jù)包模式字符串匹配查找操作來(lái)說(shuō),我們需要足夠快的時(shí)間來(lái)完成,如果按照pos phy3接口標(biāo)準(zhǔn)來(lái)說(shuō),必須保證寄存器建立(setup)時(shí)間和cam一次查找匹配時(shí)間之和小于1個(gè)周期10ns(一般情況下,fpga設(shè)計(jì)中的保持(hold up)時(shí)間都可以滿(mǎn)足,可以不予考慮)。根據(jù)fpga芯片廠商數(shù)據(jù)手冊(cè)提供的性能基準(zhǔn)數(shù)據(jù),我們配置cam存儲(chǔ)器選用的資源是block ram,配置的地址匹配類(lèi)型選擇的是非編碼地址的多匹配方式(multi match unencoded),選用該項(xiàng)配置的cam32_32完成一次匹配查找的操作時(shí)間為7ns左右,cam32_32的配置大小是32位位寬,32個(gè)存儲(chǔ)單元的地址深度。
對(duì)于pos phy3的接口標(biāo)準(zhǔn)來(lái)說(shuō),數(shù)據(jù)傳輸操作周期為10ns,根據(jù)性能基準(zhǔn)數(shù)據(jù),我們因此除去寄存器的建立時(shí)間(<2ns),完成一次cam匹配操作是完全可以和pos phy3的接口標(biāo)準(zhǔn)相匹配的。根據(jù)數(shù)據(jù)包在pos phy3接口的傳輸字節(jié)
熱門(mén)點(diǎn)擊
- 基于FPGA的可編程定時(shí)器/計(jì)數(shù)器8253的
- PLC和PLD的區(qū)別與聯(lián)系
- Xilinx FPGA全局時(shí)鐘和第二全局時(shí)鐘
- 基于FPGA片上PowerPC和VxWork
- 基于FPGA的數(shù)字正交混頻變換算法的實(shí)現(xiàn)
- 使用C編譯器+ICD2調(diào)試程序需要注意的問(wèn)題
- Altera發(fā)布低成本低功耗CPLD EPM
- 基于VHDL的彩燈控制
- 32位單精度浮點(diǎn)乘法器的FPGA實(shí)現(xiàn)
- 用CAM實(shí)現(xiàn)OC-48線(xiàn)速字符串匹配的FPG
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- 超低功耗角度位置傳感器參數(shù)技術(shù)
- 四路輸出 DC/DC 降壓電源
- 降壓變換器和升降壓變換器優(yōu)特點(diǎn)
- 業(yè)界首創(chuàng)可在線(xiàn)編程電源模塊 m
- 可編程門(mén)陣列 (FPGA)智能 電源解決方案
- 高效先進(jìn)封裝工藝
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究