趙鶴群
(海軍91550部隊,遼寧 大連 116023)
信息時代之下,整個社會對于互聯網的依賴程度都在增加,對應的眾多數據瘋狂涌入,更多數據格式層出不窮,給網絡傳輸帶來了極大的挑戰。傳統的 FTP、HTTP等數據格式飛升的同時,多媒體數據流成為網絡環境中的新型突出特征,同時對于數據傳輸的實時性需求不降反升,諸多方面的特點,使得網絡中間路由節點的壓力大大提升,網絡擁塞隨之成為影響網絡環境正常工作的一個重要表征。曾經Internet提供的“best-offer”服務機制在這樣的需求環境下表現為以較低的服務質量來實現持續的服務供給,這無疑無法滿足網絡用戶的需求,因此實現有效的擁塞控制,是標志著當前網絡工作質量的重要環節。
在展開對于擁塞控制分析之前,首先要確定一個標準,即達到何種水平的網絡傳輸環境,是用戶可以接受的,這就引入可信網絡的概念。所謂可信網絡(Trustworthy Network),是指網絡和用戶的行為及其結果總是可預期與可管理的,能夠做到行為狀態可監測、行為結果可評估、異常行為可管理。可信網絡的根本,在于實現網絡環境從用戶一直到網絡內核各個層面的可控性,通過這種可控來實現對全網的調節,達到用戶體驗以及資源利用等諸多方面的最優。
當前對于可信網絡的研究,多集中于可信計算的領域之上,但是對于IP QoS框架結構的研究也已經得到重視。一個比較典型的可信網絡IP QoS框架通常考慮保持對網絡主干部分簡化的態度展開組網,并且進一步將復雜特征疊加到網絡邊界環境上。這種網絡能夠支持更多的擴展需求,并且可以采用聚合機制將已經確定的業務流依據對應的安全 QoS要求進行聚合,面向對應的聚合簇提供服務。在此種網絡框架之下,邊界路由器(ER,Edge Router)負責依據安全QoS需求策略對業務流進行分類和聚合,形成層業務流簇,而每個業務流簇則對應一個區分服務碼點(DSCP,Differentiated Services Code Point),與 ER相對的網絡核心路由器(CR,Core Router)負責實現分組轉發,依據不同 DSCP提供不同轉發,有效保證每類業務流的服務質量。
進一步考察關于擁塞控制的相關思路。當網絡環境中對于某一資源的需求大于供給的時候,網絡的整體性能就會受到限制,這其中,網絡資源不僅包括鏈路容量以及節點緩存,還包括網絡環境中的其他計算能力,尤其是當前云環境之下,對于各種資源都應當加以考慮。擁塞的直接后果,多表現為分組丟失率的增加,以及數據傳輸時延的的增加,嚴重的時候甚至會造成局部網絡環境崩潰[1-2]。對于擁塞的控制,當前諸多方案可以劃分為兩種策略態度,即擁塞避免和擁塞恢復,其中前者著重于事前預防,而后者則注重如何將網絡從擁塞狀態中拯救出來。當前常見的兩種控制方式,即基于中間節點的擁塞控制,以及TCP擁塞控制,就分別對應于兩種控制策略,在實際工作中均有廣泛應用。而對于擁塞控制算法的評價標準,則主要從吞吐量、丟包率、端對端時延以及時延抖動等幾個方面展開。除了這幾個用于衡量數據傳輸服務水平的衡量依據以外,擁塞本身是整個網絡環境的一種狀態,因此在評價對應的控制算法的時候,也不能單純考察傳輸狀態,而忽視網絡整體性能。對于系統化的網絡評價,通常會考慮用資源分配效率和分配公平性兩個參數予以描述。
隊列管理是實現擁塞控制的重要手段,其核心是在路由器展開動態跟蹤網絡的時候,依據數據傳輸狀況對擁塞的發生進行預測,對于即將發生擁塞的點以一定概率對即將達到的數據包進行處理,從而確保該點的負荷保持合理。具體而言,路由器的隊列管理需要兼顧三個層面的目標。其中最根本的就是實現隊列管理本身,要求能夠維持合理的隊列長度,從而降低排隊時延和抖動的發生。其次,注意公平的實現,對于鏈路環境中響應流與非響應流、TCP友好流、脆弱流等多方面需求實現平衡,促進鏈路帶寬實現合理利用。最后,隊列管理還要求能夠有效實現與TCP擁塞控制策略配合,實現擁塞控制整體效用的最大化。
在隊列管理領域中,可以分為主動隊列管理(AQM,Active Queue Management)和被動隊列管理(PQM,Passive Queue Management)兩種思路。其中PQM相對而言比較傳統,即為每個隊列設定一個限值,超過部分會被直接丟棄,形成“去尾”算法。這種算法本身存在諸多缺陷,不能避免隊列被少數幾個非相應流占據,或者多數據流共存于隊列中并且造成惡意競爭等情況,都會因為此種算法的引入而產生。除此以外,全局同步也是不容忽視的重要弊端。針對PQM的諸多弊端,AQM做出了必要調整,其在隊列緩存空間被占滿之前提前做出判斷,來確定數據包的丟棄,能夠有效避免端對端的時延發生,全局同步問題也得到改善。在目前的網絡環境中,AQM算法相對而言有著更強的生命力,相關算法的研究也層出不窮,成為控制擁塞的重要手段。具體而言,有如下幾種算法在目前網絡環境中均較為常見:
(1)RED算法
此種算法的實現思路,是對每個端口上的隊列長度進行探測,從而實現對于擁塞情況的判斷,當隊列長度超過預先設定值的時候,數據包會被按照一定概率丟棄,確保源端在隊列溢出之前就可以對發送速率實現控制,從而緩解擁塞問題。具體而言,RED算法包括兩個任務,其一在于實現對于分組平均隊列長度的計算,用以實現對于網絡擁塞的預測;其二則是確定數據包丟棄概率值,對擁塞實現控制。
在平均隊列長度的計算方面,考慮到網絡環境中的數據發送具有一定的隨機性特征,因此可能會發生隊列在極短時間內即會超出限值,當然也存在在極短時間內隊列清空的狀況,但是此類狀況都不足以判定為擁塞[3]。因此RED算法在計算平均隊列長度的時候,會增加低通濾波器加權值來對其長度進行確定。如果用avg_q來代表平均隊列長度,則有如式(1)。

式(1)中,w表示權重常數,采樣測量時的隊列長度為 q。此種算法不會因為網絡數據的突發而對計算結果產生顯著影響,是一種對于短期隊列長度變化的“平滑”算法。這種著眼于長期擁塞狀況的算法,使得RED可以有效實現網絡環境整體吞吐量的提升,減小時延以及時延抖動問題。
在數據包的丟棄率方面,路由器會依據平均隊列長度進行判斷并且實現最終確定。RED算法體系為隊列長度設定兩個限制,即min_th以及max_th,當有新的分組送達隊列端口的時候,首先計算出平均隊列長度,當avg_q 在式(2)中,有: 如此建立起來的 RED算法體系有效避免了去尾算法的弊端,從整個網絡環境的角度提升其吞吐量,并且對于端對端的時延展開了有效控制,具有良好的應對突發數據流處理能力。但是此種算法無視網絡環境中不同數據流之間的差異,對于響應流以及非響應流等保持無差別態度,因此并不能做到完全公平。除此以外,RED算法的參數控制成為其能否有效實現的關鍵,直接關系到網絡吞吐量以及丟包率的確定。正因為如此,在動態的網絡環境之下,RED算法會表現的不夠穩定。 (2)RIO算法 在RED算法體系之下,將諸多數據流一視同仁的做法成為其一個關鍵弊端,針對此種問題,RIO算法提出了具有區分服務功能的算法,可以作為RED算法的改進予以對待。從本質上看,RIO算法是帶有In/Put位的RED算法改進,它依據到達路由器的分組速率以及其預約速率的對比結果展開進一步的決策,由于不需要維護路由上每個流的狀態,因此并不會為路由器帶來額外負擔。當分組到達速率大于預約速率,則將該數據包記為Out包,反正則記為In包,在發生擁塞的時候,對Out包采取比In包更高的丟棄率,來實現對于In包的保護。 RIO算法引入兩組參數來實現對于 In包以及Out包的區分對待,即(min_in,max_in,p_max_in),以及(min_out,max_out,p_max_out)。其計算邏輯為,當 In分組到達路由的時候,首先計算出 In分組的平均隊列長度avg_in,如果有avg_in RIO算法能夠很好地支持區分服務這一功能,并且減輕了路由器維護信息流的負擔,同時對于全局同步問題也能實現良好避免。但是相對于RED算法而言,RIO中的參數較多,QoS不可避免地會受到一定的影響[4]。在拓撲結構不斷變化的網絡環境中,單一的RIO參數必然無法滿足所有網絡微觀環境,因此會增加對應的運算開銷。 (3)CHOKe算法 網絡環境中,路由器采用 best-effort的方式提供服務,就必然會對包括UDP等在內的非響應流有所忽視,這些流本身并沒有端對端的擁塞避免機制,因此提出CHOKe算法,這從根本上看是對于RED算法在無狀態主動隊列管理方面的改進。 CHOKe算法的目標在于通過對擁塞鏈路中惡意流展開控制,而實現全網公平性的提升。當某分組到達路由端口的時候,CHOKe會將該數據包與FIFO緩沖隊列中的其他分組進行隨機的抽樣對比,如果二者屬于同類數據流,則兩個分組都會被丟棄;如果它們屬于不同數據流,則剛到達的分組會按照RED算法展開進一步的處理。此種做法對于發現網絡環境中的海量惡意數據攻擊十分有效[5-6]。實際工作中,有時候為了進一步提升算法的公平性,會考慮將抽樣對比的過程延長,即對新到達的數據包展開多次對比,不會因此某一次的偶然事件就將某個分組丟棄,也不會因為某次未能檢出就對其放行。多次對比雖然在時間上略有讓步,但是對于擁塞水平和安全水平的提升都有正面價值,并且可以提升CHOKe算法的公平性,對于優化網絡環境也有積極意義。 CHOKe算法的實現比較簡單,屬于一種無狀態算法,并沒有復雜的數據結構,在參數方面也與RED保持一致,并且不需要記錄每個流的相關信息,因此其網絡開銷很小,整體效率表現良好[7]。然而雖然 CHOKe算法能夠在一定程度上提升公平屬性,卻無法保證絕對公平,其非公平特征主要是考慮到對非適應流的懲罰力度不夠,精確程度比較有限[8]。 擁塞算法對于保持網絡環境服務水平而言意義重大,成為當前該領域學者共同關注的焦點問題之一。隨著網絡環境中運算能力的不斷提升,相關算法也層出不窮,在算法效率不斷攀升的同時也為網絡提供更穩定的支持[9-10]。未來的發展方向,仍然是在堅持主動隊列管理態度的基礎之上,不斷提出新的算法,其中諸如ECHOKe等,都成為未來發展的重要代表,為網絡環境提供著有力的運行保證。 [1] 章淼, 吳建平. 互聯網端到端擁塞控制研究綜述[J]. 軟件學報, 2002, 13(3): 354-363. [2] 曲延光, 劉云超. Internet 主動隊列管理算法研究[J]. 計算機應用, 2003, 23(10): 36-38. [3] 王會靈, 桂志波. TCP/IP網絡的擁塞控制綜述[J]. 廣東通信技術, 2005, 25(9): 17-20. [4] 楊威. 可信網絡中的擁塞控制策略研究[D]. 南京郵電大學. 2011. [5] Bernet Y, Blake S, Grossman D. An informal management model for diffserv routers[EB/OL], 2000-07. [6] 互聯網擁塞控制算法若干問題研究[D]. 錢艷平. 東南大學2006. [7] Behavior analysis of TCP Linux variants[J]. C. Callegari,S.Giordano, M. Pagano,T. Pepe. Computer Networks. 2011(1). [8] 網絡擁塞控制算法的研究[D]. 呂娜.中國石油大學 2008. [9] 陳金超, 謝東亮. 無線網絡TCP擁塞控制算法研究綜述[J].軟件, 2015, 36(1): 82-87. [10] 劉妮, 王波. 組播擁塞控制的研究(英文)[J]. 軟件, 2013,34(2): 171-174.


3 結論