nat会话数60万对hyper-v服务器及路由器进行的优化操作
从你贴出的结果来看,这些配置都已经生效了,而且从 Windows Server 2025 + Hyper-V + 万兆网络 + 大量虚拟机通信 的场景来看,总体是合理的。
当前状态分析
1. TCP 动态端口范围
修改前:
49152-65535
共16384个端口
修改后:
1025-65535
共64511个端口
验证:
netsh int ipv4 show dynamicport tcp
结果:
启动端口 : 1025
端口数 : 64511
说明已生效。
适用于:
-
Hyper-V主机
-
数据同步服务器
-
大量TCP短连接
-
IIS/Nginx反向代理
-
RabbitMQ
-
MongoDB/MySQL同步
可显著降低临时端口耗尽风险。
2. UDP 动态端口范围
你又执行了:
netsh int ipv4 set dynamicport udp start=1025 num=64511
验证:
启动端口 : 1025
端口数 : 64511
已生效。
对于:
-
DNS
-
SIP
-
SNMP
-
VXLAN
-
某些监控系统
有帮助。
3. TCP Auto-Tuning
修改前:
接收窗口自动调节级别 : disabled
修改后:
接收窗口自动调节级别 : normal
对于万兆环境建议保持:
normal
不要改成:
experimental
微软官方也不推荐生产环境使用 experimental。
4. RFC1323 Timestamp
当前:
RFC 1323 时间戳 : allowed
这里不是 enabled,而是:
allowed
表示:
可以协商使用
但不会强制使用
这是 Windows Server 2022/2025 的正常默认值。
建议保持:
allowed
不要改 disabled。
原因:
-
SMB3
-
Hyper-V Live Migration
-
高带宽高延迟链路
会受益于 Timestamp。
5. ECN
当前:
ECN 功能 : enabled
这个比较特殊。
ECN(Explicit Congestion Notification)用于网络拥塞通知。
优点:
减少丢包
提高吞吐
缺点:
某些旧交换机
某些旧防火墙
某些运营商设备
兼容性不好
如果你网络里有:
-
老华为交换机
-
老H3C交换机
-
老防火墙
建议改回:
netsh int tcp set global ecncapability=disabled
如果全是新设备,可以保持 enabled。
关于 winnat
你执行:
net stop winnat
返回:
没有启动 Windows NAT Driver 服务
这是正常的。
说明当前主机没有使用:
Hyper-V NAT
Docker NAT
Container NAT
至少没有启用 WinNAT。
无需处理。
我建议你再检查两个关键项
查看端口耗尽情况
PowerShell:
Get-NetTCPConnection | Measure-Object
查看当前连接数。
查看 TIME_WAIT 数量
netstat -ano | find /c "TIME_WAIT"
如果经常超过:
10000+
甚至:
30000+
那么扩大动态端口范围就非常有价值。
针对你的 Hyper-V 宿主机
我建议最终配置如下:
netsh int tcp set global autotuninglevel=normal
netsh int ipv4 set dynamicport tcp start=1025 num=64511
netsh int ipv4 set dynamicport udp start=1025 num=64511
netsh int tcp set global timestamps=enabled
或者保持当前:
RFC1323 时间戳 : allowed
即可。
如果你这台服务器承担 20 个以上 Hyper-V 虚拟机,并且有 MySQL、MongoDB、RabbitMQ、文件同步等大量东西南北向流量,我还建议检查:
Get-NetAdapterRss
Get-NetAdapterRsc
Get-NetAdapterAdvancedProperty
看看万兆网卡是否开启了:
-
RSS(Receive Side Scaling)
-
VMQ(Virtual Machine Queue)
-
VMMQ(Virtual Machine Multi Queue)
-
RSC(Receive Segment Coalescing)
这些优化对 Hyper-V 的收益往往比修改 TCP 参数更明显。