常用的生成树协议:STP(Spanning Tree Protocol)由IEEE802.1D定义,RSTP(Rapidly Spanning Tree Protocol)由IEEE802.1W定义,MSTP(Multiple Spanning Tree Protocol)由IEEE802.1S定义。
生成树严格意义上来讲属于应用层的东西,但是是为了解决二层的广播风暴问题,所以也可以看成是二层的东西。
STP
STP生成树计算原则:
1.确定环路中的根桥。
根桥由BID(bridge ID)来确定(BID=2字节的网桥优先级+网桥的MAC地址构成,优先级默认为32768),具备最小的BID的交换机成为根桥。
2.确定根端口。
根端口选举原则是确定非根桥到根桥最小开销的端口。(Root path cost).一般情况下,接口带宽越大则开销值越小。
选举原则:a.比较Root Path Cost(根路径开销),越小越优先,一样则
b.端口上行交换机的Bridge ID(桥ID),越小越优先,一样则
c.端口上行端口的Port Identifier,越小越优先(端口标识,端口标识号由1字节优先级+1字节端口号构成)
3.确定指定端口。
为每个网段选出一个指定端口(Designated Port),指定端口为每个网段转发发往根交换机方向的数据,且转发由根交换机方向发往该网段的数据。
选举原则:a.比较Root Path Cost(根路径开销),越小越优先,相同则
b.端口所属Bridge ID,越小越优先,相同则
c.端口的Port ID。
4.确定阻塞端口。
环路中剩下的端口成为阻塞端口(Alternate Port),当指定端口有问题,就启用阻塞端口。
数据的转发路径:由下级非根交换机的指定端口到上级非根交换机的根端口,一直到根交换机的指定端口。(这样就可以避免环路)
STP端口状态描述
状态数据帧MAC 生成树计算BPDU
收发Disable No No No No No
Blocking No No No Yes No Listening No No Yes Yes Yes
STP 有关的时间:
Hello 2S,Max Age 20S,Forward Delay 15 S.
从Listening 到Learning 要经过一个Forward Delay ,从Learning 到Forwarding 要经过一个Forward Delay 。
完全收敛(30~50s)
STP BPDU 帧格式:
BPDU 封装在802.3的LLC 格式以太帧中,BPDU 只在指定端口上发送。
DMAC
SMAC Length Data FCS
DMAC :目的MAC 地址。使用了保留的组播MAC 地址01-80-c2-00-00-00,此地址标识所有交换机,但不能被交换机转发,也就是说只在本地链路有效。
Data 包括:
DSAP SSAP Control BPDU
| LLC |
DSAP :01000010 ,0x42
SSAP: 01000010,0x42
Control:3.
BPDU 包括:
2B Protocol Identifier 0x0000
1B Protocol Version Identifier 0x00
1B BPDU Type 0x00
1B Flags 0x00
8B Root Identifier
4B Root Path Cost
8B Bridge Identifier
2B Port Identifier Learning
No Yes Yes Yes Yes Forwarding
Yes Yes Yes Yes Yes
2B Message Age
2B Max Age
2B Hello Time
2B Forward Delay
Root Identifier:发送些配置BPDU的交换机所认为的根交换机的交换机标识。
Root Path Cost:从发送此配置BPDU的交换机到达根交换机的最短路径总开销。(含交换机根端口开销,不含发送此配置BPDU的端口的开销)因为STP中发数据是默认为无开销的,但接收数据有开销,这与OSPF正好相反。
Bridge Identifier:发送此配置BPDU的交换机标识。(BID=2字节的网桥优先级+网桥的MAC地址构成,优先级默认为32768)
Port Identifier:发送此配置BPDU的交换机端口的端口标识。(端口标识,端口标识号由1字节优先级+1字节端口号构成)
BPDU有两种。
一种为生成生成树时的CBPDU,configuration BPDU type:0x00
一种为网络拓扑发生变化TCNBPDU(Topology Change Notification) type 0x80
< 1 > TCN BPDU ---拓扑变化的BPDU
非根桥始发。当一台非根桥交换机,拓扑发生变化的时候,就会产生一个TCN BPDU,这个BPDU是告诉根桥的,也就是说只有根端口才会发送这类的BPDU,上行。
< 2 > Configuration BPDU ---配置BPDU
根桥始发。当根桥受到TCN BPDU 后,会产生一个配置BPDU,告诉所有它知道的非根桥交换机,拓扑发生了变化。会发现这种的BPDU是通过指定端口始发和转发的,下行。
RSTP(收敛1~10s)
RSTP生成树计算原则:
1.选根交换机(与STP相同)
2.选非根交换机的根端口(与STP相同)
3.选举网段的指定端口(与STP相同)
4.选举预备端口和备份端口。(RSTP特有的)
对于既不是根端口,也不是指定端口的交换机端口,如果该端口属于所连网段的指定交换机,则端口设为备份端口(Backup Port);如果该端口不属于所连网段的指定交换机,则端口状态设为预备端口(Alternate Port).
备份端口主要是为了备份指定端口,而预备端口是为了预备根端口,它们都处于不转发状态。
RSTP端口状态描述:
数据帧MAC 生成树计算BPDU
收发
Discarding No No No No No Learning No Yes Yes Yes Yes Forwarding Yes Yes Yes Yes Yes