Recv segment coalescing ipv4 что это
VMWare VM Server OS & NIC Tuning Optimizations
VMWare VM Server Tuning – Windows OS & VMXNet3 Network Card Optimizations
In Windows, Open a command prompt window with elevated permissions and execute the following commands displayed in RED.
[Display the TCP stack settings]
C:> netsh int tcp show global
[Disable specific TCP stack parameters]
C:> netsh int tcp set global chimney= disabled
C:> netsh int tcp set global autotuninglevel= disabled
C:> netsh int tcp set global ecncapability= disabled
C:> netsh int tcp set global netdma= disabled
C:> netsh int tcp set global rsc= disabled
I usually put these commands in a batch file or script when I need to execute them.
There is no outage required to change these OS parameters. The “Receive Segment Coalescing State”, ie “RSC”, parameter seems to do the most good especially when running SQL server. There was a bug in the VMWare VMXnet3 driver that caused performance issues for SQL server when the “RSC” parameter was enabled on the OS. I believe that has been resolved in a newer driver version.
The other change that needs to made and this is the important one, is on the VMWare VMXNet3 network card.
In Windows, Edit the adapter and change the following parameters as shown in RED. Some parameters verbage may be slightly different depending on the version of the driver.
Receive Side Scaling (RSS) = ENABLE (This setting is a very important performance parameter)
RSS Base processor Number = 0
Maximum Number of RSS processors = 4 (Depends on the number of Processors available on the server. Choices are something like 2,4,8,16. Pick the closet one without going over. Important performance parameter)
Maximum Number of RSS queues = 4 (This should match the “Maximum Number of RSS Processors” parameter.)
IPv4 TSO Offload = DISABLE
IPv4 Checksum Offload= DISABLE
Recv Segment Coalescing (IPv4) = DISABLE
Recv Segment Coalescing (IPv6) = DISABLE
TCP Checksum Offload (IPv4) = DISABLE
TCP Checksum Offload (IPv6) = DISABLE
UDP Checksum Offload (IPv4) = DISABLE
UDP Checksum Offload (IPv6) = DISABLE
When done, click “ Ok ”. Saving these changes will cause a slight outage for the VM server as it needs to reset the network card to read in the new configuration parameters. Typically this outage lasts only 5 seconds maybe. So use with caution.
Why VMware thought it was a BAD idea to “ DISABLE ” the “ Receive Side Scaling “ parameter as a default on the VMXNet3 network card, I just can’t understand. Multiple processors are a good thing for networking, not a bad thing. The performance change increase for a SQL server is usually quite noticeable from some of the ones I have done in the past.
Низкая скорость сети на хосте Hyper-V с Windows Server 2019
Несколько раз встречался с тем, что скорость копирования файлов по сети с/на виртуальные машины на Hyper-V в Windows Server 2019 намного ниже, чем в ВМ аналогичной конфигурации на хосте с Windows Server 2016. В некоторых тестах скорость записи/чтения данных по сети на ВМ в Windows Server 2019 почти в три раза ниже, чем в WS2016 (тестировалось копирование по SMB, SSH/SCP). Эта статья не претендует на абсолютную истину, но в ней я попытался собрать различные методики улучшения производительности сети в виртуальных машинах Hyper-V на Windows Server 2019 (и последних билдах Windows 10).
Receive Segment Coalescing в Hyper-V 2019
В первую очередь нужно вспомнить про технологии Receive Segment Coalescing (RSC), которая появилась в Hyper-V на Windows Server 2019/2022 (и в Windows 10 начиная с билда 1809). Receive Segment Coalescing используется на уровне виртуального коммутатора (vSwitch), позволяет снизить нагрузку на CPU и увеличить пропускную способность сети за счет объединения нескольких TCP сегментов в меньшее количество более крупных сегментов. Увеличение производительности сети достигается за счет того, что несколько больших сегментов обрабатывают быстрее множества мелких.
Наличие включенной поддержки RSC часто бывает источником дополнительной сетевой задержки в некоторых комбинациях железа.
По умолчанию в Windows Server 2019 RSC включен для всех внешних (External) vSwitches.
Проверить, включен ли RSC для виртуальных коммутаторов можно командой:
Get-VMSwitch | Select-Object *RSC*
Можно запретить использовать RSC для IPv4 трафика на уровне клиентского сетевого адаптера:
Проверьте, увеличится ли скорость копирования в ВМ на Hyper-V при отключении RSC. Если скорость сети увеличилась, можно отключить RSC на виртуальном коммутаторе, к которому подключена ВМ.
Чтобы отключить программный RSC для определенного виртуального коммутатора, выполните команду:
Либо можно полностью отключить RSC на хосте:
netsh int tcp set global rsc=disabled
Режим VMQ в драйвере сетевого адаптера
В некоторых случаях наличие включенной опции VMQ (Virtual Machine Queue) в драйвере сетевого адаптера физического хоста Hyper-V может привести к плохой производительности сети в виртуальных машинах Hyper-V. Связано это с тем, что VMQ это аппаратная функция, и, если она не поддерживается железом, но включена в драйвере это вызывает потерю пакетов и увеличивает сетевую задержку. Эта проблема характерна для сетевых карточек Broadcom Gigabit и встречается во всех версиях Hyper-V на Windows 2012 R2/2016/2019.
Вы можете отключить VMQ в свойствах драйвера сетевого адаптера.
Либо вы можете вывести список сетевых адаптеров с поддержкой VMQ и их статус с помощью PowerShell:
Чтобы отключить VMQ для определенного адаптера, выполните команду (сетевой адаптер будет недоступен в течении пары секунд):
После отключения VMQ лучше перезагрузить хост и проверить сетевую производительность.
Оптимизация параметров протокола TCP для Windows Server 2019 Hyper-V
Сохраните текущие настройки TCP на хосте Hyper-V и примените новые настройки, которые сделают настройки протокола TCP в Windows Server 2019 максимально похожими на Windows Server 2016.
Сохраните текущие настройки:
Примените новые настройка для LAN сети:
Отключите методики оптимизации сетевого RSS и RSC на уровне стека TCP:
netsh int tcp show global
netsh int tcp set global RSS=Disabled
netsh int tcp set global RSC=Disabled
или на уровне сетевых адаптеров:
Отключите vRSS для всех ВМ:
Данные настройки стека TCP максимально приблизят настройки сетевых протоколов Windows Server 2019 к предыдущим версиям Windows Server.
Receive Segment Coalescing (RSC)
Applies To: Windows Server 2012
Receive Segment Coalescing (RSC)
RSC is a stateless offload technology that helps reduce CPU utilization for network processing on the receive side by offloading tasks from the CPU to an RSC-capable network adapter. CPU saturation due to networking-related processing can limit server scalability. This problem in turn reduces the transaction rate, raw throughput, and efficiency. RSC enables an RSC-capable network interface card to do the following:
Parse multiple TCP/IP packets and strip the headers from the packets while preserving the payload of each packet.
Join the combined payloads of the multiple packets into one packet.
Send the single packet, which contains the payload of multiple packets, to the network stack for subsequent delivery to applications.
The network interface card performs these tasks based on rules that are defined by the network stack subject to the hardware capabilities of the specific network adapter. This ability to receive multiple TCP segments as one large segment significantly reduces the per-packet processing overhead of the network stack. Because of this, RSC significantly improves the receive-side performance of the operating system (by reducing the CPU overhead) under network I/O intensive workloads.
Examples of other stateless offloads are Internet Protocol (IP) and Transmission Control Protocol (TCP) checksum, and Large Send Offload, which is also called Segmentation Offload.
When your server has an RSC-capable network interface card installed, RSC provides benefits under many circumstances, including the following:
Hosted cloud deployments. RSC minimizes the CPU cycles that are spent for network storage and live migration.
I/O intensive database applications and database replication.
File servers that are deployed with the Windows Server 2012 File Services server role. In addition, if your file server is also configured as a BranchCache-enabled content server, BranchCache performance is improved by RSC.
I/O intensive server workloads.
Because RSC is designed to improve performance and reduce latency for receive-intensive workloads, it does not significantly improve performance for send-intensive workloads, such as Web servers that send HTML files to Web browsers running on client computers and other devices. For receive-intensive workloads, RSC allows virtual and physical servers to effectively service a larger number of clients and connections.
Here are some key facts about RSC:
RSC is enabled by default for clean installations of all editions of Windows Server 2012 on computers that have RSC-capable network adapters. You do not need to take any action to enable RSC when you have an RSC-capable network interface card installed in your physical computer or used by a virtual machine that is running Windows Server 2012. In addition, you can track RSC status and usage by using relevant Performance Monitor counters.
When you perform an operating system upgrade from a previous version of Windows to Windows Server 2012, RSC functionality is disabled by default. This ensures that server functionality remains consistent despite the upgrade of the operating system.
You can enable or disable RSC globally or on a per-interface basis.
RSC does not cause any difference in performance between IPv4 and IPv6 networks.
RSC works seamlessly with third-party drivers that support Network Driver Interface Specification (NDIS) 6.30 and above (NDIS Lightweight Filters, NDIS Intermediates and Windows Filtering Platform [WFP] callout drivers).
RSC is automatically disabled for older incompatible drivers.
RSC works well in virtualized environments. The availability of RSC is limited to the parent partition for storage and live migration, and to virtual machines (VMs) running WindowsВ® 8 with SR-IOV capable network adapters. RSC functionality is not available for VMs that are not running Windows 8 and VMs that do not run SR-IOV.
RSC is defined only for TCP connections. RSC does not work with User Datagram Protocol (UDP) and other transport layer protocols.
RSC is a stateless offload technology and does not hold the state of TCP connections. It is not a replacement for TCP Chimney, because RSC-capable network adapters are not expected to handle the TCP state computer.
RSC does not function with IPsec encrypted traffic, because network adapters currently cannot coalesce IPsec packets.
RSC provides performance counters that capture the following for each interface: the number of TCP connections on which RSC is active; the number of packets that are coalesced per Deferred Procedure Call (DPC); the number of RSC aborts that are issued by the network adapter; the maximum number of packets coalesced in one DPC.
For more information, see the following Windows Dev Center topics.
Только аппаратные функции и технологии
область применения: Windows server 2022, Windows server 2019, Azure Stack хЦи, версии 21H2 и 20H2
Эти аппаратные ускорения улучшают производительность сети в сочетании с программным обеспечением, но не являются частью какой – либо программной функции. к таким примерам относятся контроль прерываний, управление Flow и разгрузка Checksum на стороне приема. Дополнительные сведения см. в разделе требования к сети узла для Azure Stack хЦи.
Функции SH и ПРИНЕС доступны, если установленный сетевой адаптер поддерживает ее. В описании функций ниже рассказывается, как определить, поддерживает ли ваш сетевой адаптер эту функцию.
Разгрузка контрольной суммы адреса
Разгрузка контрольной суммы адресов — это функция сетевого интерфейса, которая позволяет разгрузить вычисление контрольных сумм адресов (IP, TCP, UDP) на СЕТЕВое оборудование для отправки и получения.
На пути получения контрольная сумма разгрузки вычисляет контрольные суммы в заголовках IP, TCP и UDP (соответственно) и указывает операционной системе на то, что контрольные суммы пройдены, не пройдены или не проверены. Если сетевая карта утверждает, что контрольные суммы действительны, операционная система принимает пакет с неправильными вызовами. Если сетевая карта утверждает, что контрольные суммы недействительны или не установлены, стек IP/TCP/UDP внутренне вычисляет контрольные суммы. Если вычисленная контрольная сумма завершается сбоем, пакет удаляется.
На пути отправки контрольная сумма разгрузка вычисляет и вставляет контрольные суммы в заголовок IP, TCP или UDP соответствующим образом.
Отключение разгрузок контрольной суммы для пути отправки не отключает вычисление контрольной суммы и вставку пакетов, отправляемых драйверу минипорта, с помощью функции разгрузки большой отправки (LSO). Чтобы отключить все вычисления для разгрузки контрольной суммы, пользователь должен также отключить LSO.
Управление разгрузкой контрольной суммы адреса
В дополнительных свойствах есть несколько различных свойств:
Разгрузка контрольной суммы IPv4
Разгрузка контрольной суммы TCP (IPv4)
Разгрузка контрольной суммы TCP (IPv6)
Разгрузка контрольной суммы UDP (IPv4)
Разгрузка контрольной суммы UDP (IPv6)
По умолчанию все они включены всегда. Рекомендуется всегда включать все эти разгрузки.
Разгрузкой контрольной суммы можно управлять с помощью командлетов Enable-NetAdapterChecksumOffload и Disable-NetAdapterChecksumOffload. Например, следующий командлет включает вычисления контрольной суммы TCP (IPv4) и UDP (IPv4):
Советы с использованием разгрузок контрольной суммы адреса
Разгрузка контрольной суммы адреса должна всегда включаться независимо от рабочей нагрузки или обстоятельств. Эта основная часть всех технологий разгрузки всегда повышает производительность сети. Разгрузка контрольной суммы также требуется для выполнения других разгрузок без отслеживания состояния, включая масштабирование на стороне приема (RSS), получение сегментов (RSC) и разгрузку большой отправки (LSO).
Контроль прерываний (IM)
Перед прерыванием операционной системы IM отправляет в буфер несколько полученных пакетов. Когда сетевой адаптер получает пакет, он запускает таймер. Когда буфер полон или срок действия таймера истекает, в зависимости от того, какой из них первым, сетевая карта прерывает работу операционной системы.
Многие сетевые адаптеры поддерживают не только включение/отключение для контроля прерываний. Большинство сетевых адаптеров поддерживают основные понятия, связанные с низким, средним и высоким уровнем скорости обмена мгновенными сообщениями. Разные тарифы представляют более короткие и более длинные таймеры и соответствующие изменения размера буфера, позволяющие сократить задержку (с низким уровнем прерывания) или уменьшить количество прерываний (высокий уровень прерывания).
Существует баланс между уменьшением количества прерываний и чрезмерной задержкой доставки пакетов. Как правило, обработка пакетов более эффективна благодаря включению поддержки прерываний. Для приложений с высокой производительностью или низкой задержкой может потребоваться оценить влияние отключения или снижения контроля прерываний.
Кадры крупного размера
Кадры крупных размеров — это сетевой интерфейс и сетевая функция, позволяющая приложению передавать кадры, размер которых значительно превышает 1500 байт по умолчанию. Обычно ограничение на большие кадры составляет около 9000 байт, но может быть меньше.
в Windows Server 2012 R2 не было изменений в поддержке кадров крупного размера.
в Windows Server 2016 имеется новая разгрузка: MTU_for_HNV. Эта новая разгрузка работает с крупными параметрами кадров, чтобы гарантировать, что инкапсулированный трафик не требует сегментации между узлом и соседним коммутатором. В этой новой функции в стеке SDN сетевой адаптер автоматически вычисляет значение MTU для объявления и значение MTU, которое будет использоваться при передаче данных. Эти значения для параметра MTU различаются, если используется разгрузка HNV. (В таблице «совместимость функций» Таблица 1 MTU_for_HNV будет иметь те же взаимодействия, что и разгрузки HNVv2, так как она напрямую связана с разгрузкой HNVv2.)
с разгрузкой большой отправки (LSO);
LSO позволяет приложению передать большой блок данных в сетевую карту, и сетевая карта разбивает данные на пакеты, которые соответствуют максимальной единице передачи (MTU) сети.
Receive Segment Coalescing (RSC)
Объединение сегментов, называемое также «крупной разгрузкой», — это сетевая карта, которая принимает пакеты, входящие в тот же поток, который приходит между сетевыми прерываниями, и объединяет их в один пакет, прежде чем доставлять их в операционную систему. RSC недоступен на сетевых адаптерах, привязанных к виртуальному коммутатору Hyper-V. Дополнительные сведения см. в статье Объединение сегментов приема (RSC).
Gaming Tweaks
Online Gaming can often benefit from some fine-tuning of Windows TCP/IP settings and the Network Adapter properties. This article is intended to supplement our general broadband tweaks and list only TCP/IP settings that are specific to online gaming and reducing network latency. Some of these settings are also mentioned in our general tweaking articles, however, the emphasis here is on latency rather than throughput, and we have complemented the tweaks with more gaming-specific recommendations and settings that give priority to multimedia/gaming traffic, and may be outside of the scope of other broadband tweaks that focus on pure throughput.
Disable Nagle’s Algorithm
(TCP Optimizer «Advanced Settings» tab)
This tweak works with all versions of Windows from Windows XP to Windows 8.1/10/2012 server. This is the same as listed in our general tweaking articles per OS.
Nagle’s algorithm is designed to allow several small packets to be combined together into a single, larger packet for more efficient transmissions. While this improves throughput efficiency and reduces TCP/IP header overhead, it also briefly delays transmission of small packets. Disabling «nagling» can help reduce latency/ping in some games. Keep in mind that disabling Nagle’s algorithm may also have some negative effect on file transfers. Nagle’s algorithm is enabled in Windows by default. To implement this tweak and disable Nagle’s algorithm, modify the following registry keys.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
There will be multiple NIC interfaces listed there, for example: <1660430C-B14A-4AC2-8F83-B653E83E8297>. Find the correct one with your IP address listed. Under this
«TcpAckFrequency»=1 (DWORD value, not present by default interpreted as 2, 1=disable nagling, specifies number of outstanding ACKs before ignoring delayed ACK timer). For gaming performance, recommended is 1 (disable). For pure throughput and data streaming, you can experiment with small values over 2. Wifi performance may see a slight improvement with disabled TcpAckFrequency as well.
In the same location, add a new DWORD value:
TCPNoDelay=1 (DWORD, not present by default, 0 to enable Nagle’s algorithm, 1 to disable)
To configure the ACK interval timeout (only has effect if nagling is enabled), find the following key:
TcpDelAckTicks=0 (DWORD value, not present by default interpreted as 2, 0=disable nagling, 1-6=100-600 ms). Note you can also set this to 1 to reduce the nagle effect from the default of 200ms without disabling it.
For Server Operating Systems that have Microsoft Message Queuing (MSMQ) installed, or if you have the MSMQ registry hive present, also add TCPNoDelay to:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters
TCPNoDelay=1 (DWORD, not present by default, 0 to enable Nagle’s algorithm, 1 to disable)
Note: Reportedly, disabling Nagle’s algorithm can reduce the latency in many MMOs like Diablo III and WoW (World of Warcraft) by almost half! Yes, it works with Windows 7 and Windows 8.
Network Throttling Index Gaming Tweak
(TCP Optimizer «Advanced Settings» tab)
Works with all current versions of Windows from Vista to 8.1/10/2012 Server.
Windows implements a network throttling mechanism to restrict the processing of non-multimedia network traffic to 10 packets per millisecond (a bit over 100 Mbits/second). The idea behind such throttling is that processing of network packets can be a resource-intensive task, and it may need to be throttled to give prioritized CPU access to multimedia programs. In some cases, such as Gigabit networks and some online games, for example, it is beneficial to turn off such throttling all together for achieving maximum throughput.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
«NetworkThrottlingIndex»=dword:ffffffff (DWORD, default: 10, recommended: 10 for media sharing, ffffffff for gaming and max throughput, valid range: 1 through 70 decimal or ffffffff to completely disable throttling)
It is only recommended to change this setting in saturated Gigabit LAN environments, where you do not want to give priority to multimedia playback. Reportedly, disabling throttling by using ffffffff can also help reduce ping spikes in some online games. Games that may be affected by this throttling: Source Engine games (TF2, Left 4 Dead, CS:S), HoN, CoD, Overlord series.
System Responsiveness Gaming Tweak
(TCP Optimizer «Advanced Settings» tab)
Exists in all versions of Windows from Vista to 8.1/10/2012 Server.
Multimedia applications use the «Multimedia Class Scheduler» service (MMCSS) to ensure prioritized access to CPU resources, without denying CPU resources to lower-priority background applications. This reserves 20% of CPU by default for background processes, your multimedia streaming and some games can only utilize up to 80% of the CPU. This setting, in combination with the «NetworkThrottlingIndex» can help some games and video streaming. We recommend reducing the reserved CPU for background processes from the default of 20%.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
«SystemResponsiveness»=dword:00000000 (default: 20, recommended: decimal 10 for general applications, 0 for pure gaming/streaming)
Note: In Server operating systems (Windows 2008/2012 Server), SystemResponsiveness is set to 100 by default, denoting that background services should take priority over any multimedia applications.
Turn off LargeSystemCache
(TCP Optimizer «Advanced Settings» tab)
For local network large file transfers, this registry settings allows for better throughput and eliminates some file sharing event log errors (Event ID 2017 error). However, reportedly it has issues with some ATI Video card drivers and certain applications performance. Therefore we recommend turning it off (set to zero) for gaming.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
LargeSystemCache=0 (DWORD, default value: 0, recommended value: 1 for LAN throughput, 0 for gaming)
A value of zero establishes a cache of
8 MB, a value of 1 allows the cache to expand up to the amount of physical memory minus 4 MB, as necessary.
Disable Game Bar and Game Mode under Windows 10 Creators update
Windows 10 Creators’ update introduced a «Game Bar» to to help Xbox integration and gaming in general, however, they can reportedly cause stuttering during gaming, especially with Windows 10 builds prior to v1709.
More Gaming Tweaks
This section includes gaming-specific tweaks not listed in our general tweaking articles (and not implemented by the TCP Optimizer).
In the same Registry hive as the above two tweaks, you can also change the priority of Games, compared to other types of traffic. These tweaks only affect games that communicate with e Multimedia Class Scheduler Service (MMCSS). Below is a list of the settings and default/recommended values:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games]
«Affinity»=dword:00000000 (DWORD, default: 0, recommended: 0. Both 0x00 and 0xFFFFFFFF indicate that processor affinity is not used)
«Background Only»=»False» (REG_SZ, default: «False», recommended: «False», possible values are True or False). Indicates whether this is a background task.
«Clock Rate»=dword:00002710 (DWORD, default: 2710, recommended: 2710). The maximum guaranteed clock rate the system uses if a thread joins disk task, in 100-nanosecond intervals.
«GPU Priority»=dword:00000008 (DWORD, default: 2, recommended: 8. range: 0-31). The GPU priority. Not used in Windows XP and 2003.
«Priority»=dword:00000002 (DWORD, default: 2, recommended: leave alone if using «Scheduling Category» below, set to 6 otherwise for gaming, possible values are 1-8). The task priority, ranging from 1(low) to 8(high). Note for tasks with Scheduling Category of «High», this value is always treated as 2.
«Scheduling Category»=»High» (REG_SZ, default: «Medium», recommended: «High». possible values: Low, Medium, High)
«SFIO Priority»=»High» (REG_SZ, default: «Normal», recommended: «High») The scheduled I/O priority, possible values are Idle, Low, Normal, or High.
Congestion Control Provider
The TCP Congestion Control Algorithm controls how well, and how fast your connection recovers from network congestion, packet loss, and increase in latency. Microsoft changed the default «congestion provider» from CTCP to CUBIC with the Windows Creators update.
Possible settings are: none, CTCP, CUBIC, DCTCP, New-Reno
Recommended: CTCP for gaming and latency sensitive apps, CUBIC for pure throughput
To see the current setting, in PowerShell use: Get-NetTCPSetting | Select SettingName, CongestionProvider (in later Windows 10 builds, the default used template «SettingName» is «Internet». For more info se our Windows 10 Tweaks article)
Note: If using CTCP and with lossy connections (good possibility of congestion/packet loss), you may also want to enable ECN.
ECN Capability
(Editable with the TCP Optimizer)
ECN (Explicit Congestion Notification, RFC 3168) is a mechanism that provides routers with an alternate method of communicating network congestion. It is aimed to decrease retransmissions. In essence, ECN assumes that the cause of any packet loss is router congestion. It allows routers experiencing congestion to mark packets and allow clients to automatically lower their transfer rate to prevent further packet loss. Traditionally, TCP/IP networks signal congestion by dropping packets. When ECN is successfully negotiated, an ECN-aware router may set a bit in the IP header (in the DiffServ field) instead of dropping a packet in order to signal congestion. The receiver echoes the congestion indication to the sender, which must react as though a packet drop were detected. ECN is disabled by default in modern Windows TCP/IP implementations, as it is possible that it may cause problems with some outdated routers that drop packets with the ECN bit set, rather than ignoring the bit.
Possible settings are: enabled, disabled, default (restores the state to the system default).
Default state: disabled
Recommendation: «enabled» for gaming only with routers that support it, after testing. It’s effects are more noticeable in the presence of congestion/packet loss. Disable for pure throughput with no packet loss.
ECN works well for short-lived, interactive connections like gaming and HTTP requests with routers that support it, in the presence of congestion/packet loss. It can be disabled if tuning for pure bulk throughput with large TCP Window, no regular congestion/packet loss, or with outdated routers that do not support ECN.
To change using netsh:
netsh int tcp set global ecncapability=enabled
(alternative syntax: netsh int tcp set global ecn=enabled)
To change using PowerShell cmdlets in Windows 8.1/2012 Server R2 :
Notes:
ECN is only effective in combination with AQM (Active Queue Management) router policy. It has more noticeable effect on performance with interactive connections, online games, and HTTP requests, in the presence of router congestion/packet loss. Its effect on bulk throughput with large TCP Window are less clear. Currently, we only recommend enabling this setting in the presence of packet loss, with ECN-capable routers. Its effects should be tested. We also recommend using ECN if you are enabling the CoDel scheduling algorithm to combat bufferbloat and reduce latency.
Use caution when enabling ECN, as it may also have negative impact on throughput with some residential US ISPs. Some EA multiplayer games that require a profile logon do not support ECN yet (you will not be able to logon). Note that if supported, ECN can reduce latency in some games with ECN-capable routers in the presence of packet loss (dropped packets).
Disable Receive Segment Coalescing State (RSC)
(Editable with the TCP Optimizer) This is applicable to Windows 8/10/2012 Server, not available for earlier Windows versions.
Receive Segment Coalescing (RSC) allows the NIC to coalesce multiple TCP/IP packets that arrive within a single interrupt into a single larger packet (up to 64KB) so that the network stack has to process fewer headers, resulting in 10% to 30% reduction in I/O overhead depending on the workload, thereby improving throughput. Receive Segment Coalescing (RCS) is able to collect packets that are received during the same interrupt cycle and put them together so that they can be more efficiently delivered to the network stack. While this reduces CPU utilization and improves thorughput, it can also have a negative impact on latency. That is why we recommend you disable it where latency is more important than throughput.
Possible states: enabled, disabled, default. Default state: disabled
Recommended: disabled for pure gaming latency, enabled for better throughput.
To enable using netsh:
netsh int tcp set global rsc=disabled
To change using PowerShell cmdlets:
Notes: Only supported by some network adapters. May need «Checksum Offload» enabled as well to work.
Disable Large Send Offload (LSO)
(Editable with the TCP Optimizer) Windows 8/10/2012 Server, not available in earlier Windows versions
Large Send Offload lets the network adapter hardware to complete data segmentation, rather than the OS. Theoretically, this feature may improve transmission performance, and reduce CPU load. The problem with this setting is buggy implementation on many levels, including Network Adapter Drivers. Intel and Broadcom drivers are known to have this enabled by default, and may have many issues with it. In addition, in general any additional processing by the network adapter can introduce some latency which is exactly what we are trying to avoid when tweaking for gaming performance. We recommend disabling LSO at both the Network Adapter properties, and at the OS level with the setting below.
Default: adapter-dependent
Recommended: disable (both in network adapter properties and in the TCP/IP stack at the OS level)
Notes: Default state is network adapter dependent. Needs Checksum Offload to be enabled to work.
Receive-Side Scaling State (RSS)
(Editable with the TCP Optimizer)
It is sometimes useful to disable RSS if you need to reduce CPU load. This is useful on systems with older/slower CPUs where games tax the processor up to 100% at times. This could be checked with «Task Monitor». Disabling RSS will only have an effect if your network adapter is capable/using RSS, and the CPU is being used up to 100%. Otherwise, you can leave it enabled.
netsh int tcp set global rss=disabled
Advanced Concepts
Disable Coalescing: Some network adapters support advanced settings, such as DMA Coalescing, DCA Coalescing, Receive Segment Coalescing (RSC). In general, any type of packet or memory coalescing can reduce CPU utilization (also power consumption) and increases throughput, as it allows the network adapter to combine multiple packets, however, coalescing can also have negative impact on latency, especially with more aggressive settings. That is why it should be either disabled, or used very conservatively for gaming. Any type of network adapter packet/memory coalescing allows the NIC to collect packets before it interacts with other hardware. This may increase network latency. For gaming, disable «DMA coalescing» and «Receive Side Coalescing State (RSC)», where applicable.
TCP Offloading: TCP Offloads can improve throughput in general, however, they’ve been plagued by driver issues in the past, and, they also put more strain on the network adapter. For pure gaming, disable any TCP Offloads, such as «Large Send Offload (LSO)», for example. For pure gaming and lowest possible latency, the only safe offload that should be left to the network adapter is «Checksum Offload».
Disable Interrupt Moderation: If your Network Adapter supports this setting, it should be disabled for the lowest possible latency (at the expense of a bit higher CPU utilization).
For some of those settings specific to your OS, see our tweaking articles. To disable at the network adapter, see our Network Adapter Optimization article.
Use adequate Send/Receive buffers: low send/receive buffers values conserve a bit of memory, however they can result in dropped packets and decreased performance if exhausted, so they shouldn’t be set to values less than 256 in general. Higher-end NICS/systems can increase the values a bit to 512, or up to 1024.
Router Settings
Most broadband users have some type of NAT router that sits between them and the internet. There are some settings that may help your router better prioritize gaming traffic and improve gaming experience.
Enable upstream QoS in your router. It may be useful to enable upstream QoS at the router, if available, to prioritize the different types of traffic. Upstream QoS is important, because typically residential connections have much lower upstream cap, and when upstream bandwidth is all utilized, it can introduce some delay in the downstream traffic as well. Note this is only recommended for newer routers, where the router has ample computing power to handle the QoS overhead.
Enable WMM if using Wi-Fi. If you must use Wi-Fi, enable WMM, and try to avoid USB Wi-Fi adapters.
Use Open Source Firmware. Many NAT router models support open source firmware, such as dd-wrt, Tomato, etc. If your router’s default firmware does not support advanced functionality that you may need (QoS, WMM, VLANs, etc.), you may be able to flash dd-wrt instead. It is not uncommon for open source firmware to make your connection more stable and reduce router overhead/delay.
Note: If using dd-wrt, or on Wi-Fi, check our wireless network speed tweaks, some of the advanced router settings are applicable to wired connections as well.
General Online Gaming Recommendations
Intel Recommended Network Adapter Settings
Optimized for quick response and low latency (Gaming):
Optimized for throughput:
For low CPU utilization:
Notes
In some situations, latency can even be reduced by using a VPN provider. Many ISPs provide fast/reliable internet locally between you and their servers, however lack in both speed in latency when it comes to their peering arrangements and backbones for longer distance connections. They could also be throttling certain traffic types. In such situations, a local to you quality VPN provider may allow you to avoid the ISP bottleneck by bypassing a lot of internal/cluttered routing and skip to a distant location faster, providing a lower latency connection.
Some of the tweaks in our general broadband tweaks articles can benefit gaming as well, like disabling «Windows Scaling Heuristics», disabling TCP 1323 Timestamps to reduce the TCP headers overhead, etc.
Most of the Registry tweaks above (with the exception of «More Gaming Tweaks») can be applied easily by using the TCP Optimizer
See Also
We appreciate any feedback and always listen to user suggestions.