这节课主要的目的是使用ACL将数据流分类,并按照类别设置DSCP(Differentiated Services Code Point)值,和预留相应的带宽。

课上运用VLC视频传送和FTP文件传输两种方式展现QoS设置的用处,但是在GNS3上我们尝试将两个LAN网络的icmp数据包设置一个DSCP值,并预留相应的带宽。

拓扑很简单:

配完IP之后配置OSPF,进程号使用103(应该是为了之后MPLS QoS做准备,不过反正大家都没做完,这个也就无所谓了)。OSPF把所有网络+Lo都写进骨干网。

配完OSPF以后开始今天的正题,配置IP QoS。

在没有配置QoS的时候,所有数据包都是没有标记的,wireshark可以验证一下:

第一步,配置class-map,使用ACL对数据流进行分类:
R1和R2上都配置一个叫ICMP的class-map,使用ACL 101匹配,再配置一个叫做BESTEFFORT的class-map,作为默认匹配,剩下的所有都匹配这个BESTEFFORT。(class-map的名字是随便取的,只要自己记住每个名字是匹配哪一类数据流的就行)
Router(config)#class-map ICMP
Router(config-cmap)#match access-group 101
Router(config-cmap)#exit
Router(config)#class-map BESTEFFORT
Router(config-cmap)#match ip dscp default
Router(config-cmap)#exit

然后配置ACL 101来匹配LAN之间的icmp数据流:
R1(config)#access-list 101 permit icmp 163.6.1.0 0.0.0.255 163.6.2.0 0.0.0.255
R2(config)#access-list 101 permit icmp 163.6.2.0 0.0.0.255 163.6.1.0 0.0.0.255

第二步,配置policy-map来匹配各个class,给尚未标记的数据包设置DSCP值:
设置一个叫做policy-map。ICMP的数据流设置af31,默认另外的数据流设置af21。
Router(config)#policy-map TOMARK
Router(config-pmap)#class ICMP
Router(config-pmap-c)#set ip dscp af31
Router(config-pmap-c)#exit
Router(config-pmap)#class BESTEFFORT
Router(config-pmap-c)#set ip dscp af21
Router(config-pmap-c)#exit
Router(config-pmap)#exit

第三步,配置policy-map来匹配class,给已经标记的数据包预留带宽:
给ICMP预留10%的带宽,其他60%吧,随性而为,反正没有正确答案。注意点是预留带宽的百分比总和不要超过80%。
Router(config)#policy-map MARKED
Router(config-pmap)#class ICMP
Router(config-pmap-c)#bandwidth percent 10
Router(config-pmap-c)#exit
Router(config-pmap)#class BESTEFFORT
Router(config-pmap-c)#bandwidth percent 60
Router(config-pmap-c)#exit
Router(config-pmap)#exit

第四步是将这两个poicy-map运用到端口上:
TOMARK应用在f0/0端口的in方向,MARKED应用在s0/0端口的out方向。
Router(config)#int f0/0
Router(config-if)#service-policy in TOMARK
Router(config-if)#exit
Router(config)#int s0/0
Router(config-if)#service-policy out MARKED
Router(config-if)#exit

OK,LAN1-LAN2已经被af31标记了

接下来我们用wireshark验证一下icmp数据包是否被af31标记了:

LAN2-LAN1也被af31标记了

接下来我们在路由器上验证QoS起效:
只要是运用到ACL来匹配的东西,我们都可以先用sh access-lists来看一下是不是有数据包匹配到ACL规则;
查看各个端口上policy-map的效果可使用sh policy-map int <端口名称:f0/0或者s0/0>


配置文件:

R1_i1_startup-config R2_i2_startup-config