1月 072020
 

Vmware ESXi 上で動作している FreeBSD 12.0-RELEASE を freebsd-update upgrade -r 12.1-RELEASE で 12.1-RELEASE したところ、パッタリと通信が止まった。

まぁ、ssh でログインして ls とかたたく分には問題はない。ログイン先から scp でファイルを転送しようとしたときや、 12.1-RELEASE のサーバが nfs サーバだったりすると、データの転送が全くできない状態。

FreeBSD 12.1-RELEASE はアップロード (受信側) はなんとか速度が出る状態だけど、ダウンロード (送信側) は最初チョロョロそのうちストール。状態で全く利用できない状態。

 
どうしてそうなったのか? と、言えば FreeBSD 12.1-RELEASE になって、 if_vmx.ko は fib に対応したのですが、そこにバグがあるようです。fib については簡単にですが以前書いていますので、そちらを参考にして頂ければと思います。僕的には ubuntu の VRF のような動作ができない機能なので、全く使う気にはならないのですけども。

 
12.1-RELEASE でバグが入り込んでしまったのは if_vmx.ko のみなので、 Vmware ESXi で動作している FreeBSD 12.1-RELEASE は NIC を E1000 、つまりは em0 に変えることにより通信が復活するようになります。ただし、 NIC を変更すると /etc/rc.conf などに記載している設定を変更する必要があるために、インパクトがそれなりに大きいです。

12.0-RELEASE のカーネルソースツリーが手元にある人は 12.1-RELEASE 上で sys/modules/vmware/vmxnet3/ までたどり着いて、そこで make install 叩けばフツーに利用できるようになります。

とは、簡単に行かないか・・。

 
1). 12.0-RELEASE のソースツリーを 12.1-RELEASE 上に用意
2). 12.1-RELEASE 上で 12.0-RELEASE の sys/modules/vmware/vmxnet3/ を make install
3). カーネル再構築時は 12.1-RELEASE のソースを利用
4). GENERIC カーネルを利用しているのであれば GENERIC コンフィグから device vmx をコメントアウトしてカーネル再構築 && インストール
5). /boot/modules/ にインストールされた 12.0-RELEASE の if_vmx.ko を /boot/kernel/ に移動
6). /boot/loader.conf に if_vmx.ko をロードするように記載
7). FreeBSD の再起動

 
これだけやる必要があります。

 
今の所 12.1-RELEASE にバージョンアップして通信ができなくなるのは if_vmx.ko が原因になるので、他の NIC では発生していないと思われます。

 
僕は、物理 NIC を割り当てていない vSwitch 経由の FreeBSD の NIC は if_vmx.ko を利用して MTU を 9000 にしています。
物理 NIC を割り当てている vSwitch では if_vmx.ko を利用していますが MTU は 1500 のままにしています。
どちらの場合も通信が滞るので MTU は関係ありません。

バグレポートも上がっているようです。が、直接的な解決策はまだ見つかっていないようです。

Bug 236999 – vmx driver stops sending network packets and resets connections (TCP) but allows ICMP

某 BSD 系な Slack で仲間連中と色々話したり試験したりしているのですが、再現性は 100% で、かつ、今日現在 if_vmx.ko での回避策を見出せていません。

 
なお、 Vmware ESXi 上に FreeBSD をサーバとして if_vmx.ko を利用しているサービスはほぼ全滅です。ウェブ・ FTP ・ svn サーバ・ NFS サーバ、その他諸々。

FreeBSD 12.0-RELEASE を Vmware ESXi 上で稼働させていて、FreeBSD 12.1-RELEASE にバージョンアップした人、しようとした人はお気をつけください。

  5 件のコメント to “FreeBSD 12.1-RELEASE の if_vmx.ko は通信できない。”

  1. あ。令和二年一発目のエントリでしたね。
    新年明けましておめでとうございます。
    最近、更新が少なくなっているのですが、今年も宜しくお願いします。

  2. あれ?ESXI上でFreeBSD 12.1何台か動作してますが、全く問題ないですが。
    何が違うのでしょう?
    FreeBSDのインストールも大体が12.0からfreebsd-update upgradeなのですが・・・

  3. なすび さんこんにちは。
    ESXi 上の FreeBSD から出のパケットが止まる傾向がありますね。
    あと、ssh ログインして ls とか叩く分には問題は出ない雰囲気です。
    ウェブサーバとか、NFS とか大量のデータを ESXi 上の FreeBSD から取り出すときに止まる傾向があります。

  4. いつも参考にさせていただいております。
    FreeBSD 11.3->12.1 にアップグレード時点ですでにいろいろと難産を経験しております。
    若干機材が古いため ESXi6.0 から先に行けてないのもありますが、em0でもネットワークが
    切れやすくなっています。12.1p2 で改善されるのでしょうか。

    • strnh さん。こんばんは。
      遅い返事で済みませんでした。

      実は、うちの 古い PC (Athlon64 2Core) に ESXi5.5 インストールして、その上で FreeBSD12.1-RELEASE を動かしています。

      apache24 を ports からインストールして、テスト的にスピードテストのコンテンツのせているのですが、ダウンロードは 1Mbps 出ません。アップロードは 150Mbps くらい出るんですけどね。
      vmx0が調子悪かったので、僕もem0 で試しているのですが、やっぱりダメです・・。orz。
      PCに刺さっている物理 NIC も em0なんですけどね。

      12.0-R はまぁ、まだ良かったのですけどねぇ・・。 12.1-R は結構ヒサン・・。

たかちゃん。 にコメントを残す コメント書き込みをキャンセル

HTML タグが利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(必須項目)

(必須項目)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください