How to Change DelayedAckFrequency's Value

This topic contains 7 replies, has 2 voices, and was last updated by  Dave Wyatt 2 years, 9 months ago.

  • Author
    Posts
  • #10905

    mohsen
    Participant

    Hi I'm trying to change value of DelayedAckFrequency property from Set-NetTCPSetting function. But it gives an error saying the property is Read-Only. how can I change the property's attributes? Is there a way around it? How can I Fix This problem?

  • #10908

    Dave Wyatt
    Moderator

    There's no DelayedAckFrequency property in the MSFT_NetTCPSetting class that I can see. There is a DelayedAckTimeout property, which you set with the -DelayedAckTimeoutMs parameter to the Set-NetTCPSetting cmdlet:

    Set-NetTCPSetting -DelayedAckTimeoutMs 10 -SettingName Custom
    

    There is a per-interface registry value called "TcpAckFrequency"; see http://support.microsoft.com/kb/328890 . Is that what you are trying to modify?

  • #10926

    mohsen
    Participant

    Actually I'm using windows 8.1 RTM. I should have mentioned that but I forgot. in this version TcpAckFrequency doesn't seem to work anymore but instead it's been added to MSFT_NetTCPSetting class. but the problem is that both DelayedAckTimeoutMs and DelayedAckFrequency are read-only and their values can't be changed.
    this is what I get with Get-NetTCPSetting :

    `
    SettingName                   : Automatic
    MinRto(ms)                    : 
    InitialCongestionWindow(MSS)  : 
    CongestionProvider            : 
    CwndRestart                   : 
    DelayedAckTimeout(ms)         : 
    DelayedAckFrequency           : 
    MemoryPressureProtection      : 
    AutoTuningLevelLocal          : 
    AutoTuningLevelGroupPolicy    : 
    AutoTuningLevelEffective      : 
    EcnCapability                 : 
    Timestamps                    : 
    InitialRto(ms)                : 
    ScalingHeuristics             : 
    DynamicPortRangeStartPort     : 
    DynamicPortRangeNumberOfPorts : 
    AutomaticUseCustom            : 
    NonSackRttResiliency          : 
    ForceWS                       : 
    MaxSynRetransmissions         : 
    
    SettingName                   : InternetCustom
    MinRto(ms)                    : 300
    InitialCongestionWindow(MSS)  : 4
    CongestionProvider            : CTCP
    CwndRestart                   : False
    DelayedAckTimeout(ms)         : 50
    DelayedAckFrequency           : 2
    MemoryPressureProtection      : Disabled
    AutoTuningLevelLocal          : HighlyRestricted
    AutoTuningLevelGroupPolicy    : NotConfigured
    AutoTuningLevelEffective      : Local
    EcnCapability                 : Enabled
    Timestamps                    : Disabled
    InitialRto(ms)                : 3000
    ScalingHeuristics             : Disabled
    DynamicPortRangeStartPort     : 49152
    DynamicPortRangeNumberOfPorts : 16384
    AutomaticUseCustom            : Disabled
    NonSackRttResiliency          : Enabled
    ForceWS                       : Enabled
    MaxSynRetransmissions         : 2
    
    SettingName                   : DatacenterCustom
    MinRto(ms)                    : 20
    InitialCongestionWindow(MSS)  : 4
    CongestionProvider            : DCTCP
    CwndRestart                   : True
    DelayedAckTimeout(ms)         : 10
    DelayedAckFrequency           : 2
    MemoryPressureProtection      : Disabled
    AutoTuningLevelLocal          : HighlyRestricted
    AutoTuningLevelGroupPolicy    : NotConfigured
    AutoTuningLevelEffective      : Local
    EcnCapability                 : Enabled
    Timestamps                    : Disabled
    InitialRto(ms)                : 3000
    ScalingHeuristics             : Disabled
    DynamicPortRangeStartPort     : 49152
    DynamicPortRangeNumberOfPorts : 16384
    AutomaticUseCustom            : Disabled
    NonSackRttResiliency          : Enabled
    ForceWS                       : Enabled
    MaxSynRetransmissions         : 2
    
    SettingName                   : Compat
    MinRto(ms)                    : 300
    InitialCongestionWindow(MSS)  : 2
    CongestionProvider            : Default
    CwndRestart                   : False
    DelayedAckTimeout(ms)         : 200
    DelayedAckFrequency           : 2
    MemoryPressureProtection      : Disabled
    AutoTuningLevelLocal          : HighlyRestricted
    AutoTuningLevelGroupPolicy    : NotConfigured
    AutoTuningLevelEffective      : Local
    EcnCapability                 : Enabled
    Timestamps                    : Disabled
    InitialRto(ms)                : 3000
    ScalingHeuristics             : Disabled
    DynamicPortRangeStartPort     : 49152
    DynamicPortRangeNumberOfPorts : 16384
    AutomaticUseCustom            : Disabled
    NonSackRttResiliency          : Enabled
    ForceWS                       : Enabled
    MaxSynRetransmissions         : 2
    
    SettingName                   : Datacenter
    MinRto(ms)                    : 20
    InitialCongestionWindow(MSS)  : 4
    CongestionProvider            : DCTCP
    CwndRestart                   : True
    DelayedAckTimeout(ms)         : 10
    DelayedAckFrequency           : 2
    MemoryPressureProtection      : Disabled
    AutoTuningLevelLocal          : HighlyRestricted
    AutoTuningLevelGroupPolicy    : NotConfigured
    AutoTuningLevelEffective      : Local
    EcnCapability                 : Enabled
    Timestamps                    : Disabled
    InitialRto(ms)                : 3000
    ScalingHeuristics             : Disabled
    DynamicPortRangeStartPort     : 49152
    DynamicPortRangeNumberOfPorts : 16384
    AutomaticUseCustom            : Disabled
    NonSackRttResiliency          : Enabled
    ForceWS                       : Enabled
    MaxSynRetransmissions         : 2
    
    SettingName                   : Internet
    MinRto(ms)                    : 300
    InitialCongestionWindow(MSS)  : 4
    CongestionProvider            : CTCP
    CwndRestart                   : False
    DelayedAckTimeout(ms)         : 50
    DelayedAckFrequency           : 2
    MemoryPressureProtection      : Disabled
    AutoTuningLevelLocal          : HighlyRestricted
    AutoTuningLevelGroupPolicy    : NotConfigured
    AutoTuningLevelEffective      : Local
    EcnCapability                 : Enabled
    Timestamps                    : Disabled
    InitialRto(ms)                : 3000
    ScalingHeuristics             : Disabled
    DynamicPortRangeStartPort     : 49152
    DynamicPortRangeNumberOfPorts : 16384
    AutomaticUseCustom            : Disabled
    NonSackRttResiliency          : Enabled
    ForceWS                       : Enabled
    MaxSynRetransmissions         : 2
    `

    and this is the cmdlet that I should use to change the values:

    `

    Set-NetTCPSetting -DelayedAckFrequency 1 -DelayedAckTimeoutMs 10 -SettingName internetcustom`

    Internet and Database Settings are Read-only and I should use InternetCustom Instead. But even in InternetCustom Setting it still doesn't let me change some properties.


    Set-NetTCPSetting : Property DelayedAckTimeout is read-only
    At line:1 char:1
    + Set-NetTCPSetting -DelayedAckFrequency 1 -DelayedAckTimeoutMs 10 -SettingName in ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSetting) [Set-NetTCPSetting], CimException
    + FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting

  • #10927

    Dave Wyatt
    Moderator

    Ah, I haven't started using Windows 8.1 yet. In Windows 8 / Server 2012, Set-NetTCPSetting only allows you to change the "Custom" setting; all others are read-only. This may be what you're running into in Windows 8.1 when you attempt to modify the "InternetCustom" setting, unless they've changed that limitation.

  • #10930

    mohsen
    Participant

    well MSFT_NetTCPSetting is still the same thing. all they've done are mostly modifications and limitations. they've increased the number of setting names for more scenarios. for example instead of custom we now have internetcustom and Datacentercustom and DatacenterCustom can't be modified unless windows is installed on a server. but what bugs me is they've almost made every property in InternetCustom read-only

    AutomaticUseCustom, CongestionProvider, CwndRestart, InitialCongestionWindow, MemoryPressureProtection, InitialRto, MinRto, DelayedAckTimeout and DelayedAckFrequency are all read-only. what's funny is people who use Set-NetTCPSetting usually want to change these properties only.

    Is there a way I can modify MSFT_NetTCPSetting Class entirely or add another SettingName and force windows to use it or change a specific property's read-only attribute?

  • #10950

    Dave Wyatt
    Moderator

    Hopefully someone who's got Windows Server 2012 R2 or Windows 8.1 handy can help out with this. Until I get around to building VMs with those operating systems, I'm really just making guesses.

  • #20614

    mohsen
    Participant

    hi I'm bringing this topic up again.
    recently I tried to change those properties with Set-wmiInstance and set-CimInstance with no luck. it still doesn't let you change those values.
    when I used Set-wmiInstance to modify DelayedAckFrequency in MSFT_NetTCPSetting it gave me something like this:

    [blockquote]error: cannot convert property from system.string to system.collections.hashtable[/blockquote]

    it gave me the same thing for set-cimInstance with the difference that instead of saying cannot convert from property from system.string to system.collections.hashtable it says:

    [blockquote]cannot convert property from system.string to system.collections.IDictionary[/blockquote]

    what does that mean?? I'm not trying to convert anything. I'm just trying to change the value of the property that's all.
    am I using the wrong commands? if I wanted to change a property that's written in system.string (whatever that means) what commands should I use?
    has Microsoft written their whole windows in read-only? why aren't I allowed to change this damn property?? this is so frustrating. I've been stuck at this point forever... since windows 7 to 8 to 8.1 and windows 10 is definitely going to be the same a gauntlet of read-only properties.

  • #20615

    Dave Wyatt
    Moderator

    You didn't post the commands that you entered when you got those errors, but best guess is that you're passing a string value to either the -Arguments parameter (for Set-WmiInstance) or the -Property parameter (for Set-CimInstance). Those parameters take hashtable and IDictionary types, respectively.

You must be logged in to reply to this topic.