4. 封装 (Encapsulation)
入口 PE 路由器 MUST (必须) 将 IPv6 VPN 数据通过骨干网隧道传送到由相应目的 IPv6 VPN 前缀的 BGP 下一跳所标识的出口 PE 路由器.
当 BGP 下一跳字段中所含的 16 字节 IPv6 地址被编码为 IPv4 映射的 IPv6 地址时 (见第 3.2.1.2 节), 入口 PE MUST (必须) 使用 IPv4 隧道, 除非被显式配置为另作处理. 入口 PE MAY (可以) 通过显式配置, 允许在 BGP 下一跳字段中所含的 16 字节 IPv6 地址被编码为 IPv4 映射的 IPv6 地址时使用 IPv6 隧道. 这样可以支持某些特定的部署环境——在这些环境中, 尽管使用了 IPv4 映射的 IPv6 地址而非全局 IPv6 地址来实现 PE 的 IPv6 可达性, 但仍希望使用 IPv6 隧道.
当 BGP 下一跳字段中所含的 16 字节 IPv6 地址未被编码为 IPv4 映射地址时 (见第 3.2.1.1 节), 入口 PE MUST (必须) 使用 IPv6 隧道.
当 PE 从所连接的 CE 收到一个数据包时, 它会在对应于该 CE 的 VRF 中查找该数据包的 IPv6 目的地址. 由此, 它可以找到一条 VPN-IPv6 路由. 该 VPN-IPv6 路由带有一个关联的 MPLS 标签和一个关联的 BGP 下一跳. 首先, 这个 MPLS 标签作为底层标签被压入数据包. 然后, 这个带标签的数据包被封装进隧道, 以传送到由 BGP 下一跳所标识的出口 PE. 该封装的细节取决于实际的隧道技术, 如下所述:
如同用于 IPv4 VPN 的 MPLS/BGP [2547-GRE/IP], 当使用 IPv4 隧道或 IPv6 隧道 (对应地, IPv4 GRE 隧道或 IPv6 GRE 隧道) 进行隧道封装时, 带标签的 IPv6 VPN 数据包的封装将产生如 [MPLS-in-IP/GRE] 所规定的一个 MPLS-in-IP (对应地, MPLS-in-GRE) 封装数据包. 当使用 L2TPv3 进行隧道封装时, 带标签的 IPv6 VPN 数据包的封装将产生如 [MPLS-in-L2TPv3] 所规定的一个 MPLS-in-L2TPv3 封装数据包.
如同用于 IPv4 VPN 的 MPLS/BGP, 当使用 IPsec 保护的隧道 [2547-IPsec] 进行隧道封装时, 带标签的 IPv6 VPN 数据包的封装将产生一个 MPLS-in-IP 或 MPLS-in-GRE 封装的数据包 [MPLS-in-IP/GRE]. IPsec 传输模式用于保护从入口 PE 到出口 PE 的这个 IPv4 或 GRE 隧道.
当使用 IPv4 隧道 (无论是否由 IPsec 保护) 进行隧道封装时, 入口 PE 路由器 MUST (必须) 将 BGP 下一跳字段中 IPv4 映射的 IPv6 地址字段所编码的 IPv4 地址, 用作所添加 IPv4 隧道头的目的地址. 它使用自身的一个 IPv4 地址作为所添加 IPv4 隧道头的源地址.
当使用 IPv6 隧道 (无论是否由 IPsec 保护) 进行隧道封装时, 入口 PE 路由器 MUST (必须) 将 BGP 下一跳字段的 IPv6 地址字段中所含的 IPv6 地址, 用作所添加 IPv6 隧道头的目的地址. 它使用自身的一个 IPv6 地址作为所添加 IPv6 隧道头的源地址.
当使用 MPLS LSP 进行隧道封装时, LSP 可以使用任何标签分发技术 (LDP [LDP], RSVP-TE [RSVP-TE] 等) 来建立.
当使用 MPLS LSP 进行隧道封装时, 入口 PE 路由器 MUST (必须) 将 LSP 隧道标签直接压入带标签的 IPv6 VPN 数据包的标签栈中 (即, 不预先添加任何 IPv4 或 IPv6 头部). 这个被压入的标签对应于从入口 PE 路由器开始, 到出口 PE 路由器结束的 LSP. BGP 下一跳字段用于标识出口 PE 路由器, 进而确定要压入标签栈的标签. 当 BGP 下一跳字段中的 IPv6 地址是一个 IPv4 映射的 IPv6 地址时, 其中嵌入的 IPv4 地址将决定要压入标签栈的隧道标签. 在所有其他情况下, BGP 下一跳字段中的 IPv6 地址将决定要压入标签栈的隧道标签.
为确保实现本 VPN 架构的各系统之间的互操作性, 所有这些系统 MUST (必须) 支持使用由 LDP [LDP] 建立的 MPLS LSP 进行隧道封装.