關鍵業務服務保證技術QoS理論和實踐
什麼是QoS
QoS(Quality of Service,服務質量)是指管理數據流量以減少網絡上的數據包丟失、延遲和抖動的服務保證技術。QoS通過為網絡上特定類型的數據設置差異的優先級來控制和管理網絡資源。如果沒有QoS,網絡數據可能變得雜亂無章,在網絡帶寬阻塞情況下,數據的完整性和安全性有可能受到損壞,甚至會出現網絡完全中斷情況。QoS技術本身不會給網絡增加帶寬,而是在網絡中有限的帶寬資源下,如何平衡地在網絡中為各種業務分配帶寬,針對各種業務流量的業務價值需求,為其提供服務質量保證。換句話說,網絡在一定時間內只能傳輸這麼多信息。因此,QoS 工具以某種方式對數據包進行優先級排序,以確保在固定時間內使用帶寬來提供可能的最佳服務。
QoS好處
QoS 它保證企業網絡中運行的應用程序的可用性,通過部署QoS來滿足關鍵業務、實時語音、視頻等敏感應用的流量要求,使網絡提供安全、高效的數據傳輸,並防止因數據包丟失、延遲、抖動而導致的質量下降。通過部署QoS讓網絡現有帶寬資源得到有效合理利用,而不是一味的投入成本去升級網絡基礎設施來擴展網絡帶寬。具體的好處包括:關鍵業務應用程序可以得到它所需要的資源、網絡管理員可以更好地管理網絡中的流量、企業消除升級基礎設施的需要來降低成本、用戶的體驗得到改善。
QoS通常運用場景
企業的廣域網通過租用運營商專線連接總部與各地分支機構,並配備冗餘線路來提高網絡可用性,由於運營商專線普遍採用帶寬計價模式,所以廣域網日常運營成本高昂。同時根據業務管理需要,企業一般會對廣域網承載的流量進行管理和劃分,一般會劃分為語音、視頻、生產、辦公、測試、大數據傳輸等多個類似類型。由於廣域網不同流量的業務價值不同,網絡管控的要求不同,流量特點各異,對延時和帶寬要求也各不相同;如何能夠在廣域網線路上合理的規劃和分配線路資源,這時就需要使用QoS進行針對性的業務保障和管控。
QoS度量參數
企業可以通過使用多個參數來定量測量,為關鍵業務提供服務保證,使其達到預期的服務水平,參數包括如下:
Ø丟包率:這是數據包在網絡傳輸過程中丟失報文的百分比,當網絡鏈路發生擁塞並且路由器和交換機開始丟棄數據包時,就產生了丟包率。當隊列或等待發送的數據包溢出時,數據包被丟棄。數據包如果在實時通信(例如語音或視頻通話)期間丟失,語音可能會出現不清晰、不連貫,視頻可能會出現卡頓、失幀等。
Ø抖動:這是網絡擁塞、定時漂移和路由更改的結果。過多的抖動會降低語音和視頻通信的質量。
Ø延遲:這是數據包從源到目的地所需的時間,延遲應盡可能的小,如果IP語音呼叫有大量延遲,用戶可能會感覺到迴聲和重疊音頻情況。
Ø帶寬:這是網絡通信鏈路在給定時間內將最大量的數據從一個點傳輸到另一個點的能力。QoS 通過管理帶寬和為具有更嚴格性能要求的高優先級應用程序提供比其他應用程序更多的資源來優化網絡性能。
Ø平均意見得分( MOS ): 這是使用五分制對語音質量進行評級的指標,五分錶示最高質量。
QoS三種服務模型
網絡應用都是端到端的通信,兩個主機進行通信,中間可能要跨越多個物理網絡,經過多個路由器,要實現端到端的QoS,就必須從全局考慮。QoS的服務模型就是研究採用什麼模式實現全局的服務質量保證。
Ø盡力而為服務模型(Best-Effort):最簡單的QoS服務模型,網絡中所有數據包都是相同的優先級,網絡盡最大努力來發送報文,但並不保證數據包的交付;當網絡中未配置QoS 策略或基礎設施不支持QoS 時,業務流量將在Best Effort中傳輸。
Ø綜合服務(IntServ):IntServ模型是指應用程序在發送報文前,需要通過信令(signaling)向網絡描述它的流量參數,申請特定的QoS服務。IntServ模式是在網絡上的特定路徑保留帶寬。應用程序向網絡請求資源預留,網絡設備監控數據包流以確保網絡資源可以交付數據包。實施IntServ 需要支持IntServ 的路由器,並使用資源預留協議( RSVP ) 進行網絡資源預留。但IntServ可擴展性有限,對網絡資源消耗大。
Ø差異化服務( DiffServ ):DiffServ模型的是將網絡中的流量分成多個類,每個類享受不同的處理,尤其是網絡出現擁塞時不同的類會享受不同的優先處理,從而得到不同的丟棄率、時延以及時延抖動。例如,可以為語音流量分配比其他類型流量更高的優先級,使用差分服務代碼點(DSCP) 為數據包分配優先級以進行分類。與Intserv模型相比,DiffServ模型不需要信令。在DiffServ模型中,應用程序發出報文前,不需要預先向網絡提出資源申請,而是通過設置IP報文頭部的QoS參數信息,來告知網絡節點它的QoS需求。網絡不需要為每個流維護狀態,而是根據每個報文流指定的QoS參數信息來提供服務,對報文的服務等級劃分,有差別地進行流量控制和轉發,提供端到端的QoS保證。
QoS機制
某些 QoS 機制可以管理數據流量質量並維護SLA 中指定的QoS 要求。QoS 機制屬於特定類別,具體取決於它們在管理網絡中所扮演的角色。
Ø分類和標記:區分應用程序並將數據包分類為不同的流量類型,將每個數據包指示為網絡類別的成員,識別流量並對其進行標記,以確保其他網絡設備可以識別並確定其優先級。分類和標記在路由器、交換機和接入點等網絡設備上實現,一般在網絡設備入方向配置。
Ø擁塞管理:使用數據包分類和標記來確定將數據包放入哪個隊列,擁塞管理工具包括優先級隊列、先進先出和低延遲隊列。
Ø擁塞避免:監控網絡流量的擁塞情況,並在發生擁塞時丟棄低優先級的數據包。擁塞避免包括加權隨機檢測(WRED)和隨機早期檢測(RED),其中WRED為丟棄低優先級數據流以保護高優先級數據免受網絡擁塞的影響。
Ø流量整形:與擁塞避免類似,區別於將超額流量排入緩衝區而不是完全丟棄它們。流量整形一般優先考慮實時應用程序而不是相對於時間敏感度較低的應用程序,例如電子郵件和消息傳遞。流量整形工具包括緩衝區、通用流量整形和幀中繼流量整形。
QoS部署位置及方向
針對限速策略,應該盡可能的部署在流量始發地最近的入方向。針對保障策略,QoS應部署在流量出接口的出方向。對於雙向流量,需要在出方向線路的兩端設備分別部署QoS;對於單向數據傳輸流量,可僅在數據傳輸出口方向部署QoS。
流量分類基本原則
QoS分為保障類和限制類。對關鍵、重要業務流量,對時延敏感的重要流量,應使用保障類隊列,即在鏈路流量擁塞時,保障隊列中的流量可在一定限度內優先轉發。流量大重要性高的業務應對其進行滿足業務需求帶寬保證加限制。流量大且重要性低的業務流量應對其進行限制,以避免其對非保障隊列裡的其他流量造成影響。
常見QoS類型
Ø優先級隊列(PQ)會先服務高優先級的隊列,高優先級子隊列裡沒有數據後,再服務中等優先級子隊列,依次類推。如果PQ正在服務中等優先級子隊列,但是高優先級裡又來了數據包,則PQ會中斷中等優先級子隊列的服務,轉而服務高優先級子隊列。每一個子隊列都有一個最大隊列深度,如果達到了最大隊列深度,則進行尾丟棄。PQ的最大缺點是低優先級隊列會被“餓死”,因為只有高優先級隊列裡有數據,PQ就不會服務低優先級隊列。因此在流量簡單且優先級明確的情況下,可以謹慎使用此種方式;在復雜流量線路上應盡量避免使用PQ,若需要使用PQ可以結合限速來保證其他隊列流量的傳輸。
Ø基於類的加權公平隊列(CBWFQ)通常使用ACL定義數據流類別,並將注入寬帶和隊列限制等參數應用於這些類別。CBWFQ是網絡中的一種隊列配置方案,其允許通信基於標準分類。CBWFQ能夠給不同的類保障一定的帶寬,對傳統的WFQ(加權公平隊列)作了擴展支持用戶自己定義流量的分類,隊列的個數和類別是一一對應,給每個class保留帶寬。CBWFQ使用較為靈活,可以由管理員對流量進行靈活分類。
Ø低延遲隊列(LLQ)為基於類別的加權公平排隊(CBWFQ)提供絕對優先排隊功能,減少了語音會話的抖動。LLQ相當於CBWFQ加上一個嚴格優先級隊列,該隊列優先級高於其他所有隊列,非常適合時延敏感性應用。LLQ的嚴格優先級隊列是一個有最小保證帶寬的優先級隊列,出現擁塞時,該隊列的數據量不能超過所允許的帶寬,否則會被丟棄。LLQ最大優勢是可以為時延和抖動敏感型應用的流量提供一個或多個有帶寬保證的嚴格優先級隊列,LLQ並不局限於特定平台或傳輸介質。在有語音、視頻傳輸的鏈路上,可以考慮使用此種隊列。
Ø流量限制,需要進行速度限制的流量,大多在Best-effort隊列中,當然也可新建隊列,並對整個隊列進行速度限制。對於不重要且流量大的數據流,需要進行限制處理,即使鏈路空閒,該部分流量也會被限制。該部分流量可降低其優先級,或提高其丟棄優先級。
QoS部署注意事項
ØPQ隊列存在“餓死”的可能性,應謹慎選擇或配合流量限制使用,由於PQ隊列優先級最高,配置PQ隊列後,其他隊列都需要給它讓路,這樣容易造成其他隊列被“餓死”,在配置時因充分考慮或選擇配合流量限制進行使用。
Ø網絡協議流量(一般默認高優先級隊列)、監控流量應予以保障,否則可能會因網絡協議流量擁塞造成鄰居中斷,或監控流量擁塞造成監控失效或誤報。
Ø部署QoS時應根據需求從全局視角去規劃帶寬,並選擇合適的模型,保障QoS設計的帶寬小於實際使用帶寬;針對複雜且關鍵的網絡節點部署QoS,建議能在測試環境中通過打流測試,驗證策略的可用性。
Ø部署QoS應考慮鏈路中斷造成的流量切換。例如鍊路A上部署的QoS,也應部署在其備份鏈路上。考慮到實際流量情況,在備份鏈路部署的QoS可以不同於主鏈路的QoS,但保障關鍵、重要業務的總原則不應改變。
Ø網絡管理員應定期對QoS策略進行重檢,應定期與應用管理員梳理所有應用系統的行為,並按照梳理結果對QoS策略進行調整或增減。
Ø在網絡設備上提前部署限速策略並製定操作工具箱,當網絡中突然出現大流量數據傳輸時,可以通過工具箱快速將其放入限制策略中,來避免網絡告警。
QoS的配置實例
Ø華為路由器
l 入向限制策略 //流定義 acl name AAA //流分類,匹配定義流 traffic classifier AAA AAA //流行為,限制多少帶寬 traffic behavior AAA xxxxx kbps //流行為,限制多少帶寬 traffic policy AAA AAA behavior AAA //鏈路入接口調用 interface x/x/x AAA inbound l 出向QOS保障策略 //流定義 acl name AAA advance //流分類,匹配定義流,允許匹配多個ACL流 traffic classifier AAA AAA //流行為,標記DSCP traffic behavior AAA af42 //流策略關聯 traffic policy IN-QUEUE classifier AAA behavior AAA //流量入接口調用流策略標記DSCP值 interface IN-QUEUE //流量出接口配置流量調度策略 interface x/x/x port shaping af4 wfq weight 20 l HQoS分層調度策略 //流定義 acl name AAA //流分類,匹配定義流,允許匹配多個ACL流 traffic classifier AAA AAA //流行為,標記DSCP traffic behavior AAA ef //流策略關聯 traffic policy IN-QUEUE classifier AAA behavior AAA //流隊列調度方式 flow-queue BBB queue af4 wfq weight 30 //配置實際鏈路帶寬和隊列調度綁定 qos-profile CCC xxxx BBB //流量入接口調用流策略,將流標記DSCP值 interface x/x/x traffic-policy IN-QUEUEinbound //如果涉及流量到入接口分類完成後穿過其他鏈路再到出接口調度情況下需要在穿過的接口配置簡單流分類 interface x/x/x //流量出接口配置流量調度策略,匹配qos-profil的調度策略 interface x/x/x CCC outbound xxx |
Ø思科路由器
l CBWFQ和限速 //定義一個匹配acl-1 acl-2的類 class-map match-all class-1 acl-1 class-map match-all class-2 match access-group name acl-2 //定義一個匹配http協議的類 class-map match-all class-3 match protocol http //定義一個策略,調用class-1/2/3,保障和限速,限速超出丟棄 policy-map CBWFQ class class-1 bandwidth classclass-2 bandwidth 1000 class class-3 police cir 1500000 //在接口出方向policy策略 interface x/x service-policy output CBWFQ |
ØJuniper
l CBWFQ //為1號闆卡1號模塊設置每端口最大隊列數為8個 set chassis fpc 1 pic 1 //配置不同地址組 set groups group-1 firewall family inet filter <*> term <*> from source-address xxxx/x set groups group-2 x.xxx/x //將不同轉發類別映射至不同隊列 set class-of-service forwarding-classes class class-1 queue-num 1 set class-of-service forwarding-classes class class-2 queue-num 2 //設置不同地址組的丟棄優先級及轉發類別 set firewall family inet filter filter-1 term-1 group-1 set firewall family inet filter filter-1 term-1 set firewall family inet filter filter-1 term-1 then forwarding-class set firewall family inet filter filter-1 term term-1 set firewall family inet filter filter-1 term-2 apply-groups group-2 set firewall family inet filter filter-1 term-2 set firewall family inet filter filter-1 term-2 class-2 set firewall family inet filter filter-1 term-2 //在x/x/x子接口出方向應用filter-1 set interfaces unit x filter-1 //建立兩個調度模板,分別設置保障帶寬和隊列優先級 set class-of-service schedulers scheduler-1 transmit-rate 2m set class-of-service schedulers scheduler-1 set class-of-service schedulers scheduler-2 transmit-rate 3m set class-of-service schedulers scheduler-2 //建立轉發類別與調度模板的映射 set class-of-service scheduler-maps map-1 forwarding-class class-1 scheduler-1 set class-of-service scheduler-maps map-1 class-2 scheduler-2 //在服務等級中設置接口的調度映射 set class-of-service interfaces x/x/x x map-1 //在服務等級中設置接口流量整形速率 set class-of-service interfaces x/x/x x 20m |