Smart link只适用于双上行链路中,因为是管理员手工指定配置的,所以可以将链路切换时间缩短至厘秒级别。
配置
1、按题意,应在所有接口配置为trunk,并允许10 20 30 40 100 200通过。
2、SW1借助MSTP创建实例
[SW1-mst-region]d th
#
stp region-configuration
instance 1 vlan 10 20
active region-configuration
创建smart link 组,并配置保护VLAN和控制VLAN
smart-link group 1
flush enable control-vlan 100
protected-vlan reference-instance 1
配置相关接口角色。
因为STP 、RRPP、Smart link不能共存,可能存在两个一结合,所有端口都被阻塞了。。。。
所以要先关闭stp,注意只能在接口关,不能全局关(也关不了),是因为MSTP的实例要用到。
故而
并且
[SW1-smlk-group1]port g1/0/2 primary
[SW1-smlk-group1]port g1/0/1 secondary
这时候我们发现smart link组里没有配置
并不是除了bug,而是显示在接口下面
所以说,我们可以直接在接口下面敲,是一样的。
[SW1-GigabitEthernet1/0/1]
port smart-link group 1 secondary
在 SW2,SW3,SW4 的互联端口上配置允许在 Vlan100 和 Vlan200 发送接收 Flush 报文
[SW2-GigabitEthernet1/0/1]smart-link flush enable control-vlan 100
[SW2-GigabitEthernet1/0/2]smart-link flush enable control-vlan 100
分析:Smart-link 配置完成后,由于只引用了实例 1 和实例 2,并没有引用 Vlan1 所在的实例 0,实例 0 由 MSTP 的 IST 来进行防环;而 SW1 的相关接口关闭了 STP 特性,导致 SW2、SW3 和 SW4 上的 STP 协议判断没有环路,从而不会阻塞任何端口;而且所有接口都配置为了 Trunk 并默认放行 Vlan1,所以当前网络中 Vlan1 存在逻辑环路
这里采取把 Vlan1 所在的实例 0 也引用到 Smart-link 组 1 来解决
在 Smart-link 组 1 中引用 MST 实例 0
[SW1-smlk-group1]protected-vlan reference-instance 0
如果不这样做,我们看到cpu的消耗,和收到的flush报文如下,恐怖如斯
我们知道这个环是由控制VLAN100引起的。
原因是VLAN100这个包从SW1发出后,其他交换机都转发,自己也转发!因为实例1里面只保护了10 20,没有100!导致四个交换机都转发,而100默认在实例0里,后面保护了实例0也就保护了100,导致环路破解!
我们接个主机
发个VLAN10 的包,结果发现包先从g1/0/1出去,从g1/0/2回来,但是由于VLAN10保护了,所以不会再次转发了!!! 我猜测Smart link原理是这个
基本命令结束。
1、要求当 Smart-link 主链路故障恢复后,端口角色能够自动恢复
分析:Smart-link 默认不开启角色抢占,如主链路故障恢复后,仍然保持数据从备份链路传输。需要配置开启抢占模式,才能够使端口角色自动恢复
[SW1-smlk-group1]preemption mode role
2、要求当 SW2 和 SW3 的上行链路故障后,也能触发 Smart-link 角色切换
分析:Smart-link 只监听本机端口状态,当本机主端口故障,才会触发角色切换。根据需求分析,需要在 SW2 和 SW3 上配置 Monitor-link,把连接 SW4 的端口配置为上行端口,连接 SW1 的端口配置为下行端口
[SW2]monitor-link group 1
[SW2-mtlk-group1]port g1/0/2 uplink
[SW2-mtlk-group1]port g1/0/1 downlink