Advertising custom IP ranges

You can update existing Cloud Routers or BGP sessions on a Cloud Router to advertise IP ranges other than your Virtual Private Cloud (VPC) network's subnet IP address ranges. For example, you can advertise external IP addresses, arbitrary internal IP addresses, or internal IP addresses from IP address ranges of subnets in peer VPC networks that are connected by VPC Network Peering.

To specify advertisements when you create a Cloud Router or configure a BGP session, see Creating Cloud Routers or Establishing BGP sessions.

Specify advertisements on a Cloud Router

To specify advertisements on an existing Cloud Router, follow these steps.

Console

  1. In the Google Cloud Console, go to the Cloud Routers page.

    Go to Cloud Routers

  2. Select the Cloud Router to update.

  3. On the Router details page, click Edit.

  4. In the Advertised routes section, for Routes, select Create custom routes.

  5. Select the Advertise all subnets visible to the Cloud Router checkbox to continue advertising the subnets available to the Cloud Router. Enabling this option mimics the Cloud Router's default behavior.

  6. Select Add custom route to add an advertised route.

  7. Configure the route advertisement:

    • Source: Select Custom IP range.
    • IP address range: Use CIDR notation to specify the custom IP range.
    • Description: Add a description to help you identify the purpose of this route advertisement, and then click Done.
  8. After you finish adding custom routes, click Save.

gcloud

Run the update command. To specify the custom IP ranges, use the --set-advertisement-ranges flag or the --add-advertisement-ranges flag.

  1. Use the --set-advertisement-ranges flag; any existing custom advertisements are replaced:

    gcloud compute routers update ROUTER_NAME \
       --project=PROJECT_ID \
       --advertisement-mode custom \
       --set-advertisement-groups=ADVERTISED_GROUPS \
       --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    Replace the following:

    • ROUTER_NAME: the name of the Cloud Router
    • PROJECT_ID: the project that contains the Cloud Router
    • ADVERTISED_GROUPS: a Google-defined group that Cloud Router dynamically advertises

      The only valid value is all_subnets, which advertises subnets based on the VPC network's dynamic routing mode (similar to the default advertisements).

    • ADVERTISED_IP_RANGES: the contents of the new array of IP address ranges

    The following example updates the my-router Cloud Router to advertise all subnets and the custom IP ranges 1.2.3.4 and 6.7.0.0/16:

    gcloud compute routers update my-router \
       --advertisement-mode custom \
       --set-advertisement-groups all_subnets \
       --set-advertisement-ranges 1.2.3.4,6.7.0.0/16
    

    The --set-advertisement-groups flag accepts Google-defined groups that the Cloud Router dynamically advertises. You can remove the --set-advertisement-groups flag to exclude subnet advertisements. For a list of all advertisement groups, see the set-advertisement-groups flag in the Google SDK documentation.

  2. Use the --add-advertisement-ranges flag, which requires the Cloud Router's advertisement mode to already be set to custom:

    gcloud compute routers update ROUTER_NAME \
       --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    Replace the following:

    • ROUTER_NAME: the name of the Cloud Router
    • ADVERTISED_IP_RANGES: the contents of the new array of IP address ranges

    The following example adds the 1.2.3.5 custom IP address to the Cloud Router's advertisements:

    gcloud compute routers update my-router \
       --add-advertisement-ranges 1.2.3.5
    

API

Use the routers.patch method to update the bgp.advertisedGroups[] and bgp.advertisedIpRanges[] fields.

The bgp.advertisedGroups[] and bgp.advertisedIpRanges[] fields store arrays of advertised groups and advertised IP address ranges. When you PATCH these fields, you overwrite the existing arrays with the new ones in your request.

  1. Send a GET request to get the current arrays of advertised groups and advertised IP address ranges on the router. For details, see Viewing BGP session configuration.

  2. Send a PATCH request with new arrays of advertised groups and advertised IP address ranges. Use the arrays from the GET request in the previous step, and add any groups or IP address ranges that you want on the router.

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgp": {
        "advertisedGroups": [
        "ADVERTISED_GROUPS"
       ],
        "advertisedIpRanges": [
        ADVERTISED_IP_RANGES
       ]
     }
    }
    

    Replace the following:

    • PROJECT_ID: the project that contains the Cloud Router
    • REGION: the region where the Cloud Router is located
    • ROUTER_NAME: the name of the Cloud Router
    • ADVERTISED_GROUPS: a Google-defined group that Cloud Router dynamically advertises

      The only valid value is ALL_SUBNETS, which advertises subnets based on the VPC network's dynamic routing mode (similar to the default advertisements).

    • ADVERTISED_IP_RANGES: the contents of the new array of IP address ranges

    The following example contains two IP address ranges:

        {
          "range": "1.2.3.4",
          "description": "First example range"
        },
        {
          "range": "6.7.0.0/16",
          "description": "Second example range"
        }
    

Specify advertisements on a BGP session

To specify advertisements on an existing BGP session, follow these steps.

Console

  1. In the Google Cloud Console, go to the Cloud Routers page.

    Go to Cloud Routers

  2. Select the Cloud Router that contains the BGP session to update.

  3. On the Router details page, select the BGP session to update.

  4. On the BGP session details page, click Edit.

  5. For Routes, select Create custom routes.

  6. Select the Advertise all subnets visible to the Cloud Router checkbox to continue advertising the subnets available to the Cloud Router. Enabling this option mimics the Cloud Router's default behavior.

  7. Select Add custom route to add an advertised route.

  8. Configure the route advertisement:

    • Source: Select Custom IP range.
    • IP address range: Use CIDR notation to specify the custom IP range.
    • Description: Add a description to help you identify the purpose of this route advertisement, and then click Done.
  9. After you finish adding custom routes, click Save.

gcloud

Run the update-bgp-peer command. To specify the custom IP ranges, use the --set-advertisement-ranges flag or the --add-advertisement-ranges flag.

  1. Use the --set-advertisement-ranges flag; any existing custom advertisements are replaced:

    gcloud compute routers update-bgp-peer ROUTER_NAME \
        --peer-name=PEER_NAME \
        --advertisement-mode custom \
        --set-advertisement-groups=ADVERTISED_GROUPS \
        --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    Replace the following:

    • ROUTER_NAME: the name of the Cloud Router
    • PEER_NAME: the name of your BGP peer
    • ADVERTISED_GROUPS: a Google-defined group that Cloud Router dynamically advertises

      The only valid value is all_subnets, which advertises subnets based on the VPC network's dynamic routing mode (similar to the default advertisements).

    • ADVERTISED_IP_RANGES: the contents of the new array of IP address ranges

    The following example updates the my-bgp-session BGP session on the my-router Cloud Router to advertise all subnets and the custom IP ranges 1.2.3.4 and 6.7.0.0/16:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode custom \
        --set-advertisement-groups all_subnets \
        --set-advertisement-ranges 1.2.3.4,6.7.0.0/16
    

    The --set-advertisement-groups flag accepts Google-defined groups that the BGP session dynamically advertises. You can remove the --add-advertisement-groups flag to exclude subnet advertisements. For a list of all advertisement groups, see the set-advertisement-groups flag in the Google SDK documentation.

  2. Use the --add-advertisement-ranges flag, which requires the Cloud Router's advertisement mode to already be set to custom:

    gcloud compute routers update-bgp-peer ROUTER_NAME \
        --peer-name=PEER_NAME \
        --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    Replace the following:

    • ROUTER_NAME: the name of the Cloud Router
    • PEER_NAME: the name of your BGP peer
    • ADVERTISED_IP_RANGES: the contents of the new array of IP address ranges

    The following example adds the 1.2.3.5 custom IP address to the Cloud Router's advertisements:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges 1.2.3.5
    

API

Use the routers.patch method to update the bgpPeers[] field.

The bgpPeers[] field accepts an array of BGP peers. When you PATCH this field, you overwrite the existing array of BGP peers with the new array included in your request.

  1. Send a GET request to get the current array of BGP peers for the router. For details, see Viewing BGP session configuration.

  2. Send a PATCH request with a new array of BGP peers. For each BGP peer for which you want to add advertisements, do the following:

    • Add any IP address range advertisements that you want in the bgpPeers[].advertisedIpRanges[] field.
    • Add any group advertisements that you want in the bgpPeers[].advertisedGroups[] field. Valid values are ALL_SUBNETS and ALL_VPC_SUBNETS. For more information about these values, see routers.patch in the API documentation.
    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgpPeers": [
        BGP_PEERS
      ]
    }
    

    Replace the following:

    • PROJECT_ID: the project that contains the Cloud Router
    • REGION: the region where the Cloud Router is located
    • ROUTER_NAME: the name of the Cloud Router
    • BGP_PEERS: the contents of the new array of BGP peers

    The following example contains two BGP peers with custom advertisements:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "169.254.10.1",
          "peerIpAddress": "169.254.10.2",
          "peerAsn": 64512,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedGroups": ["ALL_SUBNETS"],
          "advertisedIpRanges": [
            {
              "range": "1.2.3.4",
              "description": "First example range"
            },
            {
              "range": "6.7.0.0/16",
              "description": "Second example range"
            }
          ]
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedIpRanges": [
            {
              "range": "192.168.10.0/24",
              "description": "Third example range"
            }
          ]
        }
    

What's next

  • To view the configuration of a Cloud Router, its BGP sessions, and the routes that Cloud Router is advertising, see Viewing Cloud Router details.

  • To troubleshoot custom route advertisement issues, see Troubleshooting.