第三章 相關研究
3.1 Tuple Space
3.1.1 Tuple Space 之定義
每個規則都有定義各自的 source specified bits,destination specified bits 以及 所涵蓋的範圍,而 source specified bit 個數及 destination specified bit 個數卻只分布 於 0~32 等 33 種長度,藉由 source specified bit 個數及 destination specified bit 個數 的配對可以產生共 33X33 種組合。這使得對規則的搜尋可以先透過簡單的分群而 減少所需搜尋規則之數量。因為在同一群組中的規則都擁有相同的 specified bit 個數,我們便可以利用 specified bit 個數之值作為 hash key 值來檢索所欲搜尋的 specified bit 是否存在於規則資料庫中,因此透過 hash table 的建立以及 hash key 的檢索,使得群組間的搜尋僅需 O(w),w 為 specified bit 之長度。
Tuple space search [14]最早是由 Srinivansan et al.所提出的,利用 Prefix specification 來處理多維度封包分類的問題。由於作為 hash key 值的是規則的 source specified bit 個數及 destination specified bit 個數,因此整個 Hash table 可以 視為二維空間,如表 3-1 的例子便是依據 rule 中每一層維度的 specified bit 的個數 對應至相對應的 tuple 欄位,R2 的 specified bite 個數分別為 1 與 2,便對應至 tuple(1,2)這一欄位中;R3 的 specified bite 個數分別為 1 與 1,便對應至 tuple(1,
1)這一欄位中。表 3-2 則是整個 tuple space 的資訊,表示出全部的 tuple 以及每個
tuple 欄位所包含的規則的編號,接著當封包需要進行規則的比對時便是使用對雜
多是採用二維空間作為處理的途徑(圖 3-1),亦即使用(Source specified bits,
Destination specified bits)當作 Hash key 來檢索每一個 tuple,然而 tuple 與 tuple 間 除了二個欄位的 specified bit 個數之外並無任何直接及間接的關聯性可供快速的 檢索,因此如何正確、有效的檢索出理想的 tuple 以找出最恰當的規則,便是眾多 使用 tuple space 的演算法,以及本篇論文的議題所在。
Rule Specification Tuple R1 (00*,00*) (2,2)
Tuple Hash Table Entries (0,1) { R6 }
圖 3-1:Tuple space 可視為一二維空間。
3.1.2 Tuple Relationship
任一 tuple 與 tuple 之間存在著三者關係:ShorterTuple,LongerTuple,以及 IncompatibleTuple,假設存在二個 tuple: Ta 及 Tb,則其關係的定義如下所敘:
z 若∀i,1 i d,Ta[i]≤ ≤ ≤ Tb[i],而且至少存在一個 i 使得 Ta[i] Tb[i],則 定義 Ta 屬於 Tb 的 ShorterTuple。
≠
z 若∀i,1 i d,Ta[i] Tb[i],而且至少存在一個 i 使得 Ta[i] Tb[i],則 定義 Ta 屬於 Tb 的 LongerTuple。
≤ ≤ ≥ ≠
z 若 Ta 既非 Tb 的 ShorterTuple,也不是 Tb 的 LongerTuple,則定義 Ta 屬 於 Tb 的 IncompatibleTuple。
由上述的定義,我們可以知道 tuple(1,2)是 tuple(3,4)的 ShorterTuple,
因 1 3, 2≤ 4;tuple(5,6)是 tuple(3,4)的 LongerTuple, 因 5 3, 6 ≥ 4; tuple(2,
5)是 tuple(3,4)的 IncompatibleTuple,因 2
≤ ≥
≤ 3,5 ≥ 4。圖 3-2 即為二維空間中 tuple(x,
y)的範圍分布。
圖 3-2:tuple(x,y)與其他 tuple 之關係之二維空間表示圖。
當一個封包能擁有二個以上的規則滿足封包的配對,則根據每一個規則所配 對的 tuple 之間的 ShorterTuple,LongerTuple,以及 IncompatibleTuple 三種關係,
可以發展出規則與規則之間的三種關係: specific, general 以及 conflicting,假 設當一封包 P 能滿足二個規則:Ra 及 Rb 分別對應 Ta 及 Tb,則 Ra 與 Rb 間的關 係定義如下所敘:
z 若 Ta 是 Tb 的 ShorterTuple,則我們稱 Ra 較 Rb 更為 general,亦即當 Rb 能滿足封包的配對時,Ra 亦能滿足封包的配對,反之當 Rb 無法滿足時,
Ra 卻有可能滿足配對。
z 若 Ta 是 Tb 的 longerTuple,則我們稱 Ra 較 Rb 更為 specific,亦即當 Rb 能滿足封包的配對時,Ra 未必能滿足封包的配對,反之當 Rb 無法滿足 時,Ra 必定也無法滿足配對。
z 若 Ta 與 Tb 互為 IncompatibleTuple,則我們稱 Ra 與 Rb 互為 conflicting,
當 Rb 能滿足封包的配對時,Ra 未必能滿足封包的配對,反之當 Rb 無 法滿足時,Ra 卻有滿足配對的可能性。
3.1.3 Marker 與 Precomputation
Srinivansan et al.提出了 Rectangle search 演算法並提出了 precomputation 以及 marker 的概念來解決 tuple space 中 tuple 與 tuple 間毫無關聯的問題 [14]:
Marker 主要目的在於能為某些 tuple 的集合建立起關聯性,一般來說規則能 夠在它的 ShortTuple 生成自己的 marker,而 marker 除了 specified bit 需與所對應
的 tuple 相同之外,其他資訊都與原來的規則相同,而隨著演算法的不同,marker 的生成也有著不同的方式。在 Rectangle search 中,對每一個規則而言,都必須不 斷向左設置一個自己的 marker,如圖 3-4 所示,每一個規則都會向左邊的 tuple 生成一個 marker,R1 在(3,1)的 marker 便為(111*,1*),在(3,0)的 marker 便為 (111*,*),R2 在(2,0)的 marker 便為(11*,*),因此我們可以將每個規則的 marker 視為較該規則更為 generic,當封包對某個 marker 比對失敗時,同時也意味著生 成該 marker 的規則亦無法比對成功,因此可以延伸出當對某個 tuple 搜尋失敗, 所對應 tuple 的所有 ShorterTuple 中擁有最高優先權(最佳選擇)的規則,如圖 3-3 所示,灰色區域便是 R1 的 precomputation 範圍(自己所對應的 tuple 以及
ShorterTuple),在這範圍之中搜尋出與 R1 相同或是比 R1 更為 general 的規則,結 果找出 R1 與 R2 這二個規則,若 R1 的優先權高於 R2,則我們便紀錄 R1 為 R1 所有 ShorterTuple(如圖 3-3 所示為該 tuple 的左上方塊)的最佳規則,無須再去顧慮 發生上述錯誤情況時的處理。
圖 3-3:Precomputation 所包含之範圍。
圖 3-4:Marker 的生成。