Optimizing Windows 98 Internet Connections
By Mr. Echevarria - Continuously Online since September of 1997
Last Revised on 07/27/00 11:40:09 PM
The ultimate Internet optimization guide for all versions of Windows 98; however, I'm open to any and all suggestions, contact me with your contribution. These guidelines work by optimizing the layers of the OSI network model within Windows itself. These guidelines also allow for the best ping in online games, including QuakeWorld, Quake 2 & 3, Unreal and many others.
Modem Control and Setup
Windows was originally released in 1995, a time when 28,800 bps modems reigned supreme, but the default settings used when Windows detects and installs a modem actually reflect the lower settings a 14,400 user would use. Unfortunately, Windows 98 continued in the archaic footsteps of it's older brethren, supplying just the bare minimum settings required to communicate with a modem. Fortunately, it's easy to correct these settings to allow the most data in and out for today's 56,000 bps modems!
- Select the 'Modems' control panel.
- Select the 'Properties' for the modem you wish to optimize.
- Write down your modem's COM port. (You will need this information in the COM Port Setup section.)
- Under the 'General' tab, set the 'Maximum speed' field to 115200 for v.90 (56k) modems, 57600 for 28.8/33.6k modems.
- Unmark the 'Only connect at this speed' option.
- Under the 'Connection' tab, confirm that your Data, Parity, and Stop bit fields are set properly (usually 8 data bits, no parity, 1 stop bit).
- Select the 'Port Settings' option, mark the 'Use FIFO buffers' option and move the 'Receive Buffer' and 'Send Buffer' sliders to the maximum values (14, and 16, respectively).
- Select Ok from the 'Port Settings' window to return to the 'Connection' tab window.
- Select the 'Advanced' option, mark the 'Use error control' and 'Compress data' options. (Some people recommend disabling these options; however, they do not improve your connection when everything else is set up properly--see the Modem Init String Recommendations section below.)
- Mark the 'Use flow control' and 'Hardware (RTS/CTS)' options.
- Confirm that the 'Modulation type' is set to "Standard".
- Add any 'Extra settings' you require or prefer (see the Modem Init String Recommendations section below).
- Select Ok from the 'Advanced Connection Settings' window.
- Select Ok from the 'Properties' window.
- Select Ok from the 'Modems' control panel.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
COM Port Setup
The COM port--the second half of the modem--also suffered from Microsoft's decision to use settings geared to the lowest common denominator instead of the high speed modem user of the time, which, when Windows 98 was released in late 1998 was (and still is) the 56,000 bps user.
This section applies to all internal and external modems, most external ISDN adapters, some internal ISDN adapters, and even certain xDSL adapters. If you use an adapter other than a modem, replace "modem" in the following text with your device's name. For example, replace "modem" with "external ISDN adapter." (If you have an internal ISDN adapter that does not incorporate a modem, this section does not apply to you. This section only applies to devices/adapters that connect to (or emulate) a serial port.)
- Method 1
- Select the 'System' control panel.
- Select the 'Device Manager' tab.
- Select the 'Ports (COM & LPT)' option.
- Select the properties for the COM port you wrote down in the Modem Control and Setup section.
(If you have an internal modem, its COM port may not show up in the Device Manager. Exit from the Device Manager and use Method 2 of this section instead.)
- Select the 'Port Settings' tab.
- Change the 'Bits per second' field to match the response given in the 'Modems' control panel (115200 for v.90 (56k) modems, 57600 for 28.8/33.6k modems).
- Confirm that the 'Data bits', 'Parity', and 'Stop bits' fields match those specified in the Modem Control and Setup section (usually 8 data bits, no parity, 1 stop bit).
- Confirm that the 'Flow control' field is set to the "Hardware" option.
- Select Ok from the 'Communications Port Properties' window.
- Select Ok from the 'System Properties' window.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
- Skip over Method 2.
- Method 2
- Select 'Run' from the Start menu, type SYSEDIT and select Ok.
- Select the WIN.INI window.
- Select 'Find', under the 'Search' option in the SysEdit menu bar, type "ports" and select Next.
- Under the 'Ports' section, locate the COM port that corresponds to your modem and change the values to the following:
COMx:=115200,n,8,1,p (For v.90 modems.)
COMx:=57600,n,8,1,p (For 28.8/33.6k modems.)
(Replace 'x' with the COM port number you wrote down in the Modem Control and Setup section.)
- Select 'Save' from the SysEdit 'File' menu.
- Select 'Exit' from the SysEdit 'File' menu.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
Notes:
The COMxFIFO, BUFFER and other COM port options some people recommend adding to the [386Enh] section of SYSTEM.INI are strictly real-mode options. They have absolutely no affect on Windows 98 COM port/modem performance--the above-mentioned modem control panel settings (see the Modem Control and Setup section) take priority at all times. Unless you use your modem in MS-DOS mode (not to be confused with an MS-DOS prompt), do not waste your time. Basically, those settings died with Windows 3.1...
Lean 'Dial-Up Networking' Settings
For some strange reason, even though the popularity of the Internet had already been well solidified when it released Windows 98, Microsoft chose not to revise the client/server-based (rather than PPP based) settings dial-up networking comes preset to use. Thankfully this oversight can be quickly corrected.
- Open the Dial-Up Networking folder.
- Select the properties for your ISP's connection.
- Under the 'General' tab, unmark the 'Use area code and Dialing Properties' box.
- Under the 'Server Types' tab, confirm that the 'PPP: Internet, Windows NT Server, Windows 95' option is selected in the 'Type of Dial-Up Server' option box.
- Unmark the 'Log on to network', 'NetBEUI' and 'IPX/SPX Compatible' boxes.
- If you use a modem (or any other adapter that performs hardware-based compression), unmark the 'Enable software compression' box.
If you use an adapter that does not perform hardware-based compression (certain ISDN and xDSL adapters), leave the 'Enable software compression' box enabled (marked).
- Confirm that the 'Require encrypted password' and 'Require data encryption' options are unmarked.
- Click on the 'TCP/IP Settings' box.
- If your ISP allows automatic IP addressing and DNS determination, mark 'Server assigned IP address' and 'Server assigned name server address'.
If your ISP requires a specific IP address and/or DNS setting, mark 'Specify an IP address' and/or 'Specify name server addresses' and complete as required by your ISP.
- Unmark the 'Use IP header compression' box.
- Confirm that the 'Use default gateway on remote network' box is marked.
- Select 'Ok' to exit from 'TCP/IP Settings' window.
- Select 'Ok' to exit from your ISP's Dial-Up Networking properties.
- Close the Dial-Up Networking folder.
Lean 'Network' Settings
When Windows installs its dial-up components it installs almost every possible dial-up component combination. Because of the way Windows 98 handles network components, having unused components active in your network settings prevents peak network performance. If you do not use other network protocols/adapters, remove everything except the components required for internet connections (and online games): Dial-Up Adapter and TCP/IP. Then work through the recommended settings indicated below for the remaining network components.
Note: If you delete unnecessary Adapters and Protocols from the 'Network' control panel, subsequent visits to the 'Network' control panel will cause Windows 98 to display the error message, "Your network is incomplete." Ignore this error message, online play/internet connection components are complete and work flawlessly.
- Select the 'Network' control panel.
- Select the properties for the 'Dial-Up Adapter'.
- Under the 'Bindings' tab, only TCP/IP should be marked, unmark everything else.
- Under the 'Advanced' tab, click on the Property 'Use IPX header compression' and change its Value to 'No'.
Click on the Property 'Enable Point To Point IP' and change its Value to 'No'.
(Please note, if you regularly accept and authenticate dial-in calls, do not disable this option; but, be aware disabling this option (by setting its Value to 'No') improves connection response (ping) time by about 3-5ms.)
- Leave the 'IP Packet Size' option at its default setting (Automatic).
(We will manually set the packet size in the MTU, RWIN and TTL Values section below.)
- Click on the Property 'Record a log file' and confirm its Value is set to 'No'.
- Select Ok to exit the 'Dial-Up Adapter' properties.
- Select the properties for 'TCP/IP'.
- Under the 'Bindings' tab, unmark everything.
- Under the 'NetBIOS' tab, unmark 'I want to enable NetBIOS over TCP/IP'.
- Under the 'WINS Configuration' tab, select 'Disable WINS Resolution'.
- Under the 'DNS Configuration' tab, select 'Disable DNS'.
(If your ISP does not allow automatic DNS determination, put the DNS server address(es) under the Dial-Up Networking properties for your internet connection (see the Lean Dial-Up Networking Settings section) instead of making a global DNS setting here.)
- Under the 'IP Address' tab, select 'Obtain an IP Address Automatically'.
(If your ISP does not allow automatic IP addressing, put your IP address under the Dial-Up Networking properties for your internet connection (see the Lean Dial-Up Networking Settings section) instead of making a global IP address setting here.)
- Under the 'Advanced' tab, select the 'Set this protocol to be the default protocol' option.
- If you use Windows 98 Second Edition, also under the 'Advanced' tab, confirm that the 'Allow Binding To ATM' value is set to 'No' unless you use an xDSL adapter and your DSL service supports or requires this function.
- Select Ok to exit from the 'TCP/IP' properties.
- Select Ok to exit from the 'Network' control panel.
MTU, RWIN and TTL Values
In order to complete the following section, you must know your ISP's Maximum Transmission Unit (MTU). If your ISP's help desk or the connection response in the terminal window provide your MTU value, skip Steps 1 & 2 and go directly to Step 3.
(Note: If you do not understand basic algebra, you might want to skip this entire section.)
- Open an MS DOS Prompt from the 'Programs' sub-menu of the Start Menu.
- Type PING -F -L xxxx www.YourISP.com - Replace "xxxx" with numerical values until you find the highest value where the PING command no longer responds with the error: "Packet needs to be fragmented but DF set." Add 28 to the highest PING value you attain in order to calculate your actual MTU value. For example, if the highest value you attain using the PING command is 1124, adding 28 will result in a final maximum packet size (MTU) of 1152. Algebraically, the equation for the sample MTU value was (PING Value + 28)=MTU or (1124+28)=1152.
- Warning:
- Do not repeat this step after your MTU has been set. The PING command will always report a value 28 bytes lower than the actual maximum packet (MTU) size due to the size of the IP (20 bytes) and ICMP (8 bytes) headers. Your MTU value will never actually be lower than 576; 576 is the minimum MTU any TCP/IP router must support. If the MTU value the PING command returns is less than 576, your MTU was previously set or your ISP only supports the minimum MTU. Windows 98 sets the MTU to 576 for connections slower than 128kbps (1500 for connections faster than 128kbps), as determined by the SLOWNET registry setting (see below). Unless you have a poor or unstable connection, an MTU of 576 does not allow for the most efficient use of available bandwidth if your ISP supports a larger size and could cause up to 2% of packet loss you may experience.
Therefore, if you change ISPs and/or your MTU has been previously set or Windows 98 automatically set your MTU (see the Lean 'Network' Settings section), you will need to set the MTU (see Step 3, below) to an extremely large value (for example 2000) and reboot in order to receive an accurate MTU response from the PING command before you continue further. If the PING command continues to respond with a value lower than 576 after resetting the MTU, your ISP only supports the minimum MTU setting of 576, set your MTU to 576 and proceed on to Step 4.
- Set the MTU size to match your ISP's MTU using the following method:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\000x\IPMTU]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'System'.
- Click on the plus sign next to 'CurrentControlSet'.
- Click on the plus sign next to 'Services'.
- Click on the plus sign next to 'Class'.
- Click on the plus sign next to 'Net'.
- Click on the plus sign next to '000x'. There will probably be more than one '000x' entry here, look for the '000x' entry that corresponds to your active 'Dial-Up Adapter' and replace the 'x' with your correct number.
- Click on the plus sign next to 'Ndi'.
- Click on the plus sign next to 'Params'.
- Click on the plus sign next to 'IPMTU'.
- Click on 'enum'.
- In the right-hand portion of the REGEDIT window, right-click 'Automatic' and select 'Delete'.
- From the Edit Menu, select 'New', then select 'String value' and name it your MTU value (for example, mine is named 1472).
- Double click on the MTU value you just added and type "Automatic" in the 'Value data' field.
- Select 'Exit' from the Registry Menu.
(If you are having trouble determining which 'Dial-Up Adapter' entry is active, use REGEDIT to look at the '000x' entries in the [HKEY_LOCAL_MACHINE\Enum\Root\Net\] section of the registry. The '000x' entry whose 'DeviceDesc' (device description) key reads 'Dial-Up Adapter' will have a 'Driver' key that points to the active 'Dial-Up Adapter' entry for Step 8 in the instructions above.)
- Set the RWIN size between 3000 and 5000 (average download speed (in kbps) for modem users) as a multiple of your MTU size minus 40. For example, an RWIN size of 4380 is an MTU size of 1500 minus 40 multiplied by 3. Note how the RWIN value falls between 3000 (28.8/33.6k) and 5000kbps (56k). If you are on a faster (or slower) connection, use your own average download speed (in kbps) as the lower and upper range when setting your RWIN. Algebraically, the equation for the sample RWIN value was x(MTU-40)=RWIN or 3(1500-40)=4380. Use the following instructions to set your RWIN.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\DefaultRcvWindow]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'System'.
- Click on the plus sign next to 'CurrentControlSet'.
- Click on the plus sign next to 'Services'.
- Click on the plus sign next to 'VxD'.
- Click on 'MSTCP'.
- In the right-hand portion of the REGEDIT window, look for a registry key name 'DefaultRcvWindow', if you find it, skip Step 9.
- From the Edit Menu, select 'New', then select 'String value' and name it 'DefaultRcvWindow'. (Be sure to capitalize the string name exactly as shown.)
- Double click on the RWIN registry key and type the value you determined from the RWIN equation in the above instructions into the 'Value data' field.
- Select 'Exit' from the Registry Menu.
(Please note, RWIN directly affects throughput, do not set it too low (below 3000 for modem users) or Windows will be unable to properly buffer TCP/IP packets. Conversely, do not set it too high (above 18000 for modem users) or Windows may be unable to properly request retransmissions to correct TCP/IP packet errors, resulting in uncorrected errors during large data transfers.)
- Leave the TTL at the default value of 128. If you had previously changed your TTL, the following instructions tell you how to reset it.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\DefaultTTL]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'System'.
- Click on the plus sign next to 'CurrentControlSet'.
- Click on the plus sign next to 'Services'.
- Click on the plus sign next to 'VxD'.
- Click on 'MSTCP'.
- In the right-hand portion of the REGEDIT window, look for a registry key name 'DefaultTTL', if you find it, skip Step 9.
- From the Edit Menu, select 'New', then select 'String value' and name it 'DefaultTTL'. (Be sure to capitalize the string name exactly as shown.)
- Double click on the TTL registry key you just added and type "128" in the 'Value data' field.
- Select 'Exit' from the Registry Menu.
- Select Ok to save the settings to the registry.
- Select Exit.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
Notes:
Some people recommend setting the Maximum Segment Size (MSS) value; however, Windows 95/98 does not support setting the MSS value, so setting it is an exercise in futility. (Only Windows NT supports setting the MSS value.)
Some people recommend setting the NDI Cache value; however, this is an IPX/SPX setting that does not help TCP/IP Internet connections. They are completely different protocols. Besides, if you uninstalled the IPX/SPX protocol, this setting is even more useless to you, don't waste your time.
Some people recommend enabling Black Hole detection (PMTUBlackHoleDetect); however, in almost all cases, setting this parameter will degrade performance. Black Holes are rare, unless your ISP is incompetent or uses really old equipment, you would not benefit from enabling this setting.
Some people recommend increasing the MaxSockets and MaxUDPDatagrams registry settings; however, Windows 98 ignores these settings. (Only Windows 95 without Winsock 2 uses these settings.)
Some people recommend setting the SLOWNET registry key to 0; however, if you followed the recommendations in this section to set your MTU and RWIN, you have already bypassed the SLOWNET setting.
Update the Modem Drivers
Your modem will work best after you make sure the settings Windows presents in the modem control panel and property sheets actually apply to your particular modem. The best way to do this is to ensure you have the latest information (INF) file installed for your particular modem.
- Download the latest INF file(s) for your modem from its manufacturer and extract to a temporary directory.
- Select the 'System' control panel.
- Select the 'Device Manager' tab.
- Select the 'Modem' option.
- Select the modem you wish to update and click on the 'Properties' option.
- Under the 'Driver' tab, select the 'Update Driver' option. This will activate the 'Update Device Driver Wizard'. Let it search for the updated driver, if it finds it by itself, go to Step 9.
- Select the 'Other Locations' option.
- Select 'Browse' to locate the temporary directory where you extracted the manufacturer's files then click 'Ok'.
- Select 'Finish' to allow the Update Device Driver Wizard to update your modem driver with the newest version, if it isn't already installed.
- Select 'Close' to exit out of the modem properties.
- Select 'Close' to exit out of Device Manager.
- 'Restart the computer' from the 'Shut Down' option on the 'Start' menu.
Additionally, if your modem has a programmable firmware feature (a.k.a. FlashROM-capable), downloading and installing the latest firmware (follow the manufacturer's instructions) for your modem will provide a strong foundation for efficient communication. Remember, modem communication is based on implementation recommendations from a consortium of manufacturers and inter-operability issues crop up from time to time and the latest firmware usually resolves most or all of those issues.
Modem Init String Recommendations
I only use, own and recommend external USRobotics Courier v.Everything modems. If you are lucky enough to own one of these fine pieces of hardware, my Init string is &F1&A3&K3S15=2S11=38S27=16S69=12. If you don't use the same modem I do, all I can provide is the following guidelines to use when setting your own modem Init up:
- Enable hardware handshaking (a.k.a. RTS/CTS)
- Disable retrains (Do not disable upshifts and downshifts!)
- Disable MNP 5 (Both MNP 5 and V.42bis compress data; however, V.42bis is 30% faster and does not add latency to the data stream, while MNP 5--an older compression scheme--often does add latency to the data stream.)
- Disable MNP 2-4 (This protocol suite is no longer necessary and has been replaced with superior error detection and correction methods for a few years now. Disabling it can increase your modem's overall efficiency.)
The items listed above are specifically addressed by the &F1, S15=2, &K3 and S27=16 commands in my Init string, respectively. Put your Init string in the 'Extra Settings' field as mentioned in the Modem Control and Setup section.
Updating Windows 98 and Windows 98 Second Edition
Increase connection performance and overall system stability by installing the latest system updates for your particular version of Windows, click here for the updates page.
Lean IE5 & OL2000 Registry Settings
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\BrowserWebCheck]
- Select RUN from the Start menu, type REGEDIT and select Ok.
- In the left-hand portion of the REGEDIT window, click on the plus sign next to 'HKEY_LOCAL_MACHINE'.
- Click on the plus sign next to 'SOFTWARE'.
- Click on the plus sign next to 'Microsoft'.
- Click on the plus sign next to 'Windows'.
- Click on the plus sign next to 'CurrentVersion'.
- Click on 'Run'.
- In the right-hand portion of the REGEDIT window, right-click 'BrowserWebCheck' and select 'Delete'.
- Select 'Exit' from the File Menu.
(If you are absolutely certain your computer does not require any other programs listed at the 'Run', 'RunOnce' and 'RunServices' Registry locations, you can delete them as well. A newly installed Windows 98 or SE system contains only 'TaskMon' and 'SysTray' at the 'Run' Registry entry; nothing in any of the 'RunOnce' and 'RunServices' Registry entries.)
Disclaimer: I am not responsible for any problems you may encounter when following these recommendations. I use all of the above recommendations with outstanding success. This page assumes your system is completely free of existing issues and that none of the above settings have been previously altered. Finally, packet loss is packet loss...you can have the best ping/connection in the world and still experience packet loss, contact your ISP.
© Copyright 1997, 1998, 1999 & 2000 - Mr. Echevarria
Please respect my copyright.
