Qos (Quality of server)

QOS(Quality Of Server)(在擁塞時才用) 

哪些問題會影響網絡的數據傳輸 
1、有限的帶寬 
2、延遲 
3、抖動 
4、丟包

解決可用帶寬的方法: 
  1、升級帶寬,增加鏈路帶寬 
  2、讓優先級高的流量先過 
  3、壓縮二層的幀  不建議 
  4、壓縮IP包的頭部

延遲的分類:端到端延遲分爲 
  1、處理延遲–網絡設備將數據幀從入接口取出,將其放到接收隊列,再放到出接口輸出隊列所需的時間 
  2、排隊延遲–數據包在接口的輸出隊列中等待的時間             可控 
  3、串行化延遲–將封裝在數據幀中比特放到物理介質上的時間  比特轉換爲電信號 
  4、傳播延遲–通過物理介質傳輸數據幀中的比特所需的時間

注意:只有排隊延遲可以通過使用QOS來進行控制 
解決延遲的方法: 
1、增加鏈路帶寬 
2、讓優先級高的流量通過 
3、壓縮   不建議

解決抖動: 
使用緩衝:解決的是抖動

丟包:僞丟棄  排隊滿 將後續的包丟棄 不分優先級 
解決方法: 
1、升級鏈路帶寬  
2、爲重要的數據有足夠的帶寬  
3、擁塞之前丟棄不重要的數據包

 

QOS服務模型: 
1、盡力而爲的服務–沒有應用QOS,網絡的默認行爲 
2、集成服務–所有的中間系統和資源都顯式的爲流提供預定的服務,這種服務需要預留網絡資源,確保網絡能夠滿足通信流的特定服務要求。 
3、區分服務–將根據服務要求將通信流分類,然後將它們加入到效率不同的隊列中,使一些通信流優先於其他類別的通信流得到處理。

IntServ 
集成服務是通過使用RSVP(Resource Reservation Protocol資源預留協議)實現的,在兩個端點中間網絡設備上都要啓用RSVP。 
工作原理–數據流在發送之前,起始節點會向網絡請求特定類型的服務,並將其流量配置文件告訴網絡中的每個中間節點,請求網絡提供一種能夠滿足其帶寬和延遲要求的服務。在從網絡得到確認後,應用纔開始發送數據。

資源預留的過程分爲5步: 
1、數據發送方發送rsvp path控制消息,這種消息描述了將要被髮送的數據的信息。 
2、每個rsvp路由器收到path消息後,保存上一跳的IP地址,並繼續向下發送。 
3、接收站接收到rsvp path消息後,使用rsvp resv消息向上一跳路由器請求rsvp資源預留。rsvp resv消息從接收方到發送方所經過的路徑與rsvp path消息到來時完全相同。 
4、rsvp路由器確定是否可以滿足這些rsvp請求,如果不能,則拒絕。如果可以,則預留出資源,並繼續向上一跳發送出rsvp請求。 
5、發送方收到rsvp請求,說明預留已經就緒,可以開始發送數據了。

路由器對數據包的處理過程: 
1、准入控制 
2、分類 
3、策略 
4、排隊 
5、調度

資源預留方式可分爲兩類: 
1、獨佔式–適合於多個數據源同時發送的應用程序,針對每個發送方預留資源,且發送方是很清楚的。 
2、共享式–適合於多個數據源不太可能同時發送的應用程序。 
   又可分爲兩種: 
   ①共享顯式(shard explicit SE)–爲多個明確的源預留資源 
   ②通配符過濾器(wildcard filter WF)–爲所有源預留資源

需要一個PDP(policy Decision Point策略決策點)來集中完成網絡對RSVP請求的許可控制。 
缺點:不具有可擴展性,並且需要網絡設備不斷的發送信號,本身佔用帶寬。

配置:

image 
R1(config)#interface e0 
R1(config-if)#ip rsvp bandwidth    起用rsvp,默認使用75%的帶寬做rsvp 
R1(config-if)#ip rsvp bandwidth 500    只使用500K的帶寬 
R1(config)#interface S0 
R1(config-if)#ip rsvp bandwidth  
R1(config)#ip rsvp sender 20.1.1.5 10.1.1.4 udp 1040 0 10.1.1.4 e0 32 32 
                           目標IP    源IP    目標端口 源端口       預留帶寬

R2(config)#interface S0 
R2(config-if)#ip rsvp bandwidth    
R2(config)#interface S1 
R2(config-if)#ip rsvp bandwidth 

R3(config)#interface S0 
R3(config-if)#ip rsvp bandwidth    
R3(config)#interface S1 
R3(config-if)#ip rsvp bandwidth  
R3(config)#ip rsvp reservation 20.1.1.5 10.1.1.4 udp 1040 0 20.1.1.5 e0 ff load 32 32 
                                                                      獨佔式預留

show ip rsvp interface 
show ip rsvp installed

 

DiffServ 
區分服務–能夠提供滿足不同QOS需求的多種服務等級。不需要顯示的通知網絡設備。 
路由器對數據包的處理是逐跳行爲

缺點:沒有絕對的服務保證,機制複雜。

語音進程的端口號:16384-32767之間的偶數  奇數的是控制端口,偶數的是數據端口 

·確定數據流的優先順序。對延遲敏感的流量賦予高的優先級。 
如果WAN鏈路不發生擁塞,沒有必要劃分數據流的優先順序。 
如果WAN鏈路經常發生擁塞,劃分數據流的優先順序可能解決不了問題,更合適的解決方案是增加帶寬。

·制定排隊策略: 
1.爲所有用戶提供合適的服務級別 
2.節省昂貴的WAN費用

·RTP(Real-Time Protocol):實時傳輸協議 
RTP傳輸多媒體應用的數據流,包括IP語音和視頻(對延遲比較敏感的)

·MQC–模塊化的QOS命令行 
  爲我們配置QOS提供了一個統一的格式標準

3@40)}38PB6MB@D53ALB3UM

 

分類和標識的方法:

分類是以特定的優先級或預定的參數來區分幀或數據包

標記就是對區分出來的數據包打上相應的優先級

一、二層標記方法 
COS–二層的服務類別 IEEE802.1P 
7  保留 
6  保留 
5  語音流量 
4  視頻會議 
3  呼叫信令 
2  高優先級數據 
1  中優先級數據 
0  盡力而爲的傳輸

二、三層標記方法   標在IP頭中  同IEEE802.1P 
IP優先級–共8個分類,從0-7,0級最低,7級最高

DSCP–區分服務代碼點 
使用ToS字段的前6個bit,共64個不同的優先級

PHB–逐跳行爲,取出13個DSCP值進行了標準化 
AF–保證轉發,定義了四種不同的類別,每種類別又定義了三種不同的丟棄概率 
EF–快速轉發  101110   建議給語音用

PBR:做了分類和設置優先級的工作。 
注意:只能設置IP優先級,不能支持DSCP

例子: 
1、對VOIP流量設定IP優先級爲5 
2、對於5.5.5.0網段過來的,訪問2.2.2.0的流量設定IP優先級爲2 
3、對於6.6.6.0網段過來的,訪問2.2.2.0的流量設定IP優先級爲1

第一步:定義ACL 
R1(config)#access-list 100 permit udp any any range 16384 32767 端口  抓的是VOIP的流量 
R1(config)#access-list 101 permit ip 5.5.5.0 0.0.0.255 2.2.2.0 0.0.0.255 
R1(config)#access-list 102 permit ip 6.6.6.0 0.0.0.255 2.2.2.0 0.0.0.255

第二步:定義route-map並打標記 
R1(config)#route-map PBR 10 
R1(config-route-map)#match ip address 100 
R1(config-route-map)#set ip precedence 5

R1(config)#route-map PBR 20 
R1(config-route-map)#match ip address 101 
R1(config-route-map)#set ip precedence 2

R1(config)#route-map PBR 30 
R1(config-route-map)#match ip address 102 
R1(config-route-map)#set ip precedence 1

第三步:調用

R1(config)#interface s0 
R1(config-if)#ip policy route-map PBR

MQC(Modular QoS CLI(command line interface)): 
MQC–模塊化的QOS命令行 
爲我們配置QOS提供了一個統一的格式標準

 

 

CBMARKING 
要求: 
1、對VOIP流量,給予IP優先級5 
2、對於telnet流量,給予IP優先級4 
3、對於來自172.16.1.0的流量,給予IP優先級2

步驟: 
1、定義ACL 
R1(config)#access-list 100 permit udp any any range 16384 32767 
R1(config)#access-list 101 permit tcp any any eq 23 
R1(config)#access-list 102 permit ip 172.16.1.0 0.0.0.255 any

2、定義類別映射表 
R1(config)#class-map [match-any|match-all] VOIP 
R1(config-cmap)#match access-group 100

R1(config)#class-map [match-any|match-all] TELNET 
R1(config-cmap)#match access-group 101

R1(config)#class-map [match-any|match-all] NETWORK 
R1(config-cmap)#match access-group 102 
#show class-map

3、定義策略映射表 
R1(config)#policy-map XWX 
R1(config-pmap)#class VOIP 
R1(config-pmap-c)#set ip precedence 5 
R1(config-pmap)#class TELNET 
R1(config-pmap-c)#set ip precedence 4 
R1(config-pmap)#class NETWORK 
R1(config-pmap-c)#set ip precedence 2 
#show policy-map

4、調用 
R1(config)#int s0 
R1(config-if)#service-policy input XWX 
#show policy-map interface

#show policy-map 
#show class-map 
#show policy-map interface

class-map默認是match-all

例二: 
對於來自s1接口的流量,給予IP優先級1

R1(config)#class-map [match-any|match-all] INTER 
R1(config-cmap)#match input-interface s1  還可以匹配入站接口

R1(config)#policy-map XWX 
R1(config-pmap)#class INTER 
R1(config-pmap-c)#set ip precedence 1

調用在出口 
R1(config)#int s0 
R1(config-if)#service-policy input XWX

NBAR(Network-Based Application Recongnition基於網絡的應用識別) 
基於ACL的分類使用數據包的第3層和4層信息來對數據包進行分類。 
NBAR可以根據第7層信息來對數據幀進行分類。 
match protocol時,就是用NBAR

例一: 
對於telnet流量,給予優先級3

配置NBAR: 
1、開啓cef 
R1(config)#ip cef

2、定義類別映射表 
R1(config)#class-map [match-any|match-all] TELNET 
R1(config-cmap)#match protocol telnet  區別就在這裏

3、定義策略映射表 
R1(config)#policy-map XWX 
R1(config-pmap)#class TELNET 
R1(config-pmap-c)#set ip precedence 3

4、調用 
R1(config)#int s0 
R1(config-if)#ip nbar protocol-discovery 
R1(config-if)#service-policy input XWX

注意事項: 
使用NBAR,必須先啓用CEF特性 
config)#ip cef 
使用NBAR,接口模式下必須打開 (match 字段中有protocol時就表示使用了NBAR) 
ip nbar protocol-discovery  必須在接口下開啓這一命令

R1(config)#ip nbar port-map http tcp 80 8080   指定http協議對應的端口,不僅僅是默認的,還可以擴展

例二、禁止訪問新浪、禁止下載JPG圖片

class-map match-any DROP 
  match protocol http host www.sina.com.cn   過濾本網站的流量 
  match protocol http url *.jpg|*.gif        還可以抓網頁上的圖片

R1(config)#policy-map XWX 
R1(config-pmap)#class DROP 
R1(config-pmap-c)#drop

R1(config)#int s0 
R1(config-if)#service-policy input XWX

PDLM(packet description language module)

包描述語言模塊,一種擴展的技術,可以讓路由器直接對某種應用程序流量或新的協議流量進行識別,而不需要更換IOS或重啓路由器。PDLM模塊由cisco的工程師開發,需要先下載進flash中,再進行加載。

例三: 
在網絡中過濾掉BT流量

R1(config)#ip nbar pdlm bt.pdlm ——-灌入抓BT的PDLM。裝入之後就可以在class map中調用了

R1(config)#class-map match-any DROP 
R1(config-cmap)#match protocol pdlm bt 
R1(config)#policy-map XWX 
R1(config-pmap)#class DROP 
R1(config-pmap-c)#drop

R1(config)#int s0 
R1(config-if)#service-policy input XWX

———————————————————————————- 

更多內容可關注老胳膊博客
———————————————————————————- 
排隊技術 
從三個步驟上來學習: 
1、分類 
2、加隊 
3、調度

FIFO:first in first out queuing 先進先出隊列

分類:不對報文進行分類 
加隊:按數據包到達的先後順序進行加隊,按尾丟棄原則丟棄。 
調度:按數據包到達的先後順序進行出隊

·FIFO(First In First Out) 排隊是一種經典的分組傳輸算法。 
分組的傳輸順序與接收順序相同。現今仍是大部分接口的默認設置。(大於2M的基本都是fifio) 
默認2.048M以下都是WFQ

R1(config-if)#no fair-queue   在接口啓用FIFO

show interface e0   查看

FIFO輸出隊列的緩存中默認只容納40個包,可以修改。 
R1(config-if)#hold-queue 50 out 

PQ:優先級隊列 
共有四個隊列,分爲四個優先級別,默認的流量都是normal 
優先級分類:1high  2medium  3normal  4low  默認所有流量都走normal隊列

加隊:在每一個隊列中還是按照fifo的原則加隊,按尾丟棄原則丟棄。 
調度:只要高優先級有流量就發高優先級的,只到高優先級的數據發完再發低優先級的數據,這樣就有可能造成低優先級的數據無帶寬可用。

實驗: 
要求在路由器的出接口將telnet流量放入high隊列   將icmp流量放入medium隊列

Access-list 100 permit icmp any any   抓出所有icmp的流量

R1(Config)# priority-list 1 protocol ip high tcp telnet  將telnet流量的優先級置爲high 
R1(Config)# priority-list 1 protocol ip medium list 100  調用訪問列表將icmp的優先級置爲normal

R1(Config-if)#priority-group 1  接口下調用

R1(Config)# priority-list 1 queue-limit 22 44 66 88 定義每一個隊列的座位數,隊列1爲22個,隊列4爲88個

priority-list 1 interface s0 [high|medium|normal|low] 按接口來進行分類,也就是說把一個接口來的數據都放進一個隊列,太過粗略

priority-list 1 default [high|medium|normal|low] 設置默認

Show int e0   看每一個隊列有多少個座位,也就是能容納多少個包 
Show queueing  (看所有隊列) 
Show queueing priority 
Debug priority  再使用telnet和ping來測試 
R2(config)#line vty 0 4 
              no login

 

 

CQ  Custom queue 
分類:1~16隊列 再加上一個優先隊列0級隊列  共17個隊列  0級和其它級的關係相當於PQ 
加隊:自定義加隊,不同的流量加不同的隊列。在每一個隊列中還是按照fifo的原則加隊,按尾丟棄原則丟棄。 
調度:輪循,第一個傳完就傳第二個,默認1500個字節,可以修改每個隊列的傳輸字節數 
先有1000個字節,再來1000,還是會傳 
例:將VOIP流量設爲優先隊列,將telnet流量置爲隊列1,將ICMP流量置爲隊列2

access-list 100 permit udp any any range 16384 32767 語音流量 
access-list 101 permit icmp any any

R1(Config)# queue-list 1 protocol ip 0 list 100 
R1(Config)# queue-list 1 protocol ip 1 tcp telnet   將telnet流量置爲隊列1 
R1(Config)# queue-list 1 protocol ip 2 list 101

注意:在定義CQ時,最好由小到大一個個來定義,否則可能出錯

R1(Config-if)#custom-queue-list 1  接口下調用

R1(Config)# queue-list 1 queue 0 byte-count 800    
R1(Config)# queue-list 1 queue 1 byte-count 1600 設置本隊列每次可傳的字節數  默認傳1500字節 
R1(Config)# queue-list 1 queue 1 limit 50   設置本隊列的座位數

show queueing custom   
Debug custom-queue 
show interface e0/0

擴大優先級隊列的範圍 : 
R1(Config)#queue-list 1 lowest-custom 1   不推薦打0 一般打2  這樣的話隊列0和隊列1同其它隊列就相當於是PQ的關係

默認沒有分類的流量走的是低級隊列的第一個隊列。默認就是走1級隊列。

WFQ(Weighted Fair Queuing) 加權公平隊列(基於流的) 
分類標準:按流來分,而不是按類來分 
2層 源和目標的mac地址 
3層 源和目標的ip地址,還有協議類型 
4層 源和目標的端口號 
流的五元組:源IP、目標IP、源端口號、目標端口號、協議

·WFQ算法將數據流劃分成流,這是根據分組報頭中的地址實現的。 
源/目標網絡地址(MAC地址)(套接字)(DLCI)

加隊:默認總共只有256個隊列,共享緩存,統一調度座位 1000個包

CDT:congestive discard threshold  緩存中容納包的下限 
  當緩存中的數據包小於這個值時,不採取任何限制措施 
  當緩存中的數據包大於這個值時,採用以下方法來限制後續數據包: 
      1、如果後續數據包屬於最長隊列,則被drop 
      2、如果後續數據包不屬於最長隊列,則直接將這個包加入

HQO:hold-Queue out limit   緩存中容納包的上限 
  如果緩存中的數據包超過HQO值,又來了一個包,則採取以下措施: 
     1、如果這個包屬於最長隊列,則被drop 
     2、如果這個包不屬於最長隊列,則去掉最長隊列中的一個包,再將這個包加入其所屬隊列

調度: 
·基於流的WFQ在傳輸數據之前,將各個會話的分組放到公平隊列中。

·WFQ給每個數據包指定一個權重(also called finish time),權重決定了隊列中分組的傳輸順序。權重小的數據包得到優先傳送,權重是根據公式得到的,FT和SN算法

·WFQ在調度時首先傳輸權重小的分組。包的尺寸越小,其權重也就越小。所以小尺寸的包往往被優先傳送。

·小容量流量發送後,各大容量共享餘下的鏈路帶寬。

·對於有優先級的包的處理:要計算其權重的時候會使用其虛擬包大小來計算。

    virtual packet size=real packet/(ip precedence+1)實際上等於減小了權重 
             虛擬包大小=實際包大小/(ip優先級+1)

  從以上公式可以看出:優先級越大,計算出的權重越小

·WFQ可確保每個數據報都能佔用適當的帶寬。 
大小相同的文件傳輸將獲得相同的帶寬,而不是先到的文件佔用大量帶寬。

·WFQ給每個會話分配一個隊列,隊列優先級分7種。

配置: 
R2(config-if)#fair-queue (接口啓用WFQ) (s口默認是開啓的,E口默認是FIFO)

R2#show interfaces ethernet 0/0 
   ….Queueing strategy: weighted fair

·速率不超過E1(2.048Mbps)的Serial口默認使用WFQ。 
在使用X.25或壓縮PPP的Serial,WFQ被禁用。 
E3/T3 (34M/45M)的WAN接口和Serial不支持WFQ。

修改默認的隊列數: 
R2(config-if)#fair-queue 256 512 6 注意最後這一參數表示爲RSVP預留的隊列數 
                         CDT 隊列數 
R2(config-if)#hold-queue 2000 out 修改允許的座位數HQO值,默認最大是1000

show queueing interface 
show queueing fair

Link queue:爲系統保留的 
Reserved queue:保留隊列,爲RSVP保留的

CBWFQ(Class-Based Weighted Fair Queuing)

·CBWFQ拓展了標準WFQ的功能,支持用戶自定義的數據流類別。 
可以根據多種條件來定義數據流類別。(協議/ACL/輸入接口) 
  CBWFQ最多隻有64個類別,默認每個隊列中能緩存64個包。

·CBWFQ給每個類別(而不是流)指定權重,它與分配給類別的帶寬呈反比。

·默認情況下,分配給所有類別的帶寬總和不能超過接口可用帶寬的75%。 
餘下的25%用於傳輸控制數據流和路由選擇數據流。

實驗一: 
Voip  30% 
Http  20% 
Other ……25%

1、分類: 
R1(config)#class-map voip 
R1(config-)#match ip rtp 16384 16383 抓取16384之後的16383個端口

R1(config)#access-list 111 permit tcp any any eq www 
R1(config)#class-map http 
R1(config-)#match access-group 111

2、策略: 
policy-map CBWFQ  名字 
  class voip 
    bandwidth percent 30   percent參數代表總帶寬的百分比,remaining參數代表75%可用帶寬的百分比 
  class http 
    bandwidth percent 20 
  class class-default    設置其它流量佔用20%帶寬 
    bandwidth percent 25

3、調用: 
service-policy output CBWFQ  名字

還可以在最後一個隊列中單獨使用WFQ,用了後,就不能指定帶寬了 
policy-map CBWFQ 
  class class-default 
    fair-queue

max-reserved-bandwidth 100   這個值默認是75%,如果你想用到100%,必須打上這一命令

實驗二:

·需求:普通199.1.1.0/24 ->20% 
Voice (Critial)->50%   VOIP的流量已經被標記了優先級5 
Other           ->30%

1)定義普通用戶的流量: 
access-list 1 permit 199.1.1.0 0.0.0.255

2)將前2種流量放入Class-map: 
class-map match-all VOICE 
  match ip precedence 5   將優先級爲5的包找出來 
class-map match-all NORMAL 
  match access-group 1

3)爲3種流量設定百分比: 
policy-map CBWFQ 
  class NORMAL 
   bandwidth percent 20 
  class VOICE 
   bandwidth percent 50 
  class class-default 
   bandwidth percent 30

4)在接口調用: 
interface Serial0/0 
  max-reserved-bandwidth 100 
(因爲默認是隻能使用總帶寬的75%,如果想用所有帶寬,必須使用這一命令,對所有帶寬進行劃分) 
  service-policy output CBWFQ

默認情況下,帶寬的25%用於網絡控制流量,只有75%用於數據的傳輸 
R2#show class-map 
R2#show policy-map 
R2#show policy-map interface

LLQ(Low Latency Queuing)在WFQ的基礎上增加了一個優先隊列 
·CBWFQ雖然能夠爲各種類別的流量提供帶寬的保證,但卻不能提供低延遲的傳輸保證。

·低延遲隊列:LLQ將絕對優先隊列技術應用於CBWFQ,能夠提供低延遲的傳輸保證。從而緩和了語音會話的抖動。絕對優先隊列主要被用來處理對延遲敏感的數據(如語音)。 
使用這種LLQ特性後,將首先發送對延遲敏感的數據,也就是LLQ中的數據。這種數據發送完畢後才發送其他隊列中的分組。

·雖然可以將多種不同的實時數據流加入到Priority隊列中,但Cisco建議只將語音流加入到這種隊列中。

例一: 
policy-map WAN-EDGE 
  class VOICE 
    priority percent 33   設定語音流量佔用33%的帶寬,並放入LLQ隊列   使用priority就放入優先級隊列 
  class CALL-SIGNALING 
    bandwidth percent 20 
  class MISSION 
    bandwidth percent 20 
  class class-default 
    fair-queue          對其它的流量應用WFQ

例二: 
policy-map WAN-EDGE 
  class VOICE 
        priority 540     指定語音流量佔用540K帶寬 
  class VIDEO 
         priority 460     指定視頻流量佔用460K帶寬 
  class CALL-SIGNALING 
     bandwidth percent 2 
  class MISSION 
     bandwidth percent 20 
  class class-default 
     fair-queue

例三: 
policy-map WAN-EDGE 
  class VOICE 
    priority percent 33 
  class NISSION 
    bandwidth remaining percent 50  剩餘百分比語句,劃分去掉優先級隊列所佔帶寬之後的帶寬 
  class class-default 
    bandwidth remaining percent 50

可用帶寬=實際帶寬*0.75 
其它隊列的可用帶寬=實際帶寬*0.75-分配給語音的帶寬

 

 

<CBWFQ/WFQ的對比>

與基於流的WFQ相比,CBWFQ具有以下優點: 
·帶寬分配:CBWFQ能夠給每個類別分配帶寬,最多可以定義64個類別 
WFQ只能根據7種IP優先級來對數據流進行分類。

·粒度更細、可擴展性更高:CBWFQ可根據多種條件來定義類別。 
<RTP優先隊列>隊列中真正的老大

RTP優先隊列可以和WFQ或CBWFQ結合使用

RTP優先隊列只能爲UDP流量服務

這個隊列在接口下直接配置,實際上就是在接口下劃出一部分帶寬給特定UDP流量來使用,實際上主要是爲VOIP流量服務

·RTP(Real-Time Protocol):實時傳輸協議 
RTP傳輸多媒體應用的數據流,包括IP語音和視頻(對延遲比較敏感的)

語音進程的端口號:16384-32767之間的偶數  奇數的是控制端口,偶數的是數據端口 

R1(config-if) #ip rtp priority 16384 16383 50   最後這個參數是分配的帶寬值

 

 

WRRQ(Weighted Round-Robin加權輪詢隊列) 
主要用於交換機的技術 
3550每一個端口下都有四個隊列,每個隊列默認佔用25%的帶寬,採用輪詢的方式來調度。可以把第四個隊列配置成絕對優先隊列,只有絕對優先隊列中的數據處理完成後,纔會傳輸其它隊列的數據。

配置實例: 
需求: 
將優先級爲0、1的數據幀放入隊列一中 
將優先級爲2、3的數據幀放入隊列二中 
將優先級爲4、5的數據幀放入隊列三中 
將優先級爲6、7的數據幀放入隊列四中

SW1(config)#mls qos   啓用命令,必須打上 
SW1(config-if)#wrr-queue cos-map 1 0 1   定義映射表,將cos 0和1映射到隊列1 
SW1(config-if)#wrr-queue cos-map 2 2 3 
SW1(config-if)#wrr-queue cos-map 3 4 5 
SW1(config-if)#wrr-queue cos-map 4 6 7

SW1#sh mls qos int f0/1 queueing   查看

可以配置四個隊列的權值,使其得到不同的服務 
SW1(config-if)#wrr-queue bandwidth 1 2 3 4 
隊列1得到10%的帶寬 
隊列2得到20%的帶寬 
隊列3得到30%的帶寬 
隊列4得到40%的帶寬

SW1(config-if)#priority-queue out  啓用絕對優先隊列

配置入站信任 
SW1(config-if)#mls qos trust cos 
SW1(config-if)#mls qos trust dscp 
SW1(config-if)#mls qos trust ip-precedence 
SW1(config-if)#mls qos trust device cisco-phone 

當信任入站的COS和IP優先級時,會映射到相應的內部DSCP值,在交換機上根據內部的DSCP值來決定相應的出站QOS策略。 
—————————————————————————————– 
—————————————————————————————

限速策略: 
Shaping mechanisms:    整形   
Generic traffic shaping (GTS)通用流量整型 
Frame Relay traffic shaping (FRTS)幀中繼流量整型   這個通常要考 
Class-based shaping 
流量輸出平緩  將超出的流量放入緩存 等帶寬可用時再輸出  只能用於出方向 
Policing mechanisms:     監管    
Committed access rate (CAR) 
Class-based policing 
將超出的流量直接丟棄  可以用處出方向和入方向

令牌桶: 
TC:time comminted   單位毫秒 默認125毫秒,承諾時間 間隔時間   每個多少時間放一次令牌 
BC:burst committed       單位bit,承諾突發量,也叫正常突發量 
Be:burst excess    Be是從Bc溢出來的令牌,超出的突發量   存儲第一個令牌桶溢出的令牌 
CIR:commited infromation rate,單位Kbps。承諾信息速率  所要控制的流量

TC=BC/CIR      CIR=Bc/Tc          cir 64   tc 125=8000 bc 
每Tc秒向桶中放入Bc這麼多的令牌 
CIR承諾信息速率,也就是你實際想要控制的速率

Shaping mechanisms: 
GTS Building Blocks通用流量整型

DLZ)~{QHOAYDNDH4_5F{ZQA

GTS Overview

GTS is multiprotocol.  三層協議 
GTS uses WFQ for the shaping queue. 默認是WFQ,不能改 
GTS can be implemented in combination with any queuing mechanisms:可以配合以下的軟件Q使用 
FIFO queuing 
Priority queuing (PQ) 
Custom queuing (CQ) 
Weighted fair queuing (WFQ) 
GTS works on output only.  只能工作在出方向

GTS Implementation

image

Traffic-shape group shapes outbound traffic matched by the specified access list. 
Several traffic-shape group commands can be configured on the same interface. 
The traffic-shape rate and traffic-shape group commands cannot be mixed on the same interface. 
A separate token bucket and shaping queue is maintained for each traffic-shape group command. 
Traffic not matching any access list is not shaped.

configuration GTS

例一: 
要求將接口速率限制爲64K

R1(config-if)#traffic-shape rate 64000 8000 8000 1000 ———- 啓用GTS,設置CIR爲64000。 
                                                                            CIR        Bc     Be     buffer(shape Q中的座位數) 
關鍵是CIR的值,其它會自動計算,可以不指定

#show traffic-shap serial 0

例二: 
對於1.1.1.0網段的用戶訪問2.2.2.0網段進行限速,限爲64K

R1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255 
R1(config-if)#traffic-shape group 100 64000

#show traffic-shape 
#show traffic-shape queue  查看shape隊列

 

 

GTS幀中繼適應性整型(GTS Frame Relay Congestion Adaptability)

FECN (Forward explicit congestion notification)  前向顯示擁塞通告 幀中繼交換機通告receive方 
BECN (Backward explicit congestion notification) 後向顯示擁塞通告 交換機通告send方 
            CLLM (Consolidated link layer management) 
     DE(Discard Eligibility)bit

DE:一旦幀中繼有一個DE位置位,而且發生擁塞,那麼就丟掉DE位的幀。 
發送方發送tcp數據給接收方,幀中繼會FECN置位 發給接收方 接收方回包 幀中繼會BECN置位 發給發送方 
GTS在幀中繼中可以做適應性的整型,如果收到BECN就降低到3/4,如收不到則回升。

注意:在做幀中繼適應性整型命令之前,首先要做正常的GTS流量整形,說明接口的限制速率。

if)#traffic-shape adaptive [bit-rate] ———- 啓用幀中繼適應性整型命令,還可以在這裏設置當發生擁塞時,最少可低至多少流速 
if)#traffic-shape adaptive 12800  當發生擁塞時,最少可低到12800bit/S

show traffic-shape   可以查看到BECN顯示出來了

traffic-shape fecn-adapt —– 在接收方配置,在某些情況下,發過來的是單向流量,沒有回包,產生擁塞時,無法通知發送方,用這一命令可讓接收方在收到FECN置位的數據幀後發送一個測試信息,用來通知發送方產生了擁塞。

例三: 
要求將路由器的出接口速率限定爲256K,並啓用幀中繼的適應性整形,一旦收到BECN,則可將速率最低降到64K。 
interface s0/0 
  traffic-shape rate 256000 
  traffic-shape adaptive 64000

FRTS Overview  幀中繼流量整型  可以在幀中繼中爲每一個DLCI管道做整型 
FRTS is multiprotocol. 
在接口上啓用了FRTS後,不能使用WFQ,只能是FIFO,CISCO的膠片上有錯誤 
FRTS can use one of these queuing mechanisms as the shaping queue:shap Q可以選以下任一種 
Priority queuing (PQ) 
Custom queuing (CQ) 
Weighted fair queuing (WFQ) 
FRTS can be implemented only in combination with only FIFO on the interface. 
FRTS works on output only.   也只能工作在出方向

配置: 
第一步: 
R1(config-if)#frame-relay traffic-shaping 在接口上啓用FRTS

第二步: 
在幀中繼中必須在map-class中去改CIR 
R1(config)#map-class frame-relay FRTS 
R1(config-map-class)#frame-relay traffic-rate average[peak]  看下面的示例 
R1(config-map-class)#frame-relay traffic-rate 64000 80000 如果兩個值相同,等於沒有Be 
R1(config-map-class)#frame-relay traffic-rate 64000 64000   這種情況等於沒有Be

另一種寫法 
R1(config-map-class)#frame-relay [in|out] cir 64000  分別指定,以下三條命令等於上面一條 
R1(config-map-class)#frame-relay [in|out] BC  8000 
R1(config-map-class)#frame-relay [in|out] BE  8000 
show traffic-shaping

第三步: 
R1(config-if)#frame-relay class FRTS  在接口下調用,對本接口下的所有VC均有效

在一條PVC中單獨調用: 
R1(config-if)#frame-relay interface-dlci 104 
R1(config-if-dlci)#class FRTS    在PVC下單獨調用和修改

也可以做適應性的流量整形: 
R1(config)#map-class frame-relay FRTS 
R1(config-map-class)#frame-relay adaptive-shaping becn ———– FR中啓用適應性的整型,也就是讓路由器根據收到的BECN量調整其發送速率。單獨針對一條PVC起效

R1(config-map-class)#frame-relay cir 128000     適應性整型時指定cir 
R1(config-map-class)#frame-relay minicir 16000   適應性整型的最低速率,通常和上一條命令結合用。

FRTS的shape queue默認也是WFQ

EIR=Be/Tc

CBshaping

在CBshaping中可以指定平均速率,也可以指定最大速率。

例: 
1、對VOICE流量,設定平均速率爲64K 
2、對於1.1.1.0網段訪問2.2.2.0網段的流量,設定最大速率爲32K

第一步:定義ACL,抓出流量 
access-list 100 permit udp any any range 16384 32767 
access-list 101 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255

第二步:定義class-map,將流量分類 
class-map VOIP 
  match access-group 100 
class-map NET 
  match access-group 101

第三步:定義策略,對不同類別的流量給予不同的速率 
policy-map CBSHAPE 
  class VOIP 
    shape average 64000 
  class NET 
    shape peak 32000

第四步:接口下調用 
int e0/0 
  service-policy output CBSHAPE

show policy-map interface s0

shape max-buffers 2000 ——– 修改的buffers數,默認值爲1000。

Policing mechanisms: 
CAR可以做在進方向也可以做在出方向。 
同一接口使用car和CBmarking 入接口先cbmarking後car  出接口則相反 
可以單獨針對某一個流量作限速,還可決定拿到牌的和沒拿到牌的分別作什麼動作 
-Transmit 
-Continue 
-Drop

CAR沒有BE的情況下: 
If the number of bytes in the packet is less than or equal to(<=)the number of tokens in Bucket1,the packet conforms,CAR removes tokens from Bucket1 equal to the number of bythes in the packet and performs the action for packets that conform

CAR中有Be的情況下: 
DA-actual debt 真實債務,向第二個桶所借的實際令牌數,DA是累加的,直到新令牌放進來 
DC-compounded debt 符合債務 
DC=原DC+當前DA

當DC<=Be時,這個包就屬於comform-action 
當DC>Be時,這個包就屬於exceed-action,同時將DC置0

例一:對所有流量都控制,沒有分類

if)#rate-limit input 64000 1500 2000 conform-action transmit exceed-action drop 
#show interface rate-limit

shaping中BC和BE是用單位bit

例二:對一類特定的流量做限制 
要求在出接口做 CAR 
speed:64Kpbs 
Traffic:192.168.1.0/24 any udp 4000 5000(端口號4000-5000) 
Token:prec=3 
NO Token:Drop

access-list 100 permit udp 192.168.1.0 0.0.0.255 any range 4000 5000

int s0/0 
rate-limit output access-group 100 64000 1500 2000 conform-action set-prec-transmit 3 exceed-action drop 
                                   CIR   Bc   Bc+Be  拿到令牌的     設置優先級   沒令牌的drop掉

#show interface rate-limit

注意:這裏Bc和Be的單位是BYTE,切記,在shaping中,單位是bit,在policy中,單位是byte 
      set-prec-transmit 如果這裏用的是set-prec-continue 則表示可以繼續向下找更優的語句

例三:說明continue的作用 
要求: 
1、將出接口的HTTP流控制在64K,拿到令牌的傳遞,其他的向下匹配 
2、對於接口的語音流量要求控制在128K,拿到令牌的傳遞,其他的drop

access-list 100 permit tcp any any eq www 
access-list 101 permit udp any any range 16384 32767

rate-limit output access-group 100 64000 1500 2000 conform-action transmit exceed-action continue 
rate-limit output access-group 101 128000 1500 2000 conform-action transmit exceed-action drop

CBpolicing 
-conforms   拿到令牌的就是conforms 
-exceeds    在只有一個桶的情況下,沒拿到令牌的就是exceeds,兩個桶的情況下,借了第二個桶的令牌的就是exceeds 
-violates   在有兩個桶的情況下才有用,當兩個桶的令牌都用完了,再來的數據包就是violates一類了 
例: 
對於VOICE流量,設傳輸速率爲64K,拿到令牌的設爲EF優先級,並傳輸,借用令牌的,只作爲普通包傳輸,沒牌的drop掉。

第一步: 
access-list 100 permit udp any any range 16384 32767

第二步: 
class-map VOIP 
  match access-group 100

第三步: 
policy-map WOLF 
  class VOIP 
    police cir 64000 conform-action set-dscp-transmit ef exceed-action transmit violate-action drop  拿到令牌的設爲ef優先級,借用令牌的只作爲普通包傳輸,沒牌的丟掉

第四步: 
int s0/0 
service-policy input WOLF    調用

show policy-map interface s0/0

—————————————————————————————– 
WRED(Weighted Random Early Detection) 
·TCP中存在一個慢啓動和擁塞避免機制,當檢測到網絡中發生衝突的時候,會大幅度降低發送速率 
·當網絡中發生擁塞,有可能同時丟失多個TCP連接的數據包,造成多個TCP連接同時進入慢啓動狀態,這被稱爲TCP全局同步 
·解決方法:可以在網絡發生擁塞之前,就主動丟棄一部分TCP數據包,防止出現尾丟棄,從而避免進入慢啓動

·默認設置尾丟棄是一種被動的隊列管理機制。 
主動隊列管理機制在擁塞發生前就丟棄分組。

·基本思想:確保隊列長度位於最小閾值和最大閾值之間,對於不同類別的數據流採用不同丟棄策略。 
丟棄概率:1/10

R2(config-if)#random-detect  啓用開關

random-detect precedence 6 45 50 5  設優先級爲6的包在隊列填充到45和50之間時開始丟棄 
                                 5表示按1/5的概率丟棄 
random-detect dscp-based 
show queueing random-detect

random-detect exponential-weighting-constant N  默認是9 
N值越大,WRED就越不敏感,最後導致失效,N值越小,會導致包被丟掉的概率越大

注意:默認情況下,啓用WRED後只能使用FIFO

FB-WRED   
使用流來分類,默認最多可分256個流 
int s0/0 
random-detect flow  開啓開關 
random-detect flow count 256  設定可分的流的數目

show queueing random-detect

CBWRED即可對TCP,也可對非TCP流量,必須結合CBWFQ來做

例:將優先級爲3、4 的數據包分爲一個類別GOLD、帶寬30% 
    當隊列中數據包達到20個時,以1/10的概率丟棄優先級爲3的包,達到40個時尾丟棄 
    當隊列中數據包達到30個時,以1/10的概率丟棄優先級爲4的包,達到40個時尾丟棄

    將優先級爲1、2 的數據包分爲一個類別SILVER、帶寬20% 
    當隊列中數據包達到15個時,以1/10的概率丟棄優先級爲1的包,達到35個時尾丟棄 
    當隊列中數據包達到20個時,以1/10的概率丟棄優先級爲2的包,達到35個時尾丟棄

    對於默認隊列,啓用WFQ,WRED

class-map  GOLD 
  match ip precedence 3 4 
class-map  SILVER 
  match ip precedence 1 2

policy-map POLICY1 
  class GOLD 
    bandwidth percent 30 
    random-detect 
    random-detect precedence 3 20 40 10 
    random-detect precedence 4 30 40 10 
  class SILVER 
    bandwidth percent 20 
    random-detect 
    random-detect precedence 1 15 35 10 
    random-detect precedence 2 20 35 10 
  class class-default 
    fair-queue 
    random-detect

show policy-map 
show policy-map interface s0/0

以上的例子是基於優先級來做的,如果基於DSCP,開啓的命令是不一樣的

policy-map POLICY1 
  class GOLD 
    bandwidth percent 30 
    random-detect dscp-based 
    random-detect precedence 31 20 40 10 
    random-detect precedence 41 30 40 10 
  class SILVER 
    bandwidth percent 20 
    random-detect dscp-based 
    random-detect precedence 11 15 35 10 
    random-detect precedence 21 20 35 10 
  class class-default 
    rair-queue 
    random-detect dscp-based

 

老胳膊文章,轉載請註明: 老胳膊

本文鏈接地址: Qos (Quality of server)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章