第二章 與封包分類有關之演算法
2.2 演算法之簡介
2.2.1 Linear Search
Linear search 是眾多演算法之中最為簡單的演算法,它擁有最簡單的資料結 構,使得更新最為快速容易,只需從規則索引表中依序比對每一條規則即可,此 演算法能夠有效地使用記憶體,但卻有可能因為數量龐大的規則而增加了搜尋的 時間與次數。
2.2.2 Hierarchical tries
Hierarchical tries (又稱 Multilevel trie 或 backtracking trie)主要是藉由遞迴規則 的維度領域建構而成的二元樹,首先選定所指定的第一個的維度領域的 bit(0,1) 建立第一層的二元樹,接著再由第一層二元樹中每個葉部節點建立起第二層的二 元樹,並以此方式依序處理剩餘的維度空間,因此 Hierarchical tries 中的每一條由 根部節點至最底層的葉部節點間的路徑都可以視為能與規則相符合的搜尋路徑,
當我們能夠依據一封包的表頭資訊從根部節點搜尋至尾端葉部節點時,我們便可 以判斷跟路徑的規則能夠與封包相符合,而不管規則是否符合,都有必要繼續搜 尋其他的路徑以找出更佳的規則,因此便有回朔的必要,造成搜尋次數過多的問 題。
2.2.3 Set-pruning tries
Set-pruning tries [4]與 Hierarchical tries 近似,但能夠藉由將同一規則配置至 不同分支以避免 Hierarchical tries 的遞迴與回碩的問題來減少搜尋時間,如規則 R(011,110)對 0*->110 的分支多配置ㄧ條新的支線,但也由於規則的重複配置,
使得記憶體空間的需求將隨著規則表規模的增加而變得更為龐大。
2.2.4 Grid of tries
Grid of triesy [5]在 Data structure-based 類別的方法之中對搜尋時間及儲存空 間的處理是最為有效率的演算法,藉由配置單一規則至 Hierarchical tries 的單一節 點的方式來減少對儲存空間的需求,以及利用 Set-pruning tries 的預先計算和轉換 指標來達到與 Set-pruning tries 般少量的搜尋次數,當封包分類的問題能夠壓縮至 二維空間來思量時,Grid of tries 會是最好的方法之一,然而 Grid of tries 卻無法
把演算法理念擴展至超過二維的多維空間上。
2.2.5 Cross-producting
Cross-producting [2]將整個維度以多維空間的方式表示出來,每個規則都擁 有屬於自己的位置及範圍大小,而 Cross-producting 再將整個多維空間做若干的切 割使得切割之後的每一個區塊僅能存在一個最佳的規則,接著建立一索引表紀錄 每一個區塊空間的組合位置以及在該區塊內的最佳符合規則,當搜尋進行時只需 分別找出在每一個維度空間切割之後的位置區塊再進行組合以便查詢索引表找出 屬於該封包的最佳符合規則,然而當維度增加或規則的數目增加時,可能會造成 整個維度空間的切割變得更加複雜、細微,間接造成索引表變的龐大化,以致於 需要更多的記憶體空間去儲存索引表。
2.2.6 Are-base quadtree
Are-base quadtree(AQT) [6]也是將整個維度空間以多維空間的方式表示出 來,與 Cross-producting 不同的是 Are-base quadtree 將整個維度空間以遞迴的方式 不斷的切割成編號為 00,01,10 及 11 的等份的四個子區塊,若以節點表示,第 一層節點變為整各維度空間,第二層節點為第一層節點之子樹,以第一層分割來 說,各自表示著(0*,0*),(0*,1*),(1*,0*)及(1*,1*)等字首組合,因此理論 上來說每各歸則都能被分配至四各子區塊之一,即儲存於四個子節點中,但若存 在能夠覆蓋該區塊某一維度的規則時,如(001,*),則將此規則配置於原本區塊 而非子區塊中。當收到封包進行搜尋,只需對四元樹進行檢索即可,並對所在節 點之規則進行比對,當搜尋至葉部節點時便能找出最佳符合規則並回傳。
2.2.7 Hierarchical intelligent cuttings
Hierarchical intelligent cuttings(HiCuts) [7]藉由規則表的資料結構所衍生的啟 發法(heuristics)以對每一個維度空間做切割並建立起一決策樹(decision tree),決策 樹的資料結構則是以規則表為基礎預先處理而成的,在建立決策樹的過程中,每 一步僅對單一的維度空間做切割,最後,每個葉部節點都表示著一小群的資料集 合,在這裡則是一小群性質類似的規則集合,每當接收到封包時,便會不段地追 蹤整個決策樹結構直到找到最理想的葉部節點,再針對該葉部節點所對應的規則 及合作線性搜尋,以便找出能與該封包符合的最佳符合規則,這一演算法強調規 則表中的每個規則各有個自的特性,也會有相近似的特性,並以此為基礎發展而 成,然而如何在龐大的規則表中建立起最理想的決策樹以使得搜尋能更加有效率 仍是需要再深入研究的問題之一。
2.2.8 Hyper-Cuts
Hyper-Cuts [8]類似 HiCuts,但不像 HiCuts 在建立決策樹的過程中每一次只 對單一維度切割,Hyper-Cuts 會在每一次遞迴的建樹過程中對多個維度空間進行 更深的切割動作,因此決策樹中的每一個節點都可以表示成跨越了多維空間的多 維體,而非 HiCuts 般僅只是代表著某一平面帶,因此 Hyper-Cuts 對檢索效能有著 優越的表現,也能在許多的狀況下對儲存空間做更有效率的運用,但不幸地,在 泛用規則的處理上卻無法達成理想的結果。
2.2.9 Recursive Flow Classification
Recursive Flow Classification(RFC) [9]也是最早期的啟發式分類法之一,首先 先設置 T 個識別用位元,其中 T=log N (N 是規則的總數),接著將 S 個封包表頭
資訊位元映射至識別位元,並且 S 必須遠大於 T,而映射的過程可能是以遞迴的 方式分成數個階段,每個階段都不斷地消減位元的數量直到 T 個位元為止,而映 射的方式可以採用 Cross-producting 逐漸分群,因此 RFC 演算法能夠對封包做極 高速的分類,然而卻有著即為可觀的記憶體使用量,也無法有效率的對更做處理。
2.2.10 Ternary Content Addressable Memory
Ternary Content Addressable Memory(TCAM) [10]的每個單位組織有三種 值:0,1,X,而 X 如同遮罩位元般可以接受 0 或 1 的值,所以 TCAM 可以支援
2.2.11 Bit-map intersection
Bit-map intersection [11]亦是如同 Cross-producting 般地使用維度空間分割的 概念來處理封包分類的問題,然而不同的是它將分割成數個子問題再組合出結
得相對應的位元向量表,因此便能得知在不同維度下有哪些規則能與風包廂配 合,最後針對由每一層維度取得的位元向量做聯集的運算,並找出擁有最高優先 權的規則,便為該封包的最佳符合規則,然而也如同 Cross-producting 般當規則表 極為龐大時,會造成整個維度空間與幾何空間複雜化,需要配置更多位元的位元 向量給更多的區間,然而沒有規則覆蓋的區間也會大量增加,便會形成即為可觀 的記憶體空間的浪費,這也是眾多研究的議題之一。
2.2.12 Aggregated Bit Vector
Aggregated Bit Vector(ABV) [12]是 bit –map intersection 演算法的改良,主要 著重於規則表中能與封包相符合的頻率較為稀少的規則,以及位元向量中散佈較 bit–map intersection,但它卻也無法改良 bit –map intersection 的問題,甚至增加 了些許的不良情況。