边界设备基本概念
MQC及其组件
- MQC(模块化的QOS)
- 配置流分类(通常是五元组)
- 配置流行为(就是打标,通常是EF或AF)
- 配置流量策略,其实就是将流分类和流行为关联到一起,称之为流量策略,意为匹配到的流量打什么标识
- 应用流量策略,在接口下应用,有方向哈,inbound和outbound
QOS的配置方法也是多种多样的,很多配置可以基于接口进行配置,也可以根据类进行配置,而根据类进行配置的时候通常我们要敷衍MQC模板进行配置,这种方法功能性最强,也最容易理解,最具有通用性。路由器将配置QOS的步骤做成了模块,也叫模块化的QOS,称称MQC,我们可以理解为配置套路或配置工具,我们在配置的时候要调用MQC,在MQC内部进行配置QOS。
流行为就是打标,打标的具体体现就是在报文里面DSCP当中,其实就是指的修改DSCP这个字段,这个打标不是给自己用的,而是给后面路由器用的,后面的路由器再做匹配的时候,直接使用第一台路由器打好的标就可以了,这样就不需要再做复杂流分类了。
因为PHB行为一般只有四种大类,我们常用的其实也只有两种,EF和AF,我们前面的内容有提到过指的是快速转发标记和确认转发标记。
Traffic Policy的套路
traffic policy应该翻译成流策略,是MQC的组件之一,专用于配置流量策略的,是为来完成配置流分类和配置流行为的。
traffic-policy又分为两个组件,所以整个的结构应该是这样:
- QOS
- 边界路由器
- MQC
- Traffic policy
- traffic classifier(做分类)
- traffic behavior(行为,打标,就是修改DSCP字段)
我们要明确一点,我们理解的流行为就是在DSCP打标,这是只是配置流分类的一种动作呀,不仅仅能如此,他还可以修改,删除ESCP里面原有的标识,我们就把它理解成拥有对ESCP、EXP、802.1p里面关于QOS字段的完全操作权。比如我们在我们的PC上设置了ESCP,那到了边界路由器至于要不要删除掉就是traffic policy说了算的。
traffic policy与我们以前学过的策略有点相似之处,那就是它也是一个列表,列表里面由一个个的条目组成,从序列小的开始处理,第一个条目都有由两个单位组成traffic classifier和traffic behavior。
总结
- PC设备可能已经做了流分类和打标,windows和linux都可以轻易的实现
- 在DS边界设置上我们要做分类,分类完之后决定做什么样的动作,最终的体现就是修改一下DSCP字段
- 域内的其它路由器就根据DSCP里面的字段来匹配流量
配置思路
边界设备
- 通过traffic classifier 创建流分类
- 调用acl
- 通过traffic behavior 创建流行为
- remark,其实就是打标
- 通过traffic policy 将流分类和流行为绑定到一起生成一个条目,放入数据库当中
- 接口调用
域内设备
- 配置信任接口:域内设备一般都会有一个接口向着边界设备,那与边界设备相连的接口我们将其配置为信任接口,也就是接纳边界路由器的DSCP字段或exp字段,在入方向上不做修改。
- QOS_MAP做简单的流分类:在入方向我没修改,并不代表我在路由器内部不做修改,所以通过QOS_MAP还是可以对DSCP等字段做修改的,这个修改是有必要的,因为如果此设备连接两种网络类型,比如说入方向连接着三层网络,出方向连接MPLS,那就得把DSCP映射成为EXP,这个映射是自动的,我们只需要帮助QOS指明将什么映射成什么就可以了。
基础实验
边界设备_复杂流分类
# 先做流分类,将语音和ftp的流量单独搞出来
# 语音
acl number 3000
rule 5 permit icmp source 10.1.12.1 0 destination 10.1.3.3 0
# ftp
acl number 3001
rule 5 permit icmp source 10.1.12.1 0 destination 10.1.4.4 0
# 从这里往下就是MQC的套路了
# 通过MQC当中的classifier工具创建好分类
traffic classifier voip
if-match acl 3000
traffic classifier ftp
if-match acl 3001
# 创建好动作
traffic behavior voip-ef
remark dscp ef
traffic behavior ftp-af11
remark dscp af11
# 通过策略将创建好分类和动作绑定到一起
traffic policy MQC
# 先写优先的,把优先的放上面
classifier voip behavior voip-ef
classifier ftp behavior ftp-af11
int g0/0/0
traffic-policy MQC inbound
- 我们写在traffic policy的时候,注意,由于它是从上向下匹配,所以你应该把优先转发的流量放在上面,ef就是指快速转发标记。
- 为什么要有入接口做呢?理论了在入接口和出接口都可以做,在入接口做的原因是因为我们在入接口做了之后,还剩出接口中,那在出接口中就可以应用一些策略,留有余地。
- 注意,我们只是做了我们候修改的流量,那些没匹配的呢?默认就是正常的转发。
域内设备_简单流分类
# 在R3的s1/0/0接口上信任上游AR2发过来的DSCP字段,在入方向暂时不做修改
interface Serial1/0/0
# 信任dscp
trust dscp override
# 修改映射
# 在入方向不做修改,但在设备内部通过map-table做了修改,将10改成了11
qos map-table dscp-dscp
input 10 output 11
映射转换
我们在3、4上把MPLS配置好,之前我们都是使用是ospf。
# 先将MPLS配置好
R3:
mpls lsr-id 10.1.3.3
mpls
mpls ldp
int g0/0/0
mpls
mpls ldp
[AR4]mpls lsr-id 10.1.4.4
[AR4]mpls
Info: Mpls starting, please wait... OK!
[AR4-mpls]mpls ldp
[AR4-mpls-ldp]int g0/0/0
[AR4-GigabitEthernet0/0/0]mpls
[AR4-GigabitEthernet0/0/0]mpls ldp
[AR4]int g0/0/1
[AR4-GigabitEthernet0/0/1]mpls
[AR4-GigabitEthernet0/0/1]mpls ldp
[R5]mpls lsr-id 10.1.5.5
[R5]mpls
Info: Mpls starting, please wait... OK!
[R5-mpls]mpls ldp
[R5-mpls-ldp]int g0/0/0
[R5-GigabitEthernet0/0/0]mpls
[R5-GigabitEthernet0/0/0]mpls ldp
<AR4>dis mpls ldp session
10.1.3.3:0 Operational DU Active 0000:00:08 35/35
10.1.5.5:0 Operational DU Passive 0000:00:05 24/24
<AR3>dis mpls lsp
FEC In/Out Label In/Out IF Vrf Name
10.1.3.3/32 3/NULL -/-
10.1.4.4/32 NULL/3 -/GE0/0/0
10.1.4.4/32 1024/3 -/GE0/0/0
10.1.5.5/32 NULL/1025 -/GE0/0/0
10.1.5.5/32 1025/1025 -/GE0/0/0
# 第一步先把想要的流量匹配住
# 注意,此时这条流量是要走MPLS的
[AR2]acl 3002
[AR2-acl-adv-3002]rule permit icmp source 10.1.12.1 0 destination 10.1.5.5 0
# 第二步:做好分类
[AR2]traffic classifier vodio
[AR2-classifier-vodio]if-match acl 3002
# 第三步:修改DSCP,也就是打标
traffic behavior video-af12
remark dscp af12
# 第四步:将分类和打标关联到一起
[AR2]traffic policy MQC
[AR2-trafficpolicy-MQC]classifier vodio behavior video-af12
当我们在通过10.1.12.1 ping 10.1.5.5 在R2到R3中间使用就是普通的IP报文封装,即DSCP,但R3继续向后传的时候,这时候就不再是传统的IP报文,而变成MPLS,这时候R3会自动做映射,将DSCP里面的内容根据默认规则映射到MPLS当中的EXP字段当中并继续向R5发送,如上图所示。
我们在R3和R4中间抓包发现MPLS里面多了一个字段EXP,值为1。这个值为1是怎么来的?我们在R3的接口面对边界路由器配置了信任端口,自动实现了DSCP到EXP的映射DSCP里面的12,正好对应了EXP的1,如下图所示: