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