二层环路带来的问题:
广播风暴和MAC地址漂移
STP基本概念
桥ID
桥ID(Bridge ID,BID)
桥ID是由桥优先级和桥MAC地址构成。
每一台运行STP的交换机拥有一个唯一的BID。
桥优先级必须是4096的倍数,优先级相同,比较MAC地址。
根桥
STP的主要作用之一是在整个交换网络中计算出一科无环的“树”(STP树)。
根桥是一个STP交换网络中的“树根”。
桥ID最小的设备会被选举为根桥。
桥ID包括优先级和MAC地址
一般情况,根桥上面的端口都是指定端口
cost
开销。
接口的cost主要用于计算根路径开销,也就是到达根的开销。
接口带宽越大,则cost值越大。
RPC
根路径开销。
根桥的根路径开销是0。
Port ID
接口ID。
由接口优先级和接口编号组成。
接口优先级取值范围是0到240,步长为16,取值是16的整数倍。缺省情况下,端口优先级是128。
BPDU
网桥协议数据单元。
BPDU有两种类型:配置BPDU和TCN BPDU。
配置BPDU的报文格式:
PID:协议ID,对于STP而言,永远都是0
PVI:协议版本ID,STP是0,RSTP是2,MSTP是3
BPDU Type:本BPDU的类型,0x00,表示为配置BPDU;值为0x80,则为TCN BPDU。
Flags:标志,STP只使用了该字段的最高和最低两个比特位,最低是TC(拓扑变更)标志,最高为是TCA(拓扑变更确认)标志。
Root ID:根网桥的桥ID
RPC:根路径开销
Bridge ID:BPDU发送桥的ID
Port ID:BPDU发送网桥的接口ID(优先级+接口号)
Message Age: 消息寿命,从根网桥发出BPDU之后的秒数,每经过一个网桥都减1,本质是到达根桥的跳数,默认15。
Max Age:最大寿命,当一段时间没收到任何BPDU,网桥认为该接口连接的链路发生故障,默认为20S。
Hello Time:根网桥发送的BPDU的时间间隔,默认2S。
Forward Delay:转发延迟,在侦听和学习这两个状态停留的时间间隔,分别为15S。
STP按照以下顺序选择最优的配置BPDU:
BPDU只能由根桥发送
BPDU只能送DP口发出去
1、最小的根桥ID;
2、最小的RPC;
3、最小的桥ID;
4、最小的接口ID
STP操作:
1、选举一个根桥;
2、每个非根交换机选举一个根端口;
3、每个链路选举一个指定端口;
4、阻塞非根、非指定端口
STP选举:
根据BPDU格式来选举:
1、根桥ID
2、RPC根路径开销
3、发送者桥ID(优先级+MAC地址)
4、发送者的端口ID(端口优先级+端口编号)
RPC:根路径开销(COST值)
BID:Bridge ID(桥ID,由交换机优先级和MAC地址组成)
PID:Port-ID(端口ID,抓包看,或者接口编号)
STP状态:
状态名称 |
状态描述 |
禁用(Disable) |
接口未启用,down状态。该接口不能收发BPDU,也不能收发业务数据帧。 |
阻塞(Blocking) |
该接口被STP阻塞,阻塞端口。不能接收BPDU和收发业务数据帧,也不会进行MAC地址学习但会侦听BPDU。 |
侦听(Listening) |
根端口或指定端口。接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习。 |
学习(Learning) |
会侦听业务数据帧(但不能转发),可以收发BPDU,并且在收到业务数据帧后进行MAC地址学习。 |
转发(Forwarding) |
可以正常的收发业务数据帧,也会处理BPDU。需要端口角色是根端口或指定接口才能进入转发状态。 |
STP接口从禁用或down状态进入到转发状态要经过30S(侦听15S+学习15S)。
STP接口的状态迁移
1、接口刚激活时,所有接口角色为DP指定端口,状态为阻塞状态;
2、接口被选举为根接口或指定接口,自动进入侦听状态,在侦听状态会停留15秒(转发时延);
3、15秒过后会进入学习状态,在学习状态依然会停留15秒(转发时延);
4、然后进入转发状态。
为什么要停留30S进入转发状态?
因为交互BPDU,选举端口角色需要时间,如果不停留此时间,当交换机泛洪广播报文,此时容易造成环路。
STP拓扑故障
直连链路故障
当某台交换机检测到根端口的链路发生故障,则其备用端口会经过30S的转发时延进入流量转发状态。
非直连链路故障
在非直连故障中,某台交换机所在的根端口链路不知道此链路发生故障,所以就收不到BPDU报文,Max Age计时器(缺省20S),就会超时。超时之后,交换机就认为自己是根桥,发送BPDU,然后就会从原来的阻塞端口变为转发端口(两倍的转发Forword Delay30S),所以非直连链路故障,收敛时间为20+30S等于50S。
根桥故障
根桥故障后,下游交换机收不到BPDU,Max Age计时器超时20S。然后下游交换机就认为自己是根桥,与其他交换机相互比较,之后,原来的阻塞端口变为转发端口,经过30S,所以根桥故障会导致50S的故障时间。
拓扑变更带来的MAC地址表错误
如果某台交换机发生故障,会改变端口角色,就会导致原来学习到MAC地址表中,所在链路的端口故障,从而导致MAC地址表的转发端口,转发不出去。但MAC地址表的老化时间是300S,时间太长。
1、那么当拓扑变更后,下游交换机感知到,会向上游发送TCN BPDU报文。(TCN拓扑变更告警)
2、 上游收到后会回应TCA置位1的配置BPDU,告知下游交换机停止发送TCN BPDU报文。
3、由其他上游设备再向根桥转发TCN BPDU报文
4、最后根桥收到TCN BPDU报文后,在15S内会不断的发送BPDU报文中的Flags的TC位置为1后发送,通知下游交换机收到后把所有MAC地址的老化时间改为15S,15S之后重新学习MAC地址。15S内不断发送,是为了让每个交换机都能统一的收到,防止有些交换机因传输距离过远导致没有收到。