EVPN-VXLAN 数据中心中的 BGP 未编号 IPv6 底层网络

本指南演示如何部署和验证 BGP 未编号对等互连(也称为 BGP 自动发现或 BGP 自动对等互连)。此功能允许 BGP 使用直接连接的邻接方的本地链路 IPv6 地址自动发现和创建对等邻接方会话。

概述

如今,许多企业和超大规模数据中心都使用 BGP 作为底层路由协议。与 OSPF 和 IS-IS 等传统 IGP 不同,BGP 通常要求您显式配置对等、自治系统 (AS) 编号和路由策略来控制路由交换。

许多运营商对 IPv6 的经验仍然相对不足。使用 BGP 无编号对等可动态发现 IPv6 邻接方,可减轻在 EVPN-VXLAN 数据中心 (DC) 交换矩阵中手动配置 IPv6 底层网络的负担。Junos OS 通过支持 BGP 组配置,基于基本 IPv6 功能进行构建。BGP 组配置支持用于支持未编号 IPv6 交换矩阵的动态对等参数(例如允许的远程 AS 编号)。

您可以手动配置 EVPN-VXLAN DC 交换矩阵,也可以使用 BGP 未编号对等互连功能来配置。此用例描述了手动配置交换矩阵的复杂性,以及为什么使用 BGP 未编号对等连接功能可提供更简单的解决方案。

考虑一个简单的两层数据中心。这种尺寸适中的交换矩阵由四个主干设备和 32 个叶设备组成。每个主干设备有 32 个连接到叶设备的链路,每个叶有两个交换矩阵链路,每个主干设备一个。

在此手册配置中,您首先需要为网络分配 IP 地址。对于此交换矩阵,您需要配置 4*32=128 个 IPv6 IP 地址。每个网络需要分配两个主机地址。

接下来,配置 BGP 对等方及其关联的 AS 编号。对于每个交换矩阵链路的每一端,您需要一个 BGP 对等会话。在我们的示例交换矩阵中,此计算总共相当于 4*32*2=256 个 BGP 对等体定义,每个定义都需要一个唯一的对等 IP 和远程 AS 编号。

手动定义 256 个 BGP 对等节点可能很麻烦,而且容易出错。在复杂的交换矩阵中,简单的配置错误可能难以隔离。假设交换矩阵支持 128 个叶设备。您现在必须配置 4*128=512 IP IPv6 网络。从数学计算中可以明显看出,手动配置大型交换矩阵的复杂性很快就会成为一种负担。此外,对于 IPv4 交换矩阵,一个经常被忽视的因素是底层网络占用大量的 IPv4 地址。在许多网络中,IPv4 寻址空间都十分宝贵。

相比之下,BGP 未编号对等连接不需要在底层链路上进行可路由的 IP 网络分配。底层网络中的所有 BGP 对等互连仅使用链路本地 IP 地址。使用链路本地 IP 地址意味着配置更少、复杂性更低、路由表更小,同时 IP 地址得以保留。

配置 BGP 无编号 EVPN 交换矩阵

配置 BGP 未编号对等连接时,您只需要最少数量的配置语句。这些配置语句用于快速引导基于 IPv6 的底层网络。此底层支持 EVPN-VXLAN 叠加。虽然底层网络使用本机 IPv6,但它也支持具有 IPv6 下一跃点 (RFC5549) 的 IPv4 路由。换言之,底层网络在 EVPN-VXLAN 叠加网络中同时支持 IPv4 和 IPv6 工作负载及其相关虚拟网络。有关 IPv6 无状态自动配置的完整讨论超出了本文档的讨论范围。

以下列表重点介绍了 BGP 无编号对等连接的主要功能:

  • 在所有支持 IPv6 的接口上自动配置无状态链路本地 IPv6 地址。
  • 支持允许的 AS 编号列表,以简化与远程交换矩阵设备的对等互连。
  • 使用 IPv6 路由器通告 (RA),动态发现直连邻接方。
  • 使用 IPv6 邻接方发现将邻接方的本地链路 IP 解析为相应的 MAC 地址,以促进链路级通信。
  • 本地端使用发现的对等方链路本地和 MAC 地址向直接连接的邻接方发送 BGP 开放消息。此打开消息包含本地对等方的 AS 编号。远程对等方会将其与其允许的 AS 编号列表进行匹配,以决定是否允许会话。同样,本地对等方与远程对等方的 AS 编号匹配,如远程对等方的打开消息中返回的那样。
  • 为您提供一个简单的 BGP 策略,用于播发所有直连网络(至少必须播发每个交换矩阵设备的环路地址)。
  • 使用默认 EBGP 策略重新播发从其他交换矩阵设备获知的路由。
  • 使用 BGP AS 路径长度来防止环路,并为 ECMP 负载平衡提供最佳路由选择。
  • 简化了添加 EVPN-VXLAN 叠加网络的过程,因为底层提供环路可达性。
注意:

BGP 未编号对等互连仅支持 EBGP。不支持多跃点 EBGP 和 IBGP。

拓扑结构

下图显示了一个简单的双主干和双叶拓扑。

  • 交换矩阵底层是纯 IPv6,包括设备环路。

  • 连接的服务器基于 IPv4,演示了对 IPv4 over IPv6 的支持(请参阅 RFC 5549)。叠加还支持 IPv6 工作负载。假设这些服务器是裸机服务器 (BMS),并预配置了显示的 IP 地址。VLAN 成员资格用于将这些工作负载映射到通过 VXLAN 封装隔离的叠加虚拟网络中。此示例中的接入接口未标记。

  • 添加叠加时,您希望在服务器工作负载之间具有路由连接。叠加可以是 CRB 或 ERB。BGP 未编号的底层基础架构支持任一类型的叠加。

分步配置

本节提供有关如何配置 BGP 未编号对等的分步说明。所有交换矩阵设备上的配置都类似,因此此处仅显示叶 1 设备的配置。本例稍后部分将显示其他设备配置。

分步:枝叶 1

  1. 在所有交换矩阵接口上启用该inet6系列。这些交换矩阵接口将叶 1 连接到主干设备。该inet6系列支持 IPv6、无状态自动配置和邻居发现。要支持 IPv4 工作负载,还必须添加家族。inet

  2. 创建环路接口 lo0 并配置 IPv6 地址。添加 EVPN-VXLAN 叠加网络时,环路地址用于支持 BGP 对等互连。

  3. 配置一个策略,指定要允许动态 BGP 对等互连的 BGP AS 编号列表。

  4. 配置按数据包的负载平衡策略。负载平衡策略允许在转发表中安装多个等价下一跃点,以便在发生链路故障时提供快速故障切换到备用等价交换矩阵跃点。

  5. 将每个数据包的负载平衡策略应用到转发表。

  6. 配置策略以播发直接路由。由于不会导出链路本地子网,因此在此示例中,此策略仅播发环路地址。稍后在叠加中配置 BGP 对等互连时,将使用此相同的环路地址。

  7. 配置路由器 ID (RID)。由于此示例适用于本机 IPv6 交换矩阵,因此您必须确保配置包含 IPv4 格式的路由器 ID。大多数情况下,RID 会自动从环路地址派生,但在此示例中,环路仅为 IPv6。

  8. 为每个交换矩阵接口配置路由器通告(注册机关)。启用注册机关后,接口会定期发送注册机关消息。注册机关消息用于发现远程邻接方的链路本地 IP,进而启动邻接方发现和其余的动态对等进程。

  9. 配置 BGP 组以支持无编号对等互连。我们将此策略应用于导出直接路由的组。您必须将所有交换矩阵接口都包括在此组中,并且必须在层次结构下[protocols bgp group <group-name> dynamic-neighbor <neighbor-group-name>]启用接口peer-auto-discovery。此组链接到定义动态对等连接允许的 AS 编号的策略。

    您可以通过多个路径和多个 AS 编号启用负载平衡。请记住,在此交换矩阵中,每个节点都使用唯一的 AS 编号。到多个 AS 编号的多路径负载平衡 (ECMP) 允许 RIB 安装指向这些不同 AS 编号的多个下一跃点,从而实现快速故障切换。添加对扩展 IPv4 下一跃点的支持,允许通过 IPv6 BGP 会话进行 IPv4 路由交换。

结果

回想一下,所有交换矩阵设备都有类似的配置。为简洁起见,仅显示叶 1 的配置增量。

快速配置

为了帮助您快速启动和运行,我们为您提供了拓扑中每个节点的快速配置。根据环境的具体情况复制和编辑以下命令(您通常不会完全按照此处所示使用这些命令)。将修改后的命令粘贴到相关交换矩阵设备的终端窗口中。您必须在以下 [edit] 层次结构中处于配置模式:

枝叶 1 的快速配置:

枝叶 2 的快速配置:

主干 1 的快速配置:

主干 2 的快速配置:

请务必在所有设备上提交配置更改。

验证

使用这些命令和示例输出来确认未编号底层的正确运行。所有节点的配置和操作都类似。下面我们仅显示叶 1 的命令和输出。相同的命令适用于所有节点,并且所有设备都应获得类似的输出。

总体而言,主要验证任务是确认所有节点都已使用链路本地地址建立预期的 BGP 会话,以及交换矩阵设备是否正确交换环路路由。我们采用结构化的自下而上的方法,确认成功建立 BGP 会话所需的每个方面。

确认交换矩阵接口已开启且可运行。

输出显示叶 1 的交换矩阵接口可以正常工作。还可以看到缺少显式 IPv4 或 IPv6 地址。接口上仅配置了 和 inet inet6 族。因此,作为 IPv6 无状态地址配置的一部分,仅存在 IPv6 链路本地 IPv6 地址。我们还注意到,环路地址具有预期的 IPv6 地址分配。

CLI 命令的 show interfaces terse 输出可以轻松验证所有接口的状态和配置,包括环路地址。

确认所有交换矩阵接口都在发送和接收 IPv6 路由器通告 (RA)。

输出确认叶 1 正在向两个主干设备发送和接收 RA。RA 会正确报告发送端的链路本地地址。

确认交换矩阵设备已使用 IPv6 ND 学习了所有直连 IPv6 邻接方的 MAC 到链路本地地址绑定。

输出确认叶 1 已成功将 MAC 解析为其两个邻接方(即两个主干设备)的链路本地地址。

确认您可以使用邻接方的本地链路地址对其 ping 命令。

从枝叶 1 到主干 1 的 ping 成功。此结果使用链路本地地址确认 IPv6 连接。

确认所有交换矩阵设备都已与直接连接的邻接方建立 BGP 对等会话。

正如预期一样,输出显示叶 1 设备已建立两个 BGP 会话。显示屏将确认已交换 IPv6 路由。我们稍后会在确认中提供更多内容。如果需要,请显示有关 BGP 邻接方的详细信息:

确认所有节点都在播发其环路地址,同时学习其他节点的环路地址。

正如预期一样,输出确认叶 1 已获知所有其他交换矩阵设备的环路地址。请注意,对于叶 2,它显示两条等价路径,一条路径通过主干 1,另一条路径通过主干 2。

如果需要,您可以通过显示向给定BGP邻接方播发或从给定邻接方接收的特定路由来帮助隔离路由问题。请注意,与对本地链路地址执行 ping 操作一样,您必须使用相应的出口接口来限定对等方的本地链路 IP:

确认交换矩阵支持 ECMP 负载平衡。显示有关叶 1 用于到达叶 2 的路径的详细信息。您需要有两条等价路由,一条通过每个主干设备。在以下部分中,您将在路由表和转发表(RIB 和 FIB)中确认 ECMP。

输出确认,叶 1 和叶 2 之间的两条路径均用于转发流量,并且是多路径路由的一部分。

确认叶 1 和叶 2 已通过底层进行连接。

输出确认叶 1 和叶 2 具有底层连接。路径显示此流量通过主干 1,如其环路地址所示为第一跃点。

此底层现已准备就绪,可支持您选择的 EVPN-VXLAN 叠加。有关可用叠加选项的详细信息,请参阅 了解使用 VXLAN 数据平面封装的 EVPN 。