使用 BFD 配置 OSPF 故障检测
了解适用于 OSPF 的 BFD
双向转发检测 (BFD) 协议是一种检测网络中故障的简单你好机制。BFD 适用于各种网络环境和拓扑结构。一对路由设备交换 BFD 数据包。Hello 数据包按指定的定期间隔发送。当路由设备在指定间隔后停止接收回复时,将检测到邻接方故障。BFD 故障检测计时器的时间限制比 OSPF 故障检测机制短,因此检测速度更快。
BFD 故障检测计时器是自适应的,可以调整为更快或更慢。BFD 故障检测计时器值越低,故障检测越快,反之亦然。例如,如果邻接失败(即,计时器检测故障的速度较慢),计时器可以适应更高的值。或者,邻居可以为计时器协商比配置的值更高的值。当 BFD 会话抖动在 15 秒内出现三次以上时,计时器会适应更高的值。如果本地 BFD 实例是会话抖动的原因,则退避算法会将接收 (Rx) 间隔增加 2。如果远程 BFD 实例是会话抖动的原因,则传输 (Tx) 间隔增加 2。您可以使用命令将 clear bfd adaptation
BFD 间隔计时器返回到其配置的值。该 clear bfd adaptation
命令是无中断的,这意味着该命令不会影响路由设备上的流量。
EX4600 交换机不支持小于 1 秒的最小间隔值。
Junos OS 9.3 及更高版本中的 OSPFv3 支持 BFD。
对于分支 SRX 系列防火墙,我们建议将 1000 毫秒作为 BFD 数据包的最小激活时间间隔。
您可以配置以下 BFD 协议设置:
detection-time threshold
—适应检测时间的阈值。当 BFD 会话检测时间适应等于或大于配置阈值的值时,将发送单个陷阱和单个系统日志消息。full-neighbors-only
— 能够仅为具有完全邻接的 OSPF 邻居建立 BFD 会话。默认行为是为所有 OSPF 邻接方建立 BFD 会话。此设置在 Junos OS 9.5 及更高版本中可用。minimum-interval
— 故障检测的最小发送和接收间隔。此设置配置本地路由设备传输你好数据包的最小间隔,以及路由设备期望从已建立 BFD 会话的邻接方接收回复的最小间隔。两个间隔均以毫秒为单位。还可以使用 andtransmit-interval minimum-interval
minimum-receive-interval
语句分别指定最小传输和接收间隔。注意:BFD 是一种消耗系统资源的密集型协议。如果为基于路由引擎的会话指定 BFD 的最小间隔小于 100 毫秒,为分布式 BFD 会话指定小于 10 毫秒的最小间隔可能会导致意外的 BFD 摆动。
根据您的网络环境,以下情况可能适用:
对于具有大量 BFD 会话的大规模网络部署,请指定不小于 500 毫秒的最小间隔。建议间隔为 1000 毫秒,以避免任何不稳定问题。
当配置了 不间断活动路由 (NSR) 时,要在路由引擎切换事件期间保持开启的 BFD 会话,请为基于路由引擎的会话指定 2500 毫秒的最小间隔。如果没有 NSR,基于路由引擎的会话的最小间隔为 100 毫秒。
-
对于配置了 NSR 的分布式 BFD 会话,最小间隔建议保持不变,仅取决于您的网络部署。
-
Junos OS 21.2R1 及更高版本支持在运行 MPC 1 到 9 的 MX 系列路由器上使用 IPv6 链路本地地址的分布式 OSPFv3 和 ISIS BFD 会话(在 MPC 10 或 MPC 11 上不受支持)。IPv6 链路本地 BFD 的默认值为内联模式。
-
BFD 不在 Junos 21.2 之前分发(因为对于 OSPFv3,BFD 基于路由引擎)。
在单个 QFX5100 交换机上,添加 QFX-EM-4Q 扩展模块时,请指定大于 1000 毫秒的最小间隔。
minimum-receive-interval
- 故障检测的最小接收间隔。此设置配置最小接收间隔(以毫秒为单位),在此间隔之后,路由设备希望从已与其建立 BFD 会话的邻接方接收 你好 数据包。您还可以使用minimum-interval
语句指定最小接收间隔。multiplier
— 你好数据包的乘数。此设置配置邻接方未接收的 你好 数据包数,这会导致将始发接口声明关闭。默认情况下,三个丢失的 你好 数据包会导致源接口被声明为关闭。no-adaptation
— 禁用 BFD 适配。此设置禁止 BFD 会话适应不断变化的网络条件。此设置在 Junos OS 9.0 及更高版本中可用。注意:我们建议您不要禁用 BFD 适配,除非您的网络中最好不要进行 BFD 适配。
transmit-interval minimum-interval
— 故障检测的最小传输间隔。此设置配置本地路由设备将你好数据包传输到与其建立 BFD 会话的邻接方的最小传输间隔(以毫秒为单位)。您还可以使用minimum-interval
语句指定最小传输间隔。transmit-interval threshold
— BFD 会话传输间隔适配阈值。当传输间隔适应大于阈值的值时,将发送单个陷阱和单个系统日志消息。阈值必须大于最小传输间隔。如果尝试提交阈值小于最小传输间隔的配置,路由设备将显示错误,并且不接受该配置。version
—BFD 版本。此设置配置用于检测的 BFD 版本。您可以显式配置 BFD 版本 1,或者路由设备可以自动检测 BFD 版本。默认情况下,路由设备会自动检测 BFD 版本,即 0 或 1。
您还可以跟踪 BFD 操作以进行故障排除。
示例:为 OSPF 配置 BFD
此示例说明如何为 OSPF 配置双向转发检测 (BFD) 协议。
要求
准备工作:
配置设备接口。请参阅 Junos OS 网络接口库了解路由设备。
为 OSPF 网络中的设备配置路由器标识符。请参阅 示例:配置 OSPF 路由器标识符。
控制 OSPF 指定的路由器选择。请参阅 示例:控制 OSPF 指定路由器选择。
配置单区域 OSPF 网络。请参阅 示例:配置单区域 OSPF 网络。
配置多区域 OSPF 网络。请参阅 示例:配置多区域 OSPF 网络。
配置多区域 OSPF 网络。请参阅 示例:配置多区域 OSPF 网络。
概述
要调整 OSPF 你好间隔和死区间隔设置以提高路由收敛性,另一种方法是配置 BFD。BFD 协议是一种检测网络中故障的简单你好机制。BFD 故障检测计时器的计时器限制比 OSPF 故障检测机制短,因此检测速度更快。
BFD 在无法快速检测故障的接口(如以太网接口)上很有用。其他接口(如 SONET 接口)已具有内置故障检测功能。无需在这些接口上配置 BFD。
您可以在一对相邻 OSPF 接口上配置 BFD。与 OSPF 你好间隔和失效间隔设置不同,您不必在 OSPF 区域中的所有接口上启用 BFD。
在此示例中,您可以通过在 bfd-liveness-detection
区域 0.0.0.0 中的邻接方 OSPF 接口 fe-0/1/0 上包含语句并将 BFD 数据包交换间隔配置为 300 毫秒来启用故障检测,将 4 配置为导致始发接口被声明关闭的错过你好数据包数,并通过包含以下设置,仅为具有完全邻接的 OSPF 邻接方配置 BFD 会话:
仅限全邻接方 — 在 Junos OS 9.5 及更高版本中,将 BFD 协议配置为仅为具有全邻接方的 OSPF 邻接方建立 BFD 会话。默认行为是为所有 OSPF 邻接方建立 BFD 会话。
最小间隔 — 配置本地路由设备传输你好数据包的最小间隔(以毫秒为单位),以及路由设备期望从与其建立 BFD 会话的邻接方接收回复的最小间隔。您可以配置 1 到 255,000 毫秒范围内的数字。您还可以使用 传输间隔最小间隔 和
minimum-receive-interval
语句分别指定最小传输间隔和接收间隔。注意:BFD 是一种消耗系统资源的密集型协议。如果为基于路由引擎的会话指定 BFD 的最小间隔小于 100 毫秒,为分布式 BFD 会话指定小于 10 毫秒的最小间隔可能会导致意外的 BFD 摆动。
根据您的网络环境,以下附加建议可能适用:
对于具有大量 BFD 会话的大规模网络部署,请指定不小于 500 毫秒的最小间隔。建议间隔为 1000 毫秒,以避免任何不稳定问题。
注意:对于 bfdd 进程,设置的检测时间间隔小于 300 毫秒。如果系统上正在运行高优先级进程(如 ppmd),则 CPU 可能会将时间花在 ppmd 进程而不是 bfdd 进程上。
对于分支 SRX 系列防火墙,我们建议将 1000 毫秒作为 BFD 数据包的最小激活时间间隔。
对于具有大量 BFD 会话的超大规模网络部署,请联系瞻博网络客户支持以获取更多信息。
当配置了不间断活动路由 (NSR) 时,要在路由引擎切换事件期间保持开启的 BFD 会话,请为基于路由引擎的会话指定 2500 毫秒的最小间隔。对于配置了 NSR 的分布式 BFD 会话,最小间隔建议保持不变,仅取决于您的网络部署。
乘法器 — 配置邻接方未接收的导致始发接口被声明关闭的 你好 数据包数。默认情况下,三个丢失的 你好 数据包会导致源接口被声明为关闭。可以配置 1 到 255 范围内的值。
拓扑学
配置
程序
CLI 快速配置
要为 OSPF 快速配置 BFD 协议,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改任何必要的详细信息以匹配您的网络配置,将命令复制并粘贴到 [edit] 层次结构级别的 CLI 中,然后从配置模式进入 commit
。
[edit] set protocols ospf area 0.0.0.0 interface fe-0/0/1 bfd-liveness-detection minimum-interval 300 set protocols ospf area 0.0.0.0 interface fe-0/0/1 bfd-liveness-detection multiplier 4 set protocols ospf area 0.0.0.0 interface fe-0/0/1 bfd-liveness-detection full-neighbors-only
分步过程
要在相邻接口上为 OSPF 配置 BFD 协议,请执行以下操作:
创建 OSPF 区域。
注意:要指定 OSPFv3,请在层次结构级别包含
ospf3
该语句[edit protocols]
。[edit] user@host# edit protocols ospf area 0.0.0.0
指定接口。
[edit protocols ospf area 0.0.0.0] user@host# set interface fe-0/0/1
指定最小传输和接收间隔。
[edit protocols ospf area 0.0.0.0 ] user@host# set interface fe-0/0/1 bfd-liveness-detection minimum-interval 300
配置导致始发接口声明关闭的错过你好数据包的数量。
[edit protocols ospf area 0.0.0.0 ] user@host# set interface fe-0/0/1 bfd-liveness-detection multiplier 4
仅为具有完全邻接的 OSPF 邻接方配置 BFD 会话。
[edit protocols ospf area 0.0.0.0 ] user@host# set interface fe-0/0/1 bfd-liveness-detection full-neighbors-only
如果完成设备配置,请提交配置。
[edit protocols ospf area 0.0.0.0 ] user@host# commit
注意:在另一个相邻接口上重复整个配置。
结果
输入命令确认 show protocols ospf
您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@host# show protocols ospf area 0.0.0.0 { interface fe-0/0/1.0 { bfd-liveness-detection { minimum-interval 300; multiplier 4; full-neighbors-only; } } }
要确认 OSPFv3 配置,请输入 show protocols ospf3
命令。
验证
确认配置工作正常。
验证 BFD 会话
目的
验证 OSPF 接口是否具有活动的 BFD 会话,以及会话组件是否已正确配置。
行动
在操作模式下,输入 show bfd session detail
命令。
意义
输出显示有关 BFD 会话的信息。
地址字段显示邻居的 IP 地址。
接口字段显示您为 BFD 配置的接口。
“状态”字段显示邻居的状态,并且应显示“完整”以反映您配置的完整邻居邻接关系。
传输间隔字段显示您配置为发送 BFD 数据包的时间间隔。
乘数字段显示您配置的乘数。
了解 OSPF 的 BFD 身份验证
双向转发检测 (BFD) 可以快速检测相邻系统之间的通信故障。默认情况下,BFD 会话的身份验证处于禁用状态。但是,当您通过网络层协议运行 BFD 时,服务攻击的风险可能很大。如果您通过多个跃点或通过不安全的隧道运行 BFD,我们强烈建议使用身份验证。从 Junos OS 9.6 版开始,Junos OS 支持对通过 OSPFv2 运行的 BFD 会话进行身份验证。MPLS OAM 会话不支持 BFD 身份验证。BFD 身份验证仅在加拿大和美国版本的 Junos OS 映像中受支持,在导出版本中不可用。
要对 BFD 会话进行身份验证,请指定身份验证算法和密钥链,然后使用该密钥链名称将该配置信息与安全身份验证密钥链相关联。
以下部分介绍支持的身份验证算法、安全密钥链和可配置的身份验证级别:
BFD 认证算法
Junos OS 支持以下 BFD 身份验证算法:
简单密码 - 纯文本密码。1 到 16 字节的纯文本用于验证 BFD 会话。可以配置一个或多个密码。此方法最不安全,仅当 BFD 会话不受数据包拦截限制时才应使用。
keyed-md5 — 密钥消息摘要 5 哈希算法,适用于传输和接收间隔大于 100 毫秒的会话。要验证 BFD 会话,密钥 MD5 使用一个或多个密钥(由算法生成)以及定期更新的序列号。使用此方法,如果其中一个密钥匹配且序列号大于或等于收到的最后一个序列号,则在会话的接收端接受数据包。虽然比简单密码更安全,但此方法容易受到重放攻击。提高序列号的更新速率可以降低此风险。
细致密钥 md5 — 细致密钥消息摘要 5 哈希算法。此方法的工作方式与键控 MD5 相同,但序列号随每个数据包一起更新。尽管此方法比密钥 MD5 和简单密码更安全,但此方法可能需要更多时间来验证会话。
keyed-sha-1 — 密钥安全散列算法 I,适用于传输和接收间隔大于 100 毫秒的会话。要对 BFD 会话进行身份验证,密钥 SHA 使用一个或多个密钥(由算法生成)以及定期更新的序列号。密钥不在数据包中携带。使用此方法,如果其中一个密钥匹配且序列号大于收到的最后一个序列号,则在会话的接收端接受数据包。
一丝不苟的密钥 sha-1 — 一丝不苟的密钥安全散列算法 I.此方法的工作方式与键控 SHA 相同,但序列号随每个数据包一起更新。尽管此方法比密钥化 SHA 和简单密码更安全,但此方法可能需要更多时间来验证会话。
一丝不苟的密钥 md5 和一丝不苟的密钥 sha-1 身份验证算法不支持不间断活动路由 (NSR)。使用这些算法的 BFD 会话可能会在切换后关闭。
QFX5000 系列交换机和 EX4600 交换机不支持小于 1 秒的最小间隔值。
安全认证钥匙串
安全认证密钥链定义用于认证密钥更新的认证属性。配置安全认证密钥链并通过密钥链名称与协议关联时,可以在不中断路由和信令协议的情况下进行身份验证密钥更新。
认证钥匙串包含一个或多个钥匙串。每个钥匙串包含一个或多个密钥。每个密钥都保存机密数据和密钥生效的时间。必须在 BFD 会话的两端配置算法和钥匙串,并且它们必须匹配。配置中的任何不匹配都会阻止创建 BFD 会话。
BFD 允许每个会话使用多个客户端,并且每个客户端都可以定义自己的密钥链和算法。为避免混淆,我们建议仅指定一个安全认证钥匙串。
严格身份验证与松散身份验证
默认情况下,将启用严格身份验证,并在每个 BFD 会话的两端检查身份验证。(可选)要从未经身份验证的会话顺利迁移到经过身份验证的会话,您可以配置 松散检查。配置松散检查后,将接受数据包,而不会在会话的每一端检查身份验证。此功能仅适用于过渡期。
为 OSPF 配置 BFD 身份验证
从 Junos OS 9.6 版开始,您可以为通过 OSPFv2 运行的 BFD 会话配置身份验证。还支持路由实例。
以下部分提供了在 OSPF 上配置和查看 BFD 身份验证的说明:
配置 BFD 身份验证参数
在 BFD 会话上配置身份验证只需三个步骤:
指定 OSPFv2 协议的 BFD 身份验证算法。
将认证密钥链与 OSPFv2 协议关联。
配置相关的安全认证密钥链。
要配置 BFD 身份验证,请执行以下操作:
BFD 身份验证仅在加拿大和美国版本的 Junos OS 映像中受支持,在导出版本中不可用。
查看 BFD 会话的身份验证信息
您可以使用和show bfd session extensive
命令查看show bfd session detail
现有的 BFD 身份验证配置。
以下示例显示了为 if2-ospf BGP 组配置的 BFD 身份验证。它指定密钥化 SHA-1 身份验证算法和密钥链名称 bfd-ospf。身份验证钥匙串配置了两个密钥。密钥 1 包含机密数据“$ABC 123$ABC123”,开始时间为太平洋标准时间 2009 年 6 月 1 日上午 9:46:02。密钥 2 包含机密数据“$ABC 123$ABC123”,开始时间为太平洋标准时间 2009 年 6 月 1 日下午 3:29:20。
[edit protocols ospf] area 0.0.0.1 { interface if2-ospf { bfd-liveness-detection { authentication { algorithm keyed-sha-1; key-chain bfd-ospf; } } } } [edit security] authentication key-chains { key-chain bfd-ospf { key 1 { secret “$ABC123$ABC123”; ## SECRET-DATA start-time “2009-6-1.09:46:02 -0700”; } key 2 { secret “$ABC123$ABC123”; start-time “2009-6-1.15:29:20 -0700”; ## SECRET-DATA } } }
如果将这些更新提交到配置,则会看到类似于以下内容的输出。在命令的 show bfd session detail
输出中,将显示 身份验证 以指示已配置 BFD 身份验证。
显示 BFD 会话详细信息
user@host# show bfd session detail Detect Transmit Address State Interface Time Interval Multiplier 10.9.1.33 Up so-7/1/0.0 0.600 0.200 3 Client OSPF, TX interval 0.200, RX interval 0.200, multiplier 3, Authenticate Session up time 3d 00:34 Local diagnostic None, remote diagnostic None Remote state Up, version 1 Replicated 1 sessions, 1 clients Cumulative transmit rate 10.0 pps, cumulative receive rate 10.0 pps
有关配置的更多信息,请使用 show bfd session extensive
命令。此命令的输出提供密钥链名称、会话中每个客户端的身份验证算法和模式,以及整体 BFD 身份验证配置状态、密钥链名称以及身份验证算法和模式。
显示 BFD 会话广泛
user@host# show bfd session extensive Detect Transmit Address State Interface Time Interval Multiplier 10.9.1.33 Up so-7/1/0.0 0.600 0.200 3 Client OSPF, TX interval 0.200, RX interval 0.200, multiplier 3, Authenticate keychain bfd-ospf, algo keyed-md5, mode loose Session up time 3d 00:34 Local diagnostic None, remote diagnostic None Remote state Up, version 1 Replicated Min async interval 0.200, min slow interval 1.000 Adaptive async tx interval 0.200, rx interval 0.200 Local min tx interval 0.200, min rx interval 0.200, multiplier 3 Remote min tx interval 0.100, min rx interval 0.100, multiplier 3 Threshold transmission interval 0.000, Threshold for detection time 0.000 Local discriminator 11, remote discriminator 80 Echo mode disabled/inactive Authentication enabled/active, keychain bfd-ospf, algo keyed-sha-1, mode strict 1 sessions, 1 clients Cumulative transmit rate 10.0 pps, cumulative receive rate 10.0 pps