NEW FEATURES: - Vastly improved portability - works on SGI, BSDI, and SVR4 - Improved range of known variables LOCATION (available by anonymous FTP) ucsd.edu:pub/csl/netconfig/netconfig2.2.tar.Z WHAT IS NETCONFIG? Netconfig is a program intended to make management of network configuration options such as TCP maximum window size a part of routine system administration. Berkeley Unix based networking software is configurable to a surprising degree by means of assorted kernel variables such as 'tcp_recvspace' and 'ipforwarding'. One can raise TCP max window size to raise performance over FDDI or long connections, or one can lower it to improve SLIP performance. When run with no arguments, it prints out a list of all the network configuration variables that both the program knows about and are present in the currently running kernel so that a system administrator can easily see what variables are available to be changed. For example, it prints out the following on my Alpha running a slightly modified version of DEC OSF/1 1.3: Sockets: Max socket buffer size (sb_max): 253952 Large mbuf use threshold (mbufthreshold): 1024 Max listen queue len (somaxconn): 8 IP: Routing (ipforwarding): off Ipgateway (ipgateway): off ICMP: Redirects (ipsendredirects): on TCP: Output Buffer Size (tcp_sendspace): 253952 Input Buffer Size (tcp_recvspace): 253952 Retransmit Threshold (tcprexmtthresh): 3 Default Max Seg Size (tcp_mssdflt): 1460 Keepalive Idle Time (tcp_keepidle): 14400 Keepalive Interval (tcp_keepintvl): 150 Default TTL (tcp_ttl): 64 Don't scale windows (tcp_dont_winscale): off Local Checksum (tcplclsum): off Subnets Are Local (subnetsarelocal): on UDP: Checksum (udpcksum): on Max Send Msg Size (udp_sendspace): 253952 Max Rcv Buffer (udp_recvspace): 253952 Default TTL (udp_ttl): 64 Local Checksum (udplclsum): off TCP/IP Misc.: Internet checksum routine active (nocksum): off Netconfig allows for easy change of the variables involved. I set a number of the values above using the following commands: $ netconfig tcp_sendspace 253952 tcp_recvspace 253952 udp_sendspace 65535 $ netconfig udp_recvspace 65535 udp_cksum on The manual page includes a short description of the impact of some of the variables and suggestions on configuration values. PORTING Netconfig has been explicitly tested on the following machine/OS pairs: Architecture OS ----------------------------------------- DECstation Ultrix Vax Ultrix Sun 3 SunOS Sun 4 SunOS Alpha OSF/1 SGI Irix 5.1 386 BSDI 386 SVR4 It should work on HPs and RS6000s as well. I haven't had an opportunity to try it, though. I would love to hear from people trying it out. Netconfig is surprisingly portable, and is getting more so. The body of the program compiled and ran without complaint on every machine I tried it on except for Linux and Solaris (even then, it ran but didn't find anything). Unlike the previous version, it does *not* need a valid list of variables to work on a given machine; it always tries all variables it knows about. So far, the only Unix-like OSes that do have networking and I've tried and to which porting turned out to be difficult (read: I gave up) is Linux, because its networking software is not based on BSD in the same sense as most Unixes' networking software. One aspect of porting that would be quite useful is keeping track of platform-dependent network variables. If you know about a network variable that netconfig doesn't, please tell me about it. I am only interested in single integer type variables at this stage (I am well aware that ability to manage, say, interface MTUs would have its uses, but netconfig just isn't that smart). HISTORY 2.2 -- Second major release. Tue Sep 20 16:46:15 PDT 1994 1.2 -- First major release. Wed Sept 2 22:58:20 PDT 1993 I originally had the idea for this program because two problems were pestering me. One problem was that I kept trying out new implementation techniques for TCP/IP. Of course, I needed to be able to easily flip between running with and without each technique so I could see if it was working out - and in some cases, because the technique might not work well enough yet to make it through booting without a crash. The other problem was that a major project in which which I'm involved (Sequoia 2000) was to get a T3 network, and our machines are unable to take advantage of those kinds of bandwidths without considerable tuning. But most people on the project would not want to run my (experimental) kernel. Thus netconfig. It turns out that netconfig solves a third problem. It's excruciatingly difficult to keep track of all the *&%$ nitty variables out there; the vendors themselves probably have difficulty, and it's unreasonable to expect system administrators to find this stuff out. It's impossible in a multivendor environment without a number ofsource code trees. Fortunately, the University of California is one of the few institutions that comes close. Why always release .2 releases? Well, this reflects internal releases. .0 always barely works (of course). I always intend to release .1, but it proves not to be there yet under wider testing, and .2 is finally there. AUTHOR Jon Kay (jkay@ucsd.edu) Computer Systems Lab University of California San Diego, CA 92093-0114 ACKNOWLEDGEMENTS I gratefully acknowledge help from Kimberly Claffy, of the University of California, San Diego Computer Systems Lab (kc@sdsc.edu) with the documentation. I'd also like to thank the numerous people who contributed ports, bugfixes, pointers to bugs, and access to machines. COPYRIGHT Copyright (c) 1993,1994 Regents of the University of California. All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without written agreement is hereby granted, provided that the above copyright notice and the following paragraph appears in all copies of this software. THIS SOFTWARE IS PROVIDED BY THE REGENTS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Version 2.2. Tue Sep 20 16:46:15 PDT 1994