FreeBSD の NIC ドライバ

FreeBSD の NE2000 NIC (ネットワークインタフェースカード) 用のドライバはどうしようもなく低速である。うちのサイトのサーバは ThinkPad i1620 を使っているが,安物の LAN カードが刺さっており,オートネゴシエーションの NE2000 タイプなんだけど,ネットワークの転送速度が 100Mbps LAN で 100〜300KB/sec 程度しか出ないことが多い。WAN 並に遅いということになる。

オートネゴシエーションで対向 HUB とのネゴシエーションが空振りして大幅に転送能力が落ちるのはよくある話である。要になるサーバの 100baseTX/Full-Duplex インタフェースが Half なんかでオートネゴしてしまった日には,ネットワークパフォーマンスは蟻の這うがごとくにスローダウンする。これはネットワーク設計の FAQ といってもよい。うちの問題もおそらくこのパターンに嵌っていると思われる。しかしながら,FreeBSD の NE2000 用 ed ドライバはネゴシエーションのマニュアル設定も,実効ネゴシエーションの確認もできないのである。貧者の私の所有になる HUB もオートネゴシエーション「しか」できない最低級品である。

Mac,JCS 製 PC,もう 1 台の ThinkPad X20 の間では 5〜7MB/sec くらいのパフォーマンスは当たり前のように発揮できる。このうち後者 FreeBSD マシン 2 台の NIC はそれぞれ Intel 製 EtherExpress Pro (fxp ドライバ),3COM 製 内蔵 NIC (xl ドライバ) であり,NE2000 (ed ドライバ) と比べるとドライバの性能が格段に高いわけである。

FreeBSD マシンで高いネットワークパフォーマンスを必要とするシステムを考えるひとは,NIC や HUB の投資にはけちけちせず,ネゴシエーション設定機能の有無やドライバ性能をチェックして製品を選択することをお勧めする。これを怠ると,スイッチが多段接続しているような構成だと,どこにボトルネックがあるのか判らずパニックに陥ることがある。Linux だと事情はどうなのであろうか。