Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 BFD 配置 OSPF 故障检测

了解 OSPF 的 BFD

双向转发检测 (BFD) 协议是一种检测网络故障的简单问候机制。BFD 适用于各种网络环境和拓扑结构。一对路由设备交换 BFD 数据包。hello 数据包按指定的定期间隔发送。当路由设备在指定时间间隔后停止接收回复时,将检测到邻接方故障。BFD 故障检测计时器的时间限制比 OSPF 故障检测机制短,因此检测速度更快。

BFD 故障检测计时器是自适应的,可以调整为更快或更慢。BFD 故障检测计时器值越低,故障检测速度越快,反之亦然。例如,如果邻接失败(即计时器检测故障的速度较慢),计时器可以适应更高的值。或者,邻接方可以协商计时器高于配置值的值。当 BFD 会话翻动在 15 秒内发生 3 次以上时,计时器将适应更高的值。如果本地 BFD 实例是会话翻动的原因,则回退算法会将接收 (Rx) 间隔增加两个。如果远程 BFD 实例是会话翻动的原因,则传输 (Tx) 间隔将增加 2。您可以使用 clear bfd adaptation 命令将 BFD 间隔计时器返回到其配置的值。命令 clear bfd adaptation 是无中断的,这意味着命令不会影响路由设备上的流量。

注意:

在集中式和分布式模式下,运行 Junos OS 或 Junos OS 演化版的 EX4600 和 QFX5000 系列交换机不支持小于 1 秒的最小间隔值。

注意:

Junos OS 9.3 及更高版本中的 OSPFv3 支持 BFD。

注意:

对于分支机构 SRX 系列防火墙,建议 1000 毫秒作为 BFD 数据包的最短激活时间间隔。

注意:

对于 vSRX 3.0,我们建议将 300 毫秒作为 BFD 数据包的最小激活时间间隔。

您可以配置以下 BFD 协议设置:

  • detection-time threshold—检测时间适应的阈值。当 BFD 会话检测时间适应为等于或大于配置阈值的值时,将发送单个陷阱和单个系统日志消息。

  • full-neighbors-only—仅能够为具有完全邻接的 OSPF 邻接方建立 BFD 会话。默认行为是为所有 OSPF 邻接方建立 BFD 会话。此设置在 Junos OS 9.5 及更高版本中可用。

  • minimum-interval—故障检测的最小发射和接收间隔。此设置配置本地路由设备传输hello数据包的最小间隔,以及路由设备预期从已与之建立 BFD 会话的邻接方接收回复的最小间隔。两个间隔均以毫秒为单位。您还可以使用 transmit-interval minimum-intervalminimum-receive-interval 语句分别指定最小传输间隔和接收间隔。

    注意:

    BFD 是一种消耗系统资源的密集型协议。对于基于路由引擎的会话,将 BFD 的最小间隔指定为小于 100 毫秒,对于分布式 BFD 会话,指定小于 10 毫秒的最小间隔可能会导致意外的 BFD 漂移。

    根据您的网络环境,可能存在以下情况:

    • 对于具有大量 BFD 会话的大规模网络部署,请指定不小于 500 毫秒的最小间隔。建议间隔 1000 毫秒以避免任何不稳定问题。

    • 要使 BFD 会话在配置 不间断活动路由 (NSR) 时在路由引擎切换事件期间保持开启状态,请为基于路由引擎的会话指定 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 会话的邻接方接收hello数据包。您还可以使用 minimum-interval 语句指定最小接收间隔。

  • multiplier—hello 数据包的乘数。此设置配置邻接方未接收的发送通知数据包数,这将导致将始发接口声明关闭。默认情况下,三个未接的hello数据包会导致始发接口被声明为关闭。

  • no-adaptation- 禁用 BFD 适配。此设置使 BFD 会话无法适应不断变化的网络条件。此设置在 Junos OS 9.0 及更高版本中可用。

    注意:

    我们建议您不要禁用 BFD 适配,除非您的网络中最好不要有 BFD 适配。

  • transmit-interval minimum-interval—故障检测的最小传输间隔。此设置配置最小传输间隔(以毫秒为单位),在该间隔中,本地路由设备将hello数据包传输到已与其建立 BFD 会话的邻接方。您还可以使用 minimum-interval 语句指定最小传输间隔。

  • transmit-interval threshold—BFD 会话传输间隔适配阈值。当传输间隔适应于大于阈值的值时,将发送单个陷阱和单个系统日志消息。阈值必须大于最小传输间隔。如果尝试提交的配置阈值小于最小传输间隔,路由设备将显示错误,并且不接受该配置。

  • version- BFD 版本。此设置配置用于检测的 BFD 版本。您可以显式配置 BFD 版本 1,或者路由设备可以自动检测 BFD 版本。默认情况下,路由设备会自动检测 BFD 版本,该版本为 0 或 1。

您还可以跟踪 BFD作以进行故障排除。

示例:为 OSPF 配置 BFD

此示例说明如何为 OSPF 配置双向转发检测 (BFD) 协议。

要求

开始之前:

概述

要想增加路由收敛性,可通过调整 OSPF hello 间隔和无效间隔设置来增加路由收敛性,另一种方法是配置 BFD。BFD 协议是一种检测网络故障的简单发送机制。BFD 故障检测计时器的计时器限制比 OSPF 故障检测机制短,因此检测速度更快。

BFD 在无法快速检测到故障的接口(如以太网接口)上很有用。其他接口(如 SONET 接口)已内置故障检测。无需在这些接口上配置 BFD。

您可以在一对相邻的 OSPF 接口上配置 BFD。与 OSPF hello 间隔和无效间隔设置不同,您不必在 OSPF 区域中的所有接口上启用 BFD。

在此示例中,您可以通过在区域 0.0.0.0 中的邻接方 OSPF 接口 fe-0/1/0 上包含bfd-liveness-detection语句来启用故障检测,并将 BFD 数据包交换间隔配置为 300 毫秒,将 4 配置为导致始发接口声明关闭的未接送数据包数,并通过包括以下设置,仅为具有完全邻接邻接的 OSPF 邻接方配置 BFD 会话:

  • 仅限全邻接方 — 在 Junos OS 9.5 及更高版本中,将 BFD 协议配置为仅为具有完全邻接邻接的 OSPF 邻接方建立 BFD 会话。默认行为是为所有 OSPF 邻接方建立 BFD 会话。

  • minimum-interval — 配置本地路由设备传输hello数据包的最小间隔(以毫秒为单位),以及路由设备期望从与之建立BFD会话的邻接方接收回复的最短间隔。您可以配置 1 到 255,000 毫秒范围内的数字。您还可以使用 transmit-interval、minimum-intervalminimum-receive-interval 语句分别指定最小传输间隔和接收间隔。

    注意:

    BFD 是一种消耗系统资源的密集型协议。对于基于路由引擎的会话,将 BFD 的最小间隔指定为小于 100 毫秒,对于分布式 BFD 会话,指定小于 10 毫秒的最小间隔可能会导致意外的 BFD 漂移。

    根据您的网络环境,以下附加建议可能适用:

    • 对于具有大量 BFD 会话的大规模网络部署,请指定不小于 500 毫秒的最小间隔。建议间隔 1000 毫秒以避免任何不稳定问题。

      注意:
      • 对于 bfdd 进程,设置的检测时间间隔小于 300 毫秒。如果系统上运行高优先级进程(如 ppmd),则 CPU 可能会将时间花在 ppmd 进程而不是 bfdd 进程上。

      • 对于分支机构 SRX 系列防火墙,建议 1000 毫秒作为 BFD 数据包的最短激活时间间隔。

      • 对于 vSRX 3.0,我们建议将 300 毫秒作为 BFD 数据包的最小激活时间间隔。

    • 对于具有大量 BFD 会话的超大规模网络部署,请联系瞻博网络客户支持,了解更多信息。

    • 要使 BFD 会话在配置不间断活动路由 (NSR) 时在路由引擎切换事件期间保持开启状态,请为基于路由引擎的会话指定 2500 毫秒的最小间隔。对于配置了 NSR 的分布式 BFD 会话,最小间隔建议保持不变,仅取决于您的网络部署。

  • 乘数 — 配置导致始发接口声明关闭的邻接方未接收的hello数据包数。默认情况下,三个未接的hello数据包会导致始发接口被声明为关闭。您可以配置 1 到 255 范围内的值。

拓扑学

配置

程序

CLI 快速配置

要快速配置 OSPF 的 BFD 协议,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到 [edit] 层次结构级别的 CLI 中,然后从配置模式进入 commit

分步过程

要在一个相邻接口上为 OSPF 配置 BFD 协议,请执行以下作:

  1. 创建 OSPF 区域。

    注意:

    要指定 OSPFv3,请在[edit protocols]层次结构级别包含语ospf3句。

  2. 指定接口。

  3. 指定最小传输和接收间隔。

  4. 配置导致始发接口声明关闭的未发送hello数据包数。

  5. 仅为具有完全邻接邻接的 OSPF 邻接方配置 BFD 会话。

  6. 如果完成设备配置,请提交配置。

    注意:

    在另一个相邻接口上重复整个配置。

结果

输入 show protocols ospf 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

要确认您的 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 身份验证:

  • simple-password - 纯文本密码。1 到 16 字节的纯文本用于验证 BFD 会话。可以配置一个或多个密码。此方法是最不安全的,仅当 BFD 会话不受数据包拦截时才应使用。

  • keyed-md5 — 传输和接收间隔大于 100 毫秒的会话的键控消息摘要 5 哈希算法。为了验证 BFD 会话,密钥 MD5 使用一个或多个密钥(由算法生成)和一个定期更新的序列号。使用此方法,如果其中一个密钥匹配,且序列号大于或等于接收到的最后一个序列号,则在会话的接收端接受数据包。虽然这种方法比简单密码更安全,但容易受到重放攻击。提高序列号的更新速率可以降低这种风险。

  • meticulous-keyed-md5—细致键控消息摘要 5 哈希算法。此方法的工作方式与键控 MD5 相同,但序列号随每个数据包更新。尽管此方法比密钥 MD5 和简单密码更安全,但可能需要额外的时间来验证会话。

  • keyed-sha-1 — 密钥安全散列算法 I,适用于传输和接收间隔大于 100 毫秒的会话。为了验证 BFD 会话,密钥 SHA 使用一个或多个密钥(由算法生成)和一个定期更新的序列号。密钥不在数据包内携带。使用此方法,如果其中一个密钥匹配且序列号大于上次接收的序列号,则在会话的接收端接受数据包。

  • meticulous-keyed-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 会话上配置身份验证:

  1. 指定 OSPFv2 协议的 BFD 身份验证算法。

  2. 将身份验证密钥串与 OSPFv2 协议相关联。

  3. 配置相关的安全认证密钥链。

要配置 BFD 身份验证,请执行以下作:

  1. 指定用于 OSPF 路由或路由实例上 BFD 身份验证的算法(keyed-md5keyed-sha-1meticulous-keyed-md5meticulous-keyed-sha-1simple-password)。
    注意:

    细致密钥 md5 和细致密钥 sha-1 身份验证算法不支持不间断活动路由 (NSR)。切换后,使用这些算法的 BFD 会话可能会中断。

  2. 指定用于将指定 OSPF 路由或路由实例上的 BFD 会话与唯一安全身份验证钥匙串属性相关联的密钥链。

    此钥匙串应与在层次结构级别上配置的 [edit security authentication key-chains] 钥匙串名称匹配。

    注意:

    必须在 BFD 会话的两端配置算法和钥匙串,并且它们必须匹配。配置中的任何不匹配都会阻止创建 BFD 会话。

  3. 指定 BFD 会话的唯一安全身份验证信息:
    • 步骤 2 中指定的匹配钥匙串名称。

    • 至少一个键,介于 0 到 63 之间的唯一整数。创建多个密钥使多个客户端能够使用 BFD 会话。

    • 用于允许访问会话的机密数据。

    • 身份验证密钥处于活动状态的时间,格式 yyyy-mm-dd.hh:mm:ss为 。

  4. (可选)如果要从未经过身份验证的会话过渡到经过身份验证的会话,请指定松散的身份验证检查。
  5. (选答)使用 show bfd session detailshow bfd session extensive 命令查看您的配置。
  6. 重复此过程中的步骤以配置 BFD 会话的另一端。
注意:

BFD 身份验证仅在加拿大和美国版本的 Junos OS 映像中受支持,在导出版本中不可用。

查看 BFD 会话的身份验证信息

您可以使用 show bfd session detailshow bfd session extensive 命令查看现有的 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。

如果将这些更新提交到配置中,则会看到类似于以下内容的输出。在命令的输出 show bfd session detail 中,将显示 “身份验证 ”,以指示已配置 BFD 身份验证。

显示 BFD 会话详细信息

有关配置的更多信息,请使用 show bfd session extensive 命令。此命令的输出提供会话中每个客户端的密钥链名称、身份验证算法和模式,以及整体 BFD 身份验证配置状态、密钥串名称以及身份验证算法和模式。

显示 BFD 会话广泛