一、TCP擁塞控制算法
面向連接的TCP和無連接的UDP在擁塞發(fā)生時對擁塞指示的不同反應和處理,導致對網(wǎng)絡資源的不公平使用問題。在擁塞發(fā)生時,有擁塞控制反應機制的TCP數(shù)據(jù)流會按擁塞控制步驟進入擁塞避免階段,從而主動減小發(fā)送入網(wǎng)絡的數(shù)據(jù)量。但對無連接的數(shù)據(jù)報UDP,由于沒有端到端的擁塞控制機制,即使網(wǎng)絡發(fā)出了擁塞指示(如數(shù)據(jù)包丟失、收到重復ACK等),UDP也不會像TCP那樣減少向網(wǎng)絡發(fā)送的數(shù)據(jù)量。結果遵守擁塞控制的TCP數(shù)據(jù)流得到的網(wǎng)絡資源越來越少,沒有擁塞控制的UDP則會得到越來越多的網(wǎng)絡資源,這就導致了網(wǎng)絡資源在各源端分配的嚴重不公平。
網(wǎng)絡資源分配的不公平反過來會加重擁塞,甚至可能導致?lián)砣罎ⅰR虼巳绾闻袛嘣趽砣l(fā)生時各個數(shù)據(jù)流是否嚴格遵守TCP擁塞控制,以及如何“懲罰”不遵守擁塞控制協(xié)議的行為,成了目前研究擁塞控制的一個熱點。在傳輸層解決擁塞控制的公平性問題的根本方法是全面使用端到端的擁塞控制機制。
一些TCP連接之間也存在公平性問題。產(chǎn)生問題的原因在于一些TCP在擁塞前使用了大窗口尺寸,或者它們的RTT較小,或者數(shù)據(jù)包比其他TCP大,這樣它們也會多占帶寬。
延伸閱讀:
二、Reno是什么
Reno是目前應用較廣泛且較為成熟的算法。該算法所包含的慢啟動、擁塞避免和快速重傳、快速恢復機制,是現(xiàn)有的眾多算法的基礎。從Reno運行機制中很容易看出,為了維持一個動態(tài)平衡,必須周期性地產(chǎn)生一定量的丟失,再加上AIMD機制–減少快,增長慢,尤其是在大窗口環(huán)境下,由于一個數(shù)據(jù)報的丟失所帶來的窗口縮小要花費很長的時間來恢復,這樣,帶寬利用率不可能很高且隨著網(wǎng)絡的鏈路帶寬不斷提升,這種弊端將越來越明顯。公平性方面,根據(jù)統(tǒng)計數(shù)據(jù),Reno的公平性還是得到了相當?shù)目隙?,它能夠在較大的網(wǎng)絡范圍內(nèi)理想地維持公平性原則。