galleriaのPCでHyper-Vを設定したら、ネットの速度が激落ち問題

以前は問題なかったはずなのですが、気がつけば激重です。つながらないわけでは無くて、pingを打ってもそこそこの速度で応答があります。IPアドレスが衝突してそうでもないわけです。同じセグメント内でルーターはさんで直通レベルですから、そんなに複雑な事はしてませんできません。

最初はサクサク動きつつも、しばらく経つと動きが悪くなるというか、特にブラウザを起動してYouTubeとか開くともうダメです。ネットの経路的な問題が何かあるのかと思いきや、galleria PCから別のPCにリモートデスクトップ接続を行うとサクサクなのです。何という非対称。ちなみにどちらもWi-Fiです。

ドライバの更新、WindowsUpdateの更新、セキュリティソフトでのスキャンなど、念のためのお試しをするもやはりダメ。いよいよもって根が深そうで気が滅入ります。

外部仮想スイッチを外す

まずは一番怪しそうなHyper-V周りから。仮想サーバーを多数起動して開発やら実験やらをやる環境なわけですが、外部からアクセスするためには外部仮想スイッチ/ネットワークブリッジを経由させる必要があります。この設定を入れると仮想サーバー群のみならず、ホストOSの方も仮想NIC経由で外部仮想スイッチを通って、物理NICに接続されるという構成になります。

vEthernet/Hyper-V Virtual Ethernet Adapter がホストOSの仮想NIC
Microsoft Network Adapter Multiplexor Driverがブリッジになります。

まずはこいつらがアヤシイだろうと見立てましたが、まずは面倒なので「ネットワークのリセット」を行います。手順は
設定>ネットワークとインターネット>ネットワークの詳細設定>ネットワークのリセット>「今すぐリセット」
初期化されるのはネットワーク環境だけなので、直結の端末さえ確保できていれば気楽に実行できます。リセットするとHyper-Vの仮想スイッチも消えます。(後で再構築するので、設定はメモっておくこと)

リセットに改めてWiFiに接続。つながった事が確認できてから、他のPCからリモートデスクトップ接続をトライ。

結果、比較的サクサク動きますねえ。やはりこの辺が問題であったと検討ついたので次へ。

外部仮想スイッチの設定の見直し~手詰まりへ

Hyper-Vの仮想スイッチマネージャーから、改めて外部仮想スイッチを作成します。(これが無いと仮想サーバーも起動しない)
微妙そうな所はわかったとて、改めて設定画面を見てみると絶望するわけです。調整できそうなところが無いじゃん。

外部仮想スイッチを作った後、改めて別PCからリモートデスクトップ接続をすると、超遅い環境が再現できたわけです。やはり犯人はこいつです。ただ回避方法がわからん。ぐぬぬ。
リモートデスクトップ以外では、仮想サーバーで動かすWebアプリあたりはさほど影響出ていない感じでサクサク動きます。ファイル転送とかテスト用APIからデカい応答をさせるとフリーズ気味になる事から、データ量とかパケットサイズ周りが臭い。さてどうする?

先人の知恵を借りるべくググる

スイッチの設定がいじれない以上、レジストリを変更するとかドライバー周りの設定をいじる事になりそうで鬱なわけです。改めて調べてみると同じような感じでトラブっている方が結構いらっしゃるみたいで、アダプターオプションのLSOの設定を変更して改善したというケースが多く見られます。

いろいろと記事がありますが、いくつかリンクを貼っておきます。

https://qiita.com/purple_jp/items/65005d59dd558299a401

https://qiita.com/shigeyf/items/32940a1bec550ba8c702

解決へ

最終的には LSOこと Large Send Offload の設定を disable にすることで改善を見ました。手順に関しては上記のqiitaの記事から抜粋します。アダプターのプロパティとは盲点でした。そこがあったか!

  1. 設定→ネットワークとインターネット→状態→アダプターのオプションを変更する、の順に進める
  2. Hyper-Vで仮想スイッチを作成した名称のvEthernetのプロパティを開く
  3. ネットワークタブを開き、「構成」を押下する
  4. 詳細設定タブを開き、Large Send Offload Version 2など、offload関連の設定を全てdisabledにして「OK」を押下する。
  5. Windowsの再起動をする。

改めて外部PCからリモートデスクトップ接続をしてYouTube動画を流してみると、普通に見られるようになりました!

直ったのは良いのですが記事のタイムスタンプを見ると2022年とか、結構古いんですよね。昔からのバグであったなら、なぜに私の環境ではこれまで大丈夫だったのかよく分かりません。何かの更新がかかったタイミングでバグを踏むようになってしまったとしか考えられないわけですが、まあ改善して何よりでした。

Offload周りのその他の設定も disableにしておいた方が良いようなことも書いてありましたが、NIC側などに処理を振れるならその方が良いとも思うので変更はしていないです。

なかなかに原因がわかるまで、結構ハマりました。つらいです。

技術・開発

Posted by tomi