(二十六)運輸層--TCP的擁塞控制的一般原理

TCP的擁塞控制的一般原理

在計算機網絡中的鏈路容量(帶寬)、交換結點中的緩存和處理機等,都是網絡的資源。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡的性能就要變壞,這種情況就叫做擁塞。若網絡中有許多資源同時呈現供應不足,網絡的性能就要明顯變壞,整個網絡的吞吐量隨輸入負荷的增大而下降。

有人可能會說:只要任意增加一些資源,例如,把結點緩存的存儲空間擴大,或把鏈路更換爲更高速率的鏈路,或把結點處理機的運算速度提高,就可以解決網絡擁塞的問題。其實不然,網絡擁塞往往是由許多因素引起的。例如,當某個結點緩存的容量太小時,到達該結點的分組因無存儲空間暫存而不得已被丟棄。現在將該結點的緩存容量擴展到非常大,於是凡到達該結點的分組均可在結點的緩存隊列中排隊,不受任何限制。由於輸出鏈路的容量和處理機的速度並未提高,因此隊列中的絕大多數分組的排隊等待時間將會大大增加,結果上層軟件只好把它們進行重傳(因爲超時了)。由此可見,簡單的擴大緩存的存儲空間同樣會造成網絡資源的嚴重浪費,因而解決不了網絡擁塞的問題。

又如,處理機處理的速率太慢可能引起網絡的擁塞。此時簡單的將處理機的速率提高,可能會緩解這一情況,但往往又會將瓶頸轉移到其它地方。問題的本質是整個系統的各個部分不匹配,只有所有的部分都平衡了,問題纔會得到解決。

擁塞常常趨於惡化。如果一個路由器沒有足夠的緩存空間,它就會丟棄一些新到的分組。但當分組被丟棄時,發送這一分組的源點就會重傳這一分組,甚至可能還要重傳多次。這樣會引起更多的分組流入網絡和被網絡中的路由器丟棄。可見擁塞引起的重傳並不會緩解網絡的擁塞,反而會加劇網絡的擁塞。

擁塞控制與流量控制的關係密切,它們之間也存在着一些差別。所謂擁塞控制就是防止過多的數據注入到網絡中,這樣可以使網絡中的路由器或鏈路不致過載。擁塞控制所要做的都有一個前提,就是網絡能夠承受現有的網絡負荷。擁塞控制是一個全局性的過程,涉及到所有的主機、路由器,以及與降低網絡傳輸性能有關的所有因素。TCP連接的端點只要遲遲不能收到對方的確認信息,就猜想在當前網絡中的某處很可能發生了擁塞,但這時卻無法知道擁塞到底發生在網絡的何處,也無法知道發生擁塞的具體原因(某個服務器通信量過大?某個地區出現災害?)。流量控制往往是指點對點通信量的控制,是個端到端的問題(接收端控制發送端)。流量控制所要做的就是抑制發送端發送數據的速率,以便使接收端來得及接收。

舉兩個例子說明這種區別。假設某個網絡的鏈路傳輸速率爲1000Gbit/s,有一臺計算機向一臺個人電腦以1Gbit/s的速率傳送文件。顯然,網絡本身的帶寬是足夠大的,因而不存在產生擁塞的問題。但流量控制卻是必須的,因爲計算機必須經常停下來,以便個人電腦來得及接收。再假設有另一個網絡,其鏈路傳輸速率爲1Mbit/s,有1000臺計算機連接在這個網絡上。假定其中的500臺計算機分別向其餘的500臺計算機以100Kbit/s的速率發送文件。那麼現在的問題就不是接收端的計算機能否來得及接收,而是整個網絡的輸入負載是否超過網絡所能承受的。

進行擁塞控制需要付出代價。首先需要獲得網絡內部流量分佈的信息。在實施擁塞控制時,還需要在結點之間交換信息和各種命令,以便選擇控制的策略和實施控制。這樣就產生了額外開銷。擁塞控制有時需要將一些資源分配給個別用戶單獨使用,這樣就使得網絡資源不能更好的實現共享。

下圖中橫座標是提供的負載,代表單位時間內輸入給網絡的分組數目。因此提供的負載也稱爲輸入負載或網絡負載。縱座標是吞吐量,代表單位時間內從網絡輸出的分組數目。具有理想擁塞控制的網絡,在吞吐量飽和之前,網絡吞吐量應等於提供的負載,故吞吐量曲線是45°的斜線。但當提供的負載超過某一限度時,由於網絡資源受限,吞吐量不再增長而保持爲水平線,即吞吐量達到飽和。這就表明提供的負載中有一部分損失掉了(被某個結點丟棄)。雖然如此,在這種理想的擁塞控制作用下,網絡的吞吐量仍維持在其所能達到的最大值。

但是,實際網絡的情況就很不相同了。觀察上圖,隨着提供的負載的增大,網絡吞吐量的增長速率逐漸減小。也就是說,在網絡吞吐量還未達到飽和時,就已經有一部分的輸入分組被丟棄了。當網絡的吞吐量明顯的小於理想的吞吐量時,網絡就進入了輕度擁塞的狀態。當提供的負載達到某一數值時,網絡的吞吐量反而隨提供的負載的增大而下降,這時網絡就進入了擁塞狀態。當提供的負載繼續增大到某一數值時,網絡的吞吐量就下降到零,網絡已無法工作,這就是所謂的死鎖。

由於計算機網絡是一個很複雜的系統,因此可以從控制理論的角度來看擁塞控制這個問題。從大的方面看,可以分爲開環控制和閉環控制兩種方法。開環控制就是在設計網絡時,事先將有關發生擁塞的因素考慮到,力求網絡在工作時不產生擁塞。但一旦整個系統運行起來,就不再中途進行改正了。閉環控制是基於反饋環路的概念,主要有以下幾種措施:
(1)監測網絡系統以便檢測到擁塞在何時、何處發生
(2)把擁塞發生的信息傳送到可採取行動的地方
(3)調整網絡系統的運行以便解決出現的問題

有很多的方法可用來監測網絡的擁塞。主要的一些指標是:

  • 由於缺少緩存空間而被丟棄的分組的百分數
  • 平均隊列長度
  • 超時重傳的分組數
  • 平均分組時延
  • 分組時延的標準差

一般在監測到擁塞發生時,要將擁塞發生的信息傳送到產生分組的源站。當然,通知擁塞發生的分組同樣會使網絡更加擁塞。另一種方法是在路由器轉發的分組中保留一個比特或字段,用該比特或字段的值表示網絡沒有擁塞或產生了擁塞。也可以由一些主機或路由器週期性的發出探測分組,以詢問擁塞是否發生。此外,過於頻繁的採取行動以緩和網絡的擁塞,會使系統產生不穩定的振盪。但過於遲緩的採取行動又不具有任何實用價值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章