Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

BGP 会话的 BFD

 

了解 BGP 的 BFD

双向转发检测(BFD)协议是一种简单的 hello 机制,可检测网络中的故障。Hello 数据包以指定的定期间隔发送。当路由设备在指定时间间隔后停止接收应答时,将检测到邻居故障。BFD 与各种网络环境和拓扑配合使用。BFD 的故障检测计时器的时间限制比 BGP 的默认故障检测机制短,因此可提供更快的检测。

注意

为同一设备上的 BGP 配置 BFD 和平滑重新启动均为 counterproductive。当接口出现故障时,BFD 会立即检测到这种情况,停止信息流转发,而 BGP 会话将关闭,而平滑重新启动即使接口发生故障也会转发流量,这种行为可能导致网络问题。因此,我们建议不要在同一设备上同时配置 BFD 和平滑重启。

注意

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

BFD 故障检测计时器可调整为更快或更慢。BFD 故障检测计时器值越低,故障检测速度越快,反之亦然。例如,如果邻接发生故障(即,计时器检测到故障速度更慢),则计时器可适应更高的值。或者,相邻节点可以比配置的值协商更高的定时器值。当 BFD 会话封盖在 15 秒(15000 毫秒)内出现三次以上时,计时器可适应更高的价值。如果本地 BFD 实例是会话封盖的原因,则备份算法将接收(Rx)间隔增加两个。如果远程 BFD 实例是会话封盖的原因,则传输(Tx)间隔增加了两个。您可以使用clear bfd adaptation命令将 BFD 间隔计时器返回到其配置值。此clear bfd adaptation命令为无中断,表示命令不影响路由设备上的信息流。

注意

在所有 SRX 系列设备上,由于 CPU 密集命令和 SNMP 行走等原因导致 BFD 协议在处理大型 BGP 更新时产生了较高的 CPU 利用率,(平台支持取决于安装中的 Junos OS 版本。)

从 Junos OS Release 15.1 X 49-D100、SRX340、SRX345 和 SRX1500 设备开始支持专用 BFD。

从 Junos OS Release 15.1 X 49-D100、SRX300 和 SRX320 设备开始支持实时 BFD。

从 Junos OS Release 15.1 X 49-D110,SRX550M 设备支持专用 BFD。

在 Junos OS 版本 8.3 和更高版中,在内部 BGP (IBGP)和多跳外部 BGP (EBGP)会话以及单跳 EBGP 会话上均支持 BFD。 在 Junos OS 版本 9.1 到 Junos OS 版本11.1 中,BFD 仅支持静态路由中的 IPv6 接口。 在 Junos OS 11.2 版及更高版本中,BFD 通过 BGP 支持 IPv6 接口。

示例:在内部 BGP 对等方会话上配置 BFD

此示例说明如何使用双向转发检测(BFD)协议配置内部 BGP (IBGP)对等方会话,以检测网络中的故障。

要求

在配置此示例之前,不需要进行设备初始化以外的特殊配置。

概述

在 IBGP 会话上启用 BFD 的最小配置是将bfd-liveness-detection minimum-interval语句包含在 BFD 会话参与的所有邻居的 BGP 配置中。minimum-interval语句指定故障检测的最小传输和接收间隔。具体而言,此值表示本地路由设备传输 hello 数据包的最小时间间隔,以及路由设备预期接收来自其建立 BFD 会话的邻接方的答复的最小间隔。您可配置 1 到 255000 毫秒的值。

或者,您可以使用transmit-interval minimum-intervalminimum-receive-interval语句单独指定最小传输和接收间隔。有关这些和其他可选 BFD 配置语句的信息,请bfd-liveness-detection参阅。

注意

BFD 是消耗系统资源的密集协议。为基于路由引擎的会话指定 BFD 小于 100 毫秒的最小时间间隔,而对于分布式 BFD 会话,则不超过10毫秒,可能导致出现意外的 BFD 翻动。

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

  • 要在常规路由引擎切换事件期间阻止 BFD 翻动,请为基于路由引擎的会话 指定一个5000毫秒的最小间隔。此最小值是必需的,因为在常规路由引擎切换事件期间,进程(如 RPD、MIBD 和 SNMPD)利用 CPU 资源超过指定的阈值。因此,由于缺乏 CPU 资源,BFD 处理和计划将受到影响。

  • 要使 BFD 会话在双机箱群集控制链路方案中保持不动,当第一个控制链路出现故障时,请指定 6000 毫秒的最小间隔,以防止 LACP 从辅助节点上的翻动用于基于路由引擎期.

  • 对于具有大量 BFD 会话的大规模网络部署,请为分布式 BFD 会话指定基于路由引擎的会话 的最小时间间隔(300毫秒 )和100毫秒。

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

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

BFD 在默认路由实例(主路由器)、路由实例和逻辑系统上受支持。此示例显示了逻辑系统上的 BFD。

图 1显示了具有内部对等会话的典型网络。

图 1: 具有 IBGP 会话的典型网络
具有 IBGP 会话的典型网络

配置

CLI 快速配置

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

设备 A

设备 B

设备 C

配置设备 A

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅中的CLI 用户指南在配置模式中使用 CLI 编辑器

要配置设备 A:

  1. 将 CLI 设置为逻辑系统 A。
  2. 配置接口。
  3. 配置 BGP。

    即使neighbor设备 A 未直接连接到设备 c,也包括设备 B 和设备 c 的这些语句。

  4. 配置 BFD。

    您必须在连接对等方上配置相同的最小间隔。

  5. 必配置 BFD 跟踪。
  6. 配置 OSPF。
  7. 配置接受直接路由的策略。

    此方案的其他有用选项可能是接受通过 OSPF 或本地路由获知的路由。

  8. 配置路由器 ID 和自治系统(AS)编号。
  9. 如果您完成了设备配置,请从commit配置模式进入。

    重复这些步骤以配置设备 B 和设备 C。

结果

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

针对

确认配置是否正常工作。

验证 BFD 是否已启用

用途

验证 IBGP 对等方之间是否启用了 BFD。

操作

在操作模式下,输入show bgp neighbor命令。您可以使用| match bfd过滤器缩小输出范围。

user@host:A> show bgp neighbor | match bfd

含义

输出显示,逻辑系统 A 在启用 BFD 的情况下有两个邻居。如果未启用 BFD,将显示输出,并且不存在该选项。BFD: disabled, down<BfdEnabled> 如果启用 BFD 且会话关闭,将显示输出。BFD: enabled, down 输出还显示,由于配置了跟踪操作,因此将 BFD 相关事件写入日志文件。

验证 BFD 会话是否开启

用途

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

操作

在操作模式下,输入显示 bfd 会话 extensive命令。

user@host:A> show bfd session extensive

含义

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

查看详细的 BFD 事件

用途

查看 BFD 跟踪文件的内容,以便在必要时帮助进行故障排除。

操作

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

user@host:A> file show /var/log/A/bgp-bfd

含义

在建立路由之前, No route to host消息将显示在输出中。建立路由后,最后两行显示两个 BFD 会话都出现。

在停用和重新激活环回接口之后查看详细的 BFD 事件

用途

检查以了解关闭路由器或交换机后又将其恢复后会发生的情况。要模拟路由器或交换机,请停用逻辑系统 B 上的回传接口。

操作

  1. 在配置模式下,输入deactivate logical-systems B interfaces lo0 unit 2 family inet命令。

    user@host:A# deactivate logical-systems B interfaces lo0 unit 2 family inet
    user@host:A# commit
  2. 在操作模式下,输入file show /var/log/A/bgp-bfd命令。

    user@host:A> file show /var/log/A/bgp-bfd
  3. 在配置模式下,输入activate logical-systems B interfaces lo0 unit 2 family inet命令。

    user@host:A# activate logical-systems B interfaces lo0 unit 2 family inet
    user@host:A# commit
  4. 在操作模式下,输入file show /var/log/A/bgp-bfd命令。

    user@host:A> file show /var/log/A/bgp-bfd

了解 BGP 的 BFD 身份验证

双向转发检测协议(BFD)支持快速检测相邻系统之间的通信故障。默认情况下,BFD 会话的身份验证已禁用。但是,当您通过网络层协议运行 BFD 时,服务攻击的风险可能很大。如果您在多个跃点或不安全的隧道上运行 BFD,强烈建议使用身份验证。从 Junos OS 版本9.6 开始,Junos OS 为通过 BGP 运行的 BFD 会话提供身份验证支持。MPLS OAM 会话上不支持 BFD 身份验证。BFD 身份验证仅在加拿大和美国版本的 Junos OS 图像中受支持,不在出口版中提供。

通过指定身份验证算法和 keychain,然后将该配置信息与使用 keychain 名称的安全身份验证 keychain 相关联,可以验证 BFD 会话的身份。

以下部分介绍了可配置的支持的身份验证算法、安全 keychains 和身份验证级别:

BFD 身份验证算法

Junos OS 支持以下用于 BFD 认证的算法:

  • 简单密码—纯文本密码。使用一至 16 个字节的纯文本来验证 BFD 会话的身份。可配置一个或多个密码。这种方法最不安全,仅当 BFD 会话不会受到数据包拦截时才应使用。

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

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

  • keyed-sha-1—为传输和接收间隔超过 100 ms 的会话键控安全哈希算法 I。为了验证 BFD 会话的身份,键控 SHA 使用一个或多个密钥(由算法生成)和定期更新的序列号。密钥未在数据包内携带。借助这种方法,如果一个键匹配且序列号大于最后接收的序列号,数据包将在接收到的会话结束时接受。

  • meticulous-keyed-sha-1—Meticulous 键控安全哈希算法 I。此方法的工作方式与键控 SHA 相同,但序列号随每个数据包更新。虽然比键控 SHA 和简单密码更安全,但此方法可能需要额外时间来验证会话。

注意

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

注意

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

安全认证 Keychains

安全身份验证 keychain 定义身份验证密钥更新所用的身份验证属性。当安全身份验证 keychain 配置为通过 keychain 名称与协议关联时,将发生身份验证密钥更新,而不会中断路由和信号协议。

认证 keychain 包含一个或多个 keychains。每个 keychain 都包含一个或多个键。每个密钥都包含机密数据和密钥生效的时间。必须在 BFD 会话的两端配置算法和 keychain,并且必须匹配。配置中的任何不匹配都会阻止创建 BFD 会话。

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

严格与松散身份验证

默认情况下,将启用严格身份验证,并在每个 BFD 会话的两端检查身份验证。或者,要使从 nonauthenticated 会话到经过身份验证的会话的平滑迁移,您可以配置松散检查。如果配置松散检查,在会话的每一端都不会检查是否有数据包被接受。此功能仅适用于过渡期。

示例:为 BGP 配置 BFD 身份验证

从 Junos OS 版本9.6 开始,您可以为在 BGP 上运行的 BFD 会话配置身份验证。在 BFD 会话上配置身份验证仅需三个步骤:

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

  2. 将身份验证 keychain 与 BGP 协议相关联。

  3. 配置相关安全身份验证 keychain。

以下部分提供有关如何在 BGP 上配置和查看 BFD 身份验证的说明:

配置 BFD 身份验证参数

BFD 身份验证可针对整个 BGP 协议或特定 BGP 组、邻接方或路由实例进行配置。

下面的示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅中的CLI 用户指南在配置模式中使用 CLI 编辑器

要配置 BFD 身份验证:

  1. 指定算法(keyed-md5keyed-sha-1meticulous-keyed-md5meticulous-keyed-sha-1简单密码)。
    注意

    不间断主动路由不受 meticulous 键控-md5 和 meticulous 键控-1 身份验证算法支持。使用这些算法的 BFD 会话可能会在切换后中断。

  2. 指定用于将 BGP 上的 BFD 会话与唯一安全身份验证 keychain 属性关联的 keychain。

    您指定的 keychain 名称必须与在[edit security authentication key-chains]层次结构级别配置的 keychain 名称匹配。

    注意

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

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

    • 之间至少有一个键,一个唯一整数 063. 创建多个密钥允许多个客户端使用 BFD 会话。

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

    • 身份验证密钥生效的时间,格式为 yyyy 毫米 dd hh: mm: ss.

  4. 必如果从 nonauthenticated 会话过渡到经过身份验证的会话,请指定松散身份验证检查。
  5. 必使用show bfd session detailshow bfd session extensive命令查看您的配置。
  6. 重复这些步骤以配置 BFD 会话的另一端。
注意

BFD 身份验证仅在加拿大和美国版本的 Junos OS 图像中受支持,不在出口版中提供。

查看 BFD 会话的认证信息

您可以使用show bfd session detailshow bfd session extensive命令查看现有 BFD 身份验证配置。

以下示例显示bgp-gr1 BGP 组配置的 BFD 身份验证。它指定键控 SHA-1 身份验证算法和 keychain 名称bfd-bgp。身份验证 keychain 配置有两个密钥。徽标键 1包含机密数据“$ABC123$ABC123”到 9:46:02 AM PST 时,从6月1日开始时间2009。徽标键 2包含机密数据“$ABC123$ABC123”在 3:29:20 PM PST,开始时间为6月1日,2009。

如果您将这些更新提交至您的配置,您将看到类似以下内容的输出。在show bfd session detail命令的输出中, 认证将显示为表示已配置 BFD 身份验证。有关配置的详细信息,请使用show bfd session extensive命令。此命令的输出为会话中的每个客户端提供 keychain 名称、身份验证算法和模式,以及整体 BFD 身份验证配置状态、keychain 名称和身份验证算法和模式。

显示 bfd 会话详细信息

全面展示 bfd 会话

Release History Table
版本
说明
从 Junos OS Release 15.1 X 49-D100、SRX340、SRX345 和 SRX1500 设备开始支持专用 BFD。
从 Junos OS Release 15.1 X 49-D100、SRX300 和 SRX320 设备开始支持实时 BFD。
在 Junos OS 11.2 版及更高版本中,BFD 通过 BGP 支持 IPv6 接口。
在 Junos OS 版本 9.1 到 Junos OS 版本11.1 中,BFD 仅支持静态路由中的 IPv6 接口。
在 Junos OS 版本 8.3 和更高版中,在内部 BGP (IBGP)和多跳外部 BGP (EBGP)会话以及单跳 EBGP 会话上均支持 BFD。