Asked by:
Can't set netsh int tcp set supplemental

General discussion
-
Hello!
Seems like I can't operate within netsh int tcp set supplemental preferences. When I try to set congestion provider the 'old way' with
"netsh int tcp set global congestionprovider=ctcp"
in elevated command prompt, Windows 8 saying that I must do it now with
"netsh int tcp set supplemental"
But that doesn't work either. All I can do with that new command is set template, but only one is available - "internet", and it's already set to it.
I want to set ctcp, ICW and minrto, but I can't, here's what me getting:
http://s10.postimage.org/jrpkudg53/suplemental.png
The syntax is right, even example doesn't work.
The problem exists in Windows 8 CP, RP and in this build.
Sorry for my English. Thanks in advance.
Tuesday, September 11, 2012 9:04 AM
All replies
-
-
Any news?Tuesday, October 9, 2012 5:37 PM
-
Please fix this bugSaturday, October 13, 2012 6:45 PM
-
It would be nice to know if this is even needed nowadays. I couldn't really find an explanation of what it did apart from it being suggested by the BPA's of SBS 2008
http://absoblogginlutely.net
Friday, October 19, 2012 6:31 PM -
The problem exists in Windows 8 CP, RP and in this build.
A regression (or botched integration) of a W7 hotfix? <eg>
<title>You cannot customize some TCP configurations by using the netsh command in Windows Server 2008 R2</title>
http://support.microsoft.com/kb/2472264
---
- Edited by Robert Aldwinckle on forums Sunday, October 21, 2012 4:56 PM This editor is still broken.
Sunday, October 21, 2012 4:55 PM -
Any news on this?
With fast connections, the speed is really slow with Windows 8, just like it was with Windows 7 with default settings. On Windows 7, setting congestionprovider to ctcp increased speed by about 100% for many users with fast connections. On Windows 8, it is currently not possible to change this due to the mentioned bug, resulting in only ~18mbit instead of ~40mbit (Win7 with ctcp) in my case.
A fix is really needed!
Tuesday, December 18, 2012 2:07 PM -
The use of netsh int tcp set global congestionprovider=ctcp has been depreciated. In order to set or change the congestionprovider the following command must be used:
netsh int tcp set supplemental custom 300 10 ctcp disabled 50
Then type:
netsh int tcp set supplemental custom
For further details about the above command simply type:
netsh int set supplemental
To check which congestionprovider your currently using use the following:
netsh int tcp show supplemental
Hope this helps some of you.Tuesday, January 15, 2013 2:57 PM -
netsh itself has been deprecated. You should run the following in an administrative PowerShell session:
set-nettcpsetting -CongestionProvider CTCP
Type get-nettcpsetting to view other settings that used to be part of netsh tcp global.
Naadir Jeewa
Tuesday, January 15, 2013 3:08 PM -
netsh itself has been deprecated. You should run the following in an administrative PowerShell session:
set-nettcpsetting -CongestionProvider CTCP
Type get-nettcpsetting to view other settings that used to be part of netsh tcp global.
Naadir Jeewa
Tuesday, January 15, 2013 3:24 PM -
netsh itself has been deprecated. You should run the following in an administrative PowerShell session:
set-nettcpsetting -CongestionProvider CTCP
Type get-nettcpsetting to view other settings that used to be part of netsh tcp global.
Naadir Jeewa
Wednesday, January 23, 2013 4:10 AM -
The use of netsh int tcp set global congestionprovider=ctcp has been depreciated. In order to set or change the congestionprovider the following command must be used:
netsh int tcp set supplemental custom 300 10 ctcp disabled 50
...This does not work. Error message is something like "Request is not supported" (translated from german). I also tried other values such as dctcp or default, and also tried setting it on "internet" instead of "custom". Still I get the same error all the time.
And as Nuck stated, the PowerShell command "set-nettcpsetting -CongestionProvider CTCP" also does not work ("property is read-only").
Please, could someone from the networking team look into this and try to get it working?
Edit: When using get-nettcpsetting, it shows CTCP for Internet, although netsh shows "none" (for global, i cannot find a way to show it for "internet"). This is all really confusing. Some help would be highly appreciated.
- Edited by Lukas F Wednesday, January 23, 2013 7:46 PM
Wednesday, January 23, 2013 7:37 PM -
Anything new on setting the congestionprovider to CTCP ???
Is there already any fix ??
Thanks in advance
Wednesday, February 13, 2013 2:38 PM -
Has anyone found a way to set the congestionprovider ??
It is a shame, that Microsoft dont response to this problem ;o(
Monday, February 18, 2013 2:18 PM -
PowerShell command "set-nettcpsetting -CongestionProvider CTCP" also does not work ("property is read-only").
Looking at the Help what you are describing seems WAD or an attempt to use incorrect syntax. E.g. does the syntax given in the example work (after fixing differences caused by characterset)?
BTW is this working for anybody?
get-help Set-NetTCPSetting -online
If so, where does it go? ; )
FWIW I think the example when seen here is clearer
http://technet.microsoft.com/en-us/library/hh826132.aspx
---Monday, February 18, 2013 11:34 PM -
PowerShell command "set-nettcpsetting -CongestionProvider CTCP" also does not work ("property is read-only").
Looking at the Help what you are describing seems WAD or an attempt to use incorrect syntax. E.g. does the syntax given in the example work (after fixing differences caused by characterset)?
BTW is this working for anybody?
get-help Set-NetTCPSetting -online
If so, where does it go? ; )
FWIW I think the example when seen here is clearer
---Set-NetTCPSetting –SettingName Custom –InitialCongestionWindow 6 –CongestionProvider CTCP
"InitialCongestionWindow is read-only"
Set-NetTCPSetting –SettingName Custom –CongestionProvider CTCP
"CongestionProvider is read-only"
CMD "netsh int tcp set supplemental internet" helps ("supplemental internet" has CTCP by default)
I want customize the template, but I cannot =(
Microsoft, please unlock templatesThursday, February 28, 2013 5:39 AM -
Use Powershell
1) Use Get-NetTCPSetting to check existing TCP profiles. More technical detailes are available from
Get-Help Get-NetTCPSetting -detailed
2) use Get-NetTransportFilter and New-NetTransportFilter to configure filters to assign specific TCP profiles to your traffic.
3) Then you can check parameters of existing connections using Get-NetTCPConnection.
I hope it helps :-)
Saturday, March 16, 2013 12:22 PM -
Use Powershell:
The Set-NetTCPSetting cmdlet modifies information for each TCP setting. There will be different connection characteristics when connecting over a wide area network and within a data center. Thus each TCP setting is optimized for different network conditions including latency and congestion. The only modifiable TCP SettingName is Custom. To apply a TCP setting to a specific port number or destination IP address range, use the New-NetTransportFilter cmdlet.
Saturday, March 16, 2013 12:26 PM -
Use Powershell:
The Set-NetTCPSetting cmdlet modifies information for each TCP setting. There will be different connection characteristics when connecting over a wide area network and within a data center. Thus each TCP setting is optimized for different network conditions including latency and congestion. The only modifiable TCP SettingName is Custom. To apply a TCP setting to a specific port number or destination IP address range, use the New-NetTransportFilter cmdlet.
Windows does not give an opportunity to change transort filter
only WinServer 2012 =(Monday, March 25, 2013 10:13 AM -
Oh man. This worked on Windows 7.
I thought Windows 8 was an Upgrade to Windows 7. Now it looks more like a downgrade... :(
Monday, March 25, 2013 11:25 AM -
So... there is none working solution so far? That's odd.
And yeah, like others I can't change internet templates with cmd/powershell, they are read-only. Sad!
Wednesday, March 27, 2013 7:34 AM -
So... there is none working solution so far? That's odd.
And yeah, like others I can't change internet templates with cmd/powershell, they are read-only. Sad!
You need Windows Server 2012 for changing internet templates. I think they are specifically blocked the possibility of changing templates for Windows 8Wednesday, May 15, 2013 6:51 AM -
You need Windows Server 2012 for changing internet templates. I think they are specifically blocked the possibility of changing templates for Windows 8
Thanks for sharing.
Windows 8.1 is coming in August, I bet, they will not gonna change it until then. Or ever. :)
Not really a big deal in HomePC, but in Windows 7 you were able to change this setting.
- Edited by temp776 Wednesday, May 15, 2013 9:37 AM
Wednesday, May 15, 2013 9:35 AM -
You need Windows Server 2012 for changing internet templates. I think they are specifically blocked the possibility of changing templates for Windows 8
Thanks for sharing.
Windows 8.1 is coming in August, I bet, they will not gonna change it until then. Or ever. :)
Not really a big deal in HomePC, but in Windows 7 you were able to change this setting.
Думаю можно писать по-русски XDTuesday, June 4, 2013 5:03 AM -
Not really a big deal in HomePC, but in Windows 7 you were able to change this setting.
For everyone with a highspeed internet connection (50MBit+) this IS a big deal.
CTCP has much better performance on VDSL and Fiber connections, which get more and more common!Tuesday, June 4, 2013 9:35 AM -
Not really a big deal in HomePC, but in Windows 7 you were able to change this setting. For everyone with a highspeed internet connection (50MBit+) this IS a big deal.
Guys...
CTCP has much better performance on VDSL and Fiber connections, which get more and more common!
Look at that (posted by dwayned at 12-10-2012, 07:59 AM)
http://www.networkedmediatank.com/showthread.php?tid=63992&pid=588255Monday, June 10, 2013 12:21 PM -
Thanks for that link!
It also has nice comparison of speed: Without CTCP = ~7MB/s and with CTCP = ~30MB/s.
Microsoft, please bring us back the configuration of CTCP, so we do not have to use dirty registry hacks like this.
Monday, June 10, 2013 1:27 PM -
Hello!
Seems like I can't operate within netsh int tcp set supplemental preferences. When I try to set congestion provider the 'old way' with
"netsh int tcp set global congestionprovider=ctcp"
in elevated command prompt, Windows 8 saying that I must do it now with
"netsh int tcp set supplemental"
But that doesn't work either. All I can do with that new command is set template, but only one is available - "internet", and it's already set to it.
I want to set ctcp, ICW and minrto, but I can't, here's what me getting:
http://s10.postimage.org/jrpkudg53/suplemental.png
The syntax is right, even example doesn't work.
The problem exists in Windows 8 CP, RP and in this build.
Sorry for my English. Thanks in advance.
IT'S WORKING!
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,00Only those values I entered by hand
- Edited by Nuck iCAT Chorris Tuesday, June 11, 2013 7:59 AM
Monday, June 10, 2013 3:45 PM -
Hi folks,
Sorry for my late entry to this thread but I wanted to clear up some confusion. In Windows 8 we introduced TCP templates to configure TCP settings and deprecated some of the old netsh ways of doing things. There are 4 main templates: Automatic, Internet, Datacenter and Custom.
The Internet template is the default on all Windows 8 client machines and this is not configurable. One misconception I'm seeing above is that the CTCP is not the default congestion provider on Win8 machines. By default, CTCP is set as the congestion provider on the Internet template and so it also the default on all Win8 machines. You can see this by checking the Internet template in PowerShell by running, Get-NetTcpSetting. Next, run, Get-NetTcpConnection, to see that the Internet template is in fact the 'Applied Setting' on your connections. In Win7, it was not the default so I can see why people would continue to think that it was the same in Win8.
You are correct that ECN is disabled by default on the Internet template. This decision was made because incompatible networking equipment still exists on the core internet and this can cause issues with Windows machines. Although if you choose to turn it on, you do not have to resort to changing the registry. It is a global setting and is still configurable, even on clients, through netsh by running, netsh int tcp set global ecn=enable. On Windows Server 2012, you can change this setting through the custom template or netsh.
I know this is all a little confusing but I hope this helps! Feel free to ask me any other questions you may have!
Tuesday, June 11, 2013 12:26 AM -
gsilva stated: "One misconception I'm seeing above is that the CTCP is not the default congestion provider on Win8 machines. By default, CTCP is set as the congestion provider on the Internet template and so it also the default on all Win8 machines."
There's an excellent reason for this "misconception." If one types netsh int tcp show global the display indicates that the Congestion Control Provider is in the "none" state!!!!
So if, as you claim, CTCP is set as the congestion control provider in the Windows 8 default Internet template, please explain why the display referenced above says that the CTCP state is "none!"
Also, I've spent the last five hours trying to figure out how to manipulate the CTCP state on my Windows 8 laptop and have ended up precisely nowhere. As I understand, the default TCP template is the Internet template, and that is read only and cannot be modified. Okay, fine. As I understand it, I can switch between templates depending on my needs. One of those templates is called Custom, and that would be the template for me if I want to toggle or otherwise manipulate CTCP, correct?
But then I bump into another problem. As I understand it, in order set a particular TCP template as the current active template one types netsh int tcp set supplemental followed by the particular desired template.
For example, if I want to load the Internet template, I type netsh int tcp set supplemental internet.
Well, I'm bumping into another problem. When I type netsh int tcp set supplemental custom I get ungatz, nada. All I get is the message "Set supplemental command failed to set the global default template."
It's almost as if my laptop is missing all the templates but the Internet one. I tried a few of the others, like datacenter and so on; same results.
Just so you know, the reason why I wish to alter the CTCP state is because my Windows 7 laptop is getting an average 8000 kps download speed on my Sprint LTE connection but my Windows 8 laptop is getting an average 2000 kps download speed. Clearly SOMETHING is wrong on my Windows 8 box, and I'm theorizing that turning on the congestion provider may fix the issue, unless you have other ideas.
Friday, June 28, 2013 11:17 AM -
When I type netsh int tcp set supplemental custom I get ungatz, nada. All I get is the message "Set supplemental command failed to set the global default template."
It's almost as if my laptop is missing all the templates but the Internet one. I tried a few of the others, like datacenter and so on; same results.
Does it work anywhere? If it does a practical alternative for trying to understand your symptom, e.g. an attempt to prove your hypothesis, is to run ProcMon in the two scenarios and compare the traces for their essential differences. Filter with Process & Thread first to see where the traces diverge and then refine the filtering with Operation Begins with Reg (e.g. after adding Registry events to the trace just before the divergence.) Running ProcMon without a second trace could be useful too but just harder to analyze unless you get lucky with some patterns in the registry Path.
Good luck
Robert Aldwinckle
---Friday, June 28, 2013 3:10 PM -
GSilva could you layout process of changing templates and setting TCP parameters in a complete manner so we could navigate the new system and configure it ourselves? I just installed 8.1 and it keeps telling me I can only do that on server version and I don't see the cmdlet to much less get on the Custom, InternetCustom, or DatacenterCustom template much less set-nettcpsetting change any of the parameters. Do you actually have full knowledge of this and if so where did you learn this? Having trouble finding anything that I would deem a userful forum about powershell(they exist but I mean useful). I mean if they are going to start integrating powershell to this degree you would think someone would give us some documentation so we could use it, but HA WHO am I kidding? It's microsoft the kings of no fm to rt.Thursday, July 4, 2013 1:46 AM
-
Hi Chriggsiii,
Again sorry for the late response and your troubles. I don't monitor these forums as often as I should.
You're running into these problems because you are looking at the settings through netsh. When we started moving our TCP setting to the templates we failed to keep netsh updated. The most reliable way to view your TCP settings is now through PowerShell.
In your case, on your Windows 8 laptop, I assume you are running a client machine. By default, the client template is Internet and this *CANNOT* be changed on a client machine. That is why you get the error message, "Set supplemental command failed to set the global default template."
Second, I just confirmed that the Congestion Control Provider set to none is being overridden by the Internet template. I apologize again that this is so confusing and I am going to submit a bug to try and get this removed in future releases. You will want to run the Get-NetTcpSetting cmdlet, look at the Internet template and you will see that the Congestion Provider is set to CTPC.
That being said, I don't know why you are seeing worse performance on an 8 machine. But for me to troubleshoot this I would have to take a closer look at your machine. Take a look at the above settings and just confirm that I am right.
Let me know if you have any other questions.
Thanks,
Gabriel Silva
Program Manager, Windows Core Networking
Friday, August 2, 2013 7:12 PM -
iCeOL8TRAmnesia,
I am a Program Manager with the Windows Core Networking team and actually worked on the new Datacenter Custom and Internet Custom templates for Windows Servers 2012 R2 that you mention above. This is why I am knowledgeable about the templates.
That being said, we are aware that the documentation out there is limited and are working diligently on getting more documentation out for TCP and the templates more specifically. I am going to be writing a blog post in the next week or two and hope to have something more official (I.e. TechNet article) out soon. I will come back here and link to it.
In the meantime, I will give you a brief overview of the templates to hold you over.
To get general information on the templates, open PowerShell and run 'Get-NetTcpSetting' cmdlet. This will give you the information on all the templates on the system.
If you are running Windows Server 2012, you will only see one custom template. On Windows Server 2012 R2 you will see two, Internet Custom and Datacenter Custom. These are the only templates that are configurable. You can change the different individual settings on each template by using the 'Set-NetTcpSetting' cmdlet. An example:
'Set-NetTcpSetting -SettingName DatacenterCustom -InitialCongestionWindowMss 10'
This will change the -InitialCongestionWindowMss setting in the Datacenter Custom template. Now that you know how to change the templates, you can apply templates in a couple of different ways. You apply a template globally to all connections, to a subnet or a set of ports. Let's say you want to apply the new DatacenterCustom template you just configured globally, use the cmdlet:
'New-NetTransportFilter -SettingName DatacenterCustom'
More information can be found on the cmdlet here, NetTransportFilter.
Hope this helps and is enough to get you started. Feel free to ask more questions and as mentioned earlier, I'll come back and post any links to new material here.
Thanks,
Gabriel Silva
Program Manger, Windows Core Networking
- Edited by gsilva (MSFT) Friday, August 2, 2013 10:16 PM Included link for NetTransportFilter
Friday, August 2, 2013 10:15 PM -
PS C:\Users\name> Get-NetTransportFilter
Get-NetTransportFilter : Toegang geweigerd.
At line:1 char:1
+ Get-NetTransportFilter
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_NetTransportFilter:ROOT/StandardCi...TransportFilter) [Get-NetTransportFilter], CimException
+ FullyQualifiedErrorId : Windows System Error 5,Get-NetTransportFilter
PS C:\Users\name> New-NetTransportFilter
cmdlet New-NetTransportFilter at command pipeline position 1
Supply values for the following parameters:
SettingName: Internet
New-NetTransportFilter : This feature is available on servers only.
At line:1 char:1
+ New-NetTransportFilter
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTransportFilter:ROOT/StandardCi...TransportFilter) [New-NetTransportFilter], CimException
+ FullyQualifiedErrorId : Windows System Error 87,New-NetTransportFilter- Edited by softwaregeek Tuesday, October 15, 2013 9:28 PM
Tuesday, October 15, 2013 9:27 PM -
Hi , I've tried this but come up against the following error "Only the following custom templates InternetCustom and DatacentreCustom can be modified."
I can't find any documentation on Technet about this behaviour or how these templates work. Did anyone manage to work out why some Netsh commands work and some just so "Ok" and silently fail to apply?
Or why the replacement powershell commands silently fail?
Any help is very much appreciated!
Wednesday, October 29, 2014 2:22 PM -
If I understand you correctly on windows 10 (and 8.1) the reason InternetCustom is read only is because you deliberately disabled it on desktop machines?
I have to ask why on earth would you do this, there is very valid reasons to adjust these settings on a desktop machine.
So please clarify the following.
A desktop user can no longer toggle between newreno and ctcp? (well they can I guess by enabling the Compat template).
A desktop user cannot disable delayed acks (unless the registry method still works), this is common for gamers e.g. as it removes artificial tcp delay and can help performance quite a lot.
A desktop user cannot grow the initial congestion window? we all know that 10 is a better value in 2015 in the era of high speed internet, yet you have 4 as a default.
You said you submitted a bug to fix the incorrect ctcp value been shown in netsh int tcp show global yet here I am using windows 10 build 10532 and it is still there.
How does a end user like me submit a bug report please (one that will be read by your developers).
- Edited by chrcoluk Monday, September 7, 2015 1:39 AM
Monday, September 7, 2015 1:38 AM -
Its the same in 2018 on the latest Insider build. They haven't sorted it out yetWednesday, January 17, 2018 12:48 PM
-
it says that
PS C:\Windows\system32> set-nettcpsetting -CongestionProvider CTCP
set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
+ set-nettcpsetting -CongestionProvider CTCP
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting
set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
+ set-nettcpsetting -CongestionProvider CTCP
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting
set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
+ set-nettcpsetting -CongestionProvider CTCP
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting
set-nettcpsetting : Property CongestionProvider is read-only
At line:1 char:1
+ set-nettcpsetting -CongestionProvider CTCP
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting
set-nettcpsetting : Only the custom templates InternetCustom and DatacenterCustom can be modified.
At line:1 char:1
+ set-nettcpsetting -CongestionProvider CTCP
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSettin
g) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSettingSunday, March 1, 2020 7:00 AM -
How ?Sunday, March 1, 2020 7:01 AM