一、QoS服務模型
QoS在網絡中的服務模型分為三種:
1.Best-Effort Service :盡力而為的服務模型
一種單一的、最簡單的服務模型,應用程式可以任何時候發送任意數量的封包;
網絡盡最大可能發送這些封包,但是對于延時、可靠性不做保證;
是現在網際網路中預設的服務模型,遵循先進先出的轉發規則。
2.Integrated Service:綜合服務模型,簡稱IntServ
3.Differentiated Service:區分服務模型,簡稱DiffServ
可以滿足不同的QoS需求;
不需要預留資源,網絡不需要為每個端到端的流量進行維護;
可以使用不同的方法來指定封包的QoS,如封包的優先級、MAC位址、源IP位址、目的IP位址等。
二、流量管理
1.流分類
是進行差別服務的基礎,可以使用封包的優先級來識别,也可以使用源位址、目的位址、MAC位址、協定或端口等資訊來識别不同的流量。
2流量監控.
三個參數:
承諾平均速率(CIR):允許流量通過的平均速率。
突發量(Committed Burst size,Bc):允許突發産生流量的大小。
額外突發量(Excess Burst size,Be):表示流量超出突發量後還可以轉發的流量大小。
流量政策:
轉發:對于合規流量和違規流量都可以設定政策為轉發。
丢棄:對于合規流量和違規流量都可以設定政策為丢棄。
标記:标記封包的優先級。例如:将合規流量的封包的IP優先級設定為5,将違規流量封包的IP優先級設定為0。
進入下一級流量政策:流量政策可以多級處理,可以将流量送出給下一級流量政策來進行控制。
主要的流量管理技術是流量×××(GTS)和承諾通路速率(CAR)。
(1)流量×××(Generic Traffic Shaping,GTS)
是一種調節輸出速率的措施,使用緩沖區使流量均勻地進行轉發;
不需要進行×××的流量直接通過裝置轉發,需要進行×××的流量分為合規流量和違規流量;
當流量速率超過設定時,裝置将多餘的流量緩存到GTS隊列,然後按照配置的CIR,将封包均勻地轉發出去,保證網絡流量平穩。
緩存導緻資料轉發增加時延,但是減少了丢包率。
基本流量×××配置
格式:router(config-if)# traffic-shape rate CIR [ Bc [Be]] [buffer-limit]
CIR必須配置,buffer-limit表示緩存區的使用限制,預設為1000(封包數)。
基于ACL的流量×××配置
首先,配置ACL定義需要×××的流量
router(config)#access-list 100 permit udp any any
然後,進入接口進行流量×××
格式:router(config-if)#traffic-sharp group access-group CIR [Bc [Be]]
檢視網絡×××配置資訊
格式:
router#show traffic-sharp 接口資訊 //檢視GTS配置資訊
router#show traffic-sharp statistics 接口資訊 //檢視GTS流量統計資訊
router#show traffic-sharp queue //檢視GTS隊列資訊
(2)承諾通路速率(Committed Access Rate,CAR)
是一種流量控制政策;
使用三個參數CIR、Bc、Be,其中Bc+Be的大小是允許突發的最大流量的大小;
CAR技術限制流量速率時,違規流量會直接丢棄而不緩存,保證了資料的時延,但是增加了丢包率。
基本承諾通路速率配置
格式:router(config-if)# rate-limit {input | output} CIR burst-normal burst-max conform-action action exceed-action action
各參數的含義:
input/output:針對端口入/出方向的流量。
CIR burst-normal burst-max:burst-normal表示普通突發量,burst-max表示最大突發量。最大突發量包含普通突發量。
CIR:範圍8000~2000000000,機關b/s
burst-normal:範圍1000~512000000,機關為位元組
burst-max:範圍2000~1024000000,機關為位元組
conform-action:表示對合規流量進行的操作
exceed-action:表示對違規流量進行的操作
action:表示對相應流量進行的操作,主要有:
drop:丢棄資料包
transmit:轉發資料包
設定優先級,例如:
router(config-if)# rate-limit input 8000000 2000 4000 conform-action set-prec-transmit 5 exceed-acction set-prec-transmit 0
擴充的承諾通路速率
首先,配置ACL,定義需要×××的流量
然後,在接口模式進行流量×××
格式:router(config-if)# rate-limit {input | output} access-group access-group CIR burst-normal burst-max conform-action action exceed-action action
檢視CAR配置資訊
格式:router# show interfaces 接口資訊 rate-limit
(3)承諾通路速率與流量×××的第二種配置
這種配置在端口應用一種政策實施多種流量控制,并且這種政策可以和擁塞管理技術中的CBWFQ相結合。配置主要分為三個步驟:
定義比對政策
首先,定義class-map
格式:router(config)# class-map [match-all | match-any] class-map-name
各參數含義:
class-map-name:為建立的class-map的名稱
match-all:表示比對class-map定義的所有條件,是預設配置。
match-any:表示至少比對class-map定義的一個條件。
然後,進入class-map模式,配置比對的條件
格式:router(config-cmap)# match access-group access-group //比對ACL
router(config-cmap)# match protocol protocol //比對協定
router(config-cmap)# math input-interface 接口資訊 //比對端口進入的流量
router(config-cmap)# match any //比對任意資料包
router(config-cmap)# match {source-address | destination-address} mac mac-address
//比對源或目的的MAC位址
定義流量的控制政策
首先,定義policy-map,調用class-map
格式:router(config)# policy-map police-map-name
router(config-pmap)# class class-map-name
然後,調用的class-map中配置政策,配置的政策包括流量、GTS、CAR等。
·标記流量
router(config-pmap-c)# set ip dscp dscp
router(config-pmap-c)# set ip precedence precedence
·配置CAR
router(config-pmap-c)#police CIR burst-normal burst-max conform-action action exceed-action action violate-action action
注意:violate-action:對大于Bc+Be的流量采取的動作,預設丢棄。
·配置GTS
router(config-pmap-c)# shape average CIR [Bc [Be]]
注意:average表示平均值,配置萬average形式的GTS後,×××後的速率為CIR
·配置緩沖上線
router(config-pmap-c)# shape max-buffers buffer-limit
注意:buffer-limit的範圍為1~4096,預設為1000,為機關封包個數。
在接口上應用政策
格式:router(config-if)# service-policy {input | output} policy-map-name
注意:GTS隻能應用在output方向,CAR可以應用在兩個方向。
檢視配置
格式:router# show policy-map [policy-map-name] //檢視政策配置
router# show policy-map interface [接口資訊] //檢視端口政策應用及流量資訊
三、擁塞管理和擁塞避免
1.擁塞管理
擁塞管理一般采用隊列排程技術,通過隊列排程技術的算法使得不同的資料流量擁有不同的優先級和貸款資訊等,進而确定不同的資料流被轉發的順序和帶寬。
擁塞管理技術有五種,這裡介紹WFQ(權重公平隊列)和CBWFQ(基于類的權重公平隊列)。
WFQ
WRQ按照流的優先級來配置設定出口的帶寬,優先級越小得到的帶寬越小,優先級越大得到的帶寬越大。
每個流所占用的帶寬比例為:
(自身流優先級加1)/(所有流優先級分别加1的和)
CBWFQ
CBWFQ擴充了WFQ的功能,CBWFQ可以根據資料的優先級、源IP位址和目标IP位址、協定等進行分類,并讓不同的封包進入不同的隊列。
LLQ(低延時隊列)是一個優先類隊列,首先轉發次隊列中的資料(可以設定一個最大帶寬的參數,來限制在網絡發生擁塞時優先類隊列的轉發速率。當網絡發生擁塞時,優先類隊列中超過配置的流量将被丢棄。)
BQ(Bandwidth Queuing)采用WFQ方式進行排程。
CBWFQ的配置
(1)定義比對政策,與GTS、CAR的第二種配置步驟相同
(2)配置CBWFQ政策
首先,定義policy-map并調用class-map,在每一個class-map中設定政策
格式:router(config-pmap-c)# bandwidth {bandwidth-kbps | percent percentage}
bandwidth:保證最小寬帶
bandwidth-kbps:最小寬帶的速率,預設情況不不能超過接口帶寬的75%,可以通過接口模式下的max-reserved-bandwidth指令進行修改。
percent percentage:最小帶寬占端口的百分比
然後,配置隊列中資料包的個數,範圍是1~4096
格式:router(config-pmap-c)# queue-limit packets
如果,要配置預設類,指令是
格式:router(config-pmap)# class class-default
router(config-pmap-c)#fair-queue //啟用公平隊列
如果,要配置LLQ的最大寬帶,指令是
格式:router(config-pmap-c)# priority {bandwidth-kbps | percent percentage}
注意:priority表示LLQ的最大寬帶
(3)在端口實施政策。與GTS、CAR的第二種配置相同,但是需要注意的是CBWFQ隻能配置在端口的output方向。
2.擁塞避免
(1)尾丢棄
傳統的丢包政策,即當隊列達到最大長度後,将所有後續來到的封包全部丢棄
使用queue-limit指令
(2)WRED
為了避免出現尾丢棄的現象,随機預檢測(RED)為每個隊列設定兩個值,分别為低門檻值和高門檻值,采用如下算法:
·小于低門檻值時,不進行丢棄
·大于高門檻值時,完全丢棄封包
·在低門檻值和高門檻值之間時,WRED開始進行随機丢棄封包。隊列越長,丢棄的概論越高。
可以直接在接口配置,也可以通過policy-map配置
WRED配置
(1)在接口配置
基于DSCP的配置
Router(config-if)#random-detect dscp-based
Router(config-if)#random-detect dscp dscp {min max } [mark]
基于IP優先級的配置
Router(config-if)#random-detect
Router(config-if)#random-detect precedence precedence {min max } [mark]
(2)通過policy-map配置WRED
在CBWFQ中配置WRED指令如下:
Router(config-pmap-c)#random-detect
Router(config-pmap-c)#random-detect precedence precedence {min max } [mark]
(3)檢視
檢視WRED資訊
Router#show queueing random-detect