NVGRE タスク オフロード状態のクエリと変更

このセクションでは、NVGRE 対応ミニポート ドライバーの汎用ルーティング カプセル化 (NVGRE) タスク オフロード状態を使用して、現在のネットワーク仮想化を照会または変更する方法について説明します。 NVGRE タスク オフロードは既定で有効にすることができますが、既定で運用上アクティブにすることはできません。 NIC は、NDIS プロトコルまたはフィルター ドライバーによってこの機能が明示的に有効になるまで、カプセル化されたパケットのタスク オフロードの実行を開始してはなりません。

NVGRE タスク オフロード状態の照会

ミニポート ドライバーの現在の NVGRE タスク オフロード状態を照会するため、NDIS プロトコルまたはフィルター ドライバーは OID_TCP_OFFLOAD_CURRENT_CONFIG OID 要求を使用します。 この結果、NDIS_OFFLOAD 構造が返されます。この構造の EncapsulatedPacketTaskOffloadGre メンバーは、GRE カプセル化されたパケットに対してそのオフロードが現在有効になっている場合は NDIS_OFFLOAD_SUPPORTED、それ以外の場合は NDIS_OFFLOAD_NOT_SUPPORTED を含む NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD 構造になります。 NDIS は、この OID を処理し、ミニポートには渡しません。

ミニポート ドライバーが NVGRE タスク オフロードをサポートしているかどうかを確認するには、「ネットワーク アダプターの NVGRE タスク オフロード機能の判別」の説明に従って、OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES OID 要求を使用します。

NVGRE タスク オフロード状態の変更

NDIS プロトコルまたはフィルター ドライバーを有効にするか、OID_TCP_OFFLOAD_PARAMETERS OID 要求を発行することによって NVGRE タスク オフロードを無効にすることができます。 この OID は、NDIS_OFFLOAD_PARAMETERS 構造を使用します。 この構造では、EncapsulatedPacketTaskOffload メンバーは次の値を持つことができます。

用語 説明

NDIS_OFFLOAD_SET_NO_CHANGE

NVGRE タスクオフロード状態は変更されません。

NDIS_OFFLOAD_SET_ON

NVGRE タスク オフロードを有効にするには、このフラグを指定します。

NDIS_OFFLOAD_SET_OFF

NVGRE タスク オフロードを無効にするには、このフラグを指定します。

ミニポート ドライバーは、OID_TCP_OFFLOAD_PARAMETERS OID 要求を処理した後、更新されたオフロード状態で NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG ステータス指示を発行する必要があります。

NDIS_OFFLOAD_SET_OFF フラグが指定されている OID_TCP_OFFLOAD_PARAMETERS OID 要求をミニポート ドライバーが受け取ると、ドライバーは、OID 要求を完了する前に、スタックにタスク オフロードするために部分的に処理されているカプセル化された既存のパケットをすべて示す必要があります。

通常のパケットの基本タスク オフロードは、OID_OFFLOAD_ENCAPSULATIONOID_RECEIVE_FILTER_ALLOCATE_QUEUE などの既存の OID によって有効になります。 EncapsulatedPacketTaskOffload メンバー設定は、これらの OID を補完し、カプセル化されたパケットに対してこれらのオフロードも行うよう NIC に指示します。