STP(生成树协议)

发布时间:2023年12月18日

STP(生成树协议)

生成树协议原理

?在二层交换网络中,逻辑的阻塞部分接口,实现从根节点到所有节点唯一的路径的生成,成为一个没有环路的拓扑。当最佳路径数显故障时,个别被阻塞的接口将被打开,形成备份链路

冗余的方式有

设备冗余,线路冗余,网关冗余,UPS冗余

没有STP协议时,二层交换机存在的一些问题

在这里插入图片描述

? 当PC1首次想访问PC2时,LSW2会接收到一个请求未知MAC地址的数据帧;二层交换机会洪泛该数据帧(除了接收到该数据帧的接口),此时会出现两种情况(目的MAC地址的设备没有及时回应):

? 顺时针:当LSW1接收到该洪泛的数据帧时,因为LSW1的MAC地址表内也没有该MAC地址,因此也会洪泛该数据帧;LSW3接收到洪泛的数据帧时,同样也会洪泛出去,导致LSW2会再次接收到相同的数据帧,以此反复

? 逆时针:当LSW3接收到该洪泛的数据帧时,因为LSW3的MAC地址表内也没有该MAC地址,因此也会洪泛该数据帧;LSW1接收到洪泛的数据帧时,同样也会洪泛出去,导致LSW2会再次接收到相同的数据帧,以此反复

  1. 广播风暴

    ? 广播帧在二层环路中形成逆时针和顺时针转动的两层环路,并且无限循环,最终导致设备宕机,网络瘫痪

  2. MAC地址表的翻摆(MAC地址表漂移)

    ? 同一个数据帧,顺时针接收后将记录MAC地址与接口的对应关系;之后,逆时针方向再次接收到相同的数据帧,因此会再次修改MAC地址与接口的对应关系,如此循环,导致MAC地址表内容一直在变动

  3. 多重复数据帧

    ? PC2会接收到多条相同的数据帧信息

802.1D生成树

最基础的三种解决环路的方案:

802.1D:是由 IEEE组织 颁布的公有协议 ----标准的STP协议

RSTP(802.1W):作为802.1D的补充

MSTP(802.1S):最常用的协议 ----可应用于跨运营商的网络

STP基本概念

桥ID

  1. 桥ID一共8字节,包含16bit的桥优先级和48bit的桥MAC地址,其中桥优先级占据桥ID的高16bit位
  2. 每一台运行STP协议的交换机都拥有的唯一的BID

根桥(root)

?STP的主要作用之一就是在整个交换网络计算出一颗无环的树,而想要计算出该树,则需要先行确定树根的位置,即根网桥的位置

选举规则:网络中拥有最小桥ID的交换机将成为根桥

? 当人工未干预的情况下,MAC地址小的二层交换机将成为根桥

缺省情况下,桥优先级为32768 ----该数值可以进行修改,修改的范围为0-61440,且必须是4096的倍数

在这里插入图片描述

开销cost与根路径开销RPC

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

在这里插入图片描述

华为设备默认情况下使用 IEEE 802.1T 标准

? 在进行修改缺省COST时,应全网修改一致

接口ID(PID)

? 每一个运行了STP协议的交换机的接口会存在一个PID值,来标识该接口信息

? 接口ID长度是16bit,高4bit是接口优先级,低12bit是接口编号

?接口优先级默认为128,该数值可以进行修改,修改的范围为0-240,必须为16的倍数

STP报文(BPDU)

BPDU:网桥协议数据单元

分为两大类:

  1. 配置BPDU
  2. TCN BPDU

?BPDU载荷被直接封装在以太网数据帧中,数据帧的目的MAC地址是组播MAC地址:0180-c200-0000

配置BPDU报文

  1. 在交换网络初始化过程中,每台交换机都从自己激活了STP的接口向外发送配置BPDU
  2. 当STP收敛完成后,只有根网桥才会周期性发送配置BPDU,缺省为2秒。非根网桥会在自己接收到根网桥发送的配置BPDU以后,使用触发更新方式,将自己的配置BPDU发送出去

BPDU报文格式

在这里插入图片描述

  1. 协议ID ----PID

    ? 对于STP而言,该字段的值总为0

  2. 协议版本ID ----PVI

    ? stp协议:0

    ? rstp协议:2

    ? mstp协议:3

  3. BPDU类型字段 ----BPDU Type

    ? 指示本BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若值为0x80,则为TCN BPDU

  4. 标志字段 ----Flags

    ? STP仅仅使用了最高位(TCA—拓扑变更确认标记)和最低位(TC ----拓扑变更标记)

  5. 根网桥的桥ID ----Root ID

    ? 代表根桥

  6. 根路径开销 ----RPC

    ? 到达根网桥的STP Cost

  7. BPDU发送桥的ID(BID) ----Bridge ID

    ? 代表该BPDU报文是由哪一个设备发送的

  8. 接口ID值(PID) ----PortID

    ? BPDU发送网桥的接口ID(优先级+接口号

  9. 消息寿命 ----Message Age

    1. 与TTL值相同,单位为设备数量,代表BPDU从发出到现在所经过的时间
    2. 初始值为0,每经过一台交换机,该数值加1
    3. Max Hop参数 ----最大消息寿命,默认值为20
  10. 生存时间 ----Max Age
    ? 最大寿命,当一段时间未收到任何BPDU,生存期到达最大寿命时,网桥会认为该接口连接的链路发生故障。默认20s

  11. Hello Time
    根网桥连续发送的BPDU之间的时间间隔,默认2s

  12. Forward Delay
    转发延迟,在侦听和学习状态所停留的时间间隔,默认15s

TCN BPDU报文

? 该报文用于在网络拓扑发生变化时,向根桥通知变化的发生。该报文是为了修改全网交换机的MAC地址表信息而存在的,而非是为了改变STP的生成树结构

在这里插入图片描述

  1. 本地交换链路发生故障后,STP将重新收敛,为了加快刷新全网交换机的MAC地址表,故障交换机会向本地其余运行了STP的接口发送TCN BPDU报文
  2. 邻居交换机收到TCN BPDU报文后,将回复一个TCA标记为1的配置BPDU报文,用于可靠性传输
    1. 该过程会一直持续到根网桥接收到TCN BPDU报文
    2. 注意:非根网桥不能主动发送配置BPDU,故需要等待接收到根网桥的BPDU后,将TCA标记位置为1,转发给故障设备
  3. 之后该TCN BPDU会一直转发到根网桥处,由根网桥下发TC标记位为1的配置BPDU(只有根可以设置该标记位),逐级下发给所有交换机
  4. 所有交换机在收到TC标记位为1的配置BPDU后,会立即将MAC地址表的老化时间临时性修改为15秒(转发延迟),使得MAC地址表能够提前刷新

STP角色选举

在这里插入图片描述

根桥选举(RB)
  1. 选举范围:整个交换网络

  2. 一个交换网络有且只有一个根网桥

  3. 选择最小BID:先比较桥优先级,后比较桥MAC地址

  4. 根网桥的地位是具有可抢占性的

    ? 可修改其设备优先级,使其成为根桥

根接口选举

根接口:是非根网桥上所有接口中收到最优BPDU报文的接口

  1. 选举范围:每一个非根网桥设备

    ? 每一个非根网桥设备上有且只有一个根接口

最优BPDU的比较原则
  1. 选择具有最小桥ID的BPDU ----这一步,实际上是在选举根网桥(通过对比BID参数)
  2. 比较入方向BPDU的RPC数值(RPC:根路径开销值),选择收到最小的RPC的接口作为最优BPDU报文
  3. 如果交换机接收到的多个BPDU报文的RPC相同,则比较对端设备的BID,选择具有较小BID参数的设备所对应的接口作为最优BPDU报文
  4. 如果存在对端设备的BID相同,则比较对端的PID值,选择较小的PID所在接口的对应接口作为最优BPDU报文
  5. 若对端PID相同,则比较本端接收到BPDU报文的接口的PID值,选择较小的接口作为最优BPDU报文
指定接口选举
  1. 选举范围:两台交换机之间的物理链路上选举一个指定接口(有且只有一个
  2. 该接口是该物理链路内到达根网桥最优的接口,也就是接收到最优BPDU的接口
  3. 对于非根桥而言,其所有接口中收到最优BPDU的接口将成为该设备的根接口,随后,该非根桥使用自己接收到的最优BPDU,为本设备上的其他接口各自计算一个BPDU报文
    1. 然后使用计算出的BPDU报文与该接口上所接收到的BPDU报文进行对比,选择出最优的BPDU报文,那么最优BPDU所在的接口为指定接口

? 一般而言,根网桥的所有接口都是指定接口;在存在跟接口的链路上,对端必然是指定接口

非指定接口选举

? 所有的不是根端口和指定端口都被称为非指定端口。而非指定端口会被交换机进行逻辑阻塞

? 被阻塞的接口既不会接收也不会转发业务数据,且该接口不会发送BPDU报文,但是可以接收BPDU报文(业务数据:除了BPDU报文外的所有流量)

STP的工作过程

  1. STP交换机初始化启动后,都会认为自己是根网桥,并在发送给其它交换机的配置BPDU中宣告自己为根桥。因此,此时的BPDU中的根桥ID为各自设备的网桥ID数值
    1. 当交换机收到网络中其他设备发来的配置BPDU后,会对比BPDU报文中的根桥ID字段和自己的BID
    2. 交换机不断交互BPDU报文,同时对BID进行对比,最终选举一台BID最小的交换机作为根网桥,其他为非根网桥
    3. 根网桥的角色是可抢占的
  2. 选举完根网桥后,根网桥仍然会持续性发送配置BPDU报文,起到保活的效果。而其他非根网桥将持续不断的收到根网桥发送的BPDU,并计算自己的BPDU报文从其他指定端口发送出去
  3. 每个交换机根据从自己不同接口收到的BPDU报文中选择出最优的BPDU,从而选举根端口(以下为比较参数的顺序):
    1. 比较RPC(根路径开销值)
    2. 比较对端BID(桥ID值:优先级 + MAC地址)
    3. 比较对端PID(接口ID值:优先级 + 接口号)
    4. 比较本地PID
  4. 每台交换机的每一条链路选举指定端口(以下为比较参数的顺序):
    1. 比较RPC
    2. 比较对端BID
    3. 比较两端PID
  5. 在确定了根端口和指定端口之后,交换机上所有剩余的端口都被称为非指定端口。并且会在逻辑上阻塞所有的非指定端口
    1. 当非指定端口被阻塞后,生成STP树
    2. 被阻塞的接口既不会接收也不会转发业务数据,且该接口不会发送BPDU报文,但是可以接收BPDU报文

? 在交换网络中,一般将网关所在地、流量汇聚地点以及STP根网桥三点合并在一起

STP的接口状态

在这里插入图片描述

  1. 禁用状态 ----Disable
    1. 接口关闭状态
    2. 接口禁用生成树协议
  2. 阻塞状态 ----Blocking
    1. 是生成树协议激活后进入的第一个状态
    2. 该状态会停留一个最大老化时间(20秒)。然后进入到下一个状态
    3. 仅仅可以接收BPDU报文
  3. 侦听状态 ----Listening
    1. 可以收发BPDU报文。进行STP角色选举过程
    2. 该状态会选举出根网桥,根接口,指定接口和非指定接口
    3. 停留一个**转发延迟时间(15秒)**后,进入下一个状态
    4. 只有根端口和指定端口会进入到学习状态,而非指定端口会退回到阻塞状态
  4. 学习状态 ----Learning
    1. 接收业务流量,并学习MAC地址信息 ----为了减少单播帧的洪泛
    2. 停留一个**转发延迟时间(15秒)**后,进入下一个状态
  5. 转发状态 ----Forwarding
    1. 可以正常接收和转发业务数据和BPDU报文
    2. 只有根端口和指定端口可以进入该状态

STP的收敛时间

基于计时器进行收敛

  1. 首次收敛 ----50S(阻塞20S + 2*转发延迟15S)

  2. 根桥故障 ----50S(最大寿命20S + 2*转发延迟15S)

  3. 直连链路故障 ----30S(2*转发延迟15S)

  4. 非直连链路故障 ----50S(最大寿命20S + 2*转发延迟15S)

STP的相关配置

在这里插入图片描述

与STP有关的命令

启动STP协议,华为默认开启该协议
[sw1]stp enable

修改STP的工作模式,默认工作模式为MSTP
[sw1]stp mode stp

查看本地设备的MAC地址
[sw1]display bridge mac-address 

查看某一个接口的STP协议的运行状况
[sw1]display stp interface GigabitEthernet 0/0/3

查看STP协议运行状况
[sw1]display stp

查看STP接口状态
[sw1]display stp brief
[sw1]display stp ----查看STP协议允许状况
	需注意查看的为下图的公共区域信息

在这里插入图片描述

[sw1]display stp brief ----查看STP接口状态
DESI:指定接口
ROOT:根端口
ALTE:备份端口

在这里插入图片描述

配置STP的相关命令

修改交换机的优先级,干涉其选举根桥:

[sw1]stp root primary ----将交换机设定为根网桥,其本质是将优先级修改为0
[sw2]stp root secondary ----将交换机设定为备份根网桥,其本质是将优先级修改为4096
[sw3]stp priority 8192 ----将交换机优先级设定为8192

修改启用STP协议后的设备内其参数的相关命令

[sw1-GigabitEthernet0/0/1]stp port priority 数值(0-240)
	修改接口优先级,干涉PID数值

[sw1]stp pathcost-standard dot1d/dot1t/legacy
	修改本地开销值计算方法类型,全网均需要修改
  dot1d-1998  IEEE 802.1D-1998
  dot1t       IEEE 802.1T
  legacy      Legacy

[sw1-GigabitEthernet0/0/1]stp cost 数值(1-200000000)
	直接修改接口cost值,该参数可以修改的范围是根据开销值计算类型而定
文章来源:https://blog.csdn.net/TYM121380/article/details/134923337
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。