二层环路的危害
- 广播风暴:一个终端发出去的包在网络里面无休止的传递着,如果终端一多,那整个网络资源都被广播报文给占用完毕 ,最终链路与设备性能被消耗完毕。
- 重复帧:服务器会不断的收到ARP的请求,然后进行回应,对于服务器来说这就是一种无形的消耗,服务器必须去处理它,另外PC2也会收到自己的ARP请求,需要去解封装读取,然后发现不是就丢弃,这样的情况波及整个VLAN内的终·端,也会造成资源耗尽的情况。
- MAC地址表震荡(漂移):从上面的MAC表分析的情况里看,PC2的MAC,主要在从不同接口收到包后,就会改版记录,而且最关键的PC2在办公区一交换机的E0/0/2口的,也变成了其他接口,这样来会的漂移导致地址表震动,消耗CPU的资源。
如何解决 二层环路问题:
既要冗余,又不能出现环路,从物理上保证链路冗余,从逻辑上端口某个接口。当网路中出现点点故障的时候,能够自动化地实现该端口进行数据转发。
STP 生成树协议(spanning tree protocol)
802.1d
找到那个需要 被逻辑关闭的端口
STP的概念
使网络中的冗余端口置于“阻塞状态”。
网络中标的计算机在通信中,只有一条链路生效
当这个链路故障出现时,将处于“阻塞状态”的端口重新打开,从而确保网络连接稳定可靠。
STP作用
消除环路,通过阻塞冗余链路消除网络中可能存在的网络通信环路。
链路备份,当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性。·
STP的操作
- 每个广播域选择一个根桥
- 每个非根桥上选择一个根端口。
- 每个段选择一个指定端口。
- 选择一个非指定端口。
STP基本概念介绍:
- 根桥(根交换机)(root bridge)生成树的 树根 —> 负责向全网转发BPDU。
- 非根桥(非根桥交换机) 网络中除了根桥之外的其他交换机。
- 根端口 RP(Root Port)----> 非根桥交换机 上选出的 端口,负责 接受 根桥的BPDU。
- 指定端口 DP(Design Port)----> 负责往外转发BPDU 的 端口。
- 替代端口 AP (Alternative Port)----> 选举出最后被剩下的端口并被阻塞,如果指定端口断开连接,则启用替代端口。
- **Root Bridge:**交换网络的逻辑中心,会根据网络变化而变化。
- **Bridge ID:**桥优先级(16bit)+MAC地址(48bit)。
- **Port ID:**端口优先级(4bit)+端口号(12bit)。
- **Root Path Cost:**端口到根桥的路径开销。
STP端口状态
- **Disabled:**禁用状态,端口状态为Down,不接收BPDU,不转发用户流量。
- **Blocking:**阻塞状态,阻塞端口的最终状态,接收并处理BPDU,不转发用户流量。
- **Listening:**侦听状态,接收并处理BPDU进行生成树角色选举,不转发用户流量。
- **Learning:**学习状态,接收并处理BPDU进行MAC地址学习,不转发用户流量防止临时环路。
- **Forwarding:**转发状态,根端口和指定端口的最终状态,既处理BPDU报文学习mac地址也转发用户流量。
阻塞状态 BLK 只能接收BPDU
监听状态 LSN 选举【接收和发送BPDU】 15s
学习状态 LRN 可以接收和发送BPDU 学习MAC地址 15s
转发状态 FWD 可以接收和发送BPDU 学习MAC地址 转发数据
STP与BPDU计时器
关于STP计时器的配置,只需要在根桥配置即可
- Message age :BPDU存活时间,根桥发送是为0,每经过一台交换机会增加1
- Max age:BPDU老化时间,默认是20s,最大40s。
- 如果Max age小于24s,每经过一台交换机Message age+1
- 如果Max age为24~39s,Message age+2
- 如果Max age为40s,Mssage age+3。
- 当Message age等于Max age,则认为该BPDU失效。
- Hello Time(2s):BPDU发送间隔,默认是2s
- **Forward Delay(15s):**Listening和Learning持续时间,保证拓扑变化消息传遍整个网络,防止临时环路。
STP 选举过程
1.选举一个根网桥
刚开始的时候,所有交换机都会认为自己是根桥,都会向外发出BPDU
在BDPU中 携带 BID 字段:包含 优先级 + 交换机的MAC地址, 先比较优先级,如果优先级相同,再去比较MAC地址(MAC地址是全网唯一的)
BID 越小越优先
华为设备:优先级4096 默认32768 优先级都是4096的倍数。最小为4096。
越小越优先
2. 在每个非根网桥上选举一个根端口
发生在交换机自己身上,在它所有的接口中选出一个根端口 根端口负责 接收来自于根桥的BPDU
- 根路径成本最小
- 跟路径成本相同,则比较 Sender-Bid(该接口对的交换机的BID)
- 如果 Sender Bid也相同,则比较 Sender PID
- 如果 Sender Pid也相同,则交换机比较 本地接口的 id 【local pid】
3.在每一段链路上选出 指定端口
指定端口:负责 转发 从 根端口接收到的 BPDU
- 根路径成本最小
- 如果根路径成本相同,则比较 所在交换机的网桥ID最小
- 如果 所在交换机的网桥ID 相同,则比较Sender-pid G0/0/4 和G0/0/5 选举指定端口。
4.选出所有的指定端口,剩下的端口都是阻塞端口
从逻辑上去掉所有的阻塞端口,就得到一个无环的树形的网络结构!
BPDU
网桥协议数据单元(BPDU,Bridge Protocol Data Unit)生成树协议是一种桥嵌套协议,在IEEE 802.1d规范里定义,可以用来消除桥回路。它的工作原理是这样的:生成树协议定义了一个数据包,叫做桥协议数据单元BPDU(Bridge Protocol Data Unit)。
- 每两秒发送一次二层的报文
- 组播发送,组播地址为 01-80-C2-00-00-00
STP每隔2s会发送一次BPDU报文,非根桥连续三次没有收到BPDU,表示发生故障
BPDU主要进行根桥、端口角色的选举和通知拓扑结构发生变化
BPDU报文
版本补充:VBST是华为私有协议,主要用于和思科交换机做兼容
根桥BID 等于桥ID,则认为自己是根桥
根桥ID 不等于桥ID,则认为交换机不是根桥
BPDU相关计时器
关于STP计时器的配置,只需要在根桥配置即可
Message age :BPDU存活时间,根桥发送是为0,每经过一台交换机会增加
Max age:BPDU老化时间,默认是20s,最大40s。
如果Max age小于24s,每经过一台交换机Message age+1
如果Max age为24~39s,Message age+2
如果Max age为40s,Mssage age+3。
当Message age等于Max age,则认为该BPDU失效。
Hello timer:BPDU发送间隔,默认是2s
Forwarding delay:等待延迟,默认是15s
拓扑变更STP机制
STP协议思维导图
此篇鸣谢: