Advertise custom address ranges
Use custom advertisement mode in a Cloud Router or a Border Gateway Protocol (BGP) session on a Cloud Router to advertise IP address ranges other than your Virtual Private Cloud (VPC) network's subnet IP address ranges. For example, you can advertise external IP address ranges, arbitrary internal IP address ranges, or internal IP addresses from IP address ranges from other VPC networks that are connected to your VPC network. Your VPC network might be connected through VPC Network Peering or VPC spokes in Network Connectivity Center.
When a Cloud Router is configured to use default advertisement mode, it only advertises routes for subnets that are part of the same VPC network as the Cloud Router. In this mode, Cloud Router excludes any static routes and routes that are learned dynamically from other VPC networks, such as routes learned by VPC Network Peering or by VPC spokes in Network Connectivity Center.
To specify custom advertised routes when you create a Cloud Router or configure a BGP session, see Create Cloud Routers or Establish BGP sessions.
Before you begin
gcloud
If you want to use the command-line examples in this guide, do the following:
- Install or update to the latest version of the Google Cloud CLI.
- Set a default region and zone.
API
If you want to use the API examples in this guide, set up API access.
Specify custom advertised routes on a Cloud Router
To specify custom advertised routes on an existing Cloud Router, follow these steps.
Console
- In the Google Cloud console, go to the Cloud Routers page. 
- Select the Cloud Router to update. 
- On the Router details page, click Edit. 
- In the Advertised routes section, for Routes, select Create custom routes. 
- 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 behavior of Cloud Router in default advertisement mode. 
- Select Add custom route to add an advertised route. 
- Configure the custom advertised routes: - Source: Select Custom IP range. 
- IP address range: Use CIDR notation to specify the custom IP range. - You can specify both IPv4 and IPv6 custom IP ranges. However, IPv6 custom ranges are advertised only in BGP sessions where IPv6 is enabled. - If you provide an IP address prefix without a subnet mask, it is interpreted as a - /32subnet mask for IPv4 and a- /128for IPv6. For information about the maximum number of custom learned routes that you can have, see Limits.
- Description: Add a description to help you identify the purpose of this custom advertised route, and then click Done. 
 
- After you finish adding custom advertised 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.
- Use the - --set-advertisement-rangesflag; 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 default advertisement mode).
- ADVERTISED_IP_RANGES: the contents of the new array of IP address ranges- You can specify both IPv4 and IPv6 custom IP ranges. However, IPv6 custom ranges are advertised only in BGP sessions where IPv6 is enabled. - If you provide an IP address prefix without a subnet mask, it is interpreted as a - /32subnet mask for IPv4 and a- /128for IPv6. For information about the maximum number of custom learned routes that you can have, see Limits.
 - The following example updates the - my-routerCloud Router to advertise all subnets and the custom IP ranges- 192.0.2.0/24and- 198.51.100.0/24:- gcloud compute routers update my-router \ --advertisement-mode custom \ --set-advertisement-groups=all_subnets \ --set-advertisement-ranges='192.0.2.0/24,198.51.100.0/24' - The following example updates the - my-routerCloud Router to advertise all subnets and the default IPv6 range:- gcloud compute routers update my-router \ --advertisement-mode custom \ --set-advertisement-groups=all_subnets \ --set-advertisement-ranges='2001:db8:abcd:12::/64' - Cloud Router advertises IPv6 ranges only in BGP sessions that are enabled for IPv6. - The - --set-advertisement-groupsflag accepts Google-defined groups that the Cloud Router dynamically advertises. You can remove the- --set-advertisement-groupsflag to exclude subnet advertisements. For a list of all advertisement groups, see the- set-advertisement-groupsflag in the Google SDK documentation.
- Use the - --add-advertisement-rangesflag, 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 - 203.0.113.1custom IP address to the Cloud Router's advertisements:- gcloud compute routers update my-router \ --add-advertisement-ranges='203.0.113.1' - The following example adds the - 2001:db8:abcd:12::/64custom IPv6 range to the Cloud Router's advertisements:- gcloud compute routers update my-router \ --add-advertisement-ranges='2001:db8:abcd:12::/64' - Cloud Router advertises IPv6 ranges only in BGP sessions that are enabled for IPv6. 
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.
- Send a - GETrequest to get the current arrays of advertised groups and advertised IP address ranges on the router. For details, see View BGP session configuration.
- Send a - PATCHrequest with new arrays of advertised groups and advertised IP address ranges. Use the arrays from the- GETrequest 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
 - You can specify both IPv4 and IPv6 custom IP ranges. However, IPv6 custom ranges are advertised only in BGP sessions where IPv6 is enabled. - If you provide an IP address prefix without a subnet mask, it is interpreted as a - /32subnet mask for IPv4 and a- /128for IPv6. For information about the maximum number of custom learned routes that you can have, see Limits.- The following example contains two IPv4 address ranges and one IPv6 address range: - { "range": "192.0.2.0/24", "description": "First example range" }, { "range": "198.51.100.0/24", "description": "Second example range" }, { "range": "2001:db8:abcd:12::/64", "description: "Third example range" }
Specify custom advertised routes for a BGP session
To specify custom advertised routes for an existing BGP session, follow these steps.
Console
- In the Google Cloud console, go to the Cloud Routers page. 
- Select the Cloud Router that contains the BGP session to update. 
- On the Router details page, select the BGP session to update. 
- On the BGP session details page, click Edit. 
- For Routes, select Create custom routes. 
- 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. 
- Select Add custom route to add an advertised route. 
- Configure the route advertisement: - Source: Select Custom IP range. 
- IP address range: Use CIDR notation to specify the custom IP range. You can specify both IPv4 and IPv6 custom IP ranges. However, IPv6 custom ranges are advertised only in BGP sessions where IPv6 is enabled. - If you provide an IP address prefix without a subnet mask, it is interpreted as a - /32subnet mask for IPv4 and a- /128for IPv6. For information about the maximum number of custom learned routes that you can have, see Limits.
- Description: Add a description to help you identify the purpose of this route advertisement, and then click Done. 
 
- 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.
- Use the - --set-advertisement-rangesflag; 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
- Optionally, add the --enable-ipv6flag if you are adding custom IPv6 ranges.
- 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- You can specify both IPv4 and IPv6 custom IP ranges. However, IPv6 custom ranges are advertised only in BGP sessions where IPv6 is enabled. - If you provide an IP address prefix without a subnet mask, it is interpreted as a - /32subnet mask for IPv4 and a- /128for IPv6. For information about the maximum number of custom learned routes that you can have, see Limits.
 - The following example updates the - my-bgp-sessionBGP session on the- my-routerCloud Router to advertise all subnets and the custom IP ranges- 192.0.2.1,- 198.51.100.0/24, and- 2001:db8:abcd:12::/64.- gcloud compute routers update-bgp-peer my-router \ --peer-name my-bgp-session \ --enable-ipv6 \ --advertisement-mode custom \ --set-advertisement-groups=all_subnets \ --set-advertisement-ranges='192.0.2.1,198.51.100.0/24,2001:db8:abcd:12::/64'- The - --set-advertisement-groupsflag accepts Google-defined groups that the BGP session dynamically advertises. You can remove the- --add-advertisement-groupsflag to exclude subnet advertisements. For a list of all advertisement groups, see the- set-advertisement-groupsflag in the Google SDK documentation.
- Use the - --add-advertisement-rangesflag, 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- You can specify both IPv4 and IPv6 custom IP ranges. However, IPv6 custom ranges are advertised only in BGP sessions where IPv6 is enabled. - If you provide an IP address prefix without a subnet mask, it is interpreted as a - /32subnet mask for IPv4 and a- /128for IPv6. For information about the maximum number of custom learned routes that you can have, see Limits.
 - The following example adds the - 198.51.100.1custom IP address to the Cloud Router's advertisements:- gcloud compute routers update-bgp-peer my-router \ --peer-name my-bgp-session \ --add-advertisement-ranges='198.51.100.1'- The following example adds the - 2001:db8:abcd:12::/64custom IPv6 address to the Cloud Router's advertisements:- gcloud compute routers update-bgp-peer my-router \ --peer-name my-bgp-session \ --enable-ipv6 \ --add-advertisement-ranges='2001:db8:abcd:12::/64'
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.
- Send a - GETrequest to get the current array of BGP peers for the router. For details, see View BGP session configuration.
- Send a - PATCHrequest 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.- The only valid value is - ALL_SUBNETS, which advertises subnets based on the VPC network's dynamic routing mode (similar to default advertisement mode).- For more information about these values, see - routers.patchin 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, "enableIpv6": true, "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" }, { "range": "2001:db8:abcd:12::/64", "description: "Third 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": "Fourth example range" } ] }
- Add any IP address range advertisements that you want in
the 
What's next
- To view the configuration of a Cloud Router, its BGP sessions, and the routes that Cloud Router is advertising, see View Cloud Router details. 
- To troubleshoot issues with custom advertised routes, see Troubleshooting.