亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種fpga中mac地址查找表的實(shí)現(xiàn)方法

文檔序號(hào):6369917閱讀:641來(lái)源:國(guó)知局
專利名稱:一種fpga中mac地址查找表的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明屬于電通信技術(shù)領(lǐng)域,尤其涉及一種現(xiàn)場(chǎng)可編程門陣列中MAC地址查找表的實(shí)現(xiàn)方法。
背景技術(shù)
MAC查找表(以下簡(jiǎn)稱查找表)用來(lái)實(shí)現(xiàn)數(shù)據(jù)查找轉(zhuǎn)發(fā),可以看成ー塊特殊的存儲(chǔ)単元,里面存放有MAC地址及它所對(duì)應(yīng)的端ロ號(hào)和生存時(shí)間,根據(jù)查找表對(duì)收到的幀的目的MAC地址來(lái)查找轉(zhuǎn)發(fā)數(shù)據(jù)幀?;驹硎峭ㄟ^(guò)一定的算法把目的MAC地址轉(zhuǎn)成查找表的查詢地址,從而把該存儲(chǔ)単元中的數(shù)據(jù)讀出,找到目的端口號(hào),把數(shù)據(jù)幀轉(zhuǎn)發(fā)到對(duì)應(yīng)端ロ上去。每當(dāng)從某個(gè)端ロ收到ー個(gè)源地址后,都要查表更新一下某個(gè)表項(xiàng)的生存時(shí)間,若長(zhǎng)時(shí)間沒(méi)有更新生存時(shí)間,則生存時(shí)間結(jié)束后,要?jiǎng)h除該表項(xiàng),防止設(shè)備位置移動(dòng)后,仍然記錄著一個(gè)無(wú)用的表項(xiàng)。 由于MAC地址是48bit,而一般的查找表容量在幾萬(wàn)個(gè)以下,所以需要通過(guò)特定的映射把48bit的地址轉(zhuǎn)成更少位寬的地址。常用的轉(zhuǎn)換方法就是利用hash散列函數(shù)來(lái)實(shí)現(xiàn)把任意長(zhǎng)度的消息壓縮成特定位寬的消息摘要,通常稱為索引值,索引值對(duì)應(yīng)存儲(chǔ)該MAC地址的地址,根據(jù)索引值查找。實(shí)際設(shè)計(jì)散列函數(shù)時(shí)不可避免的出現(xiàn)索引值沖突的問(wèn)題,因此實(shí)際中,更多關(guān)注出現(xiàn)沖突后如何處理沖突的問(wèn)題。在構(gòu)造哈希算法時(shí)首要考慮的是算法復(fù)雜度和對(duì)資源的消耗,然后維持碰撞大小在合理水平。對(duì)于ー個(gè)N行,M列的查找表,它的容量大小為NXM,N表示可能的索引值總數(shù),M表示每個(gè)索引值下允許發(fā)生M-I次碰撞,因此若某個(gè)索引值下發(fā)生了 M次碰撞,則說(shuō)明整個(gè)查找表發(fā)生了 I次碰撞。雖然M取值越大,碰撞的可能就越小,但是M取值越大,查找表的查找速度就越低?,F(xiàn)在市場(chǎng)中對(duì)性能要求比較高的場(chǎng)合,采用ASIC實(shí)現(xiàn)MAC查找表的基本功能,然后再利用嵌入式微處理器、嵌入式操作系統(tǒng)和高速存儲(chǔ)器(如RLDRAM)等實(shí)現(xiàn)具有可配置功能的交換機(jī)產(chǎn)品,但是對(duì)于性能要求不高的場(chǎng)合,常用的方法是采用ー塊FPGA來(lái)實(shí)現(xiàn)。但是由于在FPGA實(shí)現(xiàn)查找表時(shí),邏輯綜合工具會(huì)為某ー特定子功能綜合出獨(dú)立的邏輯電路,因此邏輯資源消耗很大。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于FPGA的MAC地址查找表的實(shí)現(xiàn)方法,有效的節(jié)約邏輯資源,維持索引值沖突在合理水平。ー種FPGA中MAC地址查找表的實(shí)現(xiàn)方法,用于在現(xiàn)場(chǎng)可編程門陣列FPGA中實(shí)現(xiàn)MAC查找表,包括步驟確定查找表的的隨機(jī)存儲(chǔ)器RAM結(jié)構(gòu);確定查找表每個(gè)索引值對(duì)應(yīng)的MAC地址數(shù)為M,將查找表拆分為M份;對(duì)每ー份查找表采用單獨(dú)的老化邏輯資源,同時(shí)對(duì)M份查找表進(jìn)行老化操作。
所述查找表的的隨機(jī)存儲(chǔ)器RAM結(jié)構(gòu)為將MAC地址和端口號(hào)一起存儲(chǔ)在ー個(gè)RAM中,而對(duì)應(yīng)的生存時(shí)間TTL存儲(chǔ)在另ー個(gè)RAM,所述MAC地址和端ロ號(hào)存儲(chǔ)的RAM位寬為53bit,其中MAC地址占用48bit,端口號(hào)占用5bit,所述生存時(shí)間TTL存儲(chǔ)的RAM位寬為5bit。ー個(gè)最基本的查找表項(xiàng)需要包括48bit的MAC地址、5bit的目的端口號(hào)和5bit的生存時(shí)間TTL,而查找表的基本操作包括源MAC地址學(xué)習(xí)、目的MAC地址查找和查找表老化,其中源MAC地址學(xué)習(xí)需要存儲(chǔ)MAC地址、目的端ロ號(hào)和TTL,目的MAC地址查找僅僅需要讀取索引值下的MAC地址和目的端口號(hào),查找表老化僅僅需要對(duì)TTL值進(jìn)行操作,因此這樣構(gòu)造的查找表的數(shù)據(jù)組織結(jié)構(gòu),滿足在讀寫時(shí)僅讀寫所需要操作的數(shù)據(jù),盡量減少無(wú)用數(shù)據(jù)的讀寫,從而能盡量減少對(duì)邏輯資源的消耗。進(jìn)ー步地,所述查找表容量為1K,所述查找表索引值對(duì)應(yīng)的MAC地址數(shù)為2,將IK的查找表拆分為2個(gè),分別為第一 RAM與第二 RAM,所述第一 RAM包括第一 53bit位寬RAM和第一 5bit位寬RAM,所述第二 RAM包括第二 53bit位寬RAM和第二 5bit位寬RAM。進(jìn)ー步地,每個(gè)索引值對(duì)應(yīng)于第一 RAM和第二 RAM的相同行。根據(jù)每個(gè)索引值對(duì) 應(yīng)的MAC地址個(gè)數(shù)將查找表分為相同結(jié)構(gòu)的兩個(gè)RAM,使得索引值沖突被維持在合理水平,兼顧索引值沖突和查找表查找速度。所述索引值是通過(guò)哈希算法計(jì)算MAC幀中的MAC地址得到,將MAC地址每9比特分為ー組,共分成6組,第6組不足9比特用O補(bǔ)充,然后通過(guò)下述公式計(jì)算得到索引值Hash(m) =A(m) +A(m+9) +A(m+18) +A(m+27) +A(m+36) +A(m+45),其中 m e
。所述優(yōu)化老化操作是指分別通過(guò)一個(gè)單獨(dú)的老化邏輯資源逐個(gè)對(duì)第一 RAM或第ニ RAM中的生存時(shí)間TTL進(jìn)行老化操作。傳統(tǒng)的同時(shí)老化方式的邏輯綜合后的結(jié)果是為每個(gè)存儲(chǔ)単元都綜合出一個(gè)單獨(dú)的只供該存儲(chǔ)単元使用的老化邏輯,采用逐個(gè)老化的方式避免了同時(shí)老化造成的邏輯資源浪費(fèi),節(jié)約了大量的邏輯資源。所述FPGA外掛小容量的CAM,當(dāng)需要學(xué)習(xí)的MAC地址數(shù)大于160時(shí),將學(xué)習(xí)的MAC地址存儲(chǔ)到CAM。通過(guò)外怪笑容量CAM,有效防止出現(xiàn)的索引值沖突。進(jìn)ー步地,所述查找表實(shí)現(xiàn)方法還包括步驟通過(guò)IP核例化形成所述第一 RAM和第二 RAM,采用初始化文件把所有RAM存儲(chǔ)空間初始化為全零。從而避免了用硬件描述語(yǔ)言描述的RAM的每個(gè)表項(xiàng)在系統(tǒng)上電時(shí)需要大量的且各自獨(dú)立的初始化邏輯來(lái)初始化RAM中所有表項(xiàng)的值。本發(fā)明ー種FPGA中MAC地址查找表的實(shí)現(xiàn)方法,通過(guò)合理安排查找表RAM數(shù)據(jù)組織結(jié)構(gòu),并綜合考慮索引值沖突與查找表查找速度,將查找表進(jìn)行拆分,有效節(jié)約了邏輯資源,提高了查找速度;同時(shí)通過(guò)外掛小容量CAM,進(jìn)ー步有效防止索引值沖突;采用在ー個(gè)老化邏輯里對(duì)查找表進(jìn)行逐個(gè)老化,進(jìn)ー步降低了邏輯資源的消耗。本發(fā)明查找表的實(shí)現(xiàn)方法用盡量少的邏輯資源實(shí)現(xiàn)查找表的優(yōu)點(diǎn),具有查表迅速、邏輯資源占用少、可擴(kuò)展性高等優(yōu)點(diǎn)。


圖I為本發(fā)明查找表實(shí)現(xiàn)方法流程示意圖;圖2為本發(fā)明RAM中數(shù)據(jù)組織結(jié)構(gòu)示意圖;圖3為M取值對(duì)索引值沖突的影響示例圖4為本發(fā)明查找表的實(shí)施例結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例源地址學(xué)習(xí)流程圖;圖6為本發(fā)明實(shí)施例目的MAC地址查找流程圖;圖7為本發(fā)明實(shí)施例老化操作流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明技術(shù)方案做進(jìn)ー步詳細(xì)說(shuō)明,以下實(shí)施例不構(gòu)成對(duì)本發(fā)明的限定。本發(fā)明基于FPGA實(shí)現(xiàn)MAC地址查找表的方法,以IK大小的MAC查找表為例來(lái)進(jìn)行說(shuō)明。如圖I所述,包括步驟
步驟101、設(shè)定MAC地址查找表隨機(jī)存儲(chǔ)器RAM的數(shù)據(jù)組織結(jié)構(gòu)。ー個(gè)最基本的查找表項(xiàng)需要包括48bit的MAC地址、5bit的目的端口號(hào)和5bit的生存時(shí)間TTL,而查找表的基本操作包括源MAC地址學(xué)習(xí)、目的MAC地址查找和查找表老化。其中源MAC地址學(xué)習(xí)需要存儲(chǔ)MAC地址、目的端ロ號(hào)和TTL ;目的MAC地址查找僅僅需要讀取索引值下的MAC地址和目的端口號(hào);查找表老化僅僅需要對(duì)TTL值進(jìn)行操作。因此在構(gòu)造查找表項(xiàng)的數(shù)據(jù)組織結(jié)構(gòu)吋,需要滿足僅僅讀寫3種基本操作所需的數(shù)據(jù),盡量減少無(wú)用數(shù)據(jù)的讀寫,從而能盡量減少對(duì)邏輯資源的消耗。為此將48bit的MAC地址、5bit的目的端口號(hào)與5bit的生存時(shí)間TTL進(jìn)行分開(kāi)存儲(chǔ),如圖2所示。MAC地址和端口號(hào)一起存儲(chǔ)在位寬為48bit+5bit=53bit的RAM_53bit中,而對(duì)應(yīng)的TTL存儲(chǔ)在位寬為5bit的RAM_5bit中。這樣在源MAC地址學(xué)習(xí)時(shí)把輸入的MAC地址、端ロ號(hào)存儲(chǔ)在RAM_53bit中,把TTL存儲(chǔ)在RAM_5bit中;目的MAC地址查找時(shí)只需讀取RAM_53bit中的索引值下的表項(xiàng);查找表老化時(shí)只需要遍歷讀取RAM_5bit中的值,如果發(fā)現(xiàn)某個(gè)表項(xiàng)為0,則把RAM_53bit中的對(duì)應(yīng)表項(xiàng)清零,如果某個(gè)表項(xiàng)不為0,則把該TTL值減I后重新寫入到該表項(xiàng),然后繼續(xù)讀取下ー個(gè)TTL值。步驟102、設(shè)定查找表每個(gè)索引值對(duì)應(yīng)的MAC地址數(shù)為M,將查找表拆分為M份。具體地,對(duì)于碰撞問(wèn)題可以通過(guò)允許在同一個(gè)索引值單元里存儲(chǔ)2個(gè)MAC地址,并讓FPGA外掛小容量的CAM來(lái)解決。這是由于對(duì)于容量一定的查找表,M值越大,則N取值越小,發(fā)生碰撞的可能性就越小。如圖3所不為對(duì)于容量大小為4K的查找表,把M取值為1、2、4時(shí),輸入隨機(jī)產(chǎn)生的MAC地址個(gè)數(shù)下所出現(xiàn)的碰撞次數(shù)。由圖中可以看出,4K容量的查找表,把NXM選為4KX1、2KX2和1ΚΧ4時(shí),發(fā)生沖突的可能性不斷降低。雖然把M取值越大越好,但是M值越大,則每次索引值下的MAC地址數(shù)就越多,則每次查表需要比較M次才能確定這個(gè)索引值下有沒(méi)有需要查找的目的MAC地址。這樣固然能降低沖突,但是查找表的查找性能就會(huì)降低。因此,兼顧哈希沖突和查找表查找速度,這里選取Μ=2來(lái)盡量避免碰撞的影響,對(duì)于本實(shí)施例中IK的查找表,取Μ=2,當(dāng)需要學(xué)習(xí)的MAC地址數(shù)大于160時(shí),就需要把學(xué)習(xí)的MAC地址存儲(chǔ)到CAM,以達(dá)到用盡量少的邏輯資源實(shí)現(xiàn)所需查找表功能的目的。具體地,采用哈希算法根據(jù)MAC地址計(jì)算出索引值,在計(jì)算出的索引值對(duì)應(yīng)的RAM存儲(chǔ)單元存儲(chǔ)該MAC地址。以索引值為RAM中的地址,作為記錄在查找表中的存儲(chǔ)位置,采用對(duì)MAC地址進(jìn)行簡(jiǎn)單的異或操作來(lái)計(jì)算索引值,所以對(duì)48bit的MAC地址的哈希算法為Hash (m) =A (m) +A (m+9) +A (m+18) +A (m+27) +A (m+36) +A (m+45) ,m e
,把 MAC 地址姆 9 比特分為ー組,共分成6組,第6組不足9比特用O補(bǔ)充,然后把6組9比特地址進(jìn)行異或運(yùn)算,從而得到索引值,然后在FPGA的RAM中來(lái)實(shí)現(xiàn)容量為IK的查找表。本實(shí)施例IK查找表如圖4所示,分為兩個(gè)RAM,分別為RAMl與RAM2,每個(gè)索引值對(duì)應(yīng)兩個(gè)RAM存儲(chǔ)單元。步驟103、優(yōu)化老化操作,在老化時(shí),從資源共享的思想出發(fā),RAMl與RAM2的老化同時(shí)進(jìn)行,每個(gè)RAM都有自己単獨(dú)的老化邏輯資源,每個(gè)邏輯資源執(zhí)行512個(gè)索引值。由于IK查找表被分成了 2個(gè)512查找表,這兩個(gè)查找表執(zhí)行自己単獨(dú)的老化邏輯。當(dāng)老化使能信號(hào)有效,如果把512個(gè)索引值里的內(nèi)容并行輪詢一遍,這種操作方式可以在老化使能有效時(shí),同時(shí)給所有512個(gè)單元進(jìn)行老化,但這種處理方式的邏輯綜合后的結(jié)果是為每個(gè)存儲(chǔ)單元都綜合出一個(gè)單獨(dú)的只供該存儲(chǔ)単元使用的老化邏輯,這樣512個(gè)存 儲(chǔ)單元就需要消耗大量老化邏輯資源。實(shí)際上,老化操作不是查找表很關(guān)鍵的基本操作,因此可以不必采用同時(shí)老化。由于本實(shí)施例中輸入的老化使能信號(hào)可能的周期為分,秒,毫秒,55us,系統(tǒng)時(shí)鐘為65M,因此老化必須在55usバ1/65M)=3575個(gè)系統(tǒng)時(shí)鐘周期內(nèi)完成。因此只要能在3575個(gè)時(shí)鐘內(nèi)完成512個(gè)單元的老化操作都是可以的。這里盡量采用資源共享的思想,毎次老化I個(gè)索引值,串行的老化512個(gè)單元,這樣就需要至少512個(gè)系統(tǒng)時(shí)鐘周期,即512個(gè)存儲(chǔ)単元共用同一塊老化邏輯。由于從RAM_5bit中順序讀出某個(gè)存儲(chǔ)單元,需要I個(gè)時(shí)鐘;然后經(jīng)過(guò)I次TTL是否為O的判斷,如果不為0,TTL值執(zhí)行減I操作,也需要I個(gè)時(shí)鐘;接著要把新的TTL值重新寫入到要RAM_5bit中或把某個(gè)存儲(chǔ)単元清零,也需要I個(gè)時(shí)鐘。這樣操作完ー個(gè)存儲(chǔ)單元需要3個(gè)時(shí)鐘。由于RAM_5bit是雙ロ RAM,有讀端和寫端,即讀寫操作可以同時(shí)進(jìn)行,這樣就可以按照流水線的讀寫方式,順序的對(duì)512個(gè)存儲(chǔ)單元進(jìn)行老化操作。這樣512個(gè)單元的老化就需要512+2=514個(gè)時(shí)鐘,而老化使能信號(hào)最少要3375時(shí)鐘才能有效,因此在相鄰的老化使能信號(hào)間隔里總是能順利完成老化。對(duì)于上述查找表所需要的RAM資源,通過(guò)例化Altera提供的IP核并選擇所需的參數(shù)來(lái)得到RAM存儲(chǔ)器。系統(tǒng)正常工作吋,RAM中的所有表項(xiàng)里的值必須是個(gè)固定的值,其中RAM中如果學(xué)習(xí)到了某個(gè)MAC地址,則該索引值下就會(huì)有相關(guān)記錄,否則該索引值下的所有內(nèi)容為O。為了節(jié)約RAM初始化操作所需的邏輯資源,例化的所有RAM采用Quartus產(chǎn)生的.mif初始化文件來(lái)把所有RAM存儲(chǔ)空間初始化為全零。從而避免了用硬件描述語(yǔ)言描述的RAM的每個(gè)表項(xiàng)在系統(tǒng)上電時(shí)需要大量的且各自獨(dú)立的初始化邏輯來(lái)初始化RAM中所有表項(xiàng)的值。對(duì)于上述方法實(shí)現(xiàn)的FPGA中的查找表,以下就源地址的學(xué)習(xí),目的MAC查找以及老化操作進(jìn)行詳細(xì)的描述,其中條目是指MAC幀中包含的MAC地址和端ロ號(hào)信息。具體地,進(jìn)行源MAC地址學(xué)習(xí)的方法流程如圖5所示當(dāng)收到MAC巾貞時(shí),對(duì)源MAC進(jìn)行哈希計(jì)算,計(jì)算出索引值,讀取條目,查看RAMl是否為空,如果為空,則檢查RAM2是否為空,如果RAM2也為空,則將條目寫入到RAMl中對(duì)應(yīng)該索引值的RAM單元;如果RAM2不為空,且RAM2中有與匹配的條目,則更新RAM2中該索引值對(duì)應(yīng)的RAM單元中的生存時(shí)間TTL ;如果RAM2不為空,且RAM2中沒(méi)有匹配的條目,則將條目寫入到RAMl中對(duì)應(yīng)該索引值的RAM單元。
如果檢查RAMl時(shí),RAMl不為空,則檢查RAMl中是否有匹配的條目,如果沒(méi)有則查看RAM2是否為空,RAM2為空時(shí),將條目寫入到RAM2中該索引值對(duì)應(yīng)的RAM單元;如果RAMI不為空,且RAM2不為空,則查看RAM2中是否有匹配的條目,有則更新RAM2中該索引值對(duì)應(yīng)的RAM單元中的生存時(shí)間TTL,否則將條目寫入到外掛的CAM中。如果檢查RAMl不為空,且RAMl中有匹配的條目,則更新RAMl中該索引值對(duì)應(yīng)的RAM單元中的生存時(shí)間TTL。即如果有匹配的MAC地址,則更新RAM中的生存時(shí)間,如果沒(méi)有匹配的MAC地址,則將源MAC地址寫入到RAM中,在寫入?yún)?,?dāng)遇到哈希沖突時(shí),則將源MAC地址寫入到外掛CAM 中。對(duì)于上述方法實(shí)現(xiàn)的FPGA中的查找表,其中對(duì)于目的MAC地址查找的方法流程如圖6所示當(dāng)收到MAC幀時(shí),首先判斷目的地址是不是廣播地址,如果是則進(jìn)行泛洪處理,否 則查看CAM中是否有匹配條目。如果CAM中有匹配條目,則直接輸出端口號(hào),查找結(jié)束;否則對(duì)目的MAC進(jìn)行哈希計(jì)算,計(jì)算出索引值,根據(jù)索引值在RAM中查找。首先檢查RAMl中是否有匹配條目,有則輸出端口號(hào),查找結(jié)束;否則檢查RAM2是否有匹配條目,有則輸出端口號(hào),查找結(jié)束;若RAM2中也沒(méi)有匹配條目,則進(jìn)行泛洪處理。對(duì)于上述方法實(shí)現(xiàn)的FPGA中的查找表,其中老化流程如圖7所示根據(jù)外部的時(shí)鐘輸入信號(hào)及是否允許老化的控制信號(hào)來(lái)控制老化,設(shè)置老化地址單元計(jì)數(shù)器(rd_addr_reg)為O,首先讀取RAM_5bit中的ー個(gè)生存時(shí)間TTL,如果該TTL等于零,則刪除該TTL對(duì)應(yīng)的整個(gè)條目;否則將該TTL值減I。將老化地址單元計(jì)數(shù)器加1,繼續(xù)讀取下ー個(gè)TTL,重復(fù)上述操作,直到老化地址單元計(jì)數(shù)器等于511,即設(shè)定的一次老化操作的最大的存儲(chǔ)單元數(shù),結(jié)束老化。需要說(shuō)明的是,本實(shí)施例IK的查找表分為兩個(gè)512的頁(yè),同時(shí)執(zhí)行兩個(gè)獨(dú)立的老化邏輯資源來(lái)完成查找表的老化。通過(guò)綜合結(jié)果的對(duì)比,得出上述優(yōu)化方案節(jié)約了大量邏輯資源,在CycloneIIIEP3C40Q240C8N中實(shí)現(xiàn)整個(gè)查找表需要消耗702個(gè)LE和59392bit的RAM,最大Fmax為103M。其中例化RAMl_53bit時(shí)需要3個(gè)M9K和I個(gè)reg,例化RAMl_5bit時(shí)需要I個(gè)M9K和I個(gè)reg,雖然M9K需求量增加I個(gè),但是節(jié)約了大量的LE資源。通過(guò)Quartus對(duì)単獨(dú)的老化操作綜合結(jié)果可知,采用512個(gè)單元共享老化邏輯的方式消耗149個(gè)LE,而EP3C40Q240C8N中一共有39600個(gè)LE,則如果IK個(gè)單元有各自單獨(dú)的老化邏輯,此時(shí)需要消耗149X512X2=152576>39600,因此這將是不可忍受的。實(shí)際中,只能采用共享方式,而且盡量讓所有的存儲(chǔ)單元實(shí)現(xiàn)共享。并且,如果查找表的數(shù)據(jù)組織形式采用M=I的方式,則IK個(gè)單元順序老化完需要IK個(gè)時(shí)鐘,而本文采用M=2,相當(dāng)于使用了 2塊老化邏輯。所以,如果查找表容量更大、老化使能信號(hào)的周期更小時(shí),可以在查找表的查找速度(與M值大小有夫)和老化速度之間、老化資源消耗和老化速度之間作個(gè)折中。以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.ー種FPGA中MAC地址查找表的實(shí)現(xiàn)方法,用于在現(xiàn)場(chǎng)可編程門陣列FPGA中實(shí)現(xiàn)MAC地址查找表,其特征在于,包括步驟確定MAC地址查找表的隨機(jī)存儲(chǔ)器RAM結(jié)構(gòu);確定MAC地址查找表每個(gè)索引值對(duì)應(yīng)的MAC地址數(shù)為M,將MAC地址查找表拆分為M份;對(duì)每ー份MAC地址查找表采用單獨(dú)的老化邏輯資源,同時(shí)對(duì)M份MAC地址查找表進(jìn)行老化操作。
2.如權(quán)利要求I所述的查找表實(shí)現(xiàn)方法,其特征在于,將MAC地址和端口號(hào)一起存儲(chǔ)在ー個(gè)RAM中,而對(duì)應(yīng)的生存時(shí)間TTL存儲(chǔ)在另ー個(gè)RAM。
3.如權(quán)利要求2所述的查找表實(shí)現(xiàn)方法,其特征在干,所述MAC地址和端ロ號(hào)存儲(chǔ)的RAM位寬為53bit,其中MAC地址占用48bit,端口號(hào)占用5bit,所述生存時(shí)間TTL存儲(chǔ)的RAM位寬為5bit。
4.如權(quán)利要求3所述的查找表實(shí)現(xiàn)方法,其特征在于,所述MAC地址查找表容量為1K,所述MAC地址查找表索引值對(duì)應(yīng)的MAC地址數(shù)為2,將IK的MAC地址查找表拆分為2個(gè),分別為第一 RAM與第二 RAM,所述第一 RAM包括第一 53bit位寬RAM和第一 5bit位寬RAM,所述第二 RAM包括第二 53bit位寬RAM和第二 5bit位寬RAM。
5.如權(quán)利要求4所述的查找表實(shí)現(xiàn)方法,其特征在于,每個(gè)索引值對(duì)應(yīng)于第一RAM和第ニ RAM的相同行。
6.如權(quán)利要求I所述的查找表實(shí)現(xiàn)方法,其特征在于,所述索引值是通過(guò)哈希算法計(jì)算MAC幀中的MAC地址得到,將MAC地址每9比特分為一組,共分成6組,第6組不足9比特用O補(bǔ)充,然后通過(guò)下述公式計(jì)算得到索引值Hash(m) =A(m) +A(m+9) +A(m+18) +A(m+27) +A(m+36) +A(m+45),其中 m e

7.如權(quán)利要求I所述的查找表實(shí)現(xiàn)方法,其特征在于,所述老化操作是指采用ー個(gè)老化邏輯資源逐個(gè)對(duì)MAC地址查找表中的生存時(shí)間TTL進(jìn)行老化操作。
8.如權(quán)利要求I所述的查找表實(shí)現(xiàn)方法,其特征在于,所述FPGA外掛小容量的CAM,當(dāng)需要學(xué)習(xí)的MAC地址數(shù)大于160時(shí),將學(xué)習(xí)的MAC地址存儲(chǔ)到CAM。
9.如權(quán)利要求1-8任ー權(quán)利要求所述的查找表實(shí)現(xiàn)方法,其特征在于,所述MAC地址查找表實(shí)現(xiàn)方法還包括步驟通過(guò)IP核例化形成所述RAM,采用初始化文件把所有RAM存儲(chǔ)空間初始化為全零。
全文摘要
本發(fā)明公開(kāi)了一種FPGA中MAC地址查找表的實(shí)現(xiàn)方法,通過(guò)合理的安排查找表的數(shù)據(jù)組織結(jié)構(gòu),并綜合考慮索引值沖突與查找表查找速度,為每個(gè)索引值設(shè)定合理的對(duì)應(yīng)的MAC地址數(shù),將查找表進(jìn)行拆分,并采用在一個(gè)老化邏輯里對(duì)查找表進(jìn)行逐個(gè)老化,有效降低了對(duì)邏輯資源的消耗;同時(shí)通過(guò)外掛小容量CAM,進(jìn)一步有效防止索引值沖突。本發(fā)明查找表的實(shí)現(xiàn)方法用盡量少的邏輯資源實(shí)現(xiàn)查找表的優(yōu)點(diǎn),具有查表迅速、邏輯資源占用少、可擴(kuò)展性高等優(yōu)點(diǎn)。
文檔編號(hào)G06F17/30GK102831140SQ20121015593
公開(kāi)日2012年12月19日 申請(qǐng)日期2012年5月18日 優(yōu)先權(quán)日2012年5月18日
發(fā)明者徐元欣, 潘立波, 陳淑敏, 于強(qiáng), 李永佳, 倪笑園, 臧東寧 申請(qǐng)人:浙江大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1