学习笔记——交换——STP(生成树)基本概念

news/2024/10/18 4:25:41/

三、基本概念

1、桥ID/网桥ID (Bridege ID,BID)

每一台运行STP的交换机都拥有一个唯一的桥ID(BID),BID(Bridge ID/桥ID)。在STP里我们使用不同的桥ID标识不同的交换机。

                  

(2)BID(桥ID)组成

BID(桥ID)组成(8个字节)由16位(2字节)的桥优先级和48位(2字节)的MAC地址构成。(上右图)

1)桥优先级(Bridge Priority,BP)的值可以修改,但是修改值必须为4096的倍数。优先级部分中低12位用来标识VLAN信息,高4位才是真正优先级。(上右边图)

优先级范围:取值范围是0~65535,为4096倍数,越小越优先优先级默认32768(0x8000)。

2)桥的MAC地址:通常是交换机默认VLAN1的MAC地址。一个桥有多个转发端口,每个端口都有一个MAC地址,端口编号最小的那个端口的MAC地址作为整个桥的MAC地址,越小越优先。

MAC地址的长度是48比特(6字节),48位二进制数,12位16进制数组成,即0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。从左至右,逐位比较

比如:00:01:10:00:11:11 和00:10:00:00:00:00前者比后者要小。如果比较位相同,则往后推一位再比较,最小的即为MAC地址最小。

2、根桥(Root Bridge,RB)

根桥是一个生成树(STP)交换网络中的"树根"。具有最小桥ID的交换机是根桥树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。(下左图)

根桥(Root Bridge) 在STP中,根桥是整个网络的起点,其他所有交换机都会尝试通过最直接的路径连接到根桥,所有数据包的旅行都是从这里开始的。

根桥设备上没有根端口根桥上的接口,都是指定端口(DP:Designated Ports)

(2)树根主要作用

是在一个交换网络中计算出一棵无环的STP树。

在一个交换网络中,有且只能有一个根桥(根交换机),它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化

(3)优先级

交换机的桥优先级越高,才有可能成为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。在STP网络中,BID(桥ID)最小的设备会被选举为根桥

(上图)在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先,最终选择SW1为根桥。

3、非根桥

非根桥:除了根桥,其他的交换都是非根桥。这些非根桥之间可以互相通信,但是它们都要遵循从根桥出发的规则。

4、端口/接口ID(Port ID,PID)

运行STP交换机的每个端口都有一个端口ID(Port ID),端口ID可以用来确定端口角色,标识每个端口。端口ID(PID)就是端口编号 例如e0/0/5,ID就是5

主要作用:在特定场景下选举指定接口

(1) PID(端口ID)组成

端口ID(PID)(2个字节)=优先级(1个字节).端口索引号(1个字节)

为了避免端口索引号不够用,把优先级中的低4位保留用于端口索引号,一般取值为0000。高4位优先级默认二进制取值为1000。端口索引号是端口在交换机上的唯一编号。

(2) PID优先级(Port Priority)

数值范围从0到240,缺省情况下(默认值),端口的优先级为128,步长为16,即取值必须为16的整数倍。

在进行比较时,先比较端口优先级,值越小端口的优先级就越高。在优先级相同时,再比较端口编号,编号小的端口优先。

通常情况下,端口编号无法改变,用户可以根据实际需要,通过命令修改该优先级。通过设置端口优先级来影响生成树的选路。

注意:最终如果收到的BPDU报文所有参数都一样,此时交换机会比较本端接口ID(PID)。

5、开销(Cost)

每一个激活了STP的接口都维护着一个开销(Cost)值。接口带宽越大,则开销(Cost)值越小。可以通过命令调整接口的开销(Cost)。

(2)开销(Cost)计算方法

接口开销(Cost)是已经激活了STP的接口所维护的一个开销值,该值存在默认值与接口的速率有关联、工作模式,并且交换机设备使用不同的算法时相同的接口速率对应不同的开销值

(4)本地路径开销/端口开销(Port Cost)

本地路径开销/端口开销:指从当前交换机到连接的设备(比如终端设备)之间的路径开销。

特点:

(1)本地路径开销就是端口开销交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下,端口的开销和端口的带宽有关,带宽越高,开销越小

(2)本地路径开销是路径开销中的一个组成部分,它代表了到达某个设备的成本

接口开销主要作用:计算根路径开销,就是到达根的开销。

(3)路径开销(Path Cost)

路径开销(Path Cost):从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口)。

特点:

(1) 路径开销决定了整个网络中每条可能路径的成本。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,这就是路径开销。通常,直接连接的路径(比如根端口)开销较低,而需要经过多个中间节点的路径开销较高。

(2)交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认的开销值取决于链路的带宽带宽越大,开销越小开销值越小,越可能被选为指定端口的路径

例如:IEEE标准的开销,链路速度为10Gbps开销为2,速度为100Mbps时开销为19,速度为10Mbps时候开销为100。

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

STP交换机每一个端口都对应一个开销值,这个值表示数据通过端口发送时的开销,这个值与端口带宽有关,带宽越高,开销值越小。

对于端口开销值的定义有不同的标准,通常设备默认使用IEEE 802.1t中定义的开销值,同时还支持其它标准,以便兼容不同厂家的设备。

根路径开销(Root Path Cost,RPC):非根桥到达根桥可能有多条路径,每条路径都有一个总开销值,被称为RPC(根路径开销)。

STP不会计算入端口的开销,只在数据通过端口发出时,才计算这个端口的开销。对于根桥来说,根路径开销是0。

即累计根路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中累计根路径开销字段的值,加上该端口本身的路径开销即为累计根路径开销。

  

(上左图)SW3从GE0/0/1接口到达根桥的RPC,等于接口1的Cost加上接口2的Cost。

(上右图)s2中eth0/0/1端口的根路径开销,就是20+18=38,eth0/0/2端口的根路径开销就是39.所以0/0/1是根端口。

特点:

    (1) 路径开销这个值越小,说明到达根桥的路径越优

    (2) 根路径开销最终的目标,是从任何端口到根桥的最短路径的总成本。

根路径开销是根据交换机之间的网段来说的,本地路径的开销也叫端口开销是针对本地的物理链路来说的相关的IETF的规定为

6、端口角色分类

在STP中,端口角色共有三种分别为:根端口RP(Root Port)、指定端口DP(Designated Port)、阻塞端口AP(Alternate Port)。

注:以上三种角色都是在非根桥设备上的概念,它们是用来确保网络中的数据包能够通过最优路径传输,同时避免环路的产生。

(1)根端口(Root Port,RP)

根端口(Root Port): 每个非根桥都有且只有一个根端口,但它并不一定是用来与根桥直接连接的端口,而是用来确定到达根桥的最短路径的端口

在一个非根桥设备上,根端口是所有到达根桥路径中,路径成本最低的那个端口。如果这个端口的路径,不是直接连接到根桥,而是通过其他交换机连接到根桥,那么它仍然是该非根桥设备上的根端口。

1)根端口选举

如果有多条链路到根桥,就通过检查每条链路的带宽来决定端口的开销,开销最低的端口就成为根端口。

如果多条链路的开销相同,就使用桥ID小的那个桥。

如果多条链路来自同一设备,就使用端口号最低的那条链路。

2)根端口的作用

在非根桥上,根端口是选择用来接收来自距离根桥最近的路径上的数据包的端口。

每个非根桥都会有一个根端口,它通过比较到达根桥的路径成本来确定,根路径开销最小者,就是根端口。

3)根端口与其他端口的关系

根桥的所有端口都是指定端口,指定端口被标记为转发端口。

非根交换机的根端口RP,每个非根交换机有且只有一个RP。

既非根端口又非指定端口的为阻塞端口AP。

(2)指定端口(Designated Port,DP)

指定端口(Designated Port):在每个连接点(比如两个交换机之间的连接),会有一条被指定的道路作为主要通道,这条道路就是指定端口。它负责在这个连接点上转发数据包。

(下左图)Device B和Device C与LAN直接相连。如果Device A通过Port A1向Device B转发BPDU,则Device B的指定桥就是Device A,指定端口就是Device A上的Port A1;如果Device B负责向LAN转发BPDU,则LAN的指定桥就是Device B,指定端口就是Device B上的Port B2。

1)指定端口的特性 

(1)根桥上每个端口都是指定端口非根桥上需要转发数据的端口,也是指定端口

(2)只有非根桥设备上的端口会被选为指定端口。桥ID较小的交换机的端口当选为指定端口。

(3)并不是每个非根桥设备都有一个指定端口,而是每个局域网段中只有一个指定端口,由STP协议根据一定的规则选举出来。

2)指定端口的作用

是在网络中实现无环路的传输,避免广播风暴和网络瘫痪。

3)指定端口的选举过程 

在STP中,指定端口的选举过程是通过比较各个端口的路径开销(Path Cost)和发送方的桥ID(Bridge ID)来进行的。

具体来说,首先会在每个物理网段上选举出一个根端口(Root Port),然后在每个网段上选举出一个指定端口。

根端口是连接到根桥的链路所在的端口,或者到根桥的路径最短的端口。指定端口则是从根端口开始,沿着两个不同方向的端口到达根桥,累计途经的带宽开销,开销最小的那个端口。

(3)候补/预备端口(Alernate Port,AP)

预备端口(Alternate):是指定端口的“替补”当指定端口出现问题时预备端口就会“上场”。

如果一个端口既不是指定端口也不是根端口,则此端口为预备端口,预备端口将被阻塞

每个非根桥设备上可以有一个或多个预备端口,它们是备用的端口,用于在指定端口或根端口出现问题时接管其职责。并不是每个非根桥设备上只有一个预备端口,而是根据需要可以有多个预备端口,它们都处于待命状态,直到被激活。

1)预备端口的主要作用

网络拓扑发生变化时,参与选举新的根端口和指定端口的过程。这样做可以确保网络中的冗余链路不会形成环路,从而避免了广播风暴和MAC地址表震荡等问题。

2)预备端口的选举 

网络拓扑发生变化时,预备端口会参与选举新的根端口和指定端口的过程。

选举的原则是,根端口是到达根桥路径最优的端口,而指定端口是发送/转发BPDU报文的端口。预备端口会根据根路径开销、对端BridgeID、对端PortID和本端PortID等因素进行比较,选出最佳的根端口和指定端口。

```

  根桥 (Root Bridge)

    |

    | (路径开销)

    |

  非根桥 (Non-Root Bridge) -- 根端口 (Root Port)

    |

    | (本地路径开销)

    |

  指定端口 (Designated Port) -- 预备端口 (Alternate Port)

    |

    | (路径开销)

    |

  非根桥 (Non-Root Bridge) -- 指定端口 (Designated Port)

```

(4)端口不同

三种端口的异同如下:


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


http://www.ppmy.cn/news/1539895.html

相关文章

SpringBoot原理(续)

上篇博客在跟踪SpringBoot自动配置的源码的时候,在自动配置类声明bean的时候,除了在方法上加了一个Bean注解以外,还会经常用到一个注解,就是以Conditional开头的这一类的注解。以Conditional开头的这些注解都是条件装配的注解。下…

详解Oracle审计(二)

题记: 本文将承接上篇详细介绍oracle的审计功能,基于11g版本,但对12c,19c也同样适用。 1. 语句审计实操演示实例 sqlplus / as sysdba show parameter audit_trail alter system set audit_traildb_extended scopespfile; star…

在Linux中搭建WordPress并实现Windows主机远程访问

WordPreWordPress是一个基于PHP开发的开源平台,适用于在支持PHP与MySQL数据库的服务器上搭建个性化博客或网站。同时,它也能够作为功能强大的内容管理系统(CMS)被广泛应用。 虚拟机:VirtualBox 虚拟机安装&#x1f449…

如何在Android平板上使用谷歌浏览器进行网页缩放

在使用Android平板时,我们经常会浏览各种网页,但有时网页内容可能无法适应屏幕大小,这时就需要用到网页缩放功能。本文将为您详细介绍如何在Android平 板上的谷歌浏览器中进行网页缩放,帮助您更好地浏览网页。(本文由h…

状态机与行为树的实现;Behavior Designer的使用与自写状态机的几种方法;

以下部分内容将会涉及插件BehaviorDesigner 代码仅为演示所需,并非实际实现代码,非本人所使用代码; 前往个人博客,获取更好的阅读体验 状态机与行为树 为何写? 笔者在初学的时候并不写状态机,而是写到一…

Unity-Shader-语义

1、从程序传给顶点函数: POSITION:顶点坐标(模型空间下) NORMAL:法线向量(模型空间下) TANGENT:切线向量(模型空间下) TEXCOORD0~n:纹理坐标 …

设计模式概览

设计模式是一种解决常见编程问题的经验总结,提供了代码的可重用性、可扩展性和可维护性。常见的设计模式有23个,主要分为三大类:创建型模式、结构型模式和行为型模式。下面是这三类设计模式的详细分类和讲解: 一、创建型模式 创建…

MFC工控项目实例二十四模拟量校正值输入

承接专栏《MFC工控项目实例二十三模拟量输入设置界面》 对模拟量输入的零点校正值及满量程对应的电压值进行输入。 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Co…