李 赟,嚴(yán) 苑, 鄒 剛,鄭曉明
(廣西壯族自治區(qū)水利廳,廣西 南寧 530023)
響應(yīng)(Responsive)和非響應(yīng)(Unresponsive)流在網(wǎng)絡(luò)中的共存,使得網(wǎng)絡(luò)的公平性出現(xiàn)了危機,如果對網(wǎng)絡(luò)中的流不加限制會使得以 UDP 為代表的非響應(yīng)流占據(jù)整個帶寬,使網(wǎng)絡(luò)出現(xiàn)擁塞,而以 TCP 為代表的響應(yīng)流,以及 TCP 友好流如 DCCP,SCTP 等,由于其對擁塞的檢測并對發(fā)送端發(fā)送速率的控制,使其傳輸不能在擁塞狀態(tài)下正常進(jìn)行。
網(wǎng)絡(luò)公平的取得既可通過端到端的擁塞控制機制,也可以通過路由器采用的擁塞控制機制(AQM),以及采用分布式算法的方式。為了提高廣域網(wǎng)的性能,不少針對網(wǎng)絡(luò)公平性的精典算法已經(jīng)被實現(xiàn)在網(wǎng)絡(luò)產(chǎn)品中。如果能將其用于局域網(wǎng)的配置中,網(wǎng)絡(luò)的穩(wěn)定性將會得到提升。
廣西水利廳的網(wǎng)絡(luò)包括大樓內(nèi)的局域網(wǎng)及租用的專線上接水利部,下接各地市,并且有 30 M 的帶寬接到 Internet。對于廣域網(wǎng)的這部分線路平時運行于其上的應(yīng)用不多,出現(xiàn)故障的機率比較小,而且故障一般由服務(wù)供應(yīng)商解決。目前出現(xiàn)問題比較頻繁的主要是從用戶到 Internet 的網(wǎng)絡(luò),這段網(wǎng)絡(luò)關(guān)系到用戶從內(nèi)網(wǎng)訪問外網(wǎng)、從外網(wǎng)訪問內(nèi)網(wǎng)服務(wù)器的流暢性,如果遇到病毒或者是惡意干擾(大量產(chǎn)生向網(wǎng)絡(luò)出口的非響應(yīng)流),以及其它一些應(yīng)用程序的大量上傳下載行為,輕則網(wǎng)絡(luò)不通暢,重則出現(xiàn)網(wǎng)絡(luò)斷斷續(xù)續(xù),甚至無法通過 Telnet 登錄交換機設(shè)備排查問題,該問題的造成跟網(wǎng)絡(luò)的設(shè)備和拓?fù)浣Y(jié)構(gòu)有一定的關(guān)系。高性能的設(shè)備及合理的拓?fù)浣Y(jié)構(gòu)能夠增強網(wǎng)絡(luò)的穩(wěn)定性,但是在目前網(wǎng)絡(luò)設(shè)備及結(jié)構(gòu)不能變更的情況下,通過交換機本身自帶的公平性算法,可以增強網(wǎng)絡(luò)的穩(wěn)定性以保障防汛抗旱業(yè)務(wù)更好地開展。
對網(wǎng)絡(luò)公平的定義,現(xiàn)今廣泛使用的是最大最小化公平法則(Max-Min fairness),它定義了在競爭的流之間如何來分配資源[1]。定義描述如下,假設(shè)有網(wǎng)絡(luò) G = (N, A),存在若干會話 P,有Fa=rp是分配給會話 p 的帶寬,如果有帶寬分配向量 r = { rp| p∈Ρ } 滿足條件 rp≥0,p∈Ρ 且 Fa≤ Ca,a∈A,其中 N 表示總結(jié)點數(shù),A是總鏈路數(shù),F(xiàn)a是分配給所有會話的帶寬, Ca是鏈路 a 的總帶寬, 向量 r 在帶寬分配中則是可行的;在保證 r 可行性的同時,對于每 1 個 p∈Ρ,rp已經(jīng)達(dá)到最大值,且 rp再增加會導(dǎo)致 rp′ 的減少,其中 rp′<rp,p′∈Ρ。則由向量 r 所表示的帶寬分配被稱為最大最小化公平。簡單的說就是先滿足需求小于平均份額的客戶,對于剩下的客戶平分剩余帶寬,但每個客戶所得帶寬不大于自己所需。
以上的公平性定義是理想的狀態(tài),在現(xiàn)有的設(shè)備中很難針對每個用戶達(dá)到這種狀態(tài),在這里,將網(wǎng)絡(luò)分成幾個部分,如果每個部分在訪問某一節(jié)點時在擁塞狀態(tài)下能至少獲得一定的最小帶寬,在非擁塞狀態(tài)下能夠充分利用帶寬,則認(rèn)為這部分網(wǎng)絡(luò)是公平的。
TCP 協(xié)議是通過對端點的滑動窗口的控制來實現(xiàn)的[2],即加性增加乘性減少(AIMD)。當(dāng)然,不同的 TCP 種類中,控制的方式也不一樣。在 TCP reno 中,端點一旦收到 3 次重復(fù)的 ACKs,即將其滑動窗口的 ssthresh 減半,進(jìn)入快速恢復(fù)過程,如果出現(xiàn) ACK 超時則進(jìn)入慢速啟動過程。慢速啟動過程是將窗口值 Cwnd 從 1 或是 2 開始每個 RTT 倍增其Cwnd 值,一直到 ssthresh 這個值為止,而后 Cwnd 伴隨著每個 RTT 進(jìn)入線性增加狀態(tài)。而 TCP tahoe 則無論收到重復(fù)的 ACKs 或是 ACK 超時都會進(jìn)入慢速啟動過程。TCP vegas 是通過 RTT 的延時來控指其滑動窗口,因此它對網(wǎng)絡(luò)擁塞非常敏感。
TCP 友好協(xié)議大多用于傳輸多媒體流,例如SCTP。TCP 友好流可用 S.floyd 提出的式 (1) 區(qū)分[3]。假設(shè) B 為分組的字節(jié)大小,R 為 1 個較穩(wěn)定的往返時間,P 為丟包率,如果某一流到達(dá)路由器的速率不滿足公式約束,則
該流為非響應(yīng)流,但是如果分組字節(jié)的大小或是往返的最大時限不確定,就無法用該公式計算。
端點所使用的協(xié)議不可能被統(tǒng)一的人為限制,在面向非連接,數(shù)據(jù)傳輸對可靠性要求不高的網(wǎng)絡(luò)應(yīng)用中,例如聲音的實時傳播,UDP 類的非響應(yīng)流在網(wǎng)絡(luò)中占有很大比重。所以端到端的擁塞控制機制很難解決公平性問題。即使是不同種類的 TCP 之間,由于其對擁塞的反應(yīng)靈敏度不同,采取的流量控制策略不一樣,在帶寬競爭當(dāng)中,如使用 TCP reno 的端點就會比使用 TCP vegas 的端點獲得更高的帶寬。
2.2.1 單隊列的管理算法
RED (random early detectoin),作為單隊列管理算法的典型代表,是由 S. Floyd and V. 提出的[4]。它是通過預(yù)測擁塞的到來,提前丟棄數(shù)據(jù)包,將隊列保持在一定長度范圍內(nèi)的方法來達(dá)到擁塞避免。擁塞時簡單的 tail-drop 會導(dǎo)致鎖定 (lock-out),全局同步 (global sychronization) 和很高的延時。根據(jù)Hashems 的研究,RED 考慮到整個隊列中流量的分布,它的性能比簡單的尾部或是隨機丟棄要好。
RED 算法規(guī)定了 1 個固定的最小閥值, 1 個最大閥值,最大丟包概率 Pmax,權(quán)重 Wq,它以下列公式計算平均隊列長度:q =(1-Wq) q +Wqq,q為當(dāng)前的隊列長度。 當(dāng) q 超過了最小閥值且小于最大閥值,它就以概率 Ρ 標(biāo)記或丟棄數(shù)據(jù)包,Ρ 為 q 與最小閥值和最大閥值的差值的比值。當(dāng) q 增長到大于最大閥值,所有的包將被丟棄或標(biāo)記。
單隊列的管理算法在嚴(yán)重的擁塞狀態(tài)下,效果不佳。好處是由于其算法簡單,對設(shè)備的性能要求不高,易于實現(xiàn)。
2.2.2 多隊列的調(diào)度算法
多隊列的調(diào)度算法在于如何調(diào)度讓不同的會話進(jìn)入有限的隊列,以及如何將其調(diào)出隊列共享出口帶寬,這里簡單介紹一下基于輪循的算法。
比較典型的輪循算法有 SFQ,DRR 和 WRR 等,SFQ 是由 McKinney 在 1991 年提出來的[5],它將各個競爭的流通過隊列進(jìn)行分離。因為內(nèi)存是有限的,所以在內(nèi)存中所能建的隊列也有限,SFQ 通過對源、目的地址的散列函數(shù)入隊,隊列以 FCFS 的方式進(jìn)出,最后再以輪循的方式各個隊列輪流出隊。這使得入隊的時間復(fù)雜度達(dá)到了 0 (1)。一些算法往往比此復(fù)雜,例如 FQ。如果入隊的所有數(shù)據(jù)包大小一樣,SFQ 是最大最小化公平的。DRR (Deficit round robin) 考慮到了出隊時各個數(shù)據(jù)包的大小[6],在輪循時只有符合條件的隊列上的包才能出隊,因此 DRR 可以達(dá)到近似的最大最小化公平。
WRR (Weighted round robin) 解決了多優(yōu)先級定長幀的公平性問題[7],例如在 ATM 網(wǎng)絡(luò)中。每個隊列可設(shè)定固定分配服務(wù)的次數(shù) c,因為數(shù)據(jù)包定長,c/n 則為該隊列分配最小帶寬的百分比,其中 n 為總的分配服務(wù)次數(shù)。4 隊列 WRR 的工作原理如圖 1 所示,圖中假設(shè)其 4 個隊列的權(quán)重分別為 4, 3, 2, 1。
圖1 WRR 調(diào)度算法圖 [8]
首先可根據(jù)不同的規(guī)則劃分優(yōu)先級,例如源、目的地址等。數(shù)據(jù)流根據(jù)優(yōu)先級入隊,后經(jīng) WRR 調(diào)度器從隊列 1 (Q1) 開始循環(huán)調(diào)度出隊。在以太網(wǎng)中,數(shù)據(jù)包是不定長的,所以同 SFQ 一樣影響到其算法的公平性,且在當(dāng)數(shù)據(jù)包爆發(fā)時 (Burst),傳輸延時會大大增加,所以有很多研究對 WRR 做了不同的改進(jìn)。
雖然多隊列的調(diào)度算法可以達(dá)到很好的公平性,甚至是最大最小化公平,例如 FQ。但是它們被實現(xiàn)在單個的路由器中,所以公平是局部的。由于沒有考慮到下個路由器的出口帶寬,以及網(wǎng)絡(luò)的拓樸結(jié)構(gòu),很可能導(dǎo)致某一些流到了下一出口后,由于出口帶寬不足而被限制,從而在當(dāng)前路由算法分配給它的帶寬就多余了。
分布式算法最突出的優(yōu)點是可以在了解整個網(wǎng)絡(luò)基本結(jié)構(gòu)的情況下實現(xiàn)全局公平性。例如 CSFQ,NBP 等。就 NBP 來說[9],它需要知道整個網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),網(wǎng)絡(luò)劃分為進(jìn)口、核心及出口等部分。NBP 只部署在進(jìn)口及出口路由處,出口路由必須要監(jiān)視每個數(shù)據(jù)流以位為單位的速率;進(jìn)口路由執(zhí)行速率控制,它們之間通過 ICMP 包交換信息;進(jìn)口路由先將向前反饋信息發(fā)給出口路由,主要是讓出口路由知道哪個進(jìn)口路由是源,以及讓進(jìn)口路由可監(jiān)測到的 RTT 時間。當(dāng)出口路由一接收到信息就會發(fā)出 1 個向后的反饋信息給進(jìn)口路由,信息包括路由計數(shù),速率等。進(jìn)口路由根據(jù)此信息經(jīng)過計算,執(zhí)行類似 TCP 一樣的速率控制機制,使得網(wǎng)絡(luò)帶寬得到最大的充分利用。
配置中使用的工具: 1)Wireshark 是開源的跨平臺網(wǎng)絡(luò)協(xié)議分析器,其前身是 Ethereal,它提供網(wǎng)絡(luò)數(shù)據(jù)包的圖形化分析與統(tǒng)計功能,是很好的網(wǎng)絡(luò)抓包工具;2)Sniffer pro 同為網(wǎng)絡(luò)協(xié)議分析器,但它提供了數(shù)據(jù)包的發(fā)包功能,可將任意數(shù)據(jù)包向網(wǎng)絡(luò)中發(fā)送,可作網(wǎng)絡(luò)壓力測試用;3)PRTG是在 Windows 平臺下的網(wǎng)絡(luò)流量監(jiān)視器,可通過SNMP 監(jiān)視網(wǎng)絡(luò)接口數(shù)據(jù)流量。
網(wǎng)絡(luò)局部拓?fù)鋱D如圖 2 所示,網(wǎng)絡(luò)的核心交換機是 H3c的S8508,無電口。整個網(wǎng)絡(luò)劃分為若干Vlan,基本按樓層劃分,以靜態(tài)路由為主,小部分采用 ospf 動態(tài)路由。匯聚層的交換機采用的是 H3c的 S3600 和 S3050 交換機,全部通過光纖接入到核心。網(wǎng)絡(luò)通過租用的線路連接水利部及各地市,其主要用于視頻會議,及防汛抗旱等業(yè)務(wù)數(shù)據(jù)的傳輸。Internet 網(wǎng)是通過高速緩存,及另一連接從路由器 Huawei R2631 進(jìn)出,出口帶寬 30 M,其中接有防火墻和 IPS。
圖2 網(wǎng)絡(luò)局部拓?fù)鋱D
用戶或服務(wù)器從接入交換機到 Internet,需從主機接至接入層的交換機,而后與匯聚層的 S3600 交換機相連,再經(jīng)光纖到核心交換機 S8508,通過光纖到 S3050 交換機 S1,最后經(jīng) R2631 出去。
網(wǎng)絡(luò)接入終端峰值約 500 臺計算機,網(wǎng)絡(luò)應(yīng)用有網(wǎng)頁瀏覽,電子郵件,F(xiàn)TP,軟件下載,以及迅雷為主的多線程的 P2P 等。經(jīng)過 Wireshark 對該網(wǎng)絡(luò)的統(tǒng)計,通常 UDP 流量大于 TCP 流量,某些時段 UDP 能占到 70 % 以上,其它協(xié)議包占約 2 %。通過 PRTG 的監(jiān)測,核心交換機上的端口流量一般在40 M 以內(nèi)。交換機 S1 的 E1 口流量在 30 M 以內(nèi)。
現(xiàn)以問題較多的從用戶終端到 Internet 為例,目的是提高這一段在擁塞下的性能。當(dāng)數(shù)據(jù)流從交換機 S1 的 E1 端口出時經(jīng)歷了千兆至百兆的過渡,再次到路由器 Internet 的出口時帶寬只有 30 M。所以網(wǎng)絡(luò)中如果出現(xiàn)了高于 100 M的非響應(yīng)流或是非 TCP 友好流通過交換機 S1 的 E1,擁塞是必然的,此時從內(nèi)網(wǎng)的終端防問 Internet,或是從外網(wǎng)訪問服務(wù)器都會受到影響。
測試如下,用軟件 PRTG 通過 SNMP 監(jiān)控 S1 的E1 口,和 S8508 的 E1 口。用軟件 Sniffer pro 在 2 臺終端計算機上以最大速率向 Internet 方向發(fā)送 UDP包,使得 S8508 的 E1 流量大于 100 M,此時 PRTG顯示 S1 的 E1 略小于 100 M。在這樣的情況下,擁塞就產(chǎn)生了,從網(wǎng)絡(luò)內(nèi)任何 1 臺計算機 Ping 路由器R2631,結(jié)果都會顯示網(wǎng)絡(luò)時通時斷,文件上傳速度極慢,網(wǎng)絡(luò)穩(wěn)定性大大下降。
若網(wǎng)絡(luò)能夠以用戶為單位實現(xiàn)絕對公平,例如最大最小化公平,則能使每 1 個用戶公平的感受到最佳性能且讓網(wǎng)絡(luò)獲得極強的穩(wěn)定性。不過由于設(shè)備的限制,如 NBP 似的分布式算法,不但是設(shè)備不支持,而且在此小規(guī)模局域網(wǎng)也沒有必要性。因此若能依賴于路由器和交換機本身的隊列管理或是調(diào)度算法來提高局域網(wǎng)的局部公平性,對網(wǎng)絡(luò)的穩(wěn)定性是有積極作用的。如前所述,重點要解決的問題是交換機 S1 的 E1 端口和出口路由的帶寬分配。 在不能更換原有設(shè)備和無法改變網(wǎng)絡(luò)結(jié)構(gòu)的情況下(R2631E 無法直接接入核心),經(jīng)過對路由器和交換機的配置研究,發(fā)現(xiàn)交換機 S1 的隊列管理支持 SP(絕對優(yōu)先隊列)和 WRR。由于交換機 H3c 的 S3050 只支持 4 隊列的 WRR,隊列數(shù)量很有限,因此比較好的做法是根據(jù) IP 源地址,把網(wǎng)絡(luò)的用戶分成 4 個組,目標(biāo)是讓每個組能獲取最小約 25 % 的帶寬,讓這 4 個組實現(xiàn) WRR 上相對的公平。根據(jù)需要,IP 源地址分組如表1 所示。此分組的目的是為了使以防汛、管理服務(wù)器和其它用戶為源地址的段能夠互不干擾,并能獲得應(yīng)有的最小帶寬。這樣一旦網(wǎng)絡(luò)某部分出現(xiàn)問題,特別是終端用戶部分,不至于干擾到所有的段,利于出現(xiàn)問題時及時從管理口排查和防汛業(yè)務(wù)的開展。
從 Telnet 進(jìn)入 S1 交換機配置如下:
表1 IP 源地址分組
由于出口路由 R2631 上沒有合適的隊列調(diào)度算法,所以在 IPS 設(shè)備上設(shè)定固定的分組帶寬限制。將其限制每用戶最大帶寬 5 M。
將以上配置做好后,在 10.45.11.0/24 屬于組 4網(wǎng)段的 2 臺計算機上,用 Sniffer pro 以最大速率向Internet 方向發(fā)送 UDP 包,此時從 PRTG 的監(jiān)控可看出 S8508 的 E1 口流量大于 100 M,交換機 S1 的E1 口處于擁塞狀態(tài)。從組 4 網(wǎng)段的任一計算機 Ping出口路由 R2631 及 Internet 上一終端,均顯示網(wǎng)絡(luò)時通時斷,再分別從組 1, 2, 3 所在網(wǎng)段的計算機上做同樣的測試,結(jié)果顯示網(wǎng)絡(luò)暢通無阻。接下來測試文件上傳的情況,仍然在此擁塞狀態(tài)下利用 1 臺組 1 與另 1 臺組 4 所在網(wǎng)段的計算機同時上傳郵件附件。在擁塞狀態(tài)下,從 100~140 s,組 1 計算機仍能以 IPS 所限的的速率上傳文件,完成了 21 M 文件的上傳;而組 4 計算機的傳偷速率在非響應(yīng)流的擁塞下接近于 0 kpbs。
假設(shè)這 4 個組的平均數(shù)據(jù)包長基本相等,以上的配置讓 4 個組在通過 S1 的 E1 時各擁有最小約 25 M 的帶寬,H3C 的 WRR 實現(xiàn)的性能不在此討論與測試之列。從該測試的結(jié)果可以看出,擁塞已經(jīng)在各個組之間隔離。
在此配置的網(wǎng)絡(luò)中,實踐證明,通暢性比以前大大增強,當(dāng)其它用戶組網(wǎng)絡(luò)擁塞時,不會影響防汛辦組、管理口和服務(wù)器的正常訪問,有利于問題及時排查。
通過具體分析實現(xiàn)網(wǎng)絡(luò)公平的各種方法,并爭對現(xiàn)有局域網(wǎng)絡(luò),配置了網(wǎng)絡(luò)局部關(guān)鍵點交換機上的隊列調(diào)度算法實現(xiàn)了一定意義上的網(wǎng)絡(luò)不同分組之間的公平,保證了其帶寬。在其它終端用戶問題多發(fā)的網(wǎng)段受到攻擊導(dǎo)致?lián)砣麜r,利于服務(wù)器的正常訪問,重要工作的進(jìn)行及故障的及時排查,對維護(hù)該網(wǎng)絡(luò)的穩(wěn)定性及保障防汛抗旱的展開有著重要的作用。另外,通過對網(wǎng)絡(luò)內(nèi)其它有必要的交換機采用類似的設(shè)置,可以增強網(wǎng)內(nèi)其它局部的公平與穩(wěn)定性。更進(jìn)一步,在今后的網(wǎng)絡(luò)建設(shè)中,還應(yīng)合理優(yōu)化網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),從而避免網(wǎng)絡(luò)瓶頸的產(chǎn)生。
[1]D.Bertsekas, R.Gallager. Data Networks[M]. Prentice-Hall,1987: 18.
[2]J.Kurose;K.Ross. Computer Networking - A Top-Down Approach (4thth ed.) [M]. Addison Wesley, 2007: 56.
[3]S.Floyd, K.Fall. Promoting the Use of End-to-End Congestion Control in the Internet[J]. IEEE/ACM Trans. on Networking,1999, 7 (4): 458-472.
[4]S.Floyd, V.Jacobson. Random early detection gateways for congestion avoidance[J]. Networking, IEEE/ACM Transactions on Volume 1, 1993 (4): 397–413.
[5]P.E.McKenny, Stochastic fairness queuing[J]. Internetworking:Research and Experence, 1991 (2): 113-131.
[6]M.Shreedhar, George Varghese. Efficient fair queueing using deficit round-robin[J]. IEEE/ACM Transactions on Networking (TON), 1996, 4 (3): 375-385.
[7]M.Katevenis, S.Sidiropoulos, C.Courcoubeitis. Weighted round-robin cell multiplexing in a general-purpose ATM switch chip[J], IEEE J.Sel. Areas Commun, 1991, 9 (8): 1265-1279.
[8]許登元,劉文杰,竇軍. PFTS 交換中借還-加權(quán)輪詢高度算法[J]. 四川大學(xué)學(xué)報,2005, 42 (5): 921-924.
[9]C.Albuquerque, B.J.Vickers, T.Suda, Network border patrol:preventing congestion collapse and promoting fairness in the Internet Networking[J]. IEEE/ACM Transactions,2004, 12 (1): 173-186.