要使网络更加可靠,减少故障影响的一个重要方法就是“冗余”。当网络中出现单点故障时,冗余可以激活其他备份组件,以使网络链接不中断。
冗余在网络中是必需的,冗余的拓扑结构可以减少网络的中断时间。单条链路、单个端口或者单台网络设备都有可能发生故障和错误,进而影响整个网络的正常运行,此时,如果有备份的链路、端口或者设备就可以尽量减少丢失的连接,保障网络的不间断运行。生成树协议( SpanningTree Protocol, STP )能够有效解决冗余链路带来的环路问题,大大提高了网络的健壮性、稳定性、可靠性和容错性。
一、冗余性与STP
1.STP的由来
为了解决冗余链路引起的问题,IEEE通过了IEEE 802.1d协议,即STP。JEEE 802. 1d协议通过在交换机上运行一套复杂的算法,使冗余端口处于“阻塞状态”,使网络中的计算机在通信时只有一条链路生效,而当这条链路出现故障时,TEEE 802. 1d协议将会重新计算出网络的最优链路,将处于“阻塞状态” 的端口重新打开,从而确保网络连接稳定可靠。
在交换式网络中,使用STP可以将有环路的物理拓扑变成无环路的逻辑拓扑,为网络提供了安全机制,使冗余拓扑中不会产生交换环路问题。
2.STP中的术语
STP中定义了根桥( Root Bridge)、根端口(Root Port, RP )、指定端口( Designated Port,DP)和路径开销(Path Cost)等概念,通过构造一棵自然树的方法达到阻塞冗余环路的目的,同时实现链路备份和路径最优化。用于构造这棵树的算法称为生成树算法(Spanning Tree Algorithm, STA)。STP不断检测网络,以检测链路故障。当网络拓扑发生变化时,运行STP的交换机会自动重新配置其端口,以避免环路产生或者链路断开。
(1)桥
因为性能方面的限制等因素,早期的交换机一般只有两个转发端口,所以那时的交换机常常被称为“网桥”或简称为“桥( Bridge )”。在IEEE的术语中,“桥)一直沿用至今,但现在已不再只是指只有两个转发端口的交换机,而是泛指具有任意多个端口的交换机。
(2)桥的MAC地址
一个桥有多个转发端口,每个端口都有一个MAC地址。通常,交换机会把端口编号最小的端口的MAC地址作为整个桥的MAC地址( Bridge MAC Address )。
(3)桥ID
一个桥 (交换机)的桥ID ( Bridge Identifier, BID) 由两部分组成,前面2字节是这个桥的桥优先级值,后面6字节是这个桥的MAC地址。桥优先级的值可以手动设置,其默认值为0x8000(相当于十进制数32768 )。
(4)端口ID
一个桥(交换机)端口ID( Port Identifier, PID)的定义方法有很多种,常见的有两种。
第一种:端口ID由2字节组成,字节1是该端口的端口优先级值,字节2是该端口的端口编号。
第二种:端口ID由2字节(16位)组成,前4位是该端口的端口优先级值,后12位是该端口的端口编号。
端口优先级的值可以手动设定,也可以由设备自动生成。由设备自动生成端口ID时,不同设备厂商所采用的PID的定义方法可能不同。
3.树的基本理论
在一个具有物理环路的交换网络中,交换机通过运行STP,自动生成一个没有环路的逻辑拓扑。这个无环逻辑拓扑也称为STP树( STP Tree ),树节点为某些特定的交换机,树枝为某些特定的链路。一棵STP树中包含了一个唯一的根节点,任何一个节点到根节点的工作路径不仅是唯一的,还是最优的。当网络拓扑发生变化时,STP树也会自动地发生相应的改变。
简而言之,有环的物理拓扑提高了网络连接的可靠性,而无环的逻辑拓扑避免了广播风暴、MAC地址表翻摆、多帧复制等问题的发生,这就是STP的精髓。
二、STP的工作原理
生成树协议STP能够自动发现冗余网络拓扑中的环路,保留一条最佳链路作为转发链路,阻塞其他冗余链路,并且在网络拓扑发生变化的情况下重新计算,保证所有网段可达且无环路。
STP的基本工作原理为,通过桥接协议数据单元( Bridge Protocol Data Unit, BPDU)的交互来传递STP计算所需要的条件,随后根据特定的算法阻塞特定端口,从而得到无环的树形拓扑。
1.STP树的生成过程
STP树的生成过程主要分为以下4步。
①选举根桥,作为整个网络的根。
②确定根端口,确定非根桥与根桥连接的最优端口。
③确定指定端口,确定每条链路与根桥连接的最优端口。
④阻塞备用端口( Alternate Port, AP ), 形成一个无环网络。
(1)选举根桥
根桥是STP树的根节点,要生成一棵STP树,首先要确定出一个根桥。根桥是整个交换网络的逻辑中心,但不一定是物理中心。当网络的拓扑发生变化时,根桥也可能会发生变化。
运行STP的交换机(简称STP交换机)会相互交换STP协议帧,这些协议帧的载荷数据被称为网桥协议数据单元( Bridge Protocol Data Unit, BPDU)。 BPDU中包含了与STP相关的所有信息,如BID。
交换机间选举根桥的主要步骤如下。
根桥的选举原则是比较网桥ID (Bridge lD),值小者优先。网桥ID可理解为交换机的身份标志,共8B,由16bit的网桥优先级与48bit的网桥MAC地址构成,如图所示。其中,优先级可配置,默认值为32768(取值范围是0~65535)。另外,由于网桥的MAC地址具备全局唯一性, 所以网桥ID也具备全局唯一性。
网桥优先级(2B) 默认值:32768 |
网桥的MAC地址(6B) |
①STP交换机初始启动之后,会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己是根桥。
②当交换机从网络中收到其他设备发送过来的BPDU的时候,会比较BPDU中的根桥BID和自己的BID,较小的BID将作为根桥BID。
③交换机间不断地交互BPDU,并对BID进行比较,直至最终选举出一台BID最小的交换机作为根桥。
(2)确定根端口
根桥确定后,其他没有成为根桥的交换机都被称为非根桥。一台非根桥可能通过多个端口与根桥通信,为了保证从非根桥到根桥的工作路径是最优且唯一的, 就必须从非根桥的端口中确定出一个被称为“根端口”的端口,由根端口实现非根桥与根桥设备之间的报文交互。根端口就是去往根桥路径最“短”的端口,根端口负责向根桥方向转发数据。
因此,一台非根桥设备上最多只能有一个根端口,根端口的确定过程如下。
①比较根路径开销,路径开销较小的为根端口。
在计算根路径成本时,仅计算收到BPDU的端口(去往根桥的出端口)的开销。
STP把根路径开销( Root Path Cost, RPC)作为确定根端口的一个重要依据。一个运行STP的网络中,某个交换机的端口到根桥的累计路径开销(即从该端口到根桥所经过的所有链路的路径开销总和)称为该端口的RPC。链路的路径开销与端口速率有关,端口转发速率越大,路径开销就越小。端口速率与路径开销的对应关系如表所示。
端口速率 | 路径开销 |
10Mbit/s | 2000000 |
100Mbit/s | 200000 |
1Gbit/s | <