Pipe queues

Chuck Swiger cswiger at mac.com
Tue Dec 11 11:11:52 PST 2007


On Dec 10, 2007, at 11:35 PM, rihad wrote:
>> Pipes and queues are two different things; a pipe simulates a  
>> network link, and a queue is used to hold packets which are  
>> backlogged because they are arriving faster than the outbound link  
>> (ie, a pipe) can transmit them.
> So you mean queues are only used on the sending side? (the box is  
> acting as a router) and that their purpose is to diminish packet  
> loss rate due to network congestion? Now I get it, thanks.

Queues are used to buffer packets before sending.  For a router, this  
affects traffic in both directions, but it's normally the case that  
that Internet<->router link is slower than the router<->LAN link.

>>> What if I set it to 10000 slots, why should it wait to fill the  
>>> queue before starting to send stuff out the network interface?
>> Well, it *doesn't* wait for the queue to be filled before starting  
>> to send stuff out the network.
> This ipfw manpage section was the reason I asked (sorry for the  
> formatting). What's with the "queuing delay" part? I'm totally  
> confused.
>
>     queue {slots | sizeKbytes}
>           Queue size, in slots or KBytes.  Default value is 50  
> slots, which
>           is the typical queue size for Ethernet devices.  Note that  
> for slow
>           speed links you should keep the queue size short or your  
> traffic
>           might be affected by a significant queueing delay.  E.g.,  
> 50 max-
>           sized ethernet packets (1500 bytes) mean 600Kbit or 20s of  
> queue on
>           a 30Kbit/s pipe.  Even worse effects can result if you get  
> packets
>           from an interface with a much larger MTU, e.g. the  
> loopback inter-
>           face with its 16KB packets.

The issue is that if you have a really slow upstream link, you can end  
up queuing many seconds worth of traffic using the default queue  
size-- depending on the priorities, you might have traffic being  
buffers so long that it starts breaking connections or causing  
needless TCP retries...

-- 
-Chuck



More information about the freebsd-net mailing list