Re: [RFC] setting up throughput threshold indications to userspace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Aug 16, 2010 at 9:40 PM, Luciano Coelho
<luciano.coelho@xxxxxxxxx> wrote:
> Hello,
>
> On Mon, 2010-07-19 at 07:30 +0200, Coelho Luciano (Nokia-MS/Helsinki)
> wrote:
>> On Fri, 2010-07-16 at 21:27 +0200, ext Jan Engelhardt wrote:
>> > On Friday 2010-07-16 15:10, Luciano Coelho wrote:
>> > >> > There is one problem with this solution, which is that it works in a
>> > >> > per-connection basis (due to CONNMARK).  This is not exactly what I
>> > >> > want.  I need to have this on a per-ruleset basis.  For that, I need to
>> > >> > have a MARK (variable?) which can be set independently of connections or
>> > >> > packets.  This is similar to the proposed condition match, but what is
>> > >> > missing there is a way to set the condition with iptables itself,
>> > >> > without requiring the userspace to change the procfs file.  This could
>> > >> > probably be achieved with a "CONDITION" target or something similar.
>> > >> > Any ideas?
>> > >>
>> > >> Sounds useful.
>> > >
>> > >Okay, this was the kind of confirmation I wanted before jumping into the
>> > >implementation. ;) I'll implement this target soon.
>> >
>> > My suggestion to have it combined with xt_condition.
>>
>> Yes, I also think that is the best idea.  I'll implement a CONDITION
>> target that will work together with the condition match.  For now I'll
>> use the non-final version you submitted some time ago.
>
> Now that I have implemented the changes needed in the condition module
> so that it has a target which can be used to set the condition, I came
> up with the following rules to inform the userspace about the throughput
> of a specific interface (in this case wlan0):
>
> iptables -N throughput
> iptables -N test_above
> iptables -N test_below
> iptables -A INPUT -i wlan0 -j throughput
> iptables -A OUTPUT -o wlan0 -j throughput
> iptables -A throughput -j RATEEST --rateest-name throughput --rateest-interval 250.0ms --rateest-ewmalog 500.0ms
> iptables -A throughput -m condition --name throughput ! --value 1 -j test_above
> iptables -A throughput -m condition --name throughput ! --value 2 -j test_below
> iptables -A test_above -m rateest --rateest1 throughput --rateest-bps1 0 --rateest-bps2 512bps --rateest-gt -j CONDITION --value 1 --name throughput
> iptables -A test_above -m condition --name "throughput" --value 1 -j NFLOG --nflog-prefix "ABOVE "
> iptables -A test_below -m rateest --rateest1 throughput --rateest-bps1 0 --rateest-bps2 512bps --rateest-lt -j CONDITION --value 2 --name throughput
> iptables -A test_below -m condition --name "throughput" --value 2 -j NFLOG --nflog-prefix "BELOW "
>
> This is just a proof of concept and I'm sure it can be optimized (I'll
> look into it once it works fully).
>
> Anyway, my problem now, is that the rate estimator targets are only
> reached when there are packets coming through (for obvious reasons).
> What is happening is that, if the last packet sent through this
> interface is sent as part of a high throughput burst, the last signal
> the userspace will get is "ABOVE".  After that, the interface becomes
> idle and the "BELOW" signal is never sent, even though we will be
> transmitting at 0 bps.
>
> Does anyone have an idea on how I could solve this problem?
>
> I have been considering using the IDLETIMER target and activate it when
> the throughput goes to HIGH.  Then if this timer expires, it would
> inform the userspace that now there's no data going through.  But this
> sounds very artificial to me and will add one more dependency on the
> userspace, since the IDLETIMER is using sysfs to inform userspace,
> instead of netlink.
>
> Any other suggestions?
>

You can implement a daemon: which samples the statistics data of NIC
periodically, calculates the average bandwidth in a period, and change
the condition variables accordingly.


-- 
Regards,
Changli Gao(xiaosuo@xxxxxxxxx)
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux