Since the days of XP, perhaps 2k, I've been using a home network with file sharing. Naturally, overtime I've upgraded routers, switches, cables, and hardware. In the mean time I've collected quite a few network tweaks. Because I'm running Xp, Vista, 8, and 8.1, the script is kind of long. In some cases use has been depreciated, but I'll still apply it as it has no effect. Commands that don't work anymore basically just report an error message. Overall though I've been able to increase my throughput, on all but Win8.x.
My Win8.1 box is a dual, 4 core each, 2.83 GHz Xeon, 16 GB RAM, 3 15k rpm SAS drives in RAID 0, nVidia 660, dedicated Intel Gigabit NIC. My Xp Box is a single core/cpu amd 3800+, 2 GB RAM, 40 GB ATA 100 hdd, onboard video, and onboard nVidia Gigabit network card.
I have Jumbo Frames enabled on both systems, and a NAS ( linux based ). Yes the network is segmented ( JumboFrame GB, Non-Jumbo Frame GB, Wi-Fi and printers ).
So here's the thing. My Win 8.1 box transfers a minimum of 20 seconds SLOWER than my Xp box. Testing conditions involve full resets between tests ( anti-virus disabled, sfc, netsh, dism, chkdsk, cleanmgr, ccleaner, and defrags ). I've tested this over a 3 week period with Tutosoft's landspeed test ( 500 to 1125 MB), as well as various scripts to record times to and from a 1GB to 2GB share ( 0 byte files, empty folders, files less than mtu, 1 MB, 10 MB, 20 MB etc 500 files ).
I cannot figure out for the life of me why my Win8.1 box is 20 seconds SLOWER. Locally, on the Win8.1 box, I can copy/move 2gbs as fast as it takes the prompt to show up. Firewalls are identical configured, allowing full access to and from certain IPs/devices.
So here's my Script, currently I'm doing more tests on Vista, and I don't have a Win7 box to try this out on. From the Win8.1 taskmanager, my peak transfer rate is 143 mbps ( 10^6 bits / sec ).
@Echo Off cls Verify On %SystemRoot%\System32\net.exe use %SystemRoot%\System32\net.exe use /persistent:yes %SystemRoot%\System32\bcdedit.exe /set {default} bootmenupolicy legacy setlocal setlocal EnableDelayedExpansion REM Set ForceBandwidth to Yes if you want a specific Setting. REM Decmial Numbers are NOT allowed. REM MyBandwidth is the highest download measurement you can get, REM or the Value your ISP Reports. You can Google/Yahoo REM "Speed Test", to try a few. REM ROUND UP TO the Highest INTEGER NUMBER as MyBandwidth. REM Then enter m or k as the factor. REM For example, REM If you get 28.92 Mbps, enter in 29 and M as the unit REM If you get 0.123 Mbps, enter in 124 and K as the unit REM If you get 511 kbps, enter in 512 and K as the unit REM If your ISP reports 1.5 Mbps, enter in 1500 and K as the unit REM If your ISP reports 10 Mbps, enter in 10 and M as the unit REM If your ISP reports 512 kbps, enter in 512 and K as the unit SET ForceBandwidth=No SET MyBandwidth=150 SET unit=M REM This is fully reset and undo all settings. Overrides all others SET ForceReset=No REM MaxSrvrOrGateway: Use the Max MTU found between the Server or Gateway SET MaxSrvrOrGateway=No REM Usually Safe Standard Network Optimizations SET DoPMtuDisc=No SET DoTcpAckFreq=No SET DoTcpIpNoDelay=No REM Check This one Seperately, Yes for desktops, No for laptops SET noChimneyOffload=No REM Non Standard Tweaks SET DoOtherNetwork=No REM Make Sure Network Shares are mapped in Explorer SET mapNetworkDrives=No REM These two should actually slow your connection. Used for testing REM resetJumbo: Force 1500 MTU ~ over rides LCMSrvrAndGateWay REM LCMSrvrAndGateway: Use MTU based on both the gateway and your server settings below SET resetJumbo=No SET LCMSrvrAndGateway=No SET count=5 SET pingISP=www.pacbell.net REM Leave Blank after the = if you don't have one SET serverIP= SET serverName=SomeNasNameNoSlashes SET DoPMtuDisc=%DoPMtuDisc:~0,1% SET DoTcpAckFreq=%DoTcpAckFreq:~0,1% SET DoTcpIpNoDelay=%DoTcpIpNoDelay:~0,1% SET noChimneyOffload=%noChimneyOffload:0,1% SET DoOtherNetwork=%DoOtherNetwork:~0,1% SET resetJumbo=%resetJumbo:~0,1% SET mapNetworkDrives=%mapNetworkDrives:~0,1% SET ForceReset=%ForceReset:~0,1% SET LCMSrvrAndGateway=%LCMSrvrAndGateway:~0,1% SET ForceBandwidth=%ForceBandwidth:~0,1% SET unit=%unit:~0,1% SET MaxSrvrOrGateway=%MaxSrvrOrGateway:~0,1% SET Sys32=%SystemRoot%\System32\ REM RTT is Round Trip Time or Worst Case Latency in ms REM TTL is time to live, Win default is 32 REM MtuHeader is the Header Bytes not included for ping. REM For windows, I'm thinking it's between 24 and 42 REM but usually 28 is the magic number SET RTT=178 SET TTL=64 SET MtuHeader=28 IF /I "%ForceReset%"=="y" ( SET DoPMtuDisc=n SET DoTcpAckFreq=n SET DoTcpIpNoDelay=n SET noChimneyOffload=n SET DoOtherNetwork=n SET resetJumbo=n SET mapNetworkDrives=n SET LCMSrvrAndGateway=n SET ForceBandwidth=n SET MaxSrvrOrGateway=n ) REM Some house cleaning since everything I have uses Hibernate REM Might do 1 reboot a month %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v NoLmHash /t REG_DWORD /d 0 /f IF %ERRORLEVEL% EQU 0 ( %Sys32%cleanmgr.exe /sagerun:101"%ProgramFiles%\ccleaner\ccleaner64.exe" /AUTO"%ProgramFiles%\ccleaner\ccleaner.exe" /AUTO %Sys32%defrag.exe c: -f -v ) @Echo Removing MMCSS from Audiosrv :FixAdo FOR /F "Tokens=1* delims=" %%i IN ( '%Sys32%reg.exe QUERY "HKLM\SYSTEM\CurrentControlSet\Services\Audiosrv" /v DependOnService' ) DO ( SET regBranch=%%i ) FOR /F "Tokens=1,2,3,4*" %%i IN ( "%regBranch%" ) DO ( SET regBranch=%%k ) SET regBranch=%regBranch:mmcss=% SET regBranch=%regBranch:Mmcss=% SET regBranch=%regBranch:MMcss=% SET regBranch=%regBranch:MMCss=% SET regBranch=%regBranch:MMCSS=% SET regBranch=%regBranch:mmCss=% SET regBranch=%regBranch:mmCSS=% SET regBranch=%regBranch:mMcss=% SET regBranch=%regBranch:mMCss=% SET regBranch=%regBranch:mMCSS=% SET validInterfaces=%regBranch:\0\0=\0% IF /I NOT "%validInterfaces:~-2%"=="\0" ( SET validInterfaces=%validInterfaces%\0 ) %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Audiosrv" /v DependOnService /t REG_MULTI_SZ /d "%validInterfaces%" /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Audiosrv" /v DependOnService /t REG_MULTI_SZ /d "%validInterfaces%" /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\MMCSS" /v Start /t REG_DWORD /d 4 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\MMCSS" /v Start /t REG_DWORD /d 4 /f @Echo Removed MMCSS service from AudioSrv @Echo. @Echo Finding Interfaces SET regBrnch=HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces SET validInterfaces= FOR /F "tokens=1-8 delims=\" %%i IN ( '%Sys32%reg.exe Query %regBrnch%' ) DO ( %Sys32%reg.exe QUERY %regBrnch%\%%p /v DhcpIPAddress IF !ERRORLEVEL! EQU 0 ( @Echo adding %%p SET validInterfaces=!validInterfaces! %%p ) ELSE ( @Echo Not Valid ) ) @Echo Found Interfaces at %validInterfaces% @Echo. @Echo Setting Service %Sys32%reg.exe ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v TcpAutotuning /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /v TcpAutotuning /t REG_DWORD /d 0 /f %Sys32%netsh.exe interface tcp set global autotuninglevel=disable %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -InitialCongestionWindowMss 10 2>Nul FOR %%i IN ( Automatic Compat Custom DataCenter DataCenterCustom Internet InternetCustom ) DO ( %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -SettingName %%i -InitialCongestionWindowMss 10 2>Nul ) %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v EnableDCA /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v EnableDCA /t REG_DWORD /d 1 /f %Sys32%netsh.exe interface tcp set heuristics enabled %Sys32%netsh.exe interface tcp set heuristics wsh=enabled %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -ScalingHeuristics Enabled 2>Nul FOR %%i IN ( Automatic Compat Custom DataCenter DataCenterCustom Internet InternetCustom ) DO ( %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -SettingName %%i -ScalingHeuristics Enabled 2>Nul ) %Sys32%netsh.exe interface tcp set global dca=enabled %Sys32%netsh.exe interface tcp set global netdma=enabled %Sys32%netsh.exe interface tcp set supplemental custom 300 10 ctcp enabled 50 %Sys32%netsh.exe interface tcp set global congestionprovider=ctcp %Sys32%netsh.exe interface tcp set supplemental congestionprovider=ctcp %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -CongestionProvider CTCP 2>Nul FOR %%i IN ( Automatic Compat Custom DataCenter DataCenterCustom Internet InternetCustom ) DO ( %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -SettingName %%i -CongestionProvider CTCP 2>Nul ) @Echo Setting Tcp Parameters SET Scrpt="%temp%\ctcp.reg" SET VB=echo^>^>%Scrpt% IF EXIST %Scrpt% DEL %Scrpt% %VB% Windows Registry Editor Version 5.00 %VB% %VB% [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a03-9b1a-11d4-9123-0050047759bc}\0] %VB% "0200"=hex:00,00,00,00,01,00,00,07,00,00,00,00,00,00,00,00,1e,00,00,00,00,00,\ %VB% 00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,\ %VB% 00,ff,00,ff,ff,00,00,00,00,00,00,00,00,ff,ff,ff,ff,00,00,00,00,00,00,00,00,\ %VB% ff,ff,00,00,ff,ff,ff,ff,00,00,00,00,00,00,00,00 %VB% "1700"=hex:00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ %VB% 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,\ %VB% 00,ff,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ %VB% ff,00,00,00,ff,ff,ff,ff,00,00,00,00,00,00,00,00 %VB% %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v NoLmHash /t REG_DWORD /d 0 /f IF %ERRORLEVEL% EQU 0 ( start /wait %SystemRoot%\regedit.exe -s "%Scrpt%" ) DEL %Scrpt% %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -CongestionProvider DCTCP 2>Nul FOR %%i IN ( Automatic Compat Custom DataCenter DataCenterCustom Internet InternetCustom ) DO ( %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -SettingName %%i -CongestionProvider DCTCP 2>Nul ) %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -EcnCapability Enabled 2>Nul FOR %%i IN ( Automatic Compat Custom DataCenter DataCenterCustom Internet InternetCustom ) DO ( %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetTCPSetting -SettingName %%i -EcnCapability Enabled 2>Nul ) @Echo Interface set @Echo. IF /I "%noChimneyOffload%"=="y" ( %Sys32%netsh.exe interface tcp set global chimney=disable %Sys32%netsh.exe interface ip set global taskoffload=disabled For %%i IN ( ControlSet001 CurrentControlSet ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableTCPChimney /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableTCPA /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v DisableTaskOffload /t REG_DWORD /d 1 /f ) %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetOffloadGlobalSetting -Chimney Disabled 2>Nul %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetOffloadGlobalSetting -TaskOffload Enabled 2>Nul %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetOffloadGlobalSetting -NetworkDirect Enabled 2>Nul ) ELSE ( %Sys32%netsh.exe interface tcp set global chimney=enabled %Sys32%netsh.exe interface ip set global taskoffload=enabled For %%i IN ( ControlSet001 CurrentControlSet ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableTCPChimney /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableTCPA /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v DisableTaskOffload /t REG_DWORD /d 0 /f ) %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetOffloadGlobalSetting -Chimney Enabled 2>Nul %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetOffloadGlobalSetting -TaskOffload Disabled 2>Nul ) @Echo Finding Cores SET cores=0 FOR /F "tokens=2 delims==" %%i IN ('%Sys32%wbem\WMIC.exe cpu get NumberOfCores /value ^| findstr NumberOfCores') DO SET /A cores="cores+%%i" @Echo Number of Cores is %cores% SET /A Low="(%cores%-(%cores%%%2))/2" IF %Low% GTR 16 ( SET /A Low="16+0" ) @Echo Setting RSS If %cores% LSS 3 ( %Sys32%netsh.exe interface tcp set global rss=disabled For %%i IN ( ControlSet001 CurrentControlSet ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\NDIS\Parameters" /v MaxNumRssCpus /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableRSS /t REG_DWORD /d 0 /f @Echo RSS CPUs set to 1, RSS disabled %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetOffloadGlobalSetting -ReceiveSideScaling Disabled 2>Nul ) ) ELSE ( %Sys32%netsh.exe interface tcp set global rss=enabled For %%i IN ( ControlSet001 CurrentControlSet ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\NDIS\Parameters" /v MaxNumRssCpus /t REG_DWORD /d !Low! /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableRSS /t REG_DWORD /d 1 /f @Echo RSS CPUs set to %Low%, RSS enabled ) %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetOffloadGlobalSetting -ReceiveSideScaling Enabled 2>Nul ) SET Low= SET /A cores="(%cores%*%cores%+3*%cores%)/2" IF %cores% LSS 4 SET cores=4 @Echo Tcb Table Partitions will be set to %cores% @Echo. @Echo Setting Options Specified IF /I "%DoPMtuDisc%"=="y" ( %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v PMTUDiscovery /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v PMTUBlackHoleDetect /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\VxD\MSTCP" /v DefaultTTL /t REG_DWORD /d %TTL% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\VxD\MSTCP" /v PMTUDiscovery /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\VxD\MSTCP" /v PMTUBlackHoleDetect /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\VxD\MSTCP" /v DefaultTTL /t REG_DWORD /d %TTL% /f FOR %%i IN ( %validInterfaces% ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUDiscovery /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUBlackHoleDetect /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUDiscovery /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUBlackHoleDetect /t REG_DWORD /d 0 /f ) ) ELSE ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v PMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v PMTUBlackHoleDetect /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\VxD\MSTCP" /v PMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\VxD\MSTCP" /v PMTUBlackHoleDetect /f FOR %%i IN ( %validInterfaces% ) DO ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUBlackHoleDetect /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUBlackHoleDetect /f ) ) IF /I "%DoTcpAckFreq%"=="y" ( %Sys32%reg.exe ADD "HKLM\SOFTWARE\Microsoft\MSMQ\Parameters" /v TcpNoDelay /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v TcpNoDelay /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v TcpNoDelay /t REG_DWORD /d 1 /f ) ELSE ( %Sys32%reg.exe DELETE "HKLM\SOFTWARE\Microsoft\MSMQ\Parameters" /v TcpNoDelay /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v TcpNoDelay /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v TcpNoDelay /f ) IF /I "%DoTcpIpNoDelay%"=="y" ( %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v TcpAckFrequency /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v TcpAckFrequency /t REG_DWORD /d 1 /f ) ELSE ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v TcpAckFrequency /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v TcpAckFrequency /f ) FOR %%i IN ( %validInterfaces% ) DO ( IF /I "%DoTcpAckFreq%"=="y" ( %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpNoDelay /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpDelAckTicks /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpNoDelay /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpDelAckTicks /t REG_DWORD /d 1 /f ) ELSE ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpNoDelay /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpDelAckTicks /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpNoDelay /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpDelAckTicks /f ) IF /I "%DoTcpIpNoDelay%"=="y" ( %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpAckFrequency /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpAckFrequency /t REG_DWORD /d 1 /f ) ELSE ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpAckFrequency /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpAckFrequency /f ) ) @Echo Options Set @Echo. @Echo Adding Standard Reg Keys SET regBrnch=CurrentControlSet ControlSet001 %Sys32%reg.exe ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows\PSched" /v NonBestEffortLimit /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SOFTWARE\Policies\Microsoft\WindowsNT\CurrentVersion\Winlogon" /v SyncForegroundPolicy /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\NetCache" /v SilentForcedAutoReconnect /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\NetCache" /v SilentForcedAutoReconnect /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLinkedConnections /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" /v NetworkThrottlingIndex /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon" /v SyncForegroundPolicy /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v MaxConnectionsPerServer /t REG_DWORD /d 10 /f %Sys32%reg.exe ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v MaxConnectionsPer1_0Server /t REG_DWORD /d 10 /f %Sys32%reg.exe ADD "HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v MaxConnectionsPerServer /t REG_DWORD /d 10 /f %Sys32%reg.exe ADD "HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v MaxConnectionsPer1_0Server /t REG_DWORD /d 10 /f FOR %%i IN ( %validInterfaces% ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v Tcp1323Opts /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v NumTcbTablePartitions /t REG_DWORD /d %cores% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v Tcp1323Opts /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v NumTcbTablePartitions /t REG_DWORD /d %cores% /f ) FOR %%i IN ( %regBrnch% ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v NonBlockingSendSpecialBuffering /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Control\Lsa" /v NoLmHash /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Control\Lsa" /v LMCompatibilityLevel /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Control\Lsa" /v EveryoneIncludesAnonymous /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v DefaultTTL /t REG_DWORD /d %TTL% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v Tcp1323Opts /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnablePMTUDiscovery /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v NumTcbTablePartitions /t REG_DWORD /d %cores% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableConnectionRateLimiting /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation" /v MaxCmds /t REG_DWORD /d 64 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation" /v MaxThreads /t REG_DWORD /d 64 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation" /v MaxCollectionCount /t REG_DWORD /d 64 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation" /v ConnectionCountPerNetworkInterface /t REG_DWORD /d 10 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation" /v ConnectionCountPerRssNetworkInterface /t REG_DWORD /d 10 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation" /v ConnectionCountPerRdmaNetworkInterface /t REG_DWORD /d 10 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation" /v MaximumConnectionCountPerServer /t REG_DWORD /d 32 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Dnscache\Parameters" /v NegativeCacheTime /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Dnscache\Parameters" /v NetFailureCacheTime /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Dnscache\Parameters" /v NegativeSOACacheTime /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\ServiceProvider" /v DnsPriority /t REG_DWORD /d 7 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\ServiceProvider" /v HostsPriority /t REG_DWORD /d 6 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\ServiceProvider" /v LocalPriority /t REG_DWORD /d 5 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\ServiceProvider" /v NetbtPriority /t REG_DWORD /d 8 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanServer\Parameters" /v RestrictNullsessAccess /t REG_DWORD /d 0 /f %Sys32%reg.exe ADD "HKLM\System\%%i\Services\LanmanServer\Parameters" /v TreatHostAsStableStorage /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation\Parameters" /v MaxCmds /t REG_DWORD /d 64 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation\Parameters" /v MaxThreads /t REG_DWORD /d 64 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation\Parameters" /v MaxCollectionCount /t REG_DWORD /d 64 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanWorkstation\Parameters" /v DisableBandwidthThrottling /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\System\%%i\Services\LanmanWorkstation\Parameters" /v DisableLargeMtu /t REG_DWORD /d 0 /f ) @Echo Standard Reg Keys Set @Echo. @Echo Finding Bandwidth, MTU, and TCP Window Size :FindBandMtuRwin IF /I "%resetJumbo%"=="y" %Sys32%netsh.exe interface ipv4 set subint "Ethernet" mtu=1500 store=persistent FOR /F "tokens=1,2,3* delims=:" %%i IN ('%Sys32%ipconfig.exe ^| %Sys32%Findstr /i "gateway"') DO ( SET gateWay=%%~j SET gateWay=%gateWay: =%% ) IF /I "%serverIP%"=="" SET serverIP=%gateway% @Echo Finding MTU for %serverIP% SET lost=0 %Sys32%ping.exe %serverIP% -n 1 2> Nul IF !ERRORLEVEL! NEQ 0 ( @Echo No Connection GOTO Done ) @Echo Connection is Live @Echo. @Echo Checking Bandwidth SET bndWdth=0 IF /I "%ForceBandwidth%"=="y" ( IF /I "%unit%"=="m" ( SET /A MyBandwidth="%MyBandwidth%*1000000" & REM Mega to bits ) ELSE ( SET /A MyBandwidth="%MyBandwidth%*1000" & REM Kilo to bits ) SET bndWdth=!MyBandwidth! SET LcmMtu=%gwMTU% IF !bndWdth! EQU 0 ( @Echo You entered in your Bandwidth wrong, Attempting Adapter Bandwidth ) ELSE ( @Echo BandWidth you report = !MyBandwidth! ) ) SET High=0 :BandScript SET Scrpt="%temp%\getBndWdth.vbs" SET VB=echo^>^>%Scrpt% IF EXIST %Scrpt% DEL %Scrpt% %VB% Dim strQuery, strQuery2, objLocator, objWMI, objItem, objItem2, colItems, colItems2 %VB% Dim minSpeed, nicName %VB% strQuery = "SELECT * FROM Win32_PerfFormattedData_Tcpip_NetworkInterface" %VB% strQuery2 = "SELECT * FROM Win32_NetworkAdapter" %VB% Set objLocator = CreateObject( "WbemScripting.SWbemLocator" ) %VB% Set objWMI = objLocator.ConnectServer( ".", "root\CIMV2" ) %VB% objWMI.Security_.ImpersonationLevel = 3 %VB% Set colItems2 = objWMI.ExecQuery( strQuery2, "WQL", 0 ) %VB% Set colItems = objWMI.ExecQuery( strQuery, "WQL", 0 ) %VB% minSpeed = 2147483646 %VB% For Each objItem2 In colItems2 %VB% If objItem2.NetConnectionStatus = 2 Then %VB% nicName = Mid( objItem2.Name, 1, 5 ) %VB% For Each objItem In colItems %VB% If Mid( objItem.Name, 1, 5 ) = nicName Then %VB% If ( ( ( objItem.CurrentBandWidth + 0 ) ^> -1 ) And _ %VB% ( ( objItem.CurrentBandWidth + 0 ) ^< minSpeed ) ) _ %VB% Then %VB% minSpeed = objItem.CurrentBandwidth + 0 %VB% End If %VB% End If %VB% Next %VB% End If %VB% Next %VB% wScript.Echo minSpeed FOR /F "Tokens=1*" %%i IN ( '%Sys32%cscript.exe //nologo %Scrpt%' ) DO ( SET Low=%%i ) SET /A High=%High%+1 IF %High% LSS %Count% ( @Echo BandWidth reported was %Low% Test number %High% IF %Low% LSS 56000 GOTO BandScript ) IF %bndWdth% EQU 0 ( SET bndWdth=%Low% SET /A bndWdth="(!bndWdth!-(!bndWdth!%%2))/2" & REM Half for Read, Half for Write ) SET /A bndWdth="(%bndWdth%-(%bndWdth%%%8))/8" & REM bits to Bytes DEL %Scrpt% IF %bndWdth% LSS 7000 ( @Echo. @Echo Cannot Determine Bandwidth of your device. @Echo You need for Force the Bandwidth in the opening options @Echo Cannot Set or determin rWin without it. @Echo. SET DoOtherNetwork=n Pause GOTO TestLive ) @Echo Bandwidth Set to %bndWdth% @Echo. IF /I "%resetJumbo%"=="y" ( SET /A gwMtu="1500-%MtuHeader%" SET /A Mtu="1500-%MtuHeader%" GOTO SetLcmMtu ) :FindMtu SET minDiff=1 SET Low=550 SET High=9650 SET mid=5100 SET diff=9100 SET gateway=192.168.1.1 @Echo Finding MTU for %serverIP% @Echo %Low% %high% :FindRoot SET /A diff="%High%-%Low%" If %diff% LEQ %minDiff% GOTO Found FOR /F "tokens=1,2,3,4* delims=Lost" %%i IN ('%Sys32%ping.exe -n 1 -f -l %mid% %serverIP% ^| findstr /i "lost"') DO ( SET lost=%%~l ) FOR /F "tokens=1,2,3,4* delims==(" %%i IN ("%lost%") DO ( SET lost=%%~j ) IF %lost% GTR 0 ( IF %mid% GEQ %High% GOTO Found SET High=%mid% ) ELSE ( IF %mid% LEQ %Low% GOTO Found SET Low=%mid% ) SET /A mid="(%High%+%Low%)/2" @Echo %Low% %high% goto FindRoot :Found FOR /F "tokens=1,2,3,4* delims=Lost" %%i IN ('%Sys32%ping.exe -n 1 -f -l %High% %serverIP% ^| findstr /i "lost"') DO ( SET lost=%%~l ) FOR /F "tokens=1,2,3,4* delims==(" %%i IN ("%lost%") DO ( SET lost=%%~j ) IF %lost% EQU 0 ( SET Mtu=%High% ) ELSE ( FOR /F "tokens=1,2,3,4* delims=Lost" %%i IN ('%Sys32%ping.exe -n 1 -f -l %Low% %serverIP% ^| findstr /i "lost"') DO ( SET lost=%%~l ) FOR /F "tokens=1,2,3,4* delims==(" %%i IN ("%lost%") DO ( SET lost=%%~j ) IF %lost% EQU 0 ( GOTO FindMtu ) ELSE ( SET Mtu=%Low% ) ) SET LcmMtu=%Mtu% @Echo Server MTU %Mtu%+%MtuHeader% @Echo. IF "%serverIP%"=="%gateway%" GOTO SetLcmMtu IF /I "%LCMSrvrAndGateway%"=="y" ( GOTO FindGatewayMTU ) ELSE ( IF /I "%MaxSrvrOrGateway%"=="y" ( GOTO FindGatewayMTU ) ELSE ( SET gwMtu=%LcmMtu% GOTO SetLcmMtu ) ) :FindGatewayMTU @Echo Gateway is %gateway% @Echo Finding Gateway MTU SET gwMtu=0 SET minDiff=1 SET Low=550 SET High=9650 SET mid=5100 SET diff=9100 @Echo. @Echo %Low% %high% :FindGwRoot SET /A diff="%High%-%Low%" If %diff% LEQ %minDiff% GOTO FoundGwMtu FOR /F "tokens=1,2,3,4* delims=Lost" %%i IN ('%Sys32%ping.exe -n 1 -f -l %mid% %gateway% ^| findstr /i "lost"') DO ( SET lost=%%~l ) FOR /F "tokens=1,2,3,4* delims==(" %%i IN ("%lost%") DO ( SET lost=%%~j ) IF %lost% GTR 0 ( IF %mid% GEQ %High% GOTO FoundGwMtu SET High=%mid% ) ELSE ( IF %mid% LEQ %Low% GOTO FoundGwMtu SET Low=%mid% ) SET /A mid="(%High%+%Low%)/2" @Echo %Low% %high% goto FindGwRoot :FoundGwMtu FOR /F "tokens=1,2,3,4* delims=Lost" %%i IN ('%Sys32%ping.exe -n 1 -f -l %High% %gateway% ^| findstr /i "lost"') DO ( SET lost=%%~l ) FOR /F "tokens=1,2,3,4* delims==(" %%i IN ("%lost%") DO ( SET lost=%%~j ) IF %lost% EQU 0 ( SET /A gwMtu="%High%+%gwMtu%" ) ELSE ( FOR /F "tokens=1,2,3,4* delims=Lost" %%i IN ('%Sys32%ping.exe -n 1 -f -l %Low% %gateway% ^| findstr /i "lost"') DO ( SET lost=%%~l ) FOR /F "tokens=1,2,3,4* delims==(" %%i IN ("%lost%") DO ( SET lost=%%~j ) IF %lost% EQU 0 ( GOTO FindMTU ) ELSE ( SET /A gwMtu="%Low%+%gwMtu%" ) ) @Echo Gateway MTU is %gwMtu%+%MtuHeader% @Echo. :SetLcmMtu SET /A Mtu="%Mtu%+%MtuHeader%" SET /A gwMtu="%gwMtu%+%MtuHeader%" IF /I "%MaxSrvrOrGateway%"=="y" ( IF %gwMtu% GTR %Mtu% ( SET LcmMtu=%gwMtu% ) ELSE ( SET LcmMtu=%Mtu% ) ) ELSE ( IF %Mtu% GEQ %gwMtu% ( SET /A LcmMtu="(%Mtu%-(%Mtu%%%%gwMtu%))" ) ELSE ( SET /A LcmMtu="(%gwMtu%-(%gwMtu%%%%Mtu%))" ) ) @Echo. @Echo MTU set to %LcmMtu% @Echo. @Echo Results for Optimal TCP Receive Window Size REM Determine Optimal TCP Receive Window Size REM Since RTT is in ms, I convert the Adapter to kBytes/sec, REM and assume half for read/write and overhead. REM Hence the 16000 constant in the division; REM 1000*2*8 REM rWin is the Optimal UNScaled Window Size REM In the MSS, 40 bytes is for the headers SET /A MSS="%LcmMtu%-40" SET /A BDP="%bndWdth%%%1000" & REM to kBytes SET /A BDP="(%bndWdth%-%BDP%)" SET /A BDP="%BDP%/1000" SET /A BDP="%BDP%*%RTT%" SET /A rWin="(65535-(65535%%%MSS%))/%MSS%" SET /A vle="(%rWin%-(%rWin%%%2))/2" SET /A rWin="%rWin%*%MSS%" SET scl=1 SET /A vle="%rWin%*2" :NxtPwr IF %BDP% GEQ %vle% ( SET /A scl="%scl%+1" SET /A vle="%vle%*2" GOTO NxtPwr ) SET TcpWinSz=%vle% REM This is the value for both the send and receive SET /A TCPSendSz="%bndWdth%-(%bndWdth%%%TcpWinSz%)" SET Power=1 FOR /L %%i IN (1,1,%scl%) DO ( SET /A Power="!Power!*2" ) SET /A rWinScl="%rWin%*%Power%" SET /A chkDfltSndRcvWinMSS="%TCPsendSz%/(%LcmMtu%-40)" SET /A chkDfltSndRcvWinRWin="%TCPsendSz%/%rWin%" SET /A chkDfltSndRcvWinScl="%TCPsendSz%/%vle%" SET /A chkScaledMSS="%vle%/(%LcmMtu%-40)" SET /A chkScaledRWIN="%vle%/%rWin%" SET /A chkrWinMss="%rWin%/(%LcmMtu%-40)" @Echo 1500mtu 4111360 @Echo 9000mtu 4014080 SET Low= %Mtu% @Echo ServerMTU = %Low:~-11% SET Low= %gwMtu% @Echo GatewayMTU = %Low:~-11% SET Low= %LcmMtu% @Echo Lcm MTU = %Low:~-11% SET Low= %bndWdth% @Echo Bandwidth = %Low:~-11% SET Low= %TCPsendSz% @Echo Dflt Send/RecvWin = %Low:~-11% SET Low= %chkDfltSndRcvWinMSS% @Echo Chk div MSS = %Low:~-11% SET Low= %chkDfltSndRcvWinRWin% @Echo Chk div rWin = %Low:~-11% SET Low= %chkDfltSndRcvWinScl% @Echo Chk div Scle = %Low:~-11% SET Low= %rWin% @Echo Un-Scaled rWin = %Low:~-11% SET Low= %rWinScl% @Echo Chk r**s = %Low:~-11% SET Low= %chkrWinMss% @Echo Chk div Mss = %Low:~-11% SET Low= %vle% @Echo Scaled rWin = %Low:~-11% SET Low= %chkScaledRWIN% @Echo Chk div rWin = %Low:~-11% SET Low= %chkScaledMss% @Echo Chk div MSS = %Low:~-11% SET Low= %BDP% @Echo BDP = %Low:~-11% SET Low= %scl% @Echo Scale, power of 2 = %Low:~-11% SET Low= %Power% @Echo 2**s = %Low:~-11% @Echo. %Sys32%netsh.exe interface ipv4 set subinterfaces "Ethernet" mtu=%LcmMtu% store=persistent %Sys32%WindowsPowerShell\v1.0\powershell.exe Set-NetIPInterface -NIMtuBytes %LcmMtu% 2>Nul @Echo Setting Reg Keys based on Above Results FOR %%i IN ( %validInterfaces% ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v MTU /t REG_DWORD /d %LcmMtu% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpWindowSize /t REG_DWORD /d %TcpWinSz% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v GlobalMaxTcpWindowSize /t REG_DWORD /d %TcpWinSz% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v MTU /t REG_DWORD /d %LcmMtu% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpWindowSize /t REG_DWORD /d %TcpWinSz% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v GlobalMaxTcpWindowSize /t REG_DWORD /d %TcpWinSz% /f ) FOR %%i IN ( %regBrnch% ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v FastSendDatagramThreshold /t REG_DWORD /d %LcmMtu% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v FastCopyReceiveThreshold /t REG_DWORD /d %LcmMtu% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v FastSendDatagramThreshold /t REG_DWORD /d %LcmMtu% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v TcpWindowSize /t REG_DWORD /d %TcpWinSz% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v GlobalMaxTcpWindowSize /t REG_DWORD /d %TcpWinSz% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Ndiswan\Parameters\0" /v ProtocolMTU /t REG_DWORD /d %LcmMtu% /f ) IF /I "%DoOtherNetwork%"=="y" ( FOR %%i IN ( %regBrnch% ) DO ( %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v DefaultSendWindow /t REG_DWORD /d %TCPSendSz% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v DefaultReceiveWindow /t REG_DWORD /d %TCPSendSz% /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanServer\Parameters" /v SizReqBuf /t REG_DWORD /d 32768 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\LanmanServer\Parameters" /v IRPStackSize /t REG_DWORD /d 32 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v SackOpts /t REG_DWORD /d 1 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v MaxFreeTcbs /t REG_DWORD /d 5000 /f %Sys32%reg.exe ADD "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v MaxHasTableSize /t REG_DWORD /d 5000 /f ) ) ELSE ( FOR %%i IN ( %regBrnch% ) DO ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v DefaultSendWindow /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v DefaultReceiveWindow /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\LanmanServer\Parameters" /v SizReqBuf /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v SackOpts /f ) ) @Echo reg Keys Set @Echo. :TestLive @Echo Make Persist %Sys32%net.exe use %Sys32%net.exe use /persistent:yes @Echo Persistant set @Echo. @Echo Testing for %pingISP% SET Scrpt="%temp%\TempVBS.vbs" SET VB=echo^>^>%Scrpt% IF EXIST %Scrpt% DEL %Scrpt% %VB% On Error Resume Next %VB% Set oNetwork = CreateObject("WScript.Network") %VB% Set oWMIService = GetObject("winmgmts:\\.\root\cimv2") %VB% For i = 1 To %count% %VB% Set cPings=oWMIService.ExecQuery("Select * From Win32_PingStatus where Address = '%pingISP%'") %VB% For Each oPing In cPings %VB% If oPing.StatusCode=0 Then WScript.Quit(0) %VB% Next %VB% Next %VB% WScript.Quit(1) %Sys32%wscript.exe //nologo %Scrpt% SET Error=!ErrorLevel! DEL %Scrpt% IF EXIST %Scrpt% DEL %Scrpt% @Echo %pingISP% found is %Error% @Echo. @Echo Verify %pingISP% on Loop :Loop %Sys32%ping.exe %pingISP% -n 1 2> Nul IF !ERRORLEVEL! EQU 0 ( %Sys32%ping.exe %pingISP% -n 1 | find /i "bytes=" > nul && goto Connect %Sys32%ping.exe localhost -n %count% > nul ) ELSE ( goto Connect ) goto Loop :Connect %Sys32%ping.exe %pingISP% -n 1 2> Nul IF %ERRORLEVEL% NEQ 0 ( @Echo No Connection ) ELSE ( @Echo Found %pingISP% ) @Echo. IF /I "%mapNetworkDrives%"=="y" ( @Echo Searching for %serverIP% :Loop2 %Sys32%ping.exe %serverIP% -n 1 2> Nul IF !ERRORLEVEL! EQU 0 ( %Sys32%ping.exe %serverIP% -n %count% | find /i "bytes=" > nul && goto Connect2 %Sys32%ping.exe localhost -n %count% > nul ) ELSE ( goto Connect2 ) goto Loop2 :Connect2 %Sys32%ping.exe %serverIP% -n 1 2> Nul IF !ERRORLEVEL! NEQ 0 ( @Echo No Connection ) ELSE ( @Echo Found %serverIP% ) @Echo. @Echo VBS Test for %serverIP% SET Scrpt="%temp%\TempVBS.vbs" SET VB=echo^>^>%Scrpt% IF EXIST %Scrpt% DEL %Scrpt% %VB% On Error Resume Next %VB% Set oNetwork = CreateObject("WScript.Network") %VB% Set oWMIService = GetObject("winmgmts:\\.\root\cimv2") %VB% For i = 1 To %count% %VB% Set cPings=oWMIService.ExecQuery("Select * From Win32_PingStatus where Address = '%serverIP%'") %VB% For Each oPing In cPings %VB% If oPing.StatusCode=0 Then WScript.Quit(0) %VB% Next %VB% Next %VB% WScript.Quit(1) %Sys32%wscript.exe //nologo %Scrpt% SET Error=!ErrorLevel! DEL %Scrpt% @Echo %serverIP% Found %Error% @Echo. ) IF EXIST %Scrpt% DEL %Scrpt% @Echo Ensuring persist %Sys32%net.exe use %Sys32%net.exe use /persistent:yes @Echo persistant set @Echo. IF /I "%mapNetworkDrives%"=="y" ( @Echo Final check for %serverName% :Loop3 %Sys32%ping.exe %serverName% -n 1 2> Nul IF !ERRORLEVEL! EQU 0 ( %Sys32%ping.exe %serverName% -n %count% | find /i "bytes=" > nul && goto Connect3 %Sys32%ping.exe localhost -n %count% > nul ) ELSE ( goto Connect3 ) goto Loop3 :Connect3 %Sys32%ping.exe %serverName% -n 1 2> Nul IF !ERRORLEVEL! NEQ 0 ( @Echo No Connection ) ELSE ( @Echo %serverName% is found REM %Sys32%net.exe use A: \\192.168.x.x\Share2 /u:[domain\login] [password] START %SystemRoot%\explorer.exe \\%serverName% ) ) @Echo. IF /I NOT "%ForceReset%"=="y" GOTO Done :DoForceReset SET regBrnch=HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces SET validInterfaces= FOR /F "tokens=1-8 delims=\" %%i IN ( '%Sys32%reg.exe Query %regBrnch%' ) DO ( %Sys32%reg.exe QUERY %regBrnch%\%%p /v DhcpIPAddress IF !ERRORLEVEL! EQU 0 ( @Echo adding %%p SET validInterfaces=!validInterfaces! %%p ) ELSE ( @Echo Not Valid ) ) %Sys32%reg.exe DELETE "HKLM\SOFTWARE\Microsoft\MSMQ\Parameters" /v TcpNoDelay /f FOR %%i IN ( %validInterfaces% ) do ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v MTU /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v Tcp1323Opts /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v GlobalMaxTcpWindowSize /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUBlackHoleDetect /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpAckFrequency /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpWindowSize /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v MTU /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v Tcp1323Opts /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v GlobalMaxTcpWindowSize /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v PMTUBlackHoleDetect /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpAckFrequency /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v TcpWindowSize /f ) FOR %%i IN ( ControlSet001 CurrentControlSet ) Do ( %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Dnscache\Parameters" /v NegativeCacheTime /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Dnscache\Parameters" /v NetFailureCacheTime /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Dnscache\Parameters" /v NegativeSoaCacheTime /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v DefaultSendWindow /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\AFD\Parameters" /v DefaultReceiveWindow /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v MTU /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v Tcp1323Opts /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v GlobalMaxTcpWindowSize /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v PMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v PMTUBlackHoleDetect /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v TcpNoDelay /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v TcpAckFrequency /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnablePMTUDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\LanmanServer\Parameters" /v SizReqBuf /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v SackOpts /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v DefaultTtl /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v SearchList /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v MaxFreeTcbs /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v TcpWindowSize /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnableIcmpRedirect /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v DisableTaskOffload /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v EnablePmtuDiscovery /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v NumTcbTablePartitions /f %Sys32%reg.exe DELETE "HKLM\SYSTEM\%%i\Services\Tcpip\Parameters" /v UseDomainNameDevolution /f ) %Sys32%netsh.exe winsock reset %Sys32%netsh.exe interface ip reset %Sys32%netsh.exe interface reset %Sys32%netsh.exe interface ipv4 reset %Sys32%netsh.exe interface ipv6 reset %Sys32%netsh.exe interface 6to4 reset %Sys32%netsh.exe httpstunnel reset %Sys32%netsh.exe isatap reset %Sys32%netsh.exe interface portproxy reset %Sys32%netsh.exe interface tcp reset %Sys32%netsh.exe interface teredo reset %Sys32%netsh.exe winsock reset all %Sys32%netsh.exe interface ip reset all %Sys32%netsh.exe interface reset all %Sys32%netsh.exe interface ipv4 reset all %Sys32%netsh.exe interface ipv6 reset all %Sys32%netsh.exe interface 6to4 reset all %Sys32%netsh.exe httpstunnel reset all %Sys32%netsh.exe isatap reset all %Sys32%netsh.exe interface portproxy reset all %Sys32%netsh.exe interface tcp reset all %Sys32%netsh.exe interface teredo reset all c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner64.exe /AUTO c:\progra~1\ccleaner\ccleaner /AUTO %Sys32%ipconfig.exe /flushdns c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner64.exe /AUTO c:\progra~1\ccleaner\ccleaner /AUTO %Sys32%arp.exe -d * %Sys32%nbtstat.exe -R %Sys32%nbtstat.exe -rR c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner64.exe /AUTO c:\progra~1\ccleaner\ccleaner /AUTO %Sys32%nbtstat.exe -RR %Sys32%netsh.exe winsock reset all %Sys32%netsh.exe interface ip reset all %Sys32%netsh.exe interface reset all %Sys32%netsh.exe interface ipv4 reset all %Sys32%netsh.exe interface ipv6 reset all %Sys32%netsh.exe interface 6to4 reset all %Sys32%netsh.exe httpstunnel reset all %Sys32%netsh.exe isatap reset all %Sys32%netsh.exe interface portproxy reset all %Sys32%netsh.exe interface tcp reset all %Sys32%netsh.exe interface teredo reset all %Sys32%netsh.exe winsock reset %Sys32%netsh.exe interface ip reset %Sys32%netsh.exe interface reset %Sys32%netsh.exe interface ipv4 reset %Sys32%netsh.exe interface ipv6 reset %Sys32%netsh.exe interface 6to4 reset %Sys32%netsh.exe httpstunnel reset %Sys32%netsh.exe isatap reset %Sys32%netsh.exe interface portproxy reset %Sys32%netsh.exe interface tcp reset %Sys32%netsh.exe interface teredo reset %Sys32%ipconfig.exe /flushdns c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner64.exe /AUTO c:\progra~1\ccleaner\ccleaner /AUTO %Sys32%arp.exe -d * %Sys32%ipconfig.exe /flushdns %Sys32%ipconfig.exe /release %Sys32%ipconfig.exe /release6 %Sys32%ipconfig.exe /flushdns c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner /AUTO c:\progra~1\ccleaner\ccleaner64.exe /AUTO %Sys32%netsh.exe winsock reset %Sys32%netsh.exe interface ip reset %Sys32%netsh.exe interface reset %Sys32%netsh.exe interface ipv4 reset %Sys32%netsh.exe interface ipv6 reset %Sys32%netsh.exe interface 6to4 reset %Sys32%netsh.exe httpstunnel reset %Sys32%netsh.exe isatap reset %Sys32%netsh.exe interface portproxy reset %Sys32%netsh.exe interface tcp reset %Sys32%netsh.exe interface teredo reset %Sys32%netsh.exe winsock reset all %Sys32%netsh.exe interface ip reset all %Sys32%netsh.exe interface reset all %Sys32%netsh.exe interface ipv4 reset all %Sys32%netsh.exe interface ipv6 reset all %Sys32%netsh.exe interface 6to4 reset all %Sys32%netsh.exe httpstunnel reset all %Sys32%netsh.exe isatap reset all %Sys32%netsh.exe interface portproxy reset all %Sys32%netsh.exe interface tcp reset all %Sys32%netsh.exe interface teredo reset all %Sys32%ipconfig.exe /registerdns %Sys32%ipconfig.exe /flushdns c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner /AUTO c:\progra~1\ccleaner\ccleaner64.exe /AUTO %Sys32%arp.exe -d * %Sys32%nbtstat.exe -R %Sys32%nbtstat.exe -rR %Sys32%nbtstat.exe -RR %Sys32%ipconfig.exe /flushdns c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner /AUTO c:\progra~1\ccleaner\ccleaner64.exe /AUTO %Sys32%nbtstat.exe -RR %Sys32%netsh.exe winsock reset all %Sys32%netsh.exe interface ip reset all %Sys32%netsh.exe interface reset all %Sys32%netsh.exe interface ipv4 reset all %Sys32%netsh.exe interface ipv6 reset all %Sys32%netsh.exe interface 6to4 reset all %Sys32%netsh.exe httpstunnel reset all %Sys32%netsh.exe isatap reset all %Sys32%netsh.exe interface portproxy reset all %Sys32%netsh.exe interface tcp reset all %Sys32%netsh.exe interface teredo reset all %Sys32%netsh.exe winsock reset %Sys32%netsh.exe interface ip reset %Sys32%netsh.exe interface reset %Sys32%netsh.exe interface ipv4 reset %Sys32%netsh.exe interface ipv6 reset %Sys32%netsh.exe interface 6to4 reset %Sys32%netsh.exe httpstunnel reset %Sys32%netsh.exe isatap reset %Sys32%netsh.exe interface portproxy reset %Sys32%netsh.exe interface tcp reset %Sys32%netsh.exe interface teredo reset %Sys32%ipconfig.exe /renew %Sys32%ipconfig.exe /registerdns %Sys32%arp.exe -d * %Sys32%nbtstat.exe -R %Sys32%nbtstat.exe -rR c:\windows\system32\cleanmgr.exe /sagerun:101 c:\progra~1\ccleaner\ccleaner /AUTO c:\progra~1\ccleaner\ccleaner64.exe /AUTO %Sys32%nbtstat.exe -RR %Sys32%ipconfig.exe /flushdns %Sys32%netsh.exe winsock reset %Sys32%netsh.exe interface ip reset %Sys32%netsh.exe interface reset %Sys32%netsh.exe interface ipv4 reset %Sys32%netsh.exe interface ipv6 reset %Sys32%netsh.exe interface 6to4 reset %Sys32%netsh.exe httpstunnel reset %Sys32%netsh.exe isatap reset %Sys32%netsh.exe interface portproxy reset %Sys32%netsh.exe interface tcp reset %Sys32%netsh.exe interface teredo reset %Sys32%netsh.exe winsock reset all %Sys32%netsh.exe interface ip reset all %Sys32%netsh.exe interface reset all %Sys32%netsh.exe interface ipv4 reset all %Sys32%netsh.exe interface ipv6 reset all %Sys32%netsh.exe interface 6to4 reset all %Sys32%netsh.exe httpstunnel reset all %Sys32%netsh.exe isatap reset all %Sys32%netsh.exe interface portproxy reset all %Sys32%netsh.exe interface tcp reset all %Sys32%netsh.exe interface teredo reset all %Sys32%Defrag.exe c: -f -v REM %Sys32%sfc.exe /scannow %Sys32%shutdown.exe -r %Sys32%ipconfig.exe /flushdns %Sys32%arp.exe -d * %Sys32%nbtstat.exe -R %Sys32%nbtstat.exe -rR %Sys32%ipconfig.exe /flushdns %Sys32%nbtstat.exe -RR %Sys32%netsh.exe winsock reset all %Sys32%netsh.exe interface ip reset all %Sys32%netsh.exe interface reset all %Sys32%netsh.exe interface ipv4 reset all %Sys32%netsh.exe interface ipv6 reset all %Sys32%netsh.exe interface 6to4 reset all %Sys32%netsh.exe httpstunnel reset all %Sys32%netsh.exe isatap reset all %Sys32%netsh.exe interface portproxy reset all %Sys32%netsh.exe interface tcp reset all %Sys32%netsh.exe interface teredo reset all %Sys32%netsh.exe winsock reset %Sys32%netsh.exe interface ip reset %Sys32%netsh.exe interface reset %Sys32%netsh.exe interface ipv4 reset %Sys32%netsh.exe interface ipv6 reset %Sys32%netsh.exe interface 6to4 reset %Sys32%netsh.exe httpstunnel reset %Sys32%netsh.exe isatap reset %Sys32%netsh.exe interface portproxy reset %Sys32%netsh.exe interface tcp reset %Sys32%netsh.exe interface teredo reset %Sys32%ipconfig.exe /flushdns %Sys32%arp.exe -d * %Sys32%nbtstat.exe -R %Sys32%nbtstat.exe -rR %Sys32%ipconfig.exe /flushdns c:\progra~1\ccleaner\ccleaner64.exe /AUTO c:\progra~1\ccleaner\ccleaner /AUTO c:\windows\system32\cleanmgr.exe /sagerun:101 :Done @Echo %date% %time% %gwMtu% %Mtu% %LcmMtu% %rwin% %scl% %TcPWinSz% >> "%HomeDrive%\%HomePath%\Desktop\TcpLog.txt" SET BDP= SET bndWdth= SET chkDfltSndRcvWinMSS= SET chkDfltSndRcvWinRWin= SET chkDfltSndRcvWinScl= SET chkrWinMss= SET chkScaledMSS= SET chkScaledRWIN= SET cores= SET count= SET diff= SET DoOtherNetwork= SET DoPMtuDisc= SET DoTcpAckFreq= SET DoTcpIpNoDelay= SET Error= SET ForceBandwidth= SET ForceReset= SET gateway= SET gwMtu= SET High= SET LcmMtu= SET LCMSrvrAndGateway= SET lost= SET Low= SET mapNetworkDrives= SET MaxSrvrOrGateway= SET mid= SET minDiff= SET MSS= SET Mtu= SET MtuHeader= SET MyBandwidth= SET noChimneyOffload= SET pingISP= SET Power= SET regBrnch= SET resetJumbo= SET RTT= SET rWin= SET rWinScl= SET scl= SET Scrpt= SET serverIP= SET serverName= SET Sys32= SET TCPSendSz= SET TcpWinSz= SET TTL= SET unit= SET validInterfaces= SET VB= SET vle= endlocal %SystemRoot%\System32\net.exe use %SystemRoot%\System32\net.exe use /persistent:yes @Echo Done @Echo on