STP

1.STP基本概念

1.1 桥ID ( Bridge Identification )

早期的交换机被称为“桥(Bridge)",或者“网桥”,受限于当时的技术,早期交换·机的接口数量少得可怜,通常只有两个接口,交换机仅能实现数据帧在这两个接口之间的交换,这也是“桥”这一称呼的由来。

每一台运行STP的交换机都拥有一个唯一的桥ID (Bridge Identification)。桥ID一共8byte,包含16bit的桥优先级(Bridge Priority)和48bit的桥MAC地址,其中桥优先级占据桥ID的高16bit,而MAC地址占据其余的48bit.

在这里插入图片描述

1.2 根桥(Root Bridge)

STP的主要作用之一是在整个交换网络中计算出一棵无环的“树” (STP树),这棵树一旦形成,网络中的无环拓扑也就形成了。

STP的一系列计算均以根桥为参考点。当STP开始工作后,第一件事情就是在网络中选举出根桥。在一个交换网络中,根桥只会有一个。

网络中拥有最小桥ID的交换机将成为根桥。在比较桥ID时,首先比的是桥优先级,桥优先级的值最小的交换机将胜出成为根桥,如果桥优先级相等,那么MAC地址最小的交换机将成为根桥。

交换机缺省的桥优先级为32768,可在系统视图下使用stp priority命令修改,优先级的取值范围是0~61440,并且必须为4096的倍数,例如0、4096,8192等。

1.3 开销(Cost)与根路径开销(Root Path Cost, RPC)

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

接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。

接口Cost是一个非常重要的变量,它将影响STP对于链路的优选。在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,我们将这个“成本”称为RPC (Root PathCost,根路径开销)。

1.4 接口ID (Port Identification)

运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。

接口ID长度为16bit,由两部分组成,其中高4bit是接口优先级,低12bit是接口编号。

2.STP的基本操作过程

STP通过4个步骤来保证网络中不存在二层环路:

1.在交换网络中选举一个根桥( Root Bridge, RB)
STP的计算需要一个参考点,而根桥就是这个参考点,它是STP经计算得到的这棵无环的树的树根。

桥ID最小的交换机将成为根桥。对于一个交换网络而言,正常情况下只会存在一个根桥。

STP的正常工作依赖于该协议所使用的报文的正常交互,这种报文就是BPDU (Bridge Protocol Data Unit,网桥协议数据单元), BPDU中包含着几个重要的数据,这些数据是STP进行无环拓扑计算的关键。

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

2,在每个非根桥上选举一个根接口(Root Port, RP)
在一个交换网络中,除了根桥之外的其他交换机都是非根桥, STP将为每个非根桥选举一个根接口,所谓根接口,实际上是非根桥上所有接口中收到最优BPDU的接口,可以简单地将其理解为交换机在STP树上“朝向”根桥的接口。

非根桥可能会有一个或多个接口接入同一个交换网络, STP将在这些接口之中选举出一个(而且只会选一个)根接口。

在STP收敛完成之后,根桥依然会周期性地向网络中发送BPDU,而非根桥则会周期性地在自己的根接口上收到BPDU,并沿着STP树向下游转发。

3,选举指定接口(Designated Port, DP)
STP将在每个网段中选举一个指定接口,这个接口是该网段内所有接口中到达根桥的最优接口。此外,指定接口还负责向该网段发送BPDU.

对于非根桥而言,根接口的选举过程是非根桥将自己所收到的所有BPDU,进行比较,而指定接口的选举过程则是非根桥用自己计算出的BPDU跟别的设备发过来的BPDU进行比较。

4.阻塞非指定接口,打破二层环路
经STP计算后,如果交换机的某个(或者某些)接口既不是根接口又不是指定接口(我们将这种接口称为非指定接口),那么该接口将会被STP阻塞,如此一来网络中的二层环路也就被打破了。

在这里插入图片描述

在图中, sw3的Port2由于既不是根接口,又不是指定接,口,因此被阻塞。被阻塞的接口既不会接收也不会转发业务数据(业务数据有别于BPDU,可以简单地理解为网络中例如PC等设备发送的应用数据),另外该接口不会发送BPDU,但是会持续侦听BPDU,以便感知网络拓扑的变更情况。

3.STP报文

STP的BPDU有两种类型:配置BPDU (Configuration BPDU)及TCN BPDU (Topology ChangeNotification BPDU),两种BPDU各有各的用途。

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

1.配置BPDU

配置BPDU是STP进行拓扑计算的关键。在交换网络的初始化过程中,每台交换机都从自己激活了STP的接口向外发送配置BPDU。

当STP收敛完成后,只有根桥才会周期性地发送配置BPDU (缺省时,以2s为周期发送配置BPDU,可以在设备的系统视图下使用stp timer hello命令修改发送周期),而非根桥则会在自己的根接口上收到上游发送过来的配置BPDU,并立即被触发而产生自己的配置BPDU,然后从自己的指定接口发送出去。

这一过程看起来就像是根桥发出的配置BPDU逐跳地“经过”了其他的交换机。

字段长度内容
协议ID(Protocol Identifier)2字节协议ID=“0”
协议版本(Protocol Version Identifier)1字节协议版本标识符,STP为0,RSTP为2,MSTP为3。
BPDU类型(BPDU Type)1字节BPDU类型,MSTP为0x02
0x00:STP的配置 BPDU
0x80:STP的TCN BPDU(Topology Change Notification BPDU)
标志Flags1字节对于“标记域”(Flags),第一个bit(左边、高位bit)表示“TCA(拓扑变更确认)”,最后一个bit(右边、低位bit)表示“TC(拓扑变更)
根桥ID(Root Identifier)8字节网桥ID都是8个字节——前两个字节是网桥优先级,后6个字节是网桥MAC地址。
根路径开销(Root Path Cost)4字节根路径开销,本端口累计到根桥的开销。
网桥ID(Bridge Identifier)8字节发送者桥ID,本交换机的桥ID。
接口ID(Port Identifier)2字节发送端口接口ID,发送该BPDU的接口ID。
消息寿命(Message Age)2字节本BPDU的寿命。实际上这并不是一个时间值。
在根桥所发送的BPDU中,该字段值为0,此后BPDU每经过一个交换设备,该字段值增加1,因此实际上这个字段指示的是BPDU所经过的交换设备的个数
最大寿命(Max Age)2字节BPDU的最大存活时间,也被称为老化时间,缺省为20s
Hello时间(Hello Time)2字节发送两个相邻BPDU间的时间间隔。缺省为2s
转发延迟(Forward Delay)2字节接口在侦听和学习状态所停留的时间,缺省为15s

2.TCN BPDU

TCN BPDU的格式非常简单,只有“协议ID"、“协议版本ID"以及"BPDU类型”三个字段,并且"BPDU类型”字段的值为0x80。 TCN BPDU用于在网络拓扑发生变化时向根桥通知变化的发生。

对于STP而言,当拓扑发生变更时,远离变更点的交换机无法直接感知到变化的发生,此时它们的MAC地址表项还是老旧的,如果依然通过这些MAC地址表项来指导数据转发,便有可能出现问题。因此STP需要一种机制,用于在网络中发生拓扑变更时促使全网的交换机尽快老化自己的MAC地址表项,以便适应新的网络拓扑。当拓扑稳定时,网络中只会出现配置BPDU,而当拓扑发生变更时, STP会使用TCN BPDU,以及两种特殊的配置BPDU。

(1) TCN BPDU

TCN BPDU用于在网络拓扑发生变化时向根桥通知变化的发生。

TCN BPDU需要从发现拓扑变更的交换机传递到根桥,而该交换机与根桥之间可能隔着多台交换机,感知到拓扑变化的交换机会从其根接口发送TCN BPDU,也就是朝着根桥的方向发送TCN BPDU,该报文会一跳一跳(每一跳就是一台上游交换机)地向上游传递,直至抵达根桥。

(2) “标志”字段中TCA比特位被设置为1的配置BPDU

STP要求TCN BPDU从发现拓扑变更的交换机传递到根桥的过程是可靠的,因此当一台交换机收到下游发送上来的TCN BPDU后,需使用“标志”字段中TCA比特位被设置为1的配置BPDU回应对方并向自己的上游发送TCN BPDU。这个过程将一直持续,直到根桥收到该TCN BPDU。

(3) “标志”字段中TC比特位被设置为1的配置BPDU

根桥收到TCN BPDU后,也就意识到了拓扑变化的发生,接下来它要将该变化通知到全网,它将向网络中泛洪“标志”字段中TC比特位被设置为1的配置BPDU,网络中的交换机收到该配置BPDU后,会立即将其MAC地址表的老化时间从原有的值调整,为一个较小的值(该值等于转发延迟时间),使MAC地址表能够尽快刷新,以便适应新的网络拓扑。

在这里插入图片描述

4.STP的时间参数

STP定义了三个重要的时间参数。

Hello Time (Hello时间) :运行了STP的交换机发送配置BPDU的时间间隔,缺省为2s。如需修改STP发送配置BPDU的时间间隔,那么必须在根桥上修改,修改完成后,所有的非根桥都与根桥对齐该时间值。

Forward Delay (转发延迟) :运行了STP的接口从侦听状态进入学习状态,或者从学习状态进入转发状态的延迟时间,缺省为15s。

为了避免在生成树收敛过程中网络中可能出现的临时环路,或者短暂的数据帧泛洪现象, STP定义了侦听及学习这两种接口状态,并要求接口从阻塞状态进入转发状态前必须先经历这两个状态,而且分别在这两个状态各停留一个转发延迟时间。这意味着对于STP而言,一个被阻塞的接口被选举为根接口或指定接口后,进入转发状态之前至少需要经历30s的时间。

Max Age (最大生存时间) : BPDU的最大生存时间,也被称为BPDU的老化时间,缺省为20s。

以非根桥的根接口为例,该设备将在这个接口上保存来自上游的最优BPDU,这个BPDU关联着一个最大生存时间,如果在该BPDU到达最大生存时间之前,接口再一次收到了BPDU,那么其最大生存时间将会被重置,而如果接口一直没有再收到BPDU从而导致该接口上保存的BPDU到达最大生存时间,那么该BPDU将被老化,此时设备将会重新在接口上选择最优BPDU,也就是重新进行根接口的选举。

5.BPDU的比较原则

STP按照如下顺序选择最优的配置BPDU

最小的根桥ID;

最小的RPC;

最小的网桥ID;

最小的接口ID

6.BPDU的交互与拓扑计算

发送BPDU报文选举根桥
选举根接口
堵塞非根接口

7.STP接口状态

状态名称状态描述
禁用(Disable)该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down
阻塞(Blocking)该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习
侦听(Listening)当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习
学习(Learning)当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习
转发(Forwarding)处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。接口的角色需是根接口或指定接口才能进入转发状态

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值