次の方法で共有


RSC ドライバーのプログラミングに関する考慮事項

次のセクションでは、受信セグメント結合 (RSC) 対応ミニポート ドライバーを実装するときに考慮すべき問題について説明します。

RSC 統計のクエリへの応答

NDIS、上位のドライバー、ユーザー モード アプリケーションは、OID_TCP_RSC_STATISTICS OID を使用して、ミニポート アダプターの RSC 統計情報を取得します。 RSC 対応ミニポート ドライバーは、この OID をサポートする必要があります。

転送された TCP パケット

ミニポート ドライバーは、ホストを意図していないが、別のインターフェイスで転送されている TCP パケット内のセグメントに対して RSC を実行すべきではありません。

ホスト TCP/IP スタックは、転送が有効になっているインターフェイスで RSC を無効にします。 弱いホスト転送は、RSC に影響を与えません。

軽量フィルターと MUX 中間ドライバーの RSC サポート

すべての NDIS 6.30 軽量フィルター ドライバーは、リンクの最大伝送単位 (MTU) より大きい受信パケットをサポートする必要があります。 セグメント サイズの制限について詳しくは、「結合セグメントの指示」をご覧ください。

ホスト スタック内の軽量フィルター ドライバーまたは MUX 中間ドライバーが NDIS 6.20 以下の場合、NDIS はインターフェイス上の RSC を無効にします。

インターフェイスの NDIS バージョンが 6.30 以上の場合でも、MUX 中間ドライバーは、インターフェイスで RSC を無効にすることができます。

Windows フィルタリング プラットフォーム (WFP) の検査およびコールアウト ドライバー

WFP コールアウト ドライバーは、1 つ以上のカーネル モード フィルター レイヤーでフィルター エンジンにカスタム コールアウト関数を追加することにより、追加のフィルター機能を提供します。 コールアウトでは、詳細な検査とパケット、ストリームの変更がサポートされます。

WFP コールアウト ドライバーは、リンク MTU より大きいサポート受信パケットの処理をサポートすることがあります。 (パケット サイズの制限について詳しくは、「結合セグメントの追跡と指示」をご覧ください)。このような WFP コールアウト ドライバーでは、次の操作を行う必要があります。

  • 登録時に、大きなパケットの処理にオプトインします。

  • FWPS_CALLOUT2 構造のリファレンス ページで指定されているコールアウト ドライバー フラグを設定します。

大きいパケットの処理にオプトインしていないコールアウト ドライバーが登録されるたびに、WFP は登録のコンテキストで TCP/IP に通知します。 この通知処理の一環として、TCP/IP はインターフェイス上の RSC を無効にします。

コールアウト登録時にアクティブな TCP トラフィックがある場合、TCP/IP は WFP に通知します。 WFP は、RSC が無効になるまで、登録済みフィルターの呼び出しを遅延させます。 これにより、コールアウト ドライバーが大きいパケットから保護されます。