QoS學習筆記

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.定義優先級隊列,可以基於協議和基於進站接口
基於協議riority-list {list-number} protocol {PROTOCOL-NAME} {high|medium|normal|low}
基於進站接口riority-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}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章