创建路由器设备实例

路由器设备是 Network Connectivity Center 支持的多种 spoke 类型之一。本页面介绍如何创建和设置路由器设备实例。根据您选择的方法,此流程的某些部分可能是自动执行的。但是,您必须先完成所有必需的任务,然后才能使用路由器设备 spoke 建立连接

必要的任务包括:

  1. 创建要用作路由器设备实例的虚拟机。您可以使用受支持的合作伙伴解决方案或您自己的自定义映像来创建虚拟机。

  2. 确保路由器设备实例可通过 TCP 端口 179 访问 BGP 流量。为确保这种可访问性,您可能需要创建防火墙规则。

  3. 创建一个使用路由器设备实例的 spoke。

  4. 设置 Cloud Router。此任务包含以下子任务:

    1. 在路由器设备实例所在的区域中创建 Cloud Router 路由器。

    2. 在 Cloud Router 路由器上创建两个接口。

    3. 在 Cloud Router 路由器上配置 BGP 对等互连。

  5. 在路由器设备实例上配置 BGP 对等互连。

完成这些任务的方式可能明显不同。例如,如果您使用合作伙伴解决方案创建路由器设备实例,那么系统可能会自动为您执行某些后续任务。

借助 Network Connectivity Center,您可以实现用于在 Google Cloud 中进行网络连接管理的中心辐射型架构。如需了解详情,请参阅 Network Connectivity Center 概览

配置示例

本页面介绍了如何设置示例站点到云配置。在此设置中,两个路由器设备实例在 Virtual Private Cloud (VPC) 网络和本地网络之间提供连接。Network Connectivity Center 使用等价多路径 (ECMP) 路由来跨路由器设备实例进行流量负载均衡。它使用边界网关协议 (BGP) 在网络之间分配路由。

示例配置将路由器设备实例放置在同一子网中。但是,每个路由器设备实例位于不同的可用区中。

每个路由器设备实例都维持与同一 Cloud Router 路由器的 BGP 会话。此 Cloud Router 路由器有两个接口。每个路由器设备实例与每个接口建立对等互连,总共四个对等互连会话。

此拓扑并不是站点到站点的数据传输示例。但是,设置此拓扑的说明与用于站点到站点数据传输拓扑的一半的说明几乎相同;说明中注明了例外情况。如需详细了解站点到站点数据传输,请参阅路由器设备概览

为路由器设备创建 BGP 会话
为路由器设备实例创建 BGP 会话(点击可放大)

准备工作

开始之前,请查看以下部分。

创建或选择项目

为了更轻松地配置 Network Connectivity Center,请先确定有效项目。

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 安装 Google Cloud CLI。
  5. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  6. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  7. 确保您的 Google Cloud 项目已启用结算功能

  8. 安装 Google Cloud CLI。
  9. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  1. 如果您使用的是 Google Cloud CLI,请使用 gcloud config set 命令设置项目 ID。

    gcloud config set project PROJECT_ID

    PROJECT_ID 替换为您的唯一项目 ID。

    此页面上的 gcloud CLI 说明假定您已设置项目 ID。

  1. 如需确认您正确设置了项目 ID,请使用 gcloud config list 命令

    gcloud config list --format='text(core.project)'

启用 Network Connectivity API

您必须先启用 Network Connectivity API,然后才能使用 Network Connectivity Center 执行任何任务。

控制台

如要启用 Network Connectivity API,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

  2. 点击启用

或者,您可以使用 Google Cloud 控制台 API 库来启用 API,如启用 API 中所述。

获取访问权限

如要使用 Network Connectivity Center,您需要具备角色和权限中所述的权限。

配置 Network Connectivity Center 时,您还可以使用 Google Cloud 资源,例如 VPC 网络、子网和防火墙规则。如需详细了解使用这些资源所需的权限,请参阅 Compute Engine 访问权限控制文档

IP 地址和路由器设备实例

要设置路由器设备实例,您必须在该实例和 Cloud Router 路由器之间建立对等互连。如需设置对等互连,虚拟机必须使用 RFC 1918 内部 IP 地址。如果虚拟机使用不同类型的地址,则无法对等互连这两个资源。

如需了解如何查看虚拟机的 IP 地址,请参阅以下文档:

有关 IP 地址类型的定义和详细信息,请参阅 IP 地址

预留静态内部 IP 地址(推荐)

我们建议您为路由器设备实例提供一个静态内部 IP 地址,这样该地址在重新启动期间就不会发生变化。如果地址更改,则 BGP 对等互连失败。

您可以通过多种方式分配预留的 IP 地址。您可以提前预留 IP 地址。或者,您可以在创建虚拟机时预留该 IP 地址。如果您错误地为虚拟机提供了临时地址,稍后可以将该地址转换为静态地址。如需详细了解静态 IP 地址,请参阅预留静态内部 IP 地址

BGP 对等互连的 IP 地址

路由器设备实例使用其内部 IP 地址与 Cloud Router 建立对等互连。实例使用链路本地地址(例如 169.254.x.x)进行 BGP 对等互连。

同样,Cloud Router 使用两个 RFC 1918 内部 IP 地址与路由器设备实例对等互连,每个接口对应一个地址。这些 IP 地址可以手动分配,也可以从包含路由器设备实例和 Cloud Router 路由器的子网自动分配。

创建 VPC 资源

以下部分介绍如何创建 VPC 网络和子网。

创建 VPC 网络

创建 VPC 网络(如果尚未创建)。将网络的动态路由模式设置为 global

如需详细了解如何创建 VPC 网络,请参阅创建网络

控制台

如需使用 Google Cloud Console 创建自定义 VPC 网络,请参阅创建自定义模式网络。确保将动态路由模式设置为全局性。如果要遵循示例配置中使用的命名惯例,请调用网络 network-a

gcloud

如需创建自定义 VPC 网络,请使用 gcloud compute networks create 命令

  gcloud compute networks create NAME \
      --subnet-mode custom \
      --bgp-routing-mode global

NAME 替换为 VPC 网络的名称,例如 network-a

API

如需使用 Compute Engine API 创建自定义 VPC 网络,请参阅创建和管理 VPC 网络

创建子网

network-a 中创建一个子网,以包含用作路由器设备实例的虚拟机实例。

控制台

如需使用 Google Cloud 控制台添加子网,请参阅添加子网

如果要遵循示例配置中使用的命名惯例,请使用以下值:

  • 名称subnet-a-1
  • 区域us-west1
  • 范围10.0.1.0/24

gcloud

如需创建 VPC 子网,请使用 gcloud compute networks subnets create 命令

  gcloud compute networks subnets create NAME \
      --network=NETWORK \
      --region=REGION \
      --range=RANGE

请替换以下内容:

  • NAME:包含路由器设备虚拟机的子网的名称,例如 subnet-a-1
  • NETWORK:包含该子网的网络,例如 network-a
  • REGION:包含该子网的区域,例如 us-west1
  • RANGE:采用 CIDR 表示法的子网的 IP 范围,例如 10.0.1.0/24

API

如需使用 Compute Engine API 创建 VPC 子网,请参阅创建和管理 VPC 网络

创建路由器设备虚拟机

创建用作路由器设备实例的 Compute Engine 虚拟机。示例配置使用两个虚拟机:router-app-arouter-app-b

概括来讲,您可以通过创建使用网络虚拟设备映像的虚拟机来创建路由器设备映像。此映像可以是以下任何一种:

如需详细了解如何指定映像,请参阅以下资源:

如需详细了解如何创建虚拟机,请参阅创建和启动虚拟机实例

本部分中的示例假设您已经为路由器设备实例预留 IP 地址。如需了解详情,请参阅 IP 地址和路由器设备实例

控制台

如需创建示例配置中显示的两个虚拟机,请参阅创建和启动虚拟机实例。创建虚拟机时,请选择以下选项:

  • 如果要遵循示例配置中使用的命名惯例,请使用以下值:

    • 名称router-app-arouter-app-b
    • 区域us-west1
    • 可用区us-west1-aus-west1-b
  • 如需选择映像,请转到页面的启动磁盘区域,点击更改,然后导航到虚拟机的相应映像。

  • 展开网络、磁盘、安全、管理、单租户,然后展开网络。请使用以下值:

    • IP 转发下,选择启用
    • 网络接口下,选择添加网络接口并填写以下字段:
      • 选择您希望路由器设备实例所在的子网,例如 subnet-a-1
      • 主要内部 IP 地址下,选择您要使用的预留 RFC 1918 内部 IP 地址,例如 10.0.1.10
      • Network Service Tiers 下方,选择优质;此选择可最大限度地提高流量使用 Google 网络的范围。

gcloud

如需创建示例配置中显示的两个路由器设备虚拟机,请使用 gcloud compute instances create 命令。使用该命令两次,一次用于创建 router-app-a,另一次用于创建 router-app-b

以下示例代码段会为虚拟机分配一个静态内部 IP 地址和一个静态外部 IP 地址。它还会指定供应商提供的用于虚拟机的映像。

  gcloud compute instances create INSTANCE_NAME \
      --project=PROJECT \
      --zone=ZONE \
      --machine-type=MACHINE_TYPE \
      --network-tier=NETWORK_TIER \
      --network-interface=[subnet=SUBNET,private-network-ip=INTERNAL_IP_ADDRESS] \
      --can-ip-forward \
      --image-project=IMAGE_PROJECT \
      --image=IMAGE

请替换以下内容:

  • INSTANCE_NAME:用作路由器设备实例的虚拟机的名称,例如 router-app-arouter-app-b
  • PROJECT:包含路由器设备虚拟机的项目名称,例如 my-project
  • ZONE:虚拟机所在的 Google Cloud 地区,例如 us-west1-a
  • MACHINE_TYPE:用于虚拟机的机器类型资源,例如 n1-standard-2
  • NETWORK_TIER:创建路由器设备虚拟机时,将网络层级设置为 premium;此选择可最大限度地提高流量使用 Google 网络的流量范围
  • SUBNET:分配给虚拟机主要网络接口的子网,例如 subnet-a-1
  • INTERNAL_IP_ADDRESS:分配给连接到 Cloud Router 的虚拟机接口的 RFC 1918 内部 IP 地址,例如 10.0.1.10
  • IMAGE_PROJECT:包含 image 字段中指定映像的项目名称,例如 debian-cloud
  • IMAGE:要安装的映像的名称,例如 debian-10-buster-v20210217

API

如需创建示例配置中显示的两个路由器设备虚拟机,请使用 compute.instances.insert 方法。使用该方法两次,一次用于创建 router-app-a,另一次用于创建 router-app-b

以下示例代码段会为虚拟机分配一个静态内部 IP 地址和一个静态外部 IP 地址。它还会指定供应商提供的用于虚拟机的映像。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances
 {
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "name": "INSTANCE_NAME",
   "canIpForward": "true",
   "networkInterfaces": [{
     "subnetwork": "regions/REGION/subnetworks/SUBNET",
     "networkIP": "INTERNAL_IP_ADDRESS",
     "accessConfigs": [{
         "networkTier": "NETWORK_TIER,
       }]
     }],
    "disks": [{
      "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
   }]
 }

请替换以下内容:

  • PROJECT:包含路由器设备虚拟机的项目名称,例如 my-project
  • ZONE:虚拟机所在的 Google Cloud 地区,例如 us-west1-a
  • MACHINE_TYPE:用于虚拟机的机器类型资源,例如 zones/us-west1-a/machineTypes/n1-standard-2
  • INSTANCE_NAME:虚拟机的名称,例如 router-app-arouter-app-b
  • REGION:包含虚拟机的区域,例如 us-west1
  • SUBNET:分配给虚拟机主要网络接口的子网,例如 regions/us-west1/subnetworks/subnet-a-1
  • INTERNAL_IP_ADDRESS:分配给虚拟机的 RFC 1918 内部 IP 地址;为连接到 Cloud Router 的虚拟机接口配置地址,例如 10.0.1.10
  • NETWORK_TIER:创建路由器设备虚拟机时,将网络层级设置为 premium;此选择可最大限度地提高流量使用 Google 网络的流量范围
  • IMAGE_PROJECT:包含您在创建虚拟机时指定的映像的项目的名称,例如 debian-cloud
  • IMAGE:创建虚拟机时使用的映像的名称,例如 debian-10-buster-v20210217

创建防火墙规则以允许 BGP

创建一条允许 BGP 流量到达 TCP 端口 179 上的 network-a 的防火墙规则。

如需详细了解防火墙命令,请参阅使用 VPC 防火墙规则

控制台

如需使用 Google Cloud 控制台创建 VPC 防火墙规则,请参阅使用 VPC 防火墙规则

gcloud

如需使用 Google Cloud CLI 创建 VPC 防火墙规则,请参阅使用 VPC 防火墙规则

API

如需使用 Compute Engine API 创建 VPC 防火墙规则,请参阅使用 VPC 防火墙规则

创建 Network Connectivity Center 资源

您必须先创建所需的 Network Connectivity Center 资源(包括路由器设备 spoke),然后才能使用路由器设备虚拟机。

创建中心

您必须先创建一个 Hub,然后才能创建 Network Connectivity Center spoke。

控制台

  1. 在 Google Cloud 控制台中,转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

  2. 在项目菜单中,选择一个项目。

  3. 输入 Hub 名称

  4. 输入可选说明

  5. 验证项目 ID。如果项目 ID 不正确,请使用屏幕顶部的菜单选择其他项目。

  6. 点击继续

  7. 控制台会显示一个可让您创建 spoke 的表单,。如需立即填写,请使用创建路由器设备 spoke 中所述的步骤。

  8. 点击完成

gcloud

如需创建 Hub,请使用 gcloud network-connectivity hubs create 命令

  gcloud network-connectivity hubs create HUB_NAME \
    --description="DESCRIPTION" \
    --labels="KEY"="VALUE"

替换以下值:

  • HUB_NAME:新 Hub 的名称
  • DESCRIPTION:用于描述该 Hub 的可选文本
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

API

如要创建 Hub,请使用 networkconnectivity.hubs.create 方法

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/hubs
  {
    "name":"HUB_NAME",
    "description":"DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  }

替换以下值:

  • PROJECT_ID:新 Hub 所属项目的项目ID
  • HUB_NAME:新 Hub 的名称
  • DESCRIPTION:用于描述该 Hub 的可选文本
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

创建路由器设备 Spoke

创建一个路由器设备 Spoke,以使用您刚刚创建的两个路由器设备实例。您需要创建 spoke,才能在路由器设备实例和 Cloud Router 路由器(将在下一步中创建)之间启用 BGP 对等互连。

如需详细了解如何创建 spoke,请参阅使用 hub 和 spoke

控制台

输入基本 Spoke 详情

  1. 在 Google Cloud Console 中,转到 Network Connectivity Center 页面。
  2. 转到 Network Connectivity Center
  3. 在项目下拉菜单中,选择一个项目。
  4. 点击 Spoke 标签页。
  5. 点击添加 Spoke
  6. 新 spoke 表单中,设置 Spoke 类型
  7. 输入 Spoke 名称和(可选)说明
  8. 选择新 spoke 的区域字段。
  9. 站点到站点数据传输下,选择开启关闭。如果您选择的区域不支持数据传输,则该字段处于停用状态。如需详细了解此使用场景,请参阅站点到站点数据传输概览
  10. VPC 网络下拉列表中,选择一个网络。 如果您有多个使用数据传输功能的 Spoke,则所有这些 Spoke 都必须位于同一 VPC 网络中。因此,如果您已创建某个使用数据传输功能的 Spoke,则 VPC 网络值会被预填充且无法更改。

输入路由器设备详细信息

  1. Spoke 类型设置为路由器设备
  2. 选择 Spoke 的区域
  3. 选择一个路由器设备实例:
    1. 点击添加实例
    2. 实例菜单中,选择一个现有的路由器设备实例。
  4. 如需向此 Spoke 添加更多路由器设备实例,请重复上述步骤。完成后,点击完成,然后继续保存您的 Spoke

保存您的 Spoke

  1. 如果要添加更多 Spoke,请点击添加 Spoke,然后重新开始该过程,从输入 Spoke 名称开始。
  2. 添加完 Spoke 后,点击创建Network Connectivity Center 页面会更新,以显示您创建的 Spoke 的详细信息。

gcloud

如需创建路由器设备 spoke,请使用 gcloud network-connectivity spokes linked-router-appliances create 命令

以下示例代码段会创建一个包含两个路由器设备实例的 spoke。在此示例中,spoke 不使用站点到站点数据传输功能。(如需启用数据传输,请再添加一个标志 --site-to-site-data-transfer。)

  gcloud network-connectivity spokes linked-router-appliances create NAME \
    --hub="HUB_URI" \
    --description="DESCRIPTION" \
    --router-appliance=instance="ROUTER_APPLIANCE_URI",ip=IP_ADDRESS \
    --router-appliance=instance="ROUTER_APPLIANCE_URI_2",ip=IP_ADDRESS_2 \
    --region=REGION \
    --labels="KEY"="VALUE" \
 

替换以下值:

  • NAME:Spoke 的名称
  • HUB_URI:您要将 spoke 连接到的 hub 的 URI
  • DESCRIPTION:用于描述 Spoke 的可选文本;例如 us-vpn-spoke
  • ROUTER_APPLIANCE_URI:第一个路由器设备实例的 URI,例如
    https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME 
  • IP_ADDRESS:第一个路由器设备实例的内部 IP 地址
  • ROUTER_APPLIANCE_URI_2:第二个路由器设备实例的 URI
  • IP_ADDRESS_2:第二个路由器设备实例的内部 IP 地址
  • REGION:您希望 spoke 所在的 Google Cloud 区域,例如 us-west1
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

    例如,以下命令会创建一个使用 router-app-arouter-app-b 作为其底层资源的路由器设备 spoke:

    gcloud network-connectivity spokes linked-router-appliances create my-spoke \
        --hub=my-hub \
        --description="Test spoke 1" \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-a/instances/router-app-a",ip=10.0.1.10 \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-b/instances/router-app-b",ip=10.0.1.11 \
        --region=us-west1 \
        --labels="environment"="test"
    

    如需创建相同的 spoke 但启用数据传输,请使用以下命令:

    gcloud network-connectivity spokes linked-router-appliances create my-spoke \
        --hub=my-hub \
        --description="Test spoke 1" \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-a/instances/router-app-a",ip=10.0.1.10 \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-b/instances/router-app-b",ip=10.0.1.11 \
        --region=us-west1 \
        --labels="environment"="test"
        --site-to-site-data-transfer
    

API

如需创建路由器设备 spoke,请使用 networkconnectivity.spokes.create 方法

以下示例代码段会创建一个包含两个路由器设备实例的 spoke。每个实例都包含在 linkedRouterApplianceInstances.instances 数组中。

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/spokes/SPOKE_NAME
  {
    "hub": "HUB_URI",
    "labels": {"KEY": "VALUE"},
    "linkedRouterApplianceInstances": {
      "instances": [
        {
          "virtualMachine": "ROUTER_APPLIANCE_URI",
          "ipAddress": INTERNAL_IP_ADDRESS,
        },
        {
          "virtualMachine": "ROUTER_APPLIANCE_URI_2,
          "ipAddress": INTERNAL_IP_ADDRESS_2,
        }
      ],
      "siteToSiteDataTransfer": BOOLEAN
    }
  }
 

替换以下值:

  • PROJECT_ID:您的项目的 ID
  • REGION:您希望 spoke 所在的 Google Cloud 区域,例如 us-west1
  • SPOKE_NAME:您要为 spoke 指定的名称
  • HUB_URI:您要将 spoke 连接到的 hub 的 URI,例如
    http://networkconnectivity.googleapis.com/v1/projects/PROJECT_NAME/locations/global/hubs/HUB_NAME 
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值
  • ROUTER_APPLIANCE_URI:第一个路由器设备实例的 URI,例如
    https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME 
  • IP_ADDRESS:第一个路由器设备实例的内部 IP 地址
  • ROUTER_APPLIANCE_URI_2:第二个路由器设备实例的 URI
  • IP_ADDRESS_2:第二个路由器设备实例的内部 IP 地址
  • BOOLEAN:用于确定是否为 spoke 启用站点到站点数据传输的值

    例如,如需创建使用 router-app-arouter-app-b 作为其底层资源的 spoke,请求正文的结构应如下所示:

    {
      "hub": "http://networkconnectivity.googleapis.com/v1/projects/my-project/locations/global/hubs/my-hub",
    
      "labels": {
        "environment" : "test"
      },
    
      "linkedRouterApplianceInstances": {
         "instances": [
           {
             "virtualMachine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-a/instances/router-app-a",
             "ipAddress": "10.0.1.10",
           },
           {
             "virtualMachine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-b/instances/router-app-b",
             "ipAddress":  "10.0.1.11",
           }
        ],
        "siteToSiteDataTransfer": true
      }
    }
    
    

设置 Cloud Router

路由器设备使用 Cloud Router 与您的 VPC 网络交换路由。因此,您必须创建一个 Cloud Router 路由器并完成一些其他设置任务。

创建 Cloud Router 路由器

在路由器虚拟机所在的网络和区域中创建资源。在示例配置中,这些资源是 network-aus-west1

如需了解详情,请参阅创建 Cloud Router 路由器

控制台

如需在 Google Cloud 控制台中创建 Cloud Router 路由器,请使用以下方法之一:

gcloud

如需创建 Cloud Router,请使用 gcloud compute routers create 命令

  gcloud compute routers create NAME \
      --region=REGION \
      --network=NETWORK \
      --asn=ASN \
      --project=PROJECT_ID

请替换以下内容:

  • NAME:Cloud Router 的名称,例如 cloud-router-a
  • REGION:包含 Cloud Router 的区域,例如 us-west1
  • NETWORK:包含 Cloud Router 的 VPC 网络,例如 network-a
  • ASN:Cloud Router 的自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN,例如 65000
  • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project

API

如需创建 Cloud Router,请使用 compute.routers.insert 方法

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers
{
 "name": "NAME",
 "network": "NETWORK",
 "bgp": {
   "asn": ASN
  }
}

请替换以下内容:

  • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
  • REGION:包含 Cloud Router 的区域,例如 us-west1
  • NAME:Cloud Router 的名称,例如 cloud-router-a
  • NETWORK:包含 Cloud Router 的 VPC 网络的 URI,例如 /global/networks/network-a
  • ASN:Cloud Router 的自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN,例如 65000

在 Cloud Router 上创建两个冗余接口

在示例配置中创建两个冗余的 Cloud Router 路由器接口,该接口与 subnet-a-1 相关联。

Cloud Router 接口使用区域内部 IP 地址。

如果您明确指定接口的内部 IP 地址,则 IP 地址必须在子网的主要 IP 地址范围内。它必须尚未被其他资源(例如虚拟机或其他 Cloud Router 接口)使用。如提前预留子网中的 IP 地址,创建一个地址资源,然后使用 Cloud Router 接口的预留 IP 地址。

在此步骤中未提供 Google Cloud 控制台说明,因为当您使用 Google Cloud 控制台创建 BGP 对等端时,系统会自动为您创建接口。

gcloud

如需创建示例配置中显示的两个冗余 Cloud Router 路由器接口,请使用 gcloud compute routers add-interface 命令。使用该命令两次,一次用于创建 router-appliance-interface-0,另一次用于创建 router-appliance-interface-1

如果您未指定 --ip-address 选项,Google 会尝试从子网的主要 IP 范围中查找一个免费的 IP 地址,以便分配给接口。

  1. 创建第一个 Cloud Router 接口:

    gcloud compute routers add-interface NAME \
        --interface-name=INTERFACE_NAME \
        --ip-address=IP_ADDRESS \
        --subnetwork=SUBNET \
        --region=REGION \
        --project=PROJECT_ID
    
  2. 创建冗余 Cloud Router 接口:

    gcloud compute routers add-interface NAME \
        --interface-name=INTERFACE_NAME \
        --ip-address=IP_ADDRESS \
        --subnetwork=SUBNET \
        --redundant-interface=REDUNDANT_INTERFACE \
        --region=REGION \
        --project=PROJECT_ID
    

    请替换以下内容:

    • NAME:要更新的 Cloud Router 的名称,例如 cloud-router-a
    • INTERFACE_NAME:接口的名称,例如 router-appliance-interface-0router-appliance-interface-1
    • IP_ADDRESS:用于接口的 RFC 1918 内部 IP 地址,例如 10.0.1.510.0.1.6
    • SUBNET:包含内部 IP 地址的子网,例如 subnet-a-1
    • REDUNDANT_INTERFACE:与主要接口具有相同路由器设备实例的对等 Cloud Router 接口,例如 router-appliance-interface-0
    • REGION:Cloud Router 路由器所在的 Google Cloud 区域,例如 us-west1
    • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
  • 以下命令如示例配置中所述,在 Cloud Router 上创建了第一个接口:

    gcloud compute routers add-interface cloud-router-a \
        --interface-name=router-appliance-interface-0 \
        --ip-address=10.0.1.5 \
        --subnetwork=subnet-a-1 \
        --region=us-west1 \
        --project=my-project
    
  • 以下命令如示例配置中所述,在 Cloud Router 上创建了冗余接口:

    gcloud compute routers add-interface cloud-router-a \
        --interface-name=router-appliance-interface-1 \
        --ip-address=10.0.1.6 \
        --subnetwork=subnet-a-1 \
        --redundant-interface=router-appliance-interface-0 \
        --region=us-west1 \
        --project=my-project
    

API

如需创建示例配置中显示的两个冗余 Cloud Router 路由器接口,请使用 compute.routers.patch 方法。使用该方法两次,一次用于创建 router-appliance-interface-0,另一次用于创建 router-appliance-interface-1

如果您未指定 privateIpAddress 选项,Google 会尝试从子网的主要 IP 范围中查找一个免费的 IP 地址,以便分配给接口。

  1. 创建第一个 Cloud Router 接口:

    "PATCH
    https"://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME
    {
      "region":"REGION",
      "interfaces":[
        {
          "name":"INTERFACE_NAME",
          "privateIpAddress:"IP_ADDRESS",
          "subnetwork": "https":"//www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        }
      ]
    }
    
  2. 创建冗余 Cloud Router 接口:

    "PATCH
    https"://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME
    {
      "region":"REGION",
      "interfaces":[
        {
          "name":"INTERFACE_NAME_1",
          "privateIpAddress:"IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        },
        {
          "name":"INTERFACE_NAME_2",
          "privateIpAddress:"IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET",
          "redundantInterface": "INTERFACE_NAME_1"
        }
      ]
    }
    

    请替换以下内容:

    • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
    • REGION:Cloud Router 路由器所在的 Google Cloud 区域,例如 us-west1
    • NAME:要更新的 Cloud Router 的名称,例如 cloud-router-a
    • NETWORK:包含 Cloud Router 的 VPC 网络,例如 network-a
    • INTERFACE_NAME_1:主要接口的名称,例如 router-appliance-interface-0
    • SUBNET:包含 RFC 1918 内部 IP 地址的子网网址
    • IP_ADDRESS:接口使用的内部 IP 地址,例如 10.0.1.510.0.1.6
    • INTERFACE_NAME_2:冗余 Cloud Router 路由器接口的名称,例如 router-appliance-interface-1
  • 以下命令如示例配置中所述,在 cloud-router-a 上创建第一个接口:

    "PATCH https"://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-a
    {
    "region":"us-west1",
    "interfaces":[
      {
        "name":"router-appliance-interface-0",
        "privateIpAddress:"10.0.1.5",
        "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/subnetworks/>"
      }
    ]
    }
    
  • 以下命令如示例配置中所述,在 cloud-router-a 上创建了冗余接口:

    "PATCH https"://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-a
    {
    "region":"us-west1",
    "interfaces":[
      {
        "name":"router-appliance-interface-0",
        "privateIpAddress:"10.0.1.5",
        "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/subnetworks/subnet-a-1"
      },
      {
        "name":"router-appliance-interface-0",
        "privateIpAddress:"10.0.1.6",
        "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/subnetworks/subnet-a-1",
        "redundantInterface": "router-appliance-interface-0"
      }
    ]
    }
    

在 Cloud Router 路由器上配置 BGP 对等互连

对于每个路由器设备实例,您必须在 Cloud Router 路由器上创建两个 BGP 对等体,每个 Cloud Router 路由器接口一个。BGP 对等 IP 地址必须是配置为路由器设备实例的虚拟机的主要内部 IP 地址。

router-app-a 创建 BGP 对等端

本部分介绍如何在示例配置中为名为 router-app-a 的路由器设备实例创建两个 BGP 对等体。下一部分介绍如何在 router-app-b 上创建两个 BGP 对等体。

以下示例展示了如何将 router-app-a 配置为 Cloud Router cloud-router-a 两个接口上的 BGP 对等方。

控制台

  1. 转到 Network Connectivity Center 页面。
  2. 转到 Network Connectivity Center
  3. 在项目下拉菜单中,选择一个项目。
  4. 点击 Spoke 标签页。
  5. Spoke 名称列中,选择一个 Spoke 以查看 Spoke 详细信息页面。

  1. 名称列中,找到 router-app-a。 点击展开图标以显示配置 BGP 会话链接。点击其中一个链接。作为响应,系统会显示配置 Cloud Router 路由器和 BGP 会话面板。

  1. Cloud Router 下,执行以下某项操作:

    • 如需选择现有的 Cloud Router 路由器,请点击使用现有路由器。使用 Cloud Router 字段标识适当的资源,然后点击选择并继续
    • 如需在 Network Connectivity Center 页面上创建 Cloud Router,请点击新建,然后按照提示创建 Cloud Router。然后点击创建并继续
  2. BGP 会话下,设置这两个 BGP 会话。完成以下步骤两次(每个会话一次):
    1. 点击修改 BGP 会话
    2. 在表单中输入名称对等 ASN通告路由的优先级 (MED)。点击保存并继续
  3. 点击创建

gcloud

如需在 Cloud Router 路由器上为 router-app-a 创建 BGP 对等方,请使用 gcloud compute routers add-bgp-peer 命令。使用该命令两次 - 一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。

  1. 创建第一个 BGP 对等方:

    gcloud compute routers add-bgp-peer NAME \
        --peer-name=PEER_NAME \
        --interface=INTERFACE \
        --peer-ip-address=PEER_IP_ADDRESS \
        --peer-asn=PEER_ASN \
        --instance=ROUTER_APPLIANCE \
        --instance-zone=ROUTER_APPLIANCE_ZONE \
        --region=REGION
    
  2. 创建第二个 BGP 对等方:

    gcloud compute routers add-bgp-peer NAME \
        --peer-name=PEER_NAME \
        --interface=INTERFACE \
        --peer-ip-address=PEER_IP_ADDRESS \
        --peer-asn=PEER_ASN \
        --instance=ROUTER_APPLIANCE \
        --instance-zone=ROUTER_APPLIANCE_ZONE \
        --region=REGION
    

    请替换以下内容:

    • NAME:要更新的 Cloud Router 的名称
    • PEER_NAME:要与路由器设备实例建立的 BGP 对等互连会话的名称
    • INTERFACE:此 BGP 对等方的接口名称
    • PEER_IP_ADDRESS:对等路由器(路由器设备实例)的内部 IP 地址 - 此地址必须与虚拟机主要网络接口的主要内部 IP 地址匹配 (nic0)
    • PEER_ASN:此 BGP 对等方的 BGP 自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN
    • ROUTER_APPLIANCE:用作路由器设备实例的虚拟机名称
    • ROUTER_APPLIANCE_ZONE:用作路由器设备实例的虚拟机所在的地区
    • REGION:用作路由器设备实例的虚拟机所在的区域

以下示例代码段展示了如何为 router-app-a 创建两个对等方:

  gcloud compute routers add-bgp-peer cloud-router-a \
      --peer-name=router-appliance-bgp-peer-router-app-a-0 \
      --interface=router-appliance-interface-0 \
      --peer-ip-address=10.0.1.10 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-west1-a \
      --region=us-west1
  gcloud compute routers add-bgp-peer cloud-router-a \
      --peer-name=router-appliance-bgp-peer-router-app-a-1 \
      --interface=router-appliance-interface-1 \
      --peer-ip-address=10.0.1.10 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-west1-a \
      --region=us-west1

API

如需在 Cloud Router 路由器上为 router-app-a 创建 BGP 对等方,请使用 compute.routers.patch 方法。使用该方法两次 - 一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。

PATCH
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME
{
  "bgpPeers": [
  {
    "name": "PEER_NAME",
    "interfaceName": "INTERFACE_NAME",
    "ipAddress": "IP_ADDRESS",
    "peerIpAddress": "PEER_IP_ADDRESS",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zone/ROUTER_APPLIANCE_ZONE/instances/ROUTER_APPLIANCE_INSTANCE",
    "peerAsn": PEER_ASN,
  }
  {
    "name": "PEER_NAME",
    "interfaceName": "INTERFACE_NAME",
    "ipAddress": "IP_ADDRESS",
    "peerIpAddress": "PEER_IP_ADDRESS",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zone/ROUTER_APPLIANCE_ZONE/instances/ROUTER_APPLIANCE_INSTANCE",
    "peerAsn": PEER_ASN
   }
 ]
}

请替换以下内容:

  • PROJECT_ID:Cloud Router 的项目 ID
  • REGION:用作路由器设备实例的虚拟机所在的区域
  • NAME:要更新的 Cloud Router 的名称
  • PEER_NAME:要与路由器设备实例建立的 BGP 对等互连会话的名称
  • INTERFACE_NAME:要将对等方添加到的 Cloud Router 接口的名称
  • IP_ADDRESS:用于 Cloud Router 路由器接口的 RFC 1918 内部 IP 地址
  • PEER_IP_ADDRESS:用作路由器设备实例的虚拟机的内部 IP 地址
  • ROUTER_APPLIANCE_INSTANCE:用作路由器设备实例的虚拟机的网址格式名称
  • ROUTER_APPLIANCE_ZONE:用作路由器设备实例的虚拟机所在的地区
  • PEER_ASN:此 BGP 对等方的 BGP 自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN

以下示例代码段展示了如何为 router-app-a 创建两个对等方:

PATCH
https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-a
{
  "bgpPeers": [
  {
    "name": "router-appliance-bgp-peer-router-app-a-0",
    "interfaceName": "router-appliance-interface-0",
    "ipAddress": "10.0.1.5",
    "peerIpAddress": "10.0.1.10",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-a/instances/router-app-a",
    "peerAsn": 65001,
  }
  {
    "name": "router-appliance-bgp-peer-router-app-a-1",
    "interfaceName": "router-appliance-interface-1",
    "ipAddress": "10.0.1.6",
    "peerIpAddress": "10.0.1.10",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-a/instances/router-app-a",
    "peerAsn": 65001
   }
 ]
}

router-app-b 创建 BGP 对等端

如前所述,Cloud Router 可以与配置为路由器设备实例的多个虚拟机建立 BGP 会话。这些虚拟机都必须位于同一区域。如要创建此配置,请在同一 Cloud Router 接口上创建其他 BGP 对等互连会话。

上一部分介绍了如何为 router-app-a 设置 BGP 对等互连。本部分介绍如何在 Cloud Router 路由器 cloud-router-a 的两个接口上额外将 router-app-b 配置为 BGP 对等体。

控制台

  1. 转到 Network Connectivity Center 页面。
  2. 转到 Network Connectivity Center
  3. 在项目下拉菜单中,选择一个项目。
  4. 点击 Spoke 标签页。
  5. Spoke 名称列中,选择一个 Spoke 以查看 Spoke 详细信息页面。

  1. 名称列中,找到 router-app-b。点击展开图标以显示配置 BGP 会话链接。点击其中一个链接。作为响应,系统会显示配置 Cloud Router 路由器和 BGP 会话面板。

  1. Cloud Router 下,执行以下某项操作:

    • 如需选择现有的 Cloud Router 路由器,请点击使用现有路由器。使用 Cloud Router 字段标识适当的资源,然后点击选择并继续
    • 如需在 Network Connectivity Center 页面上创建 Cloud Router,请点击新建,然后按照提示创建 Cloud Router。然后点击创建并继续
  2. BGP 会话下,设置这两个 BGP 会话。完成以下步骤两次(每个会话一次):
    1. 点击修改 BGP 会话
    2. 在表单中输入名称对等 ASN通告路由的优先级 (MED)。点击保存并继续
  3. 点击创建

gcloud

如需在 Cloud Router 路由器上为 router-app-b 创建两个 BGP 对等方,请使用 gcloud compute routers add-bgp-peer 命令。使用该命令两次 - 一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。

  • 第一个 BGP 对等方的示例配置:

    gcloud compute routers add-bgp-peer cloud-router-a \
        --peer-name=router-appliance-bgp-peer-router-app-b-0 \
        --interface=router-appliance-interface-0 \
        --peer-ip-address=10.0.1.11 \
        --peer-asn=65002 \
        --instance=router-app-b \
        --instance-zone=us-west1-b \
        --region=us-west1
    
  • 第二个 BGP 对等方的示例配置:

    gcloud compute routers add-bgp-peer cloud-router-a \
        --peer-name=router-appliance-bgp-peer-router-app-b-1 \
        --interface=router-appliance-interface-1 \
        --peer-ip-address=10.0.1.11 \
        --peer-asn=65002 \
        --instance=router-app-b \
        --instance-zone=us-west1-b \
        --region=us-west1
    

API

如需在 Cloud Router 路由器上为 router-app-b 创建两个 BGP 对等方,请使用 compute.routers.patch 方法。使用该方法两次 - 一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。

PATCH
https://compute.googleaps.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-a
{
  "bgpPeers": [
  {
    "name": "router-appliance-bgp-peer-router-app-b-0",
    "interfaceName": "router-appliance-interface-0",
    "ipAddress": "10.0.1.5",
    "peerIpAddress": "10.0.1.11",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-b/instances/router-app-b",
    "peerAsn": 65002,
  }
  {
    "name": "router-appliance-bgp-peer-router-app-b-1",
    "interfaceName": "router-appliance-interface-1",
    "ipAddress": "10.0.1.6",
    "peerIpAddress": "10.0.1.11",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-b/instances/router-app-b",
    "peerAsn": 65002
   }
 ]
}

在路由器设备实例上配置 BGP

如需配置路由器设备实例以与 Cloud Router 路由器建立 BGP 连接,请参阅路由器设备映像的供应商文档。

使用自定义已知路由

您可以选择将路由器设备实例配置为使用自定义已知路由。配置自定义已知路由时,Cloud Router 路由器的行为就像它从 BGP 对等方(路由器设备实例)获知路由一样。

如需使用自定义路由,请完成以下步骤:

  1. 登录设备。对于要指定的每个自定义路由,请为该 IP 前缀配置静态路由,并将下一个跃点设置为外部网络。此步骤是必须完成的,因为路由器设备实例需要知道如何转发使用自定义已知路由的流量。

  2. 更新 Cloud Router 路由器上的 BGP 会话以使用自定义已知路由。按照更新现有会话以使用自定义已知路由中的步骤操作。

使用 MD5 身份验证

如果您使用的路由器设备映像支持 MD5 身份验证,则可以选择向 BGP 对等互连会话添加身份验证。如需了解如何将 MD5 身份验证用于 Cloud Router 路由器,请参阅使用 MD5 身份验证

后续步骤