1. 引言 (Introduction)
多协议 BGP (Multiprotocol BGP, MP-BGP) [RFC4760] 规定, Next Hop Address 字段中携带的地址可属于哪一组网络层协议, 由地址族标识符 (Address Family Identifier, AFI) 和后续地址族标识符 (Subsequent Address Family Identifier, SAFI) 决定. 现有若干 AFI/SAFI 允许下一跳地址属于与网络层可达性信息 (Network Layer Reachability Information, NLRI) 不同的地址族. 例如, 按 [RFC6074] 用于执行第 2 层虚拟专用网络 (Layer 2 Virtual Private Network, L2VPN) 自动发现的 AFI/SAFI <25/65>, 允许通告包含虚拟专用 LAN 服务 (Virtual Private LAN Service, VPLS) 实例标识符或标识给定提供商边缘 (Provider Edge, PE) 上某个接入电路池的 NLRI, 而 Next Hop Address 字段包含 PE 的环回地址. 类似地, 用于通告路由目标 (Route Target, RT) 成员信息的 AFI/SAFI <1/132> ([RFC4684] 中定义), 允许通告包含此类 RT 成员信息的 NLRI, 而 Next Hop Address 字段包含通告路由器的地址.
此外, 这些现有 AFI/SAFI 中有若干允许下一跳属于 IPv4 协议或 IPv6 协议, 并通过下一跳信息的编码来确定该地址实际属于哪个协议. 例如, [RFC4684] 允许下一跳地址为 IPv4 或 IPv6 地址, 并规定当下一跳地址长度为 4 个八位组时, Next Hop Address 字段应解释为 IPv4 地址; 当下一跳地址长度为 16 个八位组时, 应解释为 IPv6 地址.
在 [RFC4925] 和 [RFC5565] 描述的场景中, 运营商 (或作为其内部资源承载方的大型企业网络) 可能需要通过不同地址族类型的传输核心, 在某一地址族类型网络的"孤岛"之间建立连通性. 这既包括跨 IPv4 核心的 IPv6 孤岛, 也包括跨 IPv6 核心的 IPv4 孤岛. 当使用多协议 BGP (MP-BGP) 通告相应可达性信息时, 这就转化为一项要求: BGP 发言者需要通过不同地址族的下一跳来通告给定地址族的 NLRI, 即使用 IPv4 下一跳通告 IPv6 NLRI, 以及使用 IPv6 下一跳通告 IPv4 NLRI.
IPv6 地址族的 AFI/SAFI 定义假定下一跳地址属于 IPv6 地址族类型. 具体而言, 按 [RFC2545] 和 [RFC8277], 当 <AFI/SAFI> 为 <2/1>, <2/2> 或 <2/4> 时, 下一跳地址被假定为 IPv6 类型. 按 [RFC4659], 当 <AFI/SAFI> 为 <2/128> 时, 下一跳地址被假定为 VPN-IPv6 类型.
然而, 当需要使用 IPv4 下一跳通告 IPv6 NLRI 时, [RFC4798] 和 [RFC4659] 规定了如何在下一跳 IPv6 地址字段中编码 IPv4 地址. 当 <AFI/SAFI> 为 <2/1>, <2/2> 或 <2/4> 时, [RFC4798] 定义了如何为此目的使用 IPv6 寻址架构 ([RFC4291]) 中指定的 IPv4 映射 IPv6 地址格式. 当 <AFI/SAFI> 为 <2/128> 时, [RFC4659] 定义了如何为此目的使用 IPv4 映射 IPv6 地址格式以及空路由区分符 (Route Distinguisher, RD). 因此, 对于使用 IPv4 下一跳通告 IPv6 NLRI, 已经存在解决方案.
类似地, 用于通告 IPv4 NLRI 或 VPN-IPv4 NLRI 的 AFI/SAFI 定义假定下一跳地址属于 IPv4 地址族类型. 具体而言, 按 [RFC4760] 和 [RFC8277], 当 <AFI/SAFI> 为 <1/1>, <1/2> 或 <1/4> 时, 下一跳地址被假定为 IPv4 类型. 按 [RFC4364], 当 <AFI/SAFI> 为 <1/128> 时, 下一跳地址被假定为 VPN-IPv4 类型. 按 [RFC6513] 和 [RFC6514], 当 <AFI/SAFI> 为 <1/129> 时, 下一跳地址被假定为 VPN-IPv4 类型. 显然, 没有通用方法可在下一跳的 IPv4 地址字段中编码 IPv6 地址. 因此, 当前没有为使用 IPv6 下一跳通告 IPv4 或 VPN-IPv4 NLRI 指定解决方案.
本文档规定必要扩展, 以允许使用属于 IPv6 协议的下一跳地址通告 IPv4 NLRI 或 VPN-IPv4 NLRI. 这包括扩展 AFI/SAFI 定义, 允许 IPv4 NLRI 或 VPN-IPv4 NLRI 的下一跳地址属于 IPv4 或 IPv6 协议; 定义下一跳信息编码, 用于确定该地址实际属于哪个协议; 以及定义一种 BGP 能力, 使 MP-BGP 对等体能够动态发现它们是否可以交换带有 IPv6 下一跳的 IPv4 NLRI 和 VPN-IPv4 NLRI. 该 BGP 能力允许逐步部署通过 IPv6 下一跳通告 IPv4 可达性的功能, 无需统一切换日, 也不会带来流量黑洞风险.
本文档废止 [RFC5549].
1.1. 要求语言 (Requirements Language)
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL" 只有在如本文所示全部大写出现时, 才应按 BCP 14 [RFC2119] [RFC8174] 中的描述解释.