企業網D1Net 10月22日 數據中心應用的不斷增加和用戶數量的迅速增長,使得數據中心正面臨著一個嚴重的性能問題,而其中尤為嚴重的現象就是網絡擁塞。當網絡中存在過多的數據包時,性能就會下降,這種現象稱為擁塞。擁塞是一種持續過載的網絡狀態,此時用戶對網絡資源的需求超過了固有的容量。近些年隨著云計算、大數據、搜索技術本身要消耗大量的網絡帶寬,所以在數據中心里網絡擁塞現象時有發生。
網絡擁塞對數據中心帶來的危害有幾點:一是導致包丟包率增加,端到端的延遲增長。如果是交換機設備,由于緩存較小,擁塞出現時將會進行報文丟棄。而很多業務都是TCP連接,出現丟包后將會引起重傳,反而更加加重了擁塞的狀況。如果是路由器設備,緩沖隊列長度增加,分組等待排隊輸出的時間變長,進而導致延遲的增加。在這種情況下,對業務的影響是顯而易見的。輕者訪問應用緩慢、掉線,嚴重者則長時間無法訪問,用戶的體驗感大大下降。我們平時上網時,在打開一個網頁頁面時,時有打不開或者鏈接彈出緩慢的情況,多半是網絡擁塞所致。二是導致資源利用率降低,無效利用率增加。擁塞發生后,網絡設備通往鏈路的分組報文都被丟棄,造成這些鏈路得不到充分利用,降低了資源的有效利用率。三是導致擁塞崩潰的發生,這是最嚴重的后果,當網絡處于擁塞崩潰狀態時,微小的負載增量都將使網絡的有效吞吐量急劇下降,此時的數據中心網絡無任何有效的數據傳輸。出現這種情況的可能是維護路由鄰居狀態、環網狀態的報文被丟棄,引發了路由震蕩長時間無法收斂,環網阻塞點放開,形成二層環路,導致整個網絡處于無序狀態,整個數據中心陷入癱瘓之中。可見網絡擁塞的問題應該引起高度重視,當數據中心時有發生擁塞情況時,就應該及時排查,消除隱患,以免造成系統癱瘓。
既然網絡擁塞問題影響如此嚴重,就沒有什么辦法緩解嗎?網絡擁塞控制技術就是為了解決數據中心網絡出現擁塞時的問題。擁塞控制技術也有很多,在此僅從實現機理上做以闡述。打個形象的比喻,國家若遇到了洪澇災害,江河漲水,江河附近的城市與村莊就面臨被淹的危險,那么接下來國家會做什么呢?一定是抓緊時間將沿途的堤壩加固、修高,同時在上游關閘,減少洪水向下游沖擊。在下游開渠引流,進行泄洪。其實對于網絡擁塞,也是這樣的一些技術。通過在網絡入口進行限速(LR或CAR),同時啟動優先級調度,將不重要的業務進行丟棄,保證在網絡擁塞時高優先級的業務得到傳輸。增加網絡帶寬,將原來的千兆端口換為萬兆,將單端口換為聚合端口,將路由切換為等價路由,這樣就可以大大提升網絡帶寬。在端口上開啟流控功能,當端口發生擁塞時,可以進行反壓,通知流量的入端口,這樣入端口將報文進行緩存,當流量實在太大,緩存不了時,再進行丟棄。這樣可以提升網絡設備的緩存能力,就可以增加對網絡擁塞的防御。這樣看這些網絡擁塞機制和生活中處理洪澇災害、交通擁塞都是一樣的。不管擁塞控制技術如何發展,根本點都是如上描述的幾條,再好的控制技術也只不過是將上面的方法做精做細而已。當我們看到一些晦澀難懂的擁塞控制技術概念時,令牌桶是做什么用的,FLOW-CONTROL 會什么特征,GTS只能基于隊列限速嗎?要把這些概念都當成是解決擁塞的工具而已,然后遵循著上面的說明機理就不難理解了,令牌桶就像我們車輛限行時的交警,滯留車輛多了就讓后面的車輛多等等,少了就讓更多的車輛行駛通過。FLOW-CONTROL就通告擁塞的消息,以便網絡設備知道哪里有了擁塞,怎么處理。GTS是基于某一特征流量進行限速的技術,我們對車輛進行分類,救護車,救火車可以優先過,對別的車輛限行,在網絡世界里GTS就可以做到。
顯然以上提到的這些技術都是在擁塞發生后起作用的,俗話說“一份預防抵得上十分治療”,在數據中心網絡中應該努力通過各種方法來避免或減少網絡擁塞情況的發生。首先合理設計網絡拓撲結構,對于某些重要節點,設計成網狀拓撲,增加冗余度。數據中心承載的應用業務要做精細劃分,避免過于集中于某些局部網絡環境中,均勻分布。其次合理設計網絡設備緩沖區大小,網絡擁塞并不是一個長時間持續的,是階段性的,具有突發性的特點,適當地提升網絡設備的緩存就可以減少擁塞。對于長時間的擁塞,比如淘寶網,在每年的雙11都會迎來流量的噴井,而平時流量是比較均勻平穩的,這就需要在雙11期間增加網絡帶寬,啟用備份設備,單純靠增加網絡設備緩存是無濟于事的。再次增加負載均衡設備,將突發流量引到負載均衡設備上進行整形,減少突發流量對網絡設備的沖擊,讓網絡設備接收到的流量都是平穩、均勻的。
網絡擁塞問題的產生主要原因是網絡帶寬不足,網絡處理能力不夠造成的。還有存儲空間、服務器性能限制也會造成網絡的擁塞,這些都是現實情況,無法改變,網絡的帶寬和處理能力并不能無限制地增加,所以網絡擁塞是不可避免的,我們通過各種各樣的技術手段無非是希望將擁塞發生的概率最小化,未來的網絡擁塞控制技術會越來越多,更加精細和多樣,什么RED算法、PI算法、AVQ算法、AQM-REM算法等等,在網絡擁塞時,通過這些算法來決策丟包的選擇,諸多的算法讓人看得眼花繚亂,但這些算法歸根結底都肯定會遵循一條:就是想辦法按照數據中心的意圖去丟包,其遵循的基本原理不會改變,就和我們生活中解決交通擁塞、洪澇災害是一樣的。