生成树出现的背景
二层网络组网需要冗余链路保障可靠性
--拓扑环了
--交换机BUM-泛洪
(环路出现的原因)
--导致环路的出现
环路的影响
1.广播风暴
2.mac地址表震荡(漂移)
解决环路问题
--生成树
--smart link
原理?
--通过阻塞端口来防止环路,并实现链路的冗余
作用
1.无环
2.提高网络的可靠性
生成树
---协议族
版本
Stp --生成树
Rstp--快速生成树
Mstp--多生成树 (现网)
二层环路和三层环路
STP的基本概念
1.根桥 root
根桥就相当于生成树树根,是生成树逻辑的中心
2.桥 ID ---BID
作用:用于选举根桥,先比较优先级,再比较mac地址
BID=桥优先级+MAC地址 ↓
优先级 --32768 步长4096
3.根端口
Root port /rp
--去往根桥的最优(短)的端口
在非根交换机上选举,有且仅只有一个
4.cost --开销值
5.根路径开销 RPC
---去往根桥的累计开销(只累计出接口)
6.BPDU 报文---是生成树的协议报文
(直白---只要生成树发出的报文--都叫BPDU报文)
分类
1.配置BPDU
2.TCN置位的BPDU--拓扑改变通知报文
Bpdu type:
1.配置bpdu 0x00 ---用于stp的收敛
2.tcn bpdu 0x80---拓扑改变通知报文
flags位 --8bit --stp只用到了
最高位 TCA位 --对TCN的确认
最低位TC位 --用来通知交换机清空mac地址表 ---?
Root id --根桥的BID
BID --自己的BID
计时器
Message age --消息年龄 刚发出时 0 , 没经过一次转发+1 加到20丢弃
Max age --bpdu报文的老化时间 20s
Hello time --周期性发送HELLO报文的时间 默认2s
Forward delay--转发延迟 15s
7.PID --port ID
接口优先级+端口号
默认128 步长16
生成树的工作原理
一、选举根桥
根桥---作为生成树的逻辑的中心
依据--BID ↓
二、选举根端口
根端口--非根交换机上去往根桥的最优路径(端口)
必须在非根交换机上
有且仅只有一个
依据:根路径开销、对端的BID、对端的PID、本端的PID
场景1--比较根路径开销的场景
场景2--比较对端的BID
场景3--比较对端的PID
场景4--比较本端的PID
三、选举指定端口
指定端口--向链路内转发BPDU报文的端口
基于链路选举--(一段链路选一个)
依据:
1.根路径开销--站在交换机的角度
2.本端的BID
3.本端的PID
四、阻塞预备端口
什么都没有被选上的端口--预备端口AP--阻塞--如S3的E2口
思考
阻塞端口什么报文都不接收吗?
--AP--周期性接收BPDU报文--不接收用户的业务数据
工作原理--选举过程-宏观
生成树的状态---防止临时环路
=----伴随着选举过程 接口状态不断变化
工作原理--选举+接口状态的变化
Disable--生成树刚运行 还未初始化
↓
blocking --生成树初始化,开始工作--选举根桥、选举RP/DP
↓ ---一旦被选为RP/DP
Listening--侦听状态,此时端口已经被选举为RP/DP
↓ --15s --forward delay
Learning--学习状态,此时开始学习mac地址
↓ --15s
Forwarding --转发状态,学习mac/转发用户数据
STP从初始化到完成收敛 至少需要30s(两个转发时延)
配置BPDU报文的发送
1.网络收敛前--为了选举,为了收敛
2.网络收敛后--只有根桥以2s的周期发送BPDU--维护网络状态
TCN BPDU--拓扑改变通知报文
变更点向外发送TCN 报文
拓扑变化
1.根桥故障(设备和链路物理状态UP)
--- 需要20s+30s 的时间 网络才能恢复正常
a.s1根桥故障,停止发送BPDU报文
b.S2/3收到的S1的配置BPDU都老化(20s),意识到根桥故障
c.S2和S3互相发送配置BPDU,要求重新选举根桥,RP,DP --30s
2.直连链路故障
场景--交换机有阻塞端口,此时RP端口故障的场景 ---2号链路故障
a.S3感知到E1故障,重新选举RP口
b.ap--rp--forwarding--30s
30s网络恢复正常
3.非直连链路故障
场景--交换机没有阻塞端口,此时RP故障的场景--S2的1号链路故障
a.S2感知到E1-RP口故障--发送配置的BPDU(根桥S2)给S3要求重新选举根桥
b.s3能从RP-e1口收到更优的BPDU(根桥s1),所以忽略a步的报文
c.s3的ap口收到的以S1为根的BPDU老化,意识到上游网络有变
d.S3将收到的S1为根的BPDU报文,转发给S2--角色变换 S2-E2--AP--DP
e.s2收到更优的BPDU(S1),转换端口角色 S2-E2-DP-RP
端口角色转变--需要30s(blocking--forwarding)
需要20s+30s网络恢复正常
拓扑改变会导致mac表错误
解决方法
TCN--拓扑改变通知报文
TCA位 --对TCN的确认
TC位--由根桥发出,通知其他交换机清空mac地址表
机制
变更点发送TCN--上游响应TCA;往根桥的方向继续发送TCN--根桥泛洪TC报文
效率低下,机制复杂
配置注意点
1.规划根桥的位置
a.调整优先级
b.手工强制指定某台设备作为根桥
2.规划阻塞端口的位置
a.修改cost值实现
b.接口优先级
思路
1.启动stp //stp enable 默认开启,运行的是mstp
2.修改版本 //stp mode stp
3.确定根桥 //stp root primary --强制指定根桥 //stp pri xxx --修改优先级
4.关注阻塞端口 位置是否合适 //stp cost xx (接口下:)stp pri xx
5.验证 dis stp bri 查看接口状态
rstp对stp的改进
Stp--收敛时间 30s-50s
Rstp--快速生成树
采用了新的收敛算法P/A算法--秒级
1.状态
Stp--disable/blocking/listening/learning/forwarding
前三个状态--不学习 不转发
rstp的优化
将stp的前三个状态合成一个--discarding--learning-forwarding
2.端口角色的变化
Stp --DP RP AP
RSTP --新增了BP作为DP的备份 AP作为RP口的备份
新增了边缘端口--EP
---连接终端的接口可以配置为EP端口
特点
1.一旦UP 不经历时延 就可以进入转发状态
2.UP/down不触发TC报文
3.收到TC报文不处理(不删除EP接口对应的MAC地址表)
4.不能收到BPDU报文,一旦接收,就丧失边缘端口的属性,变成一个普通的生成树端口,参与到生成树的运算中来
3.配置BPDU发送机制变化
stp:收敛前--所有设备都发送
收敛后--只有root 以2s周期发送
rstp:收敛前/后--所有设备都发送
4.bpdu报文变化
Stp--类型--配置BPDU;TCN置位的BPDU
Rstp--类型--配置BPDU 去掉TCN的BPDU
5.拓扑处理机制
拓扑改变会导致mac表的错误
Stp ---变更点TCN--上游响应TCA;继续往根桥的方向发送TCN--根桥收到TCN,泛洪TC
Rstp--变更点泛洪TC
stp、Rstp ---都属于单生成树
单生成树的弊端
1.部分vlan路径不通
2.无法实现负载分担
3.次优的二层路径
MSTP--多生成树
RSTP
stp的不足
一、端口状态
Stp--disable/blocking/listening/learning/forwarding
前三个状态--不学习 不转发
rstp的优化
将stp的前三个状态合成一个--discarding--learning-forwarding
二、防环的实现
STP--采用被动等待计时器超时的方式来防止环路
DP/RP--从blocking切换至listening状态
↓ -停留15s --确定AP端口角色
learning
↓ -停留15s--学习mac地址
forwarding
-----STP从初始化到完成收敛至少需要 30s
RSTP--采用P/A机制来防止环路
RSTP从初始化到完成收敛在秒级内完成
三、端口角色
STP的端口角色--RP-DP-AP
RSTP的优化
--新增了AP/BP
AP--RP的备份
BP--DP的备份
--新增了EP端口--边缘端口
---连接终端的接口可以配置为EP端口
特点
1.一旦UP 不经历时延 就可以进入转发状态
2.UP/down不触发TC报文
3.收到TC报文不处理(不删除EP接口对应的MAC地址表)
4.不能收到BPDU报文,一旦接收,就丧失边缘端口的属性,变成一个普通的生成树端口,参与到生成树的运算中来
四、拓扑变更
STP
场景一:根桥故障
20s+30s---50s网络恢复正常转发
场景二:直连链路故障----交换机有阻塞端口,此时RP端口故障的场景
30s RP故障,设备重新在剩余的接口中选出一个新的RP,新的RP--进入for 需要30s
场景三:非直连链路故障---交换机没有阻塞端口,此时RP端口故障的场景
20s+30s
a.S2感知到E1-RP口故障--发送配置的BPDU(根桥S2)给S3要求重新选举根桥
b.s3能从RP-e1口收到更优的BPDU(根桥s1),所以忽略a步的报文
c.s3的ap口收到的以S1为根的BPDU老化,意识到上游网络有变
d.S3将收到的S1为根的BPDU报文,转发给S2--角色变换 S2-E2--AP--DP
e.s2收到更优的BPDU(S1),转换端口角色 S2-E2-DP-RP
端口角色转变--需要30s(blocking--forwarding)
---问题的存在:S3收到次优的BPDU,忽略
RSTP
场景一:根桥故障
情况一:根桥直接down --其他设备直接感知--重新收敛--秒级内
情况二:根桥故障-设备没有down--链路没有down--其他设备3*Hello时间内没有收到根桥的BPDU,认为根桥故障,重新收敛--6S
场景二:直连链路故障----交换机有阻塞端口,此时RP端口故障的场景
秒级内 RP故障,AP口转换为RP口,P/A--进入for
场景三:非直连链路故障---交换机没有阻塞端口,此时RP端口故障的场景
秒级内
--优化:RSTP收到次优的BPDU,转发更优的BPDU给设备
五、拓扑变更的处理机制
STP
变更点发送TCN---上游响应TCA;继续往根桥方向发送TCN---根桥泛洪TC--通知其他交换机清空MAC地址表
--机制复杂,效率低下
RSTP的优化
变更点泛洪TC--其他交换机收到TC报文,清除MAC地址表(除EP和收到TC报文的端口)
六、配置BPDU的变化
STP --FLAG位 8bit 最高位TCA 最低位TC
RSTP
七、配置BPDU的处理
1、配置BPDU的发送
STP
收敛前:所有设备都发送--为了选举,为了收敛
收敛后:只有根桥以2s的周期发送BPDU --维护网络状态
2.配置BPDU的超时
固定 --20s
3.次优BPDU的处理方式
--忽略
RSTP
1.配置的BPDU的发送
收敛前:所有设备都发送--为了选举,为了收敛
收敛后:所有设备都以2s的周末发送BPDU
2.配置BPDU的超时时间
--20s
更短的BPDU超时时间
--3*hello时间--没有收到上游发送的hello报文,认为上游设备故障
3.次优BPDU的处理
--转发更优的BPDU给邻居
RSTP的快速收敛机制
1.端口快速切换
DP--BP RP--AP
2.EP
3.P/A机制
---p --请求转发
---同步----
---A--同意转发
Pro--同步--agr ----主动防环--快速收敛
八、RSTP的新增保护功能
1.BPDU保护
--跟EP端口有关
没有配置BPDU保护
EP端口收到BPDU --丧失边缘端口属性,变化一个普通的rstp的端口,参与到生成树运算中来---可能会造成网络的震荡(可能是恶意换成交换机)
配置BPDU保护
EP端口收到BPDU--边缘端口的属性,接口直接被error-down,并发出告警。默认只有管理员手动恢复
2.根保护
3.环路保护
4.TC-bpdu保护
配置
思路
1.启动stp //stp enable 默认开启,运行的是mstp
2.修改版本 //stp mode Rstp
3.确定根桥 //stp root primary --强制指定根桥 //stp pri xxx --修改优先级
4.关注阻塞端口 位置是否合适 //stp cost xx (接口下:)stp pri xx
5.配置边缘端口 //接口下 stp edge-port enable
6.配置保护功能
7.验证 dis stp bri 查看接口状态
MSTP协议
STP 和RSTP都属于单生成树
基本概念
1.域
2.生成树实例
3.cst
4.ist
5.cist
Cst+IST
6.SST 单生成树
7.
8.端口角色