專利名稱:散列存儲表表項位寬壓縮的實現方法
技術領域:
本發明涉及動態地址表的存儲管理技術,特別是關于散例存儲表(HASH)表項位寬壓縮的實現方法。
背景技術:
動態地址表是數據鏈路層與網絡層中的數據通信設備的轉發引擎內部所必須的功能模塊,用于存放和管理數據轉發的地址和策略信息。比如,以太網交換、因特網協議(IP)路由、流分類等查表。動態地址表管理模塊還要實現地址綁定、基于查找結果的表項數控制等復雜功能。
按實現方式來劃分,動態地址表分為內容可尋址存儲器表(CAM)和HASH表兩種。CAM表是使用硬件實現查找,并且實現查找需要專門的控制器發出不同操作的控制命令,其優點是查找速度快,查找過程中不會出現沖突,通常應用于大容量、高性能的網絡核心設備或者芯片內部,其缺點是成本偏高;而HASH表是通過可編程邏輯器件或軟件實現查找,該表通常應用于小容量、低性能的網絡邊緣、終端設備或模塊中,并且使用靈活、成本低,但查找速度慢,穩定性和可靠性也較低。目前,提高HASH表項查找速度主要通過邏輯或軟件的工作主頻或采用沖突的方式來讀取RAM表項內容來減小額外等待開銷。
例如,ETA邏輯上的單播地址表是一種動態地址表,用于存放以太網幀的媒體訪問控制(MAC)地址與ATM-PVC之間的對應關系,該表采用HASH表來實現。該表最多支持4K個地址,上行方式通過MAC地址和虛擬局域網號(VLAN-ID)進行地址查找,下行方向通過添加新表項或更新ICI來進行地址學習,定時刪掉不活躍的表項,能自動完成地址表的老化刷新。
如表1所示,ETA邏輯上的單播地址表包括控制位、PVC連接號(PVC-INDEX)、VLAN_ID和MAC_Addr等表項,共76比特。其中,控制位占4比特;PVC-INDEX表明地址表處理結果,占12比特;VLAN_ID表示地址所在區域地址,占12比特;MAC_Addr表示在某區域中的具體地址,占48比特。這里,VLAN_ID和MAC_Addr可以看作KEY的兩個部分,MAC_Addr為A部分,VLAN_ID為B部分。
表1每次進行地址查找時,將用48位的MAC_Addr和12位的VLAN_ID一起進行HASH算法,得到15位的HASH_Index。利用該值索引單播地址表,然后從相應表項中讀出MAC_Addr和VLAN_ID,然后用進行HASH算法的MAC_Addr和VLAN_ID與查找得到的MAC_Addr和VLAN_ID進行比較,如果相同,該表項中PVC_INDEX即為查找結果;否則,查找錯誤。
由于在進行地址查找或學習時,都將用KEY計算出HASH索引,利用該索引對應的動態地址表中的數據進行比較,當動態地址表中地址數據的占用位寬過寬時,必然占用較多靜態存儲(RAM)空間,導致讀RAM周期加長,同時成本較高,應用面比較小。
發明內容
有鑒于此,本發明提供了散例存儲表表項位寬壓縮的實現方法,使其在不影響使用的前提下縮短HASH表中的數據位寬。
一種散例存儲表(HASH)表項位寬壓縮的實現方法,該HASH表中表項至少含有a和b兩部分的關鍵字(KEY),a部分的比特位數為A,b部分的比特位數為B,且A大于B,該方法包括以下步驟刪除HASH表中的表項b部分,保留a部分,得到壓縮后的HASH表;并設置壓縮后的HASH表的索引值。
所述索引值是將b部分的低位補N位0獲得C,且N為大于或等于1的自然數;將a部分通過輸入A比特位輸出B+N比特位的算法,得到B+N比特的值,然后將所述B+N比特的值與所述C邏輯運算后得到。
所述輸入A比特位輸出B+N比特位的算法為循環冗余校驗碼(CRC)算法。
所述HASH表為(ETA,Ethernet to ATM Bridge)邏輯上的單播地址表。
所述單播地址表的a部分為MAC地址,MAC地址為48比特,b部分為VLAN-ID,VLAN-ID為12比特,所述N的位數為3。
所述邏輯運算為異或。
本發明通過刪除VLAN-ID標志位,在保證動態地址表功能不變的前提下,從而壓縮了動態地址表項的位寬,并且方法簡單、性能可靠,節省RAM空間,應用范圍廣。
圖1為本發明計算HASH索引的方法的流程示意圖。
具體實施例方式
本發明的核心內容是在保證動態地址表完整功能的前提下刪除某一部分,并且計算出新的HASH索引,從而實現動態地址表的位寬壓縮。
由于KEY包括a、b兩部分,且a部分的比特位數是A,b部分的比特位數是B,且A大于B,參見圖1所示,本發明計算HASH索引的方法是包括以下步驟步驟101、將b部分的低位補N位0,獲得C,且N為大于等于1的自然數;步驟102、將a部分通過輸入A比特位輸出B+N比特位的算法,得到B+N比特位的值;步驟103、將該值與C值邏輯運算,得到B+N比特位數值的HASH索引值;且較佳的,邏輯運算為異或算法。
下面以應用于邏輯上的單播地址表(ETA,Ethernet to ATM Bridge)來進一步說明本發明的實施方案。
這里,VLAN_ID和MAC_Addr可以看作KEY的兩個部分,MAC_Addr為a部分,VLAN_ID為b部分。本實施例定義了關鍵字和索引之間的映射關系,即HASH函數,輸入A比特位輸出B+N比特位的算法采用循環冗余校驗碼(CRC)算法。其定義如下HASH_index=HASH_func(key)={CRC15(MAC[47:0])}xor{VLAN_ID[11:0],3′b000}其中“CRC15”是48bit輸入15bit輸出的CRC算法,12bit的VLAN-ID低位補3個0后,與48bitMAC地址的15bitCRC結果異或,最終得到15bit的HASH索引。
通過上面算法得到的HASH_Index值中已隱含了VLAN_ID信息,如果需查找的MAC_Addr相同,而VLAN_ID不同,那么查找結果HASH_Index值必然不同。因此,每次進行地址查找時,只需比較MAC_Addr是否相等即可。因此,在動態地址表項中VLAN_ID位就顯得不重要了,而刪除VLAN_ID位就可以大大縮減位寬。
具體的說,當兩個HASH表項的MAC地址相同、而VLAN-ID不同時,進行HASH映射后得到的index的高12位不同,而低3位總是相同的,也就是說,它們在HASH動態地址表中的位置肯定相差8個表項以上。如果采用線性探測的次數小于了8次,就可以保證每次查找過程中不會出現多個MAC地址相同、但VLAN-ID不同的表項。因此,在每個HASH動態地址表的表項中可以只存放48位的MAC地址,判斷表項是否匹配也只需比較MAC地址是否相同就可以了。
因此,這樣每個單播表項占用2個SRAM單元(共64bit),如表2所示,每個表項包括4比特的控制位、12比特的PVC-INDEX、48比特的MAC_Addr。
表2并且,由于經過HASH算法后的索引值相當于將原來的KEY壓縮后得到的,所以,利用該索引值索引出的表項中可能存在含有的MAC值不相等的情況,也就是索引到的表項不是要查找的表項,為了減少這樣的碰撞,本實施例采用了線性探測法,即讀出當前索引對應表項開始的連續4個表項,這樣就可以大大減少查找錯誤的概率。
由于ETA邏輯的地址學習KEY由MAC_Addr與VLANID兩部分組成,共60比特,加上地址表處理結果的PVC-INDEX(12bits)和一些控制位(4bits),總要求的表項大小為76bits,要使用4×32bits的SSRAM空間(SSRAM為32bits寬),如果能使表項壓縮為64bits,則HASH地址管理模塊的性能將大大提高,并減少了SSRAM的使用空間進而降低產品成本。
權利要求
1.一種散例存儲表(HASH)表項位寬壓縮的實現方法,該HASH表中表項至少含有a和b兩部分的關鍵字(KEY),a部分的比特位數為A,b部分的比特位數為B,且A大于B,其特征在于,該方法包括以下步驟刪除HASH表中的表項b部分,保留a部分,得到壓縮后的HASH表;并設置壓縮后的HASH表的索引值。
2.根據權利要求1所述的方法,其特征在于,所述索引值是將b部分的低位補N位0獲得C,且N為大于或等于1的自然數;將a部分通過輸入A比特位輸出B+N比特位的算法,得到B+N比特的值,然后將所述B+N比特的值與所述C進行邏輯運算后得到。
3.根據權利要求1所述的方法,其特征在于,所述輸入A比特位輸出B+N比特位的算法為循環冗余校驗碼(CRC)算法。
4.根據權利要求1所述的方法,其特征在于,所述HASH表為(ETA,Ethernet to ATM Bridge)邏輯上的單播地址表。
5.根據權利要求4所述的方法,其特征在于,所述單播地址表的a部分為MAC地址,MAC地址為48比特,b部分為VLAN-ID,VLAN-ID為12比特,所述N的位數為3。
6.根據權利要求2所述的方法,其特征在于,所述邏輯運算為異或。
全文摘要
本發明公開了一種散例存儲表(HASH)表項位寬壓縮的實現方法,一種散例存儲表(HASH)表項位寬壓縮的實現方法,該HASH表中表項至少含有a和b兩部分的關鍵字(KEY),a部分的比特位數為A,b部分的比特位數為B,且A大于B,其特征在于,該方法包括以下步驟刪除HASH表中的表項b部分,保留a部分,得到壓縮后的HASH表;并設置壓縮后的HASH表的索引值。該方法簡單、性能可靠,節省RAM空間,應用范圍廣。
文檔編號H04L12/24GK1538661SQ0310956
公開日2004年10月20日 申請日期2003年4月14日 優先權日2003年4月14日
發明者胡鍇, 程貴峰, 徐肆海, 胡 鍇 申請人:華為技術有限公司