Packet loss with traffic shaper and routing

Julian Elischer julian at elischer.org
Tue May 2 01:21:27 UTC 2006


tpeixoto at widesoft.com.br wrote:

> Hello!
>
> Erich Dollansky wrote:
>
>> Hi,
>>
>> tpeixoto at widesoft.com.br wrote:
>>
>>>
>>> At this moment, I'm getting more than 50% interrupts and 20% packets 
>>> lost.
>>
>>
>> you must have something very basic done the wrong way.
>
> >
>
> Hope so. So I can fix and learn from it!
>
>
>> I would suggest to upgrade that box to 6.1.
>>
>
> We tried 6.0-RELEASE. Please, keep reading...
>
>
>> You need then a systematic approach.
>>
>> Run the GENERIC kernel and see what happens there.
>>
>
> Ok, 15% interrupts. System worked fine.
>
>
>> Then take all out you believe you do not need and see what happens then.
>>
>> Finally, switch to SMP and start the fine tuning.
>>
>
> Kernel recompiled with SMP+IPFW+DUMMYNET and system running with 
> firewall_type="OPEN". Low interrupts, great.
>
> As I inserted the bandwidth rules, the problem arose again! Interrupts 
> getting at 80% and packets being lost.
>
>
>> Do not use HT as it should slow down the machine.
>>
>
> I switched it off but didn't notice any major difference. Anyway I 
> left it disabled.
>
>
>> If even the first step fails, check the connections including the 
>> network card if it is one.
>>
>> Erich
>>
>
> I guess we found where the problem is. IPFW and dummynet seems to be 
> the ones to blame here, or the way we are using them.
> For each MAC address we want to shape, we use 2 pipes and 2 rules, 1 
> for download and 1 for upload.
> I believe the problem is that the number of clients (MAC addresses) 
> grew from 200 to around 1600, and this means lots of pipes and lots of 
> rules.
>
> Anyone knows a better way to get this job done?


for 1600 hosts are you runing 1600 rules?

That would do it..

In all versions of FreeBSD
you can use the skipto rule to make sure that only a few rules are run 
for any
address. Use it to to a binary search for the right pipe.'
carefully using 'skipto' and 'table' can make it efficient to do very 
complex
filters like that.


in 7.0 you can use the 'tablearg' operator to ensure that only 1 rule is 
run per host .
I don't know if it is in 6.1..
if not you may be able to simply apply the diffs.


>
> Thanks!
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"



More information about the freebsd-net mailing list