STP

1. 为什么需要STP
   在复杂网络拓扑结构中,为了增加网络的可靠性,需要对链路做一定的冗余,以便当其中一条链路或某台交换机出现故障时,整个网络还能保持通畅。
   但是,冗余链路会形成环路,造成网络风暴。
   这种情况下,生成树协议(Spanning Tree Protocol, STP)应运而生。

2. 什么是STP
   生成树协议是一种二层管理协议,它通过有选择地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路备份功能。

3. STP 发展历史
   生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。最初被广泛应用的是 IEEE 802.1D-1998 STP(Spanning Tree Protocol,生成树协议),随后以它为基础产生了 IEEE 802.1w RSTP(Rapid Spanning Tree,快速生成树协议)和 IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)。
   在这里插入图片描述
4. 相关概念
   (1)Bridge Group Address
      STP协议使用的所有BPDU都是组播报文,目的MAC是01-80-c2-00-00-00
   (2)Root Bridge
      根桥(Root Bridge),就是“网桥ID”最优的桥,当STP的拓扑结构稳定之后由根桥负责每2秒(Hello Time)向树中所有的网桥发送配置BPDU报文(只有根桥会发),其他网桥接收并转发。
根桥有且只有一个,它是整个网络的逻辑中心,不一定是物理中心。根据网络拓扑的变化,根桥可能改变。
   (3)Port Pole
      在这里插入图片描述
      ①Root Port,根端口,即去往根桥路径最近的端口,这个最近的衡量是靠 Root Path Cost 来判定的。Path Cost 的计算,是每当一个端口收到一个 BPDU 后,会在该 BPDU 所指示的 Path Cost 上加上该端口的 Port Path Cost(这是可以人为配置的)。比较累计 Root Path Cost 最小的端口就是根端口,如果两条路径开销相同,那么就选择 BID 较小的。
      ②Designated Port,指定端口,即在一个 LAN 里面负责转发 BPDU 的端口,根桥和非根桥上都有它,但根端口只在非根桥上有,同样 block 端口也只存在于非根桥上。
      ③Alternate Port,替换端口,由于学习到其他设备发送的BPDU报文而阻塞的端口,作为根端口的备份端口,提供了到根桥的另一条可切换的路径。
      ④Backup Port,备份端口

5. STP 工作原理
   (1)生成树算法
      生成树协议运行生成树算法(STA)。其过程可以归纳为以下三个步骤:
      1)选择根网桥(Root Bridge)
      2)选择根端口(Root Ports)
      3)选择指定端口(Designated Ports)
   (2)工作过程
      ①选择根网桥
         刚上电时,所有的交换机都认为自己是“根桥”,向外发送配置BPDU
         根据网桥ID,网桥ID最小的被选为 Root Bridge

struct bridge_id
{
	unsigned char	prio[2];			   // 默认 32768
	unsigned char	addr[ETH_ALEN];
};
LSW1:CIST Bridge         :32768.4c1f-cce5-1c02
LSW2:CIST Bridge         :32768.4c1f-cc9f-5fde	// 最小,被选为 Root Bridge
LSW3:CIST Bridge         :32768.4c1f-ccf2-23fd

在这里插入图片描述
      ②选择根端口
         选出了根网桥后,STP开始选择根端口。根端口存在每个非网桥上,需要在每个非根网桥上选择一个根端口。
选择根端口按照如下顺序:
         a)到根网桥最低的根路径开销的端口
         b)直连的网桥 的ID 最小的端口
         c)端口 ID 最小
         到达根路径的cost值计算方式为收到的cost值 + root端口的cost值
根路径开销,是指当前口收到的从Root Bridge发出的BPDU的路径开销,而不是从这个口发出去的。
现在要在LSW1、LSW3上选择Root Port。先看LSW1,GE 0/0/1 口的根路径开销为20000,GE 0/0/2 口的根路径开销为40000(经过LSW3),所以会选择 GE 0/0/1 为 Root Port。同理可得 LSW3 会选择 GE 0/0/2 为 Root Port
      ③选择指定端口
         选择完根网桥和非根网桥的根端口后,一个树形结构已初步形成,但是,所有链路仍然连接在一起,并可以到处处于活动状态,最后导致形成环路。
         为此,STP进行最后的计算,在每一个网段(网线)上选择一个指定端口,选择指定端口的依据有三个:
         a)根路径成本较低
         b)所在的交换机的网桥ID较小
         根网桥上的接口都是指定端口(原因?:因为根网桥上端口的根路径成本为0)
         LSW1的GE 0/0/1 和 LSW3的 GE0/0/2 已经被选为Root Port了,现在只能在 LSW1的GE0/0/2 和 LSW3的GE 0/0/1中选择一个作为指定端口了,两个端口的路径开销相同(都为40000),那么只能比较网桥的ID了,LSW1的网桥ID较小,所以LSW1上的端口选作指定端口。
STP 计算过程结束,这时,只有在LSW3上连接到LSW1的端口既不是根端口,也不是指定端口,那么这个端口被阻塞(Block)。被阻塞的端口不能进行数据传输。
         由于端口阻塞,所以拓扑结构等价于图STP_2
         LSW1和LSW3之间的链路成为备份链路。
         在这里插入图片描述
6. 帧格式
BPDU 报文帧格式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7. 技术细节
   (1)端口状态
      #define BR_STATE_DISABLED 0 // 什么功能都没有,只有一个逻辑设备。
      #define BR_STATE_LISTENING 1 // 可以接收和发送网络传输的BPDU,但不能进行数据帧的转发、不能学习。
      #define BR_STATE_LEARNING 2 // 可以接收和发送BPDU,可以学习,但是不能进行数据帧的转发。
      #define BR_STATE_FORWARDING 3 // 可以接收和发送BPDU、可以学习、可以进行数据帧的转发。
      #define BR_STATE_BLOCKING 4 // 只能接收BPDU,不能发送BPDU,不能学习,不能转发数据帧。

      Disabled:或down状态,认为物理上断掉
      Listening:收发BPDU、不能学习、不能转发流量。这是一种过渡状态,上述三步选择(根桥、根端口、指定端口)就是在该状态内完成的。(可以理解为此状态在构建网络拓扑结构)
      Learning:收发BPDU、地址表学习、不能转发流量。这是一种过渡状态,主要为了构建MAC地址表,所以叫做学习状态。
      Forwarding:收发BPDU、地址表学习、转发流量,只有根端口和指定端口才有这种状态
      Blocking:接收BPDU、不能发送BPDU、不能学习、不能转发流量。STP之所以能够阻断环路,就是依赖于将某些端口置为Blocking状态。交换机开启,端口由Disabled状态进入Blocking状态,若任何端口都收不到BPDU,持续Max Age时间后,端口进入Listening状态。或者本身被选举为根端口,也会马上进入Listening状态。
   (2)端口状态转移
   在这里插入图片描述
      (3)3个计时器
         对于STP,有3个计时器影响着端口状态以及网络收敛
         Hello Timer:交换机发送BPDU的时间间隔,当网络拓扑稳定后,该定时器的修改只有在根桥修改才有效。
         Forwarding Timer:一个端口处于Listening和Learning的时间,默认为15秒。即Listening状态持续15秒,随后Learning状态再持续15秒。这两个状态下的端口不能转发流量。在端口被选为根端口或者指定端口后,还需要等待两个Forwarding Delay才能进行转发,这是因为拓扑结构生成需要时间,当拓扑结构发生变化后,BPDU逐跳传递,如果先感知的交换机采用新的拓扑结构,后感知的交换机还在使用老的拓扑结构,有可能形成环路,所以这两个Forwarding Delay是为了避免产生临时环路。
         Max Age:端口的BPDU老化时间,如果超过这个时间还收不到BPDU,则认为该端口上的BPDU老化。这个时间默认为20秒。

8. 版本差异
   RSTP
      (1)端口角色增补
         增加Alternate Port、Backup Port
      (2)端口状态缩减
         Blocking、Listening 统一为 Discarding 状态
         Discarding:不学习地址表、不转发流量
         Learning:学习地址表、不转发流量
         Forwarding:学习地址表、转发流量
      (3)BPDU报文格式
         a)Type字段,由0改为2
         b) Version字段,由0改为2
         c) Flag字段,把原来保留的中间6位使用起来
         在这里插入图片描述
         在这里插入图片描述
      (4)收敛速度更快
         STP协议中BPDU的超时时间为老化时间(Max Age),默认20秒。RSTP中超时时间为3个Hello Time时间。
      (5)边缘端口
         如果某指定端口位于整个域的边缘,即不再与其他交换机连接,这种端口就叫做边缘端口(需要手动设置)。边缘端口不参与RSTP运算,可以由Disabled直接转到Forwarding,不经历时延。很像在端口上把STP禁用了,但端口一旦收到BPDU,就丧失了边缘端口属性,成为普通STP端口。
      (6)RSTP向下兼容STP
         RSTP交换机在某端口上收到STP交换机的BPDU后,会在2个Hello Time时间后,把自己的端口转换到STP工作模式,发送配置BPDU。并且有选项可以设置,在STP交换机撤走之后,RSTP交换机是否可以迁移回RSTP模式。
      (7)纯STP交换机收到RSTP的BPDU会直接丢弃
   MSTP
      (8)Vlan的出现
         STP是Vlan无关的协议(在设计STP协议的时候,Vlan(IEEE 802.1Q)还没有出现),有了Vlan之后,使用STP时,会出现一颗生成树包含两个及以上Vlan的情况(这就是所谓的CST Common Spanning Tree,公共生成树)。STP对Vlan无感,进行自己的阻塞算法,可能导致某些链路不通。
针对这种情况,Cisco提出了PVST(per-Vlan Spanning Tree),每个Vlan对应一颗生成树。
      (9)MSTP的出现
         RSTP无法实现负载分担
         RSTP下有些Vlan可能会不通
         PVST中每个Vlan一个STP拓扑结构,交换机间要分别处理每棵树上的BPDU,开销很大。
         Multiple Spanning Tree Protocol,多生成树协议,IEEE 802.1s,提出了Vlan和生成树之间的“映射”思想。
1个或若干个Vlan可以映射到同一棵生成树,但是每个Vlan只能在一棵生成树里。
         一个交换机可以跑多个生成树,为了区分,每一个生成树叫做一个MSTI(多生成树实例)。
      (10) 角色
         在MSTP中,一个端口可以在不同的生成树实例中充当不同的角色。
      (11) BPDU报文格式
         前35字节和RSTP相同(Version 改为3),从第36字节开始时MSTP专有段,为MSTI配置信息,由若干MSTI配置信息组组成。
         在这里插入图片描述
      (12) 拓扑结构
         在这里插入图片描述
9. 小结
   (1)rx:Root Port、Alternate Port、Backup Port
   (2)tx:Designated Port
   (3)对于非根网桥来说,Root Port有且只有一个
   (4)由于根桥只会向外发包,所以其所有端口都是Designated Port
   (5)一根网线两端,有且只有一个Designated Port。
   (6)网络拓扑稳定后,只有根桥会向外发BPDU。
   (7)网络拓扑稳定后,只有根端口和指定端口转发流量。其它端口都处于Blocking状态。
   (8)在一个网段上拥有指定端口的交换机,被称作该网段的指定网桥

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li-Yongjun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值