How to Configure TCP RFC 3465 Appropriate Byte Counting in Windows 11 Using PowerShell

Modern high-speed TCP/IP communication requires robust congestion control mechanisms to prevent packet loss, buffer bloat, and throughput collapse across wide-area networks. Historically, TCP implementations in Windows increased congestion windows on a per-packet basis upon receiving an acknowledgement (ACK). To address scenarios where delayed ACKs or asymmetric routing skew congestion growth, RFC 3465 defines Appropriate Byte Counting (ABC). In Windows 11, administrators can inspect and configure this behaviour using PowerShell and TCP transport parameters.

What is Appropriate Byte Counting (RFC 3465)?

In standard TCP congestion avoidance, the sender increases its congestion window (cwnd) by one maximum segment size (MSS) for each incoming ACK. However, many network receivers implement delayed ACKs, sending a single ACK for every two packets received. In naive implementations, this cuts the congestion window growth rate in half.

Conversely, malicious receivers could send “ACK splits” (sending ACKs for tiny byte fragments) to trick senders into expanding their congestion windows too aggressively, causing network congestion.

RFC 3465 Appropriate Byte Counting resolves both issues by:

  • Increasing cwnd based on the number of previously unacknowledged bytes acknowledged by the incoming ACK, rather than the raw count of ACK packets.
  • Limiting the maximum increase per ACK to a capped factor (the limit factor L, typically 2 * MSS) to protect against ACK-splitting exploits.

Checking TCP Congestion and Transport Settings in PowerShell

Windows 11 manages TCP congestion parameters through the NetTCPSettings module:

  1. Right-click the Start button on Windows 11 and select Terminal (Admin) or PowerShell (Admin).
  2. Run the following cmdlet to review the active TCP profile parameters:
    Get-NetTCPSetting -SettingName Internet | Format-List
  3. Inspect active congestion control providers, ACK timeouts, and window scaling options:
    Get-NetTCPSetting | Select-Object SettingName, CongestionProvider, CwndRestart, DelayedAckTimeoutMs

Configuring Congestion Control Algorithms Supporting RFC 3465

In Windows 11, modern congestion providers like CUBIC and CTCP natively integrate Appropriate Byte Counting logic to maintain high throughput across broadband and fibre connections:

Setting the Congestion Provider to CUBIC

CUBIC is Microsoft’s default TCP congestion provider for Windows 11 and Windows Server, implementing advanced byte counting and window growth curves optimised for high-bandwidth, high-latency links:

Set-NetTCPSetting -SettingName Internet -CongestionProvider CUBIC
Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider CUBIC

Enabling BBR for Low-Latency Cloud Connections

On recent Windows 11 builds supporting experimental BBR (Bottleneck Bandwidth and RTT), administrators can evaluate BBR for links prone to random packet drops:

Set-NetTCPSetting -SettingName Internet -CongestionProvider BBR

Configuring Appropriate Byte Counting Registry Parameters

For fine-grained control over how the TCP/IP stack enforces RFC 3465 byte counting limits on TCP connections, Windows supports underlying registry adjustments under the TCP/IP parameters key:

  1. In PowerShell (Admin), inspect whether custom TCP byte counting flags are configured:
    Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "EnableByteCounting" -ErrorAction SilentlyContinue
  2. To explicitly enforce RFC 3465 Appropriate Byte Counting across all active interfaces:
    $tcpPath = "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
    Set-ItemProperty -Path $tcpPath -Name "EnableByteCounting" -Value 1 -Type DWord
  3. Ensure that TcpAckFrequency matches your network environment to prevent delayed ACK stalls:
    # Set ACK frequency to acknowledge every 2 packets (standard RFC compliance)
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\*" -Name "TcpAckFrequency" -Value 2 -Type DWord

Verifying Connection Throughput and Packet Pacing

After adjusting congestion settings and byte counting parameters, test link behaviour using Test-NetConnection or an iperf3 throughput benchmark:

Test-NetConnection -ComputerName 1.1.1.1 -Port 443 -InformationLevel Detailed

By enforcing Appropriate Byte Counting alongside modern congestion providers, Windows 11 maintains consistent window growth and avoids throughput drops across asymmetric or high-latency internet connections.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.