STP的端口迁移以及P/A机制

简介: 这个主要讲STP的端口迁移以及P/A机制

本篇我主要讲的是STP的端口迁移和P/A机制

1. STP的端口迁移

STP的端口状态有五种:禁用(去能)状态,阻塞状态,侦听状态,学习状态,转发状态
(1)STP端口的五种状态:
在这里插入图片描述
(2)端口状态迁移:
在这里插入图片描述
我将围绕这个图讲解:
1.STP交换机的端口在初始启动时,首先会从Disabled状态进入到Blocking状态,在Blocking状态,端口只能接收和分析BPDU,但不能发送BPDU。

2.如果端口选为根端口或者指定端口,则会进入Listening状态,此时端口接收并发送BPDU,这种状态会持续一个Forward Delay的时间长度(缺省值:15s);如果没有因”意外情况“,而回到Blocking状态,则端口会进入到Learning状态,并在此状态持续一个Forward Delay的时间长度。

3.处于Learning状态的端口可以接收和发送BPDU,同时开始构建MAC地址映射表,为转发用户数据帧做好准备。处于Learning状态的端口不能转发用户数据帧(因为此时网络中还存在因STP树的计算过程不同步而产生的临时环路)

4.最后,端口由Learning状态进入Forwarding状态,开始用户数据帧的转发工作。

5.总结:
(1)在整个状态的迁移过程中,端口一旦被关闭或者发送链路故障,就会进入到禁用状态;
(2)在端口状态的迁移过程中,如果端口的角色被判定为非根端口或非指定端口,则其端口状态就会退回到Blocking。

6.MSTP(多生成树协议)定义的3种状态:Discarding、Learning、Forwarding。

2.STP端口状态迁移的示例:

下面演示STP交换机的端口角色和端口选举过程:

(1)假设交换机S1,S2,S3大概同一时刻启动,各交换机的各个端口理解从Disabled状态进入Blocking状态,由于处于Blocking状态的端口只能接收不能发送BPDU,所以任何端口都收不到BPDU,在等待Max Age时间(缺省值:20s)后,每台交换机都会认为自己是根桥,所有的端口都设置为指定端口,并且端口的状态迁移为Listening。

(2)交换机的端口进入Listening状态后,开始发送自己的Configuration BPDU,同时也接收其他交换机发送的Configuration BPDU。
假设S2最先发送Configuration BPDU,当S3的GE0/0/2端口收到S2发送的Configuration BPDU后,会认为S2是根桥(因为S2的BID小于S3的BID),于是S3会把GE0/0/2设置为根端口,然后自己重新产生的,根桥为S2的Configuration BPDU从自己(S3)的GE0/0/1发送出去

【1】当S1的GE0/0/1收到S3发送的Configuration BPDU后,会发现自己更应该成为根桥,于是立即向S3发送自己的Configuration BPDU;
【2】当然,如果S1从自己的GE0/0/2收到S2发送的Configuration BPDU 也会立即发送自己的Configuration BPDU。

【1】(根端口确认) S2和S3收到S1发送的Configuration BPDU后,会确认S1就是根桥,于是S2的GE0/0/1和S3的GE0/0/1设置为根端口,
【2】(备用端口和指定端口确认)S2和S3会各自从GE0/0/2端口发送新的Configuration BPDU,然后,S3的GE0/0/2将成为备用端口(因为S2的BID小于S3的BID),端口进入Blocking状态,S2的GE0/0/2将成为指定端口。

因为交换机发送BPDU的时间先后有一定的滞后性和随机性,所以上述过程不是唯一的。
总结:无论各个交换机的端口最开始的状态是如何的,也无论中间的过程差异如何,最终的结果总是确定并且唯一的;

<1>BID最小的交换机将成为根桥,<2>各端口的角色会变化成为自己应该扮演的角色。

(3)各个端口(除S3的GE0/0/2)将进入Learning状态后,会持续Forward Delay的时间长度(缺省值:15s)后,在此时间中,交换机开始学习MAC地址与端口的映射关系。同时希望STP树在这段时间能够完成完全收敛。

(4)然后,各个端口(除S3的GE0/0/2)将进入Forwarding状态,开始转发用户数据帧的工作。
在这里插入图片描述

3.P/A机制

(1)RSTP端口状态:
Forwarding:能转发用户数据帧,能学习MAC地址
Learning:不能转发用户数据帧,能学习MAC地址
Discarding:不能转发用户数据帧,也不能学习MAC地址

(2)在STP计算中,一个端口在成为指定端口后,需要等待至少两倍的Forward Delay的时间才能够进入到Forwarding状态。

在RSTP计算中,一个端口在成为指定端口后,此端口的先进入到Discarding状态(不能转发用户数据帧,也不能学习MAC地址),后采用Proposal/Agreement机制(P/A机制)主要与对端端口进行协商,通过协商动作后,就可以立即进入到Forwarding状态(能转发用户数据帧,能学习MAC地址)
角色缩写: DP=指定端口,AP=阻塞端口(非指定端口) RP=根端口
在这里插入图片描述

  1. P/A的根本目的:为了加快某DP端口和RP端口互联链路上两端口快速进入转发状态不等30s的2xforwarding delay。要成功进行PA快速协商机制只会出现在上边DP下边RP的情况下。

(1)首先两台设备比BPDU确定谁是上游DP,谁是下游RP(或AP)。

(2)所谓P/A机制,就是在这个过程以后,上游DP捉急要进入转发状态,这才向下发P置位BPDU的请求。P/A协商根本目的就是为了加快某DP端口和RP端口互联链路上两端口快速进入转发状态而无需等30s(2倍forwarding delay )。

(3)P/A简要过程:
0.比如两台设备新加了一条线路。然后在这条线路上依次进行下述步骤(初始上下游接口均为DP角色,在第1步的操作后才变为DP/AP/RP):
1.两台设备互联接口互比缓存BPDU,确认谁是上游(端口角色为DP)谁是下游(端口角色为RP或AP。如果下游是RP端口则继续看step2,如果下游是AP端口则直接参见第三段文字)

2.上游因为是DP,特别着急进入forwarding状态,所以才发送P置位BPDU发起P/A协商。

3.如果下游接口在第一步比较BPDU中确定为RP,则会将自己的所有下游DP接口(除edge port以外)和原RP接口变为discarding状态阻塞掉(即端口sync)。

4.sync完成后,下游直接将其RP口变成forwarding状态,并向上游发送A置位BPDU(该BPDU源自上游发送的P置位的最新BPDU)以示同意。

5.然后上游交换机收到下游交换机发送的A置位BPDU,则会将其DP端口直接变成forwarding状态。至此上下游的DP端口和RP端口均已进入转发状态,免去等待30s的痛苦。

6.下游交换机继续向其被discarding的其他DP口发起P/A协商以便快点进入forwarding状态。注:相比STP协议中DP端口变forwarding前需要等待两个转发延迟的30s时间,这个P/A协商可能只需要几秒钟就协商完进入forwarding状态了。

注:如果下游的接口并未被选举为RP而只是个普通AP怎么办?如果下游设备发现这个接口收到的BPDU没其他某个接口(如现存的RP接口)收到的BPDU优先则下游设备会认为这个接口角色应为AP接口而不是RP。则该(AP)接口就不会去回应上游发送A置位BPDU而只发送普通BPDU。这样上游会一直每两秒发一个P置位BPDU,下游一直不响应A置位BPDU。直到等待1个forwarding delay后该上游DP才会由discarding变为learning状态,再等一个forwarding delay后上游DP才会变为forwarding状态。

感谢作者ZZZZ对P/A机制的解释。我对P/A的理解也是处于了解的阶段,并没有太过深入的理解。希望我的文章对你学习有所帮助。十分感想读者的访问和阅读。希望可以得到你们的关注和收藏。
作者:ZZZZ
链接:https://www.zhihu.com/question/35495673/answer/79530293

目录
相关文章
|
算法
交换机:广播风暴产生原因与解决方法、STP生成树协议 ,根桥(根交换机)、备份根桥、非根交换机、根端口、指定端口、非根非指定端口、桥ID
广播风暴产生原因和危害、STP生成树协议 概念和作用、STP生成树根桥选举规则,根桥、备份根桥、非根交换机、根端口、指定端口、非根非指定端口、桥ID的选择条件,根换交换机接口Cost计算标准命令,华为设备默认的标准是IEEE 802.1t标准,思科设备默认的标准是IEEE 802.1d标准(标准可用命令更换),查看交换机的BID的命令........................
交换机:广播风暴产生原因与解决方法、STP生成树协议 ,根桥(根交换机)、备份根桥、非根交换机、根端口、指定端口、非根非指定端口、桥ID
|
Java 数据处理
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
546 0
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
|
运维 Linux
Linux 环境运维 - 查看远程调试端口被占用的ip地址,设置连接处于空闲状态快速自动化断开方法,keepalive机制相关说明
Linux 环境运维 - 查看远程调试端口被占用的ip地址,设置连接处于空闲状态快速自动化断开方法,keepalive机制相关说明
320 0
Linux 环境运维 - 查看远程调试端口被占用的ip地址,设置连接处于空闲状态快速自动化断开方法,keepalive机制相关说明
|
缓存 算法 网络协议
【Java 网络编程】客户端 Socket 配置 ( 超时时间 | 端口复用 | Nagle 算法 | 心跳包机制 | 连接关闭机制 | 缓冲区大小 | 性能权重设置 | 紧急数据设置 )
【Java 网络编程】客户端 Socket 配置 ( 超时时间 | 端口复用 | Nagle 算法 | 心跳包机制 | 连接关闭机制 | 缓冲区大小 | 性能权重设置 | 紧急数据设置 )
1093 0
|
7月前
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
828 1
|
7月前
|
弹性计算 运维 数据安全/隐私保护
云服务器 ECS产品使用问题之如何更改服务器的IP地址或端口号
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
7月前
|
网络协议 Linux Unix
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
173 0
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
|
6月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题

热门文章

最新文章