【网络协议详解】——STP技术(学习笔记)

🕒 1. STP技术工作原理

以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在提高网络可靠性的同时又避免环路带来的各种问题。

生成树算法STA(Spanning Tree Algorithm)是生成树协议STP的核心。它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑

STP协议由IEEE 802.1D 定义,描述时使用的是“网桥”,由于“交换机”的本质是“多端口网桥”,接下来都使用“网桥”来描述。

生成树算法的三个步骤:

  1. “选举”根交换机
  2. “选举”根端口
  3. “选举”指定端口并阻塞备用端口

注:这里所谓的“选举”,是通过网络中各交换机相互发送生成树协议专用的数据帧来实现的,这些交换信息的报文称为网桥协议数据单元,简称BPDU

选举根交换机:

  • 根交换机的选举条件:网桥ID(BID)最小者当选
  • 网桥ID(BID)由以下两部分构成:
    • 优先级(2字节)
      • 范围:0 - 61440(也有说法是65535)
      • 步长:4096
      • 默认值:32768
    • 交换机的基本MAC地址(6字节)
  • 网桥ID (BID)的比较方法:
    • 优先级取值越小,则网桥ID(BID)就越小。
    • 若优先级相同,则比较MAC地址,从MAC地址的左侧开始依次比较,数值小的,则网桥ID(BID)就小。

选举根端口:

  • 在每一个非根交换机上选出一个根端口RP(Root Port),并且只能是一个。
  • 根端口RP用于接收根交换机发来的BPDU,也用来转发普通流量。
  • 根端口RP的选举条件:
    • BPDU接收端口到根交换机的路径成本(端口开销)最小。
       链路带宽   成本值  4 M b / s 250 10 M b / s 100 16 M b / s 62 100 M b / s 19 1 G b / s 4 10 G b / s 2 \begin{array}{|c|c|} \hline {\text { 链路带宽 }} & \text { 成本值 } \\ \hline 4 Mb/s & 250 \\ \hline 10 Mb/s & 100 \\ \hline 16 Mb/s & 62 \\ \hline 100 Mb/s & 19 \\ \hline 1 Gb/s & 4 \\ \hline 10 Gb/s & 2 \\ \hline \end{array}  链路带宽 4Mb/s10Mb/s16Mb/s100Mb/s1Gb/s10Gb/s 成本值 250100621942
    • 对端的网桥ID(BID)最小。
    • 对端的端口ID(PID)最小。
      • 优先级范围(1 - 4bit)
        • 范围:0 - 240
        • 步长:16
        • 默认值:128
      • 端口号(5 - 16bit)

选举指定端口(Designated Port)并阻塞备用端口(预备端口):

  • 在每一个网段上选出一个指定端口DP ( Designated Port)并且只能是一个。
  • 指定端口DP用于转发根交换机发来的BPDU,也用来转发普通流量。
  • 指定端口DP的选举条件:
    • 根交换机的所有端都是指定端口DP。
    • 根端口的对端端口一定是指定端口DP。
    • BPDU转发端口到根交换机的路径成本最小。
    • 本端的网桥ID(BID)最小。
    • 本端的端口ID(PID)最小。
  • 剩余端口成为备用端口AP(Alternate Port),将它们阻塞。

在这里插入图片描述

端口状态描述:

端口状态描 述
Disabled(端口没有启用)此状态下端口不转发数据帧,不学习MAC地址表,不参与生成树计算。
Listening(侦听状态)此状态下端口不转发数据帧,不学习MAC地址表,只参与生成树计算,接收并发送BPDU。
Blocking(阻塞状态)此状态下端口不转发数据帧,不学习MAC地址表,此状态下端口接收并处理BPDU,但是不向外发送BPDU。
Learning(学习状态)此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。
Forwarding(转发状态)此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。
  • 当端口正常启用之后,端口首先进入Listening状态,开始生成树的计算过程。
  • 如果经过计算,端口角色需要设置为预备端口(Alternate Port),则端口状态立即进入Blocking;
  • 如果经过计算,端口角色需要设置为根端口(Root Port)或指定端口(Designated Port),则端口状态在等待Forward Delay之后从Listening状态进入Learning状态,然后继续等待Forward Delay之后,从Learning状态进入Forwarding状态,正常转发数据帧。

🕒 2. BPDU报文

STP生成树的计算,根端口、指定端口的选举,都是借助BPDU(Configuration Bridge Protocol Data Unit)报文进行信息的传递和交换的。

BPDU报文有两类:配置BPDUTCN BPDU

🕘 2.1 配置BPDU

在这里插入图片描述

  • 配置BPDU使用标准LLC格式封装在以太网数据帧中。
  • 配置BPDU只在指定端口(Designated Port)上发送。
  • DMAC:目的MAC地址。发送配置BPDU的数据帧使用保留的组MAC地址01-80-C2-00-00-00,此地址标识所有交换机,但是不能被交换机转发,也即只在本地链路有效。
  • LLC Header:目的服务访问点(Destination Service Access Point, DSAP)和源服务访问点(Source Service Access Point, SSAP)的值都设为二进制01000010。Ctrl字段的值设为3。

在这里插入图片描述

  • 当STP初始计算选举根交换机时,各个交换机主动生成并发送配置BPDU。
  • 选举结束后,只有根交换机才能主动生成并发送配置BPDU
  • 非根交换机只有在自己的根端口收到配置BPDU报文才能根据收到的报文生成配置BPDU从指定端口发送。

配置内容:
在这里插入图片描述

报文标识:

参数比特数描 述
Protocol Identifier (协议标识)16比特取值0x0000
Protocol Version Identifier (协议版本标识)8比特取值0x00
BPDU Type (BPDU类型)8比特配置BPDU报文取值0x00
拓扑改变通知BPDU报文取值0x80
Flags (标志)8比特配置BPDU报文取值0x00
拓扑改变配置BPDU报文取值0x01
拓扑改变确认配置BPDU报文取值0x80

STP计算:

参数比特数描 述
Root Identifier64比特当前根交换机的桥ID
Root Path Cost32比特发送该BPDU报文的交换机的根路径开销
Bridge Identifier64比特发送该BPDU报文的交换机的桥ID
Port Identifier16比特发送该BPDU报文的端口ID

时间参数:

参数比特数描 述
Message Age16比特该BPDU报文从根桥发送到当前交换机的总时间,随时间增长而变大,若达到Max Age,则此配置BPDU被认为已经过期
Max Age16比特BPDU报文的最大生命周期,默认取值20s
Hello Time16比特交换机发送配置BPDU的报文周期,默认取值2s
Forward Delay16比特端口Listening和Learning状态的持续时间,默认取值15s

🕘 2.2 TCN BPDU

如果网络拓扑发生了变化,会触发STP 的重新计算,新的生成树拓扑可能会跟原先的网络拓扑存在一定的差异。

在交换机上,指导报文转发的是MAC 地址表,默认的动态表项的生存时间是300 s,此时,数据转发如果仍然按照原有的MAC 地址表,会导致数据转发错误。

为防止拓扑变更情况下的数据发送错误,STP 中定义了拓扑改变消息泛洪机制。

当网络拓扑发生变化的时候,除了在整网泛洪拓扑改变信息外,同时修改MAC 地址表的生存期为一个较短的数值,等拓扑结构稳定之后,再恢复MAC 地址表的生存期。

在这里插入图片描述

在向整网泛洪拓扑改变信息的过程中,共涉及三种BPDU:

  1. 拓扑改变通知BPDU:TCN(Topology Change Notification) BPDU。用于非根交换机在根端口上向上行交换机通告拓扑改变信息,并且每隔Hello Time(2秒)发送一次,直到收到上行交换机的拓扑改变确认配置BPDU或者拓扑改变配置BPDU。
  2. 拓扑改变确认配置BPDU:TCAN(Topology Change Acknowledgment Configuration) BPDU。配置BPDU的一种,和普通配置BPDU不同的是此配置BPDU设置了一个Flag位。用于非根交换机在接收到拓扑改变通知BPDU的指定接口上向下行交换机发送拓扑改变通知的确认信息。
  3. 拓扑改变配置BPDU:TCC(Topology Change Configuration) BPDU。此配置BPDU设置了另外一个Flag位。用于从根交换机向整网泛洪拓扑改变信息,所有交换机都在自己所有的指定端口上泛洪此BPDU。

SWA收到SWB发送的拓扑改变通知BPDU之后,每隔2秒向网络中发送拓扑改变配置BPDU(设置了一个Flag位的配置BPDU),使网络中所有的交换机都把MAC地址表的生存期修改为Forward Delay(15秒),经过一段时间(Max Age加上Forward Delay,默认为35秒)之后,SWA(根交换机)在自己发送的配置BPDU中,清除Flag位,表示网络拓扑已经稳定,网络中的交换机恢复MAC地址生存期。

拓扑改变通知BPDU格式:

参数字节数内容
2字节Protocol Identifier0x0000
1字节Protocol Version Identifier0x00
1字节BPDU Type0x80

在这里插入图片描述
拓扑改变确认配置BPDU和拓扑改变配置BPDU都是配置BPDU的一种,和普通的配置BPDU不同的是:

  • 普通的配置BPDU中Flag字段全部设置为0;
  • 拓扑改变确认配置BPDU将Flag字段的第8位设置为1;
  • 拓扑改变配置BPDU将Flag字段的第1位设置为1。

🕒 3. 实验:了解STP生成过程

题目:作为公司的网络管理员,公司的网络使用了两层网络结构,核心层和接入层,在接入层采用了冗余网络,为避免存在的环路问题,决定使用STP 来进行环路控制。

在这里插入图片描述

设备接口接口类型所属VLAN允许通过VLAN
IOU1Ethernet 0/0TrunkALL
Ethernet 0/1TrunkALL
IOU2Ethernet 0/1TrunkALL
Ethernet 0/2TrunkALL
Ethernet 0/3AccessVLAN 10ALL
IOU3Ethernet 0/1TrunkALL
Ethernet 0/2TrunkALL
Ethernet 0/3AccessVLAN 10ALL
设备接口IP地址
PC-1Ethernet 0192.168.1.1/24
PC-2Ethernet 0192.168.1.2/24

实验步骤:
1、交换机基本配置
(1)在IOU1、IOU2、IOU3上创建vlan 10
(2)在IOU1、IOU2、IOU3上配置access口和trunk口

2、PC配置IP地址

3、STP基本配置
(1)在思科二层交换机中,STP是默认开启的。
(2)查看生成树的情况。(根网桥ID、交换机ID、各端口角色)

 IOU1#show spanning-tree
 IOU2#show spanning-tree
 IOU3#show spanning-tree

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
可以看到,对于IOU3,e0/1为根端口,e0/2为预备(alternative)端口。

(3)测试PC1到PC2的连通性
在这里插入图片描述

(4)关闭IOU3的e0/1口,再次查看生成树的情况

IOU3(config)#int e0/1
IOU3(config)#shutdown

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(5)再次测试PC1到PC2的连通性
在这里插入图片描述

(6)重新打开IOU3的e0/1口,更改IOU3的优先级,使其成为根网桥

IOU3(config)#spanning-tree vlan 1 priority 4096

(7)再次查看生成树的情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值