华为交换机 STP 协议
环路问题
为了提高网络的可靠性,交换网络中通常会使用冗余链路。然而,在冗余链路中会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等的问题,进而影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)是一种由交换机运行的、用来解决交换网络中环路问题的数据链路层协议。
STP原理
在一个具有物理环路的交换网络中,交换机通过运行STP协议,自动生成一个没有环路的工作拓扑。该无环工作拓扑也成为STP树,当网络拓扑发生变化时,STP树也会自动地发生相应的改变。简言之,有环的物理拓扑提高了网络连接的可靠性,而无环的工作拓扑避免了广播风暴、MAC地址表震荡。
在学习STP树之前,需要先了解几个基本术语:桥、桥的MAC地址、桥ID、端口ID;
桥(Bridge):早期的交换机一般只有两个转发端口,所以那时的交换机常常被称为“网桥”,或简称成“桥”。后来“桥”这个术语一直沿用至今,但并不是指只有两个转发端口的交换机了,而是泛指具有任意多端口的交换机。目前“桥”和“交换机”这两个术语是可以混用的。
桥的MAC地址(Bridge MAC Address):我们知道一个桥有多个转发端口,每个端口有一个MAC地址。通常,我们把端口编号最小的那个端口的MAC地址作为整个桥的MAC地址。
桥ID(Bridge Identifier,BID):一个桥(交换机)的桥ID由两部分组成,即:桥优先级 + 桥的MAC地址;其中桥优先级的值可以人为设定,默认值为0x8000(相当于十进制的32768)。取值范围是0~65535。
端口ID(Port Identifier,PID):一个桥(交换机)的某个端口的端口ID由两部分组成,即:端口优先级 + 端口编号;端口优先级的值是可以人为设定的。不同厂商的设备对于两部分所占用的字节数可能有所不同。
STP树生成过程
首先选举根桥(Root Bridge),然后每个非根交换机选举一个根端口(Root Port,RP)和每条链路选举一个指定端口(Designated Port,DP),最后阻塞备用端口(Alternate Port,AP)
1、选举根桥
根桥是STP树的根节点,要生成一课STP树首先要确定出一个根桥。当运行STP协议的交换机(简称为STP交换机)会相互交换STP协议帧,这些协议帧的载荷数据被成为BPDU(Bridge Protocol Data Unit,网桥协议数据单元)。STP交换机初始启动之后,都会认为自己是根桥。并在发送给其他交换机的BPDU中宣告自己是根桥。当交换机从网络中收到其他设备发送过来的BPDU时,会比较BPDU中指定的根桥BID和自己的BID,交换机不断地交互BPDU同时进行比较,直至最终选举出一台BID值最小的交换机作为根桥。
如图,交换机SW1、SW2、SW3都使用了默认的桥优先级32768。显然SW1的BID最小,所以最终SW1将被选举为根桥。
2、确定根端口
根桥确定后,其它没有成为根桥的交换机都被成为非根桥(或非根交换机)。一台非根桥设备上可能会有多个端口与网络相连,为了保证从某台非根桥设备到根桥的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被成为 "根端口" 的端口,由根端口来作为非根桥设备与根桥设备之间进行报文交互的端口。一台非根桥设备上最多只能有一个根端口。
非根桥在选举根端口时分别依据该端口的根路径开销、对端BID、对端PID和本端PID。一个运行STP协议的网络中,我们将某个交换机的端口到根桥的累计路径开销(即从该端口到根桥经过的所有链路的路径开销的和)称为这个端口的根路径开销(Root Path Cost,RPC)。链路的路径开销(Path Cost)与端口速率有关,端口转发速率越大,则路径开销越小。端口速率与路径开销的对应关系如下表所示:
端口速率 | 路径开销(IEEE802.1t标准) |
10Mbit/s | 2000 000 |
100Mbit/s | 200 000 |
1Gbit/s | 20 000 |
10Gbit/s | 2 000 |
如图:SW2 的1端口跟SW3的1端口是根端口,因为这2个端口到根桥路径开销最小