STP(Spanning Tree Protocol)即IEEE 802.1D,其作用主要有三个,第一是eliminate logical loops消除逻辑环,第二自动选取最有效的网络路径,第三是当某条链路失效时,自动切换到备份链路,实现所谓的failover功能。STP协议有很多种类,可分为STP(802.1D)、RSTP(802.1W)、MSTP(802.1S)、PVST/PVST+ PVRST/PVRST+。STP的基本原理是通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称 BPDU),来确定网络的拓扑结构。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
1.首先链路up。 2.初始为blocking状态,在迁移到Listening状态时决定谁是RP和DP。 3.Listening状态需要等15秒进入到Learning状态(确定端口角色)。 4.Learning状态再等15秒进到Forwarding(学习MAC表项)。 5.最终达到Forwarding状态,STP完成收敛。 也就是说当使用标准生成树时,现网当中启用新端口,会存在30S的监听+学习时间,这30S时间中,端口是不转发任何数据的。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
1.首先选举根桥ROOT。 2.每个非根交换机选举根端口RP。 3.每条链路选举出一个指定端口DP。 4.剩余端口为AP端口(阻塞)。
1.首先选举root(根桥),通过BID进行选举,BID由优先级与桥MAC组成。2字节桥优先级,6字节MAC地址(6*8=48bit) 。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
Root根桥选后之后进行 Root Port根端口选举。每个非根交换机都要选择一个根端口,用来接收ROOT根桥的BPDU。 选举规则: 1.RPC根路径开销(跟链路带宽有直接关系)。(越小越优) 2.比较发送者的桥ID(BID,由优先级与桥MAC组成)。(越小越优) 3.比较发送者的端口ID(PID,由优先级与端口号组成)。(越小越优) 4.比较接受者的端口ID(PID,由优先级与端口号组成)。(越小越优)
举例: 1.下图可以看出,SW4需要选举RP端口,但是去往根桥无论是通过SW2还是SW3,路径开销都是一致的,只能比较发送者BID,最终SW2这条链路更优秀,SW4的E0/0选举为RP。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
2.SW5需要选举RP,可以看出RPC和BID都是一致的,通过发送者PID进行选举,很明显SW3 E0/3这条链路更优,SW5 E0/1端口被选举为RP端口。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
3.SW6需要选举RP,在链路上的这个HUB2可以看做是将一根线劈成两半,RPC和BID是一致的,发送者PID是E1/1,只能通过接收者PID进行选举,SW6 E0/0选举为RP。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
在STP中,选完RP端口后下一步选举 指定端口DP。每条链路都会选举一个DP,一条链路中,离ROOT根桥交换机最近的就是DP。 选举规则: 1.RPC根路径开销(跟链路带宽有直接关系)。(越小越优) 2.发送者的桥 ID(BID,由优先级与桥MAC组成)。(越小越优) 3.发送者的端口ID(PID,由优先级与端口号组成)。(越小越优)
最后是选择AP端口,AP端口是RP端口备份。端口被选举为AP后,端口将会被阻塞,从而达到破环的目的,在这个过程中,端口只会监听BPDU,不会中继BPDU,更不会转发业务流量。 选举规则: 如果一个端口在一条链路上收到另外一个网桥的更好的 BPDU,但不是最好的,那么这个端口成为替换端口。
BPDU报文共有两种类型:配置BPDU与TCN BPDU。一般情况下,配置BPDU是根桥发送给各个桥的报文;而TCN BPDU是当网络拓扑中的桥发现网络拓扑发生变化时,向根桥发送的报文。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
字段 |
描述 |
---|---|
Protocol Identifier(协议ID) |
生成树协议ID,总是为0 |
protocol version Identifier(协议版本号) |
用于描述当前使用的协议版本号:STP(802.1D)传统生成树,值为0;RSTP(802.1W)快速生成树,值为2;MSTP(802.1S)多生成树,值为3; |
BPDU Type(BPDU类型) |
用于描述当前BPDU消息类型:配置BPDU类型0x00,用于建立、维护STP拓扑;TCN BPDU类型0x80,传达拓扑变更消息;RSTP/MSTP类型0x02; |
BPDU Flags(BPDU标志位) |
由8位组成,只使用最高位和最低位,其余6位保留。最低位=TC(Topology Change,拓扑变化)标志,最高位=TCA(Topology Change Acknowledgement,拓扑变化确认)标志 |
Root Identifier(根ID) |
用于描述当前的根桥ID,由2字节的桥优先级+6字节的MAC地址组成。 |
Root Path Cost(根路径开销) |
用于描述发送该BPDU报文的端口累计到根桥的开销 |
Bridge Identifier(桥ID) |
用于描述发送该BPDU的桥ID,由2字节的桥优先级+6字节的MAC地址组成。 |
Port Identifier(端口ID) |
由优先级+端口号组成。指示发送该BPDU报文的端口ID,即“发送端口ID”。 |
Message Age(消息生存时间) |
指示该BPDU报文的生存时间,即端口保存BPDU的最长时间,过期后将删除,要在这个时间内转发才有效,如果配置BPDU是直接来自根桥的,则Message Age为0,如果是其他桥转发的,则配置BPDU报文经过一个桥,Message Age增加1 |
MAX age(最大生存时间) |
指示BPDU消息的最大生存时间,也即老化时间 |
Hello Time(Hello消息定时器) |
指示发送两个相邻BPDU的时间间隔,根桥通过不断发送STP维持自己的地位,Hello time 是发送的间隔时间 |
Forward Delay(转发延时) |
最大延迟时间,默认15s,端口从listening -> learning 或 learning -> forwarding 的转态需要时间。 |
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
TCN示例: 1.当拓扑发生变化时,交换机首先会发送一个TCN BPDU来通告根桥。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
2.根桥会首先回复一个TCA,表明我已经收到了你发送的TCN通告。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
3.ROOT根桥向全网泛洪TC=1的配置BPDU,持续35秒(20+15 maxage+forwarddelay)
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
4.交换机在收到TC=1的这35S内,所有的交换机的老化时间保持为15秒,直到收到tc=0的配置BPDU后,重新将mac老化时间修改为300。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
PortFast是为了让接入的非交换机设备快速进入转发(Forwarding)状态。假如一台Server接入到了交换机,与交换机连接的是Server的网卡,这个接入是不会改变交换机的STP拓扑的。但默认情况下,接入Server或Server有重启等操作后,端口都要再次经历Blocking–Listening–Learning–Forwarding这个过程,这对于网卡设备是没有必要的,所以Cisco交换机可以开始PortFast功能,跳过Listening和Learning,直接进入Forwarding状态,这可以使服务器网络快速上线。 开启了PortFast的端口,如果检测到接入的是一台Switch,就会按正常的顺序走Listening–Learning–Forwarding的过程,如果检测到是非交换机,就会让端口快速进入Forwarding状态。
如下图,当S3的RP端口失效时,E0/1接口将从AP-RP,状态需要经历listening-learning,最少30秒才能进入到转发状态,当开启uplinkfast后,立即切换成Forwarding状态,跳过延时。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
Root Guard可以使STP免受Bridge Priority小的新接入的Switch抢了现有根桥的位置,也就是防止更优的BPDU抢占ROOT。开启后,当有一个新接入的交换机的Bridge Priority比现有根桥小时,这个端口会被置于Root Inconsistent状态,它会被Block掉而不会转发和接收任何数据。
在默认情况下,STP的收敛时间为30S(Listening+learning各15S),在某些场景下,收敛时间更是长达50S(例如根桥故障,不向外发送BPDU,交换机需要先等待20S的老化时间,再加上30S的Listening+learning),在这个时间段内,会导致网络长时间的中断。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
想象一种场景,当企业上下班时间,每个员工将自己的PC进行开关机的操作,现网当中就会出现大量的TCN BPDU,影响设备的性能,而这种PC机器其实不需要参加到生成树计算当中。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
Rapid Spanning Tree Protocol(RSTP),快速生成树协议,是传统Spanning Tree Protocol的升级版本,由802.1D进化为802.1W。传统STP的收敛时间(Convergence Time)太慢,当有拓扑发生变化,整个网络需要30秒或更多时间才能恢复到稳定状态,这是许多业务场景上无法接受的,RSTP的出现就是为了缩短收敛时间(Convergence Time),以适应更严苛的使用环境的需求。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
相比STP来说,RSTP只有根端口、替代端口、备份端口。
备注:在一些资料中,也有把edge port边缘端口当做一类端口角色,但我个人认为这只是RSTP的一种特性,因为从交换机的角色role里面,没有一种角色叫做边缘端口角色,个人认为只能称之为RSTP的一种特性或者叫状态。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
相比stp来说,RSTP只有转发(Forwarding)、丢弃(discarding)、学习(learning)。
端口状态 |
说明 |
---|---|
Forwarding(转发) |
在这种状态下,端口既转发用户流量又处理BPDU报文。 |
Learning(学习) |
这是一种过渡状态。在Learning下,交换设备会根据收到的用户流量,构建MAC地址表,但不转发用户流量,所以叫做学习状态。Learning状态的端口处理BPDU报文,不转发用户流量。 |
Discarding(丢弃) |
Discarding状态的端口只接收BPDU报文。 |
RSTP相比STP来说,STP有两种类型的报文格式:配置BPDU和TCN BPDU。而RSTP只有RST BPDU一种,与STP的格式基本一致,最大的变化在于BPDU flags字段做出改变,在STP的FLAG标记中只用了TCA和TC,而RSTP中原先空余的6位全部有了新的定义。
以下为STP报文:
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
以下为RSTP报文:
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
字段 |
作用 |
---|---|
TCA |
保留但无用,因为在RSTP中并没有TCN BPDU,取值永远为0 |
Agreement |
PA机制中的同意位 |
Forwarding |
Forwarding标志位,表示端口处Forwarding状态 |
Learning |
Learning标志位,表示端口处于Learning状态 |
Port role |
角色位2bit组成 ,有四种组合。00 :未定义;01:AP/BP 替代端口/备份端口;10:RP根端口;11:DP指定端口 |
Proposal |
PA机制中的提议位 |
TC |
RSTP中的拓扑改变通知 |
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
P/A机制正是解决STP中缺少反馈的这个问题而出现的,P/A协商可以让交换机的RP和DP的互联接口快速进入转发状态。 端口角色: P0=指定端口; P1=根端口; P2=替代端口; P3=指定端口; P4=边缘端口;
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
1.什么场景发送Proposal置位的RST BPDU? 处在Discarding或者Learning的DP口就会发送p=1的rst bpdu 2.什么场景响应Proposal置位的RST BPDU?谁响应谁? 只有RP端口角色才会响应P=1的RST BPDU 3.什么是SYNC同步 SYNC同步的作用就是把DP的Forwarding状态临时性的变为Discarding.先临时性的避免出现环路。AP端口本来堵塞,EP端口不参与生成树计算接是终端也不会出环,只有DP Forwarding端口转发才可能出环。.
拓扑:
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
1.两台交换机加电以后,开始交互BPDU,SW2收到更优的BPDU后,会马上停止发送BPDU。 2.SW1的e0/0端口进入Discarding状态,发送RST BPDU中把Proposal置1.
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
3.SW2 在收到proposal置位的BPDU时,开始将自己的所有端口进行SYNC同步。 4.在所有端口都进入Discarding状态之后,SW2向SW1发送agreement置位的BPDU。
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!
5.SW1在收到回应以后,端口立马从Discarding转变为Forwarding状态。
MSTP有三个参数,当三要素相同时,才认为是同一个域:
STP、RSTP、MSTP分别是什么?三者有啥区别?一文带你了解!