NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_V2 结构 (ntddndis.h)

NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_V2 结构包含虚拟可扩展 LAN (VXLAN) 任务卸载的数据包封装信息。 VXLAN 类似于 NVGRE 任务卸载,但协议不同。

此结构在 NDIS 6.50 及更高版本中的 NDIS_OFFLOAD 结构的封装包TaskOffloadVxlan 成员中使用。

语法

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_CONFIGNDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES 状态指示中,可以将 TransmitChecksumOffloadSupportedReceiveChecksumOffloadSupportedLsoV2SupportedRssSupportedVmqSupportedUsoSupported 成员设置为以下标志的按位 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 设置为 NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV4 的按位 OR 值,NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV4和NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV6。

关于 IP 选项和 TCP 选项,对封装的数据包进行了以下假设:

  • 如果 NIC 在正常校验和卸载和 LSOv2 播发中指定 IpOptionsTcpOptions 支持,则如果支持使用 VXLAN 任务卸载的网络虚拟化,则必须支持封装数据包的选项处理。 这意味着它将支持封装数据包中的内部和外部 IP 选项以及 TCP 选项。 对于特定于 VXLAN 任务卸载的功能,没有单独的功能播发。

协议驱动程序可以卸载“混合模式”数据包,这意味着内部和外部 IP 标头版本不同的数据包。 例如,数据包可以将外部 IP 标头作为 IPv6,将内部 IP 标头作为 IPv4。

有关 VXLAN 的详细信息,请参阅 RFC 7348

要求

要求
最低受支持的客户端 NDIS 6.50
标头 ntddndis.h (包括 ndis.h)

另请参阅

NDIS_OFFLOAD