龔猷龍
【摘要】 傳輸層通信時,如果發(fā)送序列中間某個數據包丟失,一般的TCP 協議會等到超時后再重送遺失的數據包,在等待超時的這段時間中,TCP不能重送發(fā)新的數據,這使得鏈路的使用率很低,急劇降低了TCP性能。為改善這種情況,選擇性確認(SACK)技術提供了相應機制使發(fā)送方能區(qū)分數據丟失及重發(fā)情況。本文將分析SACK選項功能,同時采用NS-2模擬器進行仿真,分析SACK丟包情況、隊列長度及擁塞窗口性能。
【關鍵詞】 TCP 選擇性確認 NS-2 重新發(fā)送
一、引言
TCP協議是面向連接、保證高可靠性(數據無丟失、數據無失序、數據無錯誤、數據無重復到達)傳輸層協議。TCP協議中經常要關注到網絡性能,比如網絡擁塞,產生了多種TCP擁塞控制算法,Tahoe、Reno、NewReno與SACK算法。擁塞控制就是防止過多的數據注入網絡中,這樣可以使網絡中的路由器或鏈路不致過載。擁塞控制是一個全局性的過程,和流量控制不同,流量控制指點對點通信量的控制。
二、TCP SACK的原理
發(fā)送方維持一個叫做擁塞窗口cwnd(congestion window)的狀態(tài)變量。擁塞窗口的大小取決于網絡的擁塞程度,并且動態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口,另外考慮到接受方的接收能力,發(fā)送窗口可能小于擁塞窗口。慢開始算法的思路就是,不要一開始就發(fā)送大量的數據,先探測一下網絡的擁塞程度,也就是說由小到大逐漸增加擁塞窗口的大小。這里用報文段的個數的擁塞窗口大小舉例說明慢開始算法,實時擁塞窗口大小是以字節(jié)為單位的。當然收到單個確認但此確認多個數據報的時候就加相應的數值。所以一次傳輸輪次之后擁塞窗口就加倍。為了防止cwnd增長過大引起網絡擁塞,還需設置一個慢開始門限ssthresh狀態(tài)變量。擁塞避免算法讓擁塞窗口緩慢增長,即每經過一個往返時間RTT就把發(fā)送方的擁塞窗口cwnd加1,而不是加倍。這樣擁塞窗口按線性規(guī)律緩慢增長。無論是在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網絡出現擁塞(其根據就是沒有收到確認,雖然沒有收到確認可能是其他原因的分組丟失,但是因為無法判定,所以都當做擁塞來處理),就把慢開始門限設置為出現擁塞時的發(fā)送窗口大小的一半。然后把擁塞窗口設置為1,執(zhí)行慢開始算法。
在傳送過程中,若同時有多個數據包在網絡中丟失,大多數情況下一般的TCP都必須等到超時(Timeout)后才能重新發(fā)送丟失的數據包。而SACK是TCP Reno的另一個衍生版本。在這個版本中,加入了一個SACK選項(TCP option field),允許接收端在返回Duplicate ACK時,將已經收到的數據區(qū)段(連續(xù)收到的數據范圍)返回給傳送端,數據區(qū)段與數據區(qū)段之間的間隔就是接收端沒有收到的數據。傳送端就知道哪些數據包是已經收到的,哪些是該重送的,因此SACK的傳送端可以在一個RTT時間內重送多個的數據包。SACK通常都是由TCP接收方產生的,在TCP握手時,如果接收到對方的SACK允許選項同時自己也支持SACK的話,在接收異常時就可以發(fā)送SACK包通知發(fā)送方。在SACK中描述的是收到的數據段,這些數據段可以是正常的,也可能是重復發(fā)送的,SACK字段具有描述重復發(fā)送的數據段的能力,在第一塊SACK數據中描述重復接收的不連續(xù)數據塊的序列號參數,其他SACK數據則描述其他正常接收到的不連續(xù)數據,因此第一塊SACK描述的序列號會比后面的SACK描述的序列號大;而在接收到不完整的數據段的情況下,SACK范圍甚至可能小于當前的ACK值。通過這種方法,發(fā)送方可以更仔細判斷出當前網絡的傳輸情況,可以發(fā)現數據段被網絡復制、錯誤重傳、ACK丟失引起的重傳、重傳超時等異常的網絡狀況。
三、TCP SACK的性能仿真
針對性能指標:丟包情況、隊列長度及擁塞窗口性能。下面將通過NS-2仿真工具進行仿真。
(1)仿真實驗圖:
(2)按照圖1,使用NSG2工具自動生成TCL代碼進行仿真。實驗仿真結果:a.吞吐量:1918.4 Kbps;b.擁塞窗口cwnd變化情況如圖2:c.隊列變化情況如圖3:
總結:TCP SACK的吞吐量比較大,擁塞窗口不會重設為1,而且保持平穩(wěn)的波動。且隊列變化情況也是很有規(guī)律的??梢姡琓CP SACK的發(fā)送機制還是比較優(yōu)化的。
參 考 文 獻
[1] 王輝. NS-2網絡模擬器的原理和應用.西北工業(yè)大學出版社,2008.
[2] 謝希仁. 計算機網絡(第5版). 電子工業(yè)出版社,2009.
[3] Comer,D.,Internetworking with TCP/IP,Vol.1,5ed.,Pearson Education,2006.