Qos-2-分類和標記


QOS-分類和標記

分類是QOS最基本的組件,

沒有分類的話,網絡中的所有數據將是一樣的,就不能做任何QOS策略

數據包可以基於如下類型進行分類 ,

一層 物理接口,子接口,

二層 MAC地址,COS, VLAN ID

三層 IP pre DSCP 源目IP地址

高層 TCP / UDP 還有高層應用 

最主要的就是考慮二層和三層

 

二層 以太網封裝

DMAC

SMAC

TYPE

目的MAC   源MAC     類型,標記上層協議

上層協議標識

0x0800 IP

0x0806 ARP

這能打嗎?在哪兒打?好像沒有,

但是還記得trunk嗎?

 

Trunk鏈路會攜帶vlan id ,並且它會將傳統的以太網幀改為802.1Q的幀格式

 

 

 

是否打tag 2byte    幀優先級3bit          1bit          VLAN號

幀優先級,user priority 可以用做二層的標記,

3bit,3位,2的3次方,可以分為8種二層的流量標記(0-7)

三層IP 報頭封裝

IP報頭中有專門的位置讓我們來用 

服務質量 8bit

但是后面兩位全部置0 ,還剩下6位,

又分為兩種

IP pre

只用到了前三位,也是8種標記

DSCP

用到了前六位,就就是64種標記方法

打標的方法不一樣,所能區分的數據包種類也是不一樣的,

 

QOS的分類技術

說白了,就是進行抓取, 先抓取(進行分類),后標記,打上記號,方便后面的環節進行處理

 ACL  最常見的工具

 NBAR 在接口上對流量自動分類 ,並且能做到ACL做不到的東西,ACL並不能針對於高層流量進行抓取。

 

NBAR的使用方法

Class-map
R1(config)#class-map aa
R1(config-cmap)#match protocol ?
aarp              AppleTalk ARP
  appletalk         AppleTalk
  arp               IP ARP
  bgp               Border Gateway Protocol
  bittorrent        bittorrent
  bridge            Bridging
  bstun             Block Serial Tunnel
  cdp               Cisco Discovery Protocol
  citrix            Citrix Systems Metaframe 3.0
  clns              ISO CLNS
  clns_es           ISO CLNS End System
  clns_is           ISO CLNS Intermediate System
  cmns              ISO CMNS
  compressedtcp     Compressed TCP (VJ)
  cuseeme           CU-SeeMe desktop video conference
  decnet            DECnet
  decnet_node       DECnet Node
  decnet_router-l1  DECnet Router L1
  decnet_router-l2  DECnet Router L2
  dhcp              Dynamic Host Configuration
  directconnect     Direct Connect Version 2.0
  dlsw              Data Link Switching (Direct encapsulation only)
 --More—

然后就可以看到N多預配的策略,供分類抓取

總之一句話,NBAR可以做數據包的深層次檢測,而ACL不行。

 

NBAR的配置方法

R1(config)#class-map aa    定義分類,
R1(config-cmap)#match protocol http    
(當然,這一步也可以使用ACL來代替,1.1.1.1到2.2.2.2的WWW流量
R1(config)#access-list 100 per tcp host 1.1.1.1 host 2.2.2.2 eq 80   //ACL抓取
R1(config)#class-map aa    //class-map 定義分類
R1(config-cmap)#match access-group 100
R1(config)#policy-map fu    //policy-map 調用class
R1(config-pmap)#class aa
R1(config-pmap-c)#set ?    //執行動作
  atm-clp        Set ATM CLP bit to 1
  cos            Set IEEE 802.1Q/ISL class of service/user priority
  discard-class  Discard behavior identifier
  dscp           Set DSCP in IP(v4) and IPv6 packets
  fr-de          Set FR DE bit to 1
  ip             Set IP specific values
  mpls           Set MPLS specific values
  precedence     Set precedence in IP(v4) and IPv6 packets
  qos-group      Set QoS Group
 
R1(config-pmap-c)#set precedence ?    //直接輸入 set precedence 同時會影響IPV6
  <0-7>           Precedence value
  cos             Set packet precedence from L2 COS
  critical        Set packets with critical precedence (5)
  flash           Set packets with flash precedence (3)
  flash-override  Set packets with flash override precedence (4)
  immediate       Set packets with immediate precedence (2)
  internet        Set packets with internetwork control precedence (6)
  network         Set packets with network control precedence (7)
  priority        Set packets with priority precedence (1)
  qos-group       Set packet precedence from QoS Group.
  routine         Set packets with routine precedence (0)
 
R1(config-pmap-c)#set ip ?  //這里都 是IPV4的,
  dscp        Set IP DSCP (DiffServ CodePointint)
  precedence  Set IP precedence

R1(config-pmap-c)#set ip precedence ?  設置優先級
  <0-7>           Precedence value
  critical        Set packets with critical precedence (5)
  flash           Set packets with flash precedence (3)
  flash-override  Set packets with flash override precedence (4)
  immediate       Set packets with immediate precedence (2)
  internet        Set packets with internetwork control precedence 6)
  network         Set packets with network control precedence (7)
  priority        Set packets with priority precedence (1)
  routine         Set packets with routine precedence (0)
 
R1(config-pmap-c)#set ip dscp ?   //DSCP的方式,更多,並且用預設
  <0-63>   Differentiated services codepoint value
  af11     Match packets with AF11 dscp (001010)
  af12     Match packets with AF12 dscp (001100)
  af13     Match packets with AF13 dscp (001110)
  af21     Match packets with AF21 dscp (010010)
  af22     Match packets with AF22 dscp (010100)
  af23     Match packets with AF23 dscp (010110)
  af31     Match packets with AF31 dscp (011010)
  af32     Match packets with AF32 dscp (011100)
  af33     Match packets with AF33 dscp (011110)
  af41     Match packets with AF41 dscp (100010)
  af42     Match packets with AF42 dscp (100100)
  af43     Match packets with AF43 dscp (100110)
  cs1      Match packets with CS1(precedence 1) dscp (001000)
  cs2      Match packets with CS2(precedence 2) dscp (010000)
  cs3      Match packets with CS3(precedence 3) dscp (011000)
  cs4      Match packets with CS4(precedence 4) dscp (100000)
  cs5      Match packets with CS5(precedence 5) dscp (101000)
  cs6      Match packets with CS6(precedence 6) dscp (110000)
  cs7      Match packets with CS7(precedence 7) dscp (111000)
  default  Match packets with default dscp (000000)
  ef       Match packets with EF dscp (101110)
  <cr>   

如果三層標記使用DSCP來打標記的話,默認會對tag做了一些預命名

 

0-63個標記,提前已經分配好了這么多

什么意思呢?

如果標記打成10,那么默認就為顯示為af11

R1(config-pmap-c)#set dscp 10   //這里設置的上是10

R1(config-pmap)#do show run | se dscp

  set dscp af11       當查看時就會顯示為af11

再來一個

R1(config-pmap-c)#set ip dscp 40   //設置為40

R1(config-pmap-c)#do show run | se dscp

  set ip dscp cs5     //顯示的就是CS5

  set ip dscp af11

當然這些預置的名字也是有優先級的關系的。

數值越大越優

 

然后需要在接口下調用

R1(config)#inter f0/0
R1(config-if)#service-policy output fu     //PS:肯定是針對於出接口做的,

PS: 分類一定是應用在入接口的,而標記可以應用在入,也可以應用在出

我個人的習慣是直接將這兩個全部應用在入接口。

 

都用到了什么呢?

Class-map

Policy-map

接口下的services policy

是不是套路~ MQC吧~

 

二層的標識方法

R1(config-pmap-c)#set cos ?               
  <0-7>       cos value
  dscp        Set value from packet dscp.
  precedence  Set value from packet precedence.

R1(config-pmap-c)#set cos
0 best-effort data     最優
1 medium-priority data 中優先級
2 hight-priority data    高優先級
3 call signating
4 videoconferencing    視頻
5 voice bearer         語音
6 reserved
7 reserved

 

MPLS

MPLS中很重要的四個字段

標簽位,

EXP位,3bit 就在這里打標記,

0-7 8種,

當然還要記得MPLS 的隱含空和顯示空

Inpolice null   /   explice null 只有后面這種才可以,所以要修改

 

至此標記算是打完了,但是還不生效,為什么呢?

因為此時,並沒有針對這些標記做策略,

PS:就算是此時沒有手動的對流量進行分類 和標記,也是有的,默認就會存在的,

比如二層的標記,語音會標記為5 ,

 

標記方法

CBmarking 之上演示的就是CBmarking   

 

PBR,策略路由,但是僅僅只能使用precedence,不能使用DSCP,是有限制的,

R1(config)#access-list 100 per tcp host 1.1.1.1 host 2.2.2.2 eq 80
R1(config-route-map)#ma ip add 100
R1(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)
R1(config)#route-map aa per 20
最后就是去調用了,
Inter f0/0
Ip police route-map aa    //接口下調用

這玩意只能調用在入接口,

如果想要對本地生效的話還記得嗎?

R1(config)#ip local policy route-map aa  //這個在全局下

 

預分類  CISCO 私有

VPN 環境中的標記

IPSEC VPN,

因為要加密,並且使用新的IP報頭,

但是你分類和標記都是針對於原始報頭的,新報頭有嗎?那就沒有辦法在VPN上進行QOS部署了嗎?

NO NO NO ,這要分情況

還記得VPN的分類嗎?

Lan to lan

Gre Over ipsec

VPN的轉發模式

TUNNEL  transport

到底哪種可以部署QOS呢?

 

LAN TO LAN環境下 加密點,通信點(身后數據)

我原來是對通信點做的標記,VPN中間怎么辦呢?

因為中間有ESP,你看不見后面的啊~

我們要解決的問題就是如何讓原有的標記位,在新的IP報頭上顯示 ,

Tunnel 模式默認肯定不行

Transport 模式沒有問題,因為它在IP報頭后面加上ESP/AH,所以原始的標記沒有問題

 

所以我們要解決的就是tunnel模式的問題。

結論

1 基於通信點(身后的主機,私有地址)做QOS的標記策略,調用在tunnel(GRE,SVTI) 下時,需要做預分類

2 沒有tunnel 接口的,無法實現預分類

3 基於加密點做QOS的標記策略,如果調用在物理口下,不需要做預分類

4 基於通訊點做QOS的標記策略,如果調用在物理口下,需要做預分類 (一般現在都不用物理接口了,全用tunnel )

 

配置

GRE over ip sec

 Interface tunn 0

 Qos pre-classify

 

L2tp tunnel

 Interface virtual-template 1

 Qos pre-classify

 

基於通信點(身后的主機,私有地址)做QOS的標記策略,調用在tunnel(GRE) 下時,需要做預分類   實例

 

配置了ACL,Q,允許的是通信點

Class-map 調用ACL

Policy-map調用class 並且設置標記 precedence 4 ,名字為Q.policy

然后到tunnel 下

使用qos pre-classify 預分類

並且最終調用

Service-policy output+Q.policy (policy-map的名字)

 

QPPB

關於BGP

 1通過BGP屬性通告

 2社團屬性 community

 3用ip precedence 和qos group

 4只能用來分類標記inbound的數據

 5 QOS策略和BGP路由無關,只是用來標記的

Community還記得嗎?

它不光是可以添加那幾個常見的屬性(no-advertise,no-export,local-as,),其最主要的意義就是在於可以為諸多的路由賦予一個屬性值,AA:NN,這樣一來,我就可以直接使用community-list在BGP的設備上進行抓取了,而不用去使用ACL去抓取,用ACL的話,那太麻煩 了,一條一條的寫,幾千條也這樣寫嗎?

 

BGP可以在哪些地方打,又能打成什么樣的呢?

那BGP可以在哪些地方做標記呢?

BGP community 

As-path

Ip prefixes

主要就是這三個

然后再用

Ip precedence ,BGP不可以打DSCP

Qos group

來進行打標記

 

實例

 

 

當然還要使用acl或者是prefix-list來在源端先前抓取條目。這是使用route-map來做的,

還需要route-map 放行其它的,

最主要的是還需要激活QPPB 

R1(config-router)#table-map bgp(名字)  //去調用route-map
R1(config)#inter f0/0
R1(config-if)#bgp-policy  destination ip-prec-map  總開關,開啟后就可以針對條目打標記了,記住,這只能針對 於inbound方向來的數據的,(是數據流的in 方向 )

要求,所有去往AS400的數據 ,都打上111:37標記

此時as400這邊有2000條路由,

請問怎么做?

首先要明白路由傳遞的方向 和數據傳遞的方向是相反的,

現在要去往AS400,那么肯定就會有由AS400發出來的路由吧,

那么此時就可以在AS400這里做一個route-map ,在發出來的時候設置一個community 屬性值aa:nn,假設為111:37。並且發送這個community 屬性給鄰居 router。一路下發過去

 

分類和標記小節

分類方法 : ACL   NBAR  bgp屬性

標記方法 : PBR, ,MQC /CBmarking   vpn qos(預分類)  QPPB(針對於BGP)

 

PS: 分類可以應用在數據入接口,標記可以用在數據入接口和出接口

 

小實驗1

 

 

需求:

讓R1訪問R2環回口的流量打上標記(ip precedence 5 )

讓R2訪問R1環回口的流量打上標記(DSCP 40)

要求在兩台設備上配置

 

配置

R1
Extended IP access list 100
10 permit ip host 1.1.1.1 host 2.2.2.2   //分類具體的流量
class-map match-all r1
match access-group 100    //匹配ACL
policy-map r1
 class r1
  set ip precedence 5       //定義標記
interface FastEthernet0/0    //出接口應用標記
 service-policy output r1   

 

R2
R2(config)#access-list 100 per ip host 2.2.2.2 host 1.1.1.1
R2(config)#class-map r2
R2(config-cmap)#match access-group 100
R2(config)#exit
R2(config)#policy-map r2
R2(config-pmap-c)#set ip dscp 40
R2(config-pmap-c)#inter f0/0
R2(config-if)#service-policy output r2

查看結果

 

 

分類和標記就這樣做完了,

其實在實際的工作中,標記本身就存在着優先級,像precedence 中(0)(1)(2)(3)…(7)

以及DSCP中的AF11……ef,全都是有默認的等級的。

在配置的時候,盡量還是要記清他們的分類以及標記,不然事后診斷會很麻煩,或者說去調整策略時,會很蹩腳。

 

----------------------------------------------------------

CCIE 成長之路 --- 梅利

 


免責聲明!

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



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