EC2 インスタンスで ENA Express を使用してネットワークパフォーマンスを向上させる - Amazon Elastic Compute Cloud

EC2 インスタンスで ENA Express を使用してネットワークパフォーマンスを向上させる

ENA Express は、AWS Scalable Reliable Datagram (SRD) テクノロジーを搭載しています。SRD は、動的ルーティングを使用してスループットを向上させ、テールレイテンシーを最小限に抑える高性能なネットワークトランスポートプロトコルです。ENA Express を使用すると、同じアベイラビリティゾーン内の 2 つの EC2 インスタンス間で通信できます。

ENA Express の利点
  • アベイラビリティーゾーン内で 1 つのフローで使用できる集約インスタンスの制限までの最大帯域幅を、5 Gbps から 25 Gbps に拡大します。

  • 特にネットワーク負荷が高い期間に、EC2 インスタンス間のネットワークトラフィックのテールレイテンシーを短縮します。

  • 混雑したネットワークパスを検出して回避します。

  • 受信側でのパケットの並べ替えや、必要とされるほとんどの再送信など、一部のタスクをネットワーク層で直接処理します。これにより、アプリケーション層が解放され、他の作業に充てることができるようになります。

注記

アプリケーションが 1 秒間に大量のパケットを送受信し、ほとんどの場合、特にネットワークに輻輳がない時間帯にレイテンシーを最適化する必要がある場合は、拡張ネットワーク の方がネットワークに適している場合があります。

ネットワークトラフィックが少ない時間帯に、パケットが ENA Express を使用すると、パケットのレイテンシーがわずかに増加することがあります (数十マイクロ秒)。このような場合、特定のネットワークパフォーマンス特性を優先するアプリケーションには、次のような ENA Express の利点があります。

  • プロセスは、集約インスタンスの制限までの同じアベイラビリティゾーン内におけるシングルフローの最大帯域幅を 5 Gbps から 25 Gbps に拡大するという利点を得られます。たとえば、特定のインスタンスタイプが最大 12.5 Gbps までサポートする場合、シングルフローの帯域幅も 12.5 Gbps までに制限されます。

  • 実行時間が長いプロセスでは、ネットワークが混雑している間のテールレイテンシーが減少するはずです。

  • プロセスには、ネットワークの応答時間をよりスムーズに、より標準的にディストリビューションできるという利点があります。

Linux インスタンスの前提条件

ENA Express が効果的に動作できるようにするには、次のようにインスタンスの設定を更新します。

  • インスタンスでジャンボフレームを使用している場合は、次のコマンドを実行して最大送信単位 (MTU) を 8900 に設定します。

    [ec2-user ~]$ sudo ip link set dev eth0 mtu 8900
  • 受信側 (Rx) のリングサイズを次のように大きくします。

    [ec2-user ~]$ ethtool -G device rx 8192
  • ENA Expressの帯域幅を最大化するには、TCP キュー制限を次のように設定します。

    1. TCP の小規模なキューの制限を 1 MB 以上に設定します。これにより、ソケット上で送信キューのデータが増えます。

      sudo sh -c 'echo 1048576 > /proc/sys/net/ipv4/tcp_limit_output_bytes'
    2. お使いの Linux ディストリビューションで eth デバイスのバイトキュー制限が有効になっている場合は、それを無効にしてください。これにより、デバイスキューの送信待ちのデータが増加します。

      sudo sh -c 'for txq in /sys/class/net/eth0/queues/tx-*; do echo max > ${txq}/byte_queue_limits/limit_min; done'
      注記

      Amazon Linux ディストリビューションの ENA ドライバーは、デフォルトでバイトキュー制限を無効にします。

ENA Express の仕組み

ENA Express は、AWS Scalable Reliable Datagram (SRD) テクノロジーを搭載しています。各ネットワークフローのパケットをさまざまな AWS ネットワークパスに分散し、輻輳の兆候を検出すると配信を動的に調整します。また、受信側でのパケットの並べ替えも管理します。

ENA Express がネットワークトラフィックを意図したとおりに管理できるようにするには、送受信インスタンスと受信側インスタンス間の通信が次の要件をすべて満たしている必要があります。

  • 送信側と受信側の両方のインスタンスタイプがサポートされています。詳細については「ENA Express でサポートされるインスタンスタイプ」の表を参照してください。

  • 送信側と受信側の両方のインスタンスに ENA Express が設定されている必要があります。設定に違いがあると、トラフィックがデフォルトで標準の ENA 送信になる状況が発生する可能性があります。発生し得る状況を次のシナリオで説明します。

    シナリオ: 設定の違い

    インスタンス ENA Express が有効になっている UDP は ENA Express を使用する
    インスタンス 1 はい あり
    インスタンス 2 あり なし

    この場合、2 つのインスタンスが ENA Express を有効にするので、両方のインスタンス間の TCP トラフィックで、ENA Express を使用できます。ただし、一方のインスタンスは UDP トラフィックに ENA Express を使用しないため、これら 2 つのインスタンス間の UDP 経由の通信には標準の ENA 送信が使用されます。

  • 送信側と受信側のインスタンスは同じアベイラビリティゾーンで実行する必要があります。

  • インスタンス間のネットワークパスには、ミドルウェアボックスを含めないようにしてください。ENA Express は現在、ミドルウェアボックスをサポートしていません。

  • (Linux インスタンスのみ) 帯域幅を最大限に活用するには、ドライバーバージョン 2.2.9 以降を使用します。

  • (Linux インスタンスのみ) メトリクスを生成するには、ドライバーバージョン 2.8 以降を使用します。

いずれかの要件が満たされていない場合、インスタンスは標準の TCP/UDP プロトコルを使用して通信しますが、SRD は使用しません。

インスタンスのネットワークドライバーが最適なパフォーマンスを発揮できるように構成するには、ENA ドライバーの推奨ベストプラクティスを確認してください。これらのベストプラクティスは ENA Express にも当てはまります。詳細については、GitHub ウェブサイトの「ENA Linux Driver Best Practices and Performance Optimization Guide」(ENA Linux ドライバーのベストプラクティスとパフォーマンス最適化ガイド) を参照してください。

注記

Amazon EC2 では、インスタンスとそれにアタッチされたネットワークインターフェイスとの関係をアタッチメントと呼びます。ENA Express の設定がアタッチメントに適用されます。ネットワークインターフェースがインスタンスからデタッチされると、アタッチメントは存在しなくなり、そのアタッチメントに適用されていた ENA Express 設定は無効になります。ネットワークインターフェースが残っていても、インスタンスが終了した場合、同様になります。

ENA Express でサポートされるインスタンスタイプ

次のタブには、ENA Express をサポートするインスタンスタイプが表示されます。

General purpose
インスタンスタイプ アーキテクチャ
m6a.12xlarge x86_64
m6a.16xlarge x86_64
m6a.24xlarge x86_64
m6a.32xlarge x86_64
m6a.48xlarge x86_64
m6a.metal x86_64
m6i.8xlarge x86_64
m6i.12xlarge x86_64
m6i.16xlarge x86_64
m6i.24xlarge x86_64
m6i.32xlarge x86_64
m6i.metal x86_64
m6id.8xlarge x86_64
m6id.12xlarge x86_64
m6id.16xlarge x86_64
m6id.24xlarge x86_64
m6id.32xlarge x86_64
m6id.metal x86_64
m7g.12xlarge arm64
m7g.16xlarge arm64
m7g.metal arm64
m7gd.12xlarge arm64
m7gd.16xlarge arm64
m7gd.metal arm64
m7i.12xlarge x86_64
m7i.16xlarge x86_64
m7i.24xlarge x86_64
m7i.48xlarge x86_64
m7i.metal-24xl x86_64
m7i.metal-48xl x86_64
Compute optimized
インスタンスタイプ アーキテクチャ
c6a.12xlarge x86_64
c6a.16xlarge x86_64
c6a.24xlarge x86_64
c6a.32xlarge x86_64
c6a.48xlarge x86_64
c6a.metal x86_64
c6gn.16xlarge arm64
c6i.8xlarge x86_64
c6i.12xlarge x86_64
c6i.16xlarge x86_64
c6i.24xlarge x86_64
c6i.32xlarge x86_64
c6i.metal x86_64
c6id.8xlarge x86_64
c6id.12xlarge x86_64
c6id.16xlarge x86_64
c6id.24xlarge x86_64
c6id.32xlarge x86_64
c6id.metal x86_64
c7g.12xlarge arm64
c7g.16xlarge arm64
c7g.metal arm64
c7gd.12xlarge arm64
c7gd.16xlarge arm64
c7gd.metal arm64
c7i.12xlarge x86_64
c7i.16xlarge x86_64
c7i.24xlarge x86_64
c7i.48xlarge x86_64
c7i.metal-24xl x86_64
c7i.metal-48xl x86_64
Memory optimized
インスタンスタイプ アーキテクチャ
r6a.12xlarge x86_64
r6a.16xlarge x86_64
r6a.24xlarge x86_64
r6a.32xlarge x86_64
r6a.48xlarge x86_64
r6a.metal x86_64
r6i.8xlarge x86_64
r6i.12xlarge x86_64
r6i.16xlarge x86_64
r6i.24xlarge x86_64
r6i.32xlarge x86_64
r6i.metal x86_64
r6id.8xlarge x86_64
r6id.12xlarge x86_64
r6id.16xlarge x86_64
r6id.24xlarge x86_64
r6id.32xlarge x86_64
r6id.metal x86_64
r7g.12xlarge arm64
r7g.16xlarge arm64
r7g.metal arm64
r7gd.12xlarge arm64
r7gd.16xlarge arm64
r7gd.metal arm64
r7i.12xlarge x86_64
r7i.16xlarge x86_64
r7i.24xlarge x86_64
r7i.48xlarge x86_64
r7i.metal-24xl x86_64
r7i.metal-48xl x86_64
r8g.12xlarge arm64
r8g.16xlarge arm64
r8g.24xlarge arm64
r8g.48xlarge arm64
r8g.metal-24xl arm64
r8g.metal-48xl arm64
u7i-12tb.224xlarge x86_64
u7in-16tb.224xlarge x86_64
u7in-24tb.224xlarge x86_64
u7in-32tb.224xlarge x86_64
x2idn.16xlarge x86_64
x2idn.24xlarge x86_64
x2idn.32xlarge x86_64
x2idn.metal x86_64
x2iedn.8xlarge x86_64
x2iedn.16xlarge x86_64
x2iedn.24xlarge x86_64
x2iedn.32xlarge x86_64
x2iedn.metal x86_64
Accelerated computing
インスタンスタイプ アーキテクチャ
g6.48xlarge x86_64
Storage optimized
インスタンスタイプ アーキテクチャ
i4g.4xlarge arm64
i4g.8xlarge arm64
i4g.16xlarge arm64
i4i.8xlarge x86_64
i4i.12xlarge x86_64
i4i.16xlarge x86_64
i4i.24xlarge x86_64
i4i.32xlarge x86_64
i4i.metal x86_64
im4gn.4xlarge arm64
im4gn.8xlarge arm64
im4gn.16xlarge arm64

ENA Express の設定を一覧化して表示する

このセクションでは、AWS Management Console または AWS CLI から ENA Express 情報を一覧化して表示する方法について説明します。詳細については、使用する方法に一致するタブを選択してください。

Console

このタブでは、現在の ENA Express 設定に関する情報を確認する方法と、AWS Management Console でインスタンスタイプのサポートを確認する方法について説明します。

インスタンスタイプのサポートを表示する
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 左のナビゲーションペインで、[Instance types] (インスタンスタイプ) を選択します。

  3. インスタンスタイプを選択すると、そのインスタンスの詳細が表示されます。[Instance type] (インスタンスタイプ) のリンクを選択して詳細ページを開くか、リストの左側のチェックボックスを選択してページ下部の詳細ペインで詳細を表示できます。

  4. [Networking] タブまたは詳細ページのそのセクションの [ENA Express Support] (ENA Express サポート) に、インスタンスタイプがこの機能をサポートしているかどうかを示す値が true または false と表示されます。

ネットワークインターフェースリストから設定を表示する
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 左側のナビゲーションペインで、[Network Interfaces] (ネットワークインターフェース) を選択します。

  3. ネットワークインターフェイスを選択すると、そのインスタンスの詳細が表示されます。[Network interface ID] (ネットワークインターフェース ID) リンクを選択して詳細ページを開くか、リストの左側のチェックボックスを選択してページ下部の詳細ペインで詳細を表示できます。

  4. [Details] (詳細) タブまたは詳細ページの [Network interface attachment] (ネットワークインターフェース接続) セクションで、[ENA Express][ENA Express UDP] の設定を確認します。

インスタンスから設定を表示する
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 左のナビゲーションペインで、[Instances] (インスタンス) をクリックします。

  3. インスタンスを選択すると、そのインスタンスの詳細が表示されます。[Instance ID] (インスタンス ID) リンクを選択して詳細ページを開くことも、リストの左側のチェックボックスを選択してページ下部の詳細ペインに詳細を表示することもできます。

  4. [Networking] (ネットワーキング) タブの [Network interfaces] (ネットワークインターフェース) セクションを右にスクロールして [ENA Express][ENA Express UDP] の設定を確認します。

AWS CLI

このタブでは、現在の ENA Express 設定に関する情報を確認する方法と、AWS CLI でインスタンスタイプのサポートを確認する方法について説明します。

インスタンスタイプを記述する

特定のインスタンスタイプのインスタンスタイプ設定については、AWS CLI で describe-instance-types コマンドを実行し、インスタンスタイプを次のように置き換えてください。

[ec2-user ~]$ aws ec2 describe-instance-types --instance-types m6i.metal { "InstanceTypes": [ { "InstanceType": "m6i.metal", "CurrentGeneration": true, ... }, "NetworkInfo": { ... "EnaSrdSupported": true }, ... } ] }
インスタンスの説明

特定のインスタンスの ENA Express 設定について詳しくは、AWS CLI で describe-instances コマンドを実行してください。例を示します。このコマンド例は、--instance-ids パラメータで指定された実行中の各インスタンスに接続されているネットワークインターフェイスの ENA Express 設定のリストを返します。

[ec2-user ~]$ aws ec2 describe-instances --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7 --query 'Reservations[*].Instances[*].[InstanceId, NetworkInterfaces[*].Attachment.EnaSrdSpecification]'[ [ [ "i-1234567890abcdef0", [ { "EnaSrdEnabled": true, "EnaSrdUdpSpecification": { "EnaSrdUdpEnabled": false } } ] ] ], [ [ "i-0598c7d356eba48d7", [ { "EnaSrdEnabled": true, "EnaSrdUdpSpecification": { "EnaSrdUdpEnabled": false } } ] ] ] ]
ネットワークインターフェースを記述する

ネットワークインターフェイスの ENA Express 設定の情報については、describe-network-interfaces コマンドを AWS CLI で次のように実行します。

[ec2-user ~]$ aws ec2 describe-network-interfaces { "NetworkInterfaces": [ { "Association": { ....IPs, DNS... }, "Attachment": { "AttachTime": "2022-11-17T09:04:28+00:00", "AttachmentId": "eni-attach-0ab1c23456d78e9f0", "DeleteOnTermination": true, "DeviceIndex": 0, "NetworkCardIndex": 0, "InstanceId": "i-1234567890abcdef0", "InstanceOwnerId": "111122223333", "Status": "attached", "EnaSrdSpecification": { "EnaSrdEnabled": true, "EnaSrdUdpSpecification": { "EnaSrdUdpEnabled": true } } }, ... "NetworkInterfaceId": "eni-1234567890abcdef0", "OwnerId": "111122223333", ... } ] }
PowerShell

このタブでは、現在の ENA Express 設定に関する情報を確認する方法と、PowerShell を使用してインスタンスタイプのサポートを確認する方法について説明します。

インスタンスタイプを記述する

特定のインスタンスタイプのインスタンスタイプ設定については、Tools for PowerShell で Get-EC2InstanceType Cmdlet コマンドを実行し、インスタンスタイプを次のように置き換えてください。

PS C:\> Get-EC2InstanceType -InstanceType m6i.metal | ` Select-Object ` InstanceType, CurrentGeneration, @{Name = 'EnaSrdSupported'; Expression = { $_.NetworkInfo.EnaSrdSupported } } | ` Format-List InstanceType : m6i.metal CurrentGeneration : True EnaSrdSupported : True

ENA Express が有効になっている場合、値 True が返されます。

ネットワークインターフェースを記述する

ネットワークインターフェイスの ENA Express 設定の詳細については、Tools for PowerShell で Get-EC2NetworkInterface Cmdlet を次のように実行してください。

PS C:\> Get-EC2NetworkInterface -NetworkInterfaceId eni-0d1234e5f6a78901b | ` Select-Object ` Association, NetworkInterfaceId, OwnerId, @{Name = 'AttachTime'; Expression = { $_.Attachment.AttachTime } }, @{Name = 'AttachmentId'; Expression = { $_.Attachment.AttachmentId } }, @{Name = 'DeleteOnTermination'; Expression = { $_.Attachment.DeleteOnTermination } }, @{Name = 'NetworkCardIndex'; Expression = { $_.Attachment.NetworkCardIndex } }, @{Name = 'InstanceId'; Expression = { $_.Attachment.InstanceId } }, @{Name = 'InstanceOwnerId'; Expression = { $_.Attachment.InstanceOwnerId } }, @{Name = 'Status'; Expression = { $_.Attachment.Status } }, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled } }, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled } } Association : NetworkInterfaceId : eni-0d1234e5f6a78901b OwnerId : 111122223333 AttachTime : 6/11/2022 1:13:11 AM AttachmentId : eni-attach-0d1234e5f6a78901b DeleteOnTermination : True NetworkCardIndex : 0 InstanceId : i-0d1234e5f6a78901b InstanceOwnerId : 111122223333 Status : attached EnaSrdEnabled : True EnaSrdUdpEnabled : False

ENA Express の設定を行う

ENA Express は、対応する EC2 インスタンスタイプに対して、追加のソフトウェアをインストールすることなく設定できます。

このセクションでは、AWS Management Console または AWS CLI から ENA Express を設定する方法について説明します。詳細については、使用する方法に一致するタブを選択してください。

Console

このタブでは、インスタンスにアタッチされているネットワークインターフェースの ENA Express 設定を管理する方法について説明します。

ネットワークインターフェースリストから ENA Express を管理する
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 左側のナビゲーションペインで、[Network Interfaces] (ネットワークインターフェース) を選択します。

  3. インスタンスにアタッチされるネットワークインターフェースを指定します。[Network interface ID] (ネットワークインターフェース ID) リンクを選択して詳細ページを開くことも、リストの左側にあるチェックボックスを選択することもできます。

  4. ページ右上の [Action] (アクション) メニューから [Manage ENA Express] (ENA Express の管理) を選択します。これにより、選択したネットワークインターフェイス ID と現在の設定が表示された [Manage ENA Express] (ENA Express の管理) ダイアログが開きます。

    注記

    選択したネットワークインターフェースがインスタンスに接続されていない場合、このアクションはメニューに表示されません。

  5. [ENA Express] を使用するには、[Enable] (有効にする) チェックボックスを選択します。

  6. ENA Express が有効になっている場合、UDP 設定を構成できます。[ENA Express UDP] を使用するには、[Enable] (有効にする) チェックボックスを選択します。

  7. 設定を保存するには [Save] (保存) を選択します。

インスタンスリストから ENA Express を管理する
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 左のナビゲーションペインで、[Instances] (インスタンス) をクリックします。

  3. 管理するインスタンスを選択します。[Instance ID] (インスタンス ID) を選択して詳細ページを開くか、リストの左側にあるチェックボックスを選択します。

  4. インスタンスに設定する[Network interface] (ネットワークインターフェイス) を選択します。

  5. ページ右上の [Action] (アクション) メニューから [Manage ENA Express] (ENA Express の管理) を選択します。

  6. インスタンスにアタッチされているネットワークインターフェイスに ENA Express を設定するには、[Network interface] (ネットワークインターフェイス) リストから選択します。

  7. 選択したネットワークインターフェースアタッチメントに [ENA Express] を使用するには、[Enable] (有効にする) チェックボックスを選択します。

  8. ENA Express が有効になっている場合、UDP 設定を構成できます。[ENA Express UDP] を使用するには、[Enable] (有効にする) チェックボックスを選択します。

  9. 設定を保存するには [Save] (保存) を選択します。

ネットワークインターフェースを EC2 インスタンスにアタッチする際に ENA Express を設定する
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 左側のナビゲーションペインで、[Network Interfaces] (ネットワークインターフェース) を選択します。

  3. インスタンスにアタッチされていないネットワークインターフェイスを選択します ([Status] (ステータス) が [Available] (利用可) のもの)。[Network interface ID] (ネットワークインターフェース ID) リンクを選択して詳細ページを開くことも、リストの左側にあるチェックボックスを選択することもできます。

  4. アタッチする [Instance] (インスタンス) を選択します。

  5. ネットワークインターフェースをインスタンスに接続した後に [ENA Express] を使用するには、[Enable] (有効にする) チェックボックスを選択します。

  6. ENA Express が有効になっている場合、UDP 設定を構成できます。[ENA Express UDP] を使用するには、[Enable] (有効にする) チェックボックスを選択します。

  7. ネットワークインターフェイスをインスタンスにアタッチし、ENA Express 設定を保存するには、[Attach] (アタッチ) を選択します。

AWS CLI

このタブでは、AWS CLI で ENA Express の設定を行う方法について説明します。

ネットワークインターフェースをアタッチする際の ENA Express の設定

ネットワークインターフェイスをインスタンスに接続するときに ENA Express を設定するには、次の例に示すように AWS CLI で、attach-network-interface コマンドを実行します。

例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない

この例では、EnaSrdEnabledtrue に設定し、EnaSrdUdpEnabled をデフォルトで false になるように設定します。

[ec2-user ~]$ aws ec2 attach-network-interface --network-interface-id eni-0123f4567890a1b23 --instance-id i-0f1a234b5cd67e890 --device-index 1 --ena-srd-specification 'EnaSrdEnabled=true' { "AttachmentId": "eni-attach-012c3d45e678f9012" }

例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する

この例では、EnaSrdEnabledEnaSrdUdpEnabled の両方を true に設定します。

[ec2-user ~]$ aws ec2 attach-network-interface --network-interface-id eni-0123f4567890a1b23 --instance-id i-0f1a234b5cd67e890 --device-index 1 --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}' { "AttachmentId": "eni-attach-012c3d45e678f9012" }
ネットワークインターフェースアタッチメントの ENA Express 設定を更新する

インスタンスにアタッチされているネットワークインターフェイスの ENA Express 設定を更新するには、次の例に示すように、AWS CLI で modify-network-interface-attribute コマンドを実行します。

例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない

この例では EnaSrdEnabledtrue に設定し、以前に設定したことがない場合は EnaSrdUdpEnabled をデフォルトで false になるよう設定します。

[ec2-user ~]$ aws ec2 modify-network-interface-attribute --network-interface-id eni-0123f4567890a1b23 --ena-srd-specification 'EnaSrdEnabled=true'

例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する

この例では、EnaSrdEnabledEnaSrdUdpEnabled の両方を true に設定します。

[ec2-user ~]$ aws ec2 modify-network-interface-attribute --network-interface-id eni-0123f4567890a1b23 --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}'

例 3: UDP トラフィックでの ENA Express の使用を停止する

この例では、EnaSrdUdpEnabledfalse に設定しています。

[ec2-user ~]$ aws ec2 modify-network-interface-attribute --network-interface-id eni-0123f4567890a1b23 --ena-srd-specification 'EnaSrdUdpSpecification={EnaSrdUdpEnabled=false}'
PowerShell

このタブでは、PowerShell を使用して ENA Express の設定を行う方法について説明します。

ネットワークインターフェースをアタッチする際の ENA Express の設定

ネットワークインターフェイスの ENA Express 設定を構成するには、次の例に示すように、Tools for PowerShell で Add-EC2NetworkInterface Cmdlet を実行します。

例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない

この例では、EnaSrdEnabledtrue に設定し、EnaSrdUdpEnabled をデフォルトで false になるように設定します。

PS C:\> Add-EC2NetworkInterface ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -InstanceId i-0f1a234b5cd67e890 ` -DeviceIndex 1 ` -EnaSrdSpecification_EnaSrdEnabled $true eni-attach-012c3d45e678f9012

例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する

この例では、EnaSrdEnabledEnaSrdUdpEnabled の両方を true に設定します。

PS C:\> Add-EC2NetworkInterface ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -InstanceId i-0f1a234b5cd67e890 ` -DeviceIndex 1 ` -EnaSrdSpecification_EnaSrdEnabled $true ` -EnaSrdUdpSpecification_EnaSrdUdpEnabled $true eni-attach-012c3d45e678f9012
ネットワークインターフェースアタッチメントの ENA Express 設定を更新する

インスタンスにアタッチされているネットワークインターフェイスの ENA Express 設定を更新するには、次の例に示すように、Tools for PowerShell で Add-EC2NetworkInterface Cmdlet コマンドを実行します。

例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない

この例では EnaSrdEnabledtrue に設定し、以前に設定したことがない場合は EnaSrdUdpEnabled をデフォルトで false になるよう設定します。

PS C:\> Edit-EC2NetworkInterfaceAttribute ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -EnaSrdSpecification_EnaSrdEnabled $true ; Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | ` Select-Object ` NetworkInterfaceId, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | ` Format-List NetworkInterfaceId : eni-0123f4567890a1b23 EnaSrdEnabled : True EnaSrdUdpEnabled : False

例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する

この例では、EnaSrdEnabledEnaSrdUdpEnabled の両方を true に設定します。

PS C:\> Edit-EC2NetworkInterfaceAttribute ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -EnaSrdSpecification_EnaSrdEnabled $true ` -EnaSrdSpecification_EnaSrdUdpSpecification_EnaSrdUdpEnabled $true ; Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | ` Select-Object ` NetworkInterfaceId, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | ` Format-List NetworkInterfaceId : eni-0123f4567890a1b23 EnaSrdEnabled : True EnaSrdUdpEnabled : True

例 3: UDP トラフィックでの ENA Express の使用を停止する

この例では、EnaSrdUdpEnabledfalse に設定しています。

PS C:\> Edit-EC2NetworkInterfaceAttribute ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -EnaSrdSpecification_EnaSrdUdpSpecification_EnaSrdUdpEnabled $false ; Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | ` Select-Object ` NetworkInterfaceId, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | ` Format-List NetworkInterfaceId : eni-0123f4567890a1b23 EnaSrdEnabled : True EnaSrdUdpEnabled : False

起動時に ENA Express を設定する

AWS Management Console からインスタンスを起動する際、次の方法のいずれかを使用して AMI に ENA Express を設定できます。

  • インスタンス起動ウィザードでのインスタンスの起動時に、AMI に ENA Express を設定できます。設定の詳細については、インスタンス起動ウィザードの ネットワーク設定、「Advanced network configuration」を参照してください。

  • 起動テンプレートの使用時に、AMI に ENA Express を設定できます。起動テンプレートの設定についての詳細は、起動テンプレートの ネットワーク設定、「Advanced network configuration」を参照してください。

ENA Express のパフォーマンスをモニタリングする

送信側インスタンスと受信側インスタンスの両方で、ネットワークインターフェースアタッチメントの ENA Express を有効にしたら、ENA Express メトリックを使用して、SRD テクノロジーによるパフォーマンスの向上をインスタンスが最大限に活用できるようにします。

ENA Express 用にフィルタリングされたメトリクスのリストを表示するには、ネットワークインターフェースで以下の ethtool コマンドを実行します (ここでは eth0 として表示されています)。

[ec2-user ~]$ ethtool -S eth0 | grep ena_srd NIC statistics: ena_srd_mode: 0 ena_srd_tx_pkts: 0 ena_srd_eligible_tx_pkts: 0 ena_srd_rx_pkts: 0 ena_srd_resource_utilization: 0
インスタンスの ENA Express 設定を確認する

インスタンスのネットワークインターフェースアタッチメントの現在の ENA Express 設定を確認するには、ethtool コマンドを実行して ENA Express メトリクスを一覧表示し、ena_srd_mode メトリクスの値を書き留めます。値は次のとおりです。

  • 0 = ENA Express がオフ、UDP がオフ

  • 1 = ENA Express がオン、UDP がオフ

  • 2 = ENA Express がオフ、UDP がオン

    注記

    これは、ENA Express が最初に有効になっていて、UDP がそれを使用するように設定されている場合にのみ発生します。UDP トラフィックの以前の値は保持されます。

  • 3 = ENA Express がオン、UDP がオン

インスタンスのネットワークインターフェイスアタッチメントで ENA Express を有効にした後、送信側インスタンスは受信側インスタンスとの通信を開始し、SRD は ENA Express が送信側インスタンスと受信側インスタンスの両方で動作しているかどうかを検出します。ENA Express が動作している場合、通信に SRD 送信を使用できます。ENA Express が動作していない場合、通信は標準の ENA 送信にフォールバックします。パケット送信に SRD が使用されているかどうかを確認するには、対象パケットの数 (ena_srd_eligible_tx_pkts メトリクス) と特定の期間に送信された SRD パケットの数 (ena_srd_tx_pkts メトリクス) を比較します。

ena_srd_resource_utilization メトリクスを使用して SRD リソースの使用率をモニタリングできます。インスタンスで SRD リソースが使い果たされそうになっていたら、インスタンスをスケールアウトする時期であると判断できます。

ENA Express のメトリクスに関する詳細は、「ENA Express のメトリクス」を参照してください。

ENA Express 設定のパフォーマンスを調整する

Linux インスタンス構成で ENA Express の最適なパフォーマンスを確認するには、Amazon GitHub リポジトリにある次のスクリプトを実行します。

https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh

このスクリプトは一連のテストを実行し、推奨設定変更および必須設定変更を提案します。