Qos綜述
QoS(Quality of Service)技術就是在這種背景下發展起來的。QoS即服務質量,其目的是針對各種業務的不同需求,為其提供端到端的服務質量保證。QoS不會增加網絡帶寬,它是有效利用現有網絡資源的工具,它允許不同的流量不平等的競爭網絡資源,語音、視頻和重要的數據應用在網絡設備中可以優先得到服務。QoS技術在當今的互聯網中應用越來越多,其作用越來越重要。
DiffServ模型
目前存在多種QoS服務模型,其中應用最廣的是差分服務模型(DiffServ,Differentiated Services)。
DiffServ模型的基本原理是將網絡中的流量分成多個類,每個類得到不同的處理,尤其是網絡出現擁塞時不同的類會享受不同級別的處理。而同一類的業務在網絡中會被聚合起來統一發送,保證相同的時延、抖動、丟包率等QoS指標。
QoS報文分類方式
簡單流分類——QoS優先級分類
簡單流分類就是指採用簡單的規則,根據報文中的某個優先級字段,對報文進行粗略的分類。
外部優先級
又稱為報文優先級、QoS優先級,即使用報文中某些特定字段比如VLAN報文的802.1p值、IP報文的DSCP值等記錄QoS信息。需要注意的是,設備只可以根據設備內部優先級處理收到的報文,為不同的業務提供不同的QoS服務,所以上述外部優先級在進入設備後會映射為設備內部的優先級。
內部優先級
又稱為服務等級(Class of Service)、PHB行為(Per Hop Behavior)、本地優先級,支持8種取值,優先級從高到低依次為CS7、CS6、EF、AF4、AF3、AF2、AF1、BE,與出端口的8個隊列從高到低依次對應。因此內部優先級決定了報文在設備內部所屬的隊列。當針對某一個隊列配置QoS業務時,即對所有通過該隊列轉發的報文都設置了相同的QoS服務。
丟棄優先級
又稱為顏色(Color),是指報文在設備內部的丟棄優先級,用於決定當一個隊列發生擁塞時報文的丟棄順序,對內部優先級與隊列的映射關係沒有影響,丟棄優先級有3種取值,IEEE定義的優先級從低到高依次為Green、Yellow、Red。缺省情況下,丟棄優先級越高,則隊列發生擁塞時,對應優先級的報文會被優先丟棄。
然而報文是否會被優先丟棄實際取決於參數的配置。例如,配置WRED丟棄模板中Green最大隻能使用50%緩存,Red最大可以使用100%緩存,則隊列發生擁塞時,標記為Green的報文將比標記為Red的報文優先丟棄。
複雜流分類——MQC流分類
複雜流分類即採用複雜的規則,如由五元組(源地址、源端口號、協議號碼、目的地址、目的端口號)對報文進行精細的分類,通過將某些具有相同特徵的報文劃分為一類,併為這一類報文提供相同的QoS服務。複雜流分類可以通過模塊化QoS命令行MQC(Modular QoS Command-Line Interface)中的流分類實現。MQC包含三個要素,分別是流分類、流行為和流策略,三要素通過下面的方式配合使用完成對流量的處理:
- 配置流分類,定義報文匹配規則。
- 配置流行為,確定報文處理動作。根據不同的流行為,可以實現不同的QoS功能,本文提供了基於MQC的流量統計配置、報文過濾配置和報文重標記配置的詳細配置指南。
- 配置流策略,並將配置好的流分類和流行為綁定到一起後在指定視圖下應用流策略。
複雜流分類與簡單流分類的關係
通過複雜流分類也可以對特定的QoS優先級報文進行識別,只是需要以MQC流分類的方式去實現。總而言之,需要配置MQC流分類去實現的報文分類都屬於複雜流分類;不需要配置MQC流分類,直接根據報文中的外部優先級映射的內部優先級和丟棄優先級去進行報文分類的就是簡單流分類。
QoS服務技術
流量監管、流量整形和接口限速
為了使有限的網絡資源更有效的為用户服務,就需要對進入網絡設備的業務流量加以限制。流量監管、流量整形和接口限速技術規定了允許通過網絡設備的不同業務流量的基本帶寬(限速),監督進入網絡設備的業務流量速率(測速),當業務流量超過基本帶寬(超速)時,將超速的流量進行丟棄或者緩存(懲罰),從而達到限制流量、提高資源使用效率的目的,進而保證更好的為用户提供服務。
流量監管:將流量限制在特定的帶寬內。當業務流量超過額定帶寬時,超過的流量將被丟棄。這樣可以防止個別業務或用户無限制地佔用帶寬。
流量整形:是一種主動調整流的輸出速率的流控措施,使流量比較平穩地傳送給下游設備,避免不必要的報文丟棄和擁塞。與流量監管直接將超速的報文丟棄不同,流量整形可以對超速的報文進行緩存以達到均勻向外發送報文流量的目的。
接口限速:是對一個接口上發送或者接收全部報文的總速率進行限制,接口限速可以通過流量監管或流量整形的方式去實現。
擁塞避免
擁塞避免是指通過監視網絡資源(如隊列或內存緩衝區)的使用情況,在擁塞發生或有加劇趨勢時主動丟棄報文,通過調整網絡的流量來解除網絡過載的一種擁塞控制機制。
擁塞管理
擁塞管理是一項基於隊列的技術。當網絡發生擁塞時,報文會在隊列中緩存,此時擁塞管理會提供某種調度算法安排報文的轉發次序,保障一些需要更高質量的QoS服務的業務比如時延敏感業務可以優先調度。
QoS業務的處理流程
MQC簡介
模塊化QoS命令行MQC(Modular QoS Command-Line Interface)是指通過將具有某類共同特徵的報文劃分為一類,併為同一類報文提供相同的服務,也可以對不同類的報文提供不同的服務。
MQC三要素
MQC包含三個要素:流分類(traffic classifier)、流行為(traffic behavior)和流策略(traffic policy)。
流分類
流分類用來定義一組流量匹配規則,以對報文進行分類。
流分類中各規則之間的關係分為:and或or,缺省情況下的關係為or。
and:當流分類中包含ACL規則時,報文必須匹配其中一條ACL規則以及所有非ACL規則才屬於該類;當流分類中沒有ACL規則時,報文必須匹配所有非ACL規則才屬於該類。
or:報文只要匹配了流分類中的一個規則,設備就認為報文屬於此類。
流行為
流行為用來定義針對某類報文所做的動作。
流策略
流策略用來將指定的流分類和流行為綁定,對分類後的報文執行對應流行為中定義的動作
MQC配置流程
- 配置流分類:按照一定規則對報文進行分類,是提供差分服務的基礎。
- 配置流行為:為符合流分類規則的報文指定流量控制動作。
- 配置流策略:將指定的流分類和指定的流行為綁定,形成完整的策略。
- 應用流策略:按照需要在相應的視圖下應用流策略。
流策略的應用
- 在接口上應用流策略
- 在VLAN上應用流策略
- 在全局或單板上應用流策略
- 在VPN實例上應用流策略
- 在QoS組上應用流策略
配置應用流策略時採用資源節約模式
在系統視圖下執行命令traffic-policy resource-saving-mode,開啓應用流策略時採用資源節約模式的功能。缺省情況下,未開啓應用流策略時採用資源節約模式的功能。
配置應用流策略時採用增強模式
執行命令traffic-policy ipv4-enhance-mode { loose | strict }或traffic-policy ipv6-enhance-mode { loose | strict },開啓應用流策略時採用增強模式的功能。缺省情況下,未開啓應用流策略時採用增強模式的功能。
檢查MQC的配置結果
執行命令display traffic classifier [ classifier-name ],查看已配置的流分類信息。
執行命令display traffic behavior [ behavior-name ],查看已配置的流行為信息。
執行命令display traffic policy [ policy-name [ classifier classifier-name ] ],查看已配置的流策略信息。
執行命令display traffic-policy applied-record [ policy-name ] [ global [ slot slot-id ] | interface interface-type interface-number | vlan vlan-id | vsi vsi-name | vpn-instance vpn-instance-name | qos group group-id | bridge-domain bd-id ] [ inbound | outbound ],查看指定流策略的應用記錄。
優先級映射配置
不同的報文使用不同的QoS優先級,例如VLAN報文使用802.1p,IP報文使用DSCP,MPLS報文使用EXP。當報文經過不同網絡時,為了保持報文的優先級,需要在連接不同網絡的網關處配置這些優先級字段的映射關係。
QoS優先級字段
Precedence****字段
IP報文頭ToS(Type of Service)域由8個比特組成,其中3個比特的Precedence字段標識了IP****報文的優先級
比特0~2表示Precedence字段,代表報文傳輸的8個優先級,按照優先級從高到低順序取值為7、6、5、4、3、2、1和0。最高優先級是7或6,經常是為路由選擇或更新網絡控制通信保留的,用户級應用僅能使用0~5。
除了Precedence字段外,ToS域中還包括D、T、R三個比特:
- D比特表示延遲要求(Delay,0代表正常延遲,1代表低延遲)。
- T比特表示吞吐量(Throughput,0代表正常吞吐量,1代表高吞吐量)。
- R比特表示可靠性(Reliability,0代表正常可靠性,1代表高可靠性)。
- ToS域中的比特6和7標識顯式擁塞通告字段ECN。
DSCP字段
RFC1349重新定義了IP報文中的ToS域,增加了C比特,表示傳輸開銷(Monetary Cost)。之後,IETF DiffServ工作組在RFC2474中將IPv4報文頭ToS域中的比特0~5重新定義為DSCP,並將ToS域改名為DS(Differentiated Service)字節。
DS字段的前6位(0位~5位)用作區分服務代碼點DSCP(DS Code Point),後2位(6位、7位)是保留位。DS字段的前3位(0位~2位)是類選擇代碼點CSCP(Class Selector Code Point),相同的CSCP值代表一類DSCP。DS節點根據DSCP的值選擇相應的PHB(Per-Hop Behavior)。
VLAN幀頭中的802.1p****優先級
通常二層設備之間交互VLAN幀。根據IEEE 802.1Q定義,VLAN幀頭中的PRI****字段(即802.1p優先級),或稱CoS(Class of Service)字段,標識了服務質量需求。
在802.1Q頭部中包含3比特長的PRI字段和1比特長的CFI****字段。PRI字段定義了8種業務優先級CoS,按照優先級從高到低順序取值為7****、6、5、4、3、2、1和****0。CFI****字段可以用來標識報文的丟棄優先級。
MPLS EXP字段
對於MPLS報文,通常將標籤信息中的EXP域作為MPLS報文的CoS域,與IP網絡的ToS域等效,用來區分數據流量的服務等級,以支持MPLS網絡的DiffServ。EXP字段表示8個傳輸優先級,按照優先級從高到低順序取值為7****、6、5、4、3、2、1和****0。
優先級映射的應用場景
現在需要在整個網絡中對三類業務區分優先級,保證語音優先級一直最高、視頻其次、數據優先級最低,這樣設備可以根據優先級的高低對三類業務提供不同的QoS服務。
- SwitchA入方向配置流策略將語音、視頻、數據三類業務重標記不同的802.1p優先級和DSCP優先級,其中語音優先級最高、視頻其次、數據最低。
- SwitchA入方向將802.1p優先級映射為服務等級和顏色,SwitchA根據服務等級和顏色為報文提供不同的QoS服務。
- SwitchB入方向將DSCP優先級映射為服務等級和顏色,SwitchB根據服務等級和顏色為報文提供不同的QoS服務。
流量監管
流量監管TP(Traffic Policing)可以監督不同流量進入網絡的速率,對超出部分的流量進行“懲罰”,使進入的流量被限制在一個合理的範圍之內,從而保護網絡資源和用户的利益。
Meter:通過令牌桶機制對網絡流量進行度量,向Marker輸出度量結果。
Marker:根據Meter的度量結果對報文進行染色,報文會被染成green、yellow、red三種顏色。缺省情況下,green**、yellow進行轉發**,red****報文丟棄。
Action:根據Marker對報文的染色結果,對報文進行一些動作,動作包括:
pass:對測量結果為“符合”的報文繼續轉發。
remark + pass:對測量結果為“不符合”的報文修改其內部優先級後再轉發。
discard:對測量結果為“不符合”的報文進行丟棄。
流量監管的應用
流量監管配置示例
基礎配置
vlan batch 10 20 30
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
interface GigabitEthernet0/0/3
port link-type access
port default vlan 30
配置流分類
創建流分類c1~c3,對來自服務器的不同業務流按照其VLAN ID進行分類
traffic classifier c1
if-match vlan-id 10
traffic classifier c2
if-match vlan-id 20
traffic classifier c3
if-match vlan-id 30
配置流行為
創建流行為b1~b3,對不同業務流進行流量監管
traffic behavior b1
car cir 2000
statistic enable
traffic behavior b2
car cir 4000
statistic enable
traffic behavior b3
car cir 8000
配置流策略
traffic policy p1
classifier c1 behavior b1
classifier c2 behavior b2
classifier c3 behavior b3
應用流策略到端口
interface g0/0/4
traffic-policy p1 inbound
查看配置結果
查看流策略
查看流策略應用情況
查看流策略統計信息
流量整形
流量整形TS(Traffic Shaping)是一種主動調整流量輸出速率的措施。流量整形將上游不規整的流量進行削峯填谷,使流量輸出比較平穩,從而解決下游設備的擁塞問題。流量整形通常使用緩衝區和令牌桶來完成,當報文的發送速度過快時,首先在緩衝區進行緩存,在令牌桶的控制下,再均勻地發送這些被緩衝的報文。
具體處理流程如下:
- 當報文到來的時候,首先對報文進行分類,使報文進入不同的隊列。
- 若報文進入的隊列沒有配置隊列整形功能,則直接發送該隊列的報文;否則,進入下一步處理。
- 按用户設定的隊列整形速率向令牌桶中放置令牌:
如果令牌桶中有足夠的令牌可以用來發送報文,則報文直接被髮送,在報文被髮送的同時,令牌做相應的減少。
如果令牌桶中沒有足夠的令牌,則將報文放入緩存隊列,如果報文放入緩存隊列時,緩存隊列已滿,則丟棄報文。
緩存隊列中有報文的時候,會與令牌桶中的令牌數作比較,如果令牌數足夠發送報文則轉發報文,直到緩存隊列中的報文全部發送完畢為止。
流量整形的應用
當計算服務器進行大規模計算時,會向Web服務器發送大量結果數據,造成SwitchA入方向突發流量,有可能會在SwithcC與SwitchA連接接口的出方向造成擁塞。此時可以在該接口的出方向配置流量整形,將突發流量均勻的向Web服務器發送。
流量整形配置示例
Switch通過接口10GE1/0/2與路由器互連,數據中心有三台服務器分別為用户提供語音、視頻、數據服務,不同業務的報文使用802.1p優先級進行標識,語音、視頻、數據報文的802.1p優先級分別為5、3、2,當報文從10GE1/0/2接口到達路由器時可能會發生抖動。為了減少帶寬抖動,同時保證各類業務帶寬要求,現要求如下:
接口保證帶寬為12000kbit/s。
語音保證帶寬為3000kbit/s,峯值帶寬為5000kbit/s。
視頻保證帶寬為5000kbit/s,峯值帶寬為8000kbit/s。
數據保證帶寬為2000kbit/s,峯值帶寬為3000kbit/s。
基礎配置
vlan batch 10 20 30
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
interface GigabitEthernet0/0/3
port link-type access
port default vlan 30
配置出接口限速
qos lr outbound cir 12000
配置端口隊列流量整形
int g0/0/4
qos queue 2 shaping cir 2000 pir 3000
qos queue 3 shaping cir 5000 pir 8000
qos queue 5 shaping cir 3000 pir 5000
查看配置結果
接口限速
接口限速LR(Line Rate)可以對一個接口上發送或者接收全部報文的總速率進行限制。當不需要區分報文類型而要限制通過接口全部流量速率時,接口限速功能可以簡化配置。
接口限速也是採用令牌桶進行流量控制。如果在設備的某個接口配置了接口限速,所有經由該接口發送的報文首先要經過接口限速的令牌桶進行處理。如果令牌桶中有足夠的令牌,則報文可以發送;否則,報文將被丟棄或者被緩存。這樣,就可以對通過該接口的報文流量進行控制。
接口限速的應用
在數據中心網絡中,存在語音、視頻和數據等多種不同的業務,當大量流量進入網絡側時,可能會因為帶寬不足產生擁塞,因此需要對進入網絡側的流量進行限制。在SwitchB入接口上配置接口限速,使流量在進入Network之前就被限制在規定範圍內,超出的部分將被丟棄。
擁塞避免和擁塞管理
擁塞避免
擁塞避免是指通過監視網絡資源(如隊列或內存緩衝區)的使用情況,在擁塞發生或有加劇趨勢時主動丟棄報文,通過調整網絡的流量來解除網絡過載的一種流量控制機制。
設備支持以下擁塞避免功能:
尾部丟棄
傳統的丟棄策略採用尾部丟棄的方法,同等對待所有報文,不對報文進行服務等級的區分。在擁塞發生時,隊列尾部的數據報文將被丟棄,直到擁塞解除。
這種丟棄策略會引起TCP全局同步現象。所謂TCP全局同步現象,是指當多個隊列同時丟棄多個TCP連接報文時,將造成一些TCP連接同時進入擁塞避免和慢啓動狀態,降低流量以解除擁塞;而後這些TCP連接又會在某個時刻同時出現流量高峯。如此反覆,使網絡流量忽大忽小,影響鏈路利用率。
缺省情況下,接口採用尾部丟棄的丟棄策略。
WRED
加權隨機先期檢測WRED(Weighted Random Early Detection)基於丟棄參數隨機丟棄報文。考慮到高優先級報文的利益並使其被丟棄的概率相對較小,WRED可以為不同業務的報文指定不同的丟棄策略。此外,通過隨機丟棄報文,讓多個TCP連接不同時降低發送速度,避免了TCP全局同步現象。
WRED技術為每個隊列的長度都設定了閾值上下限,並規定:
當隊列的長度小於閾值下限時,不丟棄報文。
當隊列的長度大於閾值上限時,丟棄所有新收到的報文。
當隊列的長度在閾值下限和閾值上限之間時,開始隨機丟棄新收到的報文。方法是為每個新收到的報文賦予一個隨機數,並用該隨機數與當前隊列的丟棄概率比較,如果大於丟棄概率則報文被丟棄。隊列越長,報文被丟棄的概率越高。
擁塞避免的應用場景
由於廣域網帶寬小於局域網的帶寬,位於廣域網和局域網之間的邊緣設備將可能發生擁塞,此時可以通過配置擁塞避免,主動丟棄優先級較低的報文(比如數據報文等),減少網絡的擁塞,保證高優先級業務正常運行
擁塞管理
擁塞管理是指在網絡間歇性出現擁塞,時延敏感業務要求得到比其他業務更高質量的QoS服務時,通過調整報文的調度次序來滿足時延敏感業務高QoS服務的一種流量控制機制。
設備支持以下擁塞管理功能:
PQ調度
優先隊列PQ(Priority Queuing)調度,就是嚴格按照隊列優先級的高低順序進行調度。只有高優先級隊列中的報文全部調度完畢後,低優先級隊列才有調度機會。
採用PQ調度方式,將時延敏感業務放入高優先級隊列,將其他業務放入低優先級隊列,從而確保時延敏感業務被優先調度。
PQ調度的缺點是:擁塞發生時,如果高優先級隊列中長時間有報文存在,那麼低優先級隊列中的報文就會得不到調度機會。
WRR調度
WRR(Weighted Round Robin)調度即加權輪詢調度。WRR在隊列之間進行輪流調度,保證每個隊列都得到一定的服務時間。
以接口有8個輸出隊列為例,WRR為每個隊列配置一個加權值(依次為w7、w6、w5、w4、w3、w2、w1、w0),加權值表示獲取資源的比重。舉個更具體的例子,一個100M的接口,配置它的WRR算法的加權值為50、50、30、30、10、10、10、10(依次對應w7、w6、w5、w4、w3、w2、w1、w0),這樣可以保證最低優先級隊列至少獲得5M帶寬,避免了採用PQ調度時低優先級隊列中的報文可能長時間得不到服務的缺點。
WRR還有一個優點:雖然多個隊列的調度是輪流進行的,但對每個隊列不是固定地分配服務時間片,也就是説如果某個隊列為空,馬上換到下一個隊列進行調度,這樣帶寬資源可以得到充分的利用。
WRR調度有兩個缺點:
WRR調度按照報文個數進行調度,而用户一般關心的是帶寬。當每個隊列的平均報文長度相等或已知時,通過配置WRR權重,用户能夠獲得想要的帶寬;但是,當隊列的平均報文長度變化時,用户就不能通過配置WRR權重獲取想要的帶寬。
時延敏感業務(如語音)得不到及時調度。
DRR調度
赤字輪詢調度DRR(Deficit Round Robin)調度實現原理與WRR調度基本相同。
DRR調度與WRR調度的區別是:WRR調度是按照報文個數進行調度,而DRR是按照報文長度進行調度。如果報文長度超過了隊列的調度能力,DRR調度允許出現負權重,以保證長報文也能夠得到調度。但下次輪詢調度時該隊列將不會被調度,直到權重為正,該隊列才會參與DRR調度。
PQ+WRR/PQ+DRR調度
PQ調度和WRR/DRR調度各有優缺點。單純採用PQ調度時,低優先級隊列中的報文長期得不到帶寬,而單純採用WRR/DRR調度時低延時需求業務得不到優先調度,PQ+WRR/PQ+DRR調度方式則將前兩種調度方式結合起來,不僅能發揮兩種調度的優勢,而且能克服兩種調度各自的缺點。
用户可以藉助PQ+WRR/PQ+DRR調度方式,將重要的協議報文和時延敏感業務報文放入PQ隊列中進行調度,併為該隊列分配指定帶寬;而將其他報文按各自的優先級放入採用WRR/DRR調度的各隊列中,按照權值對各隊列進行循環調度。
WFQ調度
公平隊列FQ(Fair Queuing)的目的是儘可能公平地分享網絡資源,使所有流的延遲和抖動達到最優
PQ+WFQ調度
PQ調度和WFQ調度各有優缺點。單純採用PQ調度時,低優先級隊列中的報文可能長期得不到帶寬,而單純採用WFQ調度時低延時需求業務得不到優先調度,“PQ+WFQ”調度方式則將前兩種調度方式結合起來,不僅能發揮兩種調度的優勢,而且能克服兩種調度各自的缺點。
用户可以藉助“PQ+WFQ”調度方式,將重要的協議報文和有低延時需求的業務報文放入PQ隊列中進行調度,併為該隊列分配指定帶寬;而將其他報文按各自的優先級放入採用WFQ調度的各隊列中,按照權值對各隊列進行調度。
擁塞管理的應用場景
在設備出方向為不同的隊列配置不同的調度方式,可以達到對不同業務進行差分服務的目的。
報文過濾
通過MQC實現報文過濾。
網絡中存在大量不信任報文,所謂的不信任報文是指對用户來説存在安全隱患或者不願意接收的報文,部署報文過濾可以將這類報文直接丟棄,以提高用户在網絡中的安全性。
當用户認為某類報文不可信時,可以通過MQC將這類報文與其他報文區別出來並進行丟棄;同樣的,當用户認為某類報文可信時,也可以通過MQC將這類報文與其他報文區別出來並允許通過。
與黑名單相比,通過MQC實現報文過濾可以對報文進行更精細的劃分,在網絡部署時更加靈活。
報文過濾應用場景
為了保證教學質量與紀律,校方規定多媒體教室只能訪問FTP服務器,但是老師辦公室既可以訪問FTP服務器也可以訪問Web服務器。
報文過濾實例
實現PC2不能訪問****PC4
配置ACL
acl number 3001
rule 5 permit ip source 192.168.1.1 0 destination 192.168.1.4 0
配置流分類
traffic classifier c1
if-match acl 3001
配置流行為
traffic behavior b1
deny
statistic enable
配置流策略
traffic policy p1
classifier c1 behavior b1
在端口上應用流策略
interface GigabitEthernet0/0/24
traffic-policy p1 outbound
結果驗證