Global Anycast IP Addresses¶
Equinix Metal™ Global Anycast IPs are public IPv4 addresses that are pulled from Equinix Metal-owned IP space and that can announced from many of Equinix Metal's facilities.
Global Anycast IPs can be assigned as elastic IPs to, or announced via Local BGP from, a single server in each facility that supports it. If the IP is not routed to or announced from any server in any facility, the IP will be unreachable.
Equinix Metal allows you to reserve the following subnet sizes.
Global Anycast Subnet Size | Usable IP Addresses |
---|---|
/32 | 1 IPv4 address |
/31 | 2 IPv4 addresses |
/30 | 4 IPv4 addresses |
Global Anycast IP addresses are billed on a usage basis at a fixed rate per IP per hour. Bandwidth is billed at the standard outbound rate and an inbound rate per GB. All rates are available on our Pricing page.
Requesting Global Anycast IP Addresses¶
In your Project's Networking section, open the IPs page.
Your project's current IP Addresses should be listed. To request Global Anycast IP Addresses, click + Add New.
From the Request IP Addresses slide out, choose Global IPv4 and the Quantity (size) of the reserved subnet. There are also fields for Tags and a Description for your use. The Custom JSON field is for custom data that you want to be included in your server's metadata.
Use the Comments field for contacting support with any information that is relevant to your request. Be aware, if you are planning to request multiple subnets, or multiple large subnets, there are quotas in place at the project-level. Support may reach out with questions about your request.
To request a Global Anycast IP address, use the metal ip request
command and specify the --type
as global_ipv4
.
metal ip request --project-id <project_id> --type global_ipv4 --quantity <int>
To request additional IP addresses in the API, send a POST
request to the /projects/{id}/ips
endpoint.
curl -X POST \
-H 'Content-Type: application/json' \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/ips" \
-d '{
"type": "global_ipv4",
"quantity": 4,
"fail_on_approval_required": "false"
}'
Body Parameters
"type"
(required) - To request a Global Anycast IP address, use"global_ipv4"
."quantity"
(required) - The quantity parameter should be the number of IPs in the subnet. Valid values are1
,2
, and4
for Global Anycast IP addresses."fail_on_approval_required"
(optional) - If you submit a request that exceeds the maximum number of IP addresses available to your project, you can automatically have the request fail with HTTP status 422 instead of triggering the review process by providing thefail_on_approval_required
parameter set totrue
in the request.
A full listing of body parameter fields and options is available in the API reference.
Managing Global Anycast IP Addresses¶
Your Project's IPs page contains a list of all the Management, Reserved, and Global Anycast subnets and IPs.
In the CLI, all the Management, Reserved, and Global Anycast subnets and IP address information for a Project is available from the metal ip get
command.
`metal ip get -p <project-uuid>`
The response contains a reservation UUID. (The example response is truncated.)
+--------------------------------------+------------------------+-------+----------+--------+----------------------+
| ID | ADDRESS | METRO | FACILITY | PUBLIC | CREATED |
+--------------------------------------+------------------------+-------+----------+--------+----------------------+
| 804c4112-c00a-486c-9c54-0918dd1894b2 | 147.... | | | true | 2022-09-21T13:14:55Z |
| 96061018-048b-4e10-b5e8-2eed66e64118 | 198.51.100.3 | sv | | true | 2022-08-24T19:01:35Z |
| 85ec1740-01f9-4557-90da-489475a71951 | 2604:1380:.... | | sv16 | true | 2021-09-20T16:43:12Z |
| e766496d-3393-4dc4-beab-3b785d42363e | 10.67.0.122 | sv | sv15 | false | 2022-11-29T20:17:21Z |
+--------------------------------------+------------------------+-------+----------+--------+----------------------+
To get a list of the Management, Reserved, and Global Anycast subnets and IPs in your Project, send a GET
request to the /projects/{id}/ips
endpoint.
curl -X GET \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/ips"
The response contains a reservation ID in the "id
" field. (The example response is truncated.)
{
"ip_addresses": [
{
"id": "804c4112-c00a-486c-9c54-0918dd1894b2",
"address_family": 4,
"netmask": "255.255.255.254",
"created_at": "2022-09-21T13:14:55Z",
"public": true,
"cidr": 31,
"management": false,
"manageable": true,
"enabled": true,
"global_ip": true,
"assignments": [],
"network": "147....",
"address": "147....",
"gateway": "147....",
"type": "global_ipv4"
....
},
....
]
}
Announcing Your IP Address¶
Once you have been allocated your Global Anycast IPv4 address block, you have two options: to assign your new IP Addresses to a server statically, as Elastic IPs, or by announcing them with BGP.
If you choose to bind Global Anycast IPs statically as an Elastic IP, you can bind individual addresses to a single device in each facility that supports it. If you attempt to bind the same Elastic IP to more than one device in the same facility, however, you will get an error.
If you choose to announce your Global Anycast IPs with BGP, you will need to set up and configure Local BGP. BGP does not have a limitation on assigning an IP to more than one device, so we recommend using BGP for HA applications.
Global Anycast IP Status¶
To see the status of your Global Anycast IP block, navigate to your Project's IPs page and open the Actions menu of the IP reservation you would like to manage. Click Update Block.
A grey circle indicates that an IP in the block is not assigned in the facility or being announced via BGP. A green circle indicates it an IP in the block is assigned or being announced in that facility. If you do not announce or bind a Global Anycast IP in one facility, we will backhaul that traffic to the next closest facility where the IP is assigned or announced. This incurs cost, which is why there is a charge for inbound transfer.
To check available subnets and IP addresses in your Global Anycast IP block, use the metal ip available
command. The --reservation-id
can be obtained from the metal ip get -p <project-uuid>
command.
metal ip available --reservation-id <reservation_UUID> --cidr <size_of_subnet>
You can check the status of subnets and IP addresses in each of your project's Management, Reserved, and Global Anycast subnets by sending a GET
request to the /ips/{id}
endpoint. The reservation UUID of the subnet or IP address goes in the path.
curl -X GET \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/ips/{id}"
The response includes the reservation ID of the IP address block in the "assignments"
object. (The example response is truncated.)
{
"ip_addresses": [
{
"id": "804c4112-c00a-486c-9c54-0918dd1894b2",
"address_family": 4,
"netmask": "255.255.255.254",
"global_ip": true,
"assignments": [
{
"href": "/metal/v1/ips/4cc7f67b-522e-4b6c-82a5-3b2505cf326a"
}
],
....
"type": "global_ipv4"
},
....
]
}
Deleting a Global Anycast IP Reservation¶
Deleting a reservation removes the subnet from your project. You will no longer be able to use the IP addresses for your servers.
To delete a reservation, navigate to your Project's IPs page and select the Global Anycast IP block. Click Delete.
To remove a Global Anycast IP reservation, use the metal ip remove
command.
metal ip remove --id <reservation-id>
To delete an IP reservation through the API, send a DELETE
request to the /ips/{id}
endpoint. The id
is the UUID of the reservation.
curl -X DELETE \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/ips/{id}"