|
隊(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ì)。
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)度
RR調(diào)度采用輪詢的方式,對多個隊(duì)列進(jìn)行調(diào)度。RR以環(huán)形的方式輪詢多個隊(duì)列。 如果輪詢的隊(duì)列不為空,則從該隊(duì)列取走一個報文;如果該隊(duì)列為空,則直接跳過該隊(duì)列,調(diào)度器不等待。 圖2 RR調(diào)度
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ù)無法及時得到處理
加權(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)度
假設(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。 從統(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):
差分輪詢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)度
由圖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)。
差分加權(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)度
假設(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。
由上圖可以看出,經(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)。
加權(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)度
Bit-by-bit 調(diào)度模型可以完全按照權(quán)重分配帶寬,防止長報文比短報文獲得更多帶寬,從 而減少大小報文共存時的時延抖動。但Bit-by-bit 調(diào)度模型只是理想化的模型,實(shí)際上,華為交換機(jī)實(shí)現(xiàn)的WFQ是按照一定的粒度,例如 256B、1KB,或其他粒度,具體按何種粒度,與單板類型相關(guān)。
|
|
|