八、QOS队列调度与报文丢弃
QOS隊列調度與報文丟棄
- QOS隊列調度與報文丟棄
- 1、擁塞管理
- 2、擁塞管理技術
- 2.1、PQ調度
- 2.2、WRR調度
- 2.3、DRR調度
- 2.4、WFQ調度
- 3、擁塞管理應用場景
- 4、擁塞避免
- 5、擁塞避免應用場景
—————————————————
QOS隊列調度與報文丟棄
前面的優先級映射或MQC對報文進行分類和標記,分類之后要做什么?就是根據分類的結果對報文進行流量控制處理。擁塞管理和擁塞避免就是兩種流量控制手段。
如下:當LSW1上行流量大于接口帶寬時,那么在出方向就有可能發生網絡擁塞,此時就需要配置擁塞管理和擁塞避免。
——————————————————————————————————————————————————
1、擁塞管理
當網絡硬件設備能力無法承載各種應用對帶寬的需求時,網絡擁塞無法避免。擁塞管理就是在網絡發生擁塞時,通過隊列技術對流量進行管理和控制,優先保證某類報文的時延等QOS服務質量。
隊列就好比我們平時去銀行辦理業務時需要排隊,假設銀行只提供一個窗口服務,當出現VIP,VIP的業務被優先處理,當VIP辦理完畢,普通用戶才能繼續辦理業務。
——————————————————————————————————
2、擁塞管理技術
擁塞管理技術的基礎是隊列技術,交換機上每個出接口都有8個列隊,分別為0-7,每個列隊可以緩存一定的報文數量。當網絡發生擁塞時,報文會根據本地優先級與隊列之間的映射關系,自動將報文流送入不同的隊列。不同的擁塞管理技術就可以根據各自的調度算法,實現對隊列流量按照優先級發送。
下面介紹常用的兩種調度方式。PQ調度、WRR調度。
——————————————————————————————————
2.1、PQ調度
優先隊列PQ(Priority Queuing)調度。嚴格按照隊列優先級的高低順序進行調度。只有高優先級隊列報文全部調度完畢,低優先級才有調度機會。配置PQ調度后,按照7-0的優先級依次進行調度,發送報文。
假設銀行只有一個窗口服務,用戶根據自己銀行卡的額度取號排隊時,分為A、B、C三種號,按照級別規定優先級A>B>C。即A號段的顧客優先服務,當沒有A,B號段的顧客獲得服務,依次進行。這種方式缺點也很明顯,B和C號段的用戶可能因為長時間得不到服務而產生強烈不滿。
如圖:隊列優先級1>2>3,報文出隊的時候,首先讓高優先級中的報文發送,直到高優先級報文發送完,然后發送中等優先級報文,直到發送完,在發送低優先級列隊。
如果中級優先級在等待過程中,高優先級隊列還有報文不停的進入隊列,則中優先級始終處于等待狀態。
如果高優先級發送完畢,中優先級隊列中報文4、5已經發送完畢,在報文6被發送之前,高優先級隊列又有報文進入隊列,則優先處理高優先級報文。
——————————————————————————————————
2.2、WRR調度
加權輪詢調度WRR(Weight Round Robin)在隊列之間進行輪流調度,根據每個隊列的權重來調度各隊列中的報文流。
如果銀行有3個窗口工作且采用WRR調度方式,三個窗口權重比例:50、25、25,按照業務熟練程度,VIP窗口處理2位客戶時,另外兩個窗口分別處理一個客戶,這樣保證所有窗口的客戶都可以得到服務,但是VIP客戶排隊時間更短。
交換機根據每個隊列的權值進行輪詢調度。調度一輪計數器減1,計數器減到0的隊列不參加調度。當所有隊列的計數器減到0時,開始新一輪調度。詳細過程如下:
首先計數器初始化:Count [1] =2,Count [2] =1 ,Conut [3] =1。
第一次輪詢:
從隊列1取出報文1發送,Count [1] =1;從隊列2取出報文5發送,Count [2] =0,從隊列3取出報文8發送,Conut [3] =0。
第二次輪詢:
從隊列1取出報文2發送,Count [1] =0;由于Count [2] =0,Conut [3] =0。隊列2和隊列3不參與次輪調度。
此時,Count [1] =0;由于Count [2] =0,Conut [3] =0,計數器重新初始化:Count [1] =2,Count [2] =1 ,Conut [3] =1。
第三次輪詢:
從隊列1取出報文3發送,Count [1] =1;從隊列2取出報文6發送,Count [2] =0,從隊列3取出報文9發送,Conut [3] =0。
第四個輪詢:
從隊列1取出報文4發送,Count [1] =0,由于Count [2] =0,Conut [3] =0。隊列2和3不參與次輪調度。
此時,Count [1] =0,Count [2] =0,Conut [3] =0。將計數器重新初始化:Count [1] =2,Count [2] =1 ,Conut [3] =1。
從以上統計看,各隊列中的報文被調度的次數與該隊列的權值成正比,權值越大被調度的次數相對越多。如果該端口帶寬為100Mbit/s,則可以保證最低權重的隊列至少獲得25Mbit/s帶寬,避免了采用PQ調度時,低優先級中的報文可能很長時間得不到服務的缺點。但是WRR調度無法保證對時延要求高的業務報文優先發送。
PQ調度和WRR調度各有優缺點,WRR調度可以根據相對公平的調度機制,保證各業務都能得到一定的服務,但是對低時延業務無法保證及時調度。PQ調度可以保證低時延業務及時調度,但是存在低優先級業務一直無法被調度情況。因此,實際組網中通常使用PQ WRR混合調度方式來實現擁塞管理。通常將對時延要求較高的業務流量進入的隊列配置PQ調度,其他隊列配置為WRR調度。當PQ隊列有流量時,優先處理。PQ隊列沒有流量在按照WRR隊列進行調度。
對于盒式交換機,如果配置PQ WRR混合調度,只需要將配置PQ調度的隊列權重配置為0即可。
假設需要配置隊列1為PQ調度,隊列2和隊列5為WRR調度。以S5720EI為例。
[LSW1] interface GigabitEthernet 0/0/3
[LSW1-GigabitEthernet0/0/3] qos wrr
[LSW1-GigabitEthernet0/0/3] qos queue 1 wrr weight 0 //配置隊列1為PQ調度
[LSW1-GigabitEthernet0/0/3] qos queue 2 wrr weight 40
[LSW1-GigabitEthernet0/0/3] qos queue 5 wrr weight 60
對于框式交換機,如果要配置PQ WRR混合調度,只需要將對應的隊列設置為PQ調度。
[LSW1] interface GigabitEthernet 1/0/3
[LSW1-GigabitEthernet1/0/3] qos pq 1 //配置隊列1為PQ調度
[LSW1-GigabitEthernet1/0/3] qos queue 2 wrr weight 40
[LSW1-GigabitEthernet1/0/3] qos queue 5 wrr weight 60
除了上述調度,交換機還支持DRR、WFQ等多種擁塞管理方法。
——————————————————————————————————
2.3、DRR調度
DRR(Deficit Round Robin)調度也是循環調度,但是相對于WRR只考慮報文個數的問題。DRR同時考慮報文的大小,在調度過程中考慮包長因素以達到調度速率公平性。DRR調度中,Deficit表示隊列的帶寬赤子,初始值為0。每次調度前,系統按權重為各隊列分配帶寬,計算Deficit值,如果隊列的Deficit值大于0。則不參與調度。
假如我們規定銀行3個窗口根據現金額度來辦理業務,按照2:1:1權重為VIP窗口和兩個普通窗口分配現金,現在每輪為VIP客戶分配5000元現金,為普通窗口分配2500元現金。
第一輪:VIP客戶提取10000元,但是2個普通用戶分別提取2000元,則VIP窗口在辦完第一輪業務后剩余額度為-5000,普通窗口額度分別為500元。
第二輪:VIP窗口分配5000元,額度為0,普通分配2500元額度為3000。因此在第二輪VIP窗口不辦理業務,普通窗口辦理業務。
如此循環調度的話,DRR調度還是沒能解決WRR調度中低延時需求業務得不到及時調度的問題。
單采用DRR調度的話,對于時延需求的業務如語音視頻,得不到優先調度,如果將兩種方式結合起來PQ+WDRR調度,不僅能發揮兩種調度優勢,還能克服兩種調度的各自缺點。
和PQ+WRR調度一樣,接口上的8個隊列可以分為兩組,用戶可以指定其中的某幾組隊列進行PQ調度,其他進行WDRR調度。
在調度時,首先按照PQ優先調度7-5隊列,等全部調度完畢,才開始以DRR調度4-0。
——————————————————————————————————
2.4、WFQ調度
公平隊列FQ(Fair Queuing)的目的是盡可能公平的分項網絡資源,使所有流的延遲和抖動達到最優。
不同的隊列獲得公平的調度機會,總體上均衡各個流的延遲。短報文和長報文獲得公平調度,如果不同隊列間同時存在多個長報文和短報文等待發送。讓短報文優先獲得調度,總體上減少各個流的報文間的抖動。
與FQ相比,WFQ(Weighted Fair Queue)在計算報文調度次序時增加了優先權方面的考慮,從統計上,WFQ使高優先權的報文獲得優先調度的機會多于低優先級的報文。
WFQ調度在報文入隊列之前,先對流量進行分類,兩種方式分類:
1、按流的會話信息分類
根據報文的協議類型、源和目的TCP或UDP端口號、源和目的IP地址,ToS域中的優先級位等自動進行分類,并且盡可能多的提供隊列,以將每個流均勻的放入不同的隊列中,從而在總體上均衡各個流的延遲,在出隊列時,WFQ按流的優先級來分配每個流應占有的帶寬。優先級越小,獲得帶寬越少,反之。這種方式只有CBQ的Default-class支持。
2、按優先級分類
通過優先級映射把流量標記為本地優先級,每個本地優先級對應一個隊列號,每個接口預分配8個隊列,報文根據隊列號進入隊列。默認,隊列的WFQ權重相同,流量平均分配接口帶寬。用戶可以修改權重,高優先權和低優先權按權重比例分配帶寬。
WFQ調度圖
PQ+WFQ調度和PQ+WRR相似,采用PQ,低優先列隊中報文長期得不到帶寬,而單純采用WFQ調度時對時延需求業務語音得不到優先調度。
PQ+WFQ調度
在調度時,首先按照PQ方式優先調度7-5隊列中報文流,只有這些隊列報文全部調度完畢,才開始以WFQ方式調度4-0隊列中的報文流。4-0隊列包含自己的權值。
——————————————————————————————————
3、擁塞管理應用場景
擁塞管理可以實現對不同的業務按照不同的優先級進行調度,在QOS方案部署中比較常用。
在企業網絡中,當共享同一網絡的多種業務競爭相同的資源時,可能會產生擁塞,高優先級業務無法得到保證,此時用戶可以為語音、視頻和數據等多種不同業務標記不同的優先級,報文根據不同優先級進入不同隊列的調度算法,實現業務的差分服務。
——————————————————————————————————
4、擁塞避免
擁塞避免(Congestion Avoidance)是指通過監視網絡資源(如隊列或內存緩沖區)的使用情況,在擁塞發生或有加劇的趨勢時主動丟棄報文,通過調整網絡的流量來解除網絡過載的一種流控機制。
兩種丟棄報文方式:尾部丟包策略和WRED
1、傳統的尾部丟包策略
傳統的丟包策略采用尾部丟棄(Tail-Drop)的方法。當隊列的長度達到最大值后,所有新入隊列的報文(緩存在隊列尾部)都將被丟棄。
這種丟棄策略會引發TCP全局同步現象,導致TCP連接始終無法建立。所謂TCP全局同步現象如圖,三種顏色表示三條TCP連接,當同時丟棄多個TCP連接的報文時,將造成多個TCP連接同時進入擁塞避免和慢啟動狀態而導致流量降低,之后又會在某個時間同時出現流量高峰,如此反復,使網絡流量忽大忽小。
2、WRED
為避免TCP全局同步現象,出現了RED(Random Early Detection)技術。RED通過隨機地丟棄數據報文,讓多個TCP連接不同時降低發送速度,從而避免了TCP的全局同步現象。使TCP速率及網絡流量都趨于穩定。
流隊列支持基于DSCP或IP優先級進行WRED丟棄。每一種優先級都可以獨立設置報文丟包的上下門限及丟包率。當隊列中報文的總長度達到丟棄的下限時,開始丟包。隨著隊列中報文總長度的增加,丟包率不斷增加,最高丟包率不超過設置的丟包率。直至隊列中報文的總長度達到丟棄的上限,報文全部丟棄。這樣按照一定的丟棄概率主動丟棄隊列中的報文,從而在一定程度上避免擁塞問題。
——————————————————————————————————
5、擁塞避免應用場景
擁塞避免可以在網絡產生擁塞、或者擁塞加劇時,主動丟棄優先級較低的報文,調整網絡流量,緩解網絡壓力,以保證高優先級報文正常通過。
當兩個局域網用戶需要通過廣域網進行通信時,由于廣域網帶寬小于局域網的帶寬,位于廣域網和局域網之間的邊緣交換機將發生擁塞,此時可以通過配置擁塞避免,主動丟棄優先級較低的報文(比如數據報文等),減少網絡的擁塞,保證高優先級業務正常運行。
總結
以上是生活随笔為你收集整理的八、QOS队列调度与报文丢弃的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业微信消息多久可以撤回?企业微信怎么查
- 下一篇: 【历史上的今天】6 月 5 日:洛夫莱斯