电竞比分网-中国电竞赛事及体育赛事平台

分享

QoS隊(duì)列調(diào)度算法

 攪吧攪吧小閣老 2023-01-30 發(fā)布于山東

隊(duì)列指的是在緩存中對報文進(jìn)行排序的邏輯。當(dāng)流量的速率超過接口帶寬或超過為該流量設(shè)置的帶寬時,報文就以隊(duì)列的形式暫存在緩存中。報文離開隊(duì)列的時間、順序,以及各個隊(duì)列之間報文離開的相互關(guān)系由隊(duì)列調(diào)度算法決定。

華為交換機(jī)設(shè)備的每個端口上都有 8 個下行隊(duì)列,稱為CQ(Class Queue)隊(duì)列,也叫 端口隊(duì)列(Port-queue),在交換機(jī)內(nèi)部與前文提到的 8 個PHB一一對應(yīng),分別為BE、 AF1、AF2、AF3、AF4、EF、CS6 和CS7。單個隊(duì)列的報文采用 FIFO(First In First Out)原則入隊(duì)和出隊(duì)。

image-20200726165220818

  • PQ(Priority Queuing)調(diào)度

PQ(Priority Queuing)調(diào)度,就是嚴(yán)格按照隊(duì)列優(yōu)先級的高低順序進(jìn)行調(diào)度。只有 高優(yōu)先級隊(duì)列中的報文全部調(diào)度完畢后,低優(yōu)先級隊(duì)列才有調(diào)度機(jī)會。 采用PQ 調(diào)度方式,將延遲敏感的關(guān)鍵業(yè)務(wù)放入高優(yōu)先級隊(duì)列,將非關(guān)鍵業(yè)務(wù)放入 低優(yōu)先級隊(duì)列,從而確保關(guān)鍵業(yè)務(wù)被優(yōu)先發(fā)送。 PQ調(diào)度的缺點(diǎn)是:擁塞發(fā)生時,如果較高優(yōu)先級隊(duì)列中長時間有分組存在,那么 低優(yōu)先級隊(duì)列中的報文就會由于得不到服務(wù)而“餓死”。

假設(shè)端口有 3 個采用PQ調(diào)度的隊(duì)列,分別為高優(yōu)先(High)隊(duì)列、中優(yōu)先(Medium) 隊(duì)列、和低優(yōu)先(Low)隊(duì)列,它們的優(yōu)先級依次降低。如圖,其中報文編號表示報文到達(dá)順序。

圖1 PQ調(diào)度

image-20200726105358964

  • RR(Round Robin)調(diào)度

RR調(diào)度采用輪詢的方式,對多個隊(duì)列進(jìn)行調(diào)度。RR以環(huán)形的方式輪詢多個隊(duì)列。 如果輪詢的隊(duì)列不為空,則從該隊(duì)列取走一個報文;如果該隊(duì)列為空,則直接跳過該隊(duì)列,調(diào)度器不等待。

圖2 RR調(diào)度

image-20200726105700474

RR調(diào)度各個隊(duì)列之間沒有優(yōu)先級之分,都能夠有相等的概率得到調(diào)度。RR調(diào)度的缺點(diǎn)是:所有隊(duì)列無法體現(xiàn)優(yōu)先級,對于延遲敏感的關(guān)鍵業(yè)務(wù)和非關(guān)鍵業(yè)務(wù)無法得到區(qū)別對待,使得關(guān)鍵業(yè)務(wù)無法及時得到處理

  • WRR(Weighted Round Robin)調(diào)度

加權(quán)輪詢WRR(Weighted Round Robin)調(diào)度主要解決RR不能設(shè)置權(quán)重的不足。 在輪詢的時候,WRR每個隊(duì)列享受的調(diào)度機(jī)會和該隊(duì)列的權(quán)重成比例。RR調(diào)度相當(dāng)于權(quán)值為 1 的WRR調(diào)度。 WRR的實(shí)現(xiàn)方法是為每個隊(duì)列設(shè)置一個計數(shù)器 Count,根據(jù)權(quán)重進(jìn)行初始化。每次 輪詢到一個隊(duì)列時,該隊(duì)列輸出一個報文且計數(shù)器減一。當(dāng)計數(shù)器為 0 時停止調(diào)度該隊(duì)列,但繼續(xù)調(diào)度其他計數(shù)器不為 0 的隊(duì)列。當(dāng)所有隊(duì)列的計數(shù)器都為 0 時,所有計數(shù)器重新根據(jù)權(quán)重初始化,開始新一輪調(diào)度。在一個循環(huán)中,權(quán)重大的隊(duì)列被多次調(diào)度。

圖3 WRR調(diào)度

image-20200726105856756

假設(shè)某端口有3個隊(duì)列采用WRR調(diào)度,為每個隊(duì)列配置一個權(quán)值,依次為50%、 25%、25%,詳細(xì)的調(diào)度過程如下: 首先計數(shù)器初始化:Count[1]=2,Count[2]=1,Count[3]= 1。

? 第 1 個輪詢: 從隊(duì)列 1 取出報文 1 發(fā)送,Count[1]=1;從隊(duì)列 2 取出報文 5 發(fā)送,Count[2]=0; 從隊(duì)列 3 取出報文 8 發(fā)送,Count[3]=0。
? 第 2 個輪詢: 從隊(duì)列 1 取出報文 2 發(fā)送,Count[1]=0;由于Count[2]=0,Count[3]=0,隊(duì)列 2 和隊(duì)列 3 不參與此輪調(diào)度。 此時,Count[1]=0,Count[2]=0,Count[3]=0,將計數(shù)器重新初始化:Count[1]=2, Count[2]=1,Count[3]= 1。
? 第 3 個輪詢:從隊(duì)列 1 取出報文 3 發(fā)送,Count[1]=1;從隊(duì)列 2 取出報文 6 發(fā)送,Count[2]=0; 從隊(duì)列 3 取出報文 9 發(fā)送,Count[3]=0。
? 第 4 個輪詢: 從隊(duì)列 1 取出報文 4 發(fā)送,Count[1]=0;由于Count[2]=0,Count[3]=0,隊(duì)列 2 和隊(duì)列 3 不參與此輪調(diào)度。 此時,Count[1]=0,Count[2]=0,Count[3]=0,將計數(shù)器重新初始化:Count[1]=2, Count[2]=1,Count[3]= 1。

從統(tǒng)計上看,各隊(duì)列中的報文流被調(diào)度的次數(shù)與該隊(duì)列的權(quán)值成正比,權(quán)值越大被調(diào)度的次數(shù)相對越多。如果該端口為100Mbps,則可以保證最低權(quán)重的隊(duì)列至少獲得25Mbit/s帶寬,避免了采用PQ調(diào)度時低優(yōu)先級隊(duì)列中的報文可能長時間得不到服務(wù)的缺點(diǎn)。WRR對于空的隊(duì)列直接跳過,循環(huán)調(diào)度的周期變短,因此當(dāng)某個隊(duì)列流量小的時候,剩余帶寬能夠被其他隊(duì)列按照比例占用。

WRR調(diào)度有兩個缺點(diǎn):

  1. WRR調(diào)度按照報文個數(shù)進(jìn)行調(diào)度,因此每個隊(duì)列沒有固定的帶寬,同等調(diào)度機(jī) 會下大尺寸報文獲得的實(shí)際帶寬要大于小尺寸報文獲得的帶寬。而用戶一般關(guān) 心的是帶寬。當(dāng)每個隊(duì)列的平均報文長度相等或已知時,通過配置WRR權(quán)重, 用戶能夠獲得想要的帶寬;但是,當(dāng)隊(duì)列的平均報文長度變化時,用戶就不能 通過配置WRR權(quán)重獲取想要的帶寬。
  2. 低延時需求業(yè)務(wù)(如語音)得不到及時調(diào)度。
  • DRR(Deficit Round Robin)調(diào)度

差分輪詢DRR(Deficit Round Robin)調(diào)度實(shí)現(xiàn)原理與RR調(diào)度基本相同。DRR與RR的區(qū)別是:RR調(diào)度是按照報文個數(shù)進(jìn)行調(diào)度,而DRR是按照報文長度進(jìn)行調(diào)度。

DRR為每個隊(duì)列設(shè)置一個計數(shù)器Deficit,Deficit 初始化為一次調(diào)度允許的最大字節(jié)數(shù), 一般為接口MTU。每次輪詢到一個隊(duì)列時,該隊(duì)列輸出一個報文且計數(shù)器Deficit 減去報文長度。如果報文長度超過了隊(duì)列的調(diào)度能力,DRR調(diào)度允許Deficit 出現(xiàn)負(fù)值,以保證長報文也能夠得到調(diào)度。但下次輪循調(diào)度時該隊(duì)列將不會被調(diào)度。當(dāng)計數(shù)器為 0 或 負(fù)數(shù)時停止調(diào)度該隊(duì)列,但繼續(xù)調(diào)度其他計數(shù)器為正數(shù)的隊(duì)列。當(dāng)所有隊(duì)列的Deficit 都為 0 或負(fù)數(shù)時,將所有隊(duì)列的Deficit 計數(shù)器加上初始值,開始新一輪調(diào)度。

假設(shè)某端口MTU=150Bytes,有 2 個隊(duì)列Q1和Q2采用DRR調(diào)度,Q1 隊(duì)列中有多個 200Bytes 的長報文,Q2隊(duì)列中有多個100Bytes 的端報文,則調(diào)度過程如圖 4 所示。

圖4 DRR調(diào)度

image-20200726164055160

由圖4可以看出,經(jīng)過第 1~6 輪DRR調(diào)度,Q1隊(duì)列被調(diào)出了3個200Bytes 的報文, Q2隊(duì)列被調(diào)出了6個100Bytes 的報文。從長期的統(tǒng)計看,Q1和 Q2 的實(shí)際輸出帶寬比 是 1:1,為公平的比例。DRR調(diào)度避免了采用PQ調(diào)度時低優(yōu)先級隊(duì)列中的報文可能長時間得不到服務(wù)的缺點(diǎn)。 但是,DRR調(diào)度不能設(shè)置權(quán)重,且也具有低延時需求業(yè)務(wù)(如語音)得不到及時調(diào)度的缺點(diǎn)。

  • DWRR(Deficit Weighted Round Robin)調(diào)度

差分加權(quán)輪詢DWRR(Deficit Weighted Round Robin)調(diào)度主要解決DRR不能設(shè)置權(quán)重的不足。DRR調(diào)度相當(dāng)于權(quán)值為 1 的DWRR調(diào)度。 DWRR為每個隊(duì)列設(shè)置一個計數(shù)器Deficit,Deficit 初始化為Weight * MTU。每次輪詢到一個隊(duì)列時,該隊(duì)列輸出一個報文且計數(shù)器Deficit 減去報文長度。當(dāng)計數(shù)器為 0 時停止調(diào)度該隊(duì)列,但繼續(xù)調(diào)度其他計數(shù)器不為 0 的隊(duì)列。當(dāng)所有隊(duì)列的計數(shù)器都為 0 時,所有計數(shù)器的Deficit 都加上Weight*MTU,開始新一輪調(diào)度。

圖5 DWRR調(diào)度

image-20200726164321936

假設(shè)某端口MTU=150Bytes,有 2 個隊(duì)列Q1和Q2采用DRR調(diào)度,Q1 隊(duì)列中有 多個 200Bytes 的長報文,Q2隊(duì)列中有多個 100Bytes 的端報文,Q1和Q2配置權(quán)重 比為weight1:weight2=2:1。則DWRR調(diào)度過程如圖 2-37。

  1. 第一輪調(diào)度 Deficit[1] =weight1* MTU=300,Deficit[2] = weight2* MTU=150Bytes,從 Q1 隊(duì) 列取出 200Bytes 報文發(fā)送,從Q2隊(duì)列取出 100Bytes 發(fā)送;發(fā)送后,Deficit[1] = 100,Deficit[2] =50。
  2. 第二輪調(diào)度
    從 Q1 隊(duì)列取出 200Bytes 報文發(fā)送,從Q2隊(duì)列取出 100Bytes 發(fā)送;發(fā)送后, Deficit[1] = -100,Deficit[2] =-50。
  3. 第三輪調(diào)度
    此時兩個隊(duì)列都為負(fù),因此,Deficit[1] = Deficit[1]+weight1* MTU=-100+2150=200,Deficit[2] = Deficit[2]+weight2 MTU=-50+1*150=100。
    從 Q1 隊(duì)列取出 200Bytes 報文發(fā)送,從Q2隊(duì)列取出 100Bytes 發(fā)送;發(fā)送后, Deficit [1] = 0,Deficit[2] = 0。

由上圖可以看出,經(jīng)過第 1~3 輪DWRR調(diào)度,Q1隊(duì)列被調(diào)出了3個200Bytes 的 報文,Q2 隊(duì)列被調(diào)出了3個100Bytes 的報文。從長期的統(tǒng)計看,Q1和Q2的實(shí)際 輸出帶寬比是 2:1,與權(quán)重比相符。

DWRR調(diào)度避免了采用PQ調(diào)度時低優(yōu)先級隊(duì)列中的報文可能長時間得不到服務(wù)的缺點(diǎn),也避免了各隊(duì)列報文長度不等或變化較大時,WRR調(diào)度不能按配置比例分 配帶寬資源的缺點(diǎn)。但是,DWRR調(diào)度也具有低延時需求業(yè)務(wù)(如語音)得不到及時調(diào)度的缺點(diǎn)。

  • WFQ(Weighted Fair Queuing)調(diào)度

加權(quán)公平隊(duì)列WFQ(Weighted Fair Queuing)調(diào)度是按隊(duì)列權(quán)重來分配每個流應(yīng)占有出口的帶寬。同時,為了使得帶寬分配更加“公平”,WFQ 以 bit 為單位進(jìn)行調(diào)度,類似于圖 6的 bit-by-bit 調(diào)度模型

圖6 WFQ調(diào)度

image-20200726162602159

Bit-by-bit 調(diào)度模型可以完全按照權(quán)重分配帶寬,防止長報文比短報文獲得更多帶寬,從 而減少大小報文共存時的時延抖動。但Bit-by-bit 調(diào)度模型只是理想化的模型,實(shí)際上,華為交換機(jī)實(shí)現(xiàn)的WFQ是按照一定的粒度,例如 256B、1KB,或其他粒度,具體按何種粒度,與單板類型相關(guān)。
WFQ的優(yōu)點(diǎn)主要有以下幾點(diǎn):

  • 不同的隊(duì)列獲得公平的調(diào)度機(jī)會,從總體上均衡各個流的延遲。
  • 短報文和長報文獲得公平的調(diào)度:如果不同隊(duì)列間同時存在多個長報文和短報文等 待發(fā)送,讓短報文優(yōu)先獲得調(diào)度,從而在總體上減少各個流的報文間的抖動。
  • 從統(tǒng)計上看,權(quán)重越小,所分得的帶寬越少。權(quán)重越大,所分得的帶寬越多。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多