DHCP 活体检测
DHCP 客户端 IP 会话的 DHCP 活体检测利用主动活体检测协议对相关客户端进行活体检测检查。当配置了存活检测协议时,如果给定的客户端无法响应配置数量的连续存活检测请求,则将删除客户端绑定并释放其资源。有关更多信息,请阅读本主题。
DHCP 活体检测概述
与 PPP 不同,DHCP 不会将本机激活机制定义为 DHCPv4 或 DHCPv6 协议的一部分。如果没有激活机制,DHCP 本地服务器、DHCP 中继和 DHCP 中继代理将无法快速检测其中任何一个是否与订阅者或 DHCP 客户端失去了连接。相反,它们必须依赖于标准 DHCP 订阅者会话或 DHCP 客户端会话终止消息。
DHCP 客户端在退出网络之前通常不会发送 DHCP 释放消息。能否发现它们缺失取决于现有的 DHCP 租用时间和释放请求机制。在为 DHCP 订阅者访问或 DHCP 管理的网络中的客户端提供会话运行状况检查时,这些机制通常不够用。由于 DHCP 租用时间通常过长,无法为会话运行状况故障提供足够的响应时间,并且配置较短的 DHCP 租用时间可能会对控制平面处理造成不必要的负担,因此实施 DHCP 活动检测机制可以更好地监控绑定的 DHCP 客户端。当配置了存活检测协议时,如果给定的订阅者(或客户端)无法响应配置数量的连续存活检测请求,则将删除订阅者(或客户端)绑定并释放其资源。
DHCP 订阅者 IP 或 DHCP 客户端 IP 会话的 DHCP 活体检测利用主动活体检测协议对相关客户端进行活体检测检查。客户端必须在指定时间内响应活体检测请求。如果在给定的连续尝试次数内未在该时间内收到响应,则活体检测检查将失败,并实施失败作。
活体检测协议的示例包括 DHCPv4 和 DHCPv6 订阅者的双向转发检测 (BFD)、DHCPv4 订阅者的 IPv4 地址解析协议 (ARP),以及使用 DHCPv6 订阅者使用邻居发现 (ND) 数据包的 IPv6 邻居不可达性检测 (NUD)。
从 Junos OS 17.4R1 版开始,除了 BFD 活体检测外,MX 系列路由器还支持将 ARP 数据包用于 DHCPv4,ND 数据包用于第 2 层活体检测。在早期版本中,所有平台仅支持 BFD。
这两种活体检测方法是相互排斥的。
配置 BFD 活体检测时,请记住以下几点:
您可以为 DHCP 本地服务器和 DHCP 中继配置活动检测。
您可以全局配置 DHCPv4 和 DHCPv6 存活检测,也可以按 DHCPv4 或 DHCPv6 组配置。
不支持 BFD 的 DHCPv4 或 DHCPv6 订阅者访问客户端不受活体检测配置的影响。即使路由器(或交换机)上启用了 BFD 活体检测,这些客户端也可以继续访问网络(经过验证)。
配置后,当支持 BFD 的客户端进入绑定状态时,DHCPv4 或 DHCPv6 会启动这些客户端的活体检测检查。
为 BFD 客户端启动特定于协议的消息后,这些消息会定期发送到客户端的订阅者(或客户端)IP 地址,并且预计在配置的时间内对这些活动检测请求做出响应。
如果在配置的连续尝试次数内,在配置的时间内未收到支持 BFD 的客户端的存活检测响应,则认为存活检测检查失败。将应用用于清除客户端绑定的配置失败作。
第 2 层活动检测支持的唯一故障作是
clear-binding
。
在 MX 系列上配置 DHCP ARP 和 ND 第 2 层活体检测时,请记住以下几点:
您可以为 DHCP 本地服务器和 DHCP 中继配置活动检测。
您可以按 DHCPv4 或 DHCPv6 组以及双堆栈组全局配置 DHCPv4 和 DHCPv6 ARP 和 ND 活体检测。
ARP/ND 活体检测仅适用于满足以下条件的 DHCP 客户端:
通过动态 VLAN 直接连接。
具有永久性第 2 层条目。
DHCPv6 客户端必须具有唯一的源 MAC 地址和链路本地地址。对于与特定客户端会话关联的所有 IPv6 地址,仅使用单个活体检测条目。
DHCP 活体检测的优势
使用 DHCP 活体检测,一旦活体检测检查失败,系统就会对其处理 IP 会话。这种更快的响应时间有助于:
为订阅者(或 DHCP 客户端)会话提供更准确的基于时间的核算。
更好地保留路由器(交换机)资源。
有助于减少某些安全攻击的漏洞窗口。
使用 BFD 配置 DHCP 中继或 DHCP 中继代理客户端连接检测
您可以为 DHCP 订阅者 IP 会话或 DHCP 客户端 IP 会话配置使用双向转发检测 (BFD) 进行活动检测,以检查 DHCP 中继客户端的连接。客户端必须在指定时间内响应活体检测请求。如果在给定的连续尝试次数内未在该时间内收到响应,则活体检测检查将失败,并实施失败作。
要为 DHCP 中继配置存活检测:
示例:使用 BFD 为 DHCP 中继代理客户端配置全局活体检测
此示例说明如何使用双向转发检测 (BFD) 作为活动检测方法,为 DHCP 中继代理订阅者配置活动检测。
要求
概述
在此示例中,通过完成以下作为 DHCP 中继代理订阅者配置活动检测:
对 DHCP 中继订阅者启用全局活体检测。
将 BFD 指定为所有动态创建的 DHCP 中继订户的存活检测方法。
配置特定于 BFD 的语句以定义协议的行为方式。
配置路由器在发生活体检测失败时执行的作。
此示例说明如何为 DHCPv4 网络配置活体检测。DHCPv6 配置还支持活体检测。要配置 DHCPv6 活体检测,请在 [edit forwarding-options dhcp-relay dhcpv6]
或 [edit forwarding-options dhcp-relay dhcpv6 group group-name]
层次结构级别包含该liveness-detection
语句和任何后续配置语句。
配置
程序
分步过程
要为 DHCP 中继配置存活检测:
指定要配置活体检测。
[edit forwarding-options dhcp-relay] user@host# edit liveness-detection
指定要配置活体检测方法。
[edit forwarding-options dhcp-relay liveness-detection] user@host# edit method
将 BFD 指定为希望 DHCP 使用的存活检测方法。
[edit forwarding-options dhcp-relay liveness-detection method] user@host# edit bfd
配置生成陷阱的检测时间阈值(以毫秒为单位)。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set detection-time threshold 50000
配置 BFD 保留会话更新通知的时间(以毫秒为单位)。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set holddown-interval 50
配置 BFD 最小传输和接收间隔(以毫秒为单位)。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set minimum-interval 45000
配置最小接收间隔(以毫秒为单位)。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set minimum-receive-interval 60000
为检测时间配置乘数值。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set multiplier 100
禁用 BFD 间隔计时器更改或适应网络情况的功能。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set no-adaptation
配置 BFD 会话模式。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set session-mode automatic
配置 BFD 传输间隔的阈值和最小间隔。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set transmit-interval threshold 60000 minimum-interval 45000
配置要检测的 BFD 协议版本。
[edit forwarding-options dhcp-relay liveness-detection method bfd] user@host# set version automatic
配置路由器在发生活体检测失败时执行的作。在此示例中,故障作是仅当发生存活检测故障且检测到本地接口已打开时,才清除客户端会话。
[edit forwarding-options dhcp-relay liveness-detection] user@host# edit failure-action action
结果
在配置模式下,输入 show forwarding-options
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明进行更正。以下输出还显示了法兰克福组中一系列已配置的接口。
[edit] user@host# show forwarding-options dhcp-relay { liveness-detection { failure-action clear-binding-if-interface-up; method { bfd { version automatic; minimum-interval 45000; minimum-receive-interval 60000; multiplier 100; no-adaptation; transmit-interval { minimum-interval 45000; threshold 60000; } detection-time { threshold 50000; } session-mode automatic; holddown-interval 50; } } } }
如果完成设备配置,请从配置模式输入 commit
。
配置使用 BFD 检测 DHCP 本地服务器客户端连接
您可以为 DHCP 订阅者 IP 会话或 DHCP 客户端 IP 会话配置使用双向转发检测 (BFD) 进行活动检测,以检查 DHCP 本地服务器客户端的连接。客户端必须在指定时间内响应活体检测请求。如果在给定的连续尝试次数内未在该时间内收到响应,则活体检测检查将失败,并实施失败作。
您还可以为 DHCP 中继配置 DHCP 存活检测。
要为 DHCP 本地服务器配置活体检测:
示例:使用 BFD 为 DHCP 本地服务器客户端配置组活动检测
此示例说明如何使用双向转发检测 (BFD) 作为存活检测方法,为 DHCP 本地服务器订阅者或 DHCP 客户端配置组存活检测。
要求
此示例使用以下硬件和软件组件:
瞻博网络 MX 系列路由器
瞻博网络 EX 系列交换机
Junos OS 12.1 或更高版本
开始之前:
配置 DHCP 本地服务器。请参阅 了解传统 DHCP 与扩展 DHCP 之间的区别。
概述
在此示例中,通过完成以下作为 DHCP 本地服务器订阅者(客户端)配置组活动性检测:
为 DHCP 本地服务器订阅者(或 DHCP 客户端)组启用活动检测。
将 BFD 指定为所有动态创建的 DHCP 本地服务器订阅者(客户端)的存活检测方法。
配置特定于 BFD 的语句以定义协议的行为方式。
配置路由器(交换机)在发生活体检测故障时执行的作。
此示例说明如何为 DHCPv4 网络配置活体检测。DHCPv6 配置还支持活体检测。要配置 DHCPv6 活体检测,请在 [edit system services dhcp-local-server dhcpv6]
或 [edit system services dhcp-local-server dhcpv6 group group-name]
层次结构级别包含该liveness-detection
语句和任何后续配置语句。
配置
程序
分步过程
要为 DHCP 本地服务器配置组存活检测:
指定要配置活体检测。
[edit system services dhcp-local-server ] user@host# edit liveness-detection
指定要为特定 DHCP 本地服务器组配置活动检测。
[edit system services dhcp-local-server liveness-detection] user@host# edit group local_group_1
指定要配置活体检测方法。
[edit system services dhcp-local-server group local_group_1 liveness-detection] user@host# edit method
将 BFD 指定为希望 DHCP 使用的存活检测方法。
[edit system services dhcp-local-server group local_group_1 liveness-detection method] user@host# edit bfd
配置生成陷阱的检测时间阈值(以毫秒为单位)。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set detection-time threshold 30000
配置 BFD 保留会话更新通知的时间(以毫秒为单位)。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set holddown-interval 50
配置 BFD 最小传输和接收间隔(以毫秒为单位)。
注意:如果
minimum-interval
为 BFDtransmit-interval
语句和minimum-receive-interval
.[edit system services dhcp-local-servergroup local_group_1 liveness-detection method bfd] user@host# set minimum-interval 45000
配置最小接收间隔(以毫秒为单位)。
注意:如果配置 BFD 最小传输和接收间隔,则无需配置 BFD 最小接收间隔。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set minimum-receive-interval 60000
为检测时间配置乘数值。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set multiplier 100
禁用 BFD 间隔计时器更改或适应网络情况的功能。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set no-adaptation
配置 BFD 会话模式。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set session-mode automatic
配置 BFD 传输间隔的阈值和最小间隔。
注意:如果已为 BFD 配置了最小传输和接收间隔,则无需配置传输间隔值。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set transmit-interval threshold 60000 minimum-interval 45000
配置要检测的 BFD 协议版本。
[edit system services dhcp-local-server group local_group_1 liveness-detection method bfd] user@host# set version automatic
配置路由器(交换机)在发生活体检测故障时执行的作。在此示例中,故障作是仅当发生存活检测故障且检测到本地接口已打开时,才清除客户端会话。
[edit system services dhcp-local-server group local_group_1 liveness-detection] user@host# edit failure-action action
结果
在配置模式下,输入 show system
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明进行更正。
[edit] user@host# show system services { dhcp-local-server { group local_group_1 { liveness-detection { failure-action clear-binding-if-interface-up; method { bfd { version automatic; minimum-interval 45000; minimum-receive-interval 60000; multiplier 100; no-adaptation; transmit-interval { minimum-interval 45000; threshold 60000; } detection-time { threshold 30000; } session-mode automatic; holddown-interval 50; } } } } } }
如果完成设备配置,请从配置模式输入 commit
。
使用 ARP 和邻居发现数据包进行 DHCP 活度检测
- 使用 ARP 和邻居发现数据包进行 DHCP 存活检测的工作原理
- 使用 ARP 和 ND 数据包配置 DHCP 本地服务器客户端连接的 BNG 检测
- 使用 ARP 和 ND 数据包配置 DHCP 中继客户端连接的 BNG 检测
- 配置 DHCP 主机检测客户端连接与 ARP 和 ND 数据包
使用 ARP 和邻居发现数据包进行 DHCP 存活检测的工作原理
从 Junos OS 17.4R1 版开始,您可以对 DHCPv4 客户端使用 IPv4 地址解析协议 (ARP) 配置活动检测,对 DHCPv6 客户端使用 IPv6 邻居不可达性检测。此第 2 层活动检测可为 DHCP 客户端主机和充当宽带网络网关 (BNG) 的路由器提供单独的机制,以确定 DHCP 客户端会话的有效性和状态。这些机制称为 发送 功能和 接收 功能。您可以为 DHCP 本地服务器和 DHCP 中继客户端配置第 2 层活动检测。
发送功能
BNG 使用发送功能对其直接连接的 DHCPv4 和 DHCPv6 客户端执行主机连接检查,以确定 DHCP 客户端会话的有效性和状态,并清理非活动会话。 图 1 说明了发送功能。

BNG 按可配置的时间间隔向每个 DHCP 客户端发送请求数据包,然后等待响应。当 BNG 未收到及时响应时,它会重试请求。它向 DHCPv4 客户端发送 ARP 请求,向 DHCPv6 客户端发送邻接方发现 (ND) 请求。
如果 BNG 在间隔超时之前收到来自客户端的响应,它将等待计时器过期,然后向该客户端发送另一个请求。
如果 BNG 在间隔超时之前未收到响应,它将计时器设置为 30 秒并发送另一个请求。这是第一次重试尝试;计时器不可配置。
如果 BNG 在计时器过期之前收到来自客户端的响应,则 BNG 将等待计时器耗尽,将其重置为可配置的原始值,发送另一个请求,然后启动计时器。
如果 30 秒计时器在收到响应之前过期,则 BNG 会将计时器设置为 10 秒并发送另一个请求。此计时器值不可配置。
如果 BNG 在计时器过期之前收到来自客户端的响应,则 BNG 将等待计时器耗尽,将其重置为可配置的原始值,发送另一个请求,然后启动计时器。
如果 BNG 在 10 秒间隔内未收到响应,它将发送另一个请求并再次启动 10 秒计时器。BNG 继续以 10 秒的间隔发送请求,直到它在间隔超时之前收到来自客户端的响应,或者耗尽重试次数。
第一次重试使用 30 秒的间隔。后续重试每隔 10 秒进行一次。因此,可能的 10 秒重试次数为总数减去 1。例如,如果配置 5 次重试,则会进行一次 30 秒的重试和最多四次 10 秒的重试。
如果 BNG 在重试次数耗尽之前的时间间隔内从未收到客户端的响应,则存活检测检查将失败,并且将实施清除绑定失败作。客户端会话将被清除。
接收功能
接收功能使 DHCP 客户端主机能够从 BNG 的角度确定 DHCPv4 或 DHCPv6 客户端会话的状态。当 BNG 收到 ARP 或 ND 数据包时,它会对其直接连接的 DHCPv4 和 DHCPv6 客户端进行主机连接检查。 图 2 展示了接收功能。

当 BNG 收到这些数据包之一时,它会执行以下作:
检查是否为相关地址族(inet 或 inet6)全局启用了用于订阅者管理的第 2 层活动检测。
如果未启用第 2 层活体检测,则 BNG 会照常响应接收到的数据包,而不检查客户端会话的状态。
如果为家族启用了活动检测,则 BNG 将检查客户机会话是否仍处于绑定状态。
如果客户端会话已绑定,则 BNG 会使用相应的 ARP 或 ND 数据包响应客户端。
如果会话未绑定,BNG 将丢弃收到的数据包。它不会向主机发送 ARP 或 ND 响应数据包,因此主机能够确定 BNG 认为会话已关闭。
接收功能的有用性取决于 DHCP 客户端主机是否能够根据未绑定客户端会话的 BNG 中没有响应数据包的情况,从陈旧的客户端回收资源。如果此功能需要更改客户端实现,则可能需要使用发送功能。
使用 ARP 和 ND 数据包配置 DHCP 本地服务器客户端连接的 BNG 检测
此过程显示如何使用 IPv4 地址解析协议 (ARP) 对 DHCPv4 客户端和 IPv6 邻接方不可达性检测对 DHCPv6 客户端进行配置第 2 层活动检测的发送功能,以检查 DHCP 本地服务器客户端的连接。
发送功能使 BNG 能够根据 DHCP 客户端对其发送给客户端的 ARP 或 ND 请求数据包的响应不足来确定客户端会话是否关闭。
还可以使用双向转发检测 (BFD) 配置 DHCP 存活检测。BFD 活体检测和 ARP/ND 活体检测是互斥的。
要为 DHCPv4 本地服务器活动检测配置发送功能:
要为 DHCPv6 本地服务器活度检测配置发送功能,请执行以下作:
指定要配置活体检测方法。
对于 DHCPv6 全局配置:
[edit system services dhcp-local-server dhcpv6] user@host# edit liveness-detection method
对于 DHCPv6 组配置:
[edit system services dhcp-local-server dhcpv6] user@host# edit group group-name liveness-detection method
指定第 2 层活体检测方法。
(选答)配置重试次数和间隔计时器。
对于 DHCPv6 全局配置:
[edit system services dhcp-local-server dhcpv6 liveness-detection method] user@host# edit layer2-liveness-detection user@host# set max-consecutive-retries number user@host# set transmit-interval seconds
对于 DHCPv6 组配置:
[edit system services dhcp-local-server dhcpv6 group group-name liveness-detection method] user@host# edit layer2-liveness-detection user@host# set max-consecutive-retries number user@host# set transmit-interval seconds
使用 ARP 和 ND 数据包配置 DHCP 中继客户端连接的 BNG 检测
此过程显示如何使用 DHCPv4 客户端的 IPv4 地址解析协议 (ARP) 和DHCPv6 客户端的 IPv6 邻接方不可达性检测来配置第 2 层活动检测的发送功能,以检查 DHCP 中继客户端的连接。
发送功能使 BNG 能够根据 DHCP 客户端对其发送给客户端的 ARP 或 ND 请求数据包的响应不足来确定客户端会话是否关闭。
还可以使用双向转发检测 (BFD) 配置 DHCP 存活检测。BFD 活体检测和 ARP/ND 活体检测是互斥的。
要为 DHCPv4 中继存活检测配置发送功能:
要为 DHCPv6 中继活体检测配置发送功能:
指定要配置活体检测方法。
对于 DHCPv6 全局配置:
[edit forwarding-options dhcp-relay dhcpv6] user@host# edit liveness-detection method
对于 DHCPv6 组配置:
[edit forwarding-options dhcp-relay dhcpv6] user@host# edit group group-name liveness-detection method
指定第 2 层活体检测方法。
(选答)配置重试次数和间隔计时器。
对于 DHCPv6 全局配置:
[edit forwarding-options dhcp-relay dhcpv6 liveness-detection method] user@host# edit layer2-liveness-detection user@host# set max-consecutive-retries number user@host# set transmit-interval seconds
对于 DHCPv6 组配置:
[edit forwarding-options dhcp-relay dhcpv6 group group-name liveness-detection method] user@host# edit layer2-liveness-detection user@host# set max-consecutive-retries number user@host# set transmit-interval seconds
配置 DHCP 主机检测客户端连接与 ARP 和 ND 数据包
此过程演示如何使用 IPv4 地址解析协议 (ARP) 对 DHCPv4 客户端和 IPv6 邻接方不可达性检测对 DHCPv6 客户端进行配置第 2 层活动检测的接收功能,以检查 DHCP 本地服务器客户端的连接。
接收功能使 DHCP 客户端主机能够根据 BNG 对其发送到 BNG 的 ARP 或 ND 数据包缺乏响应来确定客户端会话是否已关闭。您可以为每个地址族的 DHCP 配置全局接收功能,作为对全局订阅者管理配置的覆盖。
对于 DHCPv4:
[edit system services subscriber-management overrides] user@host# set interfaces family inet layer2-liveness-detection
对于 DHCPv6:
[edit system services subscriber-management overrides] user@host# set interfaces family inet6 layer2-liveness-detection
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能浏览器 查看您使用的平台是否支持某项功能。