Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Sep 2003 08:24:06 -0700
From:      Luigi Rizzo <rizzo@icir.org>
To:        Ivo Vachkov <ivo@bsdmail.org>
Cc:        freebsd-ipfw@freebsd.org
Subject:   Re: Burst
Message-ID:  <20030906082406.A1562@xorpc.icir.org>
In-Reply-To: <20030906150245.30662.qmail@bsdmail.com>; from ivo@bsdmail.org on Sat, Sep 06, 2003 at 05:02:45PM %2B0200
References:  <20030906150245.30662.qmail@bsdmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
[similar msg on -net, so i will respond here...]

On Sat, Sep 06, 2003 at 05:02:45PM +0200, Ivo Vachkov wrote:
> Hi all,
> 
> I've been doing some research on traffic shaping features on several platforms and I coudn't find is there a way to implement *burst* on FreeBSD. I know Cisco has it and Linux (iproute2/tc + TBF) has it, but none of the BSD seems to have similar feature (at least I couldn't find ...).

it depends on what you want "burst" for.

Dummynet works as what i call a "shaper": it releases traffic at
the desired rate (with two constraints -- packets cannot be split,
and all events are rounded to the closest clock tick).
If packets arrive at a dummynet pipe faster than the output rate,
they are buffered in a queue, whose size (in packets or bytes) you
can configure as a parameter of the pipe. As a consequence, the pipe
is able to absorb a burst as large as the queue size (and release it
with the desired rate).

In this respect, a "burst" means allowing packets to be released in
advance with respect to their correct time (but then of course
remember what you did so you never exceed the programmed bandwidth
by more than the burst size). Effectively, dummynet has a burst
of 0 bytes.

Now, I believe you can change the behaviour of dummynet to implement
a burst by changing, near line 555 in ip_dummynet:ready_event()

-       if (len_scaled > q->numbytes )
+       if (len_scaled > q->numbytes + q->burst_size)

and adding the relevant parameter (burst_size) to the pipe's configuration.
You probably need to change the SET_TICKS() macro to account
for the burst size too.

	cheers
	luigi

> So can you point me out a way to implement such using IPFW+Dummynet if one exists. Thank you in advance.
> 
>         Ivo Vachkov
> 
> P.S. I wrote some code to implement burst using divert(4) sockets, but it's still too bare. If you can point me documentation, descibing traffic engeneering techniques/algorithms I'll be thankfull too
> -- 
> _______________________________________________
> Get your free email from http://mymail.bsdmail.com
> 
> Powered by Outblaze
> _______________________________________________
> freebsd-ipfw@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
> To unsubscribe, send any mail to "freebsd-ipfw-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030906082406.A1562>