NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_V2 構造体 (ntddndis.h)

NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_V2構造体には、Virtual Extensible LAN (VXLAN) タスク オフロードのパケット カプセル化情報が含まれています。 VXLAN は NVGRE タスク オフロードに似ていますが、プロトコルは異なります。

この構造体は、NDIS 6.50 以降のNDIS_OFFLOAD構造体のカプセル化されたPacketTaskOffloadVxlan メンバーで使用されます。

構文

typedef struct _NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_V2 {
  ULONG                        TransmitChecksumOffloadSupported : 4;
  ULONG                        ReceiveChecksumOffloadSupported : 4;
  ULONG                        LsoV2Supported : 4;
  ULONG                        RssSupported : 4;
  ULONG                        VmqSupported : 4;
  ULONG                        UsoSupported : 4;
#if ...
  ULONG                        Reserved : 8;
#else
  ULONG                        Reserved : 12;
#endif
  ULONG                        MaxHeaderSizeSupported;
  union {
    struct {
      USHORT VxlanUDPPortNumber;
      USHORT VxlanUDPPortNumberConfigurable : 1;
    } VxlanInfo;
    ULONG Value;
  } EncapsulationProtocolInfo;
  _ENCAPSULATION_PROTOCOL_INFO _ENCAPSULATION_PROTOCOL_INFO;
  ULONG                        Reserved1;
  ULONG                        Reserved2;
} NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_V2, *PNDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_V2;

メンバー

TransmitChecksumOffloadSupported

送信チェックサムのタスク オフロード設定。

ReceiveChecksumOffloadSupported

受信チェックサムのタスク オフロード設定。

LsoV2Supported

大規模な送信オフロード バージョン 2 (LSOv2) のタスク オフロード設定。

RssSupported

受信側スケーリング (RSS) のタスク オフロード設定。

VmqSupported

仮想マシン キュー (VMQ) のタスク オフロード設定。

UsoSupported

UDP セグメント化オフロード (USO) のタスク オフロード設定。

Reserved

システムで使用するために予約されています。

MaxHeaderSizeSupported

このメンバーは、パケットの先頭から内部 TCP または UDP ペイロードの先頭 (TCP または UDP 内部ヘッダーの最後のバイト) までの最大ヘッダー サイズに設定する必要があります。NIC は、これらのすべてのタスク オフロードに対してサポートする必要があります。 プロトコル ドライバーは、結合されたカプセル化ヘッダーがこのサイズを超えるパケットの処理をオフロードしないことが予想されます。

ヒント

256 バイトは、考えられるすべてのケースをカバーする適切な既定値です。

EncapsulationProtocolInfo

VxlanInfo メンバーと Value メンバーを含む共用体。

EncapsulationProtocolInfo.VxlanInfo

VxlanUDPPortNumber メンバーと VxlanUDPPortNumberConfigurable メンバーを含む構造体。

EncapsulationProtocolInfo.VxlanInfo.VxlanUDPPortNumber

VXLAN UDP 宛先ポートに使用するポート番号。

EncapsulationProtocolInfo.VxlanInfo.VxlanUDPPortNumberConfigurable

UDP ポート番号が構成可能かどうかを示します。

EncapsulationProtocolInfo.Value

このパケットの UDP チェックサム値。

_ENCAPSULATION_PROTOCOL_INFO

Reserved1

システムで使用するために予約されています。

Reserved2

システムで使用するために予約されています。

注釈

初期機能アドバタイズおよび NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG および NDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES 状態表示では、 TransmitChecksumOffloadSupportedReceiveChecksumOffloadSupportedLsoV2SupportedRssSupportedVmqSupportedおよび UsoSupported の各メンバーを、次のフラグのビットごとの OR に設定できます。

期間 説明
NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_NOT_SUPPORTED ミニポート アダプターが、メンバーが指定する対応するタスク オフロード機能をサポートしないことを指定します。
NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV4 ミニポート アダプターが、カプセル化されたパケットの内部 IP ヘッダーが IPv4 である場所をメンバーが指定する、対応するタスク オフロード機能をサポートすることを指定します。
NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV4 ミニポート アダプターが、カプセル化されたパケットの外部 IP ヘッダーが IPv4 である場所をメンバーが指定する対応するタスク オフロード機能をサポートすることを指定します。
NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV6 ミニポート アダプターが、カプセル化されたパケットの内部 IP ヘッダーが IPv6 である場所をメンバーが指定する対応するタスク オフロード機能をサポートすることを指定します。
NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV6 ミニポート アダプターが、カプセル化されたパケットの外部 IP ヘッダーが IPv6 である場所をメンバーが指定する対応するタスク オフロード機能をサポートすることを指定します。

たとえば、ミニポート アダプターとドライバーが IPv6 ヘッダーのみを外部 IP ヘッダーとしてサポートし、内部 IP ヘッダーとしてサポートしていない場合は、 TransmitChecksumOffloadSupportedReceiveChecksumOffloadSupportedLsoV2SupportedRssSupportedVmqSupportedUsoSupported をビットごとの OR の値に設定NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV4、NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV4、およびNDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV6。

IP オプションと TCP オプションに関しては、カプセル化されたパケットに対して次の想定が行われました。

  • NIC で IpOptionsTcpOptions のサポートが通常のチェックサム オフロードと LSOv2 アドバタイズで指定されている場合、VXLAN タスク オフロードを使用するネットワーク仮想化がサポートされている場合は、カプセル化されたパケットのオプション処理をサポートする必要があります。 これは、カプセル化されたパケット内の内部 IP オプションと外部 IP オプションと TCP オプションの両方をサポートすることを意味します。 VXLAN タスク オフロードのみに固有の個別の機能アドバタイズはありません。

プロトコル ドライバーは、内部と外部の IP ヘッダーのバージョンが異なるパケットを意味する "混合モード" パケットをオフロードすることが可能です。 たとえば、パケットの外部 IP ヘッダーは IPv6、内部 IP ヘッダーは IPv4 になります。

VXLAN の詳細については、 RFC 7348 を参照してください。

要件

要件
サポートされている最小のクライアント NDIS 6.50
Header ntddndis.h (ndis.h を含む)

こちらもご覧ください

NDIS_OFFLOAD