环路问题

为了提高网络的可靠性,交换网络中通常会使用冗余链路。然而,在冗余链路中会给交换网络带来环路风险,并导致广播风暴以及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值最小的交换机作为根桥。

华为交换机 STP 协议_华为

 

 如图,交换机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

华为交换机 STP 协议_链路_02

  

如图:SW2 的1端口跟SW3的1端口是根端口,因为这2个端口到根桥路径开销最小