BPDU 是交换机之间为 STP 交换的消息帧。每个 BPDU 都包含一个 BID,用于标识发送该 BPDU 的交换机。BID 包含优先级值、发送方交换机的 MAC 地址以及可选的扩展系统 ID。最低的 BID 值取决于这三个字段的组合。
根端口 - 在根网桥的总开销方面,最接近根网桥的交换机端口。在图中,S2 上的 STP 选择的根端口是 F0/1,即 S2 和 S1 之间的链路。S3 上的 STP 选择的根端口是 F0/1,即 S3 和 S1 之间的链路。根端口按逐个交换机进行选择。
指定端口 - 网络中获准转发流量的、除根端口之外的所有端口。在图中,交换机 S1 上的端口 F0/1 和 F0/2 都是指定端口。S2 的端口 F0/2 也是指定端口。根据网段任一端上每个端口的开销以及 STP 为了让该端口恢复为根网桥而计算出的总开销,选择每个网段的指定端口。如果网段的一端是根端口,则另一端是指定端口。根网桥上的所有端口都是指定端口。
替代端口和备用端口 - 替代端口和备用端口处于丢弃或阻塞模式,以防形成环路。在图中,STA 将 S3 上的端口 F0/2 配置成了替代角色。S3 上的端口 F0/2 处于阻塞状态。替代端口只能在两端都不是根端口的链路上选择。请注意在图中,网段只有一端处于阻塞状态。这样可以在必要时更快地转换到转发状态。(阻塞端口仅在同一交换机上的两个端口通过网络提供冗余链路时才起作用。)
---------------------------------------------------------------------------
图 2 显示 BID 块。BID 包括优先级值、扩展系统 ID 以及交换机的 MAC 地址。网桥优先级值将会自动分配,但也可以修改。扩展系统 ID 用于指定 VLAN ID 或多生成树协议 (MSTP) 实例 ID。MAC 地址最初包括发送方的 MAC 地址。
BID 由可配置的网桥优先级值和 MAC 地址组成。网桥优先级值介于 0 和 65,535 之间。默认值为 32,768。如果两台或多台交换机具有相同的优先级,MAC 地址最低的交换机将会成为根网桥。
注:交换机发送 BPDU,包括根路径开销。这是从发送交换机到根网桥的路径的开销。当交换机收到 BPDU 时,它会添加网段的入口端口开销,以确定其内部根路径开销。
尽管交换机端口关联有默认的端口开销,但端口开销是可以配置的。通过单独配置各个端口开销,管理员便能手动灵活控制到根网桥的生成树路径。
要配置某个接口的端口开销(如图 2 中所示),请在接口配置模式下输入 spanning-tree cost value 命令。值的范围介于 1 到 200,000,000 之间。
-------------------------------------------------
要验证该端口以及根网桥的内部根路径开销,请输入 show spanning-tree 命令(如图 4 所示)。输出顶部附近的开销字段是内部根路径开销,即根网桥的总路径开销。此值取决于到达根网桥的过程中要经过多少个交换机端口。输出显示,每个接口的单端口开销是 19。
----------------------------------------------------------------------
------------------------------------------------------------------
RSTP 的端口角色决定
1. 由于s1的优先级最低,所以确定为根网桥
2. 根网桥的端口为指定端口
3. S2和S3的去往根网桥的端口为根端口
4. 比较S2和S3的bid谁最小以确定指定端口。
5. S2和S3的优先级一样,但是S2的MAC地址更小,所以S2的F0/2为指定端口,S3的F0/2为替代端口
------------------------------------------------------------------------------
网桥 ID (BID) 用于确定网络中的根桥。BPDU 帧的 BID 字段包含三个不同的字段:
网桥优先级
扩展系统 ID
MAC 地址
网桥优先级
网桥优先级是一个可自定义的值,您可使用它来影响哪台交换机能成为根网桥。具有最低优先级的交换机也表示其具有最低 BID,因为优先考虑优先级值较低的交换机,所以它会成为根网桥。例如,要确保某台交换机始终是根网桥,可将其优先级设置为比网络中的其他交换机都低。所有思科交换机的默认优先级值为十进制值 32768。范围是 0 到 61440(增量为 4096)。有效优先级值为 0、4096、8192、12288、16384、20480、24576、28672、32768、36864、40960、45056、49152、53248、57344 和 61440。系统拒绝其他所有值。网桥优先级 0 优先于其他网桥优先级。
扩展系统 ID
IEEE 802.1D 早期实施方式用于不使用 VLAN 的网络设计。所有交换机构成一颗简单的生成树。因此,在旧款思科交换机中,BPDU 帧中可以省略扩展系统 ID。随着 VLAN 逐渐用于网络基础设施分段,802.1D 增强了对 VLAN 的支持,要求在 BPDU 帧中包含 VLAN ID。VLAN 信息通过使用扩展系统 ID 而包含在 BPDU 帧中。默认情况下,所有新款交换机都使用扩展系统 ID。
使用 show spanning-tree summary 命令可以显示各种状态(阻塞、侦听、学习或转发)下的端口数量。
-----------------------------------------------------------
边缘端口
RSTP 边缘端口是指永远不会用于连接到其他交换机的交换机端口。当启用时,此类端口会立即转换到转发状态。
RSTP 边缘端口概念对应 PVST+ PortFast 功能。边缘端口直接连接到终端,并且假定它没有连接任何交换机设备。RSTP 边缘端口应立即转换到转发状态,从而跳过原始 802.1D 中耗时的侦听和学习端口状态。
思科的 RSTP 实施方式(即快速 PVST+)保留了 PortFast 关键字,其使用 spanning-tree portfast 命令来执行边缘端口配置。这样便可以从 STP 顺利转换到 RSTP。
注:建议不要将边缘端口配置为连接其他交换机。这会对 RSTP 造成负面影响,因为可能发生临时环路,并可能会延迟 RSTP 的收敛。
--------------------------------------------------------
链路类型
点对点 - 在全双工模式下运行的端口通常将交换机连接到交换机,并且是快速转换到转发状态的候选端口。
共享 - 在半双工模式下运行的端口将交换机连接到连接各种设备的集线器。
链路类型可确定端口是否可以立即转换到转发状态,假设特定条件已经满足。边缘端口和非边缘端口需满足不同的条件。非边缘端口分为两种链路类型:点对点和共享。链路类型可以自动确定,但也可以使用 spanning-tree link-type { point-to-point | shared } 命令用明确的端口配置覆盖
---------------------------------------------------------
配置网桥优先级
1.要确保交换机具有最低的网桥优先级值,请在全局配置模式下使用 spanning-tree vlan vlan-id root primary 命令
如果需要备用根网桥,则使用 spanning-tree vlan vlan-id root secondary 全局配置模式命令
交换机的优先级即被设置为预定义的值 24,576,或者是小于网络中检测到的最低网桥优先级的 4,096 的最大倍数。
2. 方法 2
配置网桥优先级值的另一种方法是使用 spanning-tree vlan vlan-id priority value 全局配置模式命令。此命令可更为精确地控制网桥优先级值。优先级值介于 0 和 61,440 之间,增量为 4,096。
------------------------------------------------------
PortFast 和 BPDU 防护
PortFast 是用于 PVST+ 环境的思科功能。当交换机端口配置了 PortFast 时,该端口会立即从阻塞状态转换到转发状态,绕过通常的 802.1D STP 转换状态(侦听和学习状态)。您可以在接入端口上使用 PortFast,让这些设备立即连接到网络,而不是等待 IEEE 802.1D STP 在每个 VLAN 上收敛。接入端口是连接到单个工作站或服务器的端口。
在一个有效的 PortFast 配置中,不应该接收 BPDU,因为这意味着另一个网桥或交换机已连接到该端口,从而可能导致生成树环路。思科交换机支持称为 BPDU 防护的功能。将其启用时,BPDU 防护会在收到 BPDU 时将端口设置为错误禁用状态。这将有效关闭端口。BPDU 防护功能提供无效配置的安全响应,因为您必须手动让接口恢复服务。
思科 PortFast 技术对 DHCP 很有用。如果没有配置 PortFast,PC 可能在端口进入转发状态之前发送 DHCP 请求,导致主机无法获得可用的 IP 地址和其它信息。由于 PortFast 立即将状态更改为转发,PC 就始终能获得可用的 IP 地址(如果正确配置了 DHCP 服务器且与 DHCP 服务器之间进行了通信)。
要在第 2 层接入端口上配置 BPDU 防护,可使用 spanning-tree bpduguard enable 接口配置模式命令。spanning-tree portfast bpduguard default 全局配置命令可以在所有启用 PortFast 的端口上启用 BPDU 防护。
BPDU(Bridge Protocol Data Unit)防护是一种安全机制,用于防止未经授权的设备成为生成树协议(STP)中的根桥或影响网络的生成树拓扑。BPDU防护通常配置在接入端口上,以防止这些端口接收BPDU数据包,从而避免潜在的安全威胁。
BPDU防护的作用
防止未经授权的设备成为根桥:如果一个未经授权的设备发送BPDU数据包,它可能会被选举为根桥,从而改变网络的生成树拓扑。
防止环路:BPDU防护可以防止由于未经授权的设备导致的网络环路。
提高安全性:通过阻止BPDU数据包,可以减少网络中的攻击面,提高整体网络的安全性。
要验证交换机端口是否启用了 PortFast 和 BPDU 防护,可使用 show running-config 命令,如图 3 所示。 默认情况下,所有接口上禁用 PortFast 和 BPDU 防护。
---------------------------------------------------------------------