小樱 发表于 2021/9/26 18:50

Windows 2019将TCP拥塞算法修改为CTCP来提速上传,修改默认值cubic

Windows 2019将TCP拥塞算法修改为CTCP来提速上传,修改默认值cubic

查询命令
netsh int tcp show global
netsh int tcp show supplemental


Windows 10
查询活动状态...

TCP 全局参数
----------------------------------------------
接收方缩放状态          : enabled
接收窗口自动调节级别    : normal
加载项拥塞控制提供程序: default
ECN 功能                      : disabled
RFC 1323 时间戳               : disabled
初始 RTO                         : 1000
接收段合并状态    : enabled
非 Sack Rtt 复原             : disabled
最大 SYN 重新传输次数             : 4
快速打开                           : enabled
快速打开回退                  : enabled
HyStart                           : enabled
比例费率降低         : enabled
节奏配置文件                      : off

TCP 全局默认模板为 internet

TCP 补充参数
----------------------------------------------
最小 RTO (毫秒)                  : 300
初始拥塞窗口(MSS)   : 10
拥塞控制提供程序         : cubic
启用拥塞窗口重新启动    : disabled
延迟 ACK 超时(毫秒)          : 40
延迟 ACK 频率               : 2
启用 RACK                         : enabled
启用尾部丢失探测            : enabled

请使用 "netsh int tcp show supplementalports" 和
"netsh int tcp show supplementalsubnets" 命令查看活动的筛选器。


Windows 2019
查询活动状态...

TCP 全局参数
----------------------------------------------
接收端缩放状态          : enabled
接收窗口自动调节级别    : normal
附加拥塞控制提供程序: default
ECN 功能                      : enabled
RFC 1323 时间戳               : disabled
初始 RTO                         : 3000
接收段合并状态    : enabled
非 Sack Rtt 复原             : disabled
最大 SYN 重新传输次数             : 2
快速打开                           : disabled
快速打开回退                  : enabled
HyStart                           : enabled
节奏配置文件                      : off

TCP 全局默认模板为 automatic


自动模式基于 TCP 连接参数在 Internet 和 Datacenter 模板
之间选取。

请使用 "netsh int tcp show supplementalports" 和
"netsh int tcp show supplementalsubnets" 命令查看活动的筛选器。


观察字段拥塞控制提供程序,可以看到系统默认值为cubic

也可以用 PowerShell 来查看,可观察到Windows 10和Windows 2019输出结果一致为cubic
Get-NetTCPSetting | Select SettingName, CongestionProvider
SettingName      CongestionProvider
-----------      ------------------
Automatic
InternetCustom   CUBIC
DatacenterCustom CUBIC
Compat         NewReno
Datacenter       CUBIC
Internet         CUBIC

根据结果,Windows server 2016 和 2012 使用默认拥塞控制算法作为 DCTCP。支持的另一种是 CTCP。

以下是根据 Microsoft 文档对两种拥塞控制算法的定义。

CTCP:构成 TCP 增加了接收窗口和发送的数据量。此值可以提高更高延迟连接的吞吐量。
DCTCP:数据中心 TCP 根据基于显式拥塞通知 (ECN) 信号的网络拥塞反馈调整 TCP 窗口。该值可以提高低延迟链路的吞吐量。

从 Windows server 2019 开始,默认的变成了 CUBIC,和 Linux 一样。

两种设置方法,立即生效无需重启系统,可以看到Windows 10默认值为internet,2019为automatic,包含了internet和Datacenter
cmd设置方法
netsh int tcp set supplemental template=internet congestionprovider=ctcp
netsh int tcp set supplemental template=Datacenter congestionprovider=ctcp

PowerShell设置方法
Set-NetTCPSetting -SettingName "internet" -CongestionProvider CTCP
Set-NetTCPSetting -SettingName "Datacenter" -CongestionProvider CTCP


参考文档:https://docs.microsoft.com/en-us/powershell/module/nettcpip/set-nettcpsetting?view=windowsserver2019-ps&viewFallbackFrom=win10-ps
https://community.spiceworks.com/topic/2225989-server-2019-network-performance
https://docs.microsoft.com/en-US/windows-server/networking/technologies/network-subsystem/net-sub-performance-tuning-nics#bkmk_tcp

实测修改成CTCP后没有改善,,,用bbr加速是真的有效果

不可名 发表于 2021/12/14 01:10

标记不懂路过{:3030:}
页: [1]
查看完整版本: Windows 2019将TCP拥塞算法修改为CTCP来提速上传,修改默认值cubic