보조 네트워크(Secondary Network)

보조 네트워크(Secondary Network)

보조 네트워크는 특수 네트워킹 사용 사례를 위해 전용으로 구축된 가상 네트워크예요. 이 네트워크는 AWS 클라우드의 파티션 내에서 논리적으로 격리되어 있습니다. 보조 네트워크 안에 보조 서브넷 같은 리소스를 만들 수 있어요. 보조 네트워크는 Amazon VPC와 밀접하게 결합되어 있어서, 일부 인스턴스는 멀티 호밍(multi-homed)되어 VPC와 보조 네트워크 양쪽에 동시에 시작됩니다.

보조 네트워크는 현재 일부 인스턴스 유형에서 사용할 수 있으며, 장기 약정이 있는 용량 예약(capacity reservations)을 통해 제공됩니다. 보조 네트워크가 워크로드에 도움이 될 것 같다면 계정 팀에 문의하세요.

출처: 문서

보조 네트워크란?

보조 네트워크는 VPC 네트워크와 함께 사용되는 논리적으로 격리된 네트워크로, 인스턴스가 두 개의 독립적인 네트워크에 멀티 호밍됩니다. 보조 네트워크의 장점은 다음과 같아요.

  • ML 워크로드의 동서(east-west) 연결 같은 특수 사용 사례와 프로토콜을 위한 고성능 네트워킹
  • 논리적 격리를 통한 멀티 테넌트(multi-tenant) 지원
  • 인스턴스가 VPC 및 AWS 서비스와 원활하게 통합

주요 개념

보조 네트워크(Secondary Network) — IPv4 CIDR 블록(/28 ~ /12 범위)을 제공하는 논리적 Layer 3 네트워크를 제공하는 리전 단위 네트워킹 개념이에요. 보조 네트워크는 물리적으로 분할된 네트워크 인프라 위에서 VPC와 독립적으로 동작합니다.

보조 서브넷(Secondary Subnet) — 보조 네트워크 안의 가용 영역(Availability Zone)별 개념으로, VPC 서브넷과 비슷해요. 보조 서브넷은 /28 ~ /12 범위의 CIDR 블록을 지원합니다.

보조 인터페이스(Secondary Interface) — 보조 네트워크 카드에 연결되는 네트워크 인터페이스로, 보조 서브넷 내에서 동서 연결을 제공합니다. 이 인터페이스는 탄력적 네트워크 인터페이스(ENI, Elastic Network Interface)와 물리적·논리적으로 분리되어 있어요.

아키텍처

보조 네트워크를 지원하는 EC2 인스턴스는 멀티 호밍되어 VPC와 보조 네트워크 양쪽에서 동시에 통신할 수 있습니다.

  • VPC — AWS 서비스, 스토리지, 데이터베이스, 네트워킹 서비스, 인터넷에 대한 남북(north-south) TCP/IP 연결 제공
  • 보조 네트워크 — 지원되는 특수 인스턴스 간의 동서 연결 제공

추가 고려 사항

  • 보조 인터페이스는 RunInstances를 통해 관리되며, 독립적으로 생성하거나 삭제할 수 없어요.
  • 보조 인터페이스는 인스턴스 시작 후에 연결하거나 분리할 수 없습니다.
  • 보조 인터페이스의 IP 주소는 시작 후에 변경할 수 없어요.
  • 보안 그룹(Security Groups), NACL, Flow Logs 같은 VPC 기능은 보조 네트워크에서 지원되지 않습니다.

시작하기

사전 요구 사항

보조 네트워크로 인스턴스를 시작하기 전에 대상 리전에 VPC를, EC2 용량의 대상 가용 영역에 서브넷을 구성했는지 확인하세요.

1단계: 보조 네트워크 생성

VPC와 같은 리전에 보조 네트워크를 만드세요. 이는 RDMA 트래픽에 논리적 격리를 제공하는 리전 단위 리소스입니다.

aws ec2 create-secondary-network \
  --network-type rdma \
  --ipv4-cidr-block 172.31.0.0/16 \
  --region us-east-2

파라미터:

  • --network-type — 네트워크 유형(현재는 rdma만 지원)
  • --ipv4-cidr-block — /28 ~ /12 사이의 IPv4 CIDR 블록
  • --region — AWS 리전(예: US-East-2)

권장 사항 — VPC CIDR과 겹치지 않는 CIDR 블록을 선택해 인스턴스 수준에서 라우팅을 단순화하세요.

2단계: 보조 서브넷 생성

VPC 서브넷과 같은 가용 영역에 보조 서브넷을 만드세요. 이는 AZ별 리소스입니다.

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 주소가 충분한지 확인
  • 용량 예약이 "active" 상태인지 확인
  • 보조 서브넷이 VPC 서브넷과 같은 가용 영역에 있는지 확인

연결 문제

문제 — 인스턴스 간 RDMA 연결을 설정할 수 없음.

해결 방법:

  • 모든 인스턴스가 같은 보조 네트워크와 보조 서브넷에 있는지 확인
  • 인스턴스에서 보조 인터페이스 드라이버가 제대로 로드되었는지 확인
  • 애플리케이션이 올바른 네트워크 인터페이스에 바인딩하는지 확인

같은 보조 서브넷 안의 인스턴스는 직접 라우트로 도달할 수 있어요. 서브넷 간 통신은 DHCP를 통해 제공되는 정적 라우트로 가능합니다.

API 오류

문제 — 보조 네트워크 및 보조 서브넷 작업의 API 호출 실패.

해결 방법:

  • ec2:CreateSecondaryNetwork, ec2:CreateSecondarySubnet에 대한 IAM 권한 확인
  • CIDR 블록이 지원 범위(/28 ~ /12) 내인지 확인
  • 올바른 리전과 가용 영역을 사용 중인지 확인

할당량 및 제한

할당량 증가를 요청하려면 AWS Service Quotas를 사용하거나 AWS Support에 문의하세요.

리소스 할당량 조정 가능
리전당 보조 네트워크 5 예
보조 네트워크당 보조 서브넷 200 예
CIDR 블록 크기 /28 ~ /12 아니요

더 알아보기