不通丢包传输慢的根本原因都可以归结为网络中存在异常丢包现象,通常一张业务网中存在少则几台、多则上万台设备,那么我们排障的第一步就是将排查范围尽可能缩小到某一台或几台设备,事半功倍,集中攻克,否则简直就是在抓瞎!

常用流统

说了那么多,到底什么是流统呢?流统就是流量统计的简称,通过QOS对符合匹配规则的流进行数量统计,既可以基于Byte也可以基于Packet统计,既可以针对In方向也可以针对Out方向统计,同时可以下发在接口、VLAN、全局、控制平面等多个层面。

常用的流量统计大致有:

  1. ICMP报文流统
  2. ICMPv6报文流统
  3. ARP报文流统
  4. DHCP报文流统
  5. VXLAN报文流统

ICMP流统方法

image.png

  假如Server 1 (IP=192.168.1.1) 主动Ping往Server 2 (IP=192.168.1.2),那么ICMP Request报文从SW 2的端口1进入、端口2发出。反之同理。这里我们以ICMP Request报文流量走向举例,确认是否存在丢包:

第一步:定义ACL匹配源IP为192.168.1.1、目的IP为192.168.1.2的ICMP Request报文。

第二步:创建名为classifier_1的流分类,匹配数据包的规则ACL 3000。再创建名为behavior_1的流行为,定义流统计动作accounting packet。

第三步:创建一个名为policy_1的策略,将流分类和流行为关联。

第四步:将QOS策略应用到端口1的入方向和端口2的出方向。

第五步:通过display qos policy interface inbound/outbound命令查看流统结果,图中端口1的inbound方向收到了5个ICMP Request报文,端口2的outbound方向发出了5个ICMP Request报文,由此说明SW 2并没有丢弃ICMP Request报文哦!

此外,可以通过reset counters interface命令来清除接口计数,清除后可以再次进行Ping测试和流统哦!

Step 1:定义ACL匹配某一个方向的流量
acl advanced 3000
rule 5 permit icmp source 192.168.1.10 destination 192.168.1.20

Step 2:定义类匹配ACL和计数动作
traffic classifier classifier_1
if-match acl 3000
traffic behavior behavior_1
accounting packet

Step 3:定义QOS关联类和动作
qos policy policy_1
classifier classifier_1 behavior behavior_1

Step 4:应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/1
qos apply policy policy_1 inbound
interface GigabitEthernet 1/0/2
qos apply policy policy_1 outbound 

image.png

ICMPv6流统方法

  ICMPv6报文流统和ICMP报文流统的原理基本一致,不同的是,需要创建一个IPv6类型的ACL来匹配IPv6报文。

  另外,由于IPv6中存在多种类型的ICMPv6报文,因此在统计IPv6 Ping报文时需要添加icmp6-type字段来精确匹配:
echo-request or type=128:IPv6 Ping的请求报文
echo-reply or type = 129:IPv6 Ping的应答报文
  示例中的 IPv6 ACL匹配了源IP为2001::1/128、目的IP为2001::2/128的IPv6 Ping请求报文。

Step 1:定义IPV6 ACL匹配一个方向的ICMPv6流量(以Request为例)
acl ipv6 advanced 3000
rule 0 permit icmpv6 source 2001::1/128 destination 2001::2/128 icmp6-type echo-request   

Step 2:定义类匹配ACL和计数动作
traffic classifier classifier_1
if-match acl ipv6 3000
accounting packet

Step 3:定义QOS关联类和动作
qos policy policy_1
classifier classifier_1 behavior behavior_1

Step 4:应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/1
qos apply policy policy_1 inbound 
interface GigabitEthernet 1/0/2
qos apply policy policy_1 outbound

ARP流统方法

image.png

  针对ARP报文的流统也类似,需要注意的是,必须创建一个MAC
ACL,指定类型编号为0806的ARP报文、根据报文的源目MAC进行匹配。
  示例中,Server 1向Gateway发出广播ARP请求报文,Gateway向
Server 1发出单播ARP响应报文。
  假设在中间设备SW1上统计广播ARP请求报文,需要创建一个MAC ACL匹配0806类型、源MAC为0001-0001-0001的报文。

Step 1:定义MAC ACL匹配一个方向的ARP流量(ARP Request为例)
acl mac 4000
rule 0 permit type 0806 ffff source-mac 0001-0001-0001 ffff-ffff-ffff  

Step 2:定义类匹配ACL和计数动作
traffic classifier classifier_1
if-match acl 4000
traffic behavior behavior_1
accounting packet

Step 3:定义QOS关联类和动作
qos policy policy_1
classifier classifier_1 behavior behavior_1

Step 4:应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/1
qos apply policy policy_1 inbound
interfaceGigabitEthernet 1/0/2
qos apply policy  policy_1 outbound

DHCP 流统方法

image.png

  DHCP获取地址时,终端先发出Discovery报文,服务器收到后会进行地址的分配并回复Offer报文,终端收到后会再次发送Request报文进行确认,
服务器最后回复ACK给终端。
  DHCP报文均为UDP报文,客户端发出的报文UDP源端口号为68 (bootpc),Server发出的DHCP报文源端口号67 (bootps),因此可以根据报文的源MAC及UDP端口号进行匹配。
  示例中,定义ACL 3010匹配客户端发出的DHCP报文,定义ACL 3011匹配服务器发出的DHCP报文,同时,在流分类中匹配ACL和报文的源MAC地址。

Step 1:定义ACL匹配某一个方向的流量
acl advanced 3010 //定义acl匹配Client发出的DHCP报文
rule 0 premit udp source-port eq bootpc destination-port eq bootps  
acl advanced 3011 //定义ACL匹配Server发出的DHCP报文
rule 0 permit udp source-port eq bootps destination-port eq bootpc  

Step 2:定义类匹配ACL3010及Client的源MAC,配置accounting及QOS策略
traffic classifier dhcp-c operator and
if-match acl 3010
if-match source-mac 0001-0001-0001
traffic behavior dhcp-c
accounting packet
qos policy dhcp-c
classifier dhcp-c behavior dhcp-c

Step 3:定义类匹配ACL3011及Server的源MAC,配置accounting及QOS策略
traffic classifier dhcp-c operator and
if-match acl 3011
if-match source-mac 0002-0002-0002
traffic behavior dhcp-s
accounting packet
qos policy dhcp-s
classifier dhcp-s behavior dhcp-s

Step 4:应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/1
qos apply policy dhcp-c inbound
qos apply policy dhcp-s outbound
interface GigabitEthetrne 1/0/2
qos apply policy dhcp-s  inbound
qos apply policy dhcp-c outbound

VXLAN流统方法

image.png

  随着VXLAN技术的广泛应用,现有网络和传统网络相比有了很大变化,VXLAN报文的流统慢慢成为了网络打工人的一项必备技能。

  这里先来介绍一下VXLAN组网下报文的封装和转发过程。示例中,Leaf 1和Leaf 2分别与Spine互联,通过发布EVPN路由形成VXLAN隧道,隧道地址分别为3.3.3.3和4.4.4.4。

  当Server 1 (IP=192.168.1.1) ping 往Server 2 (IP=192.168.1.2) 时,Server 1发出普通ICMP Request报文,从端口1进入Leaf 1并封装VXLAN头及外层IP头,封装后从端口2发出、通过端口3进入Spine设备,Spine设备根据外层IP信息从端口4发出报文,从端口5进入Leaf 2,Leaf 2解除VXLAN封装后将报文从端口6发给Server 2,返程流量实现相同。这里给大家总结两种VXLAN报文的流统方法:

  1. 标记报文DSCP的方式

  2. 匹配VXLAN内层IP的方式

标记报文DSCP的方式

端口1:
流量进入端口1后,可以通过QOS进行统计并进行DSCP的重标记,后面流量经过的
端口都可以直接匹配DSCP继续流统:

Step 1:定义ACL匹配一个方向的ICMP流量(Request为例)
acl advanced 3010
rule 0 permit icmp source 192.168.1.10 destination 192.168.1.20  

Step 2:定义类匹配ACL和计数动作以及标记ICMP报文的DSCP为41
traffic classifier vxlan operator and
if-match acl 3010
traffic behavior vxlan
accounting packet
remark dscp 41

Step 3∶定义QOS关联类和动作
qos policy vxlan
classifier vxlan behavior vxlan

Step 4∶应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/1 
qos apply policy vxlan inbound

端口2、3、4、5、6:
可以直接通过匹配DSCP的方式进行流量的统计,QOS的定义规则相同:

Step 1∶定义类匹配DSCP41的报文和计数动作
traffic classifier vxlan-1 operator and
if-match dscp 41 traffic behavior
vxlan-1 accounting packet

Step 2∶定义QOS关联类和动作
qos policy vxlan-1
classifier vxlan-1 behavior vxlan-1

Step 3∶应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/2 
qos apply policy vxlan-1 outbound 
interface GigabitEthetrne 1/0/3 
qos apply policy vxlan-1 inbound 
interface GigabitEthetrne 1/0/4 
qos apply policy vxlan-1 outbound 
interface GigabitEthetrne 1/0/5 
qos apply policy vxlan-1 inbound
interface GigabitEthetrne 1/0/6 
qos apply policy vxlan-1 outbound

匹配VXLAN内层IP的方式

端口1:
端口1可以使用MQC流统,直接进行源目IP地址的匹配:
Step 1∶定义ACL匹配某一个方向的流量
acl advanced 3010
rule 0permit icmp source 192.168.1.10 
destination 192.168.1.20

Step 2∶定义类匹配ACL和计数动作及
QOS traffic classifier vxlan if-match
acl 3010 traffic behavior vxlan 
accounting packet qos policy vxlan
classifier vxlan behavior vxlan

Step 3∶应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/1 
qos apply policy vxlan inbound

端口2:
报文从端口2发出时已经带有VXLAN封装,出方向不支持内层信息的统计,需要使
用qos-local-id标记的方式进行统计,但配置实现较复杂,建议到互联接口端口3
的inbound方向进行流统。
端口3:
端口3可以通过匹配内层报文信息来进行流统,定义ACL 3011来匹配VXLAN报文的
内外层信息,下发QOS到端口的inbound方向:
Step 1∶定义ACL匹配某一个方向的流量
acl advanced 3011
rule 0 permit vxlan source 3.3.3.3 0 destination 4.4.4.40 
inner-protocol icmp 
inner-source 192.168.1.1 0 inner-destination 192.168.1.2 0

Step 2∶定义类匹配ACL和计数动作及
QOS traffic classifier vxlan 
if-match acl 3011 
traffic behavior vxlan 
accounting packet 
qoS policy vxlan
classifier vxlan behavior vxlan

Step 3∶应用QOS到对应接口的对应方向
interface GigabitEthetrne 1/0/3 
qos apply policy vxlan inbound

端口4:
对于中间转发VXLAN设备,报文从端口4转发出去时依旧带有VXLAN的封装,由于出
端口不支持匹配内层信息,需要使用qos-local-id标记的方式进行统计,但配置
实现较复杂,建议到互联接口端口5的inbound方向进行流统。
端口5、6:
报文进入端口5时会进行解VXLAN封装再进行流统,因此对于端口5和端口6,可以
直接通过内层信息进行流统。
Step 1∶定义ACL匹配某一个方向的流量
acl advanced 3012
rule 0permit icmp source 192.168.1.10 destination 192.168.1.2 0  

Step 2∶定义类匹配ACL和计数动作及QOS traffic classifier vxlan 
if-match acl 3012 
traffic behavior vxlan 
accounting packet 
qos policy xlan
classifier vxlan behavior vxlan

Step 3∶应用QOS到对应接口的对应方向interface GigabitEthetrne 1/O/5   
qos apply policy vxlan inbound 
interface GigabitEtherne 1/0/6 
qos apply policy vxlan outbound

结束语

  常用的流统方法大致就是这些啦,作为网络打工人的你都学废了吗?小学徒以后再遇到丢包问题就不用怕啦!
   还需要注意的是,不同交换机产品对流统的支持情况不同,实际使用时以具体产品规格为准哦!
   我们下期再见啦!

打赏
支付宝 微信
上一篇 下一篇