
There are a few network parameters that can be tuned to better match
the kernel to your system hardware and intended usage. The defaults
are usually a good choice for 99% of the people 99% of the time, but
you should be aware they do exist and can be changed.

The current list of parameters can be found in the files:

	linux/net/TUNABLE
	Documentation/networking/ip-sysctl.txt

Some of these are accessible via the sysctl interface, and many more are
scheduled to be added in this way. For example, some parameters related 
to Address Resolution Protocol (ARP) are very easily viewed and altered.

	# cat /proc/sys/net/ipv4/arp_timeout
	6000
	# echo 7000 > /proc/sys/net/ipv4/arp_timeout
	# cat /proc/sys/net/ipv4/arp_timeout
	7000

Others are already accessible via the related user space programs.
For example, MAX_WINDOW has a default of 32 k which is a good choice for
modern hardware, but if you have a slow (8 bit) Ethernet card and/or a slow
machine, then this will be far too big for the card to keep up with fast 
machines transmitting on the same net, resulting in overruns and receive errors.
A value of about 4 k would be more appropriate, which can be set via:

	# route add -net 192.168.3.0 window 4096

The remainder of these can only be presently changed by altering a #define
in the related header file. This means an edit and recompile cycle.

						Paul Gortmaker 06/96
