生成树协议的 BPDU 保护
了解生成树实例接口的 BPDU 保护
ACX 系列路由器、MX 系列路由器、PTX 系列路由器、EX 系列交换机和 QFX 系列交换机支持生成树协议,通过创建整个桥接网络的树拓扑(生成树),防止网络中出现环路。所有生成树协议都使用一种称为桥接协议数据单元 (BPDU) 的特殊类型的帧进行相互通信。
生成树协议 (STP) 系列旨在打破第 2 层桥接网络中可能出现的环路。环路预防可避免可能使网络失用的破坏性广播风暴。网桥上的 STP 进程交换 BPDU,以确定 LAN 拓扑、确定根网桥、停止某些端口上的转发等。但是,行为不正常的用户应用或设备可能会干扰 STP 协议的运行并导致网络问题。
BPDU 块是一种功能,可保护 STP 拓扑免受行为不当的用户、应用或设备或威胁的影响。您必须在不应接收任何 BPDU 的接口上启用 BPDU 保护。
如果接口配置为边缘端口,则接口将直接转换为转发状态。此类端口连接到终端设备,预计不会接收 BPDU。因此,为避免环路,必须通过启用 bpdu-block-on-edge 来保护边缘端口。
在支持 STP 的路由器和交换机上,您可以配置 BPDU 保护,以忽略在不应预期的接口上接收的 BPDU(例如,网络边缘上不存在其他网桥的 LAN 接口)。如果在受保护的接口上收到 BPDU,则该接口将被禁用并停止转发帧。默认情况下,所有接口上都接受并处理所有 BPDU。
您可以通过多种方式实现 BPDU 保护。默认情况下,如果接口上启用了bpdu-block,则在接收BPDU时,接口将被禁用,并且接口上的所有流量转发都将停止。但是,如果您不想禁用该接口,也不想让该接口参与 STP 计算,则可以配置操作丢弃。如果配置了操作丢弃,则接口将保持开启运行,并且流量将继续流动;但是,BPDU 会被丢弃。
边缘端口不支持操作丢弃。如果边缘端口接收到 BPDU,则 BPDU-block-on-edge 将禁用接口。您必须清除错误才能重新启用接口。
您可以在具有以下封装类型的接口上配置 BPDU 保护:
-
以太网网桥
-
以太网-VPLS
-
扩展 VLAN 网桥
-
VLAN-VPLS
-
VLAN 网桥
-
扩展 vlan-vpls
您可以在网桥的单个接口或所有边缘端口上配置 BPDU 保护。
使用层次结构下的set protocols (mstp|rstp|vstp)命令,bpdu-block-on-edge在配置为边缘端口的接口上启用 BPDU 保护。如果尚未将端口配置为边缘端口,仍可使用层次结构下的set protocols layer2-control命令在bpdu-block接口上配置 BPDU 保护。您还可以使用该bpdu-block命令在为生成树配置的接口上配置 BPDU 保护。
也可以看看
了解 STP、RSTP 和 MSTP 的 BPDU 保护
网络经常同时使用多个协议来实现不同的目标,在某些情况下,这些协议可能会相互冲突。其中一种情况是当网络上处于活动状态的生成树协议时,称为桥接协议数据单元 (BPDU) 的特殊类型的交换帧可能会与在其他设备(例如 PC)上生成的 BPDU 发生冲突。不同类型的 BPDU 不兼容,但仍可被使用 BPDU 并导致网络中断的其他设备识别。您需要保护任何识别 BPDU 的设备不会拾取不兼容的 BPDU。
不同类型的 BPDU
生成树协议 (STP)、快速生成树协议 (RSTP)、VLAN 生成树协议 (VSTP) 和多生成树协议 (MSTP) 等生成树协议会生成自己的 BPDU。这些对等 STP 应用使用其 BPDU 进行通信,最终,BPDU 的交换将决定哪些接口阻止流量,哪些接口成为根端口。根端口和指定端口转发流量;备用端口和备用端口会阻塞流量。
为单个生成树实例接口配置 BPDU 保护
要在一个或多个生成树实例接口上配置 BPDU 保护,请包含以下 bpdu-block 语句:
bpdu-block { interface interface-name; disable-timeout seconds; }
如果还包含 optional disable-timeout seconds 语句,则 受保护的接口 将在指定的时间间隔后自动清除,除非间隔为 0。
了解用于在网桥之间交换信息的 BPDU
在第 2 层网桥环境中,生成树协议使用称为网桥协议数据单元 (BPDU) 的数据帧在网桥之间交换信息。
对等系统上的生成树协议交换 BPDU,其中包含有关端口角色、网桥 ID 和根路径成本的信息。在每个路由器或交换机上,生成树协议使用此信息来选择根网桥,为每个交换机识别根端口,为每个物理 LAN 段识别指定端口,并修剪特定的冗余链路以创建无环路树拓扑。生成的树拓扑可在任意两个终端站之间提供单个活动的第 2 层数据路径。
在生成树协议的讨论中,术语 bridge 和 switch 经常互换使用。
BPDU 的传输由 MX 系列 5G 通用路由平台上的第 2 层控制协议进程 (l2cpd) 控制。
代表 l2cpd 进程的定期数据包传输由定期数据包管理 (PPM) 执行,默认情况下,该管理配置为在数据包转发引擎上运行。数据包转发引擎上的 ppmd 进程可确保即使在 l2cpd 不可用的情况下也能传输 BPDU,并在统一不中断服务的软件升级(统一 ISSU)期间保持远程邻接保持活动状态。但是,如果您希望分布式 PPM (ppmd) 进程在路由引擎而不是数据包转发引擎上运行,则可以在数据包转发引擎上禁用 ppmd 进程。
在具有冗余路由引擎(安装在同一路由器中的两个路由引擎)的路由器和交换机上,可以配置不间断桥接。不间断桥接使路由器能够从主路由引擎切换到备用路由引擎,而不会丢失第 2 层控制协议 (L2CP) 信息。不间断桥接使用与平滑路由引擎切换 (GRES) 相同的基础架构来保留接口和内核信息。但是,不间断桥接还通过在备份路由引擎上运行 l2cpd 进程来保存 L2CP 信息。
要使用不间断桥接,必须先启用 GRES。
以下第 2 层控制协议支持不间断桥接:
-
生成树协议 (STP)
-
快速生成树协议 (RSTP)
-
多生成树协议 (MSTP)
了解 EVPN-VXLAN 的 BPDU 保护
EVPN-VXLAN 数据中心交换矩阵具有许多内置的以太网环路防御机制,如水平分割、指定转发器和非指定转发器选择等。在部署新 IP EVPN 交换矩阵的某些现有数据中心环境中,您可能需要在叶至服务器接口上配置 BPDU 保护,以避免由于 xSTP 计算错误而导致网络中断。服务器和叶接口之间的布线不正确,或两个或多个 ESI-LAG 接口之间的任何后门第 2 层链路,可能会导致计算错误,进而导致以太网环路。如果没有 BPDU 保护,BPDU 可能无法被识别,并且会在 VXLAN 接口上作为未知的第 2 层数据包泛洪。使用 BPDU 保护时,当在 EVPN-VXLAN 环境中的边缘端口上收到 BPDU 时,边缘端口将被禁用并停止转发所有流量。您还可以配置 BPDU 保护以丢弃 BPDU 流量,但在接口上转发所有其他流量,而无需配置生成树协议。
配置接口以使用端口关闭模式进行 BPDU 保护
要在交换机的边缘接口上配置 BPDU 保护:
确保交换机已连接到终端设备。
配置接口以使用 BPDU 丢弃模式进行 BPDU 保护
对于某些接入交换机,您可能希望交换机上的接口在遇到不兼容的 BPDU 数据包时不会关闭;相反,仅丢弃不兼容的 BPDU 数据包,同时允许剩余流量通过。此类接口上不得配置生成树协议,这样通过接口的数据包就不会导致 STP 配置错误和随之而来的网络中断。
要为接口配置 BPDU 保护,使其仅丢弃不兼容的 BPDU 数据包并允许其余流量通过,同时将接口状态保留为运行:
确保配置 BPDU 保护的交换机已连接到对等设备。
为边缘接口配置 BPDU 保护
在生成树拓扑中,如果交换机是接入交换机,则该交换机上的接口将连接到未连接到其他交换机的终端设备,例如 PC、服务器、路由器或集线器。您可以将这些接口配置为边缘接口,因为它们直接连接到终端设备。
配置为边缘接口的接口可以立即转换为转发状态,因为它们无法创建网络环路。交换机通过注意到终端站没有通信来检测边缘端口。由于边缘端口连接到终端设备,因此必须在边缘端口上配置 BPDU 保护以避免环路。如果在边缘接口上启用了 BPDU 保护,则接口将在遇到 ae BPDU 时关闭,从而阻止任何流量通过该接口。您可以通过发出 clear error bpdu interface interface-name 操作模式命令来重新启用接口。该 clear error bpdu interface interface-name 命令只会重新启用接口,但接口的BPDU配置将继续存在,除非您显式删除BPDU配置。
要在交换机的边缘接口上配置 BPDU 保护:
确保交换机已连接到终端设备。
示例:阻止接口上的 BPDU 600 秒
以下示例与使用聚合以太网的完整网桥配置一起使用时,会在接口 ae0 上阻止 BPDU 10 分钟(600 秒),然后再次启用该接口:
[edit protocols layer2-control]
bpdu-block {
interface ae0;
disable-timeout 600;
}
也可以看看
示例:在接口上配置 BPDU 保护
此示例将 Junos OS 用于不支持增强型第 2 层软件 (ELS) 配置样式的 EX 系列交换机。有关 ELS 的详细信息,请参阅 使用增强型第 2 层软件 CLI。
启用 BPDU 保护后,当遇到任何不兼容的 BPDU 时,接口会关闭或丢弃 BPDU 数据包,从而防止生成树协议生成的 BPDU 到达交换机。当接口配置为丢弃 BPDU 数据包时,除不兼容的 BPDU 之外,所有流量均可通过该接口。
只能在未配置生成树协议的接口上指定 BPDU 丢弃功能。
此示例在连接到两台 PC 的 STP 交换机下游接口上配置 BPDU 保护:
要求
此示例使用以下硬件和软件组件:
-
RSTP 拓扑中的一台 EX 系列交换机
-
一台不在任何生成树拓扑中的 EX 系列交换机
-
适用于 EX 系列交换机的 Junos OS 9.1 或更高版本
在交换机 2 上配置接口以保护 BPDU 之前,请确保您已:
-
确保 RSTP 在交换机 1 上运行。
-
在交换机 2 上禁用或启用 RSTP(取决于您计划实施的配置。)
如果想要启用BPDU关断功能,则可以选择禁用接口上的生成树协议。
默认情况下,所有 EX 系列交换机均启用 RSTP。
概述和拓扑
此示例说明如何在接口上配置 BPDU 保护。
图 1 显示了此示例的拓扑结构。交换机 1 和交换机 2 通过中继接口连接。交换机 1 配置为 RSTP,而交换机 2 在第一种情况下配置了生成树协议,而在第二种情况下未配置生成树协议。
在第一种情景中,此示例会在交换机 2 接口 ge-0/0/5.0 和 ge-0/0/6.0 上配置下游 BPDU 保护,前提是这些接口上未禁用默认生成树协议 (RSTP)。启用 BPDU 保护时,默认情况下会启用该 shutdown 语句,如果笔记本电脑生成的 BPDU 尝试访问交换机 2,交换机接口将关闭。
在第二个场景中,此示例会在交换机 2 接口 ge-0/0/5.0 和 ge-0/0/6.0 上配置下游 BPDU 保护,前提是这些接口上未配置生成树协议。使用语句启用 drop BPDU 保护后,交换机接口仅丢弃 BPDU,同时允许剩余流量通过,并在笔记本电脑生成的 BPDU 尝试访问交换机 2 时将其状态保留为运行状态。
在没有生成树的接口上配置 BPDU 保护且连接到具有生成树的交换机时,请注意不要在 所有 接口上配置 BPDU 保护。这样做可能会阻止在交换机接口(如中继接口)上接收 BPDU,而您打算从具有生成树的交换机接收 BPDU。
拓扑结构
表 1 显示了将为 BPDU 保护配置的组件。
|
属性 |
设置 |
|---|---|
|
交换机 1(分布层) |
交换机 1 通过中继接口连接到交换机 2。交换机 1 配置为 RSTP。 |
|
交换机 2(接入层) |
交换机 2 有两个连接到笔记本电脑的下游接入端口:
|
配置
要在接口上配置 BPDU 保护:
过程
CLI 快速配置
这是解释默认BPDU块配置的第一个场景(操作: shutdown)。要在交换机 2 上快速配置 BPDU 保护,请复制以下命令并将其粘贴到交换机终端窗口中:
[edit] user@switch# set protocols layer2-control bpdu-block interface ge-0/0/5 [edit] user@switch# set protocols layer2-control bpdu-block interface ge-0/0/6
分步程序
要为 shutdown 语句配置 BPDU 保护:
-
在交换机 2 上的下游接口 ge-0/0/5 上配置 BPDU 块(操作:
shutdown):[edit protocols] user@switch# set layer2-control bpdu-block interface ge-0/0/5
-
在交换机 2 上的下游接口 ge-0/0/6 上配置 BPDU 块(操作:
shutdown):[edit protocols] user@switch# set layer2-control bpdu-block interface ge-0/0/6
结果
检查配置结果:
user@switch> show protocols layer2-control
bpdu-block {
interface ge-0/0/5;
interface ge-0/0/6;
}
过程
CLI 快速配置
这是解释语句配置 drop 的第二个场景。要在交换机 2 上为语 drop 句快速配置 BPDU 保护,请复制以下命令并将其粘贴到交换机终端窗口中:
[edit] user@switch# set protocols layer2-control bpdu-block interface ge-0/0/5 drop user@switch# set protocols layer2-control bpdu-block interface ge-0/0/6 drop
如果接口上启用了xSTP,则必须先将其禁用,然后再配置BPDU丢弃操作:块。您可以使用 、 set protocols rstp disable、 或 命令set protocols rstp interface all disable对 delete protocols rstpRSTP 进行全局禁用。
分步程序
要为 drop 语句配置 BPDU 保护:
-
在交换机 2 上的下游接口 ge-0/0/5 上配置 BPDU
drop语句:[edit protocols layer2-control] user@switch# set bpdu-block interface ge-0/0/50 drop
-
在交换机 2 上的下游接口 ge-0/0/6 上配置 BPDU
drop语句:[edit protocols layer2-control] user@switch# set bpdu-block interface ge-0/0/6 drop
结果
检查配置结果:
user@switch> show configuration protocols layer2-control
bpdu-block {
interface ge-0/0/5;
interface ge-0/0/6;
}