NDIS 6.x を使用してイーサネット ブリッジを構築するための最良の選択と方法は何かと考えていました。ミニポート、IM、プロトコル、フィルター ドライバーのどれを使用すればよいですか?
WDK で利用可能なプロトコル ドライバーのサンプルをカスタマイズしようとしたところ、イーサネット アダプターに正常に接続されました。次は何?
どんな助けでも大歓迎です。
Windows 7x64 の使用
NDIS 6.x を使用してイーサネット ブリッジを構築するための最良の選択と方法は何かと考えていました。ミニポート、IM、プロトコル、フィルター ドライバーのどれを使用すればよいですか?
WDK で利用可能なプロトコル ドライバーのサンプルをカスタマイズしようとしたところ、イーサネット アダプターに正常に接続されました。次は何?
どんな助けでも大歓迎です。
Windows 7x64 の使用
使用可能な NDIS ドライバーの種類 (ミニポート、軽量フィルター、およびプロトコル) を見てみましょう。
ミニポートはホスト OSからパケットを受信するため、 NDIS ミニポートだけではこの問題を解決できません。ネットワークからパケットを受信するものが必要です。
NDIS 軽量フィルターでこの問題を解決できますが、解決策は少し厄介です。関連のない 2 つのミニポート スタック間で手動で同期する必要があります。これは思ったより難しいです。以前にこれを試みた他の人は、最初の数回の試みでこれを間違えました。
NDIS プロトコル ドライバーは、この問題を解決する最善の方法です。プロトコル ドライバーは、複数のミニポートに接続するように設計されており、プロトコル ドライバーには、1 つのミニポート スタックから別のミニポート スタックにパケットをルーティングする機能があります。
しかし、プロトコル ドライバーには 1 つの機能がありません。プロトコル ドライバーを作成するだけの場合、ドライバーは次のように配置されます。
[TCPIP] [YourProtocol]
| \ / |
| \/ |
| /\ |
| / \ |
[NIC0] [NIC1]
つまり、ホストの TCPIP スタックは、両方の NIC を個別の NIC として認識します。(@Aczire、以前の質問で、これで問題ないことを示しました。ただし、説明のために、残りの話は次のとおりです。)
NDIS を使用すると、この種の問題をMUX-IM ドライバーで解決できます。IM ドライバーは基本的に、別のミニポートに接着された単なるプロトコルです。これにより、ホスト OS が認識するものを正確に制御できます。
[TCPIP]
|
|
|
|
[YourMiniport]
[YourProtocol]
| |
| |
| |
| |
[NIC0] [NIC1]
このアーキテクチャを使用すると、ホスト OS をだまして、これら 2 つのネットワークが同じであると認識させることができます。(たとえば、ユーザー向けの GUI には、2 つではなく 1 つのネットワーク アダプターが表示されます。) ただし、IM ドライバーにはかなりの複雑さが伴います。作成が難しく、正しく行うのはさらに困難です。十分な経験と時間がない限り、IM ドライバーに取り組むことはお勧めしません。
プロトコル ドライバーができたので、次に何をしますか?
ネットワークがフラッディングしないように、配線サイクルを検出する必要があります。
802、802.1、および802.3の IEEE 規格には、ブリッジが何をすべきかについていくつかの特定のルールがあるため、それらをざっと読む必要があります。たとえば、宛先 MAC アドレス 01-80-C2-00-00-00 を特殊なケースにすることができます。