IPFW DUMMYNET: Several pipes after each other
Sebastian Mellmann
sebastian.mellmann at net.t-labs.tu-berlin.de
Mon Jan 26 02:16:20 PST 2009
Ian Smith wrote:
On Thu, 22 Jan 2009 08:10:09 +0100 (CET)
> >
> > So far I've got those rules:
> >
> > in_if="em0"
> > out_if="em1"
> > management_if="em2"
> > in_ip="100.100.100.1"
> > out_ip="200.200.200.1"
> > management_ip="172.16.0.201"
> > client1_subnet="192.168.5.0/26"
> > client2_subnet="192.168.6.0/26"
> > server_subnet="192.168.7.0/24"
> >
> > download_bandwidth="6144Kbit/s"
> > upload_bandwidth="1024Kbit/s"
> > delay="0"
> > queue_size="10"
>
> 10 slots ie packets is likely too small a queue size at these rates.
> You want to check the dropped packet stats from 'ipfw pipe show' re
> that; see the section in ipfw(8) about calculating sizes / delays.
>
I had a look at the ipfw howto on the freebsd site [1], but I'm not 100%
sure how to choose a "good" value for the queue size.
If I choose the default (50 packets) it means that it takes approx. 100ms
(600kbits / 6144kbits) to fill the queue.
So the question is: Which value to choose for the queue?
> I suggest using 'in recv' and 'out xmit' rather than via for these, for
> the sake of clarity. 'in recv' and 'in via' come to the same thing, as
> only the receive interface is known on inbound packets, but 'out via'
> applies to packets that were *received* on the specified interface as
> well as those going out on that interface after routing, which can lead
> to surprising results sometimes, and being more specific never hurts ..
Thanks for the hint.
I'll change that.
> > But when I have a look at the pipes with 'ipfw show' I can only see
> > packets go through the pipe 50 and nothing goes through the other pipes
> > (which makes sense actually since IPFW work that way?).
>
> IPFW works that way if you (likely) have net.inet.ip.fw.one_pass=1 .. so
> that packets exiting from pipes aren't seen by the firewall again. If
> you set one_pass=0, packets are reinjected into the firewall at the rule
> following the pipe (or queue) action, which is what you want to do here.
Actually this is also described in the manpage of ipfw(8).
Shame on me ;-)
> And you'll surely need a much larger queue for this pipe, at 100Mbit/s.
>
As already asked above:
How do I know the queue is large or small enough for my needs?
> cheers, Ian
Regards,
Sebastian
[1] http://www.freebsd-howto.com/HOWTO/Ipfw-HOWTO
More information about the freebsd-questions
mailing list