王榮平
摘 要:為了避免網(wǎng)絡(luò)擁塞Internet主要依賴TCP端到端擁塞控制,互聯(lián)網(wǎng)的穩(wěn)定運行有一部分要歸功于以TCP為代表的端到端擁塞控制機制,這個機制起了很大的作用。但是由于互聯(lián)網(wǎng)上的應(yīng)用和用戶的增多,互聯(lián)網(wǎng)規(guī)模的爆炸,這個機制已經(jīng)不能全面的滿足網(wǎng)絡(luò)中各種復(fù)雜應(yīng)用的需求,擁塞已經(jīng)成為迫在眉睫的問題。 在本文中,當(dāng)前的TCP/IP網(wǎng)絡(luò)的擁塞控制兩個層,并以此為基礎(chǔ)針對網(wǎng)絡(luò)的實際應(yīng)用需求做了深入研究。
關(guān)鍵詞:擁塞控制;TCP/IP網(wǎng)絡(luò);PID;控制主動隊列管理
計算機網(wǎng)絡(luò)已有幾十年的歷史,但無論是網(wǎng)絡(luò)技術(shù)發(fā)展迅速,還是應(yīng)用范圍與影響深度,變化最快的階段還是面向大眾的最近十年。計算機網(wǎng)絡(luò)發(fā)展歷史表明:用戶需求是推動網(wǎng)絡(luò)技術(shù)發(fā)展的最根本原動力。
在九十年代初期,用戶抱怨接入速度過慢;九十年代中期,主干網(wǎng)傳輸速度受到了質(zhì)疑;九十年代后期,用戶對網(wǎng)絡(luò)多媒體服務(wù)和服務(wù)質(zhì)量要求日趨強烈。而擁塞控制技術(shù)是其他技術(shù)發(fā)展的基礎(chǔ),所以研究擁塞控制技術(shù)對計算機網(wǎng)絡(luò)體系結(jié)構(gòu)發(fā)展有極為深遠的意義。
1 網(wǎng)絡(luò)擁塞的概念及產(chǎn)生原因
由于網(wǎng)絡(luò)中有很多的數(shù)據(jù)包而導(dǎo)致性能下降,這種現(xiàn)象稱為擁塞。關(guān)于擁塞現(xiàn)象,可用圖1來闡述。當(dāng)有較小的網(wǎng)絡(luò)覆蓋時,隨著負(fù)載的增長而增長的吞吐量,響應(yīng)時間更加緩慢。
2 網(wǎng)絡(luò)擁塞控制算法及存在問題
擁塞控制算法“擁塞避免”了這兩種不同的機制“擁塞控制”。擁塞控制用于從網(wǎng)絡(luò)擁塞狀態(tài)中恢復(fù),擁塞機制,因此,“恢復(fù)”的機制;其目標(biāo)是避免網(wǎng)絡(luò)擁塞避免進入停滯狀態(tài)在低潛伏時間,在網(wǎng)絡(luò)運行,高輸入輸出量的狀態(tài)下,因此擁塞避免是“預(yù)防”機制。根據(jù)產(chǎn)生網(wǎng)絡(luò)擁塞的原因可知,雖然源于資源短缺而產(chǎn)生的擁塞,但單方面的增加資源有時只能加重?fù)砣潭炔⒉荒芙鉀Q擁塞的發(fā)生。比如說,有時為了增大報文通過網(wǎng)關(guān)的延遲而增加網(wǎng)關(guān)的緩存,在數(shù)據(jù)包轉(zhuǎn)發(fā)完成一條長時間排隊已經(jīng)超時,但是源端卻認(rèn)為這些數(shù)據(jù)包已經(jīng)被丟棄,于是開始重新傳輸,但這些仍然被傳輸?shù)木W(wǎng)絡(luò)分組,因此一個網(wǎng)絡(luò)資源浪費導(dǎo)致堵塞。
3 TCP/IP擁塞控制結(jié)構(gòu)分類
在擁塞閉環(huán)的控制中,源端調(diào)節(jié)發(fā)送速率是通過反饋信號來完成的,因此擁塞控制中必不可少的一個環(huán)節(jié)就是反饋環(huán)節(jié)。一般有以下兩種反饋方式:隱式反饋和顯式反饋。在隱式反饋,終端系統(tǒng)負(fù)責(zé)引進和傳輸狀態(tài)的監(jiān)測數(shù)據(jù),并從此處推測網(wǎng)絡(luò)擁塞的狀態(tài),進而來調(diào)節(jié)發(fā)送的速率。但終端的所有功能之后限制或難以準(zhǔn)確地推斷出在各種有限信息的網(wǎng)絡(luò)的負(fù)荷狀況。信息或標(biāo)記分組丟失使用作為反饋信號一般是指在隱式反饋。
對于現(xiàn)有的擁塞策略,根據(jù)該層級和網(wǎng)絡(luò)的網(wǎng)絡(luò)模型實現(xiàn)的位置,基于通信子網(wǎng)的擁塞控制策略和TCP/IP網(wǎng)絡(luò)擁塞策略。一開始主要集中在TCP的擁塞控制上來研究端主機擁塞控制。擁塞控制算法的策略,這里面包括數(shù)據(jù)包調(diào)整策略和隊列管理算法策咯,這些是基于通訊子網(wǎng)的,后者是更為主要研究方向。通過數(shù)據(jù)流如何排隊來決定哪些包可以傳輸,以此來來分配帶寬,就是數(shù)據(jù)包調(diào)度策略。
根據(jù)隊列長度變化情況來選取路由器的主動隊列管理策略。從網(wǎng)絡(luò)狀態(tài)來看,根據(jù)控制算法調(diào)整傳輸速率,因此路由器隊列緩存中的隊列長度才得到控制。如圖2和3所示。
由此可見,基于通信子網(wǎng)的擁塞控制策略和端主機的擁塞控制策略是相互影響相互作用相輔相成的。反饋信號從發(fā)送隊列管理策略需要根據(jù)主機策略的需要來調(diào)整利率;隊列管理可以通過變化來影響端主機的發(fā)送速率還可以維持合理的隊列長度變化。兩者一起可以實現(xiàn)一個完整的網(wǎng)絡(luò)擁塞控制。
4 控制算法比較
4.1 TCP控制算法比較
最初的NSFNET程序規(guī)范TCP協(xié)議,這是RFC793,其實這也是較為完整齊全并且也是最早的TCP規(guī)范。在設(shè)計之初,他被給予了很高的TCP協(xié)議的使命,更需要成為這些網(wǎng)絡(luò)互聯(lián)系統(tǒng)中的最可靠性傳輸協(xié)議。
互聯(lián)網(wǎng)絡(luò)中的可靠傳輸起碼包括這兩方面:第一個是正確的數(shù)據(jù),這是由于前的傳輸介質(zhì)的傳輸質(zhì)量差,所以需要校驗和計算,在傳輸層和下面實現(xiàn)的協(xié)議層;第二個是完整,對數(shù)據(jù)進行排序,此功能是必需的TCP進行復(fù)雜的操作來完成,但基本上是建立TCP窗口控制,擁塞控制實際上是在Internet上使用的基礎(chǔ)上,TCP擁塞控制網(wǎng)絡(luò)擁塞控制一直是研究的一個重點,因為95%的互聯(lián)網(wǎng)使用對數(shù)據(jù)流的TCP協(xié)議。
4.2 IP控制算法比較
TCP基于窗口的擁塞控制機制的因特網(wǎng)的魯棒性方面發(fā)揮了關(guān)鍵作用。然而,隨著迅猛發(fā)展的Internet本身,它越來越龐大的規(guī)模,日益復(fù)雜的結(jié)構(gòu),研究人員正在慢慢地認(rèn)識到,僅僅依靠端的TCP擁塞控制是不夠的,互聯(lián)網(wǎng)絡(luò)也應(yīng)該參加控制資源的工作。以影響TCP擁塞控制的動態(tài)性能更為了實現(xiàn)IP層擁塞控制的目的。為了實現(xiàn)擁塞控制,出現(xiàn)了一系列的調(diào)度和隊列管理算法。
4.3 兩大類算法比較
圖4是一個典型的互聯(lián)網(wǎng)實例,其中IP控制的Hop-by-Hop類型和TCP控制的End-and-End類型為典型實例?;谝陨系姆治龊陀懻?,我們可以看到,本質(zhì)上是擁塞控制方法的來源在TCP的擁塞控制的基礎(chǔ)上,最終實現(xiàn)系統(tǒng)操作。
顯然,這種擁塞控制方法在網(wǎng)絡(luò)擁塞之間有相當(dāng)大的延遲感知擁塞控制后實施行動,在少量的數(shù)據(jù)傳輸情況下,可以利用該數(shù)據(jù)傳送發(fā)生之后的傳播反饋信息到達發(fā)送源。IP網(wǎng)絡(luò)擁塞控制的實現(xiàn),它可以感知到網(wǎng)絡(luò)擁塞的發(fā)生。能及時的采取行動來加以控制。
5 TCP/IP擁塞控制算法存在的問題
TCP/IP擁塞控制機制在網(wǎng)絡(luò)中發(fā)揮了不可或缺的作用,但TCP/IP擁塞控制算法本身有不能忽視的問題:
從擁塞的發(fā)生到端系統(tǒng)采取控制之間有顯著的延時控制,由于對端系統(tǒng)缺乏一些了解,對動態(tài)數(shù)據(jù)傳輸過程也缺乏認(rèn)識,因此無法預(yù)測到具體使用網(wǎng)絡(luò)資源的情況,只能將數(shù)據(jù)發(fā)送到控制網(wǎng)絡(luò)流量,減少網(wǎng)絡(luò)負(fù)載,從而通過減少緩解網(wǎng)絡(luò)擁塞。ACK Congestion的現(xiàn)象:ACK自計時技術(shù)往往會失效在非對稱網(wǎng)中,這樣ACK的傳輸時間就是ACK到達源端的間隔,但是由于ACK遠遠小于數(shù)據(jù)包,因此會導(dǎo)致源端將數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)并超過了路由器難以承受的速度。
6 TCP/IP擁塞控制算法的改進
由于收到重復(fù)的ACK可能會導(dǎo)致錯誤的系統(tǒng)問題,根據(jù)網(wǎng)絡(luò)負(fù)載、吞吐量和延遲的關(guān)系,把Rtt的變化和三個重復(fù)的ACK共同控制慢啟動的閾值和擁塞窗口的大小。
新的往返延遲會影響之后舊的RTT,這里可引入一個控制因素P。 當(dāng)新的RTT#舊的RTT時,P=0;當(dāng)新的RTT>舊的RTT時,P=1;當(dāng)收到3個重復(fù)的ACK時候控制慢啟動閾值以及擁塞窗口大小的算法。這個算法中的P值為0或者1,和三個重復(fù)的ACK共同控制慢啟動閾值和擁塞窗口的大小,使系統(tǒng)能更加準(zhǔn)確地判斷數(shù)據(jù)包有沒有丟失,只有增加延遲時間也收到3三個重復(fù)的ACK時,能減少慢啟動閾值和擁塞窗口為之前的一半,提高資源的利用率。
7 結(jié)論
本文闡述了一些最新的工作,特別是在網(wǎng)絡(luò)擁塞控制方面的研究,擁塞控制的原理,揭示了現(xiàn)在所面臨的擁塞控制問題,進行了一些簡單的總結(jié)和鏈路的算法有兩個來源。
參考文獻:
[1] 羅萬明,林闖,閻寶平.TCP擁塞控制研究.計算機學(xué)報,2001,24(1):1-18.
[2] 鄧亞平,葉凌偉,陳雁.TCP/IP擁塞控制算法的改進.計算機科學(xué),2001:110-113.
[3] 包俊杰,王剛,李波.TCP擁塞控制綜述.重慶教育學(xué)院報,2003,11.
[4] 謝希仁.計算機網(wǎng)絡(luò)(第三版).大連理工大學(xué)出版社,2000.