• 沒有找到結果。

第四章、 系統模擬環境規劃和分析

4.1 前五名佔總票數不同比例之正確率比較

4.1.2 模擬結果

正確率分為兩種計算方式:1.演算法出來的前五名與預設的前五名相同,順序不 計;2.演算法出來的前五名與預設的前五名相同,且順序完全相同。結果如表 4.1。

經過模擬之後可以看出,SSK 在 6.2%時的 case 2 跟 case 4 有提升正確率,當比 例達到 33%時,case 1 跟 case 3 也有獲得很大的提升,都會有 82.6%;比例超過 50%

之後都能到 100%,而 Spacesaving 在比例 33%的 case 3、比例 50%的 case 1 和 case 3、

比例 90%時才可以有效的運作出正確的 IP 資料。

前 5 名票數佔總票數 6.2% 前 5 名票數佔總票數 33%

Method SSK Spacesaving Method SSK Spacesaving 正確率 順序全對 正確率 順序全對 正確率 順序全對 正確率 順序全對 case 1 0% 0% 0% 0% case 1 82.8% 28.8% 0% 0%

case 2 95.2% 78.4% 0% 0% case 2 100% 100% 0% 0%

case 3 0% 0% 0% 0% case 3 82.6% 14.3% 100% 76.4%

case 4 100% 99.4% 0% 0% case 4 100% 100% 0% 0%

前 5 名票數佔總票數 50% 前 5 名票數佔總票數 90%

Method SSK Spacesaving Method SSK Spacesaving 正確率 順序全對 正確率 順序全對 正確率 順序全對 正確率 順序全對 case 1 100% 87.3% 100% 80.3% case 1 100% 100% 100% 100%

case 2 100% 100% 0% 0% case 2 100% 100% 100% 100%

case 3 100% 80.8% 100% 78% case 3 100% 100% 100% 100%

case 4 100% 100% 0% 0% case 4 100% 100% 100% 100%

表 4.1 前五名佔不同比例之正確率

為了可以看出各種不同 case 對於各種不同比例的影響,將 case 1~case 4 畫成圖 表,如圖 4.2~4.9,從下列圖表中可以看出,除了 case 3 之外,其他三種情況下 SSK 都會優於 Spacesaving。但是 SSK 在 6.2%下的 case 1 跟 case 3 正確率還是要再提升。

為了改善這問題,針對 6.2%跟 33%的 case 1 跟 case 3,我們嘗試了將資料分段,將進 來的資料隔一段時間就儲存一次,分成 n 段,這樣的做法是希望可以把一些不必要的 票數濾掉,讓前五名可以多存在排名裡,等到最後的時候把前面 n 段的排名資料在全 部統計一次,期望可以從其中某一段中得到前五名以拉高正確率,如圖 4.10~圖 4.13,

X 軸為分段的次數。但是這樣做也有風險,當前五名資料剛好擠進排名要開始往上爬 時,假如剛好碰到分段就等於要重新開始,那麼就可能得到反效果。

在 case 1 的情況下,Spacesaving 在比例為 6.2%時正確率為 0%,比例為 33%時 正確率為 0%,當比例過 50%之後可以達到 100%正確率;SSK 在比例 6.2%的正確率 為 0%,但在 33%的時候已經可以提升到 82%,順序全對的機率也可以有 28.8%,同 樣 50%之後正確率也會達 100%。

圖 4.2 case 1 在不同比例下之正確率

圖 4.3 case 1 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 1 正確率

SS SSK

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 1 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

在 case 2 的情況下,Spacesaving 在比例為 6.2%時正確率為 0%,33%時正確率為 0%,在比例為 50%的時候還是為 0%,要等到 90%才能達到 100%正確率;SSK 在比 例 6.2%的正確率就可以提升為 95.2%,順序全對的機率有 78.4%,更在比例為 33%

之後都能達到 100%,順序全對的機率也可以有 100%。

圖 4.4 case 2 在不同比例下之正確率

圖 4.5 case 2 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 2 正確率

SS SSK

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 2 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

在 case 3 的情況下,Spacesaving 可以比 SSK 有優勢的地方,因為 Spacesaving 對於後面進來的票數比較有利,Spacesaving 在比例為 6.2%時正確率為 0%,而到 33%

時正確率可以提升到 100%;SSK 在比例 6.2%的正確率為 0%,雖然 33%的時候可以 提升到 82%,但是還是略低於 Spacesaving,順序全對的機率 14.3%也低於 Spacesaving 的 76.4%;等比例到達 50%之後 SSK 才能追上 Spacesaving,正確率都會達 100%,順 序全對的機率也會較高。

圖 4.6 case 3 在不同比例下之正確率

圖 4.7 case 3 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 3 正確率

SS SSK

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 3 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

在 case 4 的情況下,Spacesaving 要在比例為 90%的時候才可以達到 100%正確率;

而 SSK 不管在何種比例下都為 100%,連順序全對的機率皆為 100%。

圖 4.8 case 4 在不同比例下之正確率

圖 4.9 case 4 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 4 正確率

SS SS-1

0%

20%

40%

60%

80%

100%

6.2% 33% 50% 90%

case 4 順序全對的機率

SS SSK

前五名佔總票數之%數 正

確 率

前五名佔總票數之%數 正

確 率

SSK 在分段的情況下,case 1 的時候比例 33%只要分為兩段來記錄就能跑出 100%

的正確率,而 6.2%要等分到五段或是七段才能達到 100%的情況,6.2%的其他分段也 不是都錯,最後跑出來的前五名其中也會對 3~4 個,但是我們正確率算法是要前五名 都有進入才能算正確。而為什麼分五段或七段會特別高,因為 6.2%的前五名票數占 總票數很低的比例,而 case 1 剛好是中段進入,而分五段跟七段的時候剛好會分到中 段,因此剛好可以記錄到前五名票數,但分三段的話中段的範圍有點大,6.2%的票數 太少可能會因為互擠而顯示不太出來。

圖 4.10 case 1 在不同比例下之 SSK 正確率

圖 4.11 case 4 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 1 正確率

6.2%

33%

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 1 順序全對的正確率

6.2%

33%

counter 數 counter 數 正

確 率

正 確 率

SSK 在分段的情況下,case 3 要分四段之後,正確率就能到達 100%,但是順序 全對的機率還是偏低,這方面還有待加強的地方。

圖 4.12 case 4 在不同比例下之順序全對的機率

圖 4.13 case 4 在不同比例下之順序全對的機率

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 3 正確率

6.2%

33%

0%

20%

40%

60%

80%

100%

1 2 3 4 5 6 7

case 3 順序全對的正確率

6.2%

33%

counter 數 counter 數

正 確 率 正 確 率

4.2 counter 對 zipf 數列正確率影響

這邊我們使用 Zipf 的資料型態,主要是希望可以看出當 counter 增加到多少時,

正確率會達 100%。什麼是 counter 呢?在演算中每筆記錄的資料稱為一個 counter,以 Spcaesaving 來說一個 counter 記錄了 IP 跟票數,而 SSK 一個 counter 記錄了 IP、票數、

change 數、K 值、jump 數等。那 Zipf 又是什麼呢?其公式為

) ( α ζ i

α

Fi = N

,其中的

α

α

ζ i

A i

) 1 (

|

|

=1

=

,Fi 為第 i 名的票數,N 為總票數,|A|為個數,α為影響每票之間的

變數,

α

=0時每項資料的票數都會相同,越大每票之間落差就會隨之增加。在我們 模擬裡,設定 N=100000、|A|=200,α分為 0.5、1、1.5、2 四種情況。

當 Zipf 的α=0.5 時,Spcaesaving 需要到 129 個 counter 才能達成 100%,而 SSK 只需要 6 個,可以看出在 Zipf(α=0.5)情況下 SSK 方式優於 SS,如圖 4.14。

圖 4.14 Zipf(α= 0.5)之 counter 影響

0%

20%

40%

60%

80%

100%

0 20 40 60 80 100 120 140

Zipf( α=0.5)

SS SSK

正 確 率

counter 數

當 Zipf 的α=1 時,Spcaesaving 需要到 48 個 counter 才能達成 100%,而 SSK 只需要 6 個,可以看出在 Zipf(α=1)情況下 SSK 方式優於 SS,如圖 4.15。

圖 4.15 Zipf(α=1)之 counter 影響

當 Zipf 的α=1.5 時,Spcaesaving 需要到 19 個 counter 才能達成 100%,而 SSK 只需要 6 個,可以看出在 Zipf(α=1.5)情況下 SSK 方式優於 SS,如圖 4.16。

圖 4.16 Zipf(α=1.5)之 counter 影響

0%

20%

40%

60%

80%

100%

0 10 20 30 40 50 60 70 80

Zipf( α=1)

SS SSK

0%

20%

40%

60%

80%

100%

0 10 20 30 40

Zipf( α=1.5)

SS SSK

counter 數 counter 數

正 確 率 正 確 率

當 Zipf 的α=2 時,Spcaesaving 需要到 12 個 counter 才能達成 100%,而 SSK 只 需要 6 個,可以看出在 Zipf(α=2)情況下 SSK 方式優於 SS,如圖 4.17。

圖 4.17 Zipf(α=2)之 counter 影響

由上可以知道 counter 會影響到正確率,於是將這方法也套用在 4,1 節的模擬中,

測試看看 counter 對於各種不同比例的票數和各種 case 的影響,當 case 1 的時候,6.2%

的時候,SS 需要 170 個 counter,而 SSK 需要 160 個;33%的時候,SS 需要 20 個 counter,

而 SSK 需要 15 個;50%之後,SS 跟 SSK 都只需要 10 個 counter 就能達到 100%正確 率,如圖 4.18。當 case 2 的時候,6.2%的時候,SS 需要 130 個 counter,而 SSK 需要 20 個;33%和 50%的時候,SS 需要 20 個 counter,而 SSK 需要 10 個;90%時,SS 跟 SSK 都只需要 10 個 counter 就能達到 100%正確率,如圖 4.19。當 case 3 的時候,

6.2%的時候,SS 需要 160 個 counter,而 SSK 需要 40 個;33%的時候,SS 需要 20 個 counter,而 SSK 需要 10 個;50%之後,SS 跟 SSK 都只需要 10 個 counter 就能達 到 100%正確率,如圖 4.20。當 case 4 的時候,6.2%的時候,SS 需要 150 個 counter,

而 SSK 需要 10 個;33%的時候,SS 需要 10 個 counter,而 SSK 需要 18 個;50%的 時候,SS 需要 10 個 counter,而 SSK 需要 15 個;90%時,SS 跟 SSK 都只需要 10 個 counter 就能達到 100%正確率,如圖 4.21。

0%

20%

40%

60%

80%

100%

0 10 20 30 40 50

Zipf( α=2)

SS SSK

counter 數 正

確 率

圖 4.18 counter 在 case 1 中對不同比例之影響

圖 4.19 counter 在 case 2 中對不同比例之影響

0 20 40 60 80 100 120 140 160 180

6.2% 33% 50% 90%

case 1

SS SSK

0 20 40 60 80 100 120 140

6.2% 33% 50% 90%

case 2

SS SSK

前五名佔總票數之%數 counter 數

前五名佔總票數之%數 counter 數

圖 4.20 counter 在 case 3 中對不同比例之影響

圖 4.21 counter 在 case 4 中對不同比例之影響

0 20 40 60 80 100 120 140 160 180

6.2% 33% 50% 90%

case 3

SS SSK

0 20 40 60 80 100 120 140 160

6.2% 33% 50% 90%

case 4

SS SSK

前五名佔總票數之%數 counter 數

前五名佔總票數之%數 counter 數

4.3 K 值跟實際票數的差別

為了驗證 K 值可以比舊有的演算法票數有效率,將 4.1 節中 50%的結果拿出來詳 細比較,6.2%跟 33%成功率都還不是很高,所以選擇 50%,結果如表 4.2,K 值和實 際票數的票數差不到 5%,而 SS 的票數最多會比實際票數多 25%,由此可以證明 K 值跟當初設定時的想法一樣,能大概保留住真實票數,這樣就能利用這一點去做出正 確的排名。

case 1 case 2

實際票數 SS 模擬票數 SSK 模擬 K 值 實際票數 SS 模擬票數 SSK 模擬 K 值 第一名 527 594 524 第一名 527 527 516 第二名 511 578 511 第二名 511 511 507 第三名 466 521 463 第三名 466 466 462 第四名 388 463 386 第四名 388 448 384 第五名 372 447 368 第五名 372 438 366

case 3 case 4

實際票數 SS 模擬票數 SSK 模擬 K 值 實際票數 SS 模擬票數 SSK 模擬 K 值 第一名 527 647 525 第一名 527 683 526 第二名 511 638 510 第二名 511 642 510 第三名 466 598 462 第三名 466 587 466 第四名 388 536 382 第四名 388 547 387 第五名 372 522 367 第五名 372 516 372

表 4.2 前五名比例 50%時不同 case 的票數差

4.4 實際封包測試

為了模擬實際的環境,本論文採用 MIT Lincoln Laboratory[9]於 1998 年收集的封 包,封包分析的第一步就是要將需要封包從網路中擷取出來,在現在最普遍的就是 Libpcap[10],它是一個 C 的函式庫,有很多程式都是用 Libpcap 寫的,如 Wireshark[11]、

Tcpreplay[12]、 Tcpdump[13]等,MIT Lincoln Laboratory 也是使用 Libpcap,且支 援很多套軟體,本論文選擇使用 Tcpdump 去模擬真實的網路環境。利用 Tcpdump 讀取 從 MIT Lincoln Laboratory 抓下來的封包,時間為 18 個小時的記錄,一共有 118 個 IP,

170156 個封包,前五名的 IP 跟票數分別為(1) 135.13.216.191,10625 票;(2)

207.46.130.139 ,9781 票;(3) 172.16.117.52,7490 票;(4) 172.16.114.148,7119 票;

(5) 172.16.117.5,6911 票。加入 counter 這個元素進去一起跑模擬,SS 需要到 37 個 counter 才能達到 100%的正確率,而 SSK 只要 10 個 counter 就可達到 100%正確率,

結果如圖 4.22。

圖 4.22 MIT 正確率

0%

20%

40%

60%

80%

100%

0 10 20 30 40 50

MIT 正確率

SS SSK

counter 數 正

確 率

相關文件