Equinix Metal上的 VLAN
Equinix Metal™ 提供二层虚拟网络,用于连接您的服务器和其他基础设施。以下是一些关于我们 VLAN 的信息:
- 所有大都市均提供 VLAN。
- VLAN 是项目级基础设施。
- 向项目添加 VLAN 无需额外费用。
- 每个项目初始限制为 5 个 VLAN,并非所有 VLAN 都必须位于同一个城域网 (Metro) 中。如需增加此限制,请联系 support@equinixmetal.com。
- VLAN 是城域网 (Metro) 的本地 VLAN。您无法将服务器连接到城域网 (Metro) 之外的 VLAN。
- VLAN 支持最多 9000 字节的最大传输单元 (MTU) 和巨型以太网帧。
- Equinix Metal 网络和 VLAN 支持堆叠在外部
TPID 0x8100标记帧内的 VLAN 标记流量。通过 专用端口的隧道模式,对这些堆叠的TPID 0x8100帧的支持扩展到了更广泛的 Equinix 互连。
在设计网络时,您还需要注意一些特定的限制。如果您遇到这些限制,请联系客服或您的客户经理。
-
二层控制协议 - Equinix Metal 的二层或 VLAN 功能不支持从 Equinix Metal 实例向更广泛的网络(包括其他 Equinix Metal 主机)传输二层控制协议 (L2CP)。此类流量(例如 LACP、Pause、生成树协议等)将被直接连接到 Equinix Metal 实例的交换机丢弃,即使 Equinix Metal 实例已正确配置二层和 VLAN 连接也是如此。此行为是出于保护 Equinix Metal 网络本身的考虑而设计的。
-
组播流量 - 虽然 Equinix Metal 允许组播流量跨越已配置的二层网络和 VLAN,但在高吞吐量下可能会遇到性能限制。如果您预计组播流量将达到每秒数千兆比特,请联系技术支持或销售部门。此外,Equinix Metal 不支持 Internet 组管理协议 (IGMP) 或 IGMP 侦听类别的组播流量。
-
QinQ,
TPID 0x88a8- 虽然 Equinix Metal 支持堆叠 VLAN 标记TPID 0x8100,但它并不正式支持 QinQ,TPID 0x88a8网络模式。 -
媒体访问控制安全 (MACsec) - Equinix Metal 不支持通过其 2 层网络和 VLAN 扩展 MACsec 配置。
创建 VLAN
- Console
- CLI
- API
您可以在项目的“二层 VLAN”页面上管理 VLAN。要配置 VLAN,请单击“+ 添加 VLAN”。

- 唯一必填字段是“位置”。请从下拉菜单中选择 VLAN 将要所在的城域网。
- 您可以在 Description 字段中为您的 VLAN 提供友好、人性化的描述。
- 可选的 VNID 字段可以填写 2 到 3999 之间的整数,用作 VLAN ID。如果省略此字段,则 VLAN ID 将由城域网自动递增分配,起始值为 1000。
点击“添加”按钮即可配置 VLAN。配置完成后,新 VLAN 将显示在“二层”页面上。将服务器连接到该 VLAN 时,将使用此处显示的 VLAN ID。
要在 CLI 中创建 VLAN,请使用 metal virtual-network create 命令。
metal virtual-network create -p <project_id> -m <metro_code> -vxlan <vlan>
选项:
-p(required) - Your Project ID.-m(required) - The metro where you are creating the VLAN.--vxlan(optional) - Specify an integer between 2 and 3999 to serve as the VLAN ID. If omitted, the VLAN ID is auto-assigned incrementally by metro, starting at 1000.--description(optional) - A field for a friendly description of the VLAN.
要创建 VLAN,请向 /projects/{id}/virtual-networks 端点发送 POST 请求。在路径中指定 VLAN 的项目 ID。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/virtual-networks" \
-d '{
"vxlan": <integer>,
"description": "<string>",
"metro": "<string>"
}'
身体参数:
"metro"(required) - The two-letter metro code for where the VLAN is located."vxlan"(optional) - An integer between 2 and 3999 to serve as the VLAN ID. If omitted, the VLAN ID is auto-assigned incrementally by metro, starting at 1000."description"(optional) - A friendly, human description of the VLAN, if desired.
使用您的VLAN
拥有 VLAN 后,您可以配置项目中的任何服务器以连接到该 VLAN。您为每台服务器选择的网络模式可能因用例、位置和高可用性要求而异。
不同网络模式的概述请参见第 2 层网络概述页面。
有关如何转换为不同的网络模式以及如何配置服务器以连接到 VLAN 的详细信息和说明位于每个模式的页面上。
为端口分配 VLAN
仅当更改服务器上的网络模式后,您才可以将 VLAN 连接到端口,因此每个网络模式页面上都包含有关如何执行此操作的文档。
通常,您可以通过 Equinix Metal 控制台中服务器的 Network 页面、CLI 中的 metal port 命令,或者通过向 API 中的 /ports/{id}/assign 端点发送 POST 来分配 VLAN。
管理 VLAN
- Console
- CLI
- API
您可以在项目的 Layer 2 VLAN 页面上管理 VLAN。项目中的每个 VLAN 都列出了其 ID、描述、位置、连接数以及 删除 选项。

如果 VLAN 正在使用中,您可以在“设备”列中看到有多少设备连接到该 VLAN,单击该数字将显示这些设备的列表。
要列出项目中的所有 VLAN,请使用 metal virtual-network get 命令。
metal virtual-network get -p <project_id>
要列出项目中的 VLAN,请向 /projects/{id}/virtual-networks 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/projects/{id}/virtual-networks
要获取特定 VLAN 的详细信息,请向 /virtual-networks/{id} 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/virtual-networks/{id}
如果 VLAN 正在使用中,则 GET 请求的响应在 "instances" 字段中包含 VLAN 连接的设备列表。
查看 VLAN 端口分配
- Console
- CLI
- API
从服务器的“网络”选项卡中,您可以查看服务器连接到了哪些 VLAN。

在“第 2 层”部分,您可以查看 VLAN 分配给了哪些端口。

您可以使用 metal port get 命令查看分配给端口的 VLAN,并使用 --output 命令指定获取 JSON 响应。
metal port get --port-id <port_id> --output json
要检索分配给端口的 VLAN 列表,请向 /ports/{id}/vlan-assignments/ 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/ports/{id}/vlan-assignments/
要检索单个 VLAN 分配的详细信息,请向 /ports/{id}/vlan-assignments/{id} 端点发送 GET 请求。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/ports/{id}/vlan-assignments/{id}
批量 VLAN 操作
Equinix Metal通过异步批量请求流程支持批量 VLAN 分配和取消分配操作。
- Console
- CLI
- API
要为端口分配多个 VLAN,请导航至服务器的“网络”选项卡,在“第 2 层”部分。单击“添加新 VLAN”后,您可以选择多个 VLAN 添加到端口。

如果要将多个 VLAN 分配给一个端口,则需要在 metal port vlan 命令中指定每个 VLAN。
metal port vlan --port-id <bond0_id> --assign <vlan> --assign <vlan>
如果要删除多个 VLAN,请指定要删除的每个 VLAN。
metal port vlan --port-id <bond0_id> --unassign <vlan> --unassign <vlan>
要批量分配或取消分配 VLAN 到端口,请向 /ports/{id}/vlan-assignments/batches 端点发送 POST 请求,并在请求正文中提供 VLAN 分配(或取消分配)数组。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN> " \
"https://api.equinix.com/metal/v1/ports/{id}/vlan-assignments/batches" \
-d '{
"vlan_assignments": [
{
"vlan": "string",
"state": "string"
},
{
"vlan": "string",
"state": "string"
},
]
}'
要为端口分配 VLAN,请将 "state" 参数设置为 "assigned"。要从端口取消分配 VLAN,请将 "state" 参数设置为 "unassigned"。您可以在同一请求中分配一组 VLAN 并取消分配另一组 VLAN。
由于该过程是异步批处理,因此可能不会立即完成。要检查 VLAN 分配批次的详细信息状态,请向 /ports/{id}/vlan-assignments/batches/{id} 端点发送 GET 请求。响应将返回批次中每个分配或取消分配的状态。状态包括“已排队”、“进行中”、“已完成”和“失败”。
如果您已向某个端口发出多个批量请求,则可以通过向 /ports/{id}/vlan-assignments/batches 端点发送 GET 请求来检索该特定端口的 VLAN 分配批次列表。
从端口删除 VLAN
- Console
- CLI
- API
您可以在服务器的“网络”选项卡中的“第 2 层”部分,从端口中移除 VLAN。选择 VLAN,然后单击“移除”。

注意,无论是从端口中移除 VLAN,还是单击“删除”进行确认,都不会删除 VLAN,只会将其从端口中移除。
在 CLI 中,使用 metal port vlan 命令从端口中删除 VLAN。
metal ports vlan --port-id <bond0_id> --unassign <vlan>
如果要删除多个 VLAN,请指定要删除的每个 VLAN。
metal port vlan --port-id <bond0_id> --unassign <vlan> --unassign <vlan>
在 API 中,您可以通过向 /ports/{id}/unassign 端点发送 POST 来从端口中删除 VLAN。
您必须在路径中指定 VLAN 将要附加到的端口 ID,并且它必须是 /devices/{id} 端点返回的该端口的 UUID。
VLAN 的 ID 在请求正文中发送,它可以是 /projects/{id}/virtual-networks 端点返回的 VLAN 的 UUID,也可以是控制台中的 vxlan ID。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN> " \
"https://api.equinix.com/metal/v1/ports/{id}/assign" \
-d '{
"vnid": "c4032b18-5494-451b-a779-a7d3c536bfd7"
}'
也可以批量取消端口的 VLAN 分配,作为异步批处理的一部分。向 /ports/{id}/vlan-assignments/batches 端点发送 POST 请求,并在请求正文中附上 VLAN 分配数组。
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN> " \
"https://api.equinix.com/metal/v1/ports/{id}/vlan-assignments/batches" \
-d '{
"vlan_assignments": [
{
"vlan": "string",
"state": "unassigned"
},
{
"vlan": "string",
"state": "unassigned"
},
]
}'
VLAN 可以通过 VLAN 的 UUID 或控制台中显示的 VLAN ID 来识别。由于您要从端口取消分配 VLAN,因此 "state" 字段应为“未分配”。
删除 VLAN
- Console
- CLI
- API
打开“二层VLAN”页面。选择要删除的VLAN,然后单击“删除”。如果要确认删除多个VLAN,请选择每个要删除的VLAN,然后单击“删除”。

要删除 VLAN,请使用 metal virtual-network delete 命令。
metal virtual-network delete --id <vlan_id>
要删除 VLAN,请向 /virtual-networks/{id} 端点发送 DELETE 请求。
curl -X DELETE -H 'X-Auth-Token: <API_TOKEN>' https://api.equinix.com/metal/v1/virtual-networks/{id}
请注意,您无法删除已连接设备的 VLAN。请先卸载所有设备,否则将返回错误。
基于设施的 VLAN
在 2021 年 4 月推出 Metro 之前,VLAN 是在设施级别配置的,并且只能连接单个设施内的服务器。在 Metro 之前配置的 VLAN 将继续以这种方式运行;它们将继续按原样工作。
但是,基于设施的 VLAN 和基于城域的 VLAN 不兼容。
首先,在同一个项目中可以同时拥有设施 VLAN 和城域 VLAN,但如果您有一个设施 VLAN 1001,则不能创建城域 VLAN 1001。同样,如果您有一个城域 VLAN 1002,则不会有设施 VLAN 1002。
其次,无法将现有的设施级 VLAN 扩展为 Metro VLAN。您需要配置一个全新的 Metro 感知 VLAN,并重新配置服务器以使用它。