パケット結合の概要
特定の IP バージョン 4 (IPv4) および IP バージョン 6 (IPv6) ネットワーク プロトコルには、ブロードキャスト アドレスまたはマルチキャスト アドレスへのパケットの送信が含まれます。 これらのパケットは、IPv4/IPv6 サブネット内の複数のホストによって受信されます。 ほとんどの場合、これらのパケットを受信するホストは、これらのパケットを処理しません。 したがって、これらの不要なマルチキャストまたはブロードキャスト パケットを受信すると、受信ホスト内で不要な処理と電力消費が発生します。
たとえば、ホスト A は、IPv6 サブネットでリンク ローカル マルチキャスト名前解決 (LLMNR) 要求を送信して、ホスト B の名前を解決します。 ホスト A を除き、この LLMNR 要求はサブネット上のすべてのホストによって受信されます。 ホスト B を除き、他のホストで実行される TCP/IP プロトコル スタックはパケットを検査し、パケットが目的としていないと判断します。 そのため、プロトコル スタックはパケットを拒否し、NdisReturnNetBufferLists 呼び出し ミニポート ドライバーにパケットを返します。
NDIS 6.30 以降では、ネットワーク アダプターは NDIS パケット結合をサポートできます。 ランダム ブロードキャストまたはマルチキャスト パケットの結合によって受信割り込みの数を減らすことで、システムの処理オーバーヘッドと電力消費量が大幅に削減されます。
パケット結合には、次の手順が含まれます。
TCP/IP プロトコル スタックなど、上にあるドライバーは、ブロードキャストおよびマルチキャスト パケットのスクリーンに使用される NDIS 受信フィルターを定義します。 基になるドライバーは、パケット結合をサポートする基になるミニポート ドライバーにこれらのフィルターをダウンロードします。 ダウンロード後、ミニポート ドライバーは、パケット結合受信フィルターを使用してネットワーク アダプターを構成します。
これらのフィルターの詳細については、「パケット結合受信フィルター」を参照してください。
受信フィルターに一致する受信パケットは、ネットワーク アダプターでキャッシュされるか、の結合された
として保存されます。 アダプターは、結合されたパケットの受信割り込みを生成しません。 代わりに、アダプターは、別のハードウェア イベントが発生したときにホストを中断します。 この割り込みが生成されると、アダプターは割り込みを伴う受信イベントを示す必要があります。 これにより、ネットワーク アダプターは、ネットワーク アダプターによって受信された合体パケットを処理できます。
たとえば、パケット結合をサポートするネットワーク アダプターは、次のいずれかのイベントが発生したときに受信割り込みを生成できます。
一致する受信フィルターの最大合体遅延値に有効期限が設定されているハードウェア タイマーの有効期限。
ハードウェア統合バッファー内の利用可能なスペースが、アダプターが設定した閾値に達します。
結合フィルターと一致しないパケットが受信されます。
送信完了イベントなどの別の割り込みイベントが発生しました。
このプロセスの詳細については、「パケット結合受信フィルターの処理
を参照してください。
NDIS によるパケット結合のサポートには、次の点が適用されます。
NDIS は、物理ネットワーク アダプターに割り当てられている既定の NDIS ポート (ポート 0) で受信したパケットのパケット結合をサポートします。 NDIS は、仮想ネットワーク アダプターに割り当てられている NDIS ポートでのパケット結合をサポートしていません。 詳細については、「NDIS ポートの概要」を参照してください。
NDIS は、ネットワーク アダプターの既定の受信キューで受信したパケットのパケット結合をサポートします。 この受信キューには、NDIS_DEFAULT_RECEIVE_QUEUE_IDの識別子があります。