Compressed 16-X
Download
Report
Transcript Compressed 16-X
compressed 16-x
multi-bit trie
Outline
16-X
Compressed 16-X
Huang’s Algorithm
16-X
13個0
.
1
0
陣列4
( 0000000000000100)
0
X
y
Binary tire轉為16-X
如下圖
共65536格
Sementation table
X
.................................................
2y
Fig. 16-X結構
16-X Search
共
走
16
個
bits
若search的IP為
64.4.224.0
12
11個0後
17
14
先將IP以二進位表示
22
(0100000000000100 1110000000000000)
X
取出前16bits的值計算出為16388, 即
讀取第一層array的16388位置
再以X node為root, 算其子樹的樹高,
得到樹高為4
再取原IP後4 bits = 1110計算其值
得得為13 , 即讀取第二層array的
13位置, return 28
高度為4
32
28
128
共65536格
16388
.............. X ………..
Next hop array
24
1110
1111
28
28
Prefix為 :
64.14.12.0 / 1
64.3.14.0 / 14
64.4.32.0 / 18
64.4.128.0 / 20
192.4.63.0 / 3
208.18.52.0 / 4
Compressed 16-X
以3-bit Binary Tire為例
A
B
C
Prefix為 ( * : don’t care)
A: *
B : 0*
C : 01*
D : 010*
D
Next hop array
Bitmap = 1 , while 指標往下展 or 和array前一個的值不一樣
Bitmap = 0 , while和array前一個的值一樣
000
Next hop array
Bitmap
Compressed Next hop array
100
111
B
B
D
C
A
A
A
A
1
0
1
1
1
0
0
0
B
D
C
A
Search
若search的IP為(100……..……)2
因為是以3 bit為例, 此時看100, bitmap為1 (上圖紅圈部份)
計算這個1為第幾個1
若search到bitmap為0, 則計算0以前有幾個1
此時計算出1為bitmap中第四個1, 因此access壓縮後的array
裡第四個位置, return A
Huang’s Algorithm
原由:因為在Compressed 16-X方法中, 每次在
search一筆IP時, 總是要 計算bitmap中有幾個
1, 這樣會大大的降低performance
Base : 不含自己group以前, 出現幾個1
將bitmap分成數個group
每個group要存base值
不含自己group以前, 出現幾個1
每4 bits為一個group, 由上排到下排的數字為bitmap , group , base
Next hop array
Bit map
Group
Base
B
C
D
A
E
Search
1.
2.
3.
若search的IP為(1011……..……) IP開頭為1011, 因此會access到上圖紅圈
部份, 取得其相關資訊 為Group 3, Base為3, 以及自己Gourp的bitmap
(1001)
此時只要使用for loop 來算Group 3中有幾個1 , 再加base, 即為 整個bitmap
中是第幾個1, 藉此改善第三題Compressed 16-X
base + count of Group 4’s bitmap = 5 因此access壓縮array中的第五個格,
return E (上圖藍圈部份)