利用NS2軟體模擬各種TCP版本_實作篇(二)
2.環境建置
A.安裝好Linux環境
這一步的話我就不多贅述了,網路上頗多教學的,例如什麼,如何安裝Ubuntu. Fedora. centos......等,
B.安裝好NS2
之前就先拍好影片了,就不多說什麼
C.測試環境安裝正確
其實影片後半段就有了啦...
敝人龜毛了點又多講這段
打開terminal 輸入ns 前面出現%之後 輸入nam |
都安裝正確的話會出現這個畫面喔>.= |
D.本次實驗基本指令
到指定資料夾底下編譯要的檔案與TCP版本 EX:ns filename.tcl tcp_version |
編譯沒有問題會出現此圖 |
開啟新的terminal 輸入gnuplot |
在方才編譯好的資料夾底下輸入圖中指令 |
輸入正確指令且繪製成功的圖表 |
本次實驗原始碼就上柯志亨老師的網站找就好<===超多東西可學的
3.結果圖與分析
A.觀察TCP Tahoe congestion windows的變化
圖 A-1 Tahoe的CWND變化圖 |
B.觀察TCP Reno congestion windows的變化
圖 B-1 Reno的CWND變化圖 |
如圖B-1所示,當偵測到封包遺失時,Reno會將ssthresh和CWND的值設為先前CWND值的一半。因此在重送遺失的封包後,TCP Reno會由CA階段開始。由於結束Fast recovery後,Reno的CWND由先前CWND值得1/2開始增加,所以得到的平均吞吐量較Tahoe佳,可由下圖得知。
圖 B-2 Tahoe 與Reno平均吞吐量比較圖 |
C.TCP Reno
圖 C-1 Reno的平均吞吐量與路徑上封包數 |
在這次的例子中,我們將佇列的大小設為15個封包。粗略估計,當路徑上的封包超過16.4個時應該就會開始掉封包(參見上圖)。現在傳送端很容易會因為宋得太快而產生Multiple packet loss,這種情形在TCP Tahoe/Reno很容易導致Timeout發生。
圖 C-2 Reno的CWND變化圖 |
從圖C-2可以觀察到CWND的變化情形。在途中我們可以看到,大約在0.5~0.6秒時,有一個Timeout發生。
圖 C-3 佇列長度變化圖 |
為了更能了解path上封包的使用情況,我們將佇列長度給繪圖出來(參見圖C-3),大約在0.5~0.7秒這段期間,由於傳送端沒有再繼續送出新的資料(在等待Timeout),所以queue length是空的。
D.TCP NewReno
圖 D-1 NewReno的CWND變化圖 |
C.與D.的模擬網路環境是相同的,而我們可以從圖D-1模擬的結果我們看到,NewReno修改了Reno中快速重傳的演算法的改善結果,這使得NewReno的傳送端在網路有大量封包遺失時不需等待Timeout就能更正錯誤,減少大量封包遺失對傳輸效能所造成的影響。
圖 D-2 佇列長度變化圖 |
在大約t=0.5~0.79秒時,NewReno一下傳出了很多的封包,這種急劇傳出封包的行為有時候在網路壅塞時很容易造成調封包的情形出現,若想消除這種瞬間急劇送出封包的現象可使用TCP的maxburst參數限制每次收到ACK最多能傳出的封包數量。
E.SACK
圖 E-1 SACK的CWND變化圖 |
由於SACK是Reno的一個衍生版本,在這版本當中,加入一個SACK選項(Option)允許目的端在回傳Duplicate ACK時,將已經收到的資料區段回傳給傳送端,資料區段與資料區段之間的間隔就是目的端沒有收到的資料。因此SACK的傳送端可以在一個RTT時間之內重送一個以上的封包。
圖 3-5-2 佇列長度變化圖 |
從圖E-2就可以明顯看出SACK的路徑使用率明顯比圖圖C-3與圖D-2高的許多,只要小小改變壅塞機制的一些東西,就能對效能有大大的影響。
F.同質性環境(Homogeneos environment)
圖F-1 模擬實驗網路架構圖 |
在這個實驗裡,我們假設一個單純的網路環境,網路上的傳輸層都使用相同的TCP版本,我們把這個環境稱之為”同質性環境”。
圖 F-2 Vegas的CWND變化圖 |
從圖F-2中可以看到,在Slow-start階段,CWND的值大約兩個RTT才增加一倍。和Reno不同的是,當Diff的值介於alpha與beta之間時,Vegas的CWND會維持在一個穩定的狀態,值得注意的是即使有兩條以上的連線存袃網路上時,Vegas還是能維持在穩定的壯再且不會因宋的太快而造成封包遺失。
圖 F-3 佇列長度變化圖 |
從圖F-3看來,這兩條TCP連線在第6秒之後,對於頻寬的使用情形顯然有些差距,這種不公平的現象是Vegas這類演算法可能會遇到問題之一。一是因為當網路上有其他流量存在時,較晚進網路的TCP連線量到的RTT不見得準確,二是Diff的值介於alpha與beta之間,CWND值便不再變動。
G.TCP Reno vs. TCP Vegas-在異質性環境下
事實上,TCP Reno是目前使用最為廣泛的版本,因此我們用一個簡單的例子來實實作,當網路傳輸的協定是Vegas與Reno的運作情況,也就是模擬在異質性的環境下。
圖 G-1 模擬實驗網路架構圖 |
我們改變Vegas中alpha與beta得值,分別為1-3(參見圖G-2),2-4(參見圖G-3),3-5(參見圖G-4),4-6(參見圖G-5),來觀察Vegas與Reno平均吞吐量的變化。
圖 G-2 Vegas與Reno的CWND變化量(alpha=1 beta=3) |
圖 G-3 Vegas與Reno的CWND變化量(alpha=2 beta=4) |
圖 G-4 Vegas與Reno的CWND變化量(alpha=3 beta=5) |
圖 G-5 Vegas與Reno的CWND變化量(alpha=4 beta=6) |
從圖 G-2中可以看到,Reno的位置總是高於Vegas,當網路的通訊皆使用TCP Vegas時,整體執行效能會優於TCP Reno,這是因為TCP Vegas採取較為保守的作法,避免封包遺失並藉此提高網路的執行效能。但不幸的,當TCP Vegas和Reno共存時Vegas沒法與Reno公平競爭頻寬,原因是Reno使用較具有Aggressive的壅塞控制方法,Reno傳送端會持續地將封包送到網路上值到發生壅塞;相較之下,Vegas傳送端在網路開始壅塞時就將傳送端的傳送速度降慢以避免壅塞的情形發生;因此當Vegas與Reno共存時,Vegas在效能上的表現總是會比較差。
圖 G-6 Vegas與Reno的平均吞吐量比較圖 |
從圖G-6中我們可以看到,當提高Vegas中的alpha與Beta時,Vegas的平均吞吐量就會逐漸上升,而Reno的平均吞吐量就會逐漸下降,從Vegas的壅塞控制演算法了解到,當alpha與beta的值越大,所能夠吞吐的封包量越大,這恰與實驗出來的情況吻合,但依舊無法改善Vegas在競爭頻寬上的弱勢。
4.參考文獻
[1] “Newreno-百度百科,” [線上]. Available: http://baike.baidu.com/view/4521733.htm.
[2] “各种TCP版本之NewReno与Sack,” [線上]. Available: http://blog.sina.com.cn/s/blog_5d2054d90100s9tj.html.
[3] “TCP/IP 名稱,” [線上]. Available: http://blog.xuite.net/u870q217/blog/42931039-TCP%2FIP%E7%AD%86%E8%A8%98.
[4] “TCP 緩啟動 (slow start),” [線上]. Available: http://blog.cwke.org/2010/12/tcp-slow-start.html.
[5] “擁塞控制,” [線上]. Available: http://wiki.mbalib.com/zh-tw/%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6.
[6] “柯老师的awk讲解,” [線上]. Available: http://blog.sina.com.cn/s/blog_3fc8554b0100qgay.html.
[7] “NS2 簡單模擬範例,” [線上]. Available: http://netlab.cse.yzu.edu.tw/ns2/netlab/ns2_website/ns_example.xml.
[8] “How to install ns2 on Ubuntu 12.04,” [線上]. Available: https://www.youtube.com/watch?v=kvu9OADH_Bg.
[9] "咻咻的筆記小站", [線上]. Available: http://hengxiuxu.blogspot.tw/.
[10]柯志亨,程榮祥,鄧德雋,丁建文, NS2網路模擬實現, 台北市: 學貫, 2012.
[2] “各种TCP版本之NewReno与Sack,” [線上]. Available: http://blog.sina.com.cn/s/blog_5d2054d90100s9tj.html.
[3] “TCP/IP 名稱,” [線上]. Available: http://blog.xuite.net/u870q217/blog/42931039-TCP%2FIP%E7%AD%86%E8%A8%98.
[4] “TCP 緩啟動 (slow start),” [線上]. Available: http://blog.cwke.org/2010/12/tcp-slow-start.html.
[5] “擁塞控制,” [線上]. Available: http://wiki.mbalib.com/zh-tw/%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6.
[6] “柯老师的awk讲解,” [線上]. Available: http://blog.sina.com.cn/s/blog_3fc8554b0100qgay.html.
[7] “NS2 簡單模擬範例,” [線上]. Available: http://netlab.cse.yzu.edu.tw/ns2/netlab/ns2_website/ns_example.xml.
[8] “How to install ns2 on Ubuntu 12.04,” [線上]. Available: https://www.youtube.com/watch?v=kvu9OADH_Bg.
[9] "咻咻的筆記小站", [線上]. Available: http://hengxiuxu.blogspot.tw/.
[10]柯志亨,程榮祥,鄧德雋,丁建文, NS2網路模擬實現, 台北市: 學貫, 2012.
留言
張貼留言