Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!gatech!hao!boulder!forys From: forys@sigi.Colorado.EDU (Jeff Forys) Newsgroups: comp.unix.wizards Subject: Re: 4.3 BSD networking Message-ID: <1652@sigi.Colorado.EDU> Date: Mon, 27-Jul-87 14:26:54 EDT Article-I.D.: sigi.1652 Posted: Mon Jul 27 14:26:54 1987 Date-Received: Tue, 28-Jul-87 05:27:02 EDT References: <8479@brl-adm.ARPA> Reply-To: forys@boulder.Colorado.EDU (Jeff Forys) Distribution: world Organization: University of Colorado, Boulder Lines: 54 Summary: You may have gone too far... In article <8479@brl-adm.ARPA> cpw%sneezy@LANL.GOV (C. Philip Wood) writes: > if you throw in rude hosts with broken network implementions, sending > junk, the result used to be: > > panic: out of mbufs: map full I had the same problem here. Our 4.3BSD 11/785 would run out of mbufs and crash at *least* once a week. We've now gone over 20 days without a crash so I'm betting the problem is no more... > I am hoping for some discussion, pointers to other discussions, fixes, > etc., on buffering, congestion control, garbage collection [...] I spoke with Mike Karels about the problem. He directed me to a couple fixes Dave Borman (dab@umn-rei.uc.arpa) added to UNICOS (Cray UNIX). He had advertised the fixes on the tcp-ip mailing list and they can be easily ported to a BSD system. > the exhaustion of the page map happened after all mbufs had been put > on one queue or another. Right. I too, had assumed a leak when this first started happening (when we put up 4.3BSD in January) but soon discovered this was not the case. > [...] Each mbuf had one character in it. With a receive window of 4K > you can run out of mbufs pretty easy. Uh huh, by any chance, are these running Wollongong TCP/IP? After closer examination, I discovered that's where our `problem' packets were comming from. Anyways, what you want to do here is compact the TCP reassembly queues (i.e. take all the 1 byte packets and merge them together). > [...] sending lots of udp packets of trash over an ethernet and > swamping the udp queue. While I have not experienced crashing due to being "swamped" (in fact, our deuna would drop the packets before UDP ever sees them), the other fix from Dave asks the protocols to free up mbufs when they run out. This also takes care of the case where some brain-damaged machine sends you every *other* packet. Freeing things in tcp-reassembly queues doesnt make me "happy", but since no acknowledgments for the stuff have gone out, it's "safe". Besides, what else can you do? It's an unpleasant situation... This second fix has explicitly *not* been tested, but it looks like it does the "right thing" (I should throw a log() message in there to see if it's been used yet). At any rate, besides the couple fixes to get Dave's mods working under BSD, I also ifdef'd them so either or both could be `activated' in the kernel config file. I added his name to the mods so I suppose I could be persuaded to pass them out if you dont wanna fix them for BSD yourself. --- Jeff Forys @ UC/Boulder Engineering Research Comp Cntr (303-492-4991) forys@Boulder.Colorado.EDU -or- ..!{hao|nbires}!boulder!forys