辅助网络
辅助网络是专为特殊网络使用案例构建的虚拟网络。这些网络在 Amazon 云的各个分区内在逻辑上相互隔离。您可以在辅助网络中创建辅助子网之类的资源。辅助网络与 Amazon VPC 紧密关联,因此特定的实例会被设置为多网段连接,并同时部署在 VPC 和辅助网络中。
辅助网络目前可用于特定实例类型,并且需要通过长期承诺的容量预留方式来使用。如果您认为使用辅助网络可能对您的工作负载有所帮助,请联系您的客户团队获取更多信息。
什么是辅助网络?
辅助网络提供了一个与 VPC 网络结合使用的逻辑隔离网络,因此实例能够同时接入两个独立的网络。辅助网络的优势包括:
-
适用于特定使用案例和协议(如用于机器学习工作负载的东西向连接)的高性能网络解决方案
-
具有逻辑隔离功能的多租户支持
-
实例与 VPC 和 Amazon 服务无缝集成
重要概念
- 辅助网络
-
一种区域网络构造,它提供逻辑第 3 层网络,并采用 IPv4 CIDR 数据块(范围从 /28 到 /12)。辅助网络在物理分隔的网络基础设施上独立于 VPC 运行。
- 辅助子网
-
辅助网络中特定于某个可用区的构造,类似于 VPC 子网。辅助子网支持范围从 /28 到 /12 的 CIDR 数据块。
- 辅助接口
-
连接到辅助网卡的网络接口,用于在辅助子网内实现东西向连接。这些接口在物理和逻辑上与弹性网络接口(ENI)互相分隔。
架构
支持辅助网络的 EC2 实例是多网段的,这意味着它们能够同时在 VPC 和辅助网络之间进行通信:
-
VPC:提供与 Amazon 服务、存储、数据库、网络服务和互联网的南北向 TCP/IP 连接
-
辅助网络:在支持的专用实例之间提供东西向连接
其他注意事项
-
辅助接口通过 RunInstances 进行管理,它们不能单独创建或删除。
-
实例启动后,辅助接口便无法再进行连接或分离。
-
辅助接口 IP 地址一旦启动便无法更改。
-
辅助网络不支持安全组、NACL、流日志等 VPC 功能。
开始使用
先决条件
在使用辅助网络启动实例之前,请确保您已在目标区域内配置您的 VPC,并在 EC2 容量的目标可用区中配置子网。
步骤 1:创建辅助网络
创建与 VPC 在同一区域的辅助网络。这是一种区域性资源,能够为您的 RDMA 流量提供逻辑隔离。
aws ec2 create-secondary-network \ --type rdma \ --ipv4-cidr-block 172.31.0.0/16 \ --region us-east-2
参数:
-
--type;网络类型(目前仅支持 rdma) -
--ipv4-cidr-block:介于 /28 和 /12 之间的 IPv4 CIDR 数据块 -
--region:Amazon 区域(US-East-2)
注意
最佳实践:选择与您的 VPC CIDR 不重叠的 CIDR 数据块,以便在实例层面简化路由操作。
步骤 2:创建辅助子网
在与您的 VPC 子网相同的可用区中创建辅助子网。这是特定于可用区的资源。
aws ec2 create-secondary-subnet \ --secondary-network-id sn-1234567890abcdef0 \ --ipv4-cidr-block 172.31.24.0/24 \ --availability-zone us-east-2a
注意
IP 地址预留:与 VPC 子网一样,Amazon 为每个辅助子网预留了前 4 个 IP 地址和最后一个 IP 地址,供内部使用。
步骤 3:启动实例
在您的 VPC 子网和辅助子网中同时启动实例。该实例将具有多网连接功能,能够与两个网络实现连接。
aws ec2 run-instances \ --image-id ami-12345678 \ --count 1 \ --instance-type <instance> \ --key-name MyKeyPair \ --instance-market-options '{"MarketType": "capacity-block"}' \ --capacity-reservation-specification '{"CapacityReservationTarget": \ {"CapacityReservationId": "cr-1234567890abcdef0"}}' \ --network-interfaces \ "NetworkCardIndex=0,DeviceIndex=0,Groups=sg-12345678,\ SubnetId=subnet-0987654321fedcba0,InterfaceType=interface" \ --secondary-interfaces \ "NetworkCardIndex=1,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \ "NetworkCardIndex=2,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \ "NetworkCardIndex=3,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \ "NetworkCardIndex=4,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \ "NetworkCardIndex=5,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \ "NetworkCardIndex=6,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \ "NetworkCardIndex=7,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \ "NetworkCardIndex=8,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\ InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true"
关键参数:
-
--network-interfaces:指定用于 VPC 连接的主 Nitro ENI(网卡索引 0) -
--secondary-interfaces:为辅助子网内的东西向连接指定 8 个辅助接口(网卡索引 1-8) -
InterfaceType=secondary:表示辅助接口
管理辅助网络资源
描述辅助网络
查看有关辅助网络的详细信息:
aws ec2 describe-secondary-networks \ --secondary-network-id sn-1234567890abcdef0
描述辅助子网
查看有关辅助子网的详细信息:
aws ec2 describe-secondary-subnets \ --secondary-subnet-id ss-98765421yxz
描述辅助接口
查看有关连接到您的实例的辅助网络接口的详细信息:
aws ec2 describe-secondary-interfaces \ --filters "Name=attachment.instance-id,Values=i-1234567890abcdef0"
删除资源
删除辅助子网:
aws ec2 delete-secondary-subnet \ --secondary-subnet-id ss-98765421yxz
删除辅助网络:
aws ec2 delete-secondary-network \ --secondary-network-id sn-1234567890abcdef0
重要
在删除辅助网络之前,您必须先终止所有实例并删除所有辅助子网。
网络设计最佳实践
CIDR 规划
避免 CIDR 重叠:尽管从物理层面上讲,辅助网络与 VPC 是相互隔离的,但使用不重叠的 CIDR 数据块可以简化实例操作系统层面的路由配置。
注意
Amazon 为每个子网预留 5 个 IP 地址。
流量分割
按辅助网络分割:为不同的项目、团队或安全边界创建单独的辅助网络。辅助网络实现了不同实例之间的逻辑隔离。实例无法在不同辅助网络之间进行通信。
使用多个子网:在辅助网络中,使用多个辅助子网按 GPU 索引、可用区或工作负载类型分割流量。例如,一种常见的架构模式是部署单个辅助网络,该网络包含 4 个或 8 个辅助子网,其中每个辅助子网都与一组具有相同索引的 GPU 相对应。
问题排查
实例启动失败
问题:使用辅助网络接口启动实例失败。
解决方案
-
验证您的 AMI 是否包含适当的驱动程序支持
-
确保您的辅助子网有足够的可用 IP 地址
-
确认您的容量预留处于“活动”状态
-
检查您的辅助子网是否与您的 VPC 子网位于相同的可用区中。
连接问题
问题:无法在各实例之间建立 RDMA 连接。
解决方案
-
确认所有实例都处于同一个辅助网络和辅助子网中
-
检查实例上是否正确加载了辅助接口驱动程序
-
确保您的应用程序绑定到正确的网络接口
-
同一辅助子网内的实例可通过直接路由进行访问。跨子网通信可通过由 DHCP 分配的静态路由实现。
API 错误
问题:辅助网络和辅助子网操作的 API 调用失败。
解决方案
-
请确认 ec2:CreateSecondaryNetwork、ec2:CreateSecondarySubnet 等的 IAM 权限
-
检查 CIDR 数据块是否在支持的范围内(/28 到 /12)
-
确认您在使用正确的区域和可用区
限额和限制
要申请提高配额,您可以使用 Amazon 服务配额或联系 Amazon Support。
| 资源 | 限制 | 可调整 |
|---|---|---|
| 每个区域的辅助网络数 | 5 | 是 |
| 每个辅助网络的辅助子网数 | 200 | 是 |
| CIDR 数据块大小 | /28 至 /12 | 否 |