hyper-v网络虚拟化(hnv)中的gre隧道是基于rfc 2890的轻量级覆盖网络封装机制,通过在物理ip网络(pa)上封装租户虚拟网络(ca)流量实现逻辑隔离,由hnv控制平面自动配置、虚拟交换机透明执行封装/解封装,支持多租户云与混合云场景。
hyper-v 网络虚拟化(hnv)中的 gre 隧道,本质是通过 gre 封装在物理网络之上构建逻辑隔离的租户网络。它不加密、不认证,但轻量、标准(rfc 2890)、跨厂商兼容,特别适合多租户云环境或混合云场景中实现虚拟子网互通。
GRE 在 HNV 中的角色定位
GRE 是 HNV 覆盖网络(Overlay Network)的关键封装机制之一。HNV 的核心目标是解耦虚拟网络(Customer Address, CA)与底层物理网络(Provider Address, PA)。GRE 隧道就运行在这两者之间——两端 Hyper-V 主机作为隧道端点(Tunnel End Point, TEP),负责对租户数据包进行封装(加外层 PA 头)和解封装(剥除外层头),使不同主机上的虚拟机仿佛处于同一二层网络。
- 每个租户虚拟网络对应一组 GRE 隧道端点(通常是运行 HNV 的 Hyper-V 主机)
- 隧道由 HNV 控制平面(如 SCVMM 或网络控制器)自动配置,无需手动敲命令
- 实际封装动作由 Hyper-V 虚拟交换机中的 HNV 筛选器(HNV Filter)完成,在数据包进出 VM 时透明执行
配置前提与基础组件
启用 GRE 隧道前,必须确保以下要素已就绪:
- 物理网络连通性:所有参与 HNV 的 Hyper-V 主机之间,其提供者地址(PA,即管理/集群网卡 IP)需三层可达,且允许协议号 47(GRE)通行
-
IP 转发开启:Windows Server 默认关闭 IPv4 转发,需在每台主机执行:
Set-NetIPInterface -AddressFamily IPv4 -Forwarding Enabled - HNV 角色安装:需安装“网络控制器”角色(HNVv2)或通过 SCVMM 部署 HNVv1;单纯启用 Hyper-V 角色不等于启用 HNV
- 逻辑网络定义:在控制平面中预先划分用于承载 GRE 隧道的逻辑网络(如 “PA-Network”),并绑定到物理网卡
GRE 隧道的自动化部署流程
HNV 中的 GRE 隧道不是逐台手工配置的接口,而是由控制平面统一纳管、按需建立的动态隧道。典型流程如下:
- 管理员在 SCVMM 或网络控制器中定义租户虚拟网络(含 CA 子网、策略、网关等)
- 将虚拟机连接到该虚拟网络后,控制平面自动计算该 VM 所属主机与其他相关主机之间的隧道需求
- 向各 Hyper-V 主机下发 GRE 隧道端点信息(本端 PA、对端 PA)及 CA-PA 映射表(CA-to-PA Mapping)
- Hyper-V 主机上的 HNV 代理接收指令,调用内核 GRE 模块创建隧道上下文,并注入转发规则
- 当 VM 发送数据包时,虚拟交换机根据 CA 目标查映射表,匹配到对端 PA 后自动封装进 GRE 包,从 PA 网卡发出
验证与排错要点
确认 GRE 隧道是否生效,重点不在“接口 up/down”,而在于封装行为与策略命中:
- 查看隧道状态:
Get-NetOffloadGlobalSetting | Where-Object {$_.Name -eq "Gre"} —— 确认 GRE 卸载启用 - 检查 CA-PA 映射:
Get-NetVirtualizationProviderAddress 和
Get-NetVirtualizationCustomerRoute - 抓包验证封装:
在 PA 网卡上用 Wireshark 过滤 gre,应能看到外层源/目的为 PA 地址、内层为 CA 地址的包 - 常见不通原因:
• PA 网络 ACL 阻止了 GRE(协议 47)
• CA 子网路由未正确注入虚拟交换机
• 时间不同步导致证书或策略校验失败(尤其使用网络控制器时)











