Greg DePasse wrote:
> Hi everyone - I'm making progress in my quest to fix my VOIP traffic.
> As you saw in my previous post I am able to filter based on IP
> address. Now I'm trying to change some of the queue characteristics.
>
> I'm not a software developer, and have no experience with C, so please
> let me know if I'm off base.
>
> Looking through CVS (love that sourceforge web-interface), I found
> what I believe is the snippet of code that establishes the queues.
> I'm guessing that for the last 3 tc commands (all listed below) two
> variables get passed %s=iface and %dkbit=(some fraction of uplink).
> If this is true, there seems to be an over allocation of the rate.
> Rate is the maximum guaranteed bandwidth, which I would think
> shouldn't add up to more than the total uplink capacity. It appears
> (again, I could be wrong) that the uplink is highly oversubscribed.
> It looks like the full uplink speed is being guaranteed to queue 1:10,
> 90% of the uplink is guaranteed to queue 1:20 and 80% is guaranteed to
> queue 1:30. Am I reading this right?
> If I am right, is it possible to change it to something like 1:10 gets
> 50% , 1:20 gets 35% and 1:30 gets 15%. Of course if that BW isn't
> used it's then available to other queues (in order of prio), but if
> there is contention then there is prioritization.
>
> Thanks,
> Greg
>
>
> from cvs: ipcop/ipcop/src/misc-progs/restartshaping.c
> (http://cvs.sourceforge.net/viewcvs.py/ipcop/ipcop/src/misc-progs/restartshaping.c?rev=1.3&view=markup)
>
>
> //* Uplink classes *//
>
> snprintf(command, STRING_SIZE-1, *"/sbin/tc qdisc add dev %s root
> handle 1: htb default 20 r2q %d"*, iface, r2q); safe_system(command);
> snprintf(command, STRING_SIZE-1, *"/sbin/tc class add dev %s parent 1:
> classid 1:1 htb rate %dkbit burst 6k"*, iface, uplink);
> safe_system(command);
> snprintf(command, STRING_SIZE-1, *"/sbin/tc class add dev %s parent
> 1:1 classid 1:10 htb rate %dkbit burst 6k prio 1"*, iface, uplink);
> safe_system(command);
> snprintf(command, STRING_SIZE-1, *"/sbin/tc class add dev %s parent
> 1:1 classid 1:20 htb rate %dkbit burst 6k prio 2"*, iface, (9 *
> uplink) / 10); safe_system(command);
> snprintf(command, STRING_SIZE-1, *"/sbin/tc class add dev %s parent
> 1:1 classid 1:30 htb rate %dkbit burst 6k prio 3"*, iface, (8 *
> uplink) / 10); safe_system(command);
>
>
I'd like to get this resolved before 1.4 goes final. I'm still having
problems with traffic shaping not working. My FTP upload traffic is
crushing my VOIP traffic. I think this is because the guaranteed rates
for the 3 queues are too oversubscribed (each class is guaranteed either
100%, 90% or 80% of the total uplink bandwidth). Since I don't
understand C, can someone confirm that the commands listed above mean
that the value of uplink (or (9*uplink)/10 or (8*uplink)/10) is what
gets used as the %dkbit variable in each of the 3 lines? If that is the
case, then they need to change. My recommendation would be to make
classid 1:10= (50*uplink)/100; classid1:20= (35*uplink)/100; and classid
1:30= (15*uplink)100.
Thanks,
Greg
|