麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的裝置及方法與流程

文檔序號(hào):12492633閱讀:310來(lái)源:國(guó)知局
一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的裝置及方法與流程

本發(fā)明涉及FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)、有線數(shù)字通信和網(wǎng)絡(luò)數(shù)據(jù)流管理領(lǐng)域,尤其涉及一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的裝置及方法。



背景技術(shù):

網(wǎng)絡(luò)流表是實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)流管理的一種方式。網(wǎng)絡(luò)中含有相同五元組(源ip地址、目的ip地址、源端口號(hào)、目的端口號(hào)和協(xié)議類型)的數(shù)據(jù)包組成了一條數(shù)據(jù)流,通過(guò)對(duì)每條數(shù)據(jù)流建立表項(xiàng)的方式,對(duì)數(shù)據(jù)流的所有數(shù)據(jù)包進(jìn)行統(tǒng)一處理。例如,對(duì)某條數(shù)據(jù)流的數(shù)據(jù)包個(gè)數(shù)進(jìn)行統(tǒng)計(jì),或?qū)δ硹l數(shù)據(jù)流的所有數(shù)據(jù)包統(tǒng)一轉(zhuǎn)發(fā)到某一個(gè)端口。

現(xiàn)在網(wǎng)絡(luò)中的每條10G光纖線路所包含的數(shù)據(jù)流數(shù)量是千萬(wàn)級(jí)的。要實(shí)現(xiàn)對(duì)如此大規(guī)模的數(shù)據(jù)流建流表需要使用大容量存儲(chǔ)器,即動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。查找方式采用hash方式,如圖1所示,即對(duì)五元組進(jìn)行hash計(jì)算,hash值作為地址在DRAM中查找表項(xiàng),如果表項(xiàng)中的五元組與被查找五元組一致,則說(shuō)明查找正確,再按流表內(nèi)容對(duì)數(shù)據(jù)包進(jìn)行處理,對(duì)流表內(nèi)容進(jìn)行更新;如果流表中的五元組與被查找五元組不一致,則表示hash沖突,需要再建立一條表項(xiàng)(即建流)。

目前大多采用CPU或FPGA查找流表,查完一個(gè)數(shù)據(jù)包的五元組才能查下一個(gè),如圖2所示。對(duì)DRAM的讀寫(xiě)比較隨機(jī),沒(méi)有規(guī)律。由于DRAM的讀寫(xiě)操作之間有延遲,隨機(jī)查找會(huì)大幅度降低DRAM的讀取效率,在DRAM控制器數(shù)量有限的情況下,使單板處理能力降低。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是提供一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的裝置及方法,用FPGA內(nèi)部可編程邏輯器件的現(xiàn)有資源實(shí)現(xiàn)一種硬件裝置,該裝置提高了DRAM的讀取速率,從而提高網(wǎng)絡(luò)流表的查找效率。

為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案為:

一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的裝置,包括內(nèi)存控制器、分組模塊、索引處理模塊、查找模塊、更新模塊;

所述內(nèi)存控制器用于控制查找及返回hash索引、查找及返回hash節(jié)點(diǎn)信息、更新流表中的hash節(jié)點(diǎn);

所述分組模塊用于將輸入數(shù)據(jù)包的五元組進(jìn)行第一次hash計(jì)算,根據(jù)產(chǎn)生的8bit hash值分成256組數(shù)據(jù)包,其中每一組數(shù)據(jù)包的hash值相同;

所述索引處理模塊用于從256組數(shù)據(jù)包中各提取一個(gè)數(shù)據(jù)包五元組進(jìn)行第二次hash計(jì)算,得到固定寬度為29bit的DRAM讀地址,并緩存各五元組信息以及按順序通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找并接收hash索引;

所述查找模塊用于將有效索引地址通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找并接收流表中hash節(jié)點(diǎn)的內(nèi)容;

所述更新模塊用于對(duì)流表中hash節(jié)點(diǎn)進(jìn)行更新操作。

進(jìn)一步地,所述查找hash索引是以hash值作為地址,查找存儲(chǔ)在內(nèi)存中的hash節(jié)點(diǎn)地址的索引表。

進(jìn)一步地,所述有效索引為hash索引表中的有效bit位為1,即內(nèi)存中已有hash節(jié)點(diǎn)。

進(jìn)一步地,所述索引處理模塊包括查找索引模塊、先入先出模塊、接收索引模塊;

所述查找索引模塊從256組數(shù)據(jù)包中各提取一個(gè)數(shù)據(jù)包五元組進(jìn)行第二次hash計(jì)算,得到固定寬度為29bit的DRAM讀地址,并按順序通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找hash索引;

所述先入先出模塊用于緩存各五元組信息;

所述接收索引模塊接收內(nèi)存返回的hash索引結(jié)果。

進(jìn)一步地,所述查找模塊包括查找節(jié)點(diǎn)模塊、先入先出模塊、接收節(jié)點(diǎn)模塊;

所述查找節(jié)點(diǎn)模塊根據(jù)索引地址,通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找流表中hash節(jié)點(diǎn)的內(nèi)容;

所述先入先出模塊用于緩存各流表中hash節(jié)點(diǎn)的五元組信息;

所述接收節(jié)點(diǎn)模塊接收內(nèi)存返回的流表中hash節(jié)點(diǎn)的內(nèi)容。

一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的方法,其步驟包括:

1)將輸入數(shù)據(jù)包的五元組進(jìn)行第一次hash計(jì)算,根據(jù)產(chǎn)生的8bit hash值分成256組數(shù)據(jù)包并存儲(chǔ);

2)從256組數(shù)據(jù)包中各提取一個(gè)數(shù)據(jù)包五元組進(jìn)行第二次hash計(jì)算,得到固定寬度為29bit的DRAM讀地址;

3)按順序通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找hash索引,并緩存各五元組信息;

4)從內(nèi)存中得到hash索引,將有效索引地址作為讀地址通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,并在內(nèi)存中查找hash節(jié)點(diǎn);

5)若hash節(jié)點(diǎn)中的五元組與上述五元組信息一致,則查找正確;

6)更新流表中的hash節(jié)點(diǎn)并輸出結(jié)果。

進(jìn)一步地,步驟3)中所述查找hash索引是以hash值作為地址,查找存儲(chǔ)在內(nèi)存中的hash節(jié)點(diǎn)地址的索引表。

進(jìn)一步地,步驟4)中所述有效索引為hash索引表中的有效bit位為1,即內(nèi)存中已有hash節(jié)點(diǎn);若有效bit位為0,說(shuō)明hash索引無(wú)效,則進(jìn)行建流操作。

進(jìn)一步地,步驟5)中如果信息不一致,則確認(rèn)是否有hash沖突,如果有hash沖突則繼續(xù)查找下一個(gè)hash節(jié)點(diǎn),否則進(jìn)行建流操作。

更進(jìn)一步地,所述建流操作就是建立一個(gè)hash節(jié)點(diǎn)。

本發(fā)明的有益效果在于:本發(fā)明提供一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的裝置及方法,在對(duì)原有系統(tǒng)硬件不做任何改變的情況下,應(yīng)用FPGA可編程邏輯器件的現(xiàn)有資源實(shí)現(xiàn)一種硬件裝置,完成對(duì)網(wǎng)絡(luò)流表查找效率的提高。本發(fā)明通過(guò)采用對(duì)五元組計(jì)算hash值的方式,將輸入數(shù)據(jù)包的五元組根據(jù)第一次hash計(jì)算得到的8bit hash值分成256組數(shù)據(jù)包,每次對(duì)256個(gè)不同hash值的數(shù)據(jù)包進(jìn)行統(tǒng)一查找流表的操作,如圖3所示。當(dāng)256個(gè)數(shù)據(jù)包都處理完后,再發(fā)起下一次256個(gè)數(shù)據(jù)包的流表查找。這樣每次流表查找就進(jìn)行一次讀寫(xiě)切換,讀寫(xiě)延遲將被分?jǐn)偟?56個(gè)數(shù)據(jù)包,平均到每個(gè)數(shù)據(jù)包上的延遲時(shí)間就減小為原來(lái)的1/256,大幅度提高了網(wǎng)絡(luò)流表的查找效率。

附圖說(shuō)明

圖1為采用hash方式查找流表的數(shù)據(jù)流程圖。

圖2為現(xiàn)有的查找流表操作順序示意圖。

圖3為本發(fā)明的查找流表操作順序示意圖。

圖4為本發(fā)明一實(shí)施例的裝置結(jié)構(gòu)示意圖。

圖5為未使用本發(fā)明裝置結(jié)構(gòu)的示意圖。

圖6為使用本發(fā)明裝置結(jié)構(gòu)的示意圖。

圖7為本發(fā)明一實(shí)施例的方法流程圖。

圖8為圖6中Prepare模塊的結(jié)構(gòu)示意圖。

圖9為圖6中Prepare模塊的寫(xiě)入流程圖。

圖10為圖6中Prepare模塊的讀出流程圖。

具體實(shí)施方式

為使本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并配合所附圖作詳細(xì)說(shuō)明如下。

本發(fā)明提供一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的裝置,如圖4所示,該裝置包括一內(nèi)存控制器,如圖中的Sdram_controller模塊;一分組模塊,如圖中的Prepare模塊;一索引處理模塊,其包括查找索引模塊、先入先出模塊、接收索引模塊,分別如圖中的Lup_index模塊、Fifo模塊、Wait_index模塊;一查找模塊,其包括查找節(jié)點(diǎn)模塊、先入先出模塊、接收節(jié)點(diǎn)模塊,分別如圖中的Lup_node模塊、Fifo模塊、Wait_node模塊;一更新模塊,如圖中的Write_node模塊;

所述Sdram_controller模塊用于控制查找及返回hash索引、查找及返回hash節(jié)點(diǎn)信息、更新流表中的hash節(jié)點(diǎn);

所述Prepare模塊將輸入數(shù)據(jù)包的五元組進(jìn)行第一次hash計(jì)算,根據(jù)得到的8bit hash值分成256組數(shù)據(jù)包(即256條數(shù)據(jù)流)進(jìn)行存儲(chǔ),并按組號(hào)的順序讀出五元組,發(fā)送給下游模塊進(jìn)行查找,所述每個(gè)數(shù)據(jù)包的hash值相同;

所述Lup_index模塊對(duì)從256組數(shù)據(jù)包中各提取的一個(gè)數(shù)據(jù)包五元組進(jìn)行第二次hash計(jì)算得到固定寬度為29bit的DRAM讀地址,并通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找hash索引,所述查找hash索引是以hash值作為地址,查找存儲(chǔ)在內(nèi)存中的hash節(jié)點(diǎn)地址的索引表;

所述Fifo模塊用于緩存各五元組信息;

所述Wait_index模塊用于接收內(nèi)存返回的hash索引結(jié)果;

所述Lup_node模塊根據(jù)索引地址,通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找流表中hash節(jié)點(diǎn)的內(nèi)容;

所述Wait_node模塊用于接收內(nèi)存返回的流表中hash節(jié)點(diǎn)的內(nèi)容;

所述Write_node模塊用于對(duì)流表中hash節(jié)點(diǎn)進(jìn)行更新操作。

本發(fā)明使用的hash計(jì)算,是指計(jì)算結(jié)果為統(tǒng)一位寬的數(shù)值。

請(qǐng)參考圖5與圖6,圖5和圖6分別為未使用本發(fā)明裝置結(jié)構(gòu)的示意圖與使用本發(fā)明裝置結(jié)構(gòu)的示意圖。從圖5與圖6中可以看出,在對(duì)原有系統(tǒng)硬件不做任何改變的情況下,應(yīng)用FPGA可編程邏輯器件的現(xiàn)有資源(即在可編程邏輯器件中增加本發(fā)明裝置),完成了對(duì)網(wǎng)絡(luò)流表查找效率的提高。

本發(fā)明還提供一種提高大規(guī)模網(wǎng)絡(luò)流表查找效率的方法,如圖7所示,該方法步驟包括:

1)在Prepare模塊對(duì)輸入數(shù)據(jù)包的五元組進(jìn)行第一次hash計(jì)算,根據(jù)得到的8bit hash值分成256組數(shù)據(jù)包并存儲(chǔ),在下游模塊空閑的情況下,按組的順序?qū)⒕彺娴?56個(gè)hash值不同的五元組發(fā)給下游Lup_index模塊;

2)Lup_index模塊將256個(gè)五元組進(jìn)行第二次hash計(jì)算得到固定寬度為29bit的DRAM讀地址,按順序通過(guò)內(nèi)存控制器向內(nèi)存發(fā)出讀指令,查找hash索引,再將五元組放入Fifo模塊中緩存,所述查找hash索引是以hash值作為地址,查找存儲(chǔ)在內(nèi)存中的hash節(jié)點(diǎn)地址的索引表;

3)在Wait_index模塊判斷從內(nèi)存中得到的hash索引是否有效,有效則將索引地址和Fifo模塊中的五元組發(fā)送給Lup_node模塊;所述hash索引有效為hash索引表中的有效bit位為1,即內(nèi)存中已有hash節(jié)點(diǎn);若有效bit位為0,說(shuō)明hash索引無(wú)效,則進(jìn)行建流操作,即建立一個(gè)hash節(jié)點(diǎn);

4)Lup_node模塊將索引地址作為讀地址,通過(guò)內(nèi)存控制器向內(nèi)存發(fā)送讀指令,將五元組存入Fifo模塊中;

5)Wait_node模塊將內(nèi)存返回的hash節(jié)點(diǎn)中的五元組與Fifo模塊中的五元組進(jìn)行比較,如果一致,則說(shuō)明查找正確,將hash節(jié)點(diǎn)地址和內(nèi)容發(fā)送給Write_node模塊,進(jìn)行更新流表中hash節(jié)點(diǎn)的操作并輸出結(jié)果;如果查找不正確則確認(rèn)是否有hash沖突,如果有hash沖突則繼續(xù)查找下一個(gè)hash節(jié)點(diǎn),如果沒(méi)有則進(jìn)行建流操作,即建立一個(gè)hash節(jié)點(diǎn)。

請(qǐng)參考圖8,該圖為圖6中Prepare模塊的結(jié)構(gòu)示意圖,Prepare模塊由多個(gè)子功能模塊構(gòu)成,其包括:

Ram:可編程邏輯器件內(nèi)部雙端口ram;

HashX_waddr:hash值對(duì)應(yīng)的部分ram寫(xiě)地址寄存器;

HashX_raddr:hash值對(duì)應(yīng)的部分ram讀地址寄存器;

Cnt:累加計(jì)數(shù)器;

Ram_wr_addr:整個(gè)ram的寫(xiě)地址;

Ram_rd_addr:整個(gè)ram的讀地址。

請(qǐng)參考圖9,該圖為圖6中Prepare模塊的寫(xiě)入流程圖,首先對(duì)五元組進(jìn)行8bit的hash計(jì)算;其次將得到的hash值與hash值對(duì)應(yīng)的寫(xiě)地址寄存器組合成為ram的寫(xiě)地址;最后將五元組寫(xiě)入ram,并將與hash值對(duì)應(yīng)的寫(xiě)地址寄存器做加1操作。

請(qǐng)參考圖10,該圖為圖6中Prepare模塊的讀出流程圖,在下游模塊為空閑的情況下,將累加計(jì)數(shù)器cnt的值和累加計(jì)數(shù)器對(duì)應(yīng)的部分ram讀地址寄存器組合成為ram的讀地址,判斷ram中是否有五元組數(shù)據(jù),如果有數(shù)據(jù),則輸出數(shù)據(jù),并將cnt對(duì)應(yīng)的部分ram的讀地址寄存器加1,累加計(jì)數(shù)器cnt累加;如果沒(méi)有數(shù)據(jù),則只進(jìn)行累加計(jì)數(shù)器cnt累加。當(dāng)累加計(jì)數(shù)器達(dá)到256時(shí)停止此輪操作。

表1.未使用本發(fā)明設(shè)備與使用本發(fā)明設(shè)備處理能力對(duì)比表

通過(guò)網(wǎng)絡(luò)測(cè)試儀對(duì)是否采用快速流表查找方法的設(shè)備進(jìn)行發(fā)包測(cè)試作為對(duì)照,來(lái)評(píng)估本發(fā)明的效果。評(píng)價(jià)指標(biāo)采用最大處理能力,即不丟包情況下的最大可處理輸入帶寬。測(cè)試儀發(fā)送給使用本發(fā)明設(shè)備和未使用本發(fā)明設(shè)備的數(shù)據(jù)包完全一致,設(shè)備最大輸入帶寬為100Gbps,結(jié)果如表1所示。實(shí)驗(yàn)結(jié)果表明,在各種流量環(huán)境下,采用本發(fā)明提出的快速流表查找裝置的設(shè)備有很好的性能提升,可以提高流表的查找速率。

以上實(shí)施僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,本領(lǐng)域的普通技術(shù)人員可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求書(shū)所述為準(zhǔn)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
主站蜘蛛池模板: 灵宝市| 禄丰县| 建瓯市| 云霄县| 铜川市| 丰城市| 南充市| 教育| 股票| 井陉县| 通化市| 简阳市| 淮北市| 无为县| 铁岭县| 九江县| 阿坝县| 宝丰县| 汝州市| 宜兰县| 澄城县| 民勤县| 兰坪| 新源县| 延寿县| 灵山县| 拉萨市| 全椒县| 宿迁市| 休宁县| 海安县| 三门县| 龙游县| 辽宁省| 宜兰县| 吕梁市| 桃园县| 化德县| 霍城县| 射阳县| 额尔古纳市|