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 状態表示では、 TransmitChecksumOffloadSupported、 ReceiveChecksumOffloadSupported、 LsoV2Supported、 RssSupported、 VmqSupported、 および 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 ヘッダーとしてサポートしていない場合は、 TransmitChecksumOffloadSupported、 ReceiveChecksumOffloadSupported、 LsoV2Supported、 RssSupported、 VmqSupported、 UsoSupported をビットごとの 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 で IpOptions と TcpOptions のサポートが通常のチェックサム オフロードと LSOv2 アドバタイズで指定されている場合、VXLAN タスク オフロードを使用するネットワーク仮想化がサポートされている場合は、カプセル化されたパケットのオプション処理をサポートする必要があります。 これは、カプセル化されたパケット内の内部 IP オプションと外部 IP オプションと TCP オプションの両方をサポートすることを意味します。 VXLAN タスク オフロードのみに固有の個別の機能アドバタイズはありません。
プロトコル ドライバーは、内部と外部の IP ヘッダーのバージョンが異なるパケットを意味する "混合モード" パケットをオフロードすることが可能です。 たとえば、パケットの外部 IP ヘッダーは IPv6、内部 IP ヘッダーは IPv4 になります。
VXLAN の詳細については、 RFC 7348 を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.50 |
Header | ntddndis.h (ndis.h を含む) |