1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Discord Support team Facebook Forum

USEFUL TCP protocol settings

Discussion in 'Important information' started by Artchem, Sep 14, 2020.

Thread Status:
Not open for further replies.
  1. Artchem

    Artchem Community manager

    Joined:
    14.03.16
    Messages:
    990
    Likes Received:
    472
    There are a lot of smart algorithms dealing with the Transmission Control Protocol (hereafter TCP). This smart stuff doesn’t always work as desired, so problems might arise, for example, the slow work of applications that transfer data over the network – browsers, games, torrents, and the like.

    That is, websites are opening or files are downloading slowly, although a provider’s tariff allows you to work at high speed. Or file transfer over your home network is slow. Also, connections of different applications that highly depend on network performance can be interrupted or delayed. For example, online games.

    Attention!

    Do not apply all settings at once. It will be better if you apply one option at a time and then check if there are improvements in speed. To do that, use, for example, https://www.speedtest.net/ to make metering before the option is applied. Then check if there are improvements in the game, for example, if the character's responsiveness is improved.

    If the main purpose is to improve the gaming process, you can focus only on the changes in the game without the speed check. If any of the settings (except for the first one, it always has a positive effect) deteriorates the situation, the setting should be returned to its default state.

    Application of the following settings makes sense only If there are issues during the gameplay.

    1) TcpAckFrequency determines the frequency of sending a confirmation message. TCP sends data packets, then waits for delivery confirmation. The algorithm behaves differently depending on the setting. If it’s required to reduce the response time through the removal of delays in the confirmation sending, this value should be set to 1. In this case, TPC will immediately send a message for each segment.

    TCPNoDelay is an implementation of Nagle's algorithm. The algorithm is enabled by default; to disable - register the setting with a value of 1. You can download the utility (https://eu.4gamesupport.com/downloads/files/4game-supp ) to register these two settings in a registry and click the “TpcTune” button. If the system reboot is required, the utility will ask you to do it.



    2) TCP autotuning is an automatic configuration of the TCP receive window. It is enabled by default. The TCP receive window is used to restrict the data stream and to provide the stream control on the receiving side. The TCP window represents the amount of data that the receiver is allowed to send at one time. The data transmission over the network should become more effective after activation of autotuning, although this is not always the case.

    For example, an application does not have time to retrieve data, the current receive window fills up, and the receiving side begins to reduce its size. When the maximum receive window is filled, the window size is reduced to 0 bytes, after that data transmission will stop. If there is old equipment somewhere along the route that cannot handle the dynamic TCP window size, problems may arise, too.

    Click to the search box/icon and type “cmd” to open the system console. The system will find the “Command Prompt” app. Then click right on the app and choose “run as administrator”.

    [​IMG]


    Copy and paste the following command into the command line:

    Code:
    netsh interface tcp show global
    Then press Enter. By default, this setting should look like this:

    [​IMG]

    Copy and paste the following command to disable this algorithm:

    Code:
    netsh interface tcp set global autotuninglevel=disabled
    Then press Enter.

    Type the following command again to check that it’s disabled:

    Code:
    netsh interface tcp show global
    Now the setting should be as disabled:
    [​IMG]

    Reboot the system to apply the setting. Enter the following command to retort to the default state.
    Code:
    netsh interface tcp set global autotuninglevel=normal
    Then press Enter and reboot the system.



    3) The checksum offloading is transferring part of the work from the processor to the network card. At a transport layer network traffic is processed by the central processor. The offloading is a good thing since it releases the processor from a part of processing network traffic, but there are times when weak network adapters can't cope under a heavy load.

    As in the past, click right on Command Prompt and choose “run as administrator”.

    [​IMG]

    Copy and paste the following command:

    Code:
    netsh interface ip show offload
    The press Enter. You will see something like this:
    [​IMG]


    Copy and paste the following command to disable all offloadings:
    Code:
    netsh interface ip set global taskoffload=disabled
    Then press Enter. The system reboot is also required after this configuration. You can enter “netsh int ip show offload” again to make sure that it is turned off after rebooting. The list has to be empty.

    If you need to turn the offloading back on, run the following command:
    Code:
    netsh interface ip set global taskoffload=enabled
    Then press Enter and reboot the system.



    4) Receive Side Scaling. The incoming data stream is divided into several queues, each of which is processed by designed capacities (as a rule, by separate processor cores). It requires that the network card is able to create such queues, and does it well. This is not always the case for obvious reasons.

    Run Command Prompt as Administrator to disable it.
    [​IMG]


    Copy and paste the following command:
    Code:
    netsh interface tcp set global rss=disabled
    Press Enter. The system reboot is also required. If you need to run the command to turn this option back on:
    Code:
    netsh interface tcp set global rss=enabled
    Then reboot the system.
     
Thread Status:
Not open for further replies.