QOS
QOS 是服務質量的統稱,好的服務質量對應低的延時、丟包率、抖動和高的帶寬。QOS分為Best Effort、IntServ、DiffServ三種模型。每一種模型就是一種設計方案。
在DiffServ設計方案中,首先將報文進行分類。
1,對於二層報文的分類:是通過二層報文的tag字段里的優先級字段(priority字段)進行分類,該字段有3個bit,總共8個等級,數值范圍從0-7,數值越大優先級越高。對於untag報文,會被標記為端口默認的優先級。被標記了優先級的tag報文稱為802.1P報文,對二層報文打標記的機制稱為COS.

2, 對於三層報文的分類:是通過IP報文的TOS字段進行分類。TOS字段總共8個bit,前三位表示ip-precedence。前6位表示DSCP。在DSCP中,前3位表示優先級,后面2位表示丟棄優先級,最后一位始終為0. COS和TOS是報文標記的一種機制,一個是對二層報文,一個是對三層報文的。
3, 對於端口可以手動指定端口的trust-mode,COS模式或者DSCP模式。
這樣報文就被分為不同的類,然后再對不同的類進行打標記,也就是將同一類的報文設置相同的內部DSCP值或者內部COS值;再根據內部COS-queue、或者DSCP-queue的映射表,將報文送入不同的隊列,(或者通過COS-PHB, PHB-queue,DSCP-PHB,PHB-queue映射表)再通過隊列的調度技術,比如PQ/WRR/WDRR技術讓隊列出隊列。在報文被發送之前我們引入流量監管,也就是通過令牌桶算法,將報文分為紅、黃、綠三種顏色,綠包轉發,紅包丟棄,黃包重新打標記再轉發/或者丟棄,最終實現對流量的限速。這里的令牌桶算法分為SRTCM/TRTCM。對於SRTCM算法,有C桶設E桶兩個桶,算法以CIR的速率向C桶里面注入令牌,C桶里的令牌數表示為Tc,C桶的深度表示為CBS;E桶里的令牌數表示為Te,E桶的深度表示為EBS.當進來的報文B長度小於Tc的時候,報文被標記為綠色,Tc減少B;當報文長度大於Tc、並且小於Te的時候,報文被標記為黃色,TE減少B,Tc不變;當報文長度大於Te的時候,報文被標記為紅色,Tc、Te不減少。對於綠色報文(即conform)采取的動作是轉發;對於黃包(即exceed報文)采取的動作是從新打標記或者丟棄;對於紅包(即vilolate報文)采取的動作是丟棄。這里是色盲模式下對報文的標記方式,在非色盲模式下,除了考慮報文長度外,還要考慮報文的顏色,對於進來的報文時綠色,那么在根據報文長度最終把報文標記為紅黃綠;對於進來的報文如果時黃色,那么報文最終的顏色只能是黃色或者紅色,如果報文長度B小於Te那么就是黃色,如果B大於Te那么最終結果是紅色;對於紅色報文,那么不管報文長度是多少,最終結果都是紅色。
至此,高優先級的報文得到了優先轉發,低優先級的報文延遲發送或者丟棄,最終實現了服務質量的要求。
QOS技術之令牌桶算法有兩種工作模式
- 色盲模式(Color-Blind mode),假定所有incoming packet是無色的。
- 非色盲模式(Color-Aware mode),假定所有incoming packet已經被先前的網絡元素上了色。如果Meter工作在非色盲模式,它會認為每一個packet都有一種顏色,要么綠要么黃要么紅。
對於srTCM(的英文全稱是Single Rate Three Color Marker,單速率三顏色標記)
CIR: Committed information Rate,承諾信息速率
CBS:Committed Burst Size,承諾突發尺寸
EBS:Excess Burst Size,超額突發尺寸
為方便,將兩個令牌桶稱為C桶和E桶,用Tc和Te表示桶中的令牌數量,Tc和Te初始化等於CBS和EBS。CBS比EBS要小。
Tc和Te在每秒鍾內更新CIR次,更新時遵循以下規則:
如果Tc < CBS,則Tc增加1,否則
如果Te < EBS,則Te增加1,否則
Tc和Te都不增加
色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:
如果Tc-B >= 0,則報文被標記為綠色,且Tc降低B,否則
如果Tp-B >= 0,則報文被標記為黃色,且Te降低B,否則
報文被標記為紅色且Tc和Tp都不降低。
非色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:
如果報文已被標記為綠色且Tc-B >= 0,則報文被標記為綠色,且Tc降低B,否則
如果報文已被標記為綠色或黃色且Te-B >= 0,則報文被標記為黃色,且Te降低B,否則報文被標記為紅色且Tc和Te都不降低。
對於非色盲模式:
1,如果報文已經被標記為綠色,並且B<=Tc,則最終結果是,報文被標為綠色;如果B在Tc和Te之間,那最終結果是黃色;如果B>Te那最終結果是紅色。
2,如果報文已經被標記為黃色,那么最終結果只能是黃色或者紅色,如果B<=Te,則最終結果是黃色,如果B>Te,則最終結果是紅色;
3,如果報文已經被標記為紅色,那么最終結果只能是紅色。此時報文最終顏色與c桶e桶令牌數無關。
4,如果報文沒有被標記顏色,那么說明報文不符合匹配規則,此時不限速。(那么會被當成是綠色報文,然后按照已經被標記為綠包的規則進行處理?)
(這里已經被標記的報文顏色(非最終顏色)是通過drop precedence來標記的,drop precedence有三個值0,1,3,分別對應綠,紅,黃。交換機里面有一張DSCP/cos與drop precedence的對應表。根據DSCP的值來確定對應的drop precedence的值,再根據drop precedence的值來確定報文的顏色。這里的顏色是非最終顏色,最終顏色還得根據令牌桶算法來確定。我們公司的產品,有待考證)
當往第一個桶里加了多余的令牌,會放入到第二個桶中。這里conform、exceed、violate分別對應綠、黃、紅包。

對於trTcm (全稱 Two Rate Three Color Marker ,雙速率三顏色標記。基本思路和srTCM相同,有一些細節上的差異。)
- 配置單速率三色標記器時要指定4個參數:承諾信息速率CIR 、峰值信息速率PIR、承諾突發尺寸CBS 和超額突發尺寸PBS。trTCM算法中兩個令牌桶的填充令牌的速率不同,分別為承諾的平均速率CIR(Committed Information Rate)和峰值速率PIR(Peak Information Rate)。為方便將這兩個令牌桶稱為C桶和P桶,這兩個桶的尺寸分別為承諾突發尺寸CBS(Committed Burst Size)和峰值突發尺寸PBS(Peak Burst Size)。用Tc和Tp表示桶中的令牌數量,Tc和Tp初始化等於CBS和PBS。Tc和Tp在每秒鍾內分別更新CIR和PIR次,每次更新增加一個令牌(除非桶滿)。
在色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:(這里默認CBS<PBS)
如果Tp-B < 0,則報文被標記為紅色,否則
如果Tc-B < 0,則報文被標記為黃色,且Tp降低B,否則
報文被標記為綠色且Tc和Tp都降低B。
在非色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:
如果報文已被標記為紅色或者Tp-B < 0,則報文被標記為紅色,否則
如果報文已被標記為黃色或者Tc-B < 0,則報文被標記為黃色,且Tp降低B,否則
報文被標記為綠色且Tc和Tp都降低B。
對於非色盲模式:
如果報文已經被標記為綠色,並且B>=Tp,則最終結果是紅色,如果Tc<=B<=Tp報文最終結果被標為黃色;如果B<Tc,則報文最終結果唄標為綠色。
如果報文已經被標記為黃色,那么最終結果只能是黃色或者紅色,如果B<=Tp,則最終結果是黃色,如果B>Tp,則最終結果是紅色;
如果報文已經被標記為紅色,那么最終結果只能是紅色。
如果報文沒有被標記顏色,那么會被當成是綠色報文,然后按照已經被標記為綠包的規則進行處理
(這里已經被標記的報文顏色(非最終顏色)是通過drop precedence來標記的,drop precedence有三個值0,1,3,分別對應綠,紅,黃,交換機里面有一張DSCP/cos與drop precedence的對應表。根據DSCP的值來確定對應的drop precedence的值,再根據drop precedence的值來確定報文的顏色。這里的顏色是非最終顏色,最終顏色還得根據令牌桶算法來確定。本工作產品,有待考證)

QOS術語之PHB
PHB: 是單個設備對不同的數據流采取的不同轉發行為,可以是確保轉發、加速轉發、盡力而為。PHB體現的是報文等級的高低,而不是服務質量的好壞,QOS是端到端的服務質量,PHB是單個設備的轉發行為。就像酒店分為3、4、5星級,PHB只規定了入住3星級酒店,但是沒有規定是入住如家還是莫泰168.所以PHB只是個籠統的概念,不是具體實現。PHB分為4類:CS、EF、AF、BE,每一類都對應一個或者一組DSCP值。
BE:盡力而為。目標可達,不保證服務質量。
AF:確保轉發:視頻類的數據流,要求帶寬的保證。
EF:加速轉發:語音類的數據流,要求低的時延,低的抖動、低的丟包率
CS:類選擇器。因為現網有些設備不支持差分服務,只解析DSCP前3位,為了后向兼容,標准預留了所有格式為XXX000的DSCP值 ,這類值就對應為CS PHB。其實CS的分類,最終還是對應到EF、AF、BE相對應。所以可以認為PHB只有三種行為:加速轉發、確保轉發、盡力而為

QOS技術之流量監管(CAR)
CAR (Committed Access Rate):約定訪問速率分類器

采用令牌桶算法對報文進行評估,對符合規定的報文采取“直接轉發”;對不符合規定的報文采取“直接丟棄”;對部分符合的報文采取“重新打表記,然后再轉發”
QOS技術之流量整形(GTS)

GTS (Generic Traffic Shaping):解決鏈路兩邊的接口速率不匹配
1, 利用令牌桶算法對每一類的報文進行度量,滿足約定直接發送;不滿足約定,入隊緩存
2, 可采用多種隊列技術來緩存報文,如PQ、WFQ、CBWFQ等
QOS技術之擁塞管理,即隊列調度
1, 優先級隊列調度(PQ Priority Queuing)
默認8個隊列,0-7,優先級依次升高,只有當高優先級的隊列中的報文,發送完畢,低優先級的隊列報文才能發送。
缺點:低優先級的隊列里的報文無法發送。
2, 加權循環調度(WRR Weight Round Robin)
設備根據每個隊列的權值進行調度,每調度一輪權值減1,當權值為0時,停止調度,當所有隊列的權值為0時,開始下一輪調度。

缺點:WRR調度是以報文為單位,長的報文獲得的帶寬要要大於短報文的實際帶寬。
3, 加權赤字循環調度(WDRR Weighted Deficit Round Robin)
以報文的長度為權重來進行調度,初始情況下赤字為0,發送報文,當發送完報文后,根據報文長度重新計算赤字,如果為負值則停止調度,只有當赤字大於0的時候,才能調度成功並發送報文。

假設根據權重Q7,Q6能獲取的帶寬分別為400byte/s , 300byte/s
第1輪調度
Deficit[7][1] = 0+400 = 400,Deficit[6][1] = 0+300 = 300,從Q7隊列取出一個900byte的報文發送,從Q6隊列取出一個400byte的報文發送;發送后,Deficit[7][1] = 400–900 =–500,Deficit[6][1] = 300–400 =–100。
第2輪調度
Deficit[7][2] = -500+400 = -100,Deficit[6][2] = -100+300 = 200,Q7隊列Deficit值小於0,此輪不參與調度,從Q6隊列取出一個300byte的報文發送;發送后,Deficit[6][2] = 200–300 =–100。
第3輪調度
Deficit[7][3] = -100+400 = 300,Deficit[6][3] = -100+300 = 200,從Q7隊列取出一個600byte的報文發送,從Q6隊列取出一個500byte的報文發送;發送后,Deficit[7][3] = 300–600 =–300,Deficit[6][3] = 200–500 =–300。
這樣可以使隊列獲取一個合理的帶寬。
QOS術語之隊列
隊列分為硬件隊列和軟隊列,只有當硬件隊列滿的時候才會啟用軟隊列。硬件隊列只有FIFI,QOS調度其實是將軟隊列中的報文放入硬件隊列。擁塞產生時,說明硬件隊列已滿,此時會調用軟件隊列,
如果隊列長度過長,丟包減少,時延增大;如果隊列太短,時延減少,但是丟包增多。
流量監管:用令牌桶算法對報文進行限速,讓符合規則的報文進行轉發,讓不符合規則的報文進行丟棄
流量整形:用令牌桶算法對不符合規則的報文緩存后再發送
擁塞管理:就是隊列調度
擁塞避免:通過主動丟包避免擁塞的發生
QOS技術之擁塞避免:
1, 尾丟棄(Tail-Drop):當隊列已滿的時候,后來的報文全部丟棄。這種擁塞避免的方式缺點:造成TCP流量忽大忽小。
2, RED(Random Early Detection):需要設置緩存閾值,閾值有最大值和最小值,當隊列長度小於緩存最小值時,不丟包;當隊列長度處於緩存最大值最小值之間時,隨機丟棄,按照丟包率進行丟包;
當隊列長度大於緩存最大值時,全部丟棄。這里的隊列長度是指報文所需要的隊列長度,其實也就是報文長度。
3, WRED(Weighted Random Early Detection):就是在RED算法前加上一個權值,讓優先級高的報文不容易丟棄。
文章出處:
https://www.cnblogs.com/ZCplayground/p/9451935.html
http://www.h3c.com/cn/d_201104/922145_30005_0.htm
