はじめに
Windows 11 で Hyper-V を有効にした際に、仮想マシンをホストコンピューターが接続しているローカルネットワークに直接接続したい場合があります。例えば、複数の物理コンピューターがある場合に、ある物理コンピューターにホストした仮想マシンと物理コンピューターとの間で同じローカルネットワークのセグメントで直接通信させたい場合です。
Hyper-V の仮想スイッチマネージャーから [外部] ネットワークを作成すると、
物理ネットワークインターフェース (WiFi または イーサネット) にブリッジネットワークが構成されます。
仮想マシンの仮想 NIC を作成した [外部] ネットワークに接続することで、仮想マシンをローカルネットワークに接続することができるようになります。
この際、Hyper-V ホストにも仮想 NIC が作成され、同じ [外部] の仮想スイッチに接続されるよう構成されますが、
Hyper-V ホストからの外部ネットワークへのアップロードのネットワーク速度が極端に低下する場合があります。
この記事では、ネットワークパフォーマンスを改善する方法を紹介します。
どのようなパフォーマンスの問題があったのか?
Hyper-V ホストに [外部] ネットワークの仮想スイッチを作成した後、
アップロードのネットワーク通信が極端に遅い、という現象が発生しました。
Network Speet Test という無料の Windows ストアアプリをインストールして試したところ、以下のような結果でした。
ダウンロード (下り) は約 120 Mbps の速度が出ているのですが、アップロード (上り) はたった 0.5Mbps 程度しか出ないという状況です。
明らかにおかしいと思われる様子なので、調べてみました。
Hyper-V を有効にする前に測定したネットワーク速度や同じ LAN に接続した他のデバイスからの測定結果とも異なりました。
ネットワーク アーキテクチャの理解
具体的な問題解決方法の前に、Hyper-V ホストに [外部] ネットワークの仮想スイッチを作成すると、どのようなネットワーク構成になるのか?
ネットワーク構成は以下のような図になります。
Hyper-V ホスト OS からのネットワーク パケットは、仮想 NIC とネットワーク ブリッジの両方を経由して、物理 NIC から外部へ送受信されます。
[コントロール パネル] -> [ネットワークとインターネット] -> [ネットワークと共有センター] -> 左サイドのメニューの [アダプター設定の変更] をクリックすると、ネットワークインターフェースの一覧が表示されます。
"vEthernet ([仮想スイッチの名前])" という名前のネットワーク接続の項目 (デバイス名が "Hyper-V Ethernet Adapter #[X]") が、ホスト OS に接続された仮想 NIC になります。
注: [X] には連番の数字が割り当てられます
また、ネットワークブリッジは、"Microsoft Network Adapter Multiplexor Driver" というデバイス名のネットワーク接続の項目が表示されています。
Hyper-V ホスト OS から外部への接続は、この2つのネットワークを経由して行われることになります。
問題の解決方法: LSO の無効化
様々な問題の原因が考えられますが、仮想ネットワークアダプター (ソフトウェア) でハードウェアの最適化機能があやしいのではないかと考え、アップロード (ネットワーク送信) に関するハードウェア最適化機能に目を付けます。
ネットワークのハードウェア最適化機能は、マイクロソフトのドキュメントによい記事 (「ハードウェアのみ (Hardware-Only) の機能とテクノロジ」 があります。こちらを参考ください。
以下の機能があやしそうです。
Large Send Offload (LSO)
LSO を使用すると、アプリケーションは大量のデータ ブロックを NIC に渡すことができ、NIC はデータをネットワークの最大転送単位 (MTU) 内に収まるパケットに分割します。
ということで、デバイスマネージャーで仮想 NIC とネットワークブリッジのデバイス名のプロパティを確認します。[高度な設定] または [Advanced] タブを確認すると、詳細な機能のパラメーターが確認できます。
以下の Large Send Offload (LSO) 関連のパラメーターが、どちらのデバイスでも IPv4/IPv6 の両方で 有効 (Enabled) となっていました。
- Large Send Offload Version 2 (IPv4)
- Large Send Offload Version 2 (IPv6)
これを 無効 (Disabled) に変更します。
LSO 無効化後のネットワーク速度の確認
LSOv2 の設定変更後、再度、Network Speet Test でネットワーク速度を測定してみます。
測定の結果、アップロード (上り) の速度が約 30 Mbps と改善されました。
この結果は、以前に測定した結果と大きな差異もなく、設定変更により正しく改善されたように見えます。
インターネットで検索して得られた同じような現象の事例に対するアドバイス とも同じ結果になっています。
最後に
この記事では、Hyper-V 導入後に実際に遭遇したネットワークのパフォーマンス問題と解決策を紹介しました。
もし今回のような問題が発生した場合、ダウンロードの問題かアップロードの問題かを識別すること、Hyper-V を有効にした場合と無効にした場合の比較、仮説に基づく設定変更の前後の比較など、問題の切り分けを行うことが重要です。
問題の原因らしい箇所を想定を見つけて、他に同じような現象になっている事例がないかもインターネットで確認してみると、より確証が得られるかもしれません。