您好,登錄后才能下訂單哦!
1、QOS模型
盡力而為服務模型(Best-effort)
集成服務模型(Integrated Services)
差分服務模型(Differentiated Services)
2、差分服務模型結構
3、分類與標記
標記可以使用IP包頭中TOS的高三位(IP優先級)或高六位(DSCP)做標記。
在R1上將ICMP流量的優先級設置為2,將HTTP流量的DSCP值設置為AF22,其他沒匹配到的流量優先級設置為1,在ISP上查看標記是否生效。
ISP配置如下:
ip http server
access-list 100 permit ip any any dscp af22
access-list 100 permit ip any any precedence 1
access-list 100 permit ip any any precedence 2
interface FastEthernet2/0
service-policy input MARK
R1配置如下:
access-list 110 permit icmp any any
access-list 120 permit tcp any any eq www
class-map match-all ICMP
match access-group 110
class-map match-all WWW
match access-group 120
policy-map MARK
class ICMP
set precedence 2
class WWW
set dscp af22
class class-default
set precedence 1
interface FastEthernet2/0
service-policy input MARK
TEST上的測試命令
ping 33.1.1.1
telnet 33.1.1.1 80
查看命令
show ip access-lists
show class-map
show policy-map
show policy-map interface s0/1
4、隊列技術(擁塞管理)
隊列技術應用于接口的出方向,一個接口只能使用一種隊列技術。
路由器的接口上有一個軟件隊列和一個硬件隊列。數據包先進入軟隊列,然后使用隊列技術對數據包進行調度進入硬件隊列,硬件隊列始終采用先進先出的方式發送數據包。
常用的隊列技術:FIFO、PQ、CQ、WFQ、LLQ都是CLI工具,而CBWFQ是MQC工具。
先進先出隊列(FIFO)
優先級隊列(PQ)
自定義隊里(CQ)
加權公平隊列(WFQ)
低延時隊列(LLQ)
實時傳輸隊列(RTP PQ):
基于類加權公平隊列(CBWFQ)
隊列技術三大組件:分類組件、插入丟棄組件、調度組件
先進先出隊列(FIFO)
默認時:當接口的速度大于2.048Mbps是,路由器采用FIFO進行調度。
優先級隊列(PQ)
隊列數:高、中、普通、低共4個隊列
分類:根據事先分類放入不同隊列
插入丟棄:可以設置隊列長度,隊列滿后,數據包將被尾丟棄
調度:按照高、中、普通、低的順序調度,只用高優先級的隊列為空才會調度中優先級,依次類推。
優點:保證高優先數據包優先轉發
缺點:高優先隊列不為空,低優先級隊列永遠得不到轉發
指定不符合任何類型的數據包將進入的隊列(默認normal)
priority-list 1 default high
根據數據包的入口分類并將其放入到某個隊列
priority-list 1 interface serial 0/0 high
根據數據包的協議類型分類并將其放入到某個隊列
priority-list 1 protocol ip high tcp telnet
指定各隊列的大小
priority-list 1 queue-limit 10 10 10 10
在接口上應用隊列
priority-group 1
=================================================================
R1
=================================================================
priority-list 1 interface FastEthernet2/0 high
priority-list 1 protocol ip normal tcp www
priority-list 1 default low
priority-list 1 queue-limit 10 20 30 40
interface Serial0/1
priority-group 1
查看接口上的隊列
show int s0/1
查看隊列配置
show queueing priority
測試隊列是否生效
debug priority
show queueing interface s0/1
自定義隊列(CQ)
隊列數:CQ有17個隊列,其中隊列0為優先級隊列。只有隊列0為空,才為其他隊列服務。
分類:根據事先分類放入不同隊列
插入丟棄:可以設置隊列長度,隊列滿后,數據包將被尾丟棄
調度:為第1個隊列轉發一定字節數的數據包后,就轉為為第2個隊列轉發,依次輪詢
優點:保證每個隊列都有被服務的機會
指定不符合任何類型的數據包將進入的隊列(默認隊列1)
queue-list 1 default 1
根據數據包的入口分類并將其放入到某個隊列
queue-list 1 interface serial 0/0 1
根據數據包的協議類型分類并將其放入到某個隊列
queue-list 1 protocol ip 1 tcp telnet
指定每次輪詢時各隊列被轉發的數據包字節數
queue-list 1 queue 1 byte-count 100
指定各隊列的大小
queue-list 1 queue 1 limit 100
指定優先級隊列(例如此時為2,則隊列0和1都是優先級隊列)
queue-list 1 lowest-custom 2
在接口上應用隊列
custom-queue-list 1
=================================================================
R1
=================================================================
queue-list 1 interface FastEthernet2/0 2
queue-list 1 protocol ip 3 tcp www
queue-list 1 queue 1 byte-count 100 limit 100
queue-list 1 queue 2 byte-count 200 limit 200
queue-list 1 queue 3 byte-count 300 limit 300
queue-list 1 lowest-custom 4
interface Serial0/1
custom-queue-list 1
查看接口上的隊列
show int s0/1
查看隊列配置
show queueing custom
測試隊列是否生效
debug custom-queue
show queueing interface s0/1
加權公平隊列(WFQ)
默認時:當接口的速度小于2.048Mbps時,路由器采用WFQ進行調度。
分類:具有相同協議類型,源IP,目的IP,源端口,目的端口,TOS值的數據包看成一個流,同一個流的數據包將放到一個隊列中。
插入丟棄:隊列滿后,數據包將執行WFQ丟棄,丟棄最差完成時間的數據包
調度:先調度最快能轉發完畢的數據包,包的大小采用虛擬包大小(虛擬包大小=實際包大小/(IP優先級+1))
優點:優先級越高、包越小的數據包優先得到轉發
WFQ丟棄機制:(丟棄最差完成時間的數據包)
HQO(Hold Queue Out Limit):整個WFQ系統所能存放的最大數據包數量,這個值為各隊列之和。
CDT(Congestive Discard Threshold):WFQ丟棄機制的門限值,當各隊列數據包數量之和達到CDT就開始丟棄數據包。
=================================================================
R1
=================================================================
interface Serial0/1
fair-queue 512 64 (指定CDT為512,最大會話數為64)
hold-queue 1500 out (指定HQO為1500)
查看接口上的隊列
show int s0/1
基于類的加權公平隊列(CBWFQ)
分類:允許自定義類,把數據放入不同隊列,最多可以定義64個類,不匹配分類的數據放到系統默認類class-default中
插入丟棄:可以設置隊列長度,隊列滿后,數據包將被尾丟棄
調度:對每個隊列保留指明帶寬,每個隊列默認采用FIFO調度,但也可以結合WFQ調度。如何保證帶寬及各隊列數據包如何被調度到硬件隊列無從知曉。
優點:保證流量的最小帶寬,而不是限制最多帶寬
=================================================================
R1
=================================================================
access-list 1 permit 192.168.1.100
access-list 2 permit 192.168.1.1
class-map match-all 100
match access-group 1
class-map match-all 1
match access-group 2
policy-map MARK
class 100
bandwidth 500
class 1
bandwidth 500
interface Serial0/1
service-policy output MARK
查看命令
show class-map
show policy-map
show policy-map interface s0/1
低延時隊列(LLQ)
LLQ配置類似CBWFQ,調度機制類似PQ。LLQ通常和CBWFQ一起使用。
=================================================================
R1
=================================================================
class-map match-any CLASS-MAP3
match ip precedence 5
class-map match-all CLASS-MAP2
match protocol telnet
class-map match-any CLASS_MAP1
match protocol http
match protocol ftp
policy-map MY-POLICY
class CLASS_MAP1
bandwidth 512
class CLASS-MAP2
bandwidth 128
queue-limit 128
class CLASS-MAP3
priority 128
interface Serial0/0
bandwidth 1024
service-policy output MY-POLICY
這個例子中結合使用了LLQ和CBWFQ。
CLASS-MAP3使用LLQ,保證帶寬為128kbps,優先于CLASS-MAP1,CLASS-MAP2轉發
CLASS-MAP1,CLASS-MAP2使用WFQ,保證帶寬分別為512kbps,128kbps。
查看命令
show class-map
show policy-map
show policy-map interface s0/0
RTP優先隊列
RTP優先隊列是一種解決語音服務質量的簡單技術,期原理就是將承載語音的RTP數據包送入優先級隊列使其得到優先轉發。
RTP識別語音的UDP數據包端口,這些數據包通常使用16384~32767的偶數端口發送。
RTP優先隊列可以和前面的任何一種隊列包括FIFO、PQ、CQ、WFQ、CBWFQ、LLQ結合使用,但是它的優先級是最高的。即使RTP和LLQ一起使用,RTP的優先級也比LLQ高。
interface Serial0/0
ip rtp priority 16384 16383 256
16384最低UDP端口號,16383端口增量,帶寬256kbps
5、擁塞避免
隨機早期預檢測(RED)
給隊列設定兩個門限值:最小門限和最大門限,當隊列的平均長度小于最小門限時,不丟棄數據包;
當隊列的平均長度在最小門限和最大門限之間時,RED開始隨機丟棄數據包;當隊列的平均長度大于最高門限時,丟棄尾部所有的數據包。
加權隨機早期預檢測(WRED)
WRED和RED的原理一樣,但是WRED可以根據不同的IP優先級或DSCP值,設定不同的最小門限、最大門限和丟棄概率,從而對不同優先級的數據包提供不同的丟棄特性。
WRED不能和PQ、CQ、WFQ隊列同時使用。
配置基于IP Precedence的WRED
random-detect
根據IP優先級設置數據包的最小門限值、最大門限值、丟棄數據包的丟棄概率(該例中概率應該為1/10)
random-detect precedence 1 10 20 10
配置基于DSCP的WRED
random-detect dscp-based
根據DSCP設置數據包的最小門限值、最大門限值、丟棄數據包的丟棄概率(該例中概率應該為1/10)
random-detect dscp af22 10 20 10
設置計算隊列平均長度的權重因子(默認值為9)
random-detect exponential-weighting-constant 9
查看WRED隊列配置
show queueing int s0/0
基于流的加權隨機早期預檢測(FB-WRED)
WRED中,只用TCP流會對丟包做出反應并降低速率;而UDP等非自適應流并不會對丟包做出反應,因此UDP等非自適應流在擁塞時發送分組的速率將比自適應流高得多。
FB-WRED對WRED除了改進,他對占用隊列資源多余公平份額的流將得到懲罰。
FB-WRED根據流和IP優先級(或者DSCP值)把到達的數據包放到不同的隊列中,并且計算每個活動流的公平隊列資源份額(隊列長度/活動流的數目),
對于占用隊列資源多余公平份額的流將得到懲罰。方法是通過降低隊列的WRED最大門限值來加大分組的丟棄概率。
新的最大門限值=最小門限值+{(最大門限值-最小門限值)/ 2}
配置FB-WRED(必須先配置WRED)
random-detect flow
設置平均深度因素(即放大因子,默認值為4)
random-detect flow average-depth-factor 4
設置基于流的WRED的數據流數目
random-detect flow count 32
查看WRED隊列配置
show queueing int s0/0
基于類的加權隨機早期預檢測(CB-WRED)
CB-WRED可以和CBWFQ、Shaping結合,而不能與FB-WRED、LLQ、Policing結合。
class-map match-any HTTP-FTP
match protocol http
match protocol ftp
policy-map MY-POLICY
class HTTP-FTP
bandwidth 512
random-detect
random-detect precedence 0 20 30 10
interface Serial0/0
bandwidth 1024
service-policy output MY-POLICY
此例啟用基于優先級的WRED與CBWFQ結合。
查看命令
show class-map
show policy-map
show policy-map int s0/0
6、流量×××(Shaping)
流量×××的目的是平滑流量,流量×××會把超出規定速率的數據緩沖起來,不是丟棄,鏈路的平均流量速率較大,但會造成數據的延時加大或延時抖動。
令牌桶的相關名詞:
CIR:承諾信息速率,單位bps
PRI:承諾信息速率,單位bps
Bc:正常突發量的大小,單位為字節
Be:超額突發量的大小,單位為字節
Tc: 時間間隔
CIR=Bc/Tc
當個令牌桶,桶的大小為Bc+Be;
令牌以CIR的速率添加到令牌桶中;
當數據包要轉發出去,如果無法從令牌桶中獲取足夠的令牌,就將數據包緩存起來,都有足夠的令牌在發送。數據包發送的平均速率不超過CIR,但某時刻可以一超過CIR的速率Bc+Be發送。
GTS通用流量×××實在軟件隊列之前又增加一個隊列來實施,這一隊列采用的是WFQ。GTS可以與FIFO、PQ、CQ、WFQ配合使用。
CLI配置法
interface Serial0/1
traffic-shape rate 8000 1500 1000 1000
MQC配置法
access-list 100 permit icmp any any
class-map match-all ICMP
match access-group 100
policy-map TEST
class ICMP
shape average 8000 1000 1000
interface Serial0/1
service-policy output TEST
查看命令
show traffic-shape
show traffic-shape statistics
7、流量監管(Policing)
流量監管可以應用在接口的出和入兩個方向上。分為單桶單速雙色、雙桶單速三色、雙桶雙速三色。
流量監管的目的是限速,流量監管會把超出規定速率的丟棄或者標記便于后繼的路由器進行處理,鏈路的流量速率有較大起伏,整體平均帶寬低,但是不會造成數據包延時增加。
令牌桶的相關名詞:
CIR:承諾信息速率,單位bps
PRI:承諾信息速率,單位bps
Bc:正常突發量的大小,單位為字節
Be:超額突發量的大小,單位為字節
Tc: 時間間隔
CIR=Bc/Tc
單桶單速雙色
單個令牌桶,桶的大小為Be,而不是Bc+Be;
令牌以CIR的速率添加到令牌桶中;
當數據包要轉發出去,如果可以從令牌桶中獲取足夠的令牌,則成為Conforn,此時桶內的令牌數為之前的令牌數減去數據包的大小;如果如法從令牌桶中獲取足夠的令牌,則成為Exceed,此時桶內的令牌數不變。
CLI配置法
interface Serial0/1
rate-limit output 8000 1500 2000 conform-action transmit exceed-action drop
MQC配置法
access-list 100 permit icmp any any
class-map match-all ICMP
match access-group 100
policy-map TEST
class ICMP
police cir 8000 bc 1500 be 1000
conform-action transmit
exceed-action drop
interface Serial0/1
service-policy input TEST
查看命令
show class-map
show policy-map
show policy-map int s0/0
雙桶單速三色
兩個令牌桶,TB1的大小為Bc,TB2的大小為Be;
令牌以CIR的速率添加到令牌桶中TB1中,當TB1滿后,令牌溢出到TB2中。
當數據包要轉發出去,如果可以從令牌桶TB1中獲取足夠的令牌,則成為Conforn,此時TB1的令牌數為之前的令牌數減去數據包的大小,TB2的令牌數不變;
當數據包要轉發出去,如果無法從令牌桶TB1中獲取足夠的令牌,但能從令牌桶TB2中獲取足夠的令牌,則成為Exceed,此時TB1的令牌數不變,TB2的令牌數為之前的令牌數減去數據包的大小;
當數據包要轉發出去,如果無法從令牌桶TB1中獲取足夠的令牌,也無法從令牌桶TB2中獲取足夠的令牌,則成為Violate,此時TB1、TB2的令牌數不變。
access-list 100 permit icmp any any
class-map match-all ICMP
match access-group 100
policy-map TEST
class ICMP
police cir 8000 bc 1500 be 1000
conform-action transmit
exceed-action drop
violate-action drop
interface Serial0/1
service-policy input TEST
查看命令
show class-map
show policy-map
show policy-map int s0/0
雙桶雙速三色
兩個令牌桶,TB1的大小為Be,TB2的大小為Bc;
令牌以PIR的速率添加到令牌桶中TB1中,以CIR的速率添加到令牌桶中TB2中,PIR>=CIR;
當數據包要轉發出去,如果可以從令牌桶TB1中獲取足夠的令牌,也可以從令牌桶TB2中獲取足夠的令牌,則成為Conforn,此時TB1的令牌數為之前的令牌數減去數據包的大小,TB2的令牌數也為之前的令牌數減去數據包的大小;
當數據包要轉發出去,如果可以從令牌桶TB1中獲取足夠的令牌,但不能從令牌桶TB2中獲取足夠的令牌,則成為Exceed,此時TB1的令牌數為之前的令牌數減去數據包的大小,TB2的令牌數不變;
當數據包要轉發出去,如果無法從令牌桶TB1中獲取足夠的令牌,也無法從令牌桶TB2中獲取足夠的令牌,則成為Violate,此時TB1、TB2的令牌數不變。
access-list 100 permit icmp any any
class-map match-all ICMP
match access-group 100
policy-map TEST
class ICMP
police cir 8000 bc 1500 pir 8000 be 1500
conform-action transmit
exceed-action drop
violate-action drop
interface Serial0/1
service-policy input TEST
查看命令
show class-map
show policy-map
show policy-map int s0/0
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。