目次
本記事は SAPアドベントカレンダー 2024 8日目の記事となります。
はじめに
AWSでインスタンスタイプを変更する際に考慮すべき点について|基幹システムのクラウド移行・構築・導入支援のBeeX
上記ブログ記事で、EC2で利用されるネットワークドライバについてふれました。
本記事ではいくつかのインスタンスタイプでWindowsインスタンスを実際に起動してみて、どのネットワークドライバが利用されているのかOS上から確認してみます。
ドキュメント
EC2 Windows インスタンスに ENA ドライバーをインストールする - Amazon Elastic Compute Cloud
Windows インスタンス用 Paravirtual ドライバー - Amazon Elastic Compute Cloud
Elastic Network Interface - Amazon Elastic Compute Cloud
Amazon EC2 インスタンスのネットワーク帯域幅 - Amazon Elastic Compute Cloud
Amazon EC2 インスタンスでの拡張ネットワーキング - Amazon Elastic Compute Cloud
【開催報告】「AWS 秋の Amazon EC2 Deep Dive 祭り 2022」セミナー | Amazon Web Services ブログ
Elastic Network Adapter (ENA)
Amazon EC2 インスタンスでの拡張ネットワーキング - Amazon Elastic Compute Cloud
ENAは、すべてのNitro世代のインスタンスタイプでサポートされるネットワークドライバーとなり、インスタンスタイプごとに最大スループットに違いはありますが、最大100Gbpsのネットワークスループットを提供します。
なおWindows Serverでは古いOSバージョンでは利用できるバージョンに指定があるので注意が必要です。
ENA Windows ドライバーのバージョンリリースを追跡する - Amazon Elastic Compute Cloud
2024年12月現在は下記のようになっていました。
Intel 82599 Virtual Function (VF) Interface
Amazon EC2 インスタンスでの拡張ネットワーキング - Amazon Elastic Compute Cloud
Intel 82599 VFは、下記のインスタンスタイプで拡張ネットワーキングが有効の場合に利用されるネットワークドライバーとなり、こちらもインスタンスタイプごとに最大スループットに違いがありますが、最大10Gbpsのネットワークスループットを提供します。
インスタンスタイプ C3、C4、D2、I2、M4 (m4.16xlarge を除く)、R3 では、拡張ネットワーキングに Intel 82599 VF インターフェイスが使用されます。
Paravirtual ドライバー(PVドライバー)
Windows インスタンス用 Paravirtual ドライバー - Amazon Elastic Compute Cloud
PVドライバーは歴史的な経緯から3種類あり(RedHat PV、Citrix PV、AWS PVの三種類)、RedHat PV=>Citrix PV=>AWS PVの順番で新しくなっているようです。
またWindows ServerではOSバージョンによってサポートされているドライバーとバージョンに違いがあり注意が必要です。
2024年12月現在では下記のように記載されていました。機会は少ないかもしれませんが、古いWindows OSをEC2で起動する必要がある場合は、インスタンスタイプとドライバの選定で注意が必要です。
各ネットワークドライバを利用するインスタンスタイプでWindowsインスタンス起動して確認してみる
今回、下記のAMIからWindowsインスタンスを構築して確認してみます。
ami-09eb7f8fa1e947e23(Windows_Server-2022-Japanese-Full-Base-2024.11.13)
なお上記のAMIはENA、Intel 82599 Virtual Function (VF) Interface、PVドライバーが最初からインストールされ提供されているため、それぞれのネットワークドライバが利用されるインスタンスタイプで起動するだけで確認できます。
ENAドライバー | c6i.large |
Intel 82599 Virtual Function (VF) Interface | c4.large |
PVドライバー | t2.large |
ENAドライバをWindows Server上で確認(c6i.large)
上記のようにc6i.largeでインスタンスを起動します。
利用されているネットワークドライバーを確認するためには、デバイスマネージャーのネットワークアダプターから確認できます。
c6i.largeのインスタンスタイプで起動した場合では、ENA(Amazon Elastic Network Adaptor)が利用されている事がわかります。
プロパティからドライバータブを確認するとバージョン2.8.0.0を利用していました。
Intel 82599 Virtual Function をWindows Server上で確認(c4.large)
上記のようにc4.largeでインスタンスを起動します。
Intel 82599 VF インターフェイスを使用する拡張ネットワーキング - Amazon Elastic Compute Cloud
Intel 82599 Virtual Functionが有効となるためには、インスタンスの設定でsriovNetSupport 属性が有効になっている必要があるため、こちらの条件も確認します。
sriovNetSupportを確認するには、aws-cliなどのコマンドから確認する必要がり、下記のコマンドで確認します。 なお属性がサポートされている場合は simple と表示されます。
# sriovNetSupport 属性の設定を確認
aws ec2 describe-instance-attribute --instance-id instance_id --attribute sriovNetSupport
なお無効化されている場合に有効化するコマンドについては下記となります。
# sriovNetSupport属性を有効化
aws ec2 modify-instance-attribute --instance-id instance_id --sriov-net-support simple
今回の環境で確認すると下記画像のようになっていました。
デバイスマネージャーのネットワークアダプターから確認すると Interl(R) 82599 Virtual Function が有効になっているのが確認できます。
プロパティのドライバから確認すると、バージョンは2.1.249.0となっていました。
AWS PVドライバをWindows Server上で確認(t2.large)
上記のようにt2.largeでインスタンスを起動します。
t2.largeインスタンスはNitro世代ではなく、またIntel 82599 Virtual Function がサポートされるインスタンスタイプではないため、PVドライバーが利用されます。
デバイスマネージャーのネットワークアダプターから確認すると AWS PV Netowrk Device #0 が有効になっているのが確認できます。
プロパティのドライバから確認すると、バージョンは8.2.5.32と記載されていましたが、
EC2 Windows インスタンスでの PV ドライバーのアップグレード - Amazon Elastic Compute Cloud
の手順にて説明されているPVドライバーのバージョン確認方法は下記PowerShellコマンドで確認しており、こちらで確認するとバージョンは8.4.3と表示されました。
このため今回構築した環境のPVドライバーのバージョンについては、8.4.3となります。
Get-ItemProperty HKLM:\SOFTWARE\Amazon\PVDriver
【余談1】どのインスタンスタイプがNitroとなるか
AWS Nitro System 上に構築されたインスタンス - Amazon EC2
上記ドキュメントに記載があります、またEC2コンソールのインスタンスタイプで項目、現行世代で判別する事もできます。
【余談2】有効になっていないインストールされているネットワークドライバを確認する
デバイスマネージャーの表示=>非表示のデバイスの表示 を選択すると、インストールされているが有効になっていないネットワークドライバが表示されます。
まとめ
C2 Windowsインスタンスで利用されるネットワークドライバは、インスタンスタイプによって異なり、Nitoro世代を背景にしたENAドライバー。それ以前のはIntel 82599 VFとPVドライバーに分かれます。
2017年11月にNitoroが発表され、それからしばらく時間が経過したため。
それ以前の古いインスタンスタイプにふれる機会は減ってきた気はしますが、ここらへん押さえておかないと、古いインスタンスタイプを利用する場合にはまる事があるので注意が必要です。