在 BGP IPv4 会话中启用或停用 IPv6 前缀交换

通过 Cloud Router,您可以使用多协议 BGP (MP-BGP) 启用和停用各个边界网关协议 (BGP) 会话中 IPv6 前缀交换。通过启用 IPv6 前缀交换,您可以在启用了 IPv6 的虚拟私有云 (VPC) 网络和本地网络中的 IPv6 寻址主机之间交换 IPv6 路由。前缀交换通过基于 IPv4 的 BGP 会话进行。不支持仅使用 IPv6 的 BGP 会话。

如需在 Google Cloud 和本地网络之间交换 IPv6 流量,您必须在 Network Connectivity 产品(例如高可用性 VPN 或专用互连)中启用 IPv4 和 IPv6(双栈)堆栈类型。 然后,您可以在连接使用的 BGP IPv4 会话中启用 IPv6 前缀交换。

您可以通过修改 BGP 对等端的配置来停用特定 BGP 会话中的 IPv6 前缀交换。如果您需要排查与 IPv6 相关的网络问题,则停用 IPv6 前缀交换非常有用。另一个原因可能是,您希望在高可用性 VPN 隧道中暂时停用 IPv6 流量,而不删除隧道和网关。

如果您在 BGP 会话中停用 IPv6 前缀交换,然后重新启用它,则系统不会弃用之前分配的 IPv6 下一个跃点地址。如果 BGP 会话再次启用了 IPv6,则可以重复使用这些 IPv6 下一个跃点地址。

准备工作

如需使用本指南中的命令行示例,请执行以下操作:

  1. 安装或更新到 Google Cloud CLI 的最新版本。
  2. 设置默认区域和可用区

如需使用本指南中的 API 示例,请设置 API 访问权限

启用 IPv6 前缀交换

此过程假定您将修改已经为高可用性 VPN 隧道或 VLAN 连接创建的 BGP IPv4 会话。

此外,还假设您已将关联的高可用性 VPN 网关或 VLAN 连接配置为使用 IPv4 和 IPv6 双栈,具体如以下步骤所述:

如需在现有 BGP IPv4 会话中启用 IPv6 前缀交换,请执行以下步骤。

控制台

对于高可用性 VPN

  1. 如需为高可用性 VPN 配置 BGP 会话,请在 Google Cloud 控制台中转到 Cloud VPN 隧道页面。

    进入“Cloud VPN 隧道”

  2. 选择待更新 BGP 会话所属的 Cloud VPN 隧道。

  3. VPN 隧道详情页面上,点击修改 BGP 会话

  4. 如需启用 IPv6 路由交换,请点击启用 IPv6 流量切换开关。

  5. 可选:您可以手动或自动为高可用性 VPN 隧道分配 IPv6 下一个跃点地址。

    • 如需自动分配地址,请选择自动
    • 如需手动分配地址,请执行以下操作:
      1. 选择手动
      2. 输入 Cloud Router 路由器 IPv6 下一个跃点的 IPv6 地址。此地址是 Cloud Router 路由器通告的 IPv6 路由的下一个跃点地址。该地址必须在 2600:2d00:0:2::/642600:2d00:0:3::/64 范围内。
      3. 输入对等 IPv6 下一个跃点的 IPv6 地址。此地址是 Cloud Router 从 BGP 对等端获知的 IPv6 路由的下一个跃点地址。该地址必须在 2600:2d00:0:2::/642600:2d00:0:3::/64 范围内。
  6. 点击保存并继续

对于专用互连

  1. 如需为专用互连配置 BGP 会话,请转到 VLAN 连接页面。

    转到 VLAN 连接

  2. 选择待更新 BGP 会话所属的 VLAN 连接。

  3. VLAN 连接详情页面上,点击修改 BGP 会话

  4. 如需启用 IPv6 路由交换,请点击启用 IPv6 流量切换开关。

  5. 点击保存并继续

gcloud

运行 update-bgp-peer 命令。使用 --enable-ipv6 标志允许 BGP 会话交换 IPv6 前缀,如以下示例所示:

gcloud compute routers update-bgp-peer ROUTER_NAME \
    --peer-name=PEER_NAME \
    --enable-ipv6

(可选)为高可用性 VPN 隧道中使用的 BGP 会话启用 IPv6 流量时,您可以指定 IPv6 下一个跃点地址:

gcloud compute routers update-bgp-peer ROUTER_NAME \
    --peer-name=PEER_NAME \
    --enable-ipv6 \
    --ipv6-nexthop-address=IPV6_NEXTHOP_ADDRESS \
    --peer-ipv6-nexthop-address=PEER_IPV6_NEXTHOP_ADDRESS

替换以下内容:

  • IPV6_NEXTHOP_ADDRESS:Cloud Router 通告的 IPv6 路由的下一个跃点地址该地址必须在 2600:2d00:0:2::/642600:2d00:0:3::/64 范围内。
  • PEER_IPV6_NEXTHOP_ADDRESS:Cloud Router 从 BGP 对等端接收到的 IPv6 路由的下一个跃点地址。该地址必须在 2600:2d00:0:2::/642600:2d00:0:3::/64 范围内。

如果您未指定下一个跃点地址,则 Google Cloud 会自动为您分配 2600:2d00:0:2::/642600:2d00:0:3::/64 范围内的未使用地址。

API

使用 routers.patch 方法更新 bgpPeers[] 字段。

bgpPeers[] 字段接受 BGP 对等方数组。PATCH 此字段时,您将使用请求中包含的新数组覆盖现有 BGP 对等端数组。

  1. 发送 GET 请求以获取路由器的当前 BGP 对等端数组。如需了解详情,请参阅查看 BGP 会话配置

  2. 发送带有新 BGP 对等端数组的 PATCH 请求。对于要在 BGP 会话中启用 IPv6 的每个 BGP 对等端,请将 bgpPeers[].enableIpv6 设置为 TRUE

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgpPeers": [
        BGP_PEERS
      ]
    }
    

    替换以下内容:

    • PROJECT_ID:Cloud Router 路由器所属的项目
    • REGION:Cloud Router 路由器所在的区域
    • ROUTER_NAME:Cloud Router 路由器的名称
    • BGP_PEERS:新 BGP 对等端数组的内容

    以下示例在第一个 BGP 对等端的会话中启用 IPv6:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "169.254.10.1",
          "peerIpAddress": "169.254.10.2",
          "peerAsn": 64512,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv6": TRUE
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv6": FALSE
          "
        }
     

    此外,如果您要为高可用性 VPN 隧道中使用的 BGP 会话启用 IPv6 流量,则可以指定 IPv6 下一个跃点地址:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "169.254.10.1",
          "peerIpAddress": "169.254.10.2",
          "peerAsn": 64512,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv6": TRUE,
          "ipv6NexthopAddress": "2600:2d00:0:0:0:0:1:5",
          "peerIpv6NexthopAddress": "2600:2d00:0:0:0:0:1:6"
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv6": FALSE
        }
    

停用 IPv6 前缀交换

此过程假设您要修改先前启用 IPv6 的现有 BGP IPv4 会话。

控制台

对于高可用性 VPN

  1. 在 Google Cloud 控制台中,进入 Cloud VPN 隧道页面。

    进入“Cloud VPN 隧道”

  2. 选择待更新 BGP 会话所属的 Cloud VPN 隧道。

  3. VPN 隧道详情页面上,点击修改 BGP 会话

  4. 如需停用 IPv6 路由交换,请点击启用 IPv6 流量切换开关。

  5. 点击保存并继续

对于专用互连

  1. 在 Google Cloud 控制台中,转到 VLAN 连接页面。

    转到 VLAN 连接

  2. 选择待更新 BGP 会话所属的 VLAN 连接。

  3. VLAN 连接详情页面上,点击修改 BGP 会话

  4. 如需停用 IPv6 路由交换,请点击启用 IPv6 流量切换开关。

  5. 点击保存并继续

gcloud

运行 update-bgp-peer 命令。使用 --no-enable-ipv6 标志来阻止 BGP 会话交换 IPv6 前缀,如以下示例所示:

gcloud compute routers update-bgp-peer ROUTER_NAME \
--peer-name=PEER_NAME \
--no-enable-ipv6

API

使用 routers.patch 方法更新 bgpPeers[] 字段。

bgpPeers[] 字段接受 BGP 对等方数组。PATCH 此字段时,您将使用请求中包含的新数组覆盖现有 BGP 对等端数组。

  1. 发送 GET 请求以获取路由器的当前 BGP 对等端数组。如需了解详情,请参阅查看 BGP 会话配置

  2. 发送带有新 BGP 对等端数组的 PATCH 请求。针对要在 BGP 会话中停用 IPv6 的每个 BGP 对等端,将 bgpPeers[].enableIpv6 设置为 FALSE

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgpPeers": [
        BGP_PEERS
      ]
    }
    

    替换以下内容:

    • PROJECT_ID:Cloud Router 路由器所属的项目
    • REGION:Cloud Router 路由器所在的区域
    • ROUTER_NAME:Cloud Router 路由器的名称
    • BGP_PEERS:新 BGP 对等端数组的内容

    以下示例在第一个 BGP 对等方的会话中禁用 IPv6:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "169.254.10.1",
          "peerIpAddress": "169.254.10.2",
          "peerAsn": 64512,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv6": FALSE
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv6": FALSE
        }
    

后续步骤