MTU-Speed Version 3.08 LEGAL BIT AND DISCLAIMER This software is freeware. However, I assert my right to be identified as the author of this software. It is not acceptable behaviour to disassemble or otherwise hack the executable. MTU-Speed is provided "as is" with no claims to it’s capabilities or stability. If you do not back up your registry prior to using this software then all I can say is "don’t blame me!". Having said that I have never had any problems with it but it is sensible to take some precautions. *****  PLEASE BACK UP YOUR REGISTRY BEFORE USING MTUSpeed!! ***** PLATFORM SUPPORT MTUSpeed is designed for Windows 95 & Memphis (English Versions only). It may work with other language versions (feedback suggests that French, German, Italian and Dutch versions are ok). It has been tested on Win95 build 950 and 950a (sometimes known as OSR1), on OSR2 and on Memphis. If it doesn’t work, restore your registry - you did back it up didn’t you? (Big Grin) - and e-mail me with as much info as you can including the MTUSpeed Version number from the title bar. I am still considering a version of MTUSpeed for NT. However, the NT Winsock/DUN combination is better automated than the Win95 version; PMTUDiscovery is automatically configured and RWIN is dynamic (8192 bytes rounded up to an integer value of MSS). This may negate the requirement for an NT version. However, many people have asked for one and I may write one anyway. INTRODUCTION I wrote MTUSpeed when trying to optimise the throughput of my Internet access. I became tired of opening the registry, finding the appropriate keys, editing them and then closing the registry again. MTUSpeed was written using ideas gained from, amongst other sources, the guys at NetPro NorthWest who publish the "MaxMTU Fix for Win95" document. The document can be found at http://www.sns-access.com/%7Enetpro/maxmtu.htm. Alternative excellent sources of information are "Lynn Larrow's Place" in the US (http://www.webcom.com/~llarrow/) and Malcolm Reeves' "Win95 TCP/IP Tips and Tricks" (http://dspace.dial.pipex.com/mreeves/tips.htm) page in the UK. I strongly suggest that you read some of these documents prior to using MTUSpeed for the first time. Automatic PMTU (Path Maximum Transmission Unit) Discovery is discussed in Article Q158474 in Microsoft's Knowledge Base (http://www.microsoft.com/kb/default.asp is the US Site or http://www.eu.microsoft.com/kb/default.asp for the European Site). RFC 1191 is the document that covers the use of PMTUDiscovery on IPv4 and is available at http://www.graphcomp.com/info/rfc/rfc1191.html. It is also available at http://hotline.pvtnet.cz/dokumentace/rfc/rfc1191.html. WHAT DOES MTUSPEED DO? MTUSpeed writes values to several keys in your registry. It writes: MaxMTU = xxxx to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\00yy (where yy ranges from 00 to 30 to cater for different setups) DefaultRcvWindow = yyyy to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP. PMTUDiscovery = 0 or 1 to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP. PMTUBlackHoleDetect = 0 or 1 to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP. DefaultTTL = 32 or 64 to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP. default = xx to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\NWLink\Ndi\params\cachesize. (the Win95 default for xx is 0. The optimum is 16!) The default values used by Windows are discussed in the Documents listed above. EFFECT OF KEYS AND CHECKBOXES When starting, MTUSpeed accesses the registry in read-only mode. The registry settings remain valid until you change them either manually or using MTUSpeed. They are not lost following a reboot. In MTUSpeed I refer to DefaultRcvWindow as RWIN so please don't get confused. The effect of the "Basic" and "Optimise" buttons can be modified using the "Apply to all keys?" and the "RWIN enabled by default?" checkboxes. With the "Apply" checkbox checked, the MaxMTU value is forced to be the same for all TCP keys listed in the dropdown box. If unchecked, only the displayed TCP key is affected by MaxMTU changes. With the RWIN box checked, RWIN is set to "Enable" if either of the buttons are pressed. If the box is unchecked, pressing the buttons sets RWIN to "Remove". This feature was implemented so that those using TCP/IP LANs could choose whether or not to set RWIN. If you select the "Basic Settings" Button on MTUSpeed it will DISPLAY values of MaxMTU=576, DefaultRcvWindow=2144 (if RWIN box checked), removes the "Auto", "BlackHole" and "TTL" keys and sets NDICache to 0. If you select the "Optimum Settings" Button on MTUSpeed it will DISPLAY values of MaxMTU=576, DefaultRcvWindow=2144 (if RWIN box checked), disable the "Auto" and "BlackHole" keys, sets "TTL" to 64 and sets NDICache to 16. You can change MaxMTU by pressing the "Change MaxMTU" Button. MTUSpeed calculates MSS by subtracting 40 from your entered value of MaxMTU. RWIN is calculated from the MSS times the Multiplier value (set by the slider) e.g., with MaxMTU=1524, MSS will be calculated as 1484 and, if the slider is set to a value of 4, then RWIN = 1484 x 4 = 5936. MTUSpeed will write MaxMTU only, RWIN only or MaxMTU AND RWIN values to the registry (if you enable both). The default is dependant on the state of the RWIN checbox on the "MTU Settings" page. If you elect to write one value, the other is deleted from the registry. I suggest you either write both or MaxMTU only. If MaxMTU is set to remove, the option to set RWIN values by clicking a button is enabled. You can manually set a value in the RWIN dialog box. Setting MaxMTU to Enable will disable the RWIN Button. If you don't want to apply any changes just close the program window and select YES in response to the dialog asking if you really want to quit. MTUSpeed will NOT change the registry until the "Update Registry" Button is pressed. That is the only time MTUSpeed writes to the registry. It does not write to the registry on exit. Therefore, prior to selecting another TCP key from the dropdown list you should press "Update Registry" if you want the MTU settings for that key saved. Otherwise, the settings you have picked will be lost when you select another key. Clicking with the right mouse button anywhere in the main window will bring up a menu. Selecting "Remove Settings" and then pressing "Update Registry" returns the registry to the default Win95 condition. WHAT SETTINGS SHOULD I USE? Selecting Auto MTU Detection allows TCP to sort out an MTU for you. I have been having favourable results with this one but only occasionally. I use MaxMTU = 576, RWIN=MSSx8, "Auto" Disabled, "Black Hole" Disabled, TTL = 64 and NDI Cachesize = 16. Alternatively, try MaxMTU and RWIN removed with BOTH Auto and Black Hole enabled. I find having MaxMTU or RWIN enabled interferes with the Auto setting but it may be different for you. INSTALLATION Run the executable which will allow you to extract the program and text file to any directory of your choice. By default it suggests \MTUSpeed\ but you can over-ride this. Make a shortcut to the executable anywhere you want. MTUSpeed does not require DLL’s, registry entries or an ini file in order to run. Use the shortcut to start the program having read the relevant docs first! UNINSTALLING Use the "remove settings" button to clear out your registry (if you want to). Delete the shortcut if you created one. Delete the MTUSpeed Folder. That's it ! VERSION HISTORY Version 3.08 -- Added website address to the "About" box. -- Fixed bug introduced in version 3.07 that caused RWIN not to be removed from registry if "Remove" button pressed. -- Fixed bug introduced in version 3.07. With the registry in the default state (nothing added) and the "RWIN enabled by default" checkbox ticked, selecting either the "Basic" or "Optimal" buttons didn't actually enable RWIN. Version 3.07 -- Added checkbox to allow user to decide if RWIN should be enabled or disabled when the "Basic" or "Optimal" buttons are pressed. Version 3.06 -- Added Check box to allow changes to MaxMTU to be applied to all keys simultaneously. -- Removed bug that was present following certain button push combinations. It caused MaxMTU to be written as 0 instead of removing the key. -- Selecting either of the "Auto" options sets MaxMTU to "Remove". -- Implemented a second attempt to cure the "notepad starts hidded" problem experienced by some users. Version 3.05 -- Fixed major bug which caused RWIN to be incorrectly read on program start on certain occasions. Version 3.04 -- Corrected logic in "Optimum" and "basic" algorithms. After certain button push combinations, incorrect displays were sometimes experienced when selecting different keys from drop down list. -- Selecting MaxMTU to "Remove" forces the MaxMTU value to 0. Reselecting "enabled" sets MaxMTU as 576 (Hey, I had to choose something ) -- Added new command to Popup menu:- "Re-read Registry". This is for when you get confused as to what your settings were. Selecting it re-reads the values from the registry (before you had to close and re-open MTUSpeed to achieve the same effect) -- Altered the way in which the "View Readme" subroutine initialised notepad. This is to try and cure a problem (experienced by users of the PanEuropean version of Win95) where notepad would start hidden! Version 3.03 -- When RWIN is set to "Remove" the RWIN value is now displayed as 0. -- Setting MaxMTU to "Remove" sets MaxMTU and MSS displayed values to 0. -- When the "Update Registry" button is pressed, a "Read after Write" subroutine is now used to update the display with the values that were written to the registry. -- Created new subroutines to remove repetitive code in certain sections. -- Fixed bug that caused the TCP key label on the program window to disappear after a certain combination of keystrokes. -- Reduced key search from 50 keys to 30 keys to limit memory overhead of large array allocation. Version 3.02 -- Added label showing total number of TCP keys detected. -- Removed Sockets option due to lack of positive feedback regarding this feature. -- Selecting "Remove Settings" puts ALL MaxMTU keys and other settings to the "Remove" state. Previously, "Remove" had to be pressed for each MaxMTU key in turn. Version 3.01 -- Improved logic on greying out of labels. -- Changed "Optimum Settings" algorithm so that RWIN is set to "Remove" -- Changed "Basic Settings" algorithm so that RWIN is set to "Remove" Version 3.0 -- Rewrote TCP detection algorithm. Now detects all keys that hold TCP data and doesn't stop when the first key is found. -- Added dropdown ComboBox to give access to each different key that holds TCP data. -- ComboBox displays DriverDesc value and IP stored in key to aid identification. -- Added ability to set a value for RWIN if MTU is disabled. -- Added RWIN option on Button and Popup menu (greyed out if MaxaMTU enabled). -- Fixed bug in MTU dialog which prevented MaxMTU Value being highlighted when the dialog was shown for the second time. -- Fixed bug that caused Update Button to be enabled when OK was pressed on MTU dialog even though the MTU value hadn't changed. Version 2.41 -- Removed some extraneous references to WebSpeed in the code aand message dialogs. -- FAQ available on website. Version 2.4 -- Added tabbed dialog pages to simplify interface. If you don't want to see all the radio buttons you don't have to look at them (most of them are set once and leave anyway). -- Provided option for setting TTL (Time To Live) to increase number of hops allowed before time out (Option for selecting 32 or 64 hops on Registry Options tab). -- Provided NDI CacheSize option to change NDI Cache setting on Registry options tab. The preferred setting is 16 but Win95 sets 0 for some reason. Setting 16 made a noticable improvement for me. -- Altered the Optimise and Remove algorithms to account for the new additions. -- Added popup help for most controls. -- Changed the buttons. "Basic Settings" provides basic settings as a starting point. "Optimum Settings" provides settings which should work for most people and is what I recommend that you use. "Remove All Settings" returns the registry to the Win95 default state. -- Moved "Update Registry" option on popup menu to the top of the menu to make it stand out more. Added entries to popup menu to correspond to the new buttons. Version 2.3 This version is effectively WebSpeed 2.2. However, I have been forced by Progress Software Corporation to change the name from WebSpeed. Although I would have changed it if requested, I was actually left with little option. As, firstly, I cannot afford large legal bills (especially as it would have been transatlantic) and, secondly, I feel that any company is better using it's profits to improve it's services (as opposed to running legal battles) I have changed the name from WebSpeed to MTUSpeed. Version 2.2 -- Added support for NetManage TCP stack and for any Winsock that writes either "tcp/ip" or "TCP/IP" as part of the DriverDesc Value in the NetTrans\00xx key. -- Lower left window segment now displays which of the NetTrans\00xx keys is being displayed. Version 2.11 -- If the NWlink "Sockets" key isn't detected, the sockets box is greyed out to prevent people messing with the setting :) -- Fixed a bug where if "sockets" wasn't detected on startup, a value was shown in the text window and, pressing update caused the key to be unnecessarily created. Version 2.1 -- Added "Remove All Settings" button. This sets all WebSpeed options to "remove" and sets Sockets to 255. The keys will not be removed/changed until the "Update" button is pressed. -- Added facility to alter the number of sockets allowed from default of 255. This is for IPX protocols. -- Pressing the defaults button now sets Sockets to 255 in addition to changing MaxMTU and RWIN. -- If no keys are detected on startup, MaxMTU and RWIN radio buttons are set to enabled and default values of MaxMTU=576 and Multiplier=4 are allocated. (Previously the values had been set but the radio buttons were not selected.) -- If MaxMTU isn't in the registry; the MaxMTU label is greyed out. -- Selecting MTU enabled/removed toggles the greying out of MaxMTU. -- If RWIN isn't in the registry; RWIN, Multiplier and MSS labels are greyed out. -- Selecting RWIN enabled/removed toggles the greying out of RWIN, Mult and MSS. Version 2.02 -- Corrected problem with textlabel at top of window. On some graphics cards it would wrap lines and hide the MaxMTU value. Version 2.01 -- The "Update Registry" option on the popup menu is disabled/enabled in synchronisation with the "Update Registry" Button. -- Fixed bug where clicking on Trackbar would cause the "Update Registry" Button to be enabled even if the TrackBar hadn't moved. -- Added an "Exit WebSpeed" option to the popup menu. -- Fixed a bug where WebSpeed didn't correctly identify that TCP/IP was installed if TCP/IP was in a key greater than \NetTrans\0009. (oops!) Version 2.0 -- Started again :) Reduced executable size by around 20 kb. -- Fixed a bug where, if you tried to start WebSpeed from a shortcut with the shortcut's run property set to "minimised", you got some very funny effects. My thanks go to Arsene von Wyss for help with that piece of code. -- You now have more control over which values are written to the Registry. You can write any or all values as you want. -- Auto MTU Discovery can be enabled (PMTUDiscovery set to 1), Disabled (Set to 0) or Removed (key deleted from registry). Enabling it causes the MaxMTU and RWIN "Remove" options to be selected by default. If you really want to set MaxMTU and RWIN with Auto enabled then just click the appropriate enable options but I don't recommend it. -- While Auto MTU Discovery is enabled, MaxMTU, RWIN, MSS and Multiplier values are grayed out. If you enable MaxMTU or RWIN the values will remain greyed out as a warning (MaxMTU and RWIN values will be correctly written to the registry if the Update button is clicked). -- Added MTU Black Hole Detection to detect routers that do not return fragmentation messages. This, like AutoMTU, can be enabled, disabled or removed. -- Added keyboard shortcuts to the program buttons. -- Changed minimum allowable MaxMTU value to 68 (the IP4 Standard). Version 1.7 -- Optimised logic and subroutine usage. -- Corrected bug in TCP/IP detection. WebSpeed now closes gracefully if TCP/IP not detected. -- Changing MTU or dragging the slider deselects the Remove and Auto radio buttons if they were selected. If one of the other radio buttons were selected then they are not changed. -- If AutoMTU is detected on startup, and one of the other radio buttons is subsequentlly selected before any values are changed, the Update button is automatically enabled. In previous versions it would stay greyed out. -- Added option on Popup menu to view ReadMe. -- Added option on Popup menu to Set AutoMTU. Version 1.6 -- Removed bug where AutoMTU Detection not properly removed from registry. -- Enabled checking of registry for TCP/IP in keys other than NetTrans\0002. Version 1.5 -- Added check for multiple instances. You cannot now run multiple copies of WebSpeed. -- Verifies that the NetTrans/0002 key actually contains the TCP/IP settings. -- Corrected a small typo in the about box :( -- After typing new MaxMTU value, pressing ENTER selects "OK" and returns to main form. -- Enabled tabbing through Radio Buttons. -- Added support for Automatic MTU Detection. Version 1.4 -- You can remove the registry entries. FAREWELL I hope you find this utility helpful. Please read some of the recommended documents (or RFC1191) to fully understand what you are trying to achieve. Happy surfing!!! Edinburgh, Scotland - 20 August 1997 Copyright Mike Sutherland (mike@mjs.u-net.com) 1997