端木占軍
廣域網中擁塞控制方法
端木占軍
計算機網絡吞吐量將隨輸入負荷的增大而下降,造成擁塞。本文提出的解決方案,可以有效進行控制,網絡不易出現擁塞現象和死鎖。
擁塞 死鎖 結點緩存 擁塞控制機制
計算機網絡中的網絡資源包括鏈路容量(即帶寬)、交換結點中的緩存和處理機速度。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的范圍,網絡的性能就要變壞,這種情況就叫做擁塞(congestion)。網絡擁塞往往是由許多因素引起的,如帶寬、結點緩存的容量、結點處理機的速度,及包的生存時間等。TCP擁塞控制機制包括慢啟動(slow start)、擁塞避免、快速重傳(fast retransmit)、快速恢復(fast recovery)、選擇性應答(SACK)等。通過在終端上對網絡的擁塞情況作出適當的調整,可以大大提高網絡傳輸的性能,減少擁塞發生的可能性。

圖一 網絡中擁塞控制的作用
在一個源IP主機和一個目標IP主機之間(單播)或者一個源IP主機和網絡中所有的IP主機之間(廣播)進行的。現在要將信息發送給網絡中的多個而非所有IP主機,如果采用傳統的IP通信技術就有兩種方法可以選擇:要么采用廣播方式,要么由源IP主機分別向網絡中的多個目標IP主機單播發送IP包。廣播方式不僅會將信息發送給不需要的IP主機而浪費帶寬,也可能由于路由回環引起一場嚴重的廣播風暴。單播方式由于IP包的重復發送而白白浪費掉大量帶寬,同時也增加了服務器的負載。傳統網絡設備采用被動隊列管理PQM來管理網絡中間節點數據包的排隊,它采用FIFO的Drop-tail丟包策略,僅在輸入溢出時進行丟包,這種方式容易產生鎖外、滿列、全局同步等問題,可見傳統的IP通信技術不能有效地解決單點發送多點接收的問題。
3.2 圖一橫坐標是提供的負載(offered load),代表單位時間內輸入給網絡的分組數目,因此,提供的負載也稱為輸入負載或網絡負載。縱坐標是吞吐量(throughput),代表單位時間內從網絡輸出的分組數目。具有理想擁塞控制的網絡,在吞吐量飽和之前,網絡吞吐量應等于提供的負載,故吞吐量曲線是45°的斜線。但當提供的負載超過某一限度時,由于網絡資源受限,吞吐量不再增長而保持為水平線,即吞吐量達到飽和,這就表明提供的負載中有一部分損失掉了(例如,輸入到網絡的某些分組被某個結點丟棄了)。死鎖(deadlock)。圖一顯示隨著提供的負載的增大,網絡吞吐量的增長速率逐漸減小。也就是說,在網絡吞吐量還未達到飽和時,就已經有一部分的輸入分組被丟棄了。當網絡的吞吐量明顯地小于理想的吞吐量時,網絡就進入了輕度擁塞的狀態。更值得注意的是,當輸入負載達到某一數值時,網絡的吞吐量反而隨提供的負載的增大而下降,這時網絡就進入了擁塞狀態。當輸入的負載繼續增大到某一數值時,網絡的吞吐量就下降到零,網絡已無法工作。
3.3 使用擁塞控制算法。TCP是目前在互聯網中使用最廣泛的傳輸協議。廣義的來講,TCP擁塞控制的概念是每個源端判斷當前網絡中有多少可用容量,從而知道它可以安全完成傳送的分組數。一旦某個源端有這么多分組在傳送,它用確認(ACK)信號的到達表明它有一個分組已經離開網絡,因而它不需要增加擁塞級別就可以安全地向網絡中發送一個新的分組,通過使用確認信息來協調分組的傳送,TCP稱為自同步(self-clocking)的。
3.4 目前TCP使用丟包作為隱式的擁塞指示信號,即發送方檢測到重復的ACK或者重傳超時的時候認為發生擁塞,這種機制在用于檢測擁塞時開銷較大,需要等待較長的周期才能發現擁塞,降低了擁塞控制的效率。為此,顯示擁塞通告算法ECN可以減少由于不比要的丟包產生的延時,其主要思想是通過路由器對擁塞的判斷,顯示的設置擁塞標記,發送端主機通過網絡中返回的帶擁塞反饋標記的包發現擁塞。
3.5 新的互聯網擁塞控制機制XCP。XCP(eXplicit Control Protocol)事實上是對ECN機制的一種擴充,它的主要思想是充分利用網絡中間節點對鏈路帶寬的認知,為端到端擁塞控制機制提供比是否發生擁塞更多和更有效的網絡帶寬提示,從而使控制機制能夠更快的適應當前的網絡狀況。
3.6 TCP中使用的擁塞控制算法已經成為保證目前互聯網穩定性的重要因素。
在擁塞控制時付出的代價就是:當輸入的負載較小時,有實際擁塞控制的吞吐量反而比無擁塞控制時要小。