Skip site navigation (1)Skip section navigation (2)
Date:      Mon,  1 Feb 1999 10:56:42 UTC-0800
From:      Mark McCutcheon <>
To:        freebsd-net@FreeBSD.ORG
Subject:   Re: drop packets?
Message-ID:  <"14826*"@MHS>
In-Reply-To: <>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
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:

>> 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....


To Unsubscribe: send mail to
with "unsubscribe freebsd-net" in the body of the message

Want to link to this message? Use this URL: <"14826*mjmccut>