思科QoS知識全面了解


Qos設置:
第1步:定義傳輸類型

你必須告訴路由器,哪種數據流需要進行QoS管理。你可以通過訪問控制列表(ACL)或者基於網絡應用程序識別(NBAR)的方式來進行定義。其中ACL是為路由器設定不同傳輸數據類型的傳統方式。

而NBAR則是讓路由器識別流經路由器的各種數據的類別,比如HTTP數據是HTTP類別,Skype是Skype類別。但是路由器可識別的應用程序協議數量是有限的,這依賴於路由器內部存儲的一個程序協議列表。

雖然路由器無法識別全部應用程序,但是路由器廠商在每次IOS升級時,會在列表中加入更多的程序。另外,你也可以自己定義程序識別列表。

第2步:創建類映射(class-map)

類映射就是將不同類型的數據流進行分組。比如,你可以創建一個叫做“VoIP traffic”的類映射,然后將各種VoIP協議歸入該類。

第3步:創建策略映射(policy-map)

策略映射可以與類映射匹配,確定某類數據流的帶寬和/或優先級。

第4步:將策略映射應用於接口

和ACL列表一樣,你必須將策略映射應用於某個你所設定的端口上。你可以設定策略映射為輸入或輸出模式


實例:
對不同IP組進行流量限制實例:

Cisco(config)#ip access-list extended BOSS
Cisco(config-ext-nacl)#permit ip host 192.168.1.8 any
Cisco(config-ext-nacl)#permit ip host 192.168.1.18 any
Cisco(config-ext-nacl)#permit ip host 192.168.1.38 any
Cisco(config-ext-nacl)#permit ip host 192.168.1.48 any
Cisco(config-ext-nacl)#permit ip host 192.168.1.58 any
Cisco(config-ext-nacl)#permit ip host 192.168.1.68 any
Cisco(config-ext-nacl)#end
Cisco#config t
Cisco(config)#ip access-list extended COMMON
Cisco(config-ext-nacl)#deny ip host 192.168.1.8 any
Cisco(config-ext-nacl)#deny ip host 192.168.1.18 any
Cisco(config-ext-nacl)#deny ip host 192.168.1.38 any
Cisco(config-ext-nacl)#deny ip host 192.168.1.48 any
Cisco(config-ext-nacl)#deny ip host 192.168.1.58 any
Cisco(config-ext-nacl)#deny ip host 192.168.1.68 any
Cisco(config-ext-nacl)#permit ip 192.168.0.0 0.0.255.255 any
Cisco(config-ext-nacl)#end
Cisco#config t
Cisco(config)#route-map QoS permit 10
Cisco(config-route-map)#match ip address BOSS
Cisco(config-route-map)#set ip precedence ?
    <0-7>             Precedence value
    critical          Set critical precedence (5)
    flash             Set flash precedence (3)
    flash-override    Set flash override precedence (4)
    immediate         Set immediate precedence (2)
    internet          Set internetwork control precedence (6)
    network           Set network control precedence (7)
    priority          Set priority precedence (1)
    routine           Set routine precedence (0)
    <cr>
Cisco(config-route-map)#set ip precedence critical
Cisco(config-route-map)#exit
Cisco(config)#route-map QoS permit 20
Cisco(config-route-map)#match ip address COMMON
Cisco(config-route-map)#set ip precedence priority
Cisco(config-route-map)#exit
Cisco(config)#class-map match-any NORMAL
Cisco(config-cmap)#match ip precedence 0 1 2 
Cisco(config-cmap)#class-map match-any PREMIUM
Cisco(config-cmap)#match ip precedence 0 1 2
Cisco(config-cmap)#exit
Cisco(config)#policy-map QoS_OUTPUT
Cisco(config-pmap)#class PREMIUM
Cisco(config-pmap-c)#bandwidth 2048
Cisco(config-pmap-c)#police 2048000 bc 19200 38400
Cisco(config-pmap-c-police)#conform-action transmit
Cisco(config-pmap-c-police)#exceed-action transmit 
Cisco(config-pmap-c-police)#class NORMAL
Cisco(config-pmap-c)#bandwidth 512
Cisco(config-pmap-c)#police cir 51000 bc 1200 be 1200
Cisco(config-pmap-c-police)#conform-action transmit 
Cisco(config-pmap-c-police)#exceed-action drop 
Cisco(config-pmap-c-police)#end
Cisco#config t
Cisco(config)#interface G 0/0
Cisco(config-if)#ip nat inside
Cisco(config-if)#ip policy route-map QoS
Cisco(config)#interface G 0/1
Cisco(config-if)#ip nat outside
Cisco(config-if)#service-policy output QoS_OUTPUT 
---------------------------------------------------------------------------------------------------
marking:
1.定義class-map.
class-map [match-all/match-any] {map-name}
默認不打的話是match-all
2.定義匹配命令match
match access-group {NO}
match input-interface {interface}
match class-map {map-name}                class-map嵌套
match source-address {mac-address}           源mac地址
match destination-address {mac-address}      目的mac地址
match vlan {vlan-ID}
match ip dscp {DSCP}
match ip precedencc {precedence}
match protocol {protocol}                    基於NBAR

Router(config) class-map FOO
Router(config-cmap)#match ?
       access-group             Access group
       any                      Any packets
       class-map                Class map
       cos                      IEEE 802.1Q/ISL class of service/user priority values
       destination-address      Destination address
       input-interface          Select an input interface to match
       ip                       IP specific values
       mpls                     Multi Protocol Label Switching specific values
       not                      Negate this match result
       protocol                 Protocol
       qos-group                Qos-group
       source-address           Source address
3.設置policy-map
policy-map {policy-name}
4.調用class-map
class-map {map-name}
5.設置標記
set ip dscp {DSCP}
set ip precedence {PRECEDENCE}
set cos {COS}
priority {Kbps|percent PERCENT} [bc]       定義優先級流量的帶寬以及突發流量
bandwidth {Kbps|percent PERCENT}           定義保留帶寬
random-detect                              啟用WRED
police {CIR BC BE} conform-action {action} exceed-action {action} [violated-action {action}]     使用令牌桶限速
queue-limit {PACKETS}                      定義隊列中數據報的最大個數
service-policy {policy-name}               調用其它的策略進行嵌套
shape {average|peak} {CIR [BC] [BE]}       整形
drop
6.在接口模式下調用policy-map
service-policy [input|ouput] {POLICY-NAME}
察看命令:
show policy-map [policy-name]
show policy-map interface [INTERFACE]
show class-map [class-name]
show ip nbar pdlm
show ip nbar port-map        顯示NBAR使用的協議到端口的映射

NBAR應用:
使用限制:
1.快速以太網信道
2.隧道接口或加密的接口
3.SVI(交換虛擬接口)
4.撥號接口
5.多鏈路PPP(MLP)
使用前先要敲命令:ip cef
class-map {name}
match protocol ...
ip nbar pdlm flash://bittorrent.pdlm     加載bittorrent.pdlm 到路由器閃存里(事先要把pdlm復制到flash中)
match procotol http url "*.jpeg|*.jpg" (匹配url中帶有jpeg和jpg的連接)
match procotol http url "*.gif" (匹配url中有gif的連接)

擁塞管理
WFQ:
特點:
1.基於流(5元素)分類,隊列數N可以配置
2.出隊后按IP優先級來分配帶寬,優先級越低則帶寬越小
3.在其它隊列空閑時搶占它們的帶寬,又有流量時歸還帶寬
4.是低於2.048Mbps串行接口的默認配置
配置命令:
接口模式下fair-queue
show queueing fair
show queue [interface]
PQ:
缺點:1.只能靜態配置,不能適應網絡拓撲的變化2.不支持隧道接口3.要通過數據分類卡,比FIFO慢
配置:
1.定義優先級隊列,可以基於協議和基於進站接口
基於協議poriority-list {list-number} protocol {PROTOCOL-NAME} {high|medium|normal|low}
基於進站接口poriority-list {list-number} interface {interface} {high|medium|normal|low}
2.定義默認優先級隊列,未被分類的數據報被送到此處,默認級別為normal
priority-list {list-number} default {high|medium|normal|low}
3.定義每個隊列中數據報的個數,從高到低,默認為20,40,60,80
priority-list {list-number} queue-limit {high-limit medium-limit normal-limit low-limit}
4.把優先級隊列運用在接口上
priority-group {list-number}
察看命令:
show queue [interface]
show queueing priority

RTP(Real Time Protocol)
支持端口號為偶數的udp報文
可以進行限速,超過的可丟棄,也可以配置帶寬,不會占用超出規定的帶寬
命令:
ip rtp priority {starting-rtp-port-number port-number-range} {bandwidth}
max-reserved-bandwidth PERCENT
show queue [interface]
debug priority

CRTP(壓縮實時協議): 用來壓縮ip/udp/rtp報頭
壓縮分為三種:鏈路壓縮,有效負載壓縮,報頭壓縮
二層報頭--tcp/ip報頭--有效負載
1.鏈路壓縮:對整個分組進行壓縮,包括報頭和有效負載。獨立於協議的。只適用於點到點鏈路。兩種算法:Predictor和STAC
2.有效負載壓縮:只壓縮數據部分,對報頭沒有影響。適用於frame-relay或ATM網絡。
3.tcp/ip報頭壓縮:針對協議的,適用於幾個字節數據的小型分組。
配置:
對HDLC,LAPB: compress [predictor|stac|mppc]
對ppp: ip compress [predictor|stac]
對frame-relay點到點接口或子接口啟用stac壓縮: frame-relay payload-compress
啟用crtp:
1. ip rtp header-compression [passive]
若不啟用passive,則對所有RTP數據流壓縮;若啟用passive,則只有當進入端口的RTP分組被壓縮時,軟件才能對離開該接口的RTP分組壓縮
2. ip rtp compression-connections {NUMBER}
更改CRTP壓縮的條數,默認為16條
3. 啟用tcp報頭壓縮: ip tcp header-compression [passive]     若沒有啟用passive, 則必須指定關鍵字active,將對所有IP/UDP/RTP包頭進行壓縮 
ip tcp compression-connections {NUMBER}
frame-relay中的 crtp:
在物理接口上啟用CRTP,則在它的子接口上將繼承特性
frame-relay ip rtp header-compression [passive]   
frame-relay ip rtp compression-connections {NUMBER}
只針對特定的PVC啟用CRTP:
frame-relay map ip {ip-address} {dlci} [broadcast] rtp header-compression [active|passive] [connections number]
察看命令:
show ip rtp header-compression [interface] [detail]
show frame-relay ip rtp header-compression [interface]

WRR(weighted round-robin)
一種隊列調度機制,根據每個出站隊列的權值來分配帶寬,權值與帶寬成正比。
僅當發生擁塞時才會使用WRR,不擁塞時不會分配帶寬。
步驟:
1.全局啟用mls qos
2.進入接口模式
3.通過COS將數據報分配到不同的隊列中去。
wrr-queue cos-map QUEUE-ID THROSHOLD COS1... COSn     它用於配置cos值到出站隊列的映射關系。
對隊列進行編號時,從低優先級開始,到嚴格優先級結束。
配置嚴格優先級隊列:wrr-queue priority-queue 
4.配置WRR隊列的權重
wrr-queue bandwidth WEIGHT1 WEIGHT2 WEIGHT3 WEIGHT4
計算每個隊列的方法是:
example:wrr-queue bandwith 1 2 3 4
則帶寬: 隊列1:權重1/總權重=1/10
5.定義傳輸隊列長度的比例,取值為1-100%
wrr-queue queue-limit LOW-PRIORITY-QUEUE-WEIGHT MEDIUM-PRIORITY-QUEUE-WEIGHTS HIGH-PRIORITY-QUEUE-WEIGHTS
高優先級隊列因為延時小,數據量小,所以不需要太大的緩存區。往往將大部分緩沖區用於低優先級隊列。

擁塞避免
1.尾丟棄
對所有通信流平等對待,將導致TCP全局同步
wrr-queue threshold QUEUE-ID THR1% 100%         THR1%是開始丟棄通信流時輸出隊列的填滿程度,后面一個是100%是尾丟棄
2.WRED
WRED與RED的區別在於前者引入IP優先權DSCP值來區別丟棄策略,可以為不同IP優先級DSCP設定不同的隊列長度、隊列閾值、丟棄概率。並且RED只對TCP流量有用
通過對隊列數據流傳輸速度的平均值計算來決定是否丟棄,防止了對突發流量的不公平待遇。
WRED和LLQ矛盾
WRED往往和WRR一起使用。
WRED可以在接口上進行配置,也可以在policy上進行配置,可以針對於precedence進行RED,也可以針對於DSCP值進行RED,當然,兩者之間只能選擇一個。
(1)基於DSCP
random-detect dscp-based   
random-detect dscp {DSCP} {min max mark}
(2)基於ip precedence
random-detect 
random-detect precedence {PRECEDENCE} {min max mark}
WRED與WRR連用:
wrr-queue random-detect min-throshold QUEUE-ID THR1% [THR2% [THR3% ...]]
wrr-queue random-detect max-throshold QUEUE-ID THR1% [THR2% [THR3% ...]]
min-throshold表示開始丟棄某些數據包時的最大填滿程度
max-throshold表示丟棄所有數據包時的最大填滿程度
example:
int G1/1
wrr-queue bandwidth 50 75
wrr-queue queue-limit 100 50
wrr-queue random-detect min-throshold 1 50 70
wrr-queue random-detect max-throshold 1 75 100
wrr-queue cos-map 1 1 0 2
wrr-queue cos-map 1 2 3
wrr-queue cos-map 2 1 4
wrr-queue cos-map 2 2 6
priority-queue cos-map 1 1 5 7
rcv-queue cos-map 1 1 0
switchport
解釋:共有兩個隊列。當隊列1的填滿程度達到50%和70%時,交換機分別對映射到閘值1和閘值2的數據包進行WRED(即開始丟棄),當隊列1的填滿程度達到75%和100%時,交換機分別對映射到閘值1和閘值2的數據包全部丟棄。注意:隊列2沒有采取WRED。
基於流的WRED(WRED和WFQ結合起來使用)
小的流丟棄的概率小,大的流丟棄的概率大,保護小的流。
命令:
1.啟用基於流的WRED。
random-detect flow
2.設置平均深度因素(average depth factor)的值,值必須為2的冪,默認值為4.可選:
random-detect flow average-depth-factor {scaling-factor} 這個參數是改變一個乘法的比例因數.從而改變隊列的大小,其實就是改變隊列的長度。
3.設置基於流的WRED 的數據流數目,默認值為256
random-detect flow count {number}

流量策略
qos的流程:1.基於流或基於類的分類;2.結合令牌桶進行policing或shaping(CAR或GTS);3.擁塞避免(尾丟棄或WRED);4.擁塞管理(各種隊列機制);5.出隊。
標記在什么地方進行??(標記可以在進行CAR的時候進行,CAR也可以進行重新標記)
CAR(Committed Access Rate)
CAR通過使用令牌桶TC來進行流量控制。分類后,不需要流控的流量直接繼續發送,而需要進行流控的流量就要經過令牌桶。只有當令牌桶中有令牌時,相應的流量才能通過。若沒有足夠的令牌,要么流量被直接丟棄(policing),要么緩存起來(shaping),等有了足夠的令牌后再發送出去。
CAR還可以用來做mark或remark(即可以用來設置ip優先級或重新設置ip優先級)
CAR可以為不同類別的報文設置不同的流量特性和標記特性,即可以對每個類進行CAR。CAR的策略還可以串聯處理,比如先對總的流量進行一次限速,然后再對各個類進行小范圍的限速。
CAR一般用在網絡邊界路由器上。可以在一個接口上設置多個CAR策略,數據包依次和多個CAR策略匹配,若沒有匹配的,則默認操作時轉發數據包。
CAR的使用有以下限制:1.只能對IP流量限速;2.不支持fast EtherChannel;3.不支持隧道接口;4.不支持ISDN PRI接口。
命令:
rate-limit {output|input} {CIR BC BE} conform-action {action} exceed-action {action}
注意:CIR單位是bit/s;而BC和BE的單位是byte/s。
conform-action的條件是指當要發的數據小於正常突發(bc)的時候。exceed-action是指要發的數據大於普通突發,小於最大突發(be)的時候。
action的選項共有如下這些:
continue                           繼續執行下一條CAR語句
drop                               丟棄數據包
tranmsit                            轉發數據包 
set-prec-continue {precedence}     設置IP優先級並繼續執行下一條CAR語句
set-prec-transmit {precedence}      設置IP優先級並轉發數據包
set-dscp-continue {dscp}           設置dscp值並繼續執行下一條CAR語句
set-dscp-transmit {dscp}            設置dscp值並轉發數據包
上面都是只能基於整個接口的流量進行CAR,下面的可以分別針對某個流量或ip precedence或dscp值或MAC地址進行CAR
擴展的配置
1.針對dscp值進行CAR
rate-limit {output|input} [dscp DSCP] {CAR BC BE} conform-action {action} exceed-action {action}
2.針對ACL進行CAR
rate-limit {output|input} access-group {ACL NUM} {CAR BC BE} conform-action {action} exceed-action {action}
3.針對限速ACL進行CAR
rate-limit {output|input} access-group rate-limit {ACL NUM} {CAR BC BE} conform-action {action} exceed-action {action}
限速ACL只是一種調用關系:access-list rate-limit {ACL NUM} {precedence|mac-address}     可以匹配優先級,也可以匹配MAC地址
察看命令:
1.查看限速ACL:show access-lists rate-limit [ACL]
2.查看接口的限速信息:show interfaces [interface] rate-limit
policy map中CAR操作
police {CIR BC BE} conform-action {action} exceed-action {acion} violated-action {acion}
action的選項同上。

流量整形(shaping)
通常通過緩沖區和令牌桶來完成,當報文的發送速度過快時,首先在緩沖區進行緩存,在令牌桶的控制下再均勻地發送這些被緩沖的報文。
采用的技術為GTS(通用流量整形)。
GTS與CAR的主要區別在於:利用CAR進行報文流量控制時對不符合流量特性的報文進行丟棄,而GTS對於不符合流量特性的報文則是進行緩沖,減少了報文的丟棄,同時滿足報文的流量特性。
若報文不需要進行GTS,則不經過令牌桶的處理直接發送。
當因為缺乏足夠的令牌而采用GTS后,GTS按一定的周期從隊列中取出報文進行發送。每次發送都會與令牌桶中的令牌數作比較。直到令牌桶中的令牌數減少到隊列中的報文不能再發送或是隊列中的報文全部發送完畢為止。
一般在路由器的出口進行shaping,入口進行policing。
命令:
1.基本的GTS:traffic-shape rate {CIR BC BE}
2.基於ACL的GTS: traffic-shape group {ACL} {CIR BC BE}
察看:
1.查看GTS 的配置信息:show traffic-shape [interface]
2.查看GTS 的統計信息:show traffic-shape statistics [interface]
GTS在Frame Relay上的實現
1.在接口上啟用GTS:
traffic-shape rate {CIR [Bc [Be]]}
2.當接口收到向后顯性擁塞通知(BECN)時,估算流量速率的最低值:
traffic-shape adaptive {CIR}
3.以向前顯性擁塞通知(FECN)做為BECN 的響應.可選:
traffic-shape fecn-adapt
GTS在policy map上的實現
GTS還可以定義平均值和峰值的流量整形,並且可以在配置GTS 的時候采用CBWFQ。
配置基於分類的流量整形的步驟如下:
1.定義平均值和峰值的CIR,Bc 和Be:
(config-pmap-c)#shape {average|peak} {CIR [Bc] [Be]}     average指的是平均值,peak說得是峰值
2.定義緩沖區上限,默認值為1000.可選:
(config-pmap-c)#shape max-buffers {number-of-buffers}
3.在策略上應用CBWFQ。可選:
(config-if)#service-policy output {policy-name}
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM