跳到主要内容

3. DHCPv4-over-DHCPv6 Relay Agent (4o6RA)

本文档假定这样一种网络: 仅支持 IPv4 的主机连接到一个支持 IPv6 且提供有限 IPv4 服务的网络.

为适应该网络部署方式, 本文档扩展 DHCPv6 Relay Agent, 使其支持 DHCPv4 over DHCPv6, 如图 1 所示.

               .-----------.             .-----------.
| | | |
+--------+-+ L2 +-+-----------+-+ IPv6 +-+--------+
| DHCPv4 | Network | DHCPv6 | Network | DHCP 4o6 |
| Client +---------+ Relay Agent +---------+ Server |
| | | with 4o6RA | | |
+--------+-+ +-+-----------+-+ +-+--------+
| | | |
'-----------' '-----------'

图 1: 使用传统 DHCP Client 的架构示例

本文档规定由 Relay Agent 执行 [RFC7341] 中定义的封装和解封装, 而不要求 DHCPv4 client 做任何更改. 在这种情况下, Relay Agent 负责提供完整的 DHCP 4o6 支持, 传统 DHCPv4 client 并不知道自己正在通过 DHCP 4o6 服务获得服务. 由于 4o6RA 充当 DHCP 4o6 client, 因此 [RFC7341] 第 5 节中适用于 DHCP client 的所有前提条件和配置也适用于 4o6RA.

由于 4o6RA 在 [RFC7341] 语境下承担 client 角色, 它负责确定一个合适的接口, 并在该接口上充当 DHCPv6 client. 它还负责定位合适的 DHCPv6 server 或 Relay Agent, 并获得必要的 IPv6 配置. 因此, 按照 [RFC7341] 的规定, 充当 DHCP 4o6 client 的 4o6RA 必须先按照 [RFC9915] 中描述的方式发送 Option Request option, 向 server 请求 DHCP 4o6 Server Address option, 然后才能使用 DHCP 4o6 transport.

为保持与现有 DHCPv6 relay 和 server 的互操作性, 消息格式与 [RFC9915] 相比保持不变. 4o6RA 实现的消息类型与 DHCPv6 Relay Agent 相同, 见 [RFC7341] 第 6 节.

不过, 在本规范中, DHCPV4-QUERY message 由 4o6RA 创建, 而不是由 client 创建. 4o6RA 会封装从传统 DHCPv4 client 接收到的 DHCP request message.

当 DHCP 4o6 Relay Agent 收到 DHCPV4-RESPONSE message 时, 它会在该消息中查找 DHCPv4 message option. 如果未找到此 option, 或者 DHCPV4-RESPONSE message 格式不正确, 则该消息 MUST 被丢弃. 如果 DHCPv4 message option 存在且正确, 4o6RA MUST 提取 DHCPv4 message, 并在封装的 DHCPv4-RESPONSE 正确且确实可转发的前提下, 将封装的 DHCPv4-RESPONSE 转发给发起请求的 DHCPv4 client.

收到 DHCPV4-QUERY 或 DHCPV4-RESPONSE message 的 Layer 2 (L2) Relay Agent MUST 按照 [RFC6221] 第 6 节的规定处理这些消息.

在任何给定环境中, DHCPV4-QUERY request 被路由到的 DHCPv6 server 都应当符合 [RFC7341] 对 DHCP 4o6 的规定. 本规范不对 DHCPv6 server 施加额外要求.

3.1. Intermediate Relays

中间 relay 应当按照 [RFC7341] 第 10 节运行.

3.2. 4o6RA and Topology Discovery

在某些网络中, 主机配置可能依赖于拓扑. 但是, 当新主机接入网络时, 它可能不了解该拓扑, 因而也不知道自己应如何配置.

DHCPv4 [RFC2131] 和 DHCPv6 [RFC9915] 规范描述了通常如何根据 DHCP relay 提供的网络拓扑信息向 client 分配地址.

地址/前缀分配决策是 DHCP 中地址和前缀分配的组成部分, [RFC7969] 对此有详细说明. 本规范旨在保证 4o6RA 用于拓扑发现时不会破坏任何传统能力.

[RFC7969] 描述的拓扑发现机制在 IPv4 和 IPv6 中存在如下差异:

  • IPv4: 在 IPv4 上使用 DHCP 时, 只有第一个 Relay Agent SHOULD 设置 giaddr field ([RFC7969] 第 3.1 节). 因此, 在包含多个 Relay Agent 的网络中, DHCPv4 只传送部分拓扑.

  • IPv6: 在使用 DHCPv6 时, 所有 Relay Agent SHOULD 向 DHCPv6 server 发送 link-address field 和 Interface-ID option, 用于提供 DHCPv6 client 与 DHCPv6 server 之间完整路径的信息.

在 Layer 2 网络中, 可以使用 Lightweight DHCPv6 Relay Agent (LDRA) [RFC6221].

如果提供了拓扑信息, DHCPv6 server 上可以看到的形式是 link-address field 和 Interface-ID option 组成的序列.

随后, 可以从 DHCPv6 server 获得给定 IP 地址对应的拓扑信息, 并将其用于配置或其他目的.

[RFC7341] 使 client 即使在 DHCPv4 语境中也可以使用 DHCPv6 进行拓扑发现, 因为 DHCPv6 Relay Agent 知道封装后的 DHCP request 是在哪个接口上收到的. 但是, 如图 2 所示, 在 IPv6 网络边缘引入 DHCP 4o6 会使 DHCPv6 RA 看不到 Layer 2 网络. 因此, 将 DHCP 4o6 移到中间节点执行, 而不是在 client 上执行, 会破坏拓扑传播, 因为仅包含 4o6RA 的方案不会在封装消息中提供任何接口信息.

        .-----------------.     .-------------------------.
| L2 Network | | IPv6 Network |
+--------+-+ +---------+ +-+---+---+ +--------+ +-+--------+
| DHCPv4 | | L2 | | 4o6 | | DHCPv6 | | DHCP 4o6 |
| Client +--+ Switch +--+ Relay +----+ Relay +-------+ Server |
| | | | | Agent | | Agent | | |
+--------+-+ +---------+ +-+---+---+ +--------+ +-+--------+
| | | |
'-----------------' '-------------------------'

图 2: 拓扑信息中断

为提供完整的拓扑信息, RECOMMENDED 的做法是将任何 4o6RA 实现与 LDRA 实现 [RFC6221] 组合为背靠背结构, 并且 LDRA 实现包含一种机制来获取接口信息. 该接口信息可用于按照 [RFC6221] 第 5.3.2 节的规定, 为传出的 DHCPV4-QUERY message 提供 Interface-ID option.

用于交换接口信息的内部机制, 接口信息的格式, 以及接口信息是否包含 4o6RA 参与其中的指示, 均不在本文档范围内.

最终架构如图 3 所示. 其中, Relay Agent 实现 4o6RA 和 LDRA, 并具有一个内部接口, 用于将拓扑信息从 4o6RA 传递到 LDRA.

            .-----------------.     .------------------------.
| L2 Network or | | IPv6 Network |
| IPv6-Only Link | | |
+--------+-+ +---------+ +-+---+--+---------+ +------+---+
| DHCPv4 | | L2 | | 4o6 | LDRA | | DHCP 4o6 |
| Client +--+ Switch +--+ Relay + RFC 6221+------+ Server |
| | | | | Agent | | | |
+--------+-+ +---------+ +-+---+--+---------+ +------+---+
| | | |
'-----------------' '------------------------'

图 3: 使用 LDRA 保留拓扑信息

在简单情况下, 如果同一节点同时承载 4o6RA 和 DHCP 4o6 server, 则可能只使用 4o6RA 就足够, 如图 4 所示. 其中, CPE 表示 "Customer Premises Equipment".

                        .-----------.
| L2 Network |
+--------+-+ +-+------+----------+
| DHCP | | 4o6 | DHCP 4o6 |
| Client +---------+ Relay + Server |
| on CPE | | Agent | |
+--------+-+ +-+------+----------+
| |
'-----------'

图 4: DHCP Server 中由 4o6 Relay Agent 保留的拓扑信息