隨著網(wǎng)絡(luò)的發(fā)展,互聯(lián)網(wǎng)流量迅速增加,使得網(wǎng)絡(luò)產(chǎn)生擁堵,延時(shí)增大,有時(shí)還會(huì)造成丟包現(xiàn)象,導(dǎo)致業(yè)務(wù)質(zhì)量下降。那么如何在有限的帶寬上控制不同業(yè)務(wù)的流量?這就需要QoS(Quality of Service,服務(wù)質(zhì)量)技術(shù)了
10年積累的做網(wǎng)站、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有無錫免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
網(wǎng)絡(luò)擁堵的產(chǎn)生
產(chǎn)生網(wǎng)絡(luò)擁堵的兩種常見情況如下(下圖所示):
(1)數(shù)據(jù)從高速端口進(jìn)入設(shè)備,從低速端口轉(zhuǎn)發(fā)出去
(2)流量匯聚,流量從多個(gè)端口進(jìn)入設(shè)備,從一個(gè)端口轉(zhuǎn)發(fā)出去,并且進(jìn)入端口速率之和大于轉(zhuǎn)發(fā)接口的速率
網(wǎng)絡(luò)擁堵的影響
(1)報(bào)文傳輸延遲、延遲抖動(dòng)和丟包率增加
(2)由于過高的延遲和丟包導(dǎo)致報(bào)文重傳,增加網(wǎng)絡(luò)負(fù)擔(dān)
(3)由于網(wǎng)絡(luò)擁塞、報(bào)文重傳導(dǎo)致網(wǎng)絡(luò)有效吞吐量降低
網(wǎng)絡(luò)擁堵的解決方法
(1)提高網(wǎng)絡(luò)帶寬
(2)合理利用網(wǎng)絡(luò)帶寬,根據(jù)需要使用QoS技術(shù)合理分配現(xiàn)有帶寬,降低網(wǎng)絡(luò)擁塞的影響
QOS流量管理
可通過一定的策略控制流量的大小,減少網(wǎng)絡(luò)擁堵的出現(xiàn),主要的流量管理技術(shù)是承諾訪問速率CAR和流量×××GTS。在實(shí)際應(yīng)用中CAR使用的較多,而GTS使用較少。
流分類與流量管理
(1)流分類
流分類是進(jìn)行區(qū)別服務(wù)的基礎(chǔ)。流分類可以使用報(bào)文的優(yōu)先級(jí),識(shí)別不同優(yōu)先級(jí)的流量:也可以使用源地址,目的地址,MAC地址、協(xié)議或端口號(hào)等信息來識(shí)別不同流量。流分類必須與某種流量或帶寬分配的動(dòng)作關(guān)聯(lián)起來才有意義。
(2)流量監(jiān)控
在對(duì)流量進(jìn)行監(jiān)控時(shí)一般可以設(shè)定三個(gè)參數(shù):
承諾平均速率(CIR):允許流量通過的平均速率
突發(fā)量(Bc):允許突發(fā)產(chǎn)生流量的大小,設(shè)置的大小必須大于最大報(bào)文長度
額外突發(fā)量(Be):表示超出突發(fā)量后還可以轉(zhuǎn)發(fā)的流量的大小
(3)流量策略
轉(zhuǎn)發(fā)(transmit):對(duì)合規(guī)和違規(guī)流量設(shè)置策略為轉(zhuǎn)發(fā)
丟棄(drop):對(duì)合規(guī)和違規(guī)流量設(shè)置策略為丟棄
標(biāo)記(set):標(biāo)記報(bào)文的優(yōu)先級(jí)
(4)流量×××(GTS)
流量×××是一種調(diào)節(jié)輸出速率的措施,使用緩存來保存違規(guī)流量,所以可以減小丟包率,避免報(bào)文重發(fā),增加延時(shí),一般應(yīng)用在整體流量小,但有時(shí)出現(xiàn)突發(fā)流量的環(huán)境中。
(5)承諾訪問速率(CAR)
承諾訪問速率是一種流量控制措施,Bc+Be的大小是允突發(fā)的最大的流量,違規(guī)流量一般會(huì)被直接丟棄而不進(jìn)行轉(zhuǎn)發(fā),增加了丟包率,CAR多用于接入層。
流量×××與承諾訪問速率的配置
1.流量×××配置
有以下兩種方式:
(1)基本流量×××配置
Router(config-if)# traffic-shape rate {CIR[BC[BE]]} [buffer-limit]
其中,CIR必須配置,Bc可不用配置。buffer-limit表示緩存區(qū)的使用限制,默認(rèn)為1000(報(bào)文數(shù))
(2)基于ACL的流量×××配置
首先,配置ACL,定義需要×××的流量,在配置以下命令:
Router(config-if)# traffic-shape group access-group {CIR[BC[BE]]}
access-group表示定義的ACL的序號(hào)
例如:某路由器的配置命令如下:
Router(config)# access-list 151 permit udp any any Router(config)# int f0/0 Router(config-if)# traffic-shape rate 1000000 Router(config-if)# int f0/1 Router(config-if)# traffic-shape group 151 1000000 1000000 1000000
(3)查看GTS配置命令
Router# show traffic-shape f0/0 //查看CTS配置信息 Router# show traffic-shape statistics f0/0 //查看CTS流量統(tǒng)計(jì)信息 Router# show traffic-shape queue //查看CTS隊(duì)列信息
2.承諾訪問速率配置
也有以下兩種配置方法:
(1)基本承諾訪問速率配置
Router(config-if)# rate-limit {input|output} {CIR} {burst-nlrmal} {burst-max} conform-action {action} exceed-action {action}
各參數(shù)含義如下
input|output:針對(duì)端口如方向|出方向的流量
CIR:承諾訪問速率(參數(shù)范圍 8000---2000 000 000)
burst-nlrmal:普通突發(fā)量(參數(shù)范圍 1000---512 000 000)
burst-max:最大突發(fā)量(參數(shù)范圍 2000---1024 000 000)
conform-action:對(duì)合規(guī)流量進(jìn)行的操作
exceed-action:對(duì)違規(guī)流量進(jìn)行的操作
action:對(duì)相應(yīng)流量進(jìn)行的操作(drop丟棄transmit轉(zhuǎn)發(fā) set標(biāo)記 )
案例1:配置限速流量8Mb/s,最大突發(fā)量4000,符合流量轉(zhuǎn)發(fā),超出流量丟棄
Router(config-if)# rate-limit input 8000000 2000 4000 conform-action transmit exceed-action drop
案例2:配置限速流量8Mb/s,最大突發(fā)量4000,符合流量被標(biāo)記5后進(jìn)行轉(zhuǎn)發(fā),超出流量被標(biāo)記0后進(jìn)行轉(zhuǎn)發(fā)。優(yōu)先級(jí)為0是默認(rèn)值,表示盡力發(fā)送,當(dāng)網(wǎng)絡(luò)擁堵時(shí),根據(jù)優(yōu)先級(jí)丟棄數(shù)據(jù)
Router(config-if)# rate-limit input 8000000 2000 4000 conform-action set-prec-transmit 5 exceed-action set-prec-transmit 0
(2)擴(kuò)展承諾訪問速率
Router(config-if)# rate-limit {input|output} [access-group access-group] {CIR} {Bc} {Be} conform-action exceed-action
(3)查看CAR配置命令
Router# show interface f1/0 rate-limit //查看端口限速信息
2.承諾訪問速率與流量×××的第二種配置
這種配置可以在端口應(yīng)用一種策略實(shí)施多種流量控制
(1)定義匹配策略
Router(config)# class-map [match-all|match-any] {class-map-name} //進(jìn)入class-map模式,配置匹配條件 Router(config-map)# match access-group 100 //匹配配置的ACL Router(config-map)# match protocol {protocol} //匹配配置的協(xié)議 Router(config-map)# match input-interface int f0/0 //匹配端口進(jìn)入的流量 Router(config-map)# match any //匹配任意數(shù)據(jù)包 Router(config-map)# match {source-address|destination-address} mac {mac-address} //匹配源或目的MAC地址
class-map-name:創(chuàng)建的class-map的名稱
match-all:表示匹配class-map定義的所有條件,是默認(rèn)配置
match-any:表示至少匹配class-map定義的一個(gè)條件
(2)定義流量控制策略
通過policy map調(diào)用class map,然后分別為每個(gè)class map配置策略
Router(config)# policy-map {policy-map-name} //定義policy-map Router(config-pmap)# class {class-map-name} //調(diào)用class map
然后在調(diào)用的class map 中配置的策略包括標(biāo)記流量、流量×××、CAR等
Router(config-pmap-c)# set ip dscp {dscp} //標(biāo)記流量的優(yōu)先級(jí) Router(config-pmap-c)# set ip precedence {precedence}
配置CAR
Router(config-pmap-c)# police {CIR} [burst-normal] [burst-max] conform-action {action} execeed-action {action} violate-action {action}
CIR:承諾訪問速率
burst-normal:承諾突發(fā)量Bc
burst-max:與rate-limit命令不同,此參數(shù)表示過量突發(fā)量Be
config-action:對(duì)小于Bc(包含CIR流量)的流量采取的動(dòng)作,默認(rèn)轉(zhuǎn)發(fā)
exceed-action:對(duì)于Bc和Bc+Be之間的流量采取的動(dòng)作,默認(rèn)轉(zhuǎn)發(fā)
violate-action:對(duì)于大于Bc+Be的流量采取的動(dòng)作,默認(rèn)丟棄
action:同rate-limit命令中的action 對(duì)流量的相應(yīng)操作
配置GTS
Router(config-pmap-c)# shape average {CIR [Bc[Be]]}
average表示平均值,配置完average形式的CTS后,×××后的速率為CIR
配置緩沖區(qū)上限
Router(config-pmap-c)# shape max-buffers {buffer-limit}
buffer-limit:單位報(bào)文數(shù),范圍為1-4096,默認(rèn)為1000
(3)在接口上應(yīng)用策略
Router(config-if)# service-policy {input|output} {policy-map-name}
注意:CTS只能應(yīng)用在output方向,而CAR可以應(yīng)用在兩個(gè)方向
(4)查看配置
Router# show policy-map [policy-map-name] //查看策略配置 Router# show policy-map int f0/0 //查看端口策略應(yīng)用和流量信息
例如:某路由器的配置如下
Router(config)# access-list 100 permit ip 10.0.0.0 0.0.0.255 10.0.0.0 0.0.0.255 Router(config)# class-map yyy //配置class map Router(config-cmap)# match access-group 100 //配置匹配條件,調(diào)用ACL Router(config)# policy-map ysf1 //定義policy map,配置CAR Router(config-pmpa)# class yyy //調(diào)用 class map Router(config-pmap-c)# police 8000 1500 1500 conform-action transmit exceed-action transmit viliate-action drop //配置CAR,小于Bc轉(zhuǎn)發(fā),在Bc- Bc+Be之間轉(zhuǎn)發(fā),大于Bc+Be丟棄 Router(config)# int f0/0 //在f0/0接口應(yīng)用CAR策略 Router(config-if)# service-policy input ysf1 Router(config)# policy-map ysf2 //定義policy map,配置GTS Router(config-pmap)# class yyy //調(diào)用class map Router(config-pmap-c)# shape average 8000 //配置average形式,只配置CIR Router(config)# int f0/1 //在f0/1口應(yīng)用CTS策略 Router(config-if)# service-policy output ysf2 Router# show policy-map //查看配置策略
擁塞管理技術(shù)
擁塞管理一般采用隊(duì)列調(diào)度技術(shù),通過隊(duì)列調(diào)度技術(shù)的算法使得不同的數(shù)據(jù)流擁有不同的優(yōu)先級(jí)和帶寬信息等,從而確定不同數(shù)據(jù)流被轉(zhuǎn)發(fā)的順序和帶寬。主要有以下六種技術(shù):
1.FIFO:先進(jìn)先出隊(duì)列(只有一個(gè)隊(duì))
2.PQ:優(yōu)先級(jí)隊(duì)列(4個(gè)隊(duì)列,高級(jí)別長期占用,出問題)
3.CQ:定制隊(duì)列(管理員可加,0保留,1--16輪循環(huán))
4.WFQ:加權(quán)公平隊(duì)列(很多類,包小,優(yōu)先級(jí)高,先發(fā))
5.CBWFQ:基于類的加權(quán)公平隊(duì)列(保證帶寬)
6.CBLLQ:基于類低延遲的加權(quán)公平隊(duì)列(保證延遲)
配置CBWFQ
隨著技術(shù)的發(fā)展,最常用的是CBWFQ技術(shù)
(1)定義匹配策略,與GTS、CAT第二種配置相同(略)
(2)定義 policy map 并調(diào)用class map ,在每一個(gè)class map中設(shè)置策略
Router(config-pmap-c)# bandwidtn {bandwidth-kbps | percent percentage}
bandwidth:保證最小帶寬
bandwidth-kbps:最小帶寬速率(默認(rèn)情況下,各class map 分配的帶寬總和不能超過接口帶寬的75%,剩余的25%用于控制和路由選擇的流量??梢酝ㄟ^接口模式下的max-reserved-bandwidt 命令進(jìn)行修改)
percent percentage:最小帶寬占端口帶寬的百分比
*然后,配置隊(duì)列中數(shù)據(jù)包的個(gè)數(shù)
Router(config-pmap-c)# queue-limit {packets}
packets:為設(shè)定的隊(duì)列的數(shù)值,范圍是1--4096
* 如果需要配置默認(rèn)類,可用以下命令:
Router(config-pmap)# class class-default
* 配置LLQ隊(duì)列的最大帶寬
router(config-pmap-c)# {bandwidth-kbps | percent percentage}
priority:表示隊(duì)列的最大帶寬,其參數(shù)的含義與bandwidtn命令相同
(3)在端口實(shí)施策略
與CRS、CAR的第二種配置相同,但是需要注意CBWFQ只能配置在端口的output方向
(4)相關(guān)查看命令
show policy-map [policy-map-name] //查看policy map 的配置信息 show policy-map int f0/0 //查看端口的policy map信息和流量信息
實(shí)驗(yàn)案例:配置CBWFQ,通過為PC1、PC2、PC3、PC4配置最小保證帶寬,解決網(wǎng)絡(luò)擁塞問題
(1)配置網(wǎng)絡(luò)全網(wǎng)互通(略)
(2)配置CBWFQ,實(shí)現(xiàn)網(wǎng)絡(luò)擁塞時(shí)保證最小帶寬
R1(config)# access-list 100 permit ip host 10.0.1.2 host 10.0.0.4 R1(config)# access-list 101 permit ip host 10.0.1.2 host 10.0.0.1 R1(config)# access-list 102 permit ip host 10.0.1.2 host 10.0.0.2 //定義ACL R1(config)# class-map match-all ftp1 //定義名稱為ftp1的類 R1(config-cmap)# match access-group 100 //匹配ACL100的流量屬于類ftp1 R1(config)# class-map match-all ftp2 R1(config-cmap)# match access-group 101 R1(config)# class-map match-all ftp3 R1(config-cmap)# match access-group 102 R1(config)# policy-map ftp //定義名稱為ftp的策略 R1(config-pmap)# class ftp1 //進(jìn)入類ftp1 R1(config-pmap-c)# bandwidth 4000 //為類ftp1設(shè)定策略,擁塞時(shí)帶寬為4000Kb/s R1(config-pmap-c)# exit R1(config-pmap)# class ftp2 R1(config-pmap-c)# bandwidth 1600 R1(config-pmap-c)# exit R1(config-pmap)# class ftp3 R1(config-pmap-c)# bandwidth 1600 R1(config-pmap-c)# exit R1(config-pmap)# class class-default //配置其他流量為默認(rèn)類 R1(config-pmap-c)# fair-queue //啟用公平隊(duì)列,可和bandwidth同時(shí)使用 R1(config)# interface f0/1 R1(config-if)# service-policy output ftp //CBWPQ只能應(yīng)用于output方向
擁塞避免技術(shù)
過度的網(wǎng)絡(luò)擁塞對(duì)于網(wǎng)絡(luò)的危害是很大的,擁塞避免就是主動(dòng)丟棄部分報(bào)文,以減免網(wǎng)絡(luò)擁塞程度
1.尾丟棄
傳統(tǒng)的丟包策略,即當(dāng)隊(duì)列達(dá)到最長時(shí),將后面的報(bào)文全部丟棄的策略??赡軐?dǎo)致網(wǎng)絡(luò)中流量忽大忽小,極不穩(wěn)定
在CBWFQ中配置尾丟棄的命令 queue-limit
2.WRED
為避免出現(xiàn)尾丟棄的現(xiàn)象,加權(quán)隨機(jī)預(yù)檢測(cè)(RED)將隊(duì)列分為兩個(gè)值,為低閥值和高閥值,并采用如下算法:
*小于低閥值時(shí),不進(jìn)行報(bào)文丟棄
* 大于高閥值時(shí),完全丟棄報(bào)文
* 在低閥值和高閥值之間時(shí),WRED開始進(jìn)行隨機(jī)丟棄報(bào)文。隊(duì)列越長,丟棄的概率越高
WRED原理和RED相同,只是在隨機(jī)丟棄報(bào)文時(shí),加入了優(yōu)先級(jí)來區(qū)分丟棄策略
WRED的配置
(1)在接口上配置
基于DSCP的配置
Router(config-if)# random-detect dscp-based //啟動(dòng)基于DSCP的WRED Router(config-if)# random-detect dscp {dscp} { min max }[mark]
min:低閥值
max:高閥值
mark:最大概率分母(在計(jì)算丟棄時(shí)使用)
基于IP優(yōu)先級(jí)的配置
router(config-if)#random-detect router(config-if)#random-detect precedence {precedence} {min max} {mark}
(2)通過policy-map配置WRED
router(config-pmap-c)#random-detect router(config-pmap-c)#random-detect precedence {precedence} {min max} {mark}
(3)查看WRED
show queueing random-detect //查看WERD信息 show queue [int f0/0 ] //查看隊(duì)列信息
LLQ隊(duì)列不能使用WRED,也不能使用queue-limit 命令