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

拓扑


         图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消息时,即认为链路发生故障,触发相应动作。

    图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

         图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转发表,恢复通信。

              图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的根桥泛洪改为逐级泛洪 ↩

MSTP 解决链路负载均衡与链路检测相关推荐

  1. 链路负载均衡的链路和NAT地址保持

    之前,我们已经讨论的在多出口链路负载均衡的多个相关问题,在这里总结如下 出向链路负载均衡之协议分流 出向链路负载也需要智能DNS解析 "链路均衡设备的NAT和ipsec ***" ...

  2. 服务器负载均衡 链路负载均衡 《CDN技术详解》

    1. 服务器负载均衡 服务器负载均衡是将客户端请求在集群中的服务器上实现均衡分发的技术.按照位于七层网络协议栈的不同层的划分,服务器负载均衡可以分为四层(L4)负载均衡和七层(L7)负载均衡两种. 1 ...

  3. ABG(应用负载网关)——终端共享接入检测方案、智能链路负载均衡(LLB)

    一.终端共享接入检测方案 1.1 共享接入检测新功能 支持对接入终端超限IP进行日志记录.告警干扰: 支持针对指定IP进行共享接入检测: 支持对接入终端的品牌/型号/操作系统进行识别: 用户可按需升级 ...

  4. 对链路负载均衡与应用负载均衡的通俗理解

    链路负载均衡 链路负载均衡CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储,负载均衡,网络请求的重定向和内容管理等问题.其目的是通过在现有的因特网中增加一层新的网络架构,将网站的内容发布 ...

  5. 出向链路负载均衡之协议分流

    在之前的文章<出向链路负载也需要智能DNS解析>中介绍了通过控制DNS解析实现运营商地址分布均衡进而达到链路流量均衡,在很多网络环境中可以实现保证访问速度的同时,各链路流量也达到均衡分配. ...

  6. 20210813 数据摆渡、DNS、分布式、分布式数据库、防ddos攻击、链路负载均衡

    数据摆渡 数据摆渡是什么?摆渡的意思是,在没有道路的时候,坐船度过这片水域到达对岸. 数据摆渡顾名思义,是指在没有物理连接的情况下,数据通过隔离部件从源端到达目的端. 再通俗一点,就是通过具有存储介质 ...

  7. 链路负载均衡: 高性能和高安全的同时实现

    链路负载均衡,由于国内 南电信,北网通的现状和业务需求,竞争这个市场的厂商比较多,在很多地方也都在使用这种产品.但是有一次我们去访问一个高校客户,客户却表示仍旧愿意使用防火墙来做,使用静态策略和必要时 ...

  8. eNSP配置基于VRRP的负载均衡出口链路

    实验目的 为实现双出口的流量负载均衡,可以为不同的计算机指定不同的网关,使内部流量能通过不同的出口路由器进行转发.网关可以使用多个VRRP组来实现,并通过设置VRRP组中不同路由器的优先级,可使不同的 ...

  9. powershell加win的dns服务器,解决网站负载均衡问题

    用我发明的powershell填坑法,加windows的dns服务器.从调整dns服务器解析ip时间段的角度,解决网站负载均衡问题. ------------------------win2012r2 ...

最新文章

  1. docker教程之从一头雾水到不一头雾水(1)
  2. CyclicBarrier 和CountDownLatch使用详解
  3. linux操作系统学什么,Linux学习-第一天-什么是操作系统
  4. 字符串处理,查询第一个不是 0 的字符的位置
  5. nhibernate连接11g数据库
  6. Word中如何保证正文首行缩进其他标题不动
  7. 人工智能的发展历史_【走近AI】浅谈人工智能的层次结构。
  8. Flash 已死,Deno 当立?
  9. windows远程连接linux系统(图文)
  10. jdk LinkedHashMap源码分析
  11. php中点号是什么意思,深入解析PHP中逗号与点号的区别
  12. 洛谷P3709 大爷的字符串题(莫队)
  13. php编写一个学生类_0063 PHP编程编写学生分数信息编辑和删除功能网页
  14. 一些NLP数据/语料下载
  15. tftp服务器上传文件至华三ac,ftp和tftp 上传文件到h3c交换机
  16. 官方AWZ爱伪装 一键新机 全息备份 虚拟定位 非NZT 暗王者 IG V8 V3 IOSAPP一键新机 全息备份
  17. 建立数据挖掘的用户画像
  18. 简单整理HTML 颜色 RGB颜色值
  19. Google Drive 转存别人分享的文件到自己的网盘
  20. 直截了当地解释 ERC-3525 与 ERC-1155 的差别

热门文章

  1. 闲置电视盒子不要扔!搭建Blynk物联网服务器,太香了!
  2. 【Win10】打开控制面板提示:操作系统当前的配置不能运行此应用程序
  3. 详解字符串函数与内存函数【C语言/进阶】
  4. Ubuntu10.04用Wine运行QQ2009
  5. 武汉理工大学计算机基础与编程综合实验——网吧计费管理系统第一个版本
  6. PHP执行mpg123,树莓派充当mp3播放器
  7. 最简单的基于 DirectShow 的视频播放器
  8. 解决浏览网页禁用鼠标右键的方法
  9. Linux sed编辑器(精讲)
  10. 计算机自带的音乐剪辑怎么打开,音乐剪切器怎么使用,音乐剪切器使用教程