Hagai's Boost is a utility that allows you to modify the various configuration parameters used by the Microsoft TCP/IP stack under Windows 95/98 . By adjusting the settings for the dial-up networking adapters installed on the system, you can optimize your connection to the Internet and improve the performance of your Internet connection.
How Does It Work?
For some unknown reason, Windows 95 uses only default settings of 1500 for MaxMTU, 8192 for RWIN, 32 for TTL, which are generally inefficient for dialup Internet connections. Hagai's Boost is designed to automatically change certain Windows default settings to eliminate fragmentation of data packets promoting faster Internet data transfer rates. This translates into faster browsing, quicker downloads, and improved Internet performance.
All data on the Internet is broken into what are called packets (also called datagrams). Each TCP packet consists of a 40 byte header, which includes routing information, and the actual data that is being sent or received (called the data segment). Unless the sender and receiver of that data are on the same network, the packet must be routed through one or more intermediary systems which are responsible for forwarding it on to it's ultimate destination. And because of the nature of the Internet, there is no guarantee that two packets, both having the same sender and destination, will follow the same route.
Maximum Transmission Unit (MTU)
Each of these intermediary hosts are configured to handle what is called a Maximum Transmission Unit (MTU), which is the number of bytes that it will send as one packet. When a host receives a packet that is larger than it's MTU, it will break the large packet into multiple smaller ones, each with their own header and data (which is then reassembled by the receiver). Every time a connection is opened between two computers on the Internet, they must agree on an MTU. This is done by comparing both of their MTUs and selecting the smaller of the two. If the MTU is set too large for routers that are between the computers, these routers then fragment this information into a packet size that the router can handle. This fragmentation can double the amount of time it takes to send a single packet. For example, if your computer has an MTU of 1500 and sends a 1500 packet to a router with an MTU of 576, the packet will exceed the router's MTU, so it is split into three separate packets and forwarded on. Since 1500 is not evenly divisible by 576, the third packet only contains the last fragment of the original packet. And since each packet must be acknowledged by the receiver, this kind of fragmentation can have a noticeably negative effect on your connection speed.
Maximum Segment Size and Receive Window
When a TCP connection is being established, the sender and requester negotiate the maximum data segment size that will be accepted by both hosts. This value, called the Maximum Segment Size (MSS) is different from the MTU because it only addresses the maximum size of the data portion of the packet, and does not include the header. If each data segment, along with the header, does not exceed the smallest MTU as it is being routed to it's destination, then it will not be fragmented. Therefore, because the size of a TCP header is 40 bytes, the MSS is calculated as MTU minus 40. In turn, the MSS value is useful in determining the size of the receive window (RWIN), which is the maximum number of bytes of data that can be buffered, pending the receipt of an acknowledgment packet back from the sender. Typically, the RWIN value should be a multiple of 2-10 times the MSS value. For example, a good RWIN value for a system with an MTU of 576 (and an MSS of 536) would be 2144 (536 * 4).
Time To Live
Last, but not least, each IP packet contains an 8-bit header field that specifies the Time To Live (TTL) for that packet. Implemented as a safeguard against packets looping between routers, it specifies the maximum number of routers that the packet may be forwarded through to it's destination. Each time the packet is forwarded the TTL value is decremented by one, and if the value drops to zero, the packet is rejected. If this happens, ideally an ICMP (Internet Control Message Protocol) packet is be sent to the receiver, indicating that the TTL expired and it's value would be dynamically adjusted for retransmission. In reality, however, this is rarely implemented and most systems are configured with a fixed value of around 30.
Improving Performance
There are three specific problems with the way Windows defaults to certain TCP/IP settings. By changing these defaults, you can improve performance, in some cases dramatically, of your Internet connection. For example:
Under Windows 95, the default MTU value is 1500, which is the optimal for Ethernet networks, but not dial-up modems. That's because many hosts on the Internet are configured with an MTU of 576, which causes size 1500 packets to be fragmented. This is not typically an issue with Windows NT since it uses what is called PMTU discovery, a process where it automatically determines the best segment size of each connection that is established. Although you can explicitly set the MTU value for Windows NT, in some cases doing so can actually hurt performance instead of improving it.
The default Windows RWIN value is 8192, which is not evenly divisible by the default MSS value of 1460 (remember, the MSS value is the MTU minus 40). This means that as the receive buffer fills, it cannot store a complete packet, forcing that packet to be resent (sometimes again and again). Like MTU, this value is dynamic under Windows NT.
And finally, the Windows default TTL value of 32 is appropriate for local networks, but it is insufficient for the Internet. The Time to Live or TTL is a field in the IP header which indicates how long a packet should be allowed to survive before it is discarded. TTL essentially determines the maximum number of hops permitted. The Windows default TLL value is 32, which specifies that the maximum number of routers that a packet may be forwarded through on to its destination be 32 or less. However, with the rapid expansion of the Internet and the increasing number of sites that a packet must be routed through, this is worth changing to a larger setting of 64 or higher.
What's the best value to set these parameters to? Each system is different, so there are no hard and fast rules. However, good default values that all systems should be able to use are an MTU of 576 (which means an MSS of 536), an RWIN of 2144 (MSS x 4) or 4288 (MSS x 8) and a TTL of 64. You may want to experiment with these values to see which gives you optimal performance, based on your service provider, modem speed, etc.
Optimal Configuration
Using the Hagai's Boost utility, what is the optimal configuration for dial-up networking adapters? For Windows 95/98, we recommend the following settings:
MTU: 576
RWIN: Multiple x4
TTL: 64 recomended
PMTU:Auto Detection: ON (checked)
Black Hole Detection: OFF (unchecked)
Remember, each system is different, so there are no hard and fast rules. However, good default values that all systems should be able to use are an MTU of 576 (which means an MSS of 536), an RWIN of 2144 (MSS x 4) or 4288 (MSS x 8) and a TTL of 64. You may want to experiment with these values to see which gives you optimal performance, based on your service provider, modem speed, etc.
System Requirements
Pentium processor
16 MB of RAM
3 MB free hard disk space
Microsoft Windows 95 or 98
256 colors monitor
Modem
RunTime DLLs
RunTime DLLs
This program is written in Visual Basic 6.0 and required RunTime DLLs (MSVBVM60.DLL & OLEAUT32.DLL) you can dawnload them from: http://hagai.8m.com
Maximum Transmission Unit (MTU)
All data on the Internet is broken into what are called packets (also called datagrams). Each TCP packet consists of a 40 byte header, which includes routing information, and the actual data that is being sent or received (called the data segment). Unless the sender and receiver of that data are on the same network, the packet must be routed through one or more intermediary systems which are responsible for forwarding it on to it's ultimate destination. And because of the nature of the Internet, there is no guarantee that two packets, both having the same sender and destination, will follow the same route.
Each of these intermediary hosts are configured to handle what is called a Maximum Transmission Unit (MTU), which is the number of bytes that it will send as one packet. When a host receives a packet that is larger than it's MTU, it will break the large packet into multiple smaller ones, each with their own header and data (which is then reassembled by the receiver). Every time a connection is opened between two computers on the Internet, they must agree on an MTU. This is done by comparing both of their MTUs and selecting the smaller of the two. If the MTU is set too large for routers that are between the computers, these routers then fragment this information into a packet size that the router can handle. This fragmentation can double the amount of time it takes to send a single packet. For example, if your computer has an MTU of 1500 and sends a 1500 packet to a router with an MTU of 576, the packet will exceed the router's MTU, so it is split into three separate packets and forwarded on. Since 1500 is not evenly divisible by 576, the third packet only contains the last fragment of the original packet. And since each packet must be acknowledged by the receiver, this kind of fragmentation can have a noticeably negative effect on your connection speed.
The Maximum Transmission Unit value is the maximum number of bytes that will be sent in a single packet. Under Windows 95, the default value is 1500, which is not recommended for dial-up connections. Instead, it is recommended that this value be set to 576. The following options may be selected:
Dial-up (576)
This sets the MTU value to 576, the optimal value of dial-up Internet connections.
Local Area Network (1500)
This sets the MTU value to 1500, which is the default for Windows 95. This value is optimal for Ethernet networks, but is not recommended for Dial-Up Networking connections since it can result in packet fragmentation.
Custom
This allows you to specify a custom MTU value. This is not recommended unless you fully understand the implications of using a non-standard value.
Receive Window (RWIN)
When a TCP connection is being established, the sender and requester negotiate the maximum data segment size that will be accepted by both hosts. This value, called the Maximum Segment Size (MSS) is different from the MTU because it only addresses the maximum size of the data portion of the packet, and does not include the header. If each data segment, along with the header, does not exceed the smallest MTU as it is being routed to it's destination, then it will not be fragmented. Therefore, because the size of a TCP header is 40 bytes, the MSS is calculated as MTU minus 40. In turn, the MSS value is useful in determining the size of the receive window (RWIN), which is the maximum number of bytes of data that can be buffered, pending the receipt of an acknowledgment packet back from the sender. Typically, the RWIN value should be a multiple of 2-10 times the MSS value. For example, a good RWIN value for a system with an MTU of 576 (and an MSS of 536) would be 2144 (536 * 4).
The Receive Window (RWIN) value is the maximum number of bytes of data that can be buffered, pending the receipt of an acknowledgment packet back from the sender. Typically, the RWIN value should be a multiple of 2-10 times the maximum segment size (MTU-40).
Default (8192)
This sets the RWIN value to the Windows default. Under Windows 95, this value is 8192, which should not be used (because it is not evenly divisible by the default maximum segment size, it can force the packet to be resent repeatedly when the buffer is full). You can improve performance by setting this to a lower value such as 4 times your MSS (MSS = MTU - 40).
Multiple
This allows you to set the RWIN value to a specific multiple, with the actual value calculated using the MTU value. It is recommended that you set the multiple to 4 or 8.
Custom
This allows you to specify a custom RWIN value. This is not recommended unless you fully understand the implications of using a non-standard value.
Time To Live (TTL)
Each IP packet contains an 8-bit header field that specifies the Time To Live (TTL) for that packet. Implemented as a safeguard against packets looping between routers, it specifies the maximum number of routers that the packet may be forwarded through to it's destination. Each time the packet is forwarded the TTL value is decremented by one, and if the value drops to zero, the packet is rejected. If this happens, ideally an ICMP (Internet Control Message Protocol) packet is be sent to the receiver, indicating that the TTL expired and it's value would be dynamically adjusted for retransmission. In reality, however, this is rarely implemented and most systems are configured with a fixed value of around 30.
TTL is a field in the IP header which indicates how long a packet should be allowed to survive before it is discarded. This value specifies the maximum number of routers that a packet may be forwarded through on to its destination. TTL essentially determines the maximum number of hops permitted. Windows default is 32, but with the Internet growing larger all the time, it is worth changing it to the larger setting of 64.
Default (32)
This sets the TTL value to the system default, which is 32. Although this value is appropriate for local networks, it is insufficient for the Internet. An optimal value is 64, and recommended for both Windows 95 and Windows NT.
Recommended (64)
This sets the TTL value to the optimal value for the Internet, which is 64.
Custom
This allows you to specify a custom TTL value. The minimum value that you can specify is 32, the maximum value is 255.
Path Maximum Transmission Unit (PMTU)
Auto Detection
Auto Detection is Enabled by Default. This option enables the system to automatically determine the Maximum Transmission Unit (MTU) value and detect routers which do not return appropriate ICMP messages under some conditions. Enabling this setting causes TCP to attempt to discover the Maximum Transmission Unit (MTU or largest packet size) over the path to a remote host. By discovering the Path MTU and limiting TCP segments to this size, TCP is supposed to be able to eliminate fragmentation at routers along the path that connect networks with different MTUs. This requires implementation of the corresponding server side algorithm, however, and presupposes all of the servers on the entire Internet only running MSFT server software with server-side optimization features accessible from MSFT web-browser client software. However, it is not recommended to disable this setting as it would then cause an MTU of 576 bytes to be used for all connections that are not to machines on the local subnet. Disabling this setting can cause severe performance degradation because fragmentation may not be compensated for.
Black Hole Detection
Black Hole Detection is Disabled by default. Enabling this option forces the system to try to detect black hole routers. Black hole routers are routers that do not send back ICMP (Internet Control Message Protocol) fragmentation-needed messages while automatically determining the optimal MTU value. This increases the maximum number of retransmissions performed for a given segment. Setting this parameter when it is not needed can cause performance degradation. So it is not recommended that you enable this option unless you understand the implications of doing so.