qos在前提是有限的帶寬情況下(提升帶寬能夠直接有效的解決擁塞問題,
但隨之而來會增加高額的成本),利用有保證的技術策略實現(xiàn)不同流量
獲得不同的優(yōu)先服務。
FIFO:(first in first out)先進先出服務模式,是一種傳統(tǒng)的網(wǎng)絡設備
處理報文方式,依據(jù)報文到達時間的先后順序分配轉(zhuǎn)發(fā),所有報文共享
網(wǎng)絡和設備的帶寬資源,報文所獲得的資源多少與時機有關;
FIFO盡最大努力將報文發(fā)送到目的地,但對報文的延遲、抖動、丟包率
和可靠性不提供任何保證,故對語音和視頻流量的通信無法保證;
提升服務質(zhì)量從以下方面考慮:
1.提高帶寬;
2.降低抖動;
3.降低丟包率;
4.提高可靠性;
帶寬:鏈路的最大帶寬是根據(jù)該條鏈路上最小帶寬定義的;
即BWmax=鏈路上最小帶寬;(bandwidth帶寬)
時延:端到端網(wǎng)絡時延等于路徑上所有時延之和
時延是指報文從一段發(fā)送到另一端所需時間,ping包時延是雙向的;
單個網(wǎng)絡設備的時延包括傳輸時延、串行化時延、處理時延、隊列時延;
1.傳輸時延:一個數(shù)據(jù)位從發(fā)送方到達接收方所需要的時間。該時延取決于傳
輸距離和傳輸介質(zhì),與帶寬無關。
2.串行化時延:指發(fā)送節(jié)點在傳輸鏈路上開始發(fā)送報文的第一個比特至發(fā)完該
報文的最后一個比特所需的時間。該時延取決于鏈路帶寬以及報文大小。
3.處理時延:指路由器把報文從入接口放到出接口隊列需要的時間。它的大小
跟路由器的處理性能有關。
4.隊列時延:指報文在隊列中等待的時間。它的大小跟隊列中報文的大小和數(shù)
量、帶寬以及隊列機制有關。
抖動:是指每個報文端到端時延不相等導致的,抖動的大小與時延有著直接的
關系,時延小則抖動小,時延大則抖動大;
丟包率:是指網(wǎng)絡傳輸過程中丟包數(shù)量占報文總數(shù)量的百分比,丟包率可以用
來衡量網(wǎng)絡的可靠性;
丟包可能出現(xiàn)在傳輸過程當中的任何一個環(huán)節(jié);
1.處理過程:cpu繁忙無法處理報文導致丟包;
2.排隊過程:報文調(diào)度到隊列中因隊列已裝滿從而導致丟包;
3.傳輸過程:報文在傳輸過程中可能因為鏈路故障等原因?qū)е聛G包;
模型:
盡力而為服務模式:
可通過提高網(wǎng)絡帶寬或升級網(wǎng)絡設備從而提高網(wǎng)絡服務質(zhì)量;
1.提高網(wǎng)絡帶寬:
優(yōu)點:可以改善帶寬瓶頸,串行化延遲、丟包的問題;
缺點:網(wǎng)絡建設成本高;
2.升級網(wǎng)絡設備:
優(yōu)點:可以改善處理延遲、隊列延遲、丟包等問題;
缺點:成本較高,設備替換增大業(yè)務中斷風險;
綜合服務模型:
通過運行RSVP(源保留)協(xié)議來保障關鍵業(yè)務的通信質(zhì)量;
RSVP協(xié)議:在應用程序發(fā)送報文前,向網(wǎng)絡中申請?zhí)囟ǖ膸捄退杼囟?/p>
服務質(zhì)量的需求,等收到確認消息后才發(fā)送報文;
優(yōu)點:可以為某些特定業(yè)務提供帶寬、延遲保證;
缺點:實現(xiàn)較為復雜;所有設備均需要支持RSVP協(xié)議,且該協(xié)議在相鄰節(jié)點
間周期發(fā)送,即使無流量發(fā)送,仍會獨占帶寬,會導致帶寬利用率低;
該服務模式在現(xiàn)行網(wǎng)絡當中并不多見;
區(qū)分服務模型:(差分服務模型)
為了解決綜合服務模型的協(xié)議實現(xiàn)復雜性及帶寬利用率低等問題,在網(wǎng)絡中可
通過部署diff'se'rv(different service)區(qū)分服務模型來實現(xiàn)關鍵業(yè)務的通信質(zhì)量;
1. 在網(wǎng)絡入口對報文進行分類,完成對報文的標記。
2.根據(jù)標記,將其映射成本地對其定義的服務等級值。
3. 根據(jù)不同的服務等級值進入相應的緩存隊列,根據(jù)隊列間的調(diào)度機制,實現(xiàn)
不同的轉(zhuǎn)發(fā)服務。
Diffserv服務模型概述:
1.業(yè)務流分類和標記由邊緣路由器來完成。邊界路由器可以通過多種條件
(比如報文的源地址和目的地址、ToS(路由域)域中的優(yōu)先級、協(xié)議類型等)
靈活地對報文進行分類,然后對不同類型的報文設置不同的標記字段,而
其他路由器只需要簡單地識別報文中的這些標記,然后對其進行相應的
資源分配和流量控制即可。因此,DiffServ是一種基于報文流的QoS模型。
它只包含有限數(shù)量的服務等級,少量的狀態(tài)信息來提供無差別的流量控制
和轉(zhuǎn)發(fā)。
2.DS節(jié)點:實現(xiàn)DiffServ功能的網(wǎng)絡節(jié)點稱為DS節(jié)點。
3.DS邊界節(jié)點:負責連接另一個DS域或者連接一個沒有DS功能的域的節(jié)點。
4.DS邊界節(jié)點負責將進入此DS域的業(yè)務流進行分類和流量調(diào)整。
5.DS內(nèi)部節(jié)點:用于在同一個DS域中連接DS邊界節(jié)點和其他內(nèi)部節(jié)點。
DS內(nèi)部節(jié)點僅需基于報文中的EXP、802.1p、IPP等字段值進行簡單的
流分類以及對相應的流進行流量控制。
6.DS域(DS Domain):一組采用相同的服務提供策略和實現(xiàn)了相同PHB
(Per Hop Behaviors 單跳行為)的相連DS節(jié)點組成。一個DS域由相同管
理部門的一個或多個網(wǎng)絡組成,如一個DS域可以是一個ISP,也可以是一個
企業(yè)的內(nèi)部網(wǎng)絡。
DiffServ模型充分考慮了IP網(wǎng)絡本身所具有的靈活性、可擴展性強等特點,
將復雜的服務質(zhì)量保證通過報文自身攜帶的信息轉(zhuǎn)換為單跳行為,從而大
大減少了信令的工作。該模型是目前應用最廣的服務模型。
三種服務模型的對比:
1.盡力而為服務模型:
優(yōu)點:實現(xiàn)機制簡單;
缺點:對不同業(yè)務流不能進行區(qū)分對待;
2.綜合服務模型:
優(yōu)點:可提供端到端QoS服務,并保證帶寬、延遲;
缺點:需要跟蹤和記錄每個數(shù)據(jù)流的狀態(tài),實現(xiàn)較復雜,且擴展性較差,
帶寬利用率較低;
3.區(qū)分服務模型:
優(yōu)點:不需要跟蹤每個數(shù)據(jù)流狀態(tài),資源占用少,擴展性較強;且能實現(xiàn)對
不同業(yè)務流提供不同的服務質(zhì)量;
缺點:需要在端到端每個節(jié)點都進行手工部署,對人員能力要求較高;
核心:提供差分服務
作用:對不同類型流量進行分類和識別,以解決因網(wǎng)絡不斷發(fā)展而導致網(wǎng)絡
類型的不斷增加;
報文分類的必要性:
要實現(xiàn)差分服務,進入Diffserve(different service)域,按照一定的規(guī)則進行
分類,根據(jù)不同的流量提供不同的服務;
ACL訪問控制列表是通過五元組進行分類;
五元組:源、目的IP,協(xié)議號,源、目的端口號;
簡單流分類:
QOS中是根據(jù)不同類型報文自身含有的標識的qos優(yōu)先級值來實現(xiàn)的;
數(shù)據(jù)鏈路層:vlan幀中802.1Q域中的priority字段值來實現(xiàn)的,該字段
有3bit位,范圍為0~7,以大為優(yōu);
網(wǎng)絡層:
1.mpls報文中的label域中的exp字段值來實現(xiàn)的,該字段有3bit位,范圍
位0~7,以大為優(yōu);
2.IP報文中的TOS域中的ipp或dscp字段值來實現(xiàn)的,因ipp字段只有3bit位,
范圍位0~7,以大為優(yōu),不能滿足IP報文多樣的類型;故采用dscp字段,該
字段有6個bit位,范圍為0~63,以大為優(yōu);
同時dscp中含有如下字段:
CS、EF、AF、BE;
優(yōu)先級由高到低排序為:(根據(jù)dscp值,以大為優(yōu))
CS7>CS6>EF>AF4>AF3>AF2>AF1>BE;
AF中以AF1為例,丟包率由低到高分為:AF11<AF12<AF13;
復雜流分類:
針對簡單流分類不夠精細的缺點,提出了復雜流分類;
1.數(shù)據(jù)鏈路層復雜流分類:
匹配項:vlan內(nèi)/外tag的802.1p、源/目的MAC地址;
以上匹配項可任意組合;
2.網(wǎng)絡層復雜流分類:
匹配項:ipp、源/目的IPv4地址、TCP/UDP源端口號、TCP/UDP目的端口號
、協(xié)議號;
以上匹配項可任意組合;
擁塞管理:
網(wǎng)絡中間歇出現(xiàn)擁塞,關鍵報文要求優(yōu)先轉(zhuǎn)發(fā),采用擁塞管理技術,即采用隊列技術
及不同的調(diào)度算法來發(fā)送對列中的報文流;
擁塞避免:
當某些突發(fā)的,非關鍵性的報文裝滿隊列,則后續(xù)發(fā)往該隊列的報文將會全部丟棄,此時
擁塞管理技術也不能達到理想的效果,需要配和擁塞避免技術來實現(xiàn);
設備性能常用pps,帶寬常用bps
pps=packet peer second
bps=bit peer second
擁塞管理通過隊列機制來實現(xiàn):
第一步:將準備從一個接口發(fā)出的所有報文放入不同的緩存隊列中;
根據(jù)報文所攜帶標記對應的LP值與隊列索引號的對應關系表,來實
現(xiàn)將不同的報文送入不同隊列。
LP(本地優(yōu)先級,又稱為內(nèi)部優(yōu)先級):優(yōu)先級映射實現(xiàn)從數(shù)據(jù)原
始攜帶的QoS優(yōu)先級到內(nèi)部優(yōu)先級或從內(nèi)部優(yōu)先級到QoS優(yōu)先級的映射。
對于進入設備的報文,設備將報文攜帶的優(yōu)先級或者端口優(yōu)先級映射
為內(nèi)部優(yōu)先級,然后根據(jù)內(nèi)部優(yōu)先級與隊列之間的映射關系確定報文進入的隊列。
第二步:根據(jù)各隊列間的調(diào)度機制實現(xiàn)不同報文的差分轉(zhuǎn)發(fā);
1. 提供差分服務的核心就是擁塞發(fā)生時如何決定不同隊列報文
的轉(zhuǎn)發(fā)次序,這就用到了隊列的調(diào)度機制。
2. 常見的隊列調(diào)度算法包括:FIFO,PQ,WRR,WFQ,CBQ等。
不同調(diào)度算法的介紹:
1.FIFO(first in firist out 先進先出):
優(yōu)點:實現(xiàn)機制簡單且處理速度快。
缺點:不能有差別地對待優(yōu)先級不同的報文。
2.PQ(priority queuing優(yōu)先級隊列):
PQ調(diào)度算法將隊列分為四類:分別為top(高優(yōu)先級隊列),middle(中優(yōu)先級隊列),
normal(正常優(yōu)先級隊列),bottom(低優(yōu)先級隊列),出隊列時按照優(yōu)先級高低
進行傳送,較低優(yōu)先級隊列等待高一級優(yōu)先級隊列處理完再進行處理;
優(yōu)點:對高優(yōu)先級的報文提供了優(yōu)先轉(zhuǎn)發(fā)。
缺點:低優(yōu)先級隊列可能出現(xiàn)“餓死”現(xiàn)象。
3.WRR(weighted round robin加權(quán)循環(huán)調(diào)度):
在RR(循環(huán)調(diào)度)的基礎上演變而來,即權(quán)重為1的WRR;按照隊列順序循環(huán)調(diào)度,
再根據(jù)權(quán)重值確定單一隊列調(diào)度傳送的報文個數(shù);
優(yōu)點:避免了PQ調(diào)度的“餓死”現(xiàn)象。
缺點:基于報文個數(shù)來調(diào)度,容易出現(xiàn)包長尺寸不同的報文出現(xiàn)不平等
調(diào)度;低時延業(yè)務得不到及時調(diào)度。
4.WFQ(weighted fair queuing公平加權(quán)隊列):
1.WFQ對報文按流特征進行分類,對于IP網(wǎng)絡,相同源IP地址、目的IP地址、
源端口號、目的端口號、協(xié)議號、ToS的報文屬于同一個流,而對于MPLS網(wǎng)絡,
具有相同的標簽和EXP域值的報文屬于同一個流。每一個流被分配到一個隊列,
該過程稱為散列,采用HASH算法來自動完成,這種方式會盡量將不同特征的流
分入不同的隊列中。WFQ允許的隊列數(shù)目是有限的,用戶可以根據(jù)需要配置該值。
在出隊的時候,WFQ按流的優(yōu)先級來分配每個流應占有的出口帶寬。優(yōu)先級的數(shù)
值越小,所得的帶寬越少。優(yōu)先級的數(shù)值越大,所得的帶寬越多。這樣就保證了
相同優(yōu)先級業(yè)務之間的公平,體現(xiàn)了不同優(yōu)先級業(yè)務之間的權(quán)值。
2.WFQ優(yōu)點在于配置簡單,但由于流是自動分類,無法手工干預,故缺乏一定的
靈活性;且受資源限制,當多個流進入同一個隊列時無法提供精確服務,無法保
證每個流獲得的實際資源量。WFQ均衡各個流的延遲與抖動,同樣也不適合延遲
敏感的業(yè)務應用。
優(yōu)點:可完全按照權(quán)重分配帶寬;自動分類,配置簡單。
缺點:低時延業(yè)務仍得不到及時調(diào)度;無法實現(xiàn)用戶自定義分類規(guī)則。
5.PQ+WFQ(優(yōu)先級隊列+公平加權(quán)隊列):
PQ+WFQ調(diào)度過程:
如圖,在進行調(diào)度時,首先按照PQ方式優(yōu)先調(diào)度Queue7、Queue6和Queue5
隊列中的報文流,只有這些隊列中的報文流全部調(diào)度完畢后,才開始以WFQ方式
調(diào)度Queue4、Queue3、Queue2、Queue1和Queue0隊列中的報文流。其中,
Queue4、Queue3、Queue2、Queue1和Queue0隊列包含自己的權(quán)值。
重要的協(xié)議報文以及有低時延需求的業(yè)務報文應放入PQ調(diào)度隊列中,得到優(yōu)先調(diào)
度的機會,其他報文則可放入以WFQ方式調(diào)度的各隊列中。
PQ+WFQ優(yōu)缺點:
其集合了PQ調(diào)度和WFQ調(diào)度各自的優(yōu)缺點。單純采用PQ調(diào)度時,低優(yōu)先級隊列中
的報文流可能會長期得不到帶寬,而單純采用WFQ調(diào)度時,低延時需求業(yè)務可能得
不到及時調(diào)度,而如果將兩種調(diào)度方式結(jié)合起來形成PQ+WFQ調(diào)度方式,其不僅能
發(fā)揮兩種調(diào)度的優(yōu)勢,而且能互補一些各自特有的缺點。
優(yōu)點:可保證低時延業(yè)務得到及時調(diào)度;實現(xiàn)按權(quán)重分配帶寬等。
缺點:無法實現(xiàn)根據(jù)用戶自定義靈活分類報文的需求。
CBQ(class-based queuing基于類的加權(quán)公平隊列):
CBQ是對WFQ的擴展,為用戶提供了自定義類的支持;
CBQ首先根據(jù)IP優(yōu)先級或者DSCP優(yōu)先級、入接口、IP報文的五元組等規(guī)則
來對報文進行分類,然后讓不同類別的報文進入不同的隊列。對于不匹配任
何類別的報文,會送入系統(tǒng)定義的缺省類。
CBQ提供了三類隊列:EF、AF、BE(EF>AF>BE);
EF隊列:滿足低時延業(yè)務。
EF隊列擁有絕對優(yōu)先級,僅當EF隊列中的報文調(diào)度完畢后,才會調(diào)度其他隊
列中的報文。
AF隊列:滿足需要帶寬保證的關鍵數(shù)據(jù)業(yè)務。
每個AF隊列分別對應一類報文,用戶可以設定每類報文占用的帶寬。當系統(tǒng)
調(diào)度報文出隊的時候,會按用戶為各類報文設定的帶寬將報文進行出隊發(fā)送,
可實現(xiàn)各個類的隊列的公平調(diào)度。
BE隊列:滿足不需要嚴格QoS保證的盡力發(fā)送業(yè)務。
當報文不匹配用戶設定的所有類別時,報文會被送入系統(tǒng)定義的缺省BE
(Best Effort,盡力傳送)類。BE隊列使用接口剩余帶寬和WFQ調(diào)度方式進行發(fā)送。
優(yōu)點:提供了自定義類的支持;可為不同的業(yè)務定義不同的調(diào)度策略。
缺點:由于涉及到復雜的流分類,故啟用CBQ會耗費一定的系統(tǒng)資源。
隊列算法的優(yōu)缺點比較:
類型 優(yōu)點 缺點
FIFO 實現(xiàn)簡單,處理速度快 不能有差別地對待優(yōu)先級不同的報文
PQ 低延遲業(yè)務能得到保障 低優(yōu)先級隊列可能出現(xiàn)“餓死”現(xiàn)象
WRR 避免了低優(yōu)先級隊列的 不平等調(diào)度;低時延業(yè)務得不到保障
“餓死”現(xiàn)象
WFQ 按權(quán)重實現(xiàn)公平調(diào)度; 低時延業(yè)務得不到保障;無法支持自定義類
自動分類,配置簡單
PQ+WFQ 低時延業(yè)務能得到保障; 無法支持自定義類
按權(quán)重實現(xiàn)公平調(diào)度等
CBQ 支持自定義類 耗費較多的系統(tǒng)資源
報文隊列被裝滿后的傳統(tǒng)處理方式為尾丟棄:
尾丟棄:由于每個隊列長度有限,當某一隊列已經(jīng)被裝滿時,傳統(tǒng)的處理方法會將
后續(xù)向該隊列發(fā)送的報文全部丟棄,直至擁塞解除,這種處理方式稱為尾丟棄(Tail Drop)。
尾丟棄的缺點:
1.引發(fā)TCP全局同步;
TCP全局同步:對于TCP報文,如果大量的報文被丟棄,將造成TCP超時,從而引發(fā)TCP
慢啟動,使得TCP減少報文的發(fā)送。當隊列同時丟棄多個TCP連接的報文時,將造成多
個TCP連接同時進入擁塞避免和慢啟動狀態(tài)以調(diào)整并降低流量,這就被稱為TCP全局
同步現(xiàn)象。這樣多個TCP連接發(fā)往隊列的報文將同時減少,而后又會在某個時間同時
出現(xiàn)流量高峰,如此反復,使網(wǎng)絡資源利用率低。
解決辦法:RED(Random Early Detection早期隨機檢測):
為避免TCP全局同步,可在隊列未裝滿時先隨機丟棄一部分報文。通過預先降低一部分
TCP連接的傳輸速率來盡可能延緩TCP全局同步的到來。這種預先隨機丟棄報文的行為
被稱為早期隨機檢測(RED);
RED通過隨機地丟棄數(shù)據(jù)報文,讓多個TCP連接不同時降低發(fā)送速度,從而避免了TCP
的全局同步現(xiàn)象。使TCP速率及網(wǎng)絡流量都趨于穩(wěn)定。
RED為每個隊列的長度都設定了閾值門限,并規(guī)定:
1.當隊列的長度小于低門限時,不丟棄報文。
2.當隊列的長度大于高門限時,丟棄所有收到的報文。
3.當隊列的長度在低門限和高門限之間時,開始隨機丟棄到來的報文。方法是為每個到來
的報文賦予一個隨機數(shù),并用該隨機數(shù)與當前隊列的丟棄概率比較,如果大于丟棄概率
則報文被丟棄。隊列越長,報文被丟棄的概率越高。
2.引起TCP餓死現(xiàn)象:
導致原因:尾丟棄無法對流量進行區(qū)分丟棄;
當隊列裝滿時,后續(xù)發(fā)往該隊列的大量TCP報文將進行尾丟棄,并造成Window
Size減小,TCP流量整體減小,而UDP流量并不會減少,反而可能會占滿整個隊列,
造成TCP餓死現(xiàn)象。
3.無差別的丟棄:
導致原因:尾丟棄無法對流量進行區(qū)分丟棄;
當隊列裝滿時,尾丟棄很可能導致大量非關鍵數(shù)據(jù)被轉(zhuǎn)發(fā),而大量關鍵數(shù)據(jù)被丟棄。
解決方法:WRED(Weighted Random Early Detection加權(quán)早期隨機檢測):
WRED技術可以通過對不同優(yōu)先級數(shù)據(jù)包或隊列設置相應的丟棄策略,以實現(xiàn)對不
同流量進行區(qū)分丟棄。
WRED可以彌補尾丟棄的三個缺點,且大大提高了鏈路帶寬利用率。
基于RED技術,又實現(xiàn)了WRED(Weighted Random Early Detection)技術,可
實現(xiàn)每一種優(yōu)先級都能獨立設置報文的丟包的高門限、低門限及丟包率,報文到達低
門限時,開始丟包,到達高門限時丟棄所有的報文,隨著門限的增高,丟包率不斷增
加,最高丟包率不超過設置的最大丟包率,直至到達高門限,報文全部丟棄。這樣按
照一定的丟棄概率主動丟棄隊列中的報文,從一定程度上避免了尾丟棄帶來的所有缺點。
流量監(jiān)管和流量整形就是一類通過對流量規(guī)格的監(jiān)督來限制流量及其資源使用的流控策略。
流量監(jiān)管技術:
1.流量監(jiān)管功能可對接收或發(fā)送的流量進行限速控制,限制進入網(wǎng)絡的突發(fā)流量,為網(wǎng)絡提
供了基本的QoS功能。
2.流量監(jiān)管TP(Traffic Policing)的典型應用是監(jiān)督進入網(wǎng)絡的某一流量的規(guī)格,把它限制
在一個合理的范圍之內(nèi),并對超出部分的流量進行“懲罰”,以保護網(wǎng)絡資源和運營商的利益。
3.流量監(jiān)管通常使用承諾訪問速率CAR(Committed Access Rate)來限制某類報文的流量。
CIR(Committed Information Rate)承諾信息速率;
優(yōu)點:可實現(xiàn)對不同類別的報文分別進行限速。
缺點:當鏈路空閑時,造成帶寬浪費;丟棄的流量可能要進行重傳。
流量整形技術:
1.流量整形TS(Traffic Shaping)的典型作用是限制流出某一網(wǎng)絡的某一連接的正常流量
與突發(fā)流量,使這類報文以比較均勻的速度向外發(fā)送,是一種主動調(diào)整流量輸出速率的措
施,故只能對 輸出 的流量進行速率控制。常用GTS(Generic Traffic Shaping通用流量
整形)技術來限制某類流量。
2.應用場景:當網(wǎng)絡中上下游的接口帶寬不匹配,尤其是上游接口的帶寬資源大于下游的帶
寬資源時,容易在下游網(wǎng)絡形成擁塞。如果不希望下游網(wǎng)絡因為上游發(fā)送數(shù)據(jù)流量過大造成
擁塞,可在上游的出接口配置流量整形,使上游發(fā)送的流量與下游接收的能力相匹配。報文
可以均勻向外發(fā)送,而且部分超出規(guī)格的報文不直接丟棄,而是進行緩存,等待鏈路空閑的
時候再發(fā)送出去。
優(yōu)點:可實現(xiàn)對不同報文分別進行限速;緩沖機制可減少帶寬浪費,減少流量重傳。
缺點:可能會增加延遲。
流量監(jiān)管和流量整形的比較:
限速類型 優(yōu)點 缺點
流量監(jiān)管 可實現(xiàn)對不同報文地限速及重標記。 造成較高的丟包率;鏈路空閑時帶寬得
不到充分利用。
流量整形 較少丟棄報文,充分利用帶寬。 引入額外的時延和抖動,需要較多的設
備緩沖資源。