虚拟路由和转发
Equinix Metal™ 虚拟路由和转发 (VRF) 为Metal Gateway 第 2 层专用网络和远程目的地之间的第 3 层网络连接提供了虚拟路由器。
要创建和配置虚拟路由和转发,您需要三个组件:
- 虚拟路由器
- VRF 的保留 IP 地址(#creating-a-vrf-ip-address-reservation)
- VRF 的 Metal Gateway
限制条件
在创建 VRF 之前,请考虑以下限制:
- 每个项目最多有 8 个 VRF。
- 每个 VRF 最多只能有一个
/64IPv6 IP 预留。
准备您的 VRF
在创建 VRF 之前,请先了解您计划使用的子网以及它们的使用方式。这些信息非常重要,因为您需要在创建 VRF 时指定 IP 地址范围。
在允许的 IP 地址范围 (ip_ranges) 中,包含以下内容:
-
您的Metal Gateway 以及连接到Metal Gateway 的服务器将使用的子网。必须定义 VRF 的 IP 地址范围,以创建 VRF IP 地址预留,然后使用这些预留来创建 VRF 的Metal Gateway。
-
您将使用子网作为 VRF 与连接远端之间的对等信息。有关更多信息,请参阅将 VRF 与互连一起使用。
创建虚拟路由器
- Console
- API
要创建 VRF,请打开项目“网络”部分中的“虚拟路由和转发”页面。单击“创建虚拟路由器”。

在“创建虚拟路由器”窗格中,输入路由器的名称和可选的描述。选择服务器、VLAN、Metal Gateway 和此 VRF 所在的 Metro。所有这些组件都必须位于同一个 Metro 中。
在“允许的 IP 地址范围”字段中,输入 CIDR 网络地址列表。IPv4 地址块的大小必须介于 /8 和 /29 之间。IPv6 地址块的大小必须介于 /59 和 /64 之间。您还可以选择指定本地 ASN。

点击创建虚拟路由器。
要创建 VRF,请向 /projects/{id}/vrfs 端点发送 POST 请求。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/vrfs" \
-d '{
"name": "<string>",
"description": "<string>",
"metro": "<metro_slug>",
"ip_ranges": [
"<cidr_address>"
],
"local_asn": <integer>
}'
身体参数:
"name"(required) - An easy to remember name for your VRF."description"- An optional description of the VRF."metro"(required) - The UUID or metro code for the Metro in which to create the VRF."ip_ranges"(required) - A list of CIDR network addresses. The IPv4 address blocks must be between/8and/29in size. An IPv6 address block must be between/59and/64in size. Examples: ["10.0.0.0/16","2001:d78::/59"]."local_asn"- Specify the Local ASN of the VRF as a 32-bit integer.
在响应中,请务必记下 VRF 的 ID——您将需要它来创建特定于 VRF 的 IP 地址预留。
创建 VRF IP 地址预留
接下来,专门为您的 VRF 创建一个 IP 地址保留,并将其分配给您的 Metal 网关。该子网必须位于您在创建 VRF 时在“允许的 IP 地址范围 (ip_ranges)”中指定的地址块内。
- Console
- API
点击要为其预留 IP 地址的 VRF。在“概览”选项卡中,点击“添加 IP 预留”。

在面板中,以 CIDR 表示法输入子网。IPv4 子网的最大大小为 /22,最小大小为 /29。IPv6 子网的唯一大小为 /64。

IP地址预留的Metro是根据关联的VRF推断出来的。点击提交请求。
因此,您将获得与您的 VRF 位于同一 Metro 中的保留 IP 地址子网,可供 VRF 的Metal Gateway 使用。
向 /projects/{id}/ips 端点发送 POST 请求。
curl -X POST \
-H 'Content-Type: application/json' \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/ips" \
-d '{
"cidr": <integer>,
"network": "<ip_address>",
"type": "vrf",
"vrf_id": "<UUID>"
}'
身体参数:
"cidr"(required) - The size of the VRF IP Reservation's subnet, expressed as an integer. IPv4 subnets have a maximum size of 22 and a minimum size of 29. An IPv6 subnet must be size 64."network"(required) - The starting IP address for this VRF IP Reservation's subnet."type"(required) - The type of IP address reservation. Must be set to"vrf"."vrf_id"(required) - The ID of the VRF in which this VRF IP Reservation is created. The VRF must have an existing IP Range that contains the requested subnet. This field may be aliased as just"vrf".
完整的 body 参数字段和选项列表可在 API 参考 中找到。
IP 地址预留的 Metro 是根据关联的 VRF 推断出来的。因此,您将获得一个与您的 VRF 位于同一 Metro 的预留 IP 地址子网,可供 VRF 的Metal Gateway 使用。对您的请求的响应将包含 IP 地址预留的 ID。您需要该 ID 来创建Metal Gateway。
创建 VRFMetal网关
注意:如果您尚未创建 VLAN,则需要在与 VRF 相同的城域网中创建一个 VLAN。此 VLAN 提供 VRF 的Metal网关与服务器之间的二层网络。
- Console
- API
在与 VRF 相同的 Metro 中创建 Metal Gateway,选择用于连接网关和服务器的 VLAN。

在“IP地址块”部分,选择“VRF IP”。单击下拉菜单选择要与此金属网关关联的VRF和VRF IP地址预留。单击“创建网关”。
因此,您将在与 VRF 相同的 Metro 中获得一个Metal Gateway,它使用 VRF IP 地址预留中的 IP 地址,您可以将这些地址分配给连接到Metal Gateway 的 VLAN 的服务器。
现在您已经拥有了网络 IP 地址块,请使用 IP 地址预留 ID 和金属网关的 VLAN ID 创建 VRF 的金属网关。向 /projects/{project_id}/metal-gateways 端点发送 POST 请求。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/metal-gateways" \
-d '{
"ip_reservation_id": "<UUID>",
"virtual_network_id": "<UUID>"
}'
身体参数:
"ip_reservation_id"(required) - The ID of a VRF IP Reservation that is in the same Project and Metro as the VRF, that will be used by the Metal Gateway."virtual_network_id"(required) - The ID of a VLAN in the same Project and Metro as the VRF, which will be used by the Metal Gateway
Metal Gateway 的 Metro 和 VRF 是在创建过程中根据 IP 预留和 VLAN 指定的值推断出来的。因此,您将获得一个与 VRF 位于同一 Metro 的Metal Gateway,它使用 VRF IP 地址预留中的 IP 地址,您可以将这些 IP 地址分配给连接到Metal Gateway VLAN 的服务器。
连接到您的 VRF
要将您的 VRF 和Metal网络连接到外部对等网络,您还需要配置以下内容之一:
-
- 例如,使用 Metal-billed Fabric VC 将您的 VRF 连接到云服务提供商。
- 或者使用 Fabric-billed Fabric VC 将您的 VRF 连接到网络边缘设备。
-
或者在新的或现有的专用端口上创建一个新的虚拟电路。
管理 VRF
- Console
- API
VRF 配置完成后,您可以在项目的“网络”部分的“虚拟路由和转发”页面上查看它们。

点击 VRF 查看其_概述_。

要更新 VRF,请点击编辑虚拟路由器详细信息。

在窗格中,您可以更新 名称 和 描述 字段。
如果 VRF 当前未使用,您也可以更新 ASN。如果存在与 VRF 关联的活动虚拟电路,或者 VRF 的Metal Gateway 的任何 VLAN 已连接到服务器,则无法更新 ASN。

要列出项目中的所有 VRF,请向 /projects/{id}/vrfs 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/projects/{id}/vrfs
要列出 VRF 的 IP 预留块,请向 /vrfs/{id}/ips 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/vrfs/{id}/ips
要获取 VRF 中特定 IP 预留块的详细信息,请向 vrfs/{vrf_id}/ips/{id} 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/vrfs/{vrf_id}/ips/{id}
要更新 VRF,请向 /vrfs/{id} 端点发送 PUT 请求,并在请求正文中列出要更新的字段。所有字段均为可选字段,因此可以单独更新。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/vrfs/{id}" \
-d '{
"name": "<string>",
"description": "<string>",
"ip_ranges": [
"<cidr_address>"
],
"local_asn": <integer>,
"tags": [
"<string>"
]
}'
值得注意的身体参数:
"local_asn"- The ASN can not be updated if there are active Virtual Circuits associated with the VRF, or if any of the VLANs of the VRF's Metal Gateway are attached to servers."ip_ranges"- Use this to add and remove Allowed IP Ranges. Warning: If you do not want to add or remove Allowed IP Ranges either include the full existing list of CIDR addresses in the update request, or do not include the"ip_ranges"field in the update request. Specifying a value of[]will remove all existing IP Ranges from the VRF.
BGP 表
一旦流量开始流动且路由已启动,您就可以监控 VRF 的 BGP 邻居和已学习路由。BGP 表会显示 VRF 中存在的所有路由。
注意:在监控之前,您必须设置并启用所有网络配置。所有服务器必须连接到Metal Gateway 的 VLAN,并且Metal Gateway 必须显示“活动”状态。
- Console
- API
_BGP 邻居表显示 VRF 的 BGP 邻居的对等信息和状态。
Learned Routes 表显示有关 VRF 已学习的所有路由的信息,这些路由是通过 BGP 和网络中的其他路由器构建的。

要检索 VRF 的 BGP 邻居的对等信息和状态,请向 /vrfs/{id}/bgp-neighbors 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' \
https://api.equinix.com/metal/v1/vrfs/{id}/bgp-neighbors
要检索 VRF 学习到的所有路由,请向 /vrfs/{id}/learned-routes 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' \
https://api.equinix.com/metal/v1/vrfs/{id}/learned-routes
向您的 VRF 添加更多 IP 地址空间
如果需要,您可以在配置 VRF 后将 IP 地址空间添加到 VRF 中。
注意:如果您未使用“允许的 IP 范围”中分配的所有初始 IP 地址空间,则可以使用该 IP 范围创建其他 IP 地址预留和网关。如果现有 IP 范围中仍有空间,则无需创建新的“允许的 IP 范围”。
添加更多允许的 IP 范围
- Console
- API
在当前允许的 IP 地址范围列表中,单击编辑虚拟路由器详细信息。

在“允许的 IP 地址范围”部分,单击“添加新 IP 地址范围”,然后在字段中输入新的 CIDR 网络地址。IPv4 地址块的大小必须介于 /8 和 /29 之间。IPv6 地址块的大小必须介于 /59 和 /64 之间,并且每个 VRF 只允许一个 IPv6 地址块。单击“添加新 IP 地址范围”可添加多个 IP 地址范围。

点击更新虚拟路由器。
要在 API 中向 VRF 添加允许的 IP 地址范围,请向 /vrfs/{id} 端点发送 PUT 请求。将新的允许的 IP 地址范围指定为 CIDR 网络地址列表。IPv4 地址块的大小必须介于 /8 和 /29 之间。IPv6 地址块的大小必须介于 /59 和 /64 之间,并且每个 VRF 只允许一个 IPv6 地址块。
注意:请确保在更新请求中包含完整的现有 IP 范围列表。向列表中添加新的 CIDR 地址会为此 VRF 创建一个新的允许 IP 范围。从列表中删除现有 CIDR 地址将导致此 VRF 的现有允许 IP 范围被删除。删除 IP 范围将导致该 IP 范围内包含的所有 VRF IP 预留以及与该 VRF IP 预留关联的Metal网关或虚拟电路也被删除。
curl -X PUT \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/vrfs/{id}" \
-d '{
"ip_ranges": [
"<cidr_address>"
]
}'
添加 IP 地址预留
- Console
- API
在 VRF 的“概览”部分的“IP 地址预留”中,您可以点击“添加 IP 地址预留”,并在“IP 子网”字段中填写 CIDR 表示法的子网。您请求的子网必须位于与您的 VRF 关联的 ip_ranges 地址块中。点击“提交请求”。

要向 VRF 添加 IP 地址保留,请向 /projects/{id}/ips 端点发送 aa POST 请求。您请求的子网必须位于与您的 VRF 关联的 ip_ranges 块中。
curl -X POST \
-H 'Content-Type: application/json' \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/ips" \
-d '{
"cidr": <integer>,
"network": "<ip_address>",
"type": "vrf",
"vrf_id": "<UUID>"
}'
身体参数:
"cidr"(required) - The size of the VRF IP Reservation's subnet, expressed as an integer. IPv4 subnets have a maximum size of 22 and a minimum size of 29. An IPv6 subnet must be size 64."network"(required) - The starting IP address for this VRF IP Reservation's subnet."type"(required) - The type of IP address reservation. Must be set to"vrf"."vrf_id"(required) - The ID of the VRF in which this VRF IP Reservation is created. The VRF must have an existing IP Range that contains the requested subnet. This field may be aliased as just"vrf".
创建额外的Metal网关
预留 IP 地址后,您可以使用它们为虚拟路由器创建额外的Metal网关。具体步骤与您为 VRF 创建的初始Metal网关相同。
- Console
- API
在与您的 VRF 相同的 Metro 中创建一个Metal网关。选择用于连接网关和服务器的 VLAN。

在“IP 块”部分,选择“VRF IP”。单击下拉菜单选择要与此 Metal 网关关联的 VRF 和 VRF IP 地址预留。注意:如果“选择 VRF IP 预留”下拉菜单不可用,则表示没有与该 VRF 关联的可用 IP 地址预留。您需要为该网关创建至少一个新的 IP 地址预留。
选择好 VRF 和 IP 地址预留后,点击创建网关。
现在,您将获得一个与您的 VRF 位于同一城域网 (Metro) 的Metal网关。该Metal网关使用 VRF 预留 IP 地址中的 IP 地址,允许您将这些 IP 地址分配给连接到Metal网关 VLAN 的服务器。
向 /projects/{project_id}/metal-gateways 端点发送 POST 请求。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/metal-gateways" \
-d '{
"ip_reservation_id": "<UUID>",
"virtual_network_id": "<UUID>"
}'
身体参数:
"ip_reservation_id"(required) - The ID of a VRF IP Reservation that is in the same Project and Metro as the VRF, that will be used by the Metal Gateway."virtual_network_id"(required) - The ID of a VLAN in the same Project and Metro as the VRF, which will be used by the Metal Gateway
Metal Gateway 的 Metro 和 VRF 是在创建过程中通过 IP 预留和 VLAN 指定的推断出来的。
Metal Gateway 的城域网 (Metro) 和 VRF 是根据 IP 预留和 VLAN 推断出来的。因此,您将获得一个与 VRF 位于同一城域网的Metal Gateway,该网关使用 VRF IP 地址预留中的 IP 地址,您可以将这些 IP 地址分配给连接到Metal Gateway VLAN 的服务器。
删除网关、IP 地址预留和 IP 范围
您可以从 VRF 中移除 IP 地址空间和网关。 注意:您无法删除网关使用的 IP 地址保留,也无法删除包含 IP 地址保留的允许 IP 范围。
首先,删除 Metal 网关。您可以随时删除网关。但请谨慎操作,因为这会中断所有通过该网关和您的 VRF 路由的流量。
然后您可以删除IP地址保留。
- Console
- API
要删除 IP 地址保留,请单击要删除的 IP 地址旁边的垃圾桶图标。

如果垃圾桶图标不可用,则表示 IP 地址仍与网关相关联,无法修改或删除。
要移除 IP 地址预留,请向 /ips/{id} 端点发送 DELETE 请求。id 是预留的 UUID。
curl -X DELETE -H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/ips/{id}"
一旦删除了Metal网关和允许的 IP 范围内的所有 IP 地址预留,您就可以删除允许的 IP 范围。
- Console
- API
在当前允许的 IP 地址范围列表中,点击编辑虚拟路由器详细信息。在“允许的 IP 地址范围”部分,点击要删除的 IP 地址范围旁边的垃圾桶图标。

如果垃圾桶图标不可用,则表示 IP 范围仍然具有与其关联的 IP 地址预留,并且无法修改或删除。
点击更新虚拟路由器。
要在 API 中移除 VRF 的允许 IP 地址范围,请向 /vrfs/{id} 端点发送 PUT 请求。修改 ip_ranges 列表,使其不包含要移除的地址。在 CIDR 地址列表中,添加您希望在发出请求后保留的地址。
注意:请务必在更新请求中包含您希望保留的完整 IP 范围列表。从列表中删除现有 CIDR 地址将导致删除此 VRF 的现有允许 IP 范围。删除 IP 范围将导致删除该 IP 范围内包含的所有 VRF IP 预留,以及该 VRF IP 预留关联的Metal网关或虚拟电路。
curl -X PUT \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/vrfs/{id}" \
-d '{
"ip_ranges": [
"<cidr_address>"
]
}'
删除 VRF
删除 VRF 是永久性的。一旦删除,您将无法恢复此 VRF。
删除后,所有相关数据都将从此 VRF 中移除,包括删除与 VRF 相关的任何 VRF IP 预留,以及 VRF 相关的Metal网关和虚拟电路。
- Console
- API
在 VRF 的“概览”选项卡中,单击“删除虚拟路由器”。

您还可以通过选择一个或多个 VRF,然后单击删除,从列表中删除它们。

向 /vrfs/{id} 端点发送 DELETE 请求,并在请求路径中按 ID 指定 VRF。
curl -X DELETE -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/vrfs/{id}