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 成长之路 --- 梅利

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值