[TOC]
以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。
运行STP协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个接口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
RSTP(Rapid Spanning Tree Protocol)协议:快速生成树协议,基于STP协议,实现了网络拓扑快速收敛
交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。
如果交换机从一个接口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源接口之外的所有其他接口转发。
如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧
交换机是根据所接收到的数据帧的源地址和接收接口生成MAC地址表项的。
如图,SW3收到一个广播帧泛洪,SW1从GE0/0/1接口接收到广播帧后学习且泛洪,形成MAC地址5489-98EE-788A与GE0/0/1的映射;SW2收到广播帧后学习且泛洪,SW1再次从GE0/0/2收到源MAC地址为5489-98EE-788A的广播帧并进行学习,5489-98EE-788A会不断地在GE0/0/1与GE0/0/2接口之间来回切换,这被称为MAC地址漂移现象。
在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路
交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整 因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案
常见环路主要分为二层环路和三层环路。
每个STP网络中,都会存在一个根桥,其他交换机为非根桥。
根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心,非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。
STP中定义了三种接口角色:指定接口,根接口和预备接口
IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成。
STP引入了根桥(Root Bridge)
对于一个STP网络,全网中只有一个根桥,是整个网络的逻辑中心。根桥会根据网络拓扑的变化而动态变化
网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定
每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销
接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。 接口带宽越大,则Cost值越小。 用户也可以根据需要通过命令调整接口的Cost
一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加
非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络
根桥的根路径开销是0
运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。 接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号。 激活STP的接口会维护一个缺省的接口优先级,取值范围是0到240,步长为16,即取值必须为16的整数倍。在华为交换机上,该值为128。用户可以根据实际需要,通过命令修改该优先级。
BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。 STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。 BPDU分为两种类型:
配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发。
字节 | 字段 | 描述 |
---|---|---|
2 | PID | 协议ID ,对于STP而言,该字段的值总为0 |
1 | PVI | 协议版本ID,对于STP而言,该字段的值总为0 |
1 | BPDU Type | 指示本BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若值为0x80,则为TCN BPDU |
1 | Flags | 标志,STP只使用了该字段的最高及最低两个比特位,最低位是TC(Topology Change,拓扑变更)标志,最高位是TCA(Topology Change Acknowledgment,拓扑变更确认)标志 |
8 | Root ID | 根网桥的桥ID |
4 | RPC | 根路径开销,到达根桥的STP Cost |
8 | Bridge ID | BPDU发送桥的ID |
2 | Port ID | BPDU发送网桥的接口ID(优先级+接口号) |
2 | MessageAge | 消息寿命,从根网桥发出BPDU之后的秒数,每经过一个网桥都加1,所以它本质上是到达根桥的跳数 |
2 | Max Age | 最大寿命,当一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为该接口连接的链路发生故障。默认20s |
2 | Hello Time | 根网桥连续发送的BPDU之间的时间间隔,默认2s |
2 | Forward Delay | 转发延迟,在侦听和学习状态所停留的时间间隔,默认15s |
STP协议中包含一些重要的时间参数
配置BPDU报文每经过一个交换机,Message Age都加1。 如果Message Age大于Max Age,非根桥会丢弃该配置BPDU。
[Huawei] stp mode { stp | rstp | mstp }
交换机支持STP、RSTP和MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。
[Huawei] stp root primary
//配置当前设备为根桥,缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
[Huawei] stp root secondary
//配置当前交换机为备份根桥,缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。
[Huawei] stp priority priority []
# 缺省情况下,交换机的优先级取值是32768
[Huawei] stp pathcost-standard { dot1d-1998 | dot1t | legacy }
#配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t标准方法。
#同一网络内所有交换机的接口路径开销应使用相同的计算方法。
[Huawei-GigabitEthernet0/0/1] stp cost cost
设置当前接口的路径开销值。
[Huawei-intf] stp priority priority
配置接口的优先级。缺省情况下,交换机接口的优先级取值是128。
启用STP/RSTP/MSTP
[Huawei] stp enable
使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。
IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP(Rapid Spanning-Tree Protocol),RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。
RSTP(快速生成树)是从STP演化而来的,基本思想一样;当交换网络拓扑结构发生变化时, RSTP可以通过Proposal/Agreement机制更快地恢复网络的连通性。
根据STP的不足,RSTP删除了3种接口状态,新增加了2种接口角色,并且把接口属性充分的按照状态和角色解耦;此外,RSTP还增加了相应的一些增强特性和保护措施,实现网络的稳定和快速收敛。
配置BPDU的处理发生变化:
配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色。
RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度。
通过接口角色的增补,简化了生成树协议的理解及部署
如果指定接口位于整个域的边缘,不再与任何交换设备连接,这种接口叫做边缘接口。
边缘接口一般与用户终端设备直接连接,不与任何交换设备连接。边缘接口正常情况下接收不到配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,且不经历时延,就像在接口上将STP禁用了一样。但是,一旦边缘接口收到配置BPDU报文,就丧失了边缘接口属性,成为普通STP接口,并重新进行生成树计算,从而引起网络震荡
所有的VLAN共享一棵生成树
VBST(VLAN-Based Spanning Tree)生成树解决方案。该解决方案中,生成树的形成是基于VLAN的,不同VLAN间可形成相互独立的生成树,不同VLAN内的流量沿着各自的生成树转发,进而可实现流量的负载分担,有效地提高了链路带宽的利用率;消除了网络中可能存在的通信环路;配置和维护简单,可降低配置和维护成本。但如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源。
但是如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源
为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。
MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
堆叠iStack(Intelligent Stack),是指将多台支持堆叠特性的交换机设备组合在一起,从逻辑上组合成一台整体交换设备
堆叠系统建立之前,每台交换机都是单独的实体,有自己独立的IP地址和MAC地址,对外体现为多台交换机,用户需要独立的管理所有的交换机;堆叠建立后堆叠成员对外体现为一个统一的逻辑实体,用户使用一个IP地址对堆叠中的所有交换机进行管理和维护