静态路由的双向转发检测

了解静态路由的 BFD,加快网络故障检测

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

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

默认情况下,单跃点静态路由支持 BFD。

注意:

在 MX 系列设备上,如果静态路由配置了多个下一跃点,则静态路由不支持多跃点 BFD。当静态路由需要多跳 BFD 时,建议避免使用多个下一跃点。

要启用故障检测,请在静态路由配置中包含 bfd-liveness-detection 该语句。

注意:

该 bfd-liveness-detection 命令包含描述字段。在支持此功能的设备上,说明是对象下的 bfd-liveness-detection 属性。此字段仅适用于静态路由。

IPv6 静态路由支持 BFD 协议。静态路由支持全局单播和链路本地 IPv6 地址。组播或任播 IPv6 地址不支持 BFD 协议。对于 IPv6,BFD 协议仅支持静态路由。eBGP 协议还支持用于 BFD 的 IPv6。

要为 IPv6 静态路由配置 BFD 协议,请在层次结构级别包含bfd-liveness-detection[edit routing-options rib inet6.0 static route destination-prefix]该语句。

您可以配置抑制间隔,以指定在发送状态更改通知之前,BFD 会话必须保持开启多长时间。

要指定抑制间隔,请将该语句包含在 holddown-interval BFD 配置中。可以配置一个介于 0 到 255,000 毫秒范围内的数字。默认值为 0。如果 BFD 会话关闭,然后在抑制间隔内重新启动,则计时器将重新启动。

注意:

如果单个 BFD 会话包含多个静态路由,则使用具有最高值的抑制间隔。

要指定故障检测的最小传输和接收间隔,请在 BFD 配置中包含 minimum-interval 该语句。

此值表示本地路由设备传输 hello 数据包的最小间隔,以及路由设备期望从已与其建立 BFD 会话的邻接方接收回复的最小间隔。可以配置一个介于 1 到 255,000 毫秒范围内的数字。或者,您可以使用 transmit-interval minimum-interval 和 minimum-receive-interval 语句分别配置最小传输间隔和接收间隔,而不是使用此语句。

注意:

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

  • 集中式 BFD 的建议最小间隔为 300 毫秒,a multiplier 为 3,分布式 BFD 的建议最小间隔为 100 毫秒,a multiplier 为 3。

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

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

要指定故障检测的最小接收间隔,请将该minimum-receive-interval语句包含在 BFD 配置中。此值表示路由设备期望从已与其建立 BFD 会话的邻接方接收回复的最小间隔。可以配置一个介于 1 到 255,000 毫秒范围内的数字。或者,您可以在层次结构级别使用 [edit routing-options static route destination-prefix bfd-liveness-detection] 该minimum-interval语句配置最小接收间隔,而不是使用此语句。

要指定邻接方未收到的导致始发接口声明关闭的 hello 数据包数,请在 BFD 配置中包含该 multiplier 语句。默认值为 3。可以配置一个介于 1 到 255 的范围内的数字。

要指定检测检测时间适应的阈值,请在 BFD 配置中包含 threshold 该语句。

当 BFD 会话检测时间适应到等于或高于阈值的值时,将发送单个陷阱和系统日志消息。检测时间基于 最小间隔 或 最小接收间隔 值的乘数。对于这些配置的值,阈值必须高于乘数。例如,如果 最小接收间隔 为 300 毫秒, 乘数 为 3,则总检测时间为 900 毫秒。因此,检测时间阈值必须具有高于 900 的值。

要指定故障检测的最小传输间隔,请在 BFD 配置中包含 transmit-interval minimum-interval 该语句。

此值表示本地路由设备将 hello 数据包传输到与之建立 BFD 会话的邻接方之间的最小间隔。可以配置 1 到 255,000 毫秒范围内的值。或者,您可以在层次结构级别使用[edit routing-options static route destination-prefix bfd-liveness-detection]该minimum-interval语句配置最小传输间隔,而不是使用此语句。

要指定传输间隔调整的阈值,请在 BFD 配置中包含 transmit-interval threshold 该语句。

阈值必须大于传输间隔。当 BFD 会话传输时间适应到大于阈值的值时,将发送单个陷阱和系统日志消息。检测时间基于 最小间隔 值的乘数或 minimum-receive-interval 层次结构级别的 [edit routing-options static route destination-prefix bfd-liveness-detection] 语句。对于这些配置的值,阈值必须高于乘数。

要指定 BFD 版本,请在 BFD 配置中包含该 version 语句。默认设置是自动检测版本。

要为 BFD 会话的下一跃点添加 IP 地址,请在 BFD 配置中包含 neighbor 该语句。

注意:

如果指定的下一跃点是接口名称,则必须配置该 neighbor 语句。如果将某个 IP 地址指定为下一跃点,则该地址将用作 BFD 会话的邻接方地址。

您可以将 BFD 会话配置为不适应不断变化的网络条件。要禁用 BFD 适配,请在 BFD 配置中包含该 no-adaptation 语句。

注意:

除非最好不要在网络中安装 BFD 适配,否则建议不要禁用 BFD 适配。

注意:

如果仅在静态路由的一端配置 BFD,则路由将从路由表中移除。当在静态路由的两端配置 BFD 时,BFD 将建立会话。

静态路由中的 ISO 地址族不支持 BFD。BFD 支持 IS-IS。

如果在配置 平滑路由引擎切换 (GRES) 和 BFD 的同时配置,则 GRES 不会在故障切换期间保留 BFD 状态信息。

示例:为静态路由配置 BFD,以便更快地检测网络故障

此示例说明了如何为静态路由配置双向转发检测 (BFD)。

要求

在此示例中,除了设备初始化之外,不需要特殊配置。

概述

静态路由有许多实际应用。静态路由通常用于网络边缘,以支持连接到剩余网络,鉴于其入口和出口为单点,因此非常适合静态路由的简单性。在 Junos OS 中,静态路由的全局优先级为 5。如果指定的下一跃点可访问,则静态路由将被激活。

在此示例中,您将使用下一跃点地址 172.16.1.2 配置从提供商网络到客户网络的静态路由 192.168.47.0/24。您还可以使用下一跃点地址 172.16.1.1 配置从客户网络到提供商网络的静态默认路由 0.0.0.0/0。

出于演示目的,设备 B 和设备 D 上配置了一些环路接口。这些环路接口提供 ping 地址,从而验证静态路由是否正常工作。

图 1 显示了示例网络。

图 1:连接到服务提供商 Customer Routes Connected to a Service Provider的客户路由

拓扑结构

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层次结构级别的 [edit] CLI 中。

设备 B

设备 D

过程

分步程序

下面的示例要求您在各个配置层级中进行导航。有关导航CLI的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用CLI编辑器。

要为静态路由配置 BFD:

  1. 在设备 B 上,配置接口。

  2. 在设备 B 上,创建静态路由并设置下一跳地址。

  3. 在设备 B 上,为静态路由配置 BFD。

  4. 在设备 B 上,配置 BFD 的跟踪作。

  5. 如果完成设备 B 的配置,请提交配置。

  6. 在设备 D 上,配置接口。

  7. 在设备 D 上,创建静态路由并设置下一跳地址。

  8. 在设备 D 上,为静态路由配置 BFD。

  9. 在设备 D 上,配置 BFD 的跟踪作。

  10. 如果完成设备 D 的配置,请提交配置。

结果

通过发出 show interfaces、 show protocols和 show routing-options 命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

设备 B

设备 D

验证

确认配置工作正常。

验证 BFD 会话是否已开启

目的

验证 BFD 会话是否已开启,并查看有关 BFD 会话的详细信息。

行动

在作模式下,输入命令 show bfd session extensive 。

注意:

description Site- <xxx>仅在 SRX 系列防火墙上受支持。

如果每个客户端都有多个描述字段,则它会在第一个描述字段中显示“以及更多”。

意义

输出表示 TX interval 1.000, RX interval 1.000 使用语句配置 minimum-interval 的设置。所有其他输出均表示 BFD 的默认设置。要修改默认设置,请在语句下 bfd-liveness-detection 添加可选语句。

查看详细的 BFD 事件

目的

如果需要,查看 BFD 跟踪文件的内容以帮助进行故障排除。

行动

在作模式下,输入命令 file show /var/log/bfd-trace 。

意义

BFD 消息正在写入跟踪文件。

了解静态路由安全性的 BFD 身份验证

双向转发检测 (BFD) 可以快速检测相邻系统之间的通信故障。默认情况下,BFD 会话的身份验证处于禁用状态。但是,当您在网络层协议上运行 BFD 时,遭受服务攻击的风险可能很高。

注意:

如果跨多个跃点或通过不安全的隧道运行 BFD,强烈建议使用身份验证。

从 Junos OS 9.6 版开始,Junos OS 支持对通过 IPv4 和 IPv6 静态路由运行的 BFD 会话进行身份验证。MPLS OAM 会话不支持 BFD 身份验证。BFD 身份验证仅在加拿大和美国版本的 Junos OS 映像中受支持,在导出版本中不可用。

注意:

EX3300 仅支持静态路由上的 BFD。

指定 身份验证 算法和密钥链,然后使用密钥链名称将该配置信息与安全身份验证密钥链相关联,可验证 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 和简单密码更安全,但可能需要额外的时间来对会话进行身份验证。

注意:

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

注意:

QFX5000 系列交换机和EX4600交换机不支持小于 1 秒的最小间隔值。

安全性认证钥匙串

安全身份验证密钥链定义用于身份验证密钥更新的身份验证属性。通过密钥链名称配置安全身份验证密钥链并与协议关联时,可以在不中断路由和信令协议的情况下进行身份验证密钥更新。

身份验证钥匙串包含一个或多个钥匙串。每个钥匙串都包含一个或多个钥匙。每个密钥都保存密钥数据和密钥生效的时间。必须在 BFD 会话的两端配置算法和密钥链,并且它们必须匹配。配置中的任何不匹配都将导致创建 BFD 会话。

BFD 允许每个会话多个客户端,并且每个客户端可以定义自己的密钥链和算法。为避免混淆,建议仅指定一个安全身份验证钥匙串。

严格身份验证与松散身份验证

默认情况下,启用严格身份验证,并在每个 BFD 会话的两端检查身份验证。或者,为了从未经身份验证的会话顺利迁移到经过身份验证的会话,您可以配置 松散检查。配置松散检查后,数据包将被接受,而无需在会话的每一端检查身份验证。此功能仅适用于过渡期。

示例:配置 BFD 身份验证以保护静态路由

此示例说明如何为静态路由配置双向转发检测 (BFD) 身份验证。

要求

Junos OS 9.6 或更高版本(加拿大和美国版本)。

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

概述

您可以为通过 IPv4 和 IPv6 静态路由运行的 BFD 会话配置身份验证。还支持路由实例和逻辑系统。

要在 BFD 会话上配置身份验证,需要执行以下步骤:

  1. 为静态路由指定 BFD 身份验证算法。

  2. 将身份验证密钥链与静态路由相关联。

  3. 配置相关的安全身份验证密钥链。这必须在主路由器上配置。

提示:

如果要从非身份验证会话转换为经过身份验证的会话,建议指定松散身份验证检查。

图 2 显示了示例网络。

图 2:连接到服务提供商 Customer Routes Connected to a Service Provider的客户路由

拓扑结构

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层次结构级别的 [edit] CLI 中。

设备 B

设备 D

过程

分步程序

下面的示例要求您在各个配置层级中进行导航。有关导航CLI的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用CLI编辑器。

要为静态路由配置 BFD:

  1. 在设备 B 上,配置接口。

  2. 在设备 B 上,创建静态路由并设置下一跳地址。

  3. 在设备 B 上,为静态路由配置 BFD。

  4. 在设备 B 上,指定用于静态路由上 BFD 身份验证的算法(keyed-md5、 keyed-sha-1、 meticulous-keyed-md5、 meticulous-keyed-sha-1 或 simple-password)。

    注意:

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

  5. 在设备 B 上,指定要用于将指定路由上的 BFD 会话与唯一安全身份验证密钥链属性相关联的密钥链。

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

  6. 在设备 B 上,为 BFD 会话指定唯一的安全身份验证信息:

    • 步骤 5 中指定的匹配钥匙串名称。

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

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

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

  7. 如果完成设备 B 的配置,请提交配置。

  8. 在设备 D 上重复配置。

    必须在 BFD 会话的两端配置算法和密钥链,并且它们必须匹配。配置中的任何不匹配都将导致创建 BFD 会话。

结果

通过发出 show interfaces、 show routing-options和 show security 命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

设备 B

验证

确认配置工作正常。

验证 BFD 会话是否已开启

目的

验证 BFD 会话是否已开启。

行动

在作模式下,输入命令 show bfd session 。

意义

命令输出显示 BFD 会话已开启。

查看有关 BFD 会话的详细信息

目的

查看有关 BFD 会话的详细信息,并确保已配置身份验证。

行动

在作模式下,输入命令 show bfd session detail 。

意义

在命令输出中,将显示 Authenticate ,表示已配置 BFD 身份验证。

查看广泛的 BFD 会话信息

目的

查看有关 BFD 会话的更多详细信息。

行动

在作模式下,输入命令 show bfd session extensive 。

意义

在命令输出中,将显示 Authenticate ,表示已配置 BFD 身份验证。命令 extensive 的输出提供会话中每个客户端的密钥链名称、身份验证算法和模式。

注意:

description Site- <xxx>仅在 SRX 系列防火墙上受支持。

如果每个客户端都有多个描述字段,则它会在第一个描述字段中显示“以及更多”。

示例:在静态路由中的合格下一跃点上启用 BFD,以便进行路由选择

此示例说明如何配置具有多个可能下一跃点的静态路由。每个下一跃点都启用了双向转发检测 (BFD)。

要求

在此示例中,除了设备初始化之外,不需要特殊配置。

概述

在此示例中,设备 B 的静态路由 192.168.47.0/24 具有两个可能的下一跃点。两个下一跃点使用两个 qualified-next-hop 语句定义。每个下一跃点都启用了 BFD。

设备 D 上也会启用 BFD,因为连接的两端都必须启用 BFD。

如果 BFD 会话已启动,下一跃点将包含在路由表中。如果 BFD 会话关闭,下一跃点将从路由表中移除。

参见 图 3。

图 3:在合格下一跃点 BFD Enabled on Qualified Next Hops上启用 BFD

拓扑结构

配置

过程

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层次结构级别的 [edit] CLI 中。

设备 B

设备 D

分步程序

下面的示例要求您在各个配置层级中进行导航。有关作说明,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用CLI编辑器。

要配置具有两个可能的下一跃点(均启用了 BFD)的静态路由:

  1. 在设备 B 上,配置接口。

  2. 在设备 B 上,配置具有两个下一跃点的静态路由,这两个跃点均启用了 BFD。

  3. 在设备 D 上,配置接口。

  4. 在设备 D 上,配置一个启用了 BFD 的默认静态路由,其中包含到提供商网络的两个下一跃点。

    在这种情况下,BFD 将在路由上启用,而非在下一跃点上启用。

结果

通过发出和show interfacesshow routing-options命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果完成设备配置,请从配置模式输入 commit 。

验证

确认配置工作正常。

检查路由表

目的

确保静态路由显示在设备 B 上的路由表中,并带有两个可能的下一跃点。

行动
意义

列出了两个下一跃点。下一跃点 192.168.2.2 是选定的路由。

验证 BFD 会话

目的

确保 BFD 会话已启动。

行动
意义

输出显示 BFD 会话已启动。

从设备 D 中移除 BFD

目的

演示当两个下一跃点的 BFD 会话关闭时会发生什么情况。

行动
  1. 停用设备 D 上的 BFD。

  2. 在设备 B 上重新运行命令 show bfd session 。

  3. 在设备 B 上重新运行命令 show route 192.168.47.0 。

意义

正如预期一样,当 BFD 会话关闭时,静态路由将从路由表中移除。

从下一跃点移除 BFD

目的

演示当只有一个下一跃点启用了 BFD 时会发生什么情况。

行动
  1. 如果尚未停用,请停用设备 D 上的 BFD。

  2. 停用设备 B 上的一个下一跃点上的 BFD。

  3. 在设备 B 上重新运行命令 show bfd session 。

  4. 在设备 B 上重新运行命令 show route 192.168.47.0 extensive 。

意义

正如预期一样,192.168.2.2下一跃点的BFD会话已关闭。172.16.1.2 下一跃点保留在路由表中,并且路由保持活动状态,因为 BFD 不是此下一跃点保持有效的条件。