当前位置: 首页 > article >正文

学习笔记——交换——STP(生成树)工作原理

三、工作原理

STP的基本原理是在一个有二层环路的网络中,交换机通过运行STP,自动生成一个没有环路的网络拓扑。这个无环网络拓扑也叫做STP树(STP Tree),树节点为某些交换机,树枝为某些链路。当网络拓扑发生变化时,STP树也会自动地发生相应的改变。

1、选举简介

STP树的生成过程是:首先选举根桥,然后确定根端口和指定端口,最后阻塞备用端口。(上右图)

(1)首先在交换网络中选举一个根桥(Root Bridge)

选举根桥,就是选根交换机。STP在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID(BID)。

在一个连续的STP交换网络中只会存在一个根桥,比较全网最小的BID的交换机成为根桥,根桥具备抢占性,具备唯一性。除根桥外,其余交换机成为非根桥

首先比较桥的优先级,默认都是32768越小越优先优先级一样对比桥MAC,也是越小越优先,根桥上所有端口都是指定(DP)端口。(根桥上的指定(DP)端口不会被阻塞)

为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0。

(2)在每台非根交换机(根桥)选举一个根端口(RP)

在每个非根桥交换机都会在自己的接口中选举一个根端口(RP:接受来自根桥最好BPDU的接口)

非根桥交换机上有且只会有一个根接口。当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU的接口。

(3)在每条链路选举出一个指定端口(DP)

根接口选举出来后,每段链路上有且只有一个指定端口,在每条链路上(冲突域)都会选举一个指定端口。(DP:负责在链路上转发根桥最好BPDU的接口,一般情况下,根桥所有的接口都是DP口)

对比该段链路两端的桥的优先级及桥MAC,小的获胜,该桥侧的端口成为指定端口DP(不会阻塞),链路另一端的端口处于阻塞状态只有根桥能发送BPDU报文,其它桥都是转发该报文。

非根桥使用在该接口上收到的最优BPDU进行计算,然后将计算得到的配置BPDU,与除了根接口之外的,其他所有接口所收到的配置BPDU进行比较:

如果前者更优,则该接口为指定接口;

如果后者更优,则该接口为非指定接口。

一般情况下,根桥的所有接口都是指定接口。

(4)剩余端口为阻塞端口(AP)

一台交换机上,既不是非根桥的根端口(RP),也不是非根桥的指定端口(DP),则此时该接口为阻塞端口(block port)

STP操作的最后一步是阻塞网络中的非指定接口。这一步完成后,网络中的二层环路就此消除。

3、选举详细步骤(生成树算法步骤)

(1)选举根桥/交换机(Root Bridge,RB)

为什么根桥交换机的所有端口都是指定端口呢?

因为根桥交换机端口的根路径开销都是 0 ,根据选择选举原则,成为这条链路的指定端口。

1)选举依据:

STP中根桥的选举依据:桥ID(BID)  

1、先比较BID(桥)优先级,越小越优(优先级默认为32768),如果优先级一致,下一步 。

2、再比较MAC地址(MAC越小越优)。

(上图)交换机S1、S2、S3都使用了默认的桥优先级32768,则需要比较MAC地址,S1中MAC地址小显然S1的BID最小,所以最终S1被选举为根桥。

BID最小的交换机称为根桥(根桥可以被抢夺)

2)选举过程:

每一台交换机启动STP后,都认为自己是根桥,根桥上的所有端口都是指定端口;

BPDU报文通过交换机的所有端口进行转发,当某一端口收到自己的BPDU报文时会将其阻塞掉;

对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID,如果桥ID相同,再比较MAC地址大小。

最后,在整个网络中里面会有一个桥ID最小的交换机,这个交换机就是整个网络的根桥

根桥选出后,其他交换机都可以叫指定桥。指定桥不再主动发出BPDU,只会转发根桥的BPDU。根桥每间隔Hello Time(默认2秒)时间周期性发出BPDU。

详细过程:

        STP交换机初始启动之后,每台交换机都会认为自己是根桥,从所有启动的端口发送BPDU,并在发送给其他交换机的宣告自己是根桥,当交换机从网络中收到其他设备发送过来的BPUD时,会比较BPUD中指定的根桥BID和自己的BID,交换机不断交互BPUD同时进行比较,直至选举出一台BID值最小的交换机作为根桥。

        根桥会在固定的时间间隔发送BPDU ,其它设备对BPDU进行转发,从而保证网络拓扑的稳定。

        根桥是可以抢占的,在STP完成网络收敛后,如果网络中接入一台新的交换机,且新增交换机的优先级比根桥交换机更优,那么新增交换机会成为网络中新的根桥。同时,STP将会重新收敛、重新计算网络拓扑,这个过程会引发网络震荡,对流量的正常转发造成影响。

3)优先级修改命令:

stp  priority  4096   //修改桥优先级,取值范围为0到65535,为4096倍数。

stp  root  primary    //交换机会自动降低优先级使自己成为根桥。

注意:通常在企业里面,将核心交换机优先级设为最低。

(2)选举根端口(Root Port,RP)

        根桥上的端口是指定端口,不是根端口每个交换机有且仅有一个根端口

        根桥(RB)选举出来后,其它没有成为根桥的交换机都为非根桥。STP 会为每个非根桥选举一个根接口,也就是在交换机的所有端口中,选择距离根桥最近的一个端口,这就是根端口。

        每台非根桥设备可能会有多个端口与网络相连,为了保证从某台非根桥设备到根桥的工作路径是最优且唯一,必须从该非根桥设备的端口中确定出一个被成为“根端口”的端口,由根端口来做为非根桥设备与根桥设备之间进行报文交互的端口一台非根桥设备上最多只能有一个根端口

        如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口

根端口选举依据:非根交换机在选举根端口时分别依据该端口的

  • 根路径开销、②对端桥ID(BID,Bridge ID)、③对端PID(PID,Port ID)、④本端PID

那是如何选择根端口的呢?

根桥周期性的发送BPDU ,非根桥的所有端口都能收到BPDU,对比端口收到的BPDU中的参数值。

根端口选举规则:

1、在非根桥设备上选择,比较端口收到的BPDU报文中Root ID最小的,为根端口(同一根桥,Root ID是一致的)

2、非根设备上 所有的端口中选择一个离根最近的。

        1)RPC根路径开销(跟链路带宽有直接关系)。(越小越优)

        2)比较对端的桥ID(BID,由优先级与桥MAC组成)。(越小越优)

        3)比较对端的端口ID(PID,由优先级与端口号组成)。(越小越优)

        4)比较本端的端口ID(PID,由优先级与端口号组成)。(越小越优)

如何衡量离根最近呢?

1、根据RPC选举根端口。

比较入方向的开销值RPC(越小越好) -->标准 = 802.1t标准 [802.1d/legacy 不使用的]

G=1000m==20000  取值 2W            E=100M ==200000 取值 20W

如图,假定S1已被选为根桥,现在S3需要从1 端口和2端口中确定除根端口。显然,S3的2端口的RPC为20000;S3的1端口的RPC为200000+20 000=220000,交换机会将RPC最小的那个端口确定为自己的根端口,因此,S3将2端口确定为自己的根端口,同理,S2将自己的1端口确定为根端口。

2、根据对端BID选举根端口。

比较端口接收BPDU的BID。

在实际应用中一台非根桥设备上的RPC可能是相同的,如图所示,假定S1已被选为根桥。对于S4而言,1端口和2端口到根桥的RPC都是相同的,这种情况下就需要根据对端BID来选举根端口。对于S4而言,它的对端BID也就是S2的BID和S3的BID。相比较之后假设S2的BID小,则1端口为S4根端口;反之,2端口就为S4的根端口。

3、根据对端PID选举根端口。

比较端口接收BPDU的PID。

    如图,二台设备在这种连接方式下非根桥的RPC、对端BID均是相同的,这种情况下需要根据对端PID来选举根端口。对于S2而言,它的对端PID就是Root的GE0/0/1口和GE0/0/2口,假设Root的端口优先级都是128,那么Root的端口编号就是1和2。显然Root的GE 0/0/1的PID更小,所以与之相连接的S2设备的GE 0/0/1端口就被选为根端口。

4、根据本端PID选举根端口。

比较自身设备的PID参数

   如图,二台设备中间通过一台HUB相连接。在这种方式下的非根桥的RPC、对端BID、对端PID均是相同的,这种情况就需要根据本端PID来选举根端口。假设S2的端口优先级都是128,那么显然1端口的PID更小。因此,S2的1端口就被选为了根端口。

选举顺序:

第一步:根据RPC选举根端口。

比较入方向的开销值RPC(越小越好) -->标准 = 802.1t标准

由于交换机上接入网络的端口数量可能较多,谁是根端口?

根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即根路径开销(RPC)最小的端口就是根端口

STP中每条物理链路都有开销,开销值和链路带宽、聚合有关,值越小越优。

          

如上面左图中,SWA为根桥,那么SWA上没有根端口(RP)只有指定端口。非根桥(指定桥)SWB端口E0/1的根路径开销(RPC)为10,端口E0/2的RPC为30+20=50(经过SWC),所以E0/1为根端口(RP)。同理,SWC上的根端口RP为端口E0/1。

第二步:如果根路径开销一样,选择对端桥ID(BID)最小的。

(如上面右图中)SWB可以选出根端口(RP)为E0/1。可是SWC两个端口的根路径开销(RPC)都是10。

这种情况,当根路径开销(RPC)比不出来时,就比较对端的桥ID(BID),也就是给你发BPDU的桥ID(BID)谁更优(越小越优)。

给SWC端口E0/1发送BPDU的是SWA,桥ID(BID)为0.MAC_A;

给SWC端口E0/2转发BPDU的是SWB,桥ID(BID)为4096.MAC_B;

显然SWA的桥ID(BID)更优,所以SWC的E0/1为根端口。

第三步:如果对端桥ID(BID)也相同,选择对端端口ID(PID)最小的(这步一般在聚合链路中使用)

                                   

如上面左图中,两台交换机通过两条链路相连接,链路开销相同。

SWA为根桥,SWB的端口E0/1和E0/2谁是根端口呢?

根路径开销(RPC)相同,指定桥ID都是SWA,也相同!

这时,比较对端端口ID(PID):是指给我发BPDU的交换机是用哪个端口发的!

很显然,SWA用E0/1端口给SWB的E0/2端口发BPDU,SWA用E0/2端口给SWB的E0/1端口发BPDU。SWA上的两个端口中,E0/1的端口ID(PID)较优(优先级相同,编号小的优)。SWB E0/2是根端口!

第四步:如果指定端口ID也相同,比较PID

如上面右图中,两台交换机间接了一台Hub,或是一台没有运行STP的交换机,并透传BPDU。

假设各链路开销均相同,那么,SWB的两个端口比根路径开销(RPC)、指定桥ID以及指定端口ID,都无法比出高下,胜负难分。

这时,还有一个绝招,比Bridge Port ID,简单点说,就是比两个端口的端口ID(PID)谁更优。

先比PID中的优先级,越小越优,如果一样,端口编号越小越优。E0/1是根端口

注意,这里说的指定端口是一种端口的角色,跟刚才说的用来选根端口的指定端口不是一个意思。

如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。

如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。

(3)选举指定端口(Designated Ports,DP)

根端口保证了交换机与根桥之间工作路径的唯一性和最优性。

每两台非根交换机之间每一条链路选举出一个指定端口

为了防止工作环路的存在,网络中每个网段与根桥之间的工作路径也必须是唯一且最优的。

当一条链路中有两条或两条以上的路径到达根桥,就必须确定出一个唯一的指定端口防止出现二层环路。指定端口不但是这条链路内所有端口中到达根桥的最优接口,还会向链路内发送 BPDU。

指定端口也是通过比较RPC来确定的,RPC较小的端口将成为指定端口。如果RPC相同,则需要比较BID、PID等。

1)选举依据:

  1. 根交换机的所有端口都是指定端口DP。
  2. 根端口的对端端口一定是指定端口DP。
  3. BPDU转发端口到根交换机的路径成本最小
  4. 本端的网桥ID(BID)最小

剩余端口成为备用端口AP(Alternate Port),将他们阻塞

2)选举规则:

1.RPC根路径开销(跟链路带宽有直接关系)。(越小越优)

2.彼此桥ID(BID,由优先级与桥MAC组成)。(越小越优)

3.自身的端口ID(PID,由优先级与端口号组成)。(越小越优)

3)指定端口的选举

指定端口的选举和根端口不同:

(1)根端口是每台交换机上的所有端口共同参与选举,自己家里搞内斗,选出唯一仅有的一个;

(2)指定端口是在每条物理链路上选出一个,是相连接的不同交换机之间的端口进行选举,是跟外人斗。

首先,根端口对面的端口一定是指定端口每个网段都应该有一个指定端口根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。

        

如图中,SWB与SWA相连接的链路上SWB的E0/1端口为根端口(RP),则它对面SWA上的端口E0/1就是指定端口(DP)。

同样的,SWC与SWA相连接链路上的指定端口(DP)为SWA的E0/2端口。

在没有根端口的链路上怎么选举指定端口呢?(如上面左图中)

SWB与SWC相连接的链路上,指定端口(DP)是SWB的E0/2端口,还是SWC的E0/2端口呢?

首先,比较两个端口的根路径开销(Root Path Cost,RPC)谁更小。

先看SWB的E0/2端口,它的根路径开销(RPC)是多少呢?是15,还是5?正确答案是5!

可以这样来理解:

SWB当初在选举根端口时,E0/2败给了E0/1,是因为从E0/1出去到达根桥更近,RPC=5,而从E0/2出去到达根桥的RPC=15。

现在,选举指定端口是SWB上的端口与其他交换机的端口之间进行比较,是跟外人比较,SWB当然认为自己身上所有端口的RPC都是5,同样,SWC也认为自己身上所有端口的RPC都是10。

很显然,SWB的E0/2端口的RPC更小,所以被选举为这条链路上的指定端口。

如果RPC相同呢?

如上面右图中,SWB的E0/2端口与SWC的E0/2端口,RPC都为5。

这时,就“拼爹”了,比较端口所在交换机的BID谁更优:

SWB的BID为4096.MAC_B,SWC的BID为32768.MAC_C,显然,SWB的BID更优,所以SWB的端口E0/2为这条链路的指定端口。

如果BID也相同?

不会的,如果BID也相同,这条链路就不存在了,还选什么指定端口呢。

AP端口被阻塞后,不会再向外发送任何数据,包括BPDU。但是为了STP保持正常,别人给它发的BPDU依然接收,其他数据则不再接收,全部丢弃。

至此,STP计算完成,环路消除,生成树收敛。

dis stp brief       //查看接口状态 接口角色

(4)选举替代/备用/预备端口(Alternate Port,AP)

每条链路上的指定端口选好后,交换机上所有剩下来的所有端口,非根端口和非指定端口都叫做备用端口(AP,Alternate Port)。备用端口是打破环路的关键,STP都会把这些端口进行逻辑阻塞。

逻辑阻塞:是指这些备用端口不会接收或发送任何数据,但是会监听BPDU。当网络的一些端口出现故障时,STP 会让备用端口开始转发数据,用来恢复网络的正常通信

最后是选择AP端口,AP端口是RP端口备份。

端口被选举为AP后端口将会被阻塞从而达到破环的目的,在这个过程中,端口只会监听BPDU不会中继BPDU,更不会转发业务流量。

1)选举规则:

如果一个端口在一条链路上收到另外一个网桥的更好的 BPDU,但不是最好的,那么这个端口成为替换端口。

如图,一旦备用端口被逻辑阻塞后,STP树(无环工作拓扑)的生成过程便告完成。


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】


http://www.kler.cn/news/357309.html

相关文章:

  • 机器学习常见概念整理
  • Flink CDC 实时同步mysql数据
  • 现代物流管理:SpringBoot技术突破
  • 数据结构——八大排序(下)
  • 探讨人工智能领域所需学习的高等数学知识及其应用场景,涵盖了微积分、线性代数、概率论等多个数学分支。
  • Ingress-nginx中HTTPS的强制转发
  • WPS 删除重复记录
  • 【最新华为OD机试E卷-支持在线评测】模拟目录管理 (200分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • OpenGauss学习笔记
  • 基于springboot淮安动物园信息管理系统(源码+定制+开发)动物园数据管理平台、动物园信息系统优化
  • CSS 中的content-visibility属性
  • C语言小游戏--猜数字
  • LabVIEW提高开发效率技巧----用户权限控制
  • Scrapy | 爬取笑话网来认识继承自Spider的crawlspider爬虫类
  • 【Docker】Harbor 私有仓库和管理
  • IEC104规约的秘密之十二----扩展报文之文件断点续传
  • jmeter使用文档
  • HCIP-HarmonyOS Application Developer 习题(十五)
  • msql事务隔离级别 线上问题
  • 瑞云快图云渲染怎么样?渲染一张图贵吗?