Pipe queues

Chuck Swiger cswiger at mac.com
Mon Dec 10 11:42:05 PST 2007

On Dec 10, 2007, at 8:56 AM, rihad wrote:
> Hi,
> I'm having a hard time to understand what pipe queues are with  
> respect to bandwidth limitation. ipfw(8) and dummynet(4) manuals  
> didn't help me much.

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.

> How does dummynet's traffic shaping function?

It uses a variant of weighted fair queuing.

> Why does it need a queue at all?

So the traffic shaper can choose which of the queues with traffic it  
should drain and send out next.  Unless you use multiple queues, you  
won't be able to prioritize traffic between 'em.

> As each connection's queue takes some memory, can I just disable the  
> queueing, or set its size to 1 slot (1500 bytes)?

You could, but that would largely disable effective traffic shaping  

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

> As packets arrive, AFAIK they are stored in mbufs in system memroy.  
> Do pipe queues also use mbufs? I might be servicing hundreds of  
> pipes simultaneously, this is why I'm concerned about memory use.

Pipes aren't queues.  Queues buffer packets into mbufs.


More information about the freebsd-net mailing list