1.Smart-Link基本概念

Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个接口作为另一个的备份。Smart Link常用于双双上行组网,提供可靠高效的备份和快速的切换机制。

Smart Link用于双上行组网示例 在此类组网中采用Smart Link技术有以下优点:
- 能够实现双上行组网的两条链路正常情况下,一条链路处于转发状态,而另一条处于阻塞待命状态,从而可避免环路的不利影响。
- 配置和使用更为简洁,便于用户操作。
- 当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,极大限度地保证了数据的正常转发。
Smart Link用于双上行组网示例

如图所示SwitchA采用双上行方式分别连接到SwitchB和SwitchC,这样SwitchA到达SwitchD的链路就可以有两条(SwitchA->SwitchB->SwitchD和SwitchA->SwitchC->SwitchD),但是网络中的环路会产生网络风暴。在SwitchA上配置Smart Link,正常情况下,可实现Interface2所在链路作为Interface1所在链路的备份。若Interface1所在的链路发生故障,Smart Link会自动将数据流量切换到Interface2所在链路,保证业务不中断。
在此类组网中采用Smart Link技术有以下优点:

  • 能够实现双上行组网的两条链路正常情况下,一条链路处于转发状态,而另一条处于阻塞待命状态,从而可避免环路的不利影响。
  • 配置和使用更为简洁,便于用户操作。
  • 当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,极大限度地保证了数据的正常转发。


    在一些二层拓扑协议(如Smart Link)组网中,拓扑协议无法监视到上行接口的状态,从而导致拓扑协议无法进行链路切换。Monitor Link可用于扩展一些二层拓扑协议的应用范围,通过监控上行链路对下行链路进行同步设置,达到上行链路故障迅速传达给下行设备,从而触发下游设备上的拓扑协议进行链路的切换,防止长时间因上行链路故障而出现流量丢失。

1.2 Smart-Link基础

Smart Link通过两个端口相互配合工作来实现功能。这样的一对端口组成了一个Smart Link组。为了区别一个Smart Link组中的两个端口,我们将其中的一个叫做主端口,另一个叫做从端口。同时我们利用Flush报文、Smart Link实例和控制VLAN等机制,以更好地实现Smart Link的功能(包括负载分担)。

Smart-Link示意图
image.png
Smart Link**
Smart Link组,一个组内最多可包含两个接口,其中一个为主接口,另一个为从接口。正常情况下,只有一个接口处于转发(Active)状态,另一个接口被阻塞,处于待命(Inactive)状态。
主接口/**从接口
如上图所示,Interface 1被配置为Smart Link组的主接口,Interface 2被配置为Smart Link组的从接口。主接口又叫Master接口,从接口又叫Slave接口。
Flush报文
当Smart Link组发生链路切换时,原有的转发表项将不适用于新的拓扑网络,需要整网进行MAC表项和ARP表项的更新。这时,Smart Link组通过发送Flush报文通知其他设备进行MAC和ARP表项的刷新操作。如图所示,当链路发生切换时,SwitchD会发送组播Flush报文通知SwitchA、SwitchB和SwitchC进行MAC和ARP表项的更新。
控制**VLANControl VLAN**)

  • 发送控制VLAN
    • 发送控制VLAN是Smart Link组用于广播Flush报文的VLAN。如上图,如果在SwitchD上开启了Flush报文发送功能,当发生链路切换时,设备会在发送控制VLAN内广播发送Flush报文。
  • 接收控制VLAN
    • 接收控制VLAN是上游设备用于接收并处理Flush报文的VLAN。如上图,如果上游设备SwitchA,SwitchB和SwitchC能够识别Flush报文,并开启了Flush报文接收处理功能,当发生链路切换时,上游设备会处理收到的属于接收控制VLAN的Flush报文,进而刷新MAC表和ARP表。

负载分担
Smart Link支持配置多个负载分担VLAN实例,当Smart Link组的主从链路均正常时,Smart Link允许两条链路可以转发不同的数据流量。负载分担情况下,两个接口均处于转发状态,从接口转发负载分担实例流量,主接口转发其它实例流量。当其中一条链路故障时,Smart Link组会自动将所有的流量切换到另一条链路上。
Smart Link**实例**
Smart Link组的备链路通过绑定不同的实例来实现负载分担。Smart Link引用MSTP的实例。每个实例用来绑定若干VLAN,不同的实例绑定不同的VLAN。

1.3 Smart Link基本原理

以下图描述的组网为例,按照链路正常——链路故障——链路恢复的过程,介绍Smart Link运行的基本原理。
image.png
**链路正常工作原理
SwitchD上的Smart Link组包含了Interface1和Interface2两个接口,其中Interface1为主接口,Interface2为从接口。双上行链路都正常的情况下,主接口处于转发状态,所在的链路是主用链路,从接口处于待命状态,所在链路是备用链路。如下图所示,数据沿着主链路进行传输,网络中不存在环路,避免产生广播风暴。

链路正常工作时流量示意图
image.png

链路故障处理原理
如下图所示,当SwitchD的主链路发生故障时,主接口Interface1切换到待命状态,从接口Interface2切换到转发状态。此时,网络中相关设备上的MAC地址转发表项和ARP表项可能不再适用,需要提供一种MAC及ARP更新的机制。目前更新机制有以下两种。

主链路故障时上行流量示意图
image.png
通过Flush报文通知设备更新表项
这种方式适用于上游设备(如上图中的SwitchA、SwitchB和SwitchC)支持Smart Link功能的场景。为了实现快速链路切换,需要在SwitchD上开启Flush报文发送功能,在上游设备所有处于双上行链路上的接口开启接收处理Flush报文的功能。

  1. SwitchD进行链路切换后,会从新的主用链路上发送Flush报文,即通过Interface2发送。
  2. 当上游设备收到Flush报文时,判断该Flush报文的发送控制VLAN是否在收到报文的接口配置的接收控制VLAN列表中。如果不在接收控制VLAN列表中,设备对该Flush报文不做处理,直接转发;如果在接收控制VLAN列表中,设备会处理收到Flush报文,进而执行MAC地址转发表项和ARP表项的刷新操作。


此后,如果SwitchA收到目的设备为SwitchD的数据报文,会根据更新后的MACC地址转发表项或ARP表项进行转发。

自动通过流量更新表项
这种方式适用于与不支持Smart Link功能的设备(包括其他厂商设备)对接的情况,需要有上行流量触发。
如下图所示,如果没有来自SwitchD的上行流量去触发SwitchA的MAC及ARP表项更新,那么当SwitchA收到目的设备为SwitchD的数据报文时,SwitchA仍会通过接口Interface3转发出去,但此时报文已经不能到达SwitchD,会造成流量丢失,直到其MAC或ARP表项自动老化。

主链路出现故障时下行流量示意图
image.png
如下图所示,由于链路故障后,Interface1学习到的MAC及ARP表项会被删除,如果SwitchD有上行流量要发送,需要重新广播ARP报文后,流量才能被发送出去。当上行流量通过接口Interface4到达设备SwitchA后,SwitchA会更新自己的MAC及ARP表项,那么当SwitchA再收到目的设备为SwitchD的数据报文时,SwitchA会通过接口Interface4转发出去,报文就可以经由SwitchC到达SwitchD。
image.png
通过Flush报文通知设备更新的机制无须等到表项老化后再进行更新,可以极大程度地减少表项更新所需时间。通常,链路的切换过程可在毫秒级的时间内完成,最大限度地减少流量的丢失。

链路恢复处理原理
当原主用链路故障恢复时,Interface1将维持在阻塞状态,不进行抢占,从而保持流量稳定。如果希望流量切换到原主用链路,可以通过如下两种机制进行切换。

  • 使用Smart Link组回切功能,需要在SwitchD上使能回切功能。当原主用链路故障恢复后,经过回切定时器设定的时间,Smart Link会自动将流量切换到原主用链路上。
  • 使用配置命令强制让Smart Link立即将流量切换到原主用链路上。


    如第一图所示组网示例,当SwitchD的Interface1的链路恢复后,如果配置了Smart Link组回切功能,在回切定时器超时后,Interface2将被阻塞并切换到待命状态,而Interface1将切换到转发状态。而如果使用配置命令强制让Smart Link进行链路切换,在执行命令后,Interface2将被立即阻塞并切换到待命状态,而Interface1会切换到转发状态。

1.4 Smart Link负载分担

  1. 在同一个组网中,同一时刻双上行链路中只有一条处于转发状态,另一条链路不承载流量,即链路利用率只有50%。Smart Link支持负载分担实例,备份链路分担指定的负载分担实例内VLAN的流量,即允许指定实例对应的VLAN数据通过备份链路进行转发(主链路此时不会对这些VLAN数据进行转发),从而使主链路和备份链路承载不同VLAN数据流量的转发,达到负载分担的目的。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1467971/1612539623487-4af2f4a7-fa18-49f5-a08e-64a3a6cb5a77.png#align=left&display=inline&height=340&margin=%5Bobject%20Object%5D&name=image.png&originHeight=340&originWidth=459&size=28590&status=done&style=none&width=459)<br /> 如上图所示,在未配置负载分担的情况下,所有报文都通过SwitchD的Interface 1接口沿转发(Active)链路进行传输。为了提高链路利用率,通过配置Smart Link负载分担,让部分VLAN的数据通过SwitchD的Interface 2接口进行传输。将VLAN 300~VLAN 400配置为Smart Link负载分担实例,让VLAN 300~VLAN 400的数据通过SwitchD的Interface 2接口进行传输。从而配置为负载分担实例的VLAN 100~VLAN 200的报文还是通过主用链路转发,从而实现在Smart Link组中对实例中映射的VLAN数据流量进行负载分担。