

# セカンダリネットワーク
<a name="secondary-networks"></a>

セカンダリネットワークは、特殊なネットワークユースケース専用の仮想ネットワークです。これらのネットワークは、AWS クラウドのパーティション内で論理的に分離されています。セカンダリネットワーク内には、セカンダリサブネットなどのリソースを作成できます。セカンダリネットワークは Amazon VPC と密接に結合されています。このため、一部のインスタンスはマルチホーム化されており、VPC とセカンダリネットワークの両方で起動されます。

現在、セカンダリネットワークは一部のインスタンスタイプで、コミットメントが長期的なキャパシティ予約を通じて利用できます。セカンダリネットワークがワークロードに役立つとお考えの場合は、担当のアカウントチームにお問い合わせください。

**Topics**
+ [

## セカンダリネットワークとは
](#secondary-networks-overview)
+ [

## 主要なコンセプト
](#secondary-networks-concepts)
+ [

## アーキテクチャ
](#secondary-networks-architecture)
+ [

## その他の考慮事項
](#secondary-networks-considerations)
+ [

## 開始方法
](#secondary-networks-getting-started)
+ [

## セカンダリネットワークリソースの管理
](#secondary-networks-managing-resources)
+ [

## ネットワーク設計のベストプラクティス
](#secondary-networks-best-practices)
+ [

## トラブルシューティング
](#secondary-networks-troubleshooting)
+ [

## クォータと制限
](#secondary-networks-quotas-limits)

## セカンダリネットワークとは
<a name="secondary-networks-overview"></a>

分離された論理ネットワークを提供するセカンダリネットワークは VPC ネットワークと組み合わせて使用されるため、インスタンスが 2 つの独立したネットワークにマルチホーム化されます。セカンダリネットワークのメリットには以下が含まれます。
+ ML ワークロードの East-West 接続などの特殊なユースケースやプロトコル向けの高性能ネットワーキング
+ 論理的分離によるマルチテナントサポート
+ VPC および AWS サービスとのシームレスなインスタンス統合

## 主要なコンセプト
<a name="secondary-networks-concepts"></a>

セカンダリネットワーク  
IPv4 CIDR ブロック (/28～/12) に基づく論理レイヤー 3 ネットワークを提供する地域的なネットワーキングコンストラクト。セカンダリネットワークは、物理的にパーティション化されたネットワークインフラストラクチャ上で VPC とは別個に動作します。

セカンダリサブネット  
セカンダリネットワーク内にあるアベイラビリティーゾーン固有のコンストラクトで、VPC サブネットに類似しています。セカンダリサブネットは、/28 から /12 までの CIDR ブロックをサポートします。

セカンダリインターフェイス  
セカンダリネットワークカードにアタッチされたネットワークインターフェイスで、セカンダリサブネット内で East-West 接続を提供します。これらのインターフェイスは、Elastic Network Interface (ENI) から物理的かつ論理的に分離されています。

## アーキテクチャ
<a name="secondary-networks-architecture"></a>

セカンダリネットワークをサポートする EC2 インスタンスはマルチホーム化されます。これは、インスタンスが VPC 内とセカンダリネットワーク内の両方で同時に通信できることを意味します。
+ **VPC**: AWS サービス、ストレージ、データベース、ネットワークサービス、インターネットに対する North-South TCP/IP 接続を提供
+ **セカンダリネットワーク**: サポートされている特殊なインスタンス間の East-West 接続を提供

## その他の考慮事項
<a name="secondary-networks-considerations"></a>
+ セカンダリインターフェイスは RunInstances 経由で管理されており、個別に作成または削除することはできません。
+ インスタンスの起動後にセカンダリインターフェイスをアタッチ/デタッチすることはできません。
+ 起動後にセカンダリインターフェイスの IP アドレスを変更することはできません。
+ セカンダリネットワークでは、セキュリティグループ、NACL、フローログなどの VPC 機能がサポートされていません。

## 開始方法
<a name="secondary-networks-getting-started"></a>

### 前提条件
<a name="secondary-networks-prerequisites"></a>

セカンダリネットワークを使用するインスタンスを起動する前に、対象リージョン内に VPC が設定されており、EC2 キャパシティの対象アベイラビリティーゾーン内にサブネットが設定されていることも確認してください。

### ステップ 1: セカンダリネットワークを作成する
<a name="secondary-networks-create-network"></a>

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: セカンダリサブネットを作成する
<a name="secondary-networks-create-subnet"></a>

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: インスタンスを起動する
<a name="secondary-networks-launch-instance"></a>

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`: セカンダリサブネット内の East-West 接続用の 8 個のセカンダリインターフェイスを指定します (ネットワークカードインデックス 1～8)
+ `InterfaceType=secondary`: セカンダリインターフェイスを示すものです

## セカンダリネットワークリソースの管理
<a name="secondary-networks-managing-resources"></a>

### セカンダリネットワークの記述
<a name="secondary-networks-describe-networks"></a>

セカンダリネットワークの詳細を確認します。

```
aws ec2 describe-secondary-networks \
  --secondary-network-id sn-1234567890abcdef0
```

### セカンダリサブネットの記述
<a name="secondary-networks-describe-subnets"></a>

セカンダリサブネットの詳細を確認します。

```
aws ec2 describe-secondary-subnets \
  --secondary-subnet-id ss-98765421yxz
```

### セカンダリインターフェイスの記述
<a name="secondary-networks-describe-interfaces"></a>

インスタンスにアタッチされたセカンダリネットワークインターフェイスの詳細を確認します。

```
aws ec2 describe-secondary-interfaces \
  --filters "Name=attachment.instance-id,Values=i-1234567890abcdef0"
```

### リソースの削除
<a name="secondary-networks-deleting-resources"></a>

セカンダリサブネットを削除します。

```
aws ec2 delete-secondary-subnet \
  --secondary-subnet-id ss-98765421yxz
```

セカンダリネットワークを削除します。

```
aws ec2 delete-secondary-network \
  --secondary-network-id sn-1234567890abcdef0
```

**重要**  
セカンダリネットワークを削除する前に、すべてのインスタンスを終了し、すべてのセカンダリサブネットを削除しておく必要があります。

## ネットワーク設計のベストプラクティス
<a name="secondary-networks-best-practices"></a>

### CIDR 計画
<a name="secondary-networks-cidr-planning"></a>

**CIDR の重複を避ける**: セカンダリネットワークは VPC から物理的に分離されていますが、重複しない CIDR ブロックを使用することで、インスタンスのオペレーティングシステムレベルでのルーティング設定を簡素化できます。

**注記**  
Amazon は、サブネットごとに 5 つの IP アドレスを予約します。

### トラフィックの分離
<a name="secondary-networks-traffic-segregation"></a>

**セカンダリネットワークを使用して分離する**: 異なるプロジェクト、チーム、またはセキュリティ境界ごとに個別のセカンダリネットワークを作成します。セカンダリネットワークは、インスタンス間を論理的に分離します。インスタンスが異なるセカンダリネットワーク間で通信することはできません。

**複数のサブネットを使用する**: セカンダリネットワーク内で複数のセカンダリサブネットを使用して、GPU インデックス、アベイラビリティーゾーン、またはワークロードタイプ別にトラフィックをセグメント化します。例えば、一般的なアーキテクチャパターンは、4 個または 8 個のセカンダリサブネットを持つ単一のセカンダリネットワークをデプロイすることです。この場合、各セカンダリサブネットは共通のインデックスを持つ GPU のグループに紐付けられます。

## トラブルシューティング
<a name="secondary-networks-troubleshooting"></a>

### インスタンス起動の失敗
<a name="secondary-networks-launch-failures"></a>

**問題**: セカンダリネットワークインターフェイスを使用するインスタンスの起動が失敗する。

**解決方法:**
+ AMI に適切なドライバーサポートが含まれていることを確認する
+ セカンダリサブネットに使用可能な IP アドレスが十分に設定されていることを確認する
+ キャパシティ予約が「アクティブ」状態であることを確認する
+ セカンダリサブネットが VPC サブネットと同じアベイラビリティーゾーン内にあることを確認する

### 接続の問題
<a name="secondary-networks-connectivity-issues"></a>

**問題**: インスタンス間の RDMA 接続を確立できない。

**解決方法:**
+ すべてのインスタンスが同一のセカンダリネットワークとセカンダリサブネット内にあることを確認する
+ セカンダリインターフェイスのドライバーがインスタンスに適切にロードされていることを確認する
+ アプリケーションが正しいネットワークインターフェイスにバインドされていることを確認する
+ 同一のセカンダリサブネット内にあるインスタンスにダイレクトルート経由でアクセスできる。DHCP 経由で提供される静的ルートを通じてサブネット間通信を実行できる。

### API エラー
<a name="secondary-networks-api-errors"></a>

**問題: **セカンダリネットワークおよびセカンダリサブネットオペレーションに対する API コールが失敗する。

**解決方法:**
+ ec2:CreateSecondaryNetwork、ec2:CreateSecondarySubnet などに対する IAM 許可を確認する
+ CIDR ブロックがサポートされている範囲内 (/28～/12) であることを確認する
+ 正しいリージョンとアベイラビリティーゾーンを使用していることを確認する

## クォータと制限
<a name="secondary-networks-quotas-limits"></a>

クォータの引き上げをリクエストするには、AWS Service Quotas を使用するか、AWS サポートにお問い合わせください。


**セカンダリネットワークのクォータと制限**  

| リソース | 制限 | 引き上げ可能 | 
| --- | --- | --- | 
| リージョンあたりのセカンダリネットワーク数 | 5 | はい | 
| セカンダリネットワークあたりのセカンダリサブネット数 | 200 | はい | 
| CIDR ブロックサイズ | /28～/12 | いいえ | 