HCIP-ICT实战进阶09-RSTP&MSTP原理与配置
HCIP-ICT实战进阶09-RSTP&MSTP原理与配置
最近在跟国科的系统集成, 发现前几章都是大三上Linux课程教过的东西, 于是想起来抽时间把之前HCIP的博客补一补, 包括这篇还剩三篇, 你完全可以相信我的毅力(
0 回顾生成树协议
生成树工作过程
-
选举根桥(root bridge)
生成树的报文(BPDU)携带桥ID(BID)信息, 2s发送一次, 该信息主要是16bit优先级+48bitMAC地址, 优先级和mac地址都是越小越优先, 优先级为4096的倍数, 默认为32768.
-
选举根接口
根接口: 去往根桥的最优接口;
选举顺序(依次选小的): 根桥ID->RPC(开销)->网桥ID->接口ID.
-
指定接口
前提: 根桥ID需要一致, 不一致需要重新选举根桥;
每一条链路需要指定一个指定接口.
选举顺序(): 根路径开销值->桥ID->端口ID.
-
阻塞剩下的端口
传统STP的端口状态
状态 | BPDU | MAC | 数据 |
---|---|---|---|
Forwarding(转发状态) | 收发 | 学习 | 收发 |
Learning(学习状态) | 收发 | 学习 | 不收发 |
Listening(侦听状态) | 收发 | 不学习 | 不收发 |
Blocking(阻塞状态) | 收 | 不学习 | 不收发 |
Disable(未使能状态) | / | / | / |
工作流程
-
一开始是disable, 因为两台设备接口相连, 接口会有disable->短暂blocking->listening;
-
之后进入listening的设备会和相邻设备交互BPDU, 选举根桥, 该状态会存在一个forward delay转发时延, listening会停留15s, 在这15s内基本能选举完根桥、端口角色, 之后迁移到learning;
-
进入learning的设备需要学习mac地址,该状态会存在15s的forward delay, 之后迁移到forward;
即两台交换机从没连线到连接线缆到最后能转发数据, 需要进过30s的等待时间.
如果出现一个端口本身就是被阻塞的, 阻塞端口如果希望恢复正常转发, 则一定是本来的网络中出现了链路故障.
此外, 传统STP在拓扑稳定后只有根桥会周期性(2s)发送配置BPDU, 其他交换机在收到上游(根端口方向)传来的配置BPDU后, 才会发送自己的配置BPDU.
少爷小姐有需要更详细的STP回顾这边请👉HCIA-ICT实战基础-传统生成树
1 RSTP
随着局域网规模不断扩大, STP拓扑收敛速度慢的问题逐渐凸显, 因此出现了改进的RSTP(Rapid Spaning Tree Protocol, 快速生成树协议).
-
STP没有细致区分端口状态和端口角色, 其实不利于初学者学习和部署.
-
从用户角度来说: Listening、Learning、Blocking状态都没有区别, 同样不转发用户数据流量;
-
从配置角度来说, 端口最本质之间的区别不在于端口状态, 而在于端口扮演的角色;
-
依赖定时器等待的方式判断收敛速度慢(30~50s).
1.1 RSTP对传统STP的改进
1.1.1 端口角色
主要是针对阻塞端口进行细分
-
传统STP: RP(根端口)、DP(指定端口)、BP(Blocking, 阻塞端口);
-
RSTP: RP、DP、BP(Backup, 备份端口)、AP(Alternate, 替代端口)、EP(edge-port, 边缘端口);
RSTP将传统的STP的BP端口(Blocking)细分为两种阻塞端口(AP、BP), 并且新增了一个EP端口.
-
AP(替代端口)就是用来给RP(根端口)做备份的, 是收到其他交换机发送的配置BPDU报文而阻塞的端口, 如果RP出现故障, AP可以立刻转换成RP进行工作.
-
BP(备份端口)就是用来给自己的的DP端口(指定端口)做备份的, 是收到自己发送的BPDU而阻塞的端口, 如果DP出现故障, BP能立刻转换为DP做备份
-
EP(边缘端口)是交换机连接终端方向的接口, 用于使得终端接入二层交换机的时候不需要等待两个转发时延, 之间进入转发状态. 即EP端口不需要参与RSTP计算, 直接从discarding切换到forwarding.
此外, 如果用于连接终端的边缘端口被接入了交换机设备, 导致边缘端口收到BPDU报文时, 边缘端口则会转变为普通的STP端口并进行生成树算法计算, 从而引起网络震荡. 此举是为了防止边缘端口环路.
注: 区别传统STP的BP端口(阻塞端口)和RSTP的BP端口(备份端口).
1.1.2 端口状态
端口状态根据端口是否转发流量和学习mac地址进行重新合并, 合并之后状态之间迁移速度加快.
RSTP重新划分后的端口状态:
状态 | 对应角色 | 备注 |
---|---|---|
Forwarding | RP、DP | 同STP |
Learning | RP、DP | 同STP |
discarding | RP、DP、AP、BP、Disable | 合并了disable、blocking、listening状态 |
1.1.3 配置BPDU-RST BPDU
RST-BPDU报文格式:
RSTP修改了STP的版本号码, 同时对Flag字段进行重新定义, 用于明确端口角色:
-
Type: BPDU类型不再是0而是2, 运行STP的设备收到RSTP的BPDU报文会丢弃;
-
Flag: 使用了原来保留的中间6位, 这样改变的配置BPDU称为RST BPDU;
传统STP的BPDU报文的Flag字段: 1000 0001, 只有头尾两个bit是有意义的:
RSTP的BPDU的Flag字段: 1111 1111, 前后两个bit位功能同STP, 其他bit作用为:
1.1.4 配置BPDU的处理
传统设备只能由根桥设备发送BPDU, 下面的非根桥设备转发BPDU, 而在RSTP中每一台设备都是自主按照2s周期发送BPDU;
1.1.5 老化时间缩短
传统STP在blocking状态需要20s时间才能迁移到Listening, RSTP则将时间缩短, 一个端口连续三次(3*2=6s)没收到对方的BPDU报文, 则认为对方已经故障, 华为设备默认有一个时间因子, 默认为3倍, 所以真正的老化时间为: 周期x时间因子(3)=18s;
1.1.6 次优BPDU处理方式
传统STP只有指定端口收到一个次优BPDU的时候, 会立刻回复一个本地存储的最优BPDU, 用于告知对端BPDU不是最优, 需要调整.
在RSTP任意接口收到对方发送的BPDU报文, 则和本地存储的BPDU做对比, 如果收到的BPDU更优, 则
1.1.7 PA机制
PA(Proposal/Agreement)机制, PA机制就是能够让整个网络非常快速地从discarding切换到forwarding的快速收敛机制.
这个可以耐心看看.
PA机制的过程:
-
双方交换机接口连线并up;
-
开启RSTP, 两个连接的接口都会变成指定接口(DP), 但是端口状态为discarding;
-
两个DP开始互相发送RST BPDU;
-
双方相互收到BPDU报文, 并比较BID(优先级+mac):
- 优先的一方发送RST BPDU报文且将Flag字段中的P置位置为1, 表示当前是一个提议协商报文;
- 另一方感觉自己要变成根端口了, 于是停止发送BPDU报文.
-
劣势的一方接收到了P=1的RST BPDU报文, 进入同步状态(sync状态), 其主要表现是将本地所有接口(除了边缘端口EP)置为discarding状态;
劣势方同步完成后向收到P=1的端口发送一个Flag字段中A置位为1的RST BPDU, 并将这个端口由discarding切换为forwarding, 最后将这个端口的端口角色设为RP(根端口).
-
优势方收到A=1的BPDU报文, 则该接口直接进入Forwarding状态, 并且端口角色变成DP.
大致的过程图解:
假设整条链路的PA机制到了最后一个部分, 即两边的设备只需要选出一个指定端口和阻塞端口即可的时候, 这条链路会进入传统STP的选举过程, 会存在转发时延(15s), 需要等待2倍的时延后才会正常工作.
原因: 最后两台设备进行PA的时候, 此时网络中已经选出了根桥, 且不是这两台设备, 于是这两台设备之间进行PA的时候:
- 相对优势的一方会发送P=1的RST BPDU, 相对劣势的一方收到RST BPDU后比对其他方向收到的来自根桥优先级更高的P=1的RST BPDU, 决定不和相对优势的一方进行同步, 不会回复A=1的RST BPDU, 进而相对优势的一方会在等待两倍转发时延后变成Forwarding的DP端口, 相对劣势的一方等待两倍转发时延后变成discarding的Disable.
1.1.8 拓扑变更通知方式改变
传统STP通知拓扑变更
传统STP如果发现网络发生了变动, 则发现变化的设备, 需要通过根端口向上游相邻的设备发送TCN BPDU(拓扑变化提醒, type字段采用0x80)
相邻设备收到TCN BPDU后需要回复普通的配置BPDU(TC=1, TCA=1), 用于告知下游设备上游已经收到了TCN BPDU, 请停止发送TCN BPDU, 未收到回复BPDU时下游设备会持续发送TCN BPDU.
最后重复过程逐台上报至根桥.
根桥设备收到TCN BPDU之后, 发送TC=1的配置BPDU用于告知所有设备, 清空mac地址表(但不是立刻删除).
以上传统STP的拓扑变更通知方式效率肉眼可见的低, 需要自下而上+自上而下逐台进行确认和回复.
RSTP通知拓扑变更
RSTP检测拓扑变化的标准: 任何非边缘端口迁移到Forwarding状态.
在RSTP中, 如果发现了网络变化, 发现变化的设备直接发送配置BPDU(TC=1)的报文给整个二层网络中的非边缘端口, 并启动TC WhileTime定时器, 默认4s, 在该时间内设备会持续发送配置BPDU, 通知它们清空mac地址表(除了边缘端口学习到的mac地址和收到TC报文端口学习到的mac地址), 不再需要根桥来发送.
注: 传统STP的配置BPDU type字段是0x00, RSTP的配置BPDU type字段是0x02.
1.1.9 生成树保护功能
-
BPDU保护: 主要是针对边缘端口的, 如果EP被恶意发送了BPDU报文, 会导致EP丧失边缘属性, 导致网络震荡, 所以边缘端口开启BPDU防护能在收到BPDU报文时进入Error-down状态, 相当于被shundown(可以被undo shutdown再次打开), 需要认为重新关闭打开, 当然可以配置自动将error-down恢复:
auto recovery
-
根保护: 为了防止网络中出现意外导致根桥被抢占, 导致阻塞接口变化, 开启了根保护之后, 指定端口收到一个优先级更高的BPDU报文的时候, 会进入discarding状态, 阻止报文继续转发;
该端口进入discarding之后, 会等待两倍forwarding转发时延(15x2=30s), 如果该时间内没有收到更高优先级的报文, 则恢复forwarding, 否则继续保持discarding;
根保护只能在指定接口配置, 推荐在根桥的指定端口配置, 现实网络中使用的比较少;
-
环路保护: RSTP或者STP中, 阻塞端口是需要对端持续发送BPDU报文用于维持当前端口的阻塞状态. 如果收不到对端的报文, 则认为网络发生故障, 需要恢复该接口转发数据.
环路保护只能在根端口和AP端口上配置.
-
TC保护: TC报文是用于跟更新网络中的mac地址表的, TC保护就是为了防止用户恶意发送大量TC报文导致设备一直无法学习到稳定的mac地址, 开启TC保护之后, 在单位时间内设备可以处理的TC报文次数被限制, 默认情况下为1次/2s, 超出限制的其他TC报文则等待单位时间后统一处理一次.
1.2 RSTP的工作过程
其实就是PA机制, 都说了要耐心看完.
1.3 RSTP基本配置命令
-
开启rstp:
stp mode rstp
-
边缘端口开启命令:
interface g0/0/0 //指定该端口为边缘端口 stp edge-port enable quit stp bpdu-protection //表示直接对所有的边缘端口开启保护
其他命令不重要, 实战更多的是MSTP, 大多配置命令都会在MSTP里讲解
2 MSTP
MSTP(多生成树协议)继承了RSTP的所有改进, 在RSTP上添加了实例(Instance)的概念.
RSTP和STP存在的问题: 只有一个生成树, 所有设备共用一个生成树, 用户业务无法区分, 流量无法实现负载分担, 出现带宽浪费. 如果网关在两台不同的汇聚上配置, 则同一个生成树给所有Vlan服务.
MSTP可以将一个或多个Vlan映射到一个实例上, 通过控制多个实例, 然后基于不同实例生成不同的生成树, 实例之间的生成树计算互不影响.
2.1 MSTI
MSTI(Multtiple Spanning Tree Instance, 多生成树实例):
-
一个MST域内可以生成多颗生成树, 生成树都生成为一个MSTI.
-
MSTI使用instance ID标识, 华为设备取值为0-4094.LAN映射表:
-
MST域的属性, 描述VLAN和MSTI之间的映射关系.
-
如图所示MST Region 4的VLAN映射有:
- VLAN映射到MSTI 1;
- VLAN映射到MSTI 2;
- 其余VLAN映射到MSTI 3;
2.2 MSTP基本概念
端口角色
在RSTP的基础上添加了Master端口和域边缘端口.
MSTP在工作过程中, 会将二层网络划分成不同的域, 不同的域通过不同的域名标识, 一个域可以写成MST域.
同一个域内需要注意:
- 域名需要一致;
- 实例绑定关系需要一致.
不同域之间的实例关系可能不一样, 但大部分情况下只会接触到一个域.
MSTP报文
MSTP使用MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit, 多生成树桥协议数据单元)作为生成树计算的依据.
MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录.
2.3 MSTP配置
-
在现实网络中常用的还是MSTP, 使用设备默认是开启的MSTP
stp mode mstp //开启mstp stp enable
-
进入MSTP视图, 创建MSTP域和实例并绑定VLAN,
stp region-config //进入mstp配置界面 region-name goktech //所属域的域名为goktech instance 1 vlan 10 20 30 //创建实例1绑定vlan10 20 30 instance 2 vlan 40 50 60 revision-level 2 //该命令表示修改MSTP的修订版本, 在华为设备上无意义, 但是其他厂商需要一致. active region-config //表示上述配置的域名、实例绑定关系、修订版本激活生效. qu
- 如果不配置active则上面的配置都不会生效.
- 默认情况下所有vlan都属于实例0, 不建议对实例0操作
-
设置实例的主根桥/备份根桥, 设备优先级
stp instance 1 root primary //表示配置当前设备是MSTP实例1的主根桥,优先级自动设置为0 stp instance 2 root secondary //表示配置当前设备是MSTP实例2的备份根桥,优先级自动设置为4096 stp instance 1 priority 4096 //表示配置当前设备的MSTP实例1的优先级为4096
一般情况下,希望数据走哪一边,则那边的上层设备配置为root primary, 另外一边建议配置成root secondary.
3 总结
总结一下, 这章博客看下来你应该要学到:
- RSTP相较于传统STP的改变;
- MSTP相较于RSTP的多实例处理;
- MSTP的配置.
这篇博客其实在我学习当天就已经起草了, 但是碍于临近上学期的期末, 各种杂七杂八的事情都压了上来, 像我这种闲人都有点难顶, 总之还是把HCIP剩下的坑填了, 一些实验内容和实验报告我也会陆续跟进的.
本文来自博客园,作者:Qurare,严禁转载至CSDN平台, 其他转载请注明原文链接:https://www.cnblogs.com/konjac-wjh/p/17244677.html