【正文】
e of TCP/IP , so institutions mainly take a focus on TCP congestion control. The mechanism dynamically adjusts the sliding window according to internal signs for the load of networks. TCP sender which is the source endpoint accordingly shrinks the sending window in order to delay and control the congestion when detecting the rise of the congestion which takes packet loss as signals. The traditional TCP congestion control mechanism es into a challenge with the transformation of service types on networks. The thesis is centered on the Multi Phase algorithm, that is, the phasedivided asymptote algorithm. Firstly, the TCP versions including Tahoe, Reno, Vegas referred to have lack of flexibility on parameters configurations and adaptive capability, so the proposal discussed adopts the bandwidth estimation based on the networks measurement which provides references for congestion control to meet requirements for fluctuation of networks capacity 。本文的主要內(nèi)容是Multi Phase算法,即分段逼近的慢啟動(dòng)算法。由于當(dāng)今網(wǎng)絡(luò)的基礎(chǔ)架構(gòu)是TCP/IP協(xié)議族,所以學(xué)界關(guān)注的焦點(diǎn)在于TCP擁塞控制。其控制機(jī)制是根據(jù)反映網(wǎng)絡(luò)負(fù)載的隱含信號(hào)來動(dòng)態(tài)地調(diào)整滑動(dòng)窗口。首先,文中提到當(dāng)前使用的TCP版本Tahoe、Reno、Vegas其參數(shù)設(shè)置靈活性比較小,適應(yīng)能力比較低,本論文提出采用網(wǎng)絡(luò)測(cè)量技術(shù)進(jìn)行網(wǎng)絡(luò)可用帶寬估計(jì),利用帶寬值為擁塞控制提供參考,從而更好地適應(yīng)網(wǎng)絡(luò)容量變化的要求;其次,文中提到TCP擁塞控制的慢啟動(dòng)機(jī)制中所采用的指數(shù)增長算法對(duì)于網(wǎng)絡(luò)流量具有較大的沖擊,會(huì)引起可用容量迅速枯竭,本論文提出采用分段逼近的慢啟動(dòng)算法,于是降低了突發(fā)性的洪峰信息量,避免了擁塞的頻繁發(fā)生;最后,文中提到的分段逼近的漸進(jìn)式增長規(guī)律在某些特殊場(chǎng)合,比如說Web頁面的Java Applet、Flash下載時(shí),該算法的效率不高,其持續(xù)時(shí)間過長,本論文提出采用設(shè)置一個(gè)增長因子來調(diào)節(jié)擁塞窗口的增長幅度,從而動(dòng)態(tài)地適應(yīng)不同類型的服務(wù)需要,提高了網(wǎng)絡(luò)傳輸效率,取得了性能與公平的折衷。 then, the exponential increase law in the slow start mechanism referred to takes an impact to networks streaming and results in the drain of available capacity, so the scheme advanced introduces the phasedivided asymptote algorithm to alleviate the sudden flooding transmit and avoid the frequent turns of the congestion。 phasedivided asymptote algorithm V基于網(wǎng)絡(luò)測(cè)量的TCP協(xié)議改進(jìn) 目錄目 錄緒 論 1第一章 TCP 擁塞控制機(jī)制 21.1 擁塞現(xiàn)象與控制 21.1.1 擁塞現(xiàn)象的產(chǎn)生 21.1.2 控制階段的劃分 31.2 國外相關(guān)工作 41.2.1 控制機(jī)制的發(fā)展:Tahoe到Reno 41.2.2 新改進(jìn):NewReno、 SACK和Vegas 41.3 慢啟動(dòng)算法評(píng)估 61.3.1 面臨的困難和問題 61.3.2 算法缺陷分析 71.3.3 基于網(wǎng)絡(luò)測(cè)量的方向 7第二章 網(wǎng)絡(luò)測(cè)量方法與研究 82.1 網(wǎng)絡(luò)測(cè)量方法 82.1.1 測(cè)量方法對(duì)比 82.1.2 主動(dòng)測(cè)量方法 82.2帶寬測(cè)量的研究 92.2.1 算法基本原理 92.2.2 主要算法對(duì)比 102.3 主動(dòng)帶寬測(cè)量方案 112.3.1 鏈路帶寬測(cè)量 112.3.3 端到端的帶寬測(cè)量 12第三章 基于帶寬測(cè)量的TCP分段逼近算法 133.1問題分析 133.1.1 慢啟動(dòng)階段 133.1.2 解決思路 133.2 端到端測(cè)量的擁塞控制 143.2.1 端到端的原則 143.2.2 擁塞信號(hào)的處理 153.3 基于帶寬測(cè)量的TCP算法原理 153.3.1 計(jì)算公式 153.3.2 過濾器原理 163.4 基于帶寬測(cè)量的TCP擁塞控制過程 183.4.1 過程原理 183.4.2 偽代碼 183.5 TCP慢啟動(dòng)分段逼近改進(jìn)方案 193.5.1 方案原理 193.5.2 算法偽代碼 203.5.2 性能分析 213.6 帶增長因子的TCP慢啟動(dòng)分段逼近方案 213.6.1 方案原理 213.6.2 算法偽代碼 223.6.3 性能分析 22第四章 仿真實(shí)驗(yàn)實(shí)現(xiàn)與研究 234.1實(shí)驗(yàn)平臺(tái)介紹 234.1.1 平臺(tái)問題分析 234.1.2 NS2體系結(jié)構(gòu)和類層次 234.1.3 NS2模塊組成和使用 244.2 NS2擴(kuò)展模塊設(shè)計(jì) 274.2.1 類結(jié)構(gòu)層次圖 274.2.2 類屬性聲明與接口定義 284.3 模塊TCL接口實(shí)現(xiàn) 294.3.1構(gòu)造函數(shù)MultiPhaseTcpAgent( ) 294.3.2 類變量綁定函數(shù)delay_bind_dispatch( ) 304.4模塊關(guān)鍵算法流程 314.4.1 接收處理函數(shù)recv ( ) 314.4.2 擁塞控制窗口調(diào)節(jié)函數(shù)opencwnd ( ) 324.4.3 重復(fù)性ACK處理函數(shù)dupack_action ( ) 334.4.4 超時(shí)處理函數(shù)timeout ( ) 344.5 仿真實(shí)驗(yàn)設(shè)計(jì) 354.5.1 拓?fù)鋱D 354.5.2 測(cè)試腳本 354.6 實(shí)驗(yàn)編譯調(diào)試 384.7 實(shí)驗(yàn)結(jié)果分析 394.7.1擁塞窗口Cwnd 394.7.2 路由器隊(duì)列長度Queue length 40第五章 結(jié)論 415.1 回顧 415.2 總結(jié) 415.3 下一步工作 425.4 結(jié) 束 語 43致 謝 44參 考 文 獻(xiàn) 45基于網(wǎng)絡(luò)測(cè)量的TCP協(xié)議改進(jìn) 緒論緒 論 本課題來源于指導(dǎo)老師所進(jìn)行的TCP協(xié)議的優(yōu)化與改進(jìn)研究。越來越多的聯(lián)網(wǎng)主機(jī)加劇了網(wǎng)絡(luò)資源的競爭與分配,這也直接惡化了網(wǎng)絡(luò)服務(wù)質(zhì)量,使得網(wǎng)絡(luò)擁塞狀況成為廣泛為人關(guān)注的話題。其一方面促進(jìn)了課題研究者對(duì)于TCP協(xié)議設(shè)計(jì)與實(shí)現(xiàn)的深入理解,而另一方面也鍛煉了學(xué)習(xí)能力與創(chuàng)新能力,從而使得研究者具備了從事相關(guān)領(lǐng)域研究的理論知識(shí)與實(shí)踐才能。TCP New Reno對(duì)TCP Reno中的“快速恢復(fù)”算法進(jìn)行了修正,它考慮了一個(gè)發(fā)送窗口內(nèi)多個(gè)數(shù)據(jù)包丟失的情況。經(jīng)過本次設(shè)計(jì),要求設(shè)計(jì)者對(duì)TCP協(xié)議原理與設(shè)計(jì)以及網(wǎng)絡(luò)仿真有一個(gè)較為全面的了解,熟悉Linux環(huán)境下C++、Tcl/Tk程序設(shè)計(jì)開發(fā)過程和技巧。在網(wǎng)絡(luò)發(fā)生擁塞時(shí),會(huì)導(dǎo)致吞吐量下降,嚴(yán)重時(shí)會(huì)發(fā)生“擁塞崩潰”(congestion collapse)現(xiàn)象。Floyd總結(jié)出擁塞崩潰主要包括以下幾種:傳統(tǒng)的崩潰、未傳送數(shù)據(jù)包導(dǎo)致的崩潰、由于數(shù)據(jù)包分段造成的崩潰、日益增長的控制信息流造成的崩潰等。如果負(fù)載繼續(xù)增加,路由器開始丟包,當(dāng)負(fù)載超過一定量時(shí),吞吐量開始急劇下降,這一點(diǎn)稱為Cliff。源端按cwnd大小發(fā)送數(shù)據(jù),每收到一個(gè)ACK確認(rèn),cwnd就增加一個(gè)數(shù)據(jù)包發(fā)送量。此時(shí)就進(jìn)入擁塞避免階段。所以快速重傳和恢復(fù)就是在源端收到3個(gè)或3個(gè)以上重復(fù)ACK時(shí),就斷定數(shù)據(jù)包已經(jīng)丟失,重傳數(shù)據(jù)包,同時(shí)將ssthresh置為當(dāng)前cwnd的一半,而不必等到RTO超時(shí)。大量的實(shí)踐證明這種擁塞控制機(jī)制對(duì)Internet上大批量文件傳輸?shù)缺M量做好(besteffort)型服務(wù)具有較好的適應(yīng)性。但TCP Reno算法仍有不足。RTT最簡潔的估計(jì)方法是應(yīng)用舊RTT值和新RTT采樣值的求加權(quán)和。如果接近0,RTT對(duì)時(shí)延變化的反應(yīng)就非常靈敏。1.2.2 新改進(jìn):NewReno、 SACK和Vegas針對(duì)以上缺點(diǎn),近年來又提出了一些改進(jìn)算法,其中NewReno和SACK都是改進(jìn)版。顯然,NewReno只需修改源端代碼。Reno和NewReno使用第一種策略,而Tahoe使用第二種。Vegas就是通過觀察以前的TCP連接中RTT值改變情況來控制擁塞窗口cwnd,如果發(fā)現(xiàn)RTT變大,Vegas就認(rèn)為網(wǎng)絡(luò)發(fā)生擁塞,并開始減小cwnd。而與包的具體傳輸時(shí)延無關(guān)。有研究通過仿真分析了Vegas實(shí)際的運(yùn)行效果,由于它沒有采用包丟失來判斷網(wǎng)絡(luò)可用帶寬,而改以RTT的改變來判斷,所以能較好地預(yù)測(cè)網(wǎng)絡(luò)帶寬使用情況,并且對(duì)小緩存(smallbuffer)的適應(yīng)性較強(qiáng),其公平性、效率都較好。有研究表明,當(dāng)前互聯(lián)網(wǎng)上數(shù)據(jù)傳輸大多數(shù)為短生存期連接(如Web頁面點(diǎn)擊),長生存期連接(如ftp下載)占少數(shù)。而對(duì)于長生存期連接,慢啟動(dòng)機(jī)制只作用于連接建立階段和分組傳輸超時(shí)而引起的重傳階段。1.3.2 算法缺陷分析為了有效提高短生存期連接的傳送效率以及改善長生存期連接的啟動(dòng)過程和丟包重啟過程的傳輸效率,研究者提出了系列改進(jìn)方法。 TCP Vegas通過計(jì)算擁塞窗口與實(shí)際測(cè)量的的比值,計(jì)算出實(shí)際傳送帶寬,與期望的傳送帶寬比較,來調(diào)整發(fā)送端的傳送帶寬,并通過兩個(gè)門限參數(shù),使傳送帶寬收斂于網(wǎng)絡(luò)可用帶寬,測(cè)量表達(dá)式,為擁塞窗口的大小,為分組往返時(shí)間,通過計(jì)算上一個(gè)分組傳送的速率,作為計(jì)算當(dāng)前大小和慢啟動(dòng)門限值的依據(jù)。 被動(dòng)測(cè)量和主動(dòng)測(cè)量的區(qū)別在于,前者是被動(dòng)地在網(wǎng)絡(luò)上接收流經(jīng)的數(shù)據(jù)包,而不會(huì)對(duì)網(wǎng)絡(luò)造成任何的負(fù)載;后者則是主動(dòng)地向?qū)Ψ桨l(fā)出測(cè)試數(shù)據(jù)包,根據(jù)數(shù)據(jù)包在網(wǎng)絡(luò)上的傳輸情況來判斷網(wǎng)絡(luò)的性能。這些機(jī)器交換測(cè)試流量,并收集全天的丟包率、延遲和連通性統(tǒng)計(jì)。 主動(dòng)測(cè)量是基于RTT測(cè)量,而不是對(duì)單程延遲的測(cè)量。 具體來說, RTT測(cè)量是通過類似Ping的程序,每隔一定時(shí)間進(jìn)行一次。 另外一點(diǎn),就是要查看丟包率。di為分組在鏈路li的固定時(shí)延,為分組k在鏈路li的排隊(duì)延遲,為分組k由源節(jié)點(diǎn)到Ni的延遲總和為分組k的往返延遲,其他變量約定依此類推。t= (5)(其中是第二個(gè)包的大小, 是瓶頸帶寬)?;舅惴ㄊ墙⒃趯?duì)稱網(wǎng)絡(luò)的基礎(chǔ)上的。令是線性函數(shù)(B)的斜率。路由器由路由表查詢算法將數(shù)據(jù)包轉(zhuǎn)發(fā)到相應(yīng)的輸出端口,輸出端口將數(shù)據(jù)包以數(shù)據(jù)位的形式發(fā)送到鏈路上,傳輸至下一個(gè)路由器的輸入端口。假設(shè)鏈路i帶寬(bps,bits/second),測(cè)試數(shù)據(jù)包k大小為,響應(yīng)數(shù)據(jù)包大小為比特。由帶寬定義知道,鏈路帶寬表征接口處理數(shù)據(jù)包的能力,鏈路帶寬越大,接口在單位時(shí)間內(nèi)把數(shù)據(jù)包發(fā)送到傳輸介質(zhì)上的能力就越強(qiáng),數(shù)據(jù)包傳送的速率就越快。已知端到端鏈路徑和各鏈路帶寬,則可以知道路徑帶寬,端到端測(cè)量技術(shù)主要測(cè)量路徑的容量和有效帶寬。該方案中的原則主要是不依靠核心路由器的統(tǒng)計(jì)和分析,而是由發(fā)送端進(jìn)行獨(dú)立的測(cè)量,即強(qiáng)調(diào)了端與端之間的網(wǎng)絡(luò)是一個(gè)“黑箱”,只有通過主動(dòng)測(cè)量才能實(shí)現(xiàn)端到端的帶寬測(cè)量。因此,有研究者提出使用一個(gè)更大的初始窗口和采用快啟動(dòng)來減少慢啟動(dòng)過程所經(jīng)歷的時(shí)間,減少慢啟動(dòng)對(duì)網(wǎng)絡(luò)性能的沖擊。接著,引發(fā)源端重傳超時(shí),導(dǎo)致網(wǎng)絡(luò)參數(shù)的全局同步;全局同步又導(dǎo)致整個(gè)網(wǎng)絡(luò)的流量負(fù)載加重和排隊(duì)延遲的抖動(dòng)。一旦進(jìn)行設(shè)置,以后就不再修改。往往當(dāng)根據(jù)上一個(gè)時(shí)間間隔內(nèi)的樣本值所計(jì)算的結(jié)果得到帶寬估計(jì)值,此時(shí)網(wǎng)絡(luò)帶寬容量又發(fā)生了新的變化。另外,在慢啟動(dòng)階段,源端的發(fā)送窗口是按照指數(shù)規(guī)律進(jìn)行增長,即按照時(shí)間單位6…,窗口大小變化為132…。當(dāng)慢啟動(dòng)階段開始進(jìn)入擁塞避免階段前最后一個(gè)RTT時(shí)間單位,與前一次的數(shù)值相比,其發(fā)送窗口增加幅度差為ssthresh/2。按照當(dāng)前慢啟動(dòng)算法的思路,當(dāng)鏈路剛建立時(shí),為了探索網(wǎng)絡(luò)可用帶寬,同時(shí)避免大窗口造成網(wǎng)絡(luò)擁塞,所以采用了小的初始窗口,增加幅度大的指數(shù)型規(guī)律。 慢啟動(dòng)窗口增加速度3.2 端到端測(cè)量的擁塞控制3.2.1 端到端的原則TCP擁塞控制算法的基本設(shè)計(jì)哲學(xué)是其操作必須是“端到端的”。但是采用這個(gè)方法的結(jié)果是TCP源端無法從網(wǎng)絡(luò)中獲得主動(dòng)的擁塞反饋信息。而過去所采用的帶寬估計(jì)(通過監(jiān)測(cè)ACK)只是通過間接方法,比如說瓶頸隊(duì)列長度的估計(jì), 來控制TCP窗口。 當(dāng)源端收到重復(fù)的ACKs(DUPACKs)即表示亂序接收,也會(huì)采用這些數(shù)據(jù)來估計(jì)帶寬,而且一旦接收到,就會(huì)馬上計(jì)算出新的估計(jì)值。 很重要的是要注意到,由超時(shí)或一般而言,n個(gè)重復(fù)的ACK導(dǎo)致的擁塞階段結(jié)束以后,瓶頸鏈路處于飽