关于使用通用路由封装 (NVGRE) 实现网络虚拟化
Hyper-V 网络虚拟化支持使用通用路由封装 (NVGRE) 作为 IP 地址虚拟化机制的网络虚拟化。 在 NVGRE 中,虚拟机的数据包封装在另一个数据包中。 此 NVGRE 格式的新数据包的标头具有适当的源和目标提供程序区域 (PA) IP 地址。 此外,它还具有一个 24 位虚拟子网 ID (VSID) ,该 ID 存储在新数据包的 GRE 标头中。
下图显示了一个 GRE 封装的数据包。 在网络上,NVGRE 封装的数据包看起来类似于以太网上的 IP 数据包,只不过外部 IP 标头的有效负载是 GRE 封装的 IP 数据包 (包括以太网标头) 。
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 的详细信息,请参阅以下资源:
本节包括:
- 有关使用通用路由封装 (NVGRE) 任务卸载实现网络虚拟化的概述
- 在大规模发送卸载 (LSO) 中支持 NVGRE
- 支持 UDP 分段卸载中的 NVGRE (USO)
- 在校验和卸载中支持 NVGRE
- 在 RSS 和 VMQ 接收任务卸载中支持 NVGRE
- 在接收路径中查找已封装数据包的传输标头
- 确定网络适配器的 NVGRE 任务卸载功能
- 查询和更改 NVGRE 任务卸载状态
- NVGRE 任务卸载的标准化 INF 关键字