EC2 Networking ・ ANS-C01 / SAP-C02 対応

EC2 ネットワークパフォーマンス
最適化 完全ガイド

Enhanced Networking(SR-IOV)・EFA・インスタンスサイジングで
単一インスタンスのネットワーク性能を最大化する方法

🛣️ このガイドのたとえ話:「高速道路と車線の最適化」
EC2のネットワーク最適化は、道路交通の改善に似ています。
通常のネットワーク処理は「信号だらけの一般道」を走るようなもの。Enhanced Networkingは「信号を全撤去した高速道路」を敷設すること。そしてインスタンスサイズの増加は「車線を増やして同時通行量を上げる」ことに相当します。

📌 最初に押さえる4つのポイント

1 Enhanced NetworkingはSR-IOVでハイパーバイザーを迂回し、CPUオーバーヘッドを削減。追加料金なしで有効化できる
2 ENA(最大100Gbps)とIntel 82599 VF(最大10Gbps)の2方式があり、現世代はほぼ全てENA対応
3 EFAはHPC/ML向けの超低レイテンシ通信デバイスで、OS バイパスによりノード間通信を高速化
4 帯域幅はインスタンスサイズに比例。16 vCPU以下はバースト制、「n」シリーズで最大100〜200Gbps

🛣️ たとえ話マッピング

EC2のネットワーク最適化を「高速道路システム」にたとえて整理します。

AWS概念 高速道路のたとえ 効果
従来のVM ネットワーク 🚦信号だらけの一般道 CPUが毎パケットを仲介→遅い
Enhanced Networking(SR-IOV) 🛣️信号撤去の高速道路 ハイパーバイザー迂回→低レイテンシ
ENA(Elastic Network Adapter) 🏎️最新式スマート高速道路 最大100Gbps、Nitro連携
Intel 82599 VF 🚗旧型の高速道路 最大10Gbps、旧世代インスタンス用
EFA(Elastic Fabric Adapter) 🚄専用新幹線(超高速直通線) HPC/ML向け超低レイテンシ通信
インスタンスサイズ増加 🛤️車線数を2→4→8車線に拡張 vCPU比例で帯域幅増加
「n」シリーズ(C5n, M5n等) 🏗️車線幅を拡げた特設ハイウェイ 同サイズで最大4倍の帯域幅
Placement Group(クラスター) 🏘️隣同士の家を直結する私道 低レイテンシ、単一フロー最大10Gbps

🔧 Enhanced Networking の仕組み

SR-IOV技術によりハイパーバイザーをバイパスし、NICに直接アクセスすることで、CPUオーバーヘッドを大幅に削減します。

❌ 従来のネットワーク処理 🖥️ VMインスタンス アプリケーション 📋 仮想NIC(vNIC) ソフトウェアエミュレーション ⚙️ ハイパーバイザー 毎パケットCPU処理が発生 CPU負荷 大 🔌 物理NIC ネットワークカード 🌐 ネットワーク 🐌 低速 ✅ Enhanced Networking(SR-IOV) 🖥️ VMインスタンス アプリケーション ⚡ VF(Virtual Function) NICの仮想的な分身 ⚙️ ハイパーバイザー 制御プレーンのみ 直接アクセス! CPU負荷 小 🔌 物理NIC(SR-IOV) ハードウェアで分割管理 🌐 ネットワーク 🚀 高速

図1: 従来のネットワーク処理(左)vs Enhanced Networking / SR-IOV(右)の比較

SR-IOV(Single Root I/O Virtualization)とは?

SR-IOVは、1つの物理NICを複数の仮想NIC(Virtual Function = VF)に分割するハードウェア技術です。各VMがVFに直接アクセスできるため、ハイパーバイザーを経由する必要がなくなり、パケット処理のCPUオーバーヘッドが大幅に削減されます。

🛣️ たとえ話で理解する 従来のネットワーク処理は「料金所で毎回止まる有料道路」のようなもの。SR-IOVは「ETCレーンで直接通過」に相当します。車(パケット)は止まらず、料金所の係員(CPU)の手を煩わせません。

2つのEnhanced Networking方式

🏎️

ENA(Elastic Network Adapter)

AWS独自の次世代ネットワークアダプタ。最大100Gbpsの帯域幅をサポートし、すべてのNitroベースインスタンスに標準搭載。C5、M5、R5など現世代の主力インスタンスで利用可能。

🚗

Intel 82599 VF インターフェイス

旧世代の拡張ネットワーキング。最大10Gbpsをサポート。C3、C4、D2、I2、M4(m4.16xlarge除く)、R3で使用。新規設計では基本的にENA対応インスタンスを選択すべき。

パフォーマンス比較

従来のvNIC
低速
Intel 82599 VF
最大 10Gbps
ENA
最大 100Gbps
EFA(HPC向け)
最大 200Gbps + 超低レイテンシ
💰 料金について Enhanced Networkingは追加料金なしで利用できます。対応インスタンスであれば、ENAドライバーがインストールされたAMIを使用するだけで自動的に有効になります。

🚄 EFA(Elastic Fabric Adapter)

HPC・機械学習ワークロード向けの特殊ネットワークデバイス。OS バイパスでノード間の超低レイテンシ通信を実現します。

🚄 たとえ話で理解する EFAは「専用新幹線」のようなもの。一般の高速道路(Enhanced Networking)でも十分に速いですが、新幹線は専用軌道(OS バイパス)を走るため、途中の交差点も信号もなし。他の車両と干渉せず、確実に超高速で目的地に到着します。
EFA の仕組み:OS バイパスによるノード間超高速通信 🖥️ HPCインスタンス A MPI / NCCL アプリ HPC / ML ワークロード Libfabric API OS カーネル(バイパス) ⚡ EFA デバイス ハードウェアレベル通信 OS バイパス 🖥️ HPCインスタンス B MPI / NCCL アプリ HPC / ML ワークロード Libfabric API OS カーネル(バイパス) ⚡ EFA デバイス ハードウェアレベル通信 OS バイパス 超低レイテンシ通信 SRD / RDMA-like

図2: EFA アーキテクチャ - OS バイパスにより、アプリケーションがカーネルを経由せずにEFAデバイスへ直接アクセス

EFA の主な特徴

🔗

OS バイパス

Libfabric APIを通じて、アプリがOS カーネルを経由せずに直接ネットワークハードウェアにアクセス。レイテンシを大幅削減。

📡

MPI / NCCL 対応

Message Passing Interface(MPI)とNVIDIA Collective Communications Library(NCCL)に対応。既存HPCアプリをそのまま利用可能。

🎯

対応インスタンス

C5n.18xlarge、C6i、P4d、P5、Trn1、Hpc6aなどの大規模インスタンスでサポート。C7gnでは最大200Gbps。

📐 インスタンスサイジングとネットワーク帯域幅

EC2のネットワーク帯域幅はインスタンスサイズ(vCPU数)に比例して増加します。「車線を増やす」ことで同時通行量が上がるのと同じ原理です。

🛤️ たとえ話で理解する インスタンスサイズは「高速道路の車線数」に相当します。small = 2車線、xlarge = 4車線、4xlarge = 8車線。車線が多いほど、同時に多くの車(パケット)が通行できます。さらに「n」シリーズは各車線が通常より広い「特設ハイウェイ」です。

C5 ファミリー:サイズ別ネットワーク帯域幅

インスタンスタイプ vCPU メモリ (GiB) NW 帯域幅 帯域幅タイプ たとえ
c5.large 2 4 最大 10 Gbps バースト 🛣️ 2車線
c5.xlarge 4 8 最大 10 Gbps バースト 🛣️ 4車線
c5.2xlarge 8 16 最大 10 Gbps バースト 🛣️ 8車線
c5.4xlarge 16 32 最大 10 Gbps バースト 🛣️ 16車線
c5.9xlarge 36 72 10 Gbps ベースライン 🛣️ 36車線(安定)
c5.12xlarge 48 96 12 Gbps 専用帯域 🛣️ 48車線
c5.18xlarge 72 144 25 Gbps 専用帯域 🛣️🛣️ 大規模高速
c5.24xlarge / metal 96 192 25 Gbps 専用帯域 🛣️🛣️ 最大規模

ネットワーク I/O クレジット(バースト制)

16 vCPU以下のインスタンス(4xlarge以下)は、「最大 ○Gbps」とバースト制が適用されます。常時その帯域幅を使えるわけではなく、ネットワーク I/O クレジットの残量に依存します。

ネットワーク I/O クレジットの仕組み(16vCPU以下) 10 Gbps ベースライン 0 ベースライン帯域幅 バースト上限 クレジット 蓄積中 バースト消費 バースト消費 時間 → 実際のトラフィック ベースライン バースト上限

図3: ネットワーク I/O クレジットの仕組み - ベースライン以下でクレジットを蓄積し、需要増加時にバースト利用

⚠️ バーストの注意点 バースト帯域幅はベストエフォートで提供され、クレジットがあっても保証されません。安定した高帯域幅が必要な場合は、「Up to」表記のない大きなインスタンスサイズ(9xlarge以上)を選択してください。

ネットワーク最適化「n」シリーズ

C5n、M5n、R5nなどの「n」サフィックス付きインスタンスは、通常版に比べてネットワーク帯域幅が大幅に強化されています。

📊

C5n.18xlarge

帯域幅: 100 Gbps(通常C5は最大25Gbps)。EFA対応。HPCやネットワークアプライアンス向け。vCPU: 72、メモリ: 192 GiB。

🚀

C7gn(最新世代)

帯域幅: 最大200Gbps。Graviton3Eプロセッサ搭載。従来のx86系NW最適化インスタンスの3倍のパケット処理性能。

🌐 トラフィック宛先と帯域幅の関係

EC2のネットワーク帯域幅は、トラフィックの宛先によって実際に使える量が異なります。

トラフィック宛先別:利用可能な帯域幅 🖥️ EC2インスタンス 例: m5.16xlarge (64vCPU / 20Gbps) ネットワーク帯域幅: 20Gbps 🏠 同一リージョン内 VPC内、VPCピアリング等 ✅ 100%(20Gbps) 🌍 他リージョン / IGW インターネットGW経由 ⚠️ 50%(10Gbps) 📡 単一フロー(5タプル) 同一接続の帯域幅上限 ❌ 上限 5Gbps 💡 帯域幅ルール • 32vCPU以上 → 50%制限 • 32vCPU未満 → 5Gbps上限 • 単一フロー → 常に5Gbps 🏘️ Placement Group クラスター配置なら 単一フロー最大10Gbps

図4: トラフィック宛先別の帯域幅制限 - 同一リージョン内ではフル帯域幅、IGW経由は50%制限

💻 確認・設定コマンド例

Enhanced Networkingの確認方法やインスタンスの帯域幅情報の取得コマンドです。

# ENA対応確認(インスタンスのENAサポート状態)
aws ec2 describe-instances \
  --instance-ids i-1234567890abcdef0 \
  --query "Reservations[].Instances[].EnaSupport"

# インスタンスタイプ別のネットワーク帯域幅を確認
aws ec2 describe-instance-types \
  --filters "Name=instance-type,Values=c5.*" \
  --query "InstanceTypes[].[InstanceType, \
    NetworkInfo.NetworkPerformance, \
    NetworkInfo.NetworkCards[0].BaselineBandwidthInGbps]" \
  --output table

# EFA対応インスタンスタイプの一覧
aws ec2 describe-instance-types \
  --filters "Name=network-info.efa-supported,Values=true" \
  --query "InstanceTypes[].InstanceType" \
  --output table

# 帯域幅重み付け設定(第8世代以降)
aws ec2 modify-instance-network-performance-options \
  --instance-id i-1234567890abcdef0 \
  --bandwidth-weighting=vpc-1
# Enhanced Networking対応インスタンス起動
AWSTemplateFormatVersion: "2010-09-09"
Resources:
  HPCInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: c5n.18xlarge
      ImageId: ami-xxxxxxxxxxxxxxxxx
      # ENA対応AMIを使用(Amazon Linux 2以降は標準対応)
      NetworkInterfaces:
        - DeviceIndex: 0
          SubnetId: !Ref PrivateSubnet
          GroupSet:
            - !Ref SecurityGroup
          InterfaceType: efa
          # ↑ EFAを有効にするにはInterfaceTypeをefaに設定
      Placement:
        GroupName: !Ref ClusterPlacementGroup

  ClusterPlacementGroup:
    Type: AWS::EC2::PlacementGroup
    Properties:
      Strategy: cluster
# Enhanced Networking + EFA 対応インスタンス
resource "aws_placement_group" "hpc" {
  name     = "hpc-cluster"
  strategy = "cluster"
}

resource "aws_instance" "hpc_node" {
  ami           = "ami-xxxxxxxxxxxxxxxxx"
  instance_type = "c5n.18xlarge"

  placement_group = aws_placement_group.hpc.name

  network_interface {
    device_index         = 0
    network_interface_id = aws_network_interface.efa.id
  }
}

resource "aws_network_interface" "efa" {
  subnet_id       = aws_subnet.private.id
  security_groups = [aws_security_group.hpc.id]

  # EFA有効化
  interface_type = "efa"
}

✅ ベストプラクティス vs アンチパターン

EC2ネットワーク性能を最大限に活用するための推奨事項と避けるべき構成。

✅ ベストプラクティス

現世代のNitroベースインスタンス(C5以降)を選択し、ENA対応を確認する
安定した高帯域幅が必要なら、9xlarge以上のバーストなしサイズを使用
低レイテンシが必要な場合はクラスターPlacement Groupにインスタンスを配置
HPC/MLワークロードではEFA対応インスタンスを選択し、Cluster配置
ネットワーク集約型ワークロードには「n」シリーズ(C5n, M5n)を採用
CloudWatch ENAドライバーメトリクスでネットワーク超過を監視

❌ アンチパターン

旧世代インスタンス(C3, M3等)でネットワーク性能を期待する
小さなインスタンスで「最大10Gbps」を常時利用可能と想定する
単一フロー(1接続)で5Gbps超の帯域幅を期待する
ENA非対応のAMI(古いカーネル)でENA対応インスタンスを起動する
異なるAZのインスタンス間で低レイテンシ通信を期待する
ネットワーク帯域幅のベースラインとバーストの違いを意識しない

🔍 トラブルシューティング

EC2ネットワーク性能に関する一般的な問題と解決方法。

Enhanced Networkingが有効か確認したい

aws ec2 describe-instances でEnaSupport=trueを確認。インスタンス内で ethtool -i eth0 を実行し、driver: ena と表示されればENA有効。

🔧

期待するネットワーク帯域幅が出ない

CloudWatch の NetworkIn/NetworkOut メトリクスを確認。ENAドライバーの bw_in_allowance_exceeded カウンタが増加していれば帯域幅制限に達しています。より大きなインスタンスサイズに変更するか、トラフィックを分散してください。

🔧

パケットロスが発生する

ENAメトリクスの linklocal_allowance_exceeded(DNS/メタデータ等の制限超過)や pps_allowance_exceeded(パケット数制限)を確認。Jumbo Frame(MTU 9001)の利用も検討してください。

🔧

EFAが有効にならない

EFA対応のインスタンスタイプか確認。セキュリティグループのインバウンドルールで自身のSGからの全トラフィックを許可する必要があります。EFAドライバーのインストールも確認してください。

🎯 試験対策ポイント(ANS-C01 / SAP-C02)

AWS認定試験で問われるEC2ネットワーク性能のポイントを整理します。

📝

ANS-C01 頻出ポイント

Enhanced Networking = SR-IOV の関連付け。ENA vs Intel 82599 VFの違い。Placement GroupとSingle Flow 5Gbps制限。EFAの用途(HPC/ML)と対応インスタンス。IGW経由の50%帯域幅制限。

📝

SAP-C02 頻出ポイント

ネットワーク最適化の選択肢としてのインスタンスサイジング。n系インスタンス(C5n, M5n等)の活用場面。コスト最適化とのバランス。バースト vs ベースラインの理解。

🎯 頻出シナリオ問題パターン 「HPCワークロードでノード間の低レイテンシ通信が必要」→ EFA + Cluster Placement Group。 「ネットワーク帯域幅を安定的に確保したい」→ バーストなしの大きなインスタンス or n系インスタンス。 「CPUオーバーヘッドを削減しながらネットワーク性能を向上させたい」→ Enhanced Networking(SR-IOV / ENA)。 「単一フローで5Gbps以上必要」→ Cluster Placement Group(最大10Gbps)。

❓ よくある質問(FAQ)

いいえ、Enhanced Networkingは追加料金なしで利用できます。対応インスタンスタイプとENA対応AMIを使用するだけで自動的に有効化されます。現世代のNitroベースインスタンスでは標準でENAが有効です。
ENA(Elastic Network Adapter)は一般的なネットワーク性能向上を目的としたデバイスで、すべてのNitroインスタンスで利用可能です。EFA(Elastic Fabric Adapter)はHPC・ML向けの特殊なネットワークデバイスで、OSバイパス機能によりMPI/NCCL通信を超低レイテンシで実現します。EFAは特定の大規模インスタンスでのみサポートされ、ENA機能も含みます。
「最大10Gbps(Up to 10 Gbps)」はバースト帯域幅を意味し、ネットワークI/Oクレジットがある場合のみ到達可能です。クレジットを使い切るとベースライン帯域幅に戻ります。一方「10Gbps」と明記されている場合は、常時その帯域幅を安定して利用できるベースライン帯域幅です。
必ずではありません。Cluster Placement Groupは低レイテンシ・高帯域幅が必要な場合(HPC、リアルタイム分析等)に有効です。ただし、単一AZに制限されるため可用性のトレードオフがあります。一般的なWebアプリケーションではSpread/Partition Placement Groupや、通常の配置で十分な場合が多いです。
2024年12月に一般提供が開始された機能で、第8世代Gravitonベースインスタンスにおいて、VPCとEBSの帯域幅配分を最大25%調整できます。例えば、VPC帯域幅を増やす(vpc-1)とEBS帯域幅が減少し、その逆も可能です。ストレージやネットワーク集約型ワークロードで帯域幅をより柔軟に活用できます。

📋 チートシート

Enhanced Networking
SR-IOVでハイパーバイザーを迂回。追加料金なし。ENA(最大100Gbps)とIntel 82599 VF(最大10Gbps)の2方式
EFA
HPC/ML向け。OSバイパスで超低レイテンシ。MPI/NCCL対応。特定の大規模インスタンスのみ。最大200Gbps(C7gn)
帯域幅ルール
同一リージョン=100%利用可。IGW/他リージョン=50%(32vCPU以上)or 5Gbps(32vCPU未満)。単一フロー=5Gbps上限
バースト制
16vCPU以下は「Up to」表記。ネットワークI/Oクレジット制。安定帯域幅が必要なら9xlarge以上を選択
n系インスタンス
C5n/M5n/R5n: ネットワーク帯域幅を大幅強化。C5n.18xlarge=100Gbps。C7gn=最大200Gbps
Placement Group
Cluster配置: 低レイテンシ・高帯域幅。単一フロー最大10Gbps。HPC/MLではEFAと併用推奨
IBC(第8世代)
VPC↔EBS帯域幅を最大25%調整可能。vpc-1/ebs-1で設定。追加コストなし
監視
CloudWatch + ENAドライバーメトリクス。bw_in_allowance_exceeded / pps_allowance_exceeded でボトルネック検出

📖 用語集

SR-IOV(Single Root I/O Virtualization)
物理デバイスを複数の仮想デバイスに分割し、VMが直接アクセスできるようにするハードウェア仮想化技術
ENA(Elastic Network Adapter)
AWS独自のネットワークアダプタ。Nitroインスタンスで標準搭載。最大100Gbps対応
EFA(Elastic Fabric Adapter)
HPC/ML向けネットワークデバイス。OSバイパスで超低レイテンシなノード間通信を実現
VF(Virtual Function)
SR-IOVで作成される仮想的なNIC。VMがハイパーバイザーを介さず直接利用できる
Nitro System
AWSの次世代仮想化基盤。専用ハードウェアと軽量ハイパーバイザーの組み合わせ
PPS(Packets Per Second)
1秒あたりのパケット処理数。帯域幅とは別にインスタンスレベルで上限が設定される
Placement Group(Cluster)
同一AZ内の近接ラックにインスタンスを配置し、低レイテンシ・高帯域幅を実現する機能
IBC(Instance Bandwidth Configurations)
第8世代インスタンスでVPCとEBSの帯域幅配分を調整できる機能。2024年12月GA

📚 参考文献

公式ドキュメントと関連リソースへのリンク集です。

Enhanced Networking 公式ドキュメント
EC2 インスタンスのネットワーク帯域幅
EC2 インスタンスタイプ
帯域幅重み付け設定

Created by SSuzuki1063

AWS SAP Learning Resources