From owner-freebsd-net Mon Feb 1 10:56:48 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id KAA28380 for freebsd-net-outgoing; Mon, 1 Feb 1999 10:56:48 -0800 (PST) (envelope-from owner-freebsd-net@FreeBSD.ORG) Received: from pedigree.cs.ubc.ca (pedigree.cs.ubc.ca [142.103.6.50]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id KAA28372 for ; Mon, 1 Feb 1999 10:56:45 -0800 (PST) (envelope-from mjmccut@cs.ubc.ca) Received: (from ean@localhost) by pedigree.cs.ubc.ca (8.8.8/8.6.9) id KAA21799; Mon, 1 Feb 1999 10:56:44 -0800 (PST) X400-Received: by /PRMD=ca/ADMD=telecom.canada/C=ca/; Relayed; Mon, 1 Feb 1999 10:56:42 UTC-0800 Date: Mon, 1 Feb 1999 10:56:42 UTC-0800 X400-Originator: mjmccut@cs.ubc.ca X400-Recipients: non-disclosure:; X400-Content-Type: P2-1984 (2) X400-MTS-Identifier: [/PRMD=ca/ADMD=telecom.canada/C=ca/;990201105642] Content-Identifier: 14826 From: Mark McCutcheon To: freebsd-net@FreeBSD.ORG Cc: yu.shi@research.nokia.com In-Reply-To: <199902010642.WAA25830@bubba.whistle.com> Message-ID: <"14826*mjmccut@cs.ubc.ca"@MHS> Subject: Re: drop packets? MIME-Version: 1.0 (Generated by Ean X.400 to MIME gateway) Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Archie Cobbs writes: > Shi Yu writes: >> When the IF output queue is full, the if_output simply drop >> the packet!?? > > What else are you going to do with it? :-) Well, that's simple tail-drop queuing in a FIFO buffer. It's certainly the BSD kernel default, but there are arguably more efficient queuing disciplines for some environments, such as RED (random early detection) for TCP. Kenjiro Cho (Sony Computer Science Lab) has developed an ALTQ (Alternate Queuing) package for FreeBSD which implements RED, CQB, WFQ, etc., as well as a template for developing your own queuing schemes. See: http://www.csl.sony.co.jp/person/kjc/programs.html >> If the IF output queue is often full, why ip stack does not >> get feedback from the driver and buffer the packets so that >> less packets are dropped? > > I think ip_output() will return ENOBUFS, if anybody's > listening. > > Anyway, the flow control problem was explicitly left *out* of > the specification of IP packet delivery. IP packet delivery > is only "best effort".. and that's exactly what you get. I think that the intserv and diffserv people would be disappointed to learn that ;-> > Higher layer protocols are supposed to deal with flow control > themselves. For example, TCP. But many believe that routers need to help with this - hence RED, RED with ECN, etc. Also, FRED (fair random early drop) and similar schemes have been designed to control queue utilization even by greedy and ill-behaved UDP streams. So it's not just tail-drop FIFO anymore - heck, even Cisco's IOS implements a number of these alternatives.... Mark To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message