• 沒有找到結果。

數值分析

在文檔中 中 華 大 學 (頁 37-42)

在這個章節裡,將對提出的方法做數值上的分析,嘗試定義提出的方法在不 同部分的效能評估,並轉換成 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;且ThashkeyTmatch_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_uidTmatch_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 可以看出封包在比對預設封鎖過濾規則前所需要比對的過濾規則的 時間複雜對為Ο(NpoliciesNgroups)。然而從傳統分群組的觀念來看,平均使用者不

會隸屬於太多的群組,在實際的應用環境裡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 之效能。

在文檔中 中 華 大 學 (頁 37-42)

相關文件