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