STP,RSTP,MSTP原理 您所在的位置:网站首页 stp原理详细解析 STP,RSTP,MSTP原理

STP,RSTP,MSTP原理

2023-09-13 04:19| 来源: 网络整理| 查看: 265

在组网中,很可能会出现环路或者称冗余链路,为避免形成广播风暴,需要一种方法来避免形成环路,并且在主链路故障中断时候,可以将冗余链路自动切换为转发状态,以恢复网络的连通性。生成树协议(STP、RSTP、MSTP)就可以实现这样的功能。

BPDU(Bridge Protocol Data Unit,桥协议数据单元):用于网桥之间传递BPDU来交互协议信息。BPDU分为配置BPDU和TCN BPDU。配置BPDU用来进行生成树的计算和维护生成树拓扑的报文。TCN BPDU是当拓扑结构改变时候,用来通知相关桥设备网络拓扑结构发生变化的报文。

接口状态

禁用(Disable)

不能收发BPDU,也不能收发数据帧

阻塞(Blocking)

该接口被STP阻塞。不能发送BPDU,但是会持续侦听BPDU。不能收发数据帧

侦听(Listening)

表明STP初步认定该接口为根接口或指定接口,但STP还在计算过程中,可以收发BPDU,但不能收发数据帧,也不能进行MAC地址学习

学习(Learning)

会侦听业务数据帧,但不能转发数据帧,并可以学习MAC

转发(Forwarding)

正常收发数据帧,也会进行BPDU处理,只有根端口或指定端口才能进行转发态

当交换机的一个接口被激活后,该接口会从禁用状态自动进入阻塞状态。阻塞状态的接口如果被选举为根接口或者指定接口,那么它将从阻塞状态进入侦听状态,并在侦听状态停留15s(转发延迟时间),为了让STP完成整个网络的计算。15s后如果还是根接口或者是指定接口,就会进入学习状态,因为此时交换机没有学习到任何MAC地址,这个状态也要停留15秒,之后才会变成转发态。

每一个交换机启动stp服务,都会认为自己是跟桥,并向外发送以自己为根桥的配置BPDU报文。

交换机接收到BPDU报文,会和自己的桥ID对比,桥ID由优先级和mac地址组成,先比较优先级,优先级相同,再比较mac地址,值越小就会认为更优。比如接收到BPDU报文的root id为8192-0000.0000.0001,自己的桥id为32768-0000.0000.0002,因为先比较优先级,优先级8192优于32768,则认为自己不是根桥,就不发送认为自己是根桥的BPDU了,并通过接收到的BPDU报文更新自身的配置BPDU。直到网络中所有的交换机都达成一致,认为某一个交换机为根桥,根桥的选举结束,从而确认唯一根桥。

确定端口角色

当确认自己本身不是根桥的同时就开始确认端口角色了。

确定根端口

当一个交换机多个接口同时接收到了根桥发来的配置BPDU报文,会获取Root Path Cost,也就是根路径开销,与接收端口的链路开销相加,得到此端口到根桥的根路径开销,对比,根路径开销值最小的作为根端口。

如果根路径开销相同,对比BPDU报文中的Bridge Identifier,也就是发送该BPDU报文指定桥的ID,ID小的作为根端口。

如果指定桥ID也相同,则对比Port Identifier,发送口的端口ID,ID小的作为根端口

确定指定端口和Alternate备份端口

当确定根端口后,会将通过自己从根端口收到的BPDU报文计算生成的配置BPDU报文与非根端口接收到的配置BPDU进行比较,依次对比根路径开销、指定桥和端口id,自己计算产生的BPDU优于接收到的,则将此接收到的端口设置为指定端口,否则设置为Alternate端口(即阻塞起来)。

拓扑结构发生改变时 当有端口断开或新网桥加入时,拓扑发生了改变,就会使用到TCN BPDU报文,目的是让STP能快速的收敛。

产生BPDU报文的条件:

网桥上有端口转变为Forwarding转发状态,且该网桥至少包含一个指定端口。 网桥上有端口从Forwarding状态或Learning状态转变为Blocking状态。 拓扑改变时候STP处理步骤:

会从该发生变化的交换机的根端口发送TCN BPDU报文,报文中flags的TC位置1 上游交换机收到TCN BPDU报文,会将下一个配置BPDU报文中的TCA置为1,发送给下游交换机 重复1,2步骤,直到根桥交换机收到TCN BPDU报文,并将下一个配置BPDU报文中的TCA置为1,发送给下游所有的交换机,各网桥收到TCA置为1的配置BPDU报文后,会将MAC地址老化时间缩短为15秒 STP的不足 为避免环路,每一个端口在确认为根端口或指定端口后仍需要等待30s才能进入转发状态。

对于网络中有大量主机时候,频繁上下线会导致频繁发送TCN BPDU报文,导致网桥MAC地址老化时间长期为15s。

RSTP(802.1W,Rapid Spanning Tree Protocol,快速生成树协议)

STP与RSTP区别概要

STP

RSTP

端口状态

禁用、阻塞、侦听、学习、转发

丢弃、学习、转发

端口角色

根端口、指定端口、备份端口(Alternate)

根端口、指定端口、根备份端口(Alternate)、指定端口备份端口(Backup)

RSTP端口会在Discarding状态完成角色的确定,当端口确定为根端口或指定端口后,经过Forward Delay时间会进入Learning状态,比STP就少一个Forward Delay时间,并且有P/A快速机制,可以直接从Discarding直接到Forwarding状态。不是根端口或指定端口就会维持Discarding状态。

端口角色 根端口和指定端口角色的定义和STP相同,就不说了。

较STP新增了两个端口概念,替代接口和备份接口。但同样都是阻塞起来的,只是为了指定端口出故障时可以快速收敛。

替代接口(Alternate)

可以理解为根接口的备份接口,是由于收到了其他设备发送的BPDU且优于自身所要发送的BPDU从而被阻塞的接口。当根端口进入阻塞状态时,会选择优先级最高的替代接口作为新的根端口。当对端端口是Forwarding状态,则可以立即进入转发状态。

备份接口(Backup)

一台设备上收到了自己所发送的BPDU从而被阻塞的接口。

如图,LSW2上的GE 0/0/3阻塞,因为是收到了LSW3的BPDU报文,形成了环路,且收到的BPDU报文比自己的优,从而阻塞,就变成了替代接口。而LSW2上的GE 0/0/5,因为收到的是自己发送过来的BPDU报文且端口id较大被阻塞,从而变成备份接口。

BPDU报文

与STP BPDU相比较

Protocol Version Identifier为2 BPDU Type为0x02,表示为RST BPDU BPDU flags使用全部的8位 在报文的最后增加了Versionl Length字段,值为0,表示本BPDU中不包含Versionl内容。 最高位和最低位TCA和TC与STP相同。Agreement(同意)及Proposal(提议)用于RSTP的P/A机制,会大大提高RSTP的收敛速度。Port Role(接口角色)两个bit位,01表示根接口,10表示替代接口,11表示指定接口,00保留。Forwarding(转发)和Learning(学习)用于表示该RST BPDU发送接口的接口状态。

RSTP与STP不同,在网络稳定后,STP的非根桥之会转发根桥发来的BPDU报文,而RSTP无论是非根桥还是根桥都会周期性的发送BPDU。

在STP中只有在指定端口收到低优先级的配置BPDU时才会立即回应(发送自己计算的配置BPDU报文),阻塞状态端口不会对低优先级的配置BPDU做出回应。

在RSTP中,指定端口或阻塞状态的端口收到低优先级的RST BPDU,也可以立即对其做出回应。

P/A快速收敛机制 当网络中增加新的链路或故障链路恢复时,链路两端必有一个端口的角色是指定端口,在STP中,该指定端口需要等待30s才能进入Forwarding状态。

P/A机制是指定端口可以通过与对端网桥进行一次握手,即可快速进入转发状态,无需任何定时器。

前提条件是必须是点到点的链路。

当新链路连接时候,链路两端的端口初始都为指定端口并处于阻塞的状态。

当指定端口处于Discarding和Learning状态时,所发送的BPDU中的Proposal位将被置为1,端口的角色位11,是指定端口。(都是指定端口发的哟)

收到Proposal置位的RST BPDU报文后,交换机会判断接收端口是否为根端口,如果是根端口,会进行同步过程,同步过程是阻塞除边缘端口(直接与用户终端相连,没有连接到其他交换机或者网桥,一般需要手动配置为边缘端口,可以忽略Forward Delay时间直接进入Forwarding状态,无时延)之外的所有端口,为了消除本交换机产生环路的可能。

完成同步过程后,根端口进入转发状态并从根端口回发Agreement置为1的RST BPDU报文,内容复制收到的Proposal置为的RST BPDU报文,唯一不同的就是Flags字段的Agreement也置为1。

收到Agreement置1的BPDU报文后,该接口会立即进入转发状态。

同步过程阻塞的接口也会继续往下进行这个过程。

如果指定端口发出Proposal置位的BPDU后没有收到Agreement BPDU报文,则该端口需要等待30s(两个延迟时间)才会进入转发状态。

拓扑改变处理 在STP中,端口变为Forwarding状态或从Forwarding变为Blocking状态均会触发拓扑改变处理过程,而RSTP只在非边缘端口转为Forwarding状态时才会触发处理过程。

当交换机由非边缘端口转变为Forwarding状态时,网桥会在两倍的Hello Time时间内向根端口以及指定端口发送TC置位为1的RST BPDU,同时清除这些端口学习到的MAC地址。

其他交换机收到TC置位的RST BPDU时候,会清除接收TC报文的端口以及边缘端口之外的其余端口MAC地址,并同样会在两倍的Hello Time时间内向根端口以及指定端口发送TC置位为1的RST BPDU报文。

交换机收到TC置位的RST BPDU后不需要在Max Age+Forward Delay时间内将MAC地址老化时间设置为Forward Delay,而是直接清除端口MAC地址,重新进行学习,从而实现更快的收敛。

注:本人使用华为模拟器,拓扑改变收到拓扑改变的报文,并没有立即清除端口mac,好像是一个Foreard Delay时间后才清除mac。

RSTP和STP的兼容 当运行RSTP的交换机连续3次接收到配置BPDU时候,认为改端口和STP相连,该端口将切换到STP协议运行。

MSTP(802.1S,Multiple Spanning Tree Protocol,多生成树协议) 基本思想

基于实例(Instance)计算出多棵生成树,每个实例都会生成自己的生成树,并且每个实例可以包含一个或多个VLAN,每一个VLAN只能映射到一个实例。交换机可以通过配置多个实例,实现不同VLAN组之间的负载分担。

基本概念解释

MST域是一个具有相同域名、修订级别和摘要信息的网桥或交换机构成的集合,一个域可以包含多个实例。

域名,本域的名称,MSTP中每一个域都有一个独一无二的名称,配置不同域名会被认为属于不同的域。

修订级别,目前保留,默认为0。

配置摘要,由网桥的vlan和实例映射关系生成的长度为16字节的HMAC-MD5签名。

IST是MST域内的一颗生成树,每颗生成树对应一个实例。实例号为0,一定存在的

MSTI是多生成树实例,实例号从1开始,为0的实例号是IST

MSTI域根,是每一个MSTI实例上优先级最高的网桥

CST(公共生成树)是网络内所有MST域通过计算得到的一棵树。

CIST(公共和内部生成树)是整个网络所有设备经过生成树计算得到的一棵树。由IST和CST共同构成。

CIST总根,是整个网络中优先级最高的桥,是CIST的根桥。

CIST域根,IST的根桥即为CIST的域根,是MST域内距离总根最近的桥,也称为Master桥。

端口角色 相较RSTP,桥的角色上,MSTP增加了Master桥。端口角色上,增加了域边界端口以及Master端口。根端口、指定端口、Alternate端口、Backup端口定义和RSTP一样。

IST(实例号为0网络)中距离总根最近的桥为Master桥,该桥为IST的根,Master桥指向总根(整个网络中优先级最高的桥)的端口为Master端口。

MST域内网桥和其他MST域或STP/RSTP网桥相连的端口称为域边界端口,Master端口也是域边界端口。

如下图创建了三个区域,暂时都只有IST(实例0),优先级和MAC都是我编的,然后下图标注了MSTP所有的概念,更方便理解吧。

MSTP计算方法 每个BPDU既包含CIST计算所需的信息,也包含MSTI计算所需要的信息。

计算生成树时候和RSTP类似,在进行CST计算时,会把MST域看做逻辑上的一个网桥,网桥ID为IST域根的ID也就是Master桥ID(距离总根最近的桥)。

当网桥收到BPDU并判断不是同一个域后,不会解析MST专有字段的信息。

初始时每个网桥都认为自己是总根,发送以自己为总根、域根和指定桥的BPDU。

计算端口角色和交换机角色过程与RSTP相同。

CST(公共生成树)的计算过程

需要对比的优先级向量为{总根、外部路径开销、域根、指定端口ID、接收端口ID},因为生成CST时候把相同的域当做一个网桥了,网桥ID为MST域的Master桥ID,所以自然无需对比内部路径开销和指定桥ID了。 初始时,每个域根向其他域根发送以自己为总根的BPDU。 确定“根网桥”(一个域看成一个网桥),也是CIST的总根。 确定端口角色“根端口”也就是一个域的Master端口,“根端口”的网桥也就是域根。 确定指定端口、Alternate端口或者Backup端口。 阻塞域之间的Alternate端口和Backup端口。 IST(内部生成树)和MSTI(内部生成树实例)的计算过程

经过CST的计算生成了域内的根桥(即Master桥)

所需要比较的优先级向量为MSTI优先级向量,即{域根ID、内部路径开销、指定交换设备ID、指定端口ID、接收端口ID}

域内网桥通过比较内部路径开销来确定根端口。 通过比较BPDU的优先级确定指定端口、Alternate端口或者Backup端口。 阻塞IST上的Alternate端口和Backup端口。 MSTP与RSTP交互 RSTP网桥收到MSTP的BPDU时,会将MSTP的BPDU报文里的CIST总根ID,外部路径开销,域根ID,指定端口ID分别与RSTP的BPDU报文里的根桥ID,根桥开销,指定桥ID,指定端口ID对应。

MSTP网桥收到RSTP的BPDU时,会将RSTP的BPDU报文里的根桥ID,根桥开销,指定桥ID,指定端口ID分别与MSTP的BPDU报文里的CIST总根ID,外部路径开销,域根ID,指定端口ID对应。

P/A快速收敛机制 MSTP支持RSTP的快速收敛机制,但有不同点。详细的可以看上面的RSTP的P/A机制,这里只写区别。

RSTP是上游交换机指定端口发送Proposal置位的BPDU,下游网桥执行同步操作之后回应Agreement置位的BPDU,上游网桥收到Agreement置位的BPDU后其指定端口可以立即进入转发状态。

MSTP是上游交换机指定端口发送Proposal置位和Agreement置位的BPDU,下游网桥收到BPDU后执行同步操作然后回应Agreement置位的BPDU,上游网桥收到Agreement置位的BPDU后其指定端口可以立即进入转发状态。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有