前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生成树协议

生成树协议

作者头像
十二惊惶
发布2024-02-28 20:48:24
1690
发布2024-02-28 20:48:24
举报
文章被收录于专栏:十二惊惶的网络安全研究记录

生成树协议

[TOC]

生成树技术概述:

前言

以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。

运行STP协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个接口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。

RSTP(Rapid Spanning Tree Protocol)协议:快速生成树协议,基于STP协议,实现了网络拓扑快速收敛

二层交换机网络的冗余性与环路:

交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。

  • 在现实中,除了冗余链路会引起环路,还有一些人为错误导致的环路
问题一:广播风暴:

如果交换机从一个接口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源接口之外的所有其他接口转发。

如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧

问题二: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),从而打破环路

交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整 因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案

环路类别:

常见环路主要分为二层环路三层环路

  1. 二层环路主要因为网络中部署了二层冗余环境,或人为的误接线缆导致,可以通过借助特定的协议或机制实现二层防环;
  2. 三层环路主要因为路由环路,可以通过动态路由协议防环和IP报文头部中的TTL字段用于防止报文被无止尽地转发

STP的基本概念及工作原理

  • 选举一个根桥
  • 每个非根交换机选举一个根接口
  • 每个网段选举一个指定接口
  • 阻塞非根、非指定接口

每个STP网络中,都会存在一个根桥,其他交换机为非根桥。

根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心,非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。

STP中定义了三种接口角色:指定接口,根接口和预备接口

  • 指定接口是交换机向所连网段转发配置BPDU的接口,每个网段有且只能有一个指定接口。一般情况下,根桥的每个接口总是指定接口。
  • 根接口是非根交换机去往根桥路径最优的接口。在一个运行STP协议的交换机上最多只有一个根接口,但根桥上没有根接口。
  • 如果一个接口既不是指定接口也不是根接口,则此接口为预备接口。预备接口将被阻塞。
STP的基本概念:
桥ID(Bridge ID,BID)

IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成。

  1. 在STP中,每一台交换机都有一个标示符叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge-Priority)和48位的MAC地址构成
  2. 在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768
    • 可以修改,但是取值必须为4096的倍数。
  3. 优先级最高的设备(数值越小越优先)会被选举为根桥
    • 如果优先级相同,则会比较MAC地址,MAC地址越小则越优先
根桥(Root Bridge)

STP引入了根桥(Root Bridge)

对于一个STP网络,全网中只有一个根桥,是整个网络的逻辑中心。根桥会根据网络拓扑的变化而动态变化

网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定

开销(Cost)

每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销

接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。 接口带宽越大,则Cost值越小。 用户也可以根据需要通过命令调整接口的Cost

根路径开销(Root Path Cost)

一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加

非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络

根桥的根路径开销是0

接口ID(Port ID,PID)

运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。 接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号。 激活STP的接口会维护一个缺省的接口优先级,取值范围是0到240,步长为16,即取值必须为16的整数倍。在华为交换机上,该值为128。用户可以根据实际需要,通过命令修改该优先级。

BPDU(Bridge Protocol Data Unit,网桥协议数据单元)

BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。 STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。 BPDU分为两种类型:

  • 配置BPDU(Configuration BPDU)
  • TCN BPDU(Topology Change Notification BPDU)

配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发。

配置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协议中包含一些重要的时间参数

  1. Hello Time是指运行STP协议的设备发送配
  2. 置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效
  3. Message Age:如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1
  4. Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的Message Age和Max Age进行比较:如果Message Age小于等于Max Age,则该非根桥设备会继续转发配置BPDU报文。如果Message Age大于Max Age,则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络直径过大,导致了根桥连接失败。

配置BPDU报文每经过一个交换机,Message Age都加1。 如果Message Age大于Max Age,非根桥会丢弃该配置BPDU。

STP的基础配置

配置生成树工作模式:
代码语言:javascript
复制
[Huawei] stp mode { stp | rstp | mstp }

交换机支持STP、RSTP和MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。

配置根桥和备份根桥:
代码语言:javascript
复制
[Huawei] stp root primary 
//配置当前设备为根桥,缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
[Huawei] stp root secondary
//配置当前交换机为备份根桥,缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。
配置交换机的STP优先级:
代码语言:javascript
复制
[Huawei] stp priority priority []
# 缺省情况下,交换机的优先级取值是32768
配置接口路径开销:
代码语言:javascript
复制
[Huawei] stp pathcost-standard { dot1d-1998 | dot1t | legacy }
#配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t标准方法。
#同一网络内所有交换机的接口路径开销应使用相同的计算方法。
[Huawei-GigabitEthernet0/0/1] stp cost cost
设置当前接口的路径开销值。
配置接口优先级:
代码语言:javascript
复制
[Huawei-intf] stp priority priority

配置接口的优先级。缺省情况下,交换机接口的优先级取值是128。

启用STP/RSTP/MSTP

代码语言:javascript
复制
[Huawei] stp enable

使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。

RSTP对STP的改进

IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP(Rapid Spanning-Tree Protocol),RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。

RSTP(快速生成树)是从STP演化而来的,基本思想一样;当交换网络拓扑结构发生变化时, RSTP可以通过Proposal/Agreement机制更快地恢复网络的连通性。

根据STP的不足,RSTP删除了3种接口状态,新增加了2种接口角色,并且把接口属性充分的按照状态和角色解耦;此外,RSTP还增加了相应的一些增强特性和保护措施,实现网络的稳定和快速收敛。

  • RSTP是可以向下兼容STP的,但不推荐这样的做,RSTP会失去其快速收敛的优势,而STP慢速收敛的缺点会暴露出来。
RSTP对STP的其他改进:

配置BPDU的处理发生变化:

  1. 拓扑稳定后,配置BPDU报文的发送方式进行了优化;
  2. 使用更短的BPDU超时计时;
  3. 对处理次等BPDU的方式进行了优化;

配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色。

RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度。

接口角色不同
  • 从配置BPDU报文发送角度来看:
    • 预备(Alternate)接口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的接口
    • 备份(Backup)接口就是由于学习到自己发送的配置BPDU报文而阻塞的接口
  • 从用户流量角度来看:
    • Alternate接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口
    • Backup接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路

通过接口角色的增补,简化了生成树协议的理解及部署

边缘接口:

如果指定接口位于整个域的边缘,不再与任何交换设备连接,这种接口叫做边缘接口。

边缘接口一般与用户终端设备直接连接,不与任何交换设备连接。边缘接口正常情况下接收不到配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,且不经历时延,就像在接口上将STP禁用了一样。但是,一旦边缘接口收到配置BPDU报文,就丧失了边缘接口属性,成为普通STP接口,并重新进行生成树计算,从而引起网络震荡

接口状态不同
  • RSTP的状态规范把原来的5种状态缩减为3种 STP接口状态 RSTP接口状态 接口在拓扑中的角色 Forwarding Forwarding 包括根接口、指定接口 Learning Learning 包括根接口、指定接口 Listening Discarding 包括根接口、指定接口 Blocking Discarding 包括Alternate接口、Backup接口 Disabled Discarding 包括Disable接口
    • 如果不转发用户流量也不学习MAC地址,那么接口状态就是Discarding状态
    • 如果不转发用户流量但是学习MAC地址,那么接口状态就是Learning状态
    • 如果既转发用户流量又学习MAC地址,那么接口状态就是Forwarding状态

生成树技术进阶

STP/RSTP的缺陷

所有的VLAN共享一棵生成树

  • 由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发
VBST:基于VLAN的生成树

VBST(VLAN-Based Spanning Tree)生成树解决方案。该解决方案中,生成树的形成是基于VLAN的,不同VLAN间可形成相互独立的生成树,不同VLAN内的流量沿着各自的生成树转发,进而可实现流量的负载分担,有效地提高了链路带宽的利用率;消除了网络中可能存在的通信环路;配置和维护简单,可降低配置和维护成本。但如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源。

企业网中部署VBST:
  • 可消除网络中可能存在的通信环路
  • 可实现链路的复用和流量的负载分担,进而有效地提高链路带宽的利用率
  • 配置和维护简单,进而可降低配置和维护成本

但是如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源

MSTP:多生成树

为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。

MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。

MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。

  • 每棵生成树叫做一个多生成树实例MSTI Multiple Spanning Tree Instance
  • 生成树实例是多个VLAN的集合所对应的生成树
  • 通过将多个VLAN捆绑到一个实例,可以节省通信开销和资源占用率。
  • MSTP各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。
  • 可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在接口上的转发状态取决于接口在对应实例的状态
堆叠技术:

堆叠iStack(Intelligent Stack),是指将多台支持堆叠特性的交换机设备组合在一起,从逻辑上组合成一台整体交换设备

堆叠系统建立之前,每台交换机都是单独的实体,有自己独立的IP地址和MAC地址,对外体现为多台交换机,用户需要独立的管理所有的交换机;堆叠建立后堆叠成员对外体现为一个统一的逻辑实体,用户使用一个IP地址对堆叠中的所有交换机进行管理和维护

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成树协议
    • 生成树技术概述:
      • 前言
      • 二层交换机网络的冗余性与环路:
    • STP的基本概念及工作原理
      • STP的基本概念:
      • 配置BPDU的报文格式:
    • STP的基础配置
      • RSTP对STP的改进
        • RSTP对STP的其他改进:
        • 接口角色不同
        • 接口状态不同
      • 生成树技术进阶
        • STP/RSTP的缺陷
        • VBST:基于VLAN的生成树
        • MSTP:多生成树
        • 堆叠技术:
    相关产品与服务
    负载均衡
    负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档