PCIeとネットワークの組み合わせで



ザイリンクス Kintex-7 FPGA KC705 評価キットインテル Cyclone 10 GX FPGA 開発キットなど、イーサーネットPHYやコネクタSFP+コネクタを備えたFPGAボードは各種ありますが、ネットワークデバイスとしてWindowsやLinuxで認識させるのはそう簡単ではありません。まず、イーサーネットPHYとコネクタはボード上に搭載されていますが、MACは有償IPとしてFPGAデザイン内に組み込む必要があります。さらにPCIデバイスとしてPCに認識されるためにはPCIexpress用のIPをFPGAデザインに組み込み、MAC周辺のデータ読み出しを補助する回路等を組み込む必要があります。さらにはWindowsまたはLinux用のデバイスドライバが必要です。ネットワークの通信内容を見たり加工したりするだけならPC上のネットワークデバイスとして登録する必要はありませんが、通常のネットワークカードのようにネットワークデバイスとして機能するためにはネットワークデバイスとしてOSに認識される必要があります。
Windows用のネットワークドライバはNDISと呼ばれるドライバが長い間使われています。OSにおいて必要なNIDSのバージョンはマイクロソフト社のNDIS バージョンの概要を参照するとわかりますが、Windows7でNDIS6.20、初期のWindows10でNDIS6.50でWindows11ではNDISは6.86となっています。Wifi等のモバイルデバイスではない有線LANの場合、機能的にはNDIS6.20で十分なようです。また、マイクロソフトはNDISにかわる新しいネットワークドライバとしてNetAdapterCx2.0を公開していますが、残念ながらWindows10ではその機能は限定的で、Windows11(NetAdapterCx2.2)を待つ必要がありそうです。
グルーヴデザインサービスでは以前よりイーサーネットMAC,PHYの制御、プロトコルスタックの構築、PCI Express用単純読み書き用ドライバ等を提供してきましたが、これらを組み合わせることでFPGAボード上のネットワークデバイスをWindowsPCでネットワークデバイスとして登録することができるようになりました。通常のネットワークボードを購入した場合、当然ドライバは付属していますが、FPGAボードの場合には新たに作成するしかありません。ところが、なかなかネットワークボードメーカー以外にネットワークドライバを作成する必要性、機会はないので、こういったサービスはあまり提供されていないように思います。ところがハードウェアレベルでネットワークデータ(イーサーフレームデータ)を加工、フィルタリング、情報収集、統計等を行いたい場合には、FPGA等で特殊な装置を作る必要があるようで、これまでもいくつか問い合わせを受けております。
これらのPHYやMAC、PCIeの制御要素、トータルのFPGAデザイン、Windows/Linuxドライバの一部またはすべてのソリューションに関しまして、解決したい課題がございましたらお気軽にお問い合わせください。
アクセスカウンター