生成树协议的 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 保护配置为忽略在不应期望的接口(例如,网络边缘上没有其他网桥的 LAN 接口)上收到的 BPDU。如果在受保护接口上接收到 BPDU,则该接口将被禁用并停止转发帧。默认情况下,所有接口上都接受并处理所有 BPDU。
您可以通过多种方式实现 BPDU 保护。默认情况下,如果在接口上启用了 bpdu-block,则在接收 BPDU 时,接口将被禁用,接口上的所有流量转发都将停止。但是,如果您不想禁用该接口,并且不希望该接口参与 STP 计算,则可以配置操作丢弃。如果配置操作丢弃,接口将保持启动和运行,流量将继续流动;但是,BPDU 会被丢弃。
边缘端口不支持操作丢弃。如果边缘端口接收到 BPDU,则边缘 BPDU 块将禁用接口。您必须清除错误才能恢复接口。
您可以在具有以下封装类型的接口上配置 BPDU 保护:
-
以太网网桥
-
以太网-VPLS
-
扩展 VLAN 网桥
-
VLAN-VPLS
-
VLAN 网桥
-
extended-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; }
如果还包括可选 disable-timeout seconds
语句,则 受保护的接口 将在指定的时间间隔后自动清除,除非间隔为 0。
了解用于在网桥之间交换信息的 BPDU
在第 2 层网桥环境中,生成树协议使用称为网桥协议数据单元 (BPDU) 的数据帧在网桥之间交换信息。
对等系统上的生成树协议交换 BPDU,其中包含有关端口角色、网桥 ID 和根路径成本的信息。在每个路由器或交换机上,生成树协议使用此信息来选择根网桥,识别每个交换机的根端口,识别每个物理 LAN 分段的指定端口,并修剪特定的冗余链路以创建无环路树拓扑。生成的树拓扑可在任意两个终端站之间提供单个活动第 2 层数据路径。
在生成树协议的讨论中,术语 bridge 和 switch 通常可以互换使用。
BPDU 的传输由 MX 系列 5G 通用路由平台上的第 2 层控制协议进程 (l2cpd) 控制。
代表 l2cpd 进程传输定期数据包由定期数据包管理 (PPM) 执行,默认情况下,该管理 (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 数据包并允许剩余流量通过,同时将接口状态保留为 up,请执行以下操作:
确保要配置 BPDU 保护的交换机已连接到对等设备。
为边缘接口配置 BPDU 保护
在生成树拓扑中,如果交换机是接入交换机,则该交换机上的接口将连接到未连接到其他交换机的终端设备,如 PC、服务器、路由器或集线器。您可以将这些接口配置为边缘接口,因为它们直接连接到终端设备。
配置为边缘接口的接口可以立即转换为转发状态,因为它们无法创建网络环路。交换机会注意到终端站没有通信,从而检测边缘端口。由于边缘端口连接到终端设备,因此必须在边缘端口上配置 BPDU 保护以避免环路。如果在边缘接口上启用了 BPDU 保护,则接口在遇到 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 接口上未禁用默认生成树协议 (RSTP) 时,此示例将在交换机 2 接口 ge-0/0/5.0 和 ge-0/0/6.0 上配置下游 BPDU 保护。启用 BPDU 保护后,默认情况下将启用该 shutdown
语句,如果便携式计算机生成的 BPDU 尝试访问交换机 2,交换机接口将关闭。
在第二种情况下,此示例在交换机 2 接口 ge-0/0/5.0 和 ge-0/0/6.0 上配置下游 BPDU 保护(当这些接口上未配置生成树协议时)。使用该语句启用 drop
BPDU 保护后,交换机接口将仅丢弃 BPDU,同时允许剩余流量通过,并在笔记本电脑生成的 BPDU 尝试访问交换机 2 时将其状态保留为 up。
在没有生成树连接到具有生成树的交换机的生成树的接口上配置 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 rstp
禁用 RSTP。
分步过程
要为 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; }