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