在這個章節裡,將對提出的方法做數值上的分析,嘗試定義提出的方法在不 同部分的效能評估,並轉換成 Asymptotic Notation [10]。藉由轉換成 Asymptotic Notation 的表示,則可知道我們提供的方法在計算機上的時間複雜度為何。
在 3.3.1 節中,介紹了三個在 Linux 核心中新增的 Hash Tables。在該節的例 子中,IP-User Table 中不是每一個 Hash position 都會指向一串以 User Object 形成 的 Linked-List。同樣的在 User Table 中也不是每一個使用者都會有一個所隸屬的 群組(根據身分認證伺服器而定)。為了簡化在計算上的複雜度,我們以Nuserobj與
groups
N 這兩個符號代表取平均值後的 User Object 個數與平均每位使用者平均隸 屬的群組個數。詳細定義如 4.1 節所述。
在 4.1 節中,提供相關符號定義。在 4.2 節中,提供在 IP-User Table 中搜尋 User Object 的數值分析及 Asymptotic Notation、Connection Identification 的數值 分析及 Asymptotic Notation 與過濾規則辨認的數值分析及 Asymptotic Notation。
最後,在 4.3 節中討論在實際的環境裡面時間複雜度為何。
4.1 符號定義
Tmatch_ip:比對 32-bit 網路位址所花的時間。
Thashkey:利用 32-bit 網路位址產生 Hash key 所花的時間。
Tfind_userobj:利用 32-bit 網路位址在 IP-User Table 上找到 User Object 所
花的時間。
Tidentify:比對新建立的連線屬於何 User Object 所花的時間。
Tmatch_uid:比對 UID 所花的時間。
Tmatch_gid:比對 GID 所花的時間。
Tmatch_userobj:比對 User Object 所花的時間(包含比對 UID、GID 等)。
Tmatch_rule:比對一條過濾規則所花的時間。
Ttraverse_all_rule:比對全部過濾規則所花的時間。
Nuserobj:在 IP-User Table 上,每個 Hash Position 平均擁有的 User Object
個數。
Ngroups:在 User Table 上,平均每個 User Object 擁有的群組個數。
Npolicies:系統上的過濾規則個數。
4.2 辨認數值分析
在此節我們提供本論文方法之演算法之時間複雜度,如式 4-1~式 4-5 所示。
當新的連線建立起來時,Connection Identifier 會利用 32-bit 網路位址取後 16-bit 當 hash key,並利用 hash key 在 IP-User Table 所指的 User Object Linked-List 搜尋
出 所 對 應 的 User Object 記 錄 於 Conntrack 之 中 。 由 於 搜 尋 過 程 是 搜 尋 Linked-List,因此我們定義每個 Linked-List 上的 Element (User Object)之機率分 佈為 Uniform Distribution;且Thashkey與Tmatch_ip 之時間複雜度可視為 Constant Time。式 4-1 為此過程之時間複雜度證明。式 4-2 則是利用來源端及目的端網路 位址搜尋出來源端及目的端之 User Object。
( ) ( )
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡ + + +
+
= 1 2 ... ( )
_ _
_
_ match ip
userobj userobj ip
match userobj ip
match userobj haskey
userobj
find T
N T N
T N T N
T
∑
=
+
= userobj
N
i
ip match userobj
hashkey T
T N
1 _
1
hashkey Nuserobj Tmatch ip
T _
2 1⎟⎟
⎠
⎜⎜ ⎞
⎝
⎛ +
+
= (式 4-1)
=Ο(Nuserobj)
(
userobj)
userobj find identify
N T
dstIP Userobj Find
srcIP Userobj Find
T
Ο
=
=
+
=
) (
2
) ( _
) ( _
_ (式 4-2)
在 Conntrack 上記錄好 User Object 之後,則會進入 Filtering Component 做封 包過濾的動作。其中 Filtering Component 會比對 Conntrack 中記錄的 User Object 所提供的 UID、Group Object 提供的 GID 與過濾規則中指定的 UID 與 GID。由 於 User Object 中記錄之 GID 為一 Linked-List,因此,我們定義 Linked-List 之每 個 Element 之機率分佈為 Uniform Distribution。式 4-3 提供 Filtering Component 之時間複雜度證明,其中Tmatch_uid、Tmatch_gid之時間複雜度可視為 Constant Time。
式 4-4 為比對來源端 UID、GID 與目的端 UID、GID 之時間複雜度證明。式 4-5 提供在最差環境下封包需比對所有過濾規則之時間複雜度。
( ) ( )
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡ + + +
+
= 1 2 ... ( )
_ _
_ _
_ match gid
groups groups gid
match groups gid
match groups uid
match userobj
match T
N T N
T N T N
T
∑
=
+
= groups
N
i
gid match groups
uid
match T
T N
1 _ _
1
match uid Ngroups Tmatch gid
T _ _
2 1⎟⎟⎠
⎜⎜ ⎞
⎝
⎛ +
+
= (式 4-3)
=Ο(Ngroups)
) ,
( _
) ,
(
_ Match_UserobjsrcUIDsrcGID Match UserobjdstUIDdstGID
Tmatch rule= +
=2(Tmatch_ userobj) (式 4-4) =Ο
(
Ngroups)
) (
_ _
_
groups policies
rule match policies rule
all traverse
N N
T N
T
∗ Ο
=
= (式 4-5)
4.3 數值分析討論
在 4.2 節中,定義了相關的辨認時間複雜度,如式 4-1 到式 4-5 所示。其中 式 4-1 則為給定 32-bit 網路位址的條件下在 IP-User Table 尋找對應的 User Object。式 4-2 則為系統上新增的連線分別利用 32-bit 來源端與目的端網路位址 搜尋對應的來源端及目的端 User Object。式 4-3 為給定 UID 與 GID 的條件下與 User Object 中的 UID 與 GID 比對的時間複雜度。式 4-4 則為封包經過一條過濾 規則比對來源端及目的端之 UID 與 GID 之辨識的時間複雜度。式 4-5 則為封包 經過所有過濾規則的時間複雜度。
從式 4-5 可以看出封包在比對預設封鎖過濾規則前所需要比對的過濾規則的 時間複雜對為Ο(Npolicies∗Ngroups)。然而從傳統分群組的觀念來看,平均使用者不
會隸屬於太多的群組,在實際的應用環境裡Ngroups實際上的值是很小的,所以不 會因為搜尋群組而降低比對 User Object 的效能。在 3.3.1 節提到 IP-User Table 是 利用 32-bit 網路位址的後 16-bit 來作為 Hash key。如果不同的 User Object 卻 Hash 到相同的 Hash position 形成 Linked-List 則表示這兩個 User Object 的網路位址前 16 bits 不同且後 16 bits 不同。以一個 Class B 的校園網路為例,網路位址的變化 在後面的 16 bits,因此 User Object 不會因為 Hash collision 而形成 Linked-List。
所以在 Class B 的校園網路中,Nuserobj通常為 1。若以企業私有網路的觀點來看,
最大的私有網路範圍則是以 10.0.0.0 到 10.255.255.255.255。其中在相同的後 16-bit 的網路位址條件下,不同的前 16-bit 網路位址只會有 256 種。也就是說,
Linked-List 最多 Element 只會有 256 個。然而,通常企業子網路(subnet mask 255.255.0.0)的分割不會超過 10 個以上,所以Nuserobj在實際應用上的值很小而不 會降低搜尋 User Object 之效能。