在 IPv4 或 IPv6 BGP 会话中配置多协议 BGP

通过 Cloud Router,您可以在使用多协议 BGP (MP-BGP) 的各个边界网关协议 (BGP) 会话中启用和停用 IPv4 或 IPv6 路由交换。借助 MP-BGP,您可以通过 IPv4 BGP 会话交换 IPv6 路由,或通过 IPv6 BGP 会话交换 IPv4 路由。IPv6 BGP 会话支持目前为预览版

如需在单个 BGP 会话中交换 IPv4 和 IPv6 流量,您必须在 Network Connectivity 产品(例如高可用性 VPN 或专用互连)中选择 IPv4 和 IPv6(双栈)堆栈类型。

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

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

准备工作

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

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

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

配置 IPv4 BGP 会话

本部分介绍如何修改 IPv4 BGP 会话的配置。

您无法在 IPv4 BGP 会话中停用 IPv4 路由交换。

启用 IPv6 路由交换

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

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

如需在现有 IPv4 BGP 会话中启用 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 用于此 Cloud VPN 隧道的 IPv6 地址。此 IPv6 地址会通告为 Cloud Router 向其 BGP 对等方通告的 IPv6 路由的下一个跃点。该地址必须在 2600:2d00:0:2::/63 范围内。
      3. 输入对等 IPv6 下一个跃点的 IPv6 地址。此地址是本地路由器或对等 VPN 设备的 IPv6 地址。此 IPv6 地址是从 Cloud Router 的 BGP 对等方获知的 IPv6 路由的下一个跃点。该地址必须在 2600:2d00:0:2::/63 范围内。
  6. 点击保存并继续

对于专用互连

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

    转到 VLAN 连接

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

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

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

  5. 点击保存并继续。 注意:您无法在 Cloud Interconnect 中更改 IPv6 下一个跃点配置。Google Cloud 会自动将 IPv6 下一个跃点地址分配给 VLAN 连接。

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 用于此 Cloud VPN 隧道的 IPv6 地址。此 IPv6 地址会通告为 Cloud Router 向其 BGP 对等方通告的 IPv6 路由的下一个跃点。

    该地址必须在 2600:2d00:0:2::/63 IPv6 范围内。

  • PEER_IPV6_NEXTHOP_ADDRESS:本地路由器的 IPv6 地址。此 IPv6 地址是从 Cloud Router 的 BGP 对等方获知的 IPv6 路由的下一个跃点。该地址必须在 2600:2d00:0:2::/63 范围内。

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

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
        }
    

    使用 ipv6NexthopAddresspeerIpv6NexthopAddress 的值配置本地路由器或对等 VPN 设备。

    如需查看高可用性 VPN 和对等 VPN 设备的示例配置,请参阅为 IPv4 和 IPv6 流量设置第三方 VPN

    如需查看专用互连和本地路由器的示例配置,请参阅为 IPv4 和 IPv6 流量设置本地路由器

停用 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
        }
    

配置 IPv6 BGP 会话

本部分介绍如何修改 IPv6 BGP 会话的配置。

您无法在 IPv6 BGP 会话中停用 IPv6 路由交换。

启用通过 IPv6 BGP 会话进行的 IPv4 路由交换

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

此外,还假设您已经按照以下过程所述配置了 IPv4 和 IPv6(双栈)高可用性 VPN 网关或 VLAN 连接:

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

gcloud

运行 update-bgp-peer 命令。使用 --enable-ipv4 标志允许 BGP 会话交换 IPv4 路由,如以下示例所示:

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

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

gcloud beta compute routers update-bgp-peer ROUTER_NAME \
    --peer-name=PEER_NAME \
    --enable-ipv4 \
    --ipv4-nexthop-address=IPV4_NEXTHOP_ADDRESS \
    --peer-ipv4-nexthop-address=PEER_IPV4_NEXTHOP_ADDRESS

替换以下内容:

  • IPV4_NEXTHOP_ADDRESS:Cloud Router 用于此高可用性 VPN 隧道的 IPv4 地址。此 IPv4 地址作为 Cloud Router 向其 BGP 对等方通告的 IPv4 路由的下一个跃点通告。该地址必须在 IPv4 链路本地范围 169.254.0.0/16 内。
  • PEER_IPV4_NEXTHOP_ADDRESS:本地路由器的 IPv4 地址。此 IPv4 地址是从 Cloud Router 的 BGP 对等方获知的 IPv4 路由的下一个跃点。该地址必须在 IPv4 链路本地范围 169.254.0.0/16 内。

    如果您未指定下一个跃点地址,则 Google Cloud 会自动为您分配 IPv4 链路本地 169.254.0.0/16 范围内的未使用地址。

API

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

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

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

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

    PATCH https://compute.googleapis.com/compute/beta/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 对等方的会话中启用 IPv4:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "fdff:1::1",
          "peerIpAddress": "fdff:1::2",
          "peerAsn": 64512,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv4": true
    
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "fdff:1::3",
          "peerIpAddress": "fdff:1::4",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv4": false
        }
     

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

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "fdff:1::1",
          "peerIpAddress": "fdff:1::2",
          "peerAsn": 64512,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv4": true,
          "ipv4NexthopAddress": "169.254.0.1",
          "peerIpv4NexthopAddress": "169.254.0.2"
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "fdff:1::3",
          "peerIpAddress": "fdff:1::4",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv4": false
        }
    

停用通过 IPv6 BGP 会话进行的 IPv4 路由交换

此过程假定您要修改先前已交换 IPv4 路由的现有 IPv6 BGP 会话。

gcloud

运行 update-bgp-peer 命令。使用 --no-enable-ipv4 标志阻止 IPv6 BGP 会话交换 IPv4 路由,如以下示例所示:

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

API

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

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

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

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

    PATCH https://compute.googleapis.com/compute/beta/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 对等方的会话中禁用 IPv4:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "fdff:1::1",
          "peerIpAddress": "fdff:1::2",
          "peerAsn": 64512,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv4": false
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "fdff:1::3",
          "peerIpAddress": "fdff:1::4",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "DEFAULT",
          "advertisedGroups": [],
          "advertisedIpRanges": [],
          "enable": "TRUE",
          "enableIpv4": false
        }
    

后续步骤