使用通用路由封装的网络虚拟化

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)
  • 传输 (Tx) 校验和卸载(IPv4、TCP、UDP)
  • 接收 (Rx) 校验和卸载(IPv4、TCP、UDP)

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

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

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

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

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