关于使用通用路由封装 (NVGRE) 实现网络虚拟化

Hyper-V 网络虚拟化支持使用通用路由封装 (NVGRE) 作为 IP 地址虚拟化机制的网络虚拟化。 在 NVGRE 中,虚拟机的数据包封装在另一个数据包中。 此 NVGRE 格式的新数据包的标头具有适当的源和目标提供程序区域 (PA) IP 地址。 此外,它还具有一个 24 位虚拟子网 ID (VSID) ,该 ID 存储在新数据包的 GRE 标头中。

下图显示了一个 GRE 封装的数据包。 在网络上,NVGRE 封装的数据包看起来类似于以太网上的 IP 数据包,只不过外部 IP 标头的有效负载是 GRE 封装的 IP 数据包 (包括以太网标头) 。

比较原始数据包和 GRE 封装数据包的关系图。两者都具有 MAC、IP 标头、TCP 标头和 TCP 用户数据。GRE 封装的数据包还具有外部 MAC、外部 IP 标头和 GRE。

NDIS 6.30 (在 Windows Server 2012 及更高版本中可用) 引入了 NVGRE 任务卸载,这使得可以将 NVGRE 格式的数据包用于:

  • 大量发送卸载 (LSO)
  • 虚拟机队列 (VMQ)
  • (IPv4、TCP、UDP) 传输 (Tx) 校验和卸载
  • 接收 (Rx) 校验和卸载 (IPv4、TCP、UDP)

NDIS 6.85 引入了对 NVGRE 的支持,支持 UDP 分段卸载 (USO) 。

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

注意:协议驱动程序还可以卸载没有内部 TCP 或 UDP 标头的 NVGRE 格式数据包。 例如,IP 数据包可能有一个内部有效负载,该有效负载是 Internet 控制消息协议 (ICMP) 数据包。

有关 NVGRE 的详细信息,请参阅以下 Internet 草稿:

NVGRE 基于泛型路由封装 (GRE) 。 有关 GRE 的详细信息,请参阅以下资源:

本节包括:

卸载校验和任务

卸载大型 TCP 数据包的段

TCP/IP 任务卸载