MSTP 解决链路负载均衡与链路检测

MSTP 解决链路负载均衡与链路检测

拓扑

MSTP 解决链路负载均衡与链路检测_第1张图片
         图1
如图 1 所示拓扑,huiju交换机与jieru交换机之间有两条链路,huiju G0/0/1 千兆光口,,G0/0/2 千兆电口;jieru G0/0/1 千兆光口,E0/0/2 百兆电口;link1是裸光纤,link2链路使用收发器做光电转换,收发器为百兆。

要求

  • huiju与jieru 之间的采用二层以太网链路,两条链路互为备份,且可实现流量负载均衡。

拓扑分析

  1. 若实现两条链路互为备份必须保证有链路检测机制,及时发现链路故障并触发动作。一种检测方法是侦测端口的状态,以此判断链路是否有故障。如图1 若link1的光纤链路光衰过大或折断,则光信号无法传输,huiju与jieru 端口间的逻辑链路断开,端口down,触发动作将流量切换到备用链路。如图2 ,检测端口状态的方式无法应对link2链路的情况,link2链路光纤出现故障后,收发器与交换机端口间的逻辑链路仍保持,交换机不能感知link2传输路径上的故障,产生流量黑洞。因此须使用基于HELLO 消息的协议检测link2的链路状态。huiju与jieru 定时发送HELLO消息,并且各自维护一个保活计时器,超过一定时间未收到对端发来的HELLO消息时,即认为链路发生故障,触发相应动作。
    MSTP 解决链路负载均衡与链路检测_第2张图片
    图2
  2. 负载均衡有多种实现方式,负载的粒度可以是数据帧、数据流(会话),也可基于VLAN或实例1负载。链路聚合(Link Aggregation)技术可以基于数据流负载2,MSTP可基于实例负载。

解决方案

huiju、jieru 配置MSTP,huiju 作为所有VLAN的根桥,使用MSTP 解决链路检测问题,并实现负载均衡。

原理描述

负载均衡

huiju 交换机作为根桥,G0/0/1-2 两端口都会处于Forwarding 状态,由jieru 交换机选举根端口并阻塞另一端口,防止成环。为什么可以实现负载呢?先来看一下jieru 交换机根端口选举机制:
生成树根端口选举顺序
1. 到根网桥路径开销最小的端口
2. 发送方网桥ID最小3
3. 发送方端口ID最小(端口ID=端口优先级 + 端口编号)
网桥上每个生成树实例(instance)可以分别选择自已的根端口,根据上述选举顺序3,可以在huiju交换机上改端口优先级,去控制jieru 交换机的根端口选举,每个实例选择不同的根端口,从而实现负载均衡。见图3
MSTP 解决链路负载均衡与链路检测_第3张图片
         图3
这里还有一个问题,jieru 上g0/0/1的带宽大于e0/0/2,因而g0/0/1到根桥的开销最小,根据顺序1应该选择g0/0/1 作为根端口,而不会去匹配顺序3。这也好解决,可以手动强制将两端口开销设为一致,使生成树匹配选举顺序3。

链路检测

生成树端口状态机基于hello 消息,因此生成树可以感知图 1 link2光纤链路故障。默认情况下生成树 hello timer 2 s ,dead timer 20 s 。对于图3 所示网络来说故障切换时间太长了,可以通过更改网络直径4来缩短故障切换时间。

MAC 刷新问题

配置好MSTP负载均衡后测试:(见图3)

  1. link1 链路断开,网络中断大约1s后恢复,实例1切换到备份链路link2;
  2. 恢复link1 链路,实例1 切换回主用链路link1,网络无中断;
  3. link2 光纤链路断开,网络中断大约13s后恢复,实例2切换到link1;
  4. 恢复link2 光纤链路,网络中断大约10s 后恢复,实例2切换回link2;

问题:测试3中,网络中断13s是因为生成树的dead time 为13s,但为什么测试4 恢复光纤链路后,网络会中断呢?
当生成树发生故障切换时, 和它建立映射关系的VLAN的转发路径(MAC 转发表)也将发生变化。生成树通过TC 报文通知所有交换机及时采取措施更新MAC转发表;测试3光纤链路断开后发生了什么呢? link2光纤链路断开,两台交换机上的G(E)0/0/2 端口仍是处于UP状态,只不过收不到对端交换机发送来的BPDU了。生成树在dead time 超时后,将G0/0/2 置为边缘端口5,状态为Forwarding 。光纤链路恢复,G(E)0/0/2仍为Fowarding 态,jieru G0/0/1成为DISCARDING态,生成树认为拓扑没发生变化6,因此不会触发TC,此时交换机的MAC 转发表仍使用旧表项(instance 2 流量从G0/0/1转发),因此会造成网络中断(见 图4)。一段时间主机无法与网关通信,主机发送的ARP请求或其他多播、广播包可以刷新交换机的MAC转发表,恢复通信。
MSTP 解决链路负载均衡与链路检测_第4张图片
              图4

结论

基于MSTP负载的图 1 拓扑,link2 的平均故障时间要大于link1,可以将时效性相对不敏感的流量负载到link2 。

配置(华为设备)

**huiju **

stp mode mstp 
stp bridge-diameter 3
stp region-configuration
region-name GA
instance 1 vlan 1 to 50
instance 2 vlan 51 to 100
active region-configration
quit
stp instance  1  root primary
stp instance  2  root primary
int g0/0/1 
port link-type trunk
port trunk allow-pass vlan 1 50 100
stp instance  1 port priority 0
stp root-protection
int g0/0/2
port link-type trunk
port trunk allow-pass vlan 1 50 100
stp instance  2 port priority 0
stp root-protection

**jieru**

stp mode mstp 
stp bridge-diameter 3
stp region-configuration
region-name GA
instance 1 vlan 1 to 50
instance 2 vlan 51 to 100
active region-configration
quit
int  g0/0/1 
port link-type trunk
port trunk allow-pass vlan 1 50 100
stp pathcost-standard dot1t
stp instance 0 cost 2000
stp instance 1 cost 2000
stp instance 2 cost 2000
int  e0/0/2
port link-type trunk
port trunk allow-pass vlan 1 50 100
stp pathcost-standard dot1t
stp instance 0 cost 2000
stp instance 1 cost 2000
stp instance 2 cost 2000


  1. 实例(instance)即多生成树实例; ↩
  2. 链路聚合不适用与本拓扑; ↩
  3. 对jieru来说“发送方”指的是huiju; ↩
  4. 网络直径指任意两台终端之间连接时通过的交换机数目的最大值,默认值是7,一般根据情况取值3-7。调整网络直径后,hello 与dead 时间也会相应变小。 ↩
  5. 端口使能生成树协议后,会默认启用边缘端口自动探测功能,当端口在(2 × Hello Timer+ 1)秒的时间内收不到BPDU报文,自动将端口设置为边缘端口,否则设置为非边缘端口。 ↩
  6. Topology Change 机制
    RSTP判断拓扑结构变化的标准是:非边缘端口的端口进入Forwarding状态。发现变化的交换机会做以下工作:
    1.为所有非边缘端口的其他端口启动一个计时器TC While Timer(2倍的hello time);
    2.清空这些端口上的MAC地址;
    3.在TC While Timer有效期内,这些端口向外发送TC位置1的BPDU。
    其他交换机接收到TC RSTP BPDU,作如下变化:
    1.清空除收到TC端口以外的所有端口的MAC地址;
    2.在所有的端口和根端口上启动TC While Timer,并发送TC报文。然后在这段时间内,这些端口也向外发送TC。
    RSTP TC报文的泛洪由STP的根桥泛洪改为逐级泛洪 ↩

你可能感兴趣的:(网络)