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 にバージョンアップした人、しようとした人はお気をつけください。
あ。令和二年一発目のエントリでしたね。
新年明けましておめでとうございます。
最近、更新が少なくなっているのですが、今年も宜しくお願いします。
あれ?ESXI上でFreeBSD 12.1何台か動作してますが、全く問題ないですが。
何が違うのでしょう?
FreeBSDのインストールも大体が12.0からfreebsd-update upgradeなのですが・・・
なすび さんこんにちは。
ESXi 上の FreeBSD から出のパケットが止まる傾向がありますね。
あと、ssh ログインして ls とか叩く分には問題は出ない雰囲気です。
ウェブサーバとか、NFS とか大量のデータを ESXi 上の FreeBSD から取り出すときに止まる傾向があります。
いつも参考にさせていただいております。
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 は結構ヒサン・・。