最近,Linux と Ethernet の NIC (Network Interface Card) をつかって Ethernet でない (IP でもない -- 非 IP) プロトコルで通信する実験をしている. きっかけは仕事で Interop などでのデモをする必要にせまられたところからきているが,それにとどまらない実験をこころみている. Ethernet ではないのでうごかなくても NIC のベンダにもんくはいえないのだが,けっこう,うごいてくれる.
Ethernet ではないプロトコルということは,Ethernet とはプロトコル・フォーマットがちがっていて,Ethernet のアドレスがついていないということだ. PC どうしを Ethernet スイッチを介してつなぐと,アドレスがついていなければうまく転送できない. しかし,PC どうしを直接つないだり,ダムハブを介してつなげば,転送することができる. ただし,プログラムは promiscuous mode を指定して,かかなければならない.
最近,一番ありふれた Ethernet 用の IC はカニのマーク,RealTek のものだ. RealTek のドライバは,promiscuous mode が指定されていれば,なんでもとおしてくれるようだ. しかし,他社のものはかならずしもそうでない. たまたま 5000 円くらいで買ったマザーボード M2N-MX にのっているのは ATTANSIC Gigabit LAN PHY なる IC だった. これはなにかをチェックしていて,RealTek ならとおるパケットがエラーになってしまう. ときにはパケットを受信するたびにエラーがカウントされる (ifconfig コマンドでみるとわかる) が,受信しているのになにもかわらないようにみえることもある. いずれにしても,この石はつかえない. 当然のことながら,IP パケットならちゃんと受信できるので,管理用ポートとしてつかうしかないようだ. 管理用には USB-Ethernet インターフェース (Buffalo LUA3-U2-ATX) を用意しているのだが,あまってしまった.
この PC には管理用もふくめて 4 個のネットワーク・インターフェースが必要だ. すでに 2 個しかない PCI スロットには NIC がささっている. さいわい,PCIe スロットがひとつあるので,ここに RealTek の石がのった NIC をさして,4 個のインターフェースを確保することができた.
関連項目 (2012-9-22 追記):