none
How can I enable Compound TCP (CTCP) on Windows 8 / 8.1?

    Question

  • Hello,

    So in Windows 7 for example, I could enable CTCP via this command: "netsh int tcp set global congestionprovider=ctcp" under CMD.

    While in Windows 8 & 8.1 this is not working.

    I have  tried some other alternatives, including solutions from Answers.Microsoft.com like:

    "set supplemental congestionprovider=ctcp"

    set-nettcpsetting -Settingname Custom -CongestionProvider CTCP

    and so on.. But none is working, neither through CMD nor PowerShell.

    Does anyone know how to enable it?

    Thanks in advance.


    Tuesday, October 22, 2013 4:36 PM

Answers

  • ok here is what you are you going to do 
    1.open notepad and copy this:Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Nsi\{eb004a03-9b1a-11d4-9123-0050047759bc}\0]
    "0200"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,\
    00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    "1700"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,\
    00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    2.close the notepad then click save and then name it the file as enable-esn-ctcp.reg and on the encoding option you will see the option is set to ASNI change that to unicode and save
    3.double click the file or import it to your registry then restart your computer
    4.finally type netsh int tcp show global on an elevated or administrator cmd done
    Saturday, May 3, 2014 5:18 PM

All replies

  • Wednesday, October 23, 2013 12:23 PM
    Moderator
  • Hello Yolanda, and thank you for your response.

    So there is absolutely no way to enable CTCP in Windows 8 / 8.1?

    Has Microsoft implemented a new alternative to CTCP that we can force the congestion provider to in order to improve our networks' throughput?

    Wednesday, October 23, 2013 8:25 PM
  • Windows 8 and 8.1 support CTCP.  The powershell model is a bit different from what you've tried though.  The TCPIP stack has several built-in "profiles" that tune a number of TCP settings.  One of the settings is the congestion provider (either CTCP or DCTCP).  You can view the list of profiles with Get-NetTCPSetting.

    Now you can actually select which profile to use on a per-interface, per IP address range, or even per-port range.  For example, you can create a filter that says "for all addresses in the 10.x.x.x range, use the Datacenter profile (which uses DCTCP)." Then add a default filter that says "for all other connections, use the Internet profile (which uses CTCP)".

    If you want to check what the current default profile's congestion provider is, you can run this command:

    (Get-NetTransportFilter |
    Where DestinationPrefix -eq '*' |
    Get-NetTCPSetting).CongestionProvider


    Thursday, October 24, 2013 1:02 AM
  • Hello and thank you for  your reponse.

    Could you please elaborate on that and give me a detailed description onto what steps I have to take and which commands I must enter in order to enable it (how I can create such a filter)?

    I would like to share this information with others that are also interested on this. However, most of us do not have such technical knowledge (including me), so I would like the commands I need to type and in what order to enable CTCP.

    I hope you find the time to respond to this.

    Thanks in advance.

    Thursday, October 24, 2013 6:56 PM
  • Or maybe someone else can explain how to enable it?
    Saturday, October 26, 2013 9:43 PM
  • I still require an official response on this.
    Friday, November 1, 2013 1:42 PM
  • I still need help with this, I do not understand why both of you MS employees gave me answers which contradict each other and then vanish.

    This is very unprofessional.

    Monday, November 11, 2013 2:00 PM
  •   Probably because they thought your request was unreasonable. As a general rule, a forum is not the place to expect step by step solutions to a problem.

      Jeffrey told you what steps you need to follow.


    Bill

    Tuesday, November 12, 2013 12:59 AM
  • All he provided is a way to check the current filter, and not a way to change it from what I can see, while additionally the command he gave me I cannot type the way he does (entering it results to nothing).

    Moreover both employees contradict each other.

    Where exactly do you see the steps I need to follow, enlighten me please, because many people are interested in this.

    Tuesday, November 12, 2013 11:14 AM
  • (Get-NetTransportFilter | Where DestinationPrefix -eq '*' | Get-NetTCPSetting).CongestionProvider

    this is the actual command ! the other one is right but space might be improper if you copy and paste this here work !

    Wednesday, November 13, 2013 1:22 PM
  • Great, thank you the command works, can we change it though?

    Thursday, November 14, 2013 12:00 AM
  • Hey, can you tell me how did you do it? I don´t understand how to do it.
    Monday, January 13, 2014 9:19 PM
  • Hi I have found the solution to this problem

    http://www76.zippyshare.com/v/18371009/file.html

    run this file and add it to the registry

    then open a command prompt and use this command

    set supplemental congestionprovider=ctcp

    then finally run this command netsh interface tcp show global

    Under Addon Congestion Provider it should now say CTCP ;)

    I am on Windows 8 and here it is after the above steps.

    http://postimg.org/image/a8f5ka6b1


    Saturday, January 18, 2014 2:02 AM
  • executes the cmd as administrator
    Wednesday, January 22, 2014 1:40 AM
  • Hi I have found the solution to this problem

    http://www76.zippyshare.com/v/18371009/file.html

    run this file and add it to the registry

    then open a command prompt and use this command

    set supplemental congestionprovider=ctcp

    then finally run this command netsh interface tcp show global

    Under Addon Congestion Provider it should now say CTCP ;)

    I am on Windows 8 and here it is after the above steps.

    http://postimg.org/image/a8f5ka6b1


    Not working for me. Did the steps, stll showing "none".

    Monday, January 27, 2014 12:17 AM
  • Well it is the registry hack that makes the difference on my machine, without the registry file installed

    set supplemental congestionprovider=ctcp  does nothing

    but after I installed the registry file then run command and reboot it shows CTCP working

    Tuesday, January 28, 2014 1:42 AM
  • didnt work for me...
    Friday, February 14, 2014 12:26 PM
  • Hello Tranceaddict30

    Thank you, that work for me !

    Before 10 Mo/s from my PC to my NAS, and now, between 70 to 100 Mo/s


    • Edited by fjojo Monday, February 17, 2014 4:25 PM
    Monday, February 17, 2014 4:23 PM
  • thank you very much, it really worked!!! its amazing, thank you a lot!!!
    Tuesday, March 18, 2014 10:29 AM
  • Glad it worked :)  after you add the registry file to the registry make sure to reboot the computer then use the  command set supplemental congestionprovider=ctcp

    Monday, March 24, 2014 8:47 PM
  • Thank you Jeffrey Tippet.

    After performing the above script to check the default congestion provider, the return was CTCP.  My installation is a standard Windows 8.1 running on a HP desktop. Most of ours are standard installs.  So, under my configuration, CTCP is already default.  nothing to change.  thanks.  been searching for an hour.  should have come here first.  ;)

    I'm just a front line computer tech.  wanted to tweak the laptop to run better. I'll tell the techs above me. dont worry about it. and show them the above script.  Good to see it default CTCP.

    Friday, April 25, 2014 1:28 AM
  • ok here is what you are you going to do 
    1.open notepad and copy this:Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a03-9b1a-11d4-9123-0050047759bc}\0]
    "0200"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
    00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,​\
    00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,​\
    ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    "1700"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
    00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,​\
    00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,​\
    ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    2.close the notepad then click save and then name it the file as enable-esn-ctcp.reg and on the encoding option you will see the option is set to ASNI change that to unicode and save
    3.double click the file or import it to your registry then restart your computer
    4.finally type netsh int tcp show global on an elevated or administrator cmd done
    Saturday, May 3, 2014 5:10 PM
  • ok here is what you are you going to do 
    1.open notepad and copy this:Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Nsi\{eb004a03-9b1a-11d4-9123-0050047759bc}\0]
    "0200"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,\
    00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    "1700"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,\
    00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,​\
    ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
    2.close the notepad then click save and then name it the file as enable-esn-ctcp.reg and on the encoding option you will see the option is set to ASNI change that to unicode and save
    3.double click the file or import it to your registry then restart your computer
    4.finally type netsh int tcp show global on an elevated or administrator cmd done
    Saturday, May 3, 2014 5:18 PM
  • So i used this and enabled it properly but i got worse results form it any way i may revert the effects?

    Friday, July 4, 2014 2:44 AM
  • This does not work, though it does successfully add to the registry it does not update the congestion control provider in command prompt
    • Proposed as answer by afg boy Thursday, April 23, 2015 12:20 AM
    • Unproposed as answer by afg boy Thursday, April 23, 2015 12:20 AM
    Thursday, October 16, 2014 10:24 AM
  • This does not work, though it does successfully add to the registry it does not update the congestion control provider in command prompt

    Thank You so much! It works for everyone!!!

    After you installed the file and added to registry you need to restart your computer and 

    then open a command prompt and use this command

    set supplemental congestionprovider=ctcp

    then finally run this command netsh interface tcp show global!!!

    I'm sure it will work!!!

    Try it!!!

    Thursday, April 23, 2015 12:23 AM
  • Thanks a lot, It worked after restart, and here are my results

    C:\Windows\System32>netsh interface tcp show global
    Querying active state...

    TCP Global Parameters
    ----------------------------------------------
    Receive-Side Scaling State          : enabled
    Chimney Offload State               : enabled
    NetDMA State                        : disabled
    Direct Cache Access (DCA)           : disabled
    Receive Window Auto-Tuning Level    : enabled
    Add-On Congestion Control Provider  : ctcp
    ECN Capability                               : disabled
    RFC 1323 Timestamps                 : disabled
    Initial RTO                         : 2000
    Receive Segment Coalescing State    : disabled
    Non Sack Rtt Resiliency             : disabled
    Max SYN Retransmissions             : 2

    Edit: changed "Receive Window Auto-Tuning Level" to normal by running this command (run cmd as admin): netsh int tcp set global autotuninglevel=normal

    and sorry if I bumped an old thread :) but it's useful


    Thursday, August 27, 2015 7:15 PM
  • i cannot import why?

    Thursday, November 3, 2016 10:40 AM
  • spelling? \Contro l\

    How can we be certain there are no other carriage returns or other spelling errors? is the text wrapped or encumbered by another editor?


    Michael

    Monday, June 26, 2017 5:41 PM