Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!apple!agate!bionet!ames!sgi!vjs@rhyolite.wpd.sgi.com From: vjs@rhyolite.wpd.sgi.com (Vernon Schryver) Newsgroups: comp.protocols.tcp-ip Subject: Re: SLIP documents Summary: I'm wrong Message-ID: <84878@sgi.sgi.com> Date: 11 Feb 91 19:24:19 GMT References: <4320@ns-mx.uiowa.edu> <1991Feb8.203703.25654@zoo.toronto.edu> <1991Feb9.051623.29415@Think.COM> Sender: guest@sgi.sgi.com Organization: Silicon Graphics, Inc., Mountain View, CA Lines: 64 In article <1991Feb9.051623.29415@Think.COM>, barmar@think.com (Barry Margolin) writes: > In article <84702@sgi.sgi.com> vjs@rhyolite.wpd.sgi.com (Vernon Schryver) writes: > >> (For those who don't get the point of the ":-) :-)", NFS uses UDP without > >> checksums. And people wonder why NFS is so unreliable...) > >Everyone! Please stop repeating this complaint. > > I agree that the complaint is wrong, but not for the same reason you do. > It isn't NFS that uses unchecksummed UDP, it's SunOS (or maybe BSD Unix) in > general (in its default configuration). In fact, SunOS doesn't provide a > way for a UDP-based application protocol to control whether it uses > checksums -- it's a single, system-wide parameter. Even worse, this one > parameter controls both whether checksums are generated during sending and > whether they are checked when receiving. Isn't this the right way to do it? With a "single, system-wide parameter" controlling whether UDP is checksummed or not? We argued among ourselves years ago whether the NFS switch should be the same as the global UDP switch. Ultimately, we decided that those who want no UDP checksums on NFS would not want them on anything else, including RPC, and conversely. Some might like a per-link switch, turning it on for SLIP lines and off for Ethernet and FDDI. (Having seen many checksums errors in FDDI frames with good CRC and E-bit, I'm not one.) Unfortunately, that idea does not work with routers; you'd need a UDP-cksum-is-a-good-idea-discovery protocol. The source from BSD has UDP checksums turned on by default. I haven't looked at the Reno NFS, but would be surprised if it's off there. > >Anyone with an NFS implementation that does not use UDP checksums should > >either fix or enjoy it. The NFS on common and current workstations does > >use UDP checksums by default. > > I think Suns would count as "common and current workstations", and by > default SunOS doesn't enable UDP checksums. In fact, until SunOS 4.1.1, > enabling UDP checksums required patching the kernel; in the latest release > they've finally moved it into a configuration file used during the kernel > build process. I finally used the source, and found I'm wrong about NFS3.2, which still set the checksum=0. In the NFS4.0 reference code, they follow the 4.3BSD convention of obeying "udpcksum". Poking around with `adb /vmunix` on a vanilla Sun that says "SunOS Release 4.1-GFX-Rev.1 (GFXRev1)" finds the horrifying fact that udp_cksum=0. Thus, Sun appears to be disabling all UDP checksums, not just NFS. I hope someone from Sun will dispute this, since I'd hate to have to tell everyone to sell their solar hardware and buy flowers.*** > > Ours do. I'm told that Sun's does as > >of the NFS 3.2 source release. > > Since the socket library doesn't provide a way to enable or disable UDP > checksums (I could be wrong -- I simply searched for "checksum" in the > setsockopt man page), I don't see how the NFS source release can do this. The NFS 3.2 source I meant was the kernel code received by NFS vendors who pay maintenance or royalties to Sun. It is in lib/libc/rpc/kdup_fastsend.c Vernon Schryver, vjs@sgi.com *** Silicon Graphics has called our products "IRIS" for about as long as other machines have had solar labels. That I feel compelled to append this says a lot about the validity of my claim about "common and current workstations." Oh, well.