一,STP要解决的问题是什么?
为了保障核心层交换机的高可用。一般做双上行链路,用作冗余备份。
但可能出现环路问题。会造成MCA地址表的不稳定,以及更严重的广播风暴问题。
用户在遇到广播风暴后会感觉网络越来越卡并在最后断网。广播风暴也会使设备无法被远程登陆
此时就要用生成树来解决二层环路问题,STP会在逻辑上阻塞一条链路,也可以在另外某条链路故障时打开,用作备用链路。
二,STP的过程?
1 在一个广播域中选择一个根桥设备。桥ID最小的成为根桥。
也可以修改优先级来实现,要求优先级修改为4096的倍数。
桥ID=优先级+MAC地址
优先级默认32768
2 在每个非根交换机上选举一个根端口(RootPort)。到根桥设备的开销cost最小的端口为根端口RP
华为交换机默认1G链路开销是20000
当一个设备的两个端口到达根桥设备的cost相同时,则比较对端设备的桥ID,选择小的做根端口
例如在下图中,根桥设备为SW1,此时SW4的两个端口到根桥的开销一样,那么就比较左右端口的对端设备,也就是SW2和SW3的桥ID大小,选择小的做RP
还有种特殊情况:
SW4的1口和2口,该怎么选RP呢?
此时就需要比较对端的端口ID(Port ID) ,选择小的。端口ID(PID)=优先级+端口编号
优先级默认128.
3 每条链路选择一个指定端口(Designated Port)。链路上有根端口时,选非根端口作为指定端口(DP)。
如果没有,则比较各自到达根桥的开销cost。所以根桥上的端口一定是指定端口,因为到达根桥设备的cost为0.
如果cost相同,则比较各自的桥ID(BID),选择小的为指定端口(DP)
4 其他端口为阻塞端口(AP)。
三 怎么去直观的理解这个过程?
发波对冲,这个波就是BPDU
BPDU:桥协议数据单元,一种二层的组播,每2s发送一次,20s超时
由DP发向RP
四 ,五种端口状态是什么?
Disabled:关闭状态
Blocking: 阻塞状态
Forwarding:转发状态
Listening:监听状态 监听拓扑变化TC(Topology Change),如发生拓扑变化,则需要重新选举 15s延时
Learning:学习状态 重新选举之后进入学习状态,先学习MAC表,避免太多泛洪 15s延时
最后进入转发状态
五,阻塞端口什么时候能打开?
端口变化是秒变的(比如AP端口变DP端口),但状态变化需要时间(比如从Listening变道Forwarding)
一个阻塞端口被重选举为根端口时,需要先进入监听状态稳定15s,然后再进入学习状态稳定15s
之后进入转发状态。也即原RP故障后,原AP需要30s之后才能打开使用。
举例:当故障点发生在C设备的RP端口时,阻塞端口(C设备的G0/0/2口)此时被选举为新的根端口(RP)。从故障发生到新RP端口投入使用需要30s的时间。
而当故障点发生在B设备上的RP时,B发给C的BPDU不再是根桥BPDU,C等待根桥BPDU等待了20s没等到,于是发生超时。超时后C就知道B出故障了。于是进行重新选举,此时阻塞端口被选举为指定端口(DP)。这种情况下从故障到转发一共需要50s。
网络架构:核心层 汇聚层 接入层
根桥放在核心层
流量一定都经过根设备吗?
不一定
一 ,STP的不足点在哪里?
STP从初始状态到完全收敛至少经过30s,时间太长。
STP为了破环,避免临时环路,必须等待足够长的时间(即确保BPDU能同步发送到全网各节点)确保全网的端口状态全部确定,才能进入转发。
在STP进入转发前还需根据收到的用户流量构建MAC地址表,仍需等待计时器超时才能进入转发。
还有种情况如下图:STP中连接终端的链路也要进行生成树计算且链路进入转发时间需要等待两个Forword Delay。
而事实上,该端口下链接的只要是终端设备就不会出现环路,即没有必要进行STP计算和等待计时器超时。
另外 ,存在拓扑变更机制
先由变更点朝根桥方向发送TCN消息,收到该消息的上有交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知删除桥MAC地址表项,机制复杂,效率低下。
*配置BPDU 一般情况都会出现
*TCN (Topology Change Notification)(拓扑更改通知 )BPDU 在拓扑变更时才出现
STP的Flags位只有Bit7位和Bit0位有用
其中,TCA是拓扑变更确认