From: Andy Furniss <andy.furniss@dsl.pipex.com>
To: hadi@cyberus.ca
Cc: netdev@oss.sgi.com, Nguyen Dinh Nam <nguyendinhnam@gmail.com>,
Remus <rmocius@auste.elnet.lt>, Andre Tomt <andre@tomt.net>,
syrius.ml@no-log.org, Damion de Soto <damion@snapgear.com>
Subject: Re: dummy as IMQ replacement
Date: Tue, 01 Feb 2005 14:53:29 +0000 [thread overview]
Message-ID: <41FF97E9.7040501@dsl.pipex.com> (raw)
In-Reply-To: <1107258578.1095.570.camel@jzny.localdomain>
jamal wrote:
> On Mon, 2005-01-31 at 17:39, Andy Furniss wrote:
>
>>Jamal Hadi Salim wrote:
>
>
>>>2) Allows for queueing incoming traffic for shaping instead of
>>>dropping. I am not aware of any study that shows policing is
>>>worse than shaping in achieving the end goal of rate control.
>>
>>I would say the end goal is shaping not just rate control. Shaping
>>meaning different things to different people and ingress shaping being
>>different from egress.
>
>
> I know for a while the Bart howto was mislabeling the meaning of
> policing - not sure about shaping.
> Shaping has a precise definition that involves a queue and a
> non-working-conserving scheduler in order to rate control. This doesnt
> matter where it happens (egress or ingress). Policing on the other hand
> is work conserving etc.
Ok, but shaping to LARTC posters means being able to classify traffic
and set up sharing/priorotising of classes. This is the reason most need
to be able to queue - they want to use htb/hfsc for complicated setups
and until now were not aware that it was even possible to replicate this
in policers and if it becomes feasable it will probably appear daunting
to do compared with HTB and all the existing docs/scripts.
For me, I think queuing and dropping is better than just dropping, you
can affect tcp by delaying eg. 1 ack per packet rather than delayed acks
and clocking out the packets helps smooth burstiness, which hurts
latency if you are doing traffic control from the wrong end of the
bottleneck.
>
>>For me it's from the wrong end of a relativly narrow (512kbit)
>>bottleneck link that has a 600ms fifo at the other end. My aim to
>>sacrifice as little bandwidth as possible while not adding latency
>>bursts for gaming and per user bandwidth allocation (with sharing of
>>unused) and sfq within that for bulk tcp traffic.
>>
>>If I was shaping LAN traffic, then policers/drops would be OK for me -
>>but for a slow link I think queueing and dropping are better/give more
>>control eg. I get to use sfq which should not drop the one packet a 56k
>>user has managed to send me in the face of lots of incoming from low
>>latency high bandwidth servers.
>>
>>Even if it's possible I bet few can easily get policers to setup the
>>complex sharing/prioritisations that you can with HTB or HFSC.
>
>
> sfq has a built in classifier that can efficiently separate those
> flows so you can achieve semi-fairness; so its not the shaping perse
> that helps, rather you ended up using a clever scheme that can isolate
> flows and benefited from shaping as a result; the hashing function
> should prove weak when a lot of flows start showing up.
> You could write some interesting classifier (as an example steal the one
> that sfq has) and achieve the same end results with policing. This would
> be easier now with ematches ..
The idea of loosing the s from sfq and doing multilevel hash/mapping is
attractive - of course I would want to queue each flow and have the
queue be variable length for each flow depending on occupancy of other
flows. I suppose a per flow intelligent dropping scheme would be even
better. It would be nice to be able to set/control queuelength for link
bandwidth, nothing classful in linux tc does this.
>
>
>>>But i wont go back to putting netfilter hooks in the device to satisfy
>>>this. I also dont think its worth it hacking dummy some more to be
>>>aware of say L3 info and play ip rule tricks to achieve this.
>>>--> Instead the plan is to have a contrack related action. This action
>>>will selectively either query/create contrack state on incoming packets.
>>
>>I don't understand exactly what you mean here - for my setup to work I
>>need to see denatted addresses and mark (connbytes - it helps me be
>>extra nasty to multiple simoultaneous connections in slowstart and
>>prioritise browsing over bulk) in prerouting mangle. Of course if I can
>>use netfilter to classify and save into contrack then I could do
>>evrything in netfilter and then use something like connmark to save it
>>per connection.
>>
>
>
> You may be refering to requirement #3 then?
> In other words what you are doing is best served by knowing the state?
As long as I could use netfilter to mark/classify connections then I
think I can sort my setup, don't know about others.
> Are pre/post routing sufficient as netfilter hooks for your case?
Yes but depends on where in pre/postrouting. For me after/before nat, as
I say above though I could workaround if I classify connections with
netfilter. For others as long as they can filter on a mark/classify set
in forward, then I think it will be OK for them.
>
>
>>>Packets could then be redirected to dummy based on what happens -> eg
>>>on incoming packets; if we find they are of known state we could send to
>>>a different queue than one which didnt have existing state. This
>>>all however is dependent on whatever rules the admin enters.
>>
>>
>>How does the admin enter the rules - netfilter or other?
>>
>
> Just like i showed in that post (It was long - so dont wanna cutnpaste
> here).
>
I am not sure what exactly can can't be done in your example:
># redirect all IP packets arriving in eth0 to dummy0
># use mark 1 --> puts them onto class 1:1
>$TC filter add dev eth0 parent ffff: protocol ip prio 10 u32 \
>match u32 0 0 flowid 1:1 \
What I can do here depends where it hooks packets.
>action ipt -j MARK --set-mark 1 \
I don't know what table I am using - may be OK as long as I can test for
a mark I made earlier in the egress dummy case or test connmark/state I
set for that connection in the ingress case.
>action mirred egress redirect dev dummy0
Andy.
> cheers,
> jamal
>
>
next prev parent reply other threads:[~2005-02-01 14:53 UTC|newest]
Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-30 22:12 dummy as IMQ replacement Jamal Hadi Salim
2005-01-31 8:20 ` Hasso Tepper
2005-01-31 12:25 ` jamal
2005-01-31 12:38 ` Hasso Tepper
2005-01-31 12:47 ` jamal
2005-01-31 13:02 ` Hasso Tepper
2005-01-31 13:28 ` Thomas Graf
2005-01-31 13:45 ` jamal
2005-01-31 14:06 ` Thomas Graf
2005-01-31 14:29 ` jamal
2005-01-31 13:39 ` jamal
2005-01-31 14:14 ` Hasso Tepper
2005-01-31 14:25 ` jamal
2005-01-31 14:46 ` Hasso Tepper
2005-01-31 15:34 ` jamal
2005-01-31 18:00 ` Lennert Buytenhek
2005-01-31 20:08 ` jamal
2005-01-31 13:58 ` Thomas Graf
2005-01-31 14:19 ` jamal
2005-01-31 15:15 ` Thomas Graf
2005-01-31 15:40 ` jamal
2005-01-31 15:59 ` Thomas Graf
2005-01-31 16:40 ` jamal
2005-01-31 18:15 ` Thomas Graf
2005-01-31 20:18 ` jamal
2005-01-31 22:53 ` Thomas Graf
2005-02-01 12:02 ` jamal
2005-02-01 12:51 ` Thomas Graf
2005-02-01 13:13 ` jamal
2005-02-01 22:44 ` Thomas Graf
2005-02-02 14:24 ` jamal
2005-02-02 15:40 ` Thomas Graf
2005-02-02 15:55 ` Thomas Graf
2005-01-31 20:28 ` David S. Miller
2005-02-01 1:02 ` Andy Furniss
2005-02-01 13:31 ` Thomas Graf
2005-02-01 15:03 ` Andy Furniss
2005-02-02 13:28 ` Thomas Graf
2005-01-31 16:27 ` Andre Correa
2005-01-31 16:51 ` Jamal Hadi Salim
2005-01-31 22:39 ` Andy Furniss
2005-02-01 11:49 ` jamal
2005-02-01 14:53 ` Andy Furniss [this message]
2005-02-02 14:05 ` jamal
2005-02-04 0:33 ` Andy Furniss
2005-02-01 11:32 ` Andy Furniss
[not found] ` <0fcf01c5077f$579e4b80$6e69690a@RIMAS>
[not found] ` <1107174142.8021.121.camel@jzny.localdomain>
2005-03-09 14:30 ` Remus
2005-03-09 14:38 ` jamal
2005-03-10 1:06 ` Jamal Hadi Salim
2005-03-10 9:18 ` Remus
2005-03-10 11:22 ` jamal
2005-03-19 1:09 ` Andy Furniss
2005-03-19 1:45 ` jamal
2005-03-19 10:23 ` Andy Furniss
2005-03-20 13:20 ` jamal
2005-03-20 13:55 ` jamal
2005-03-20 18:31 ` jamal
2005-03-21 22:08 ` Andy Furniss
2005-03-21 13:14 ` iptables breakage WAS(Re: " jamal
2005-03-21 21:50 ` Andy Furniss
2005-03-21 22:41 ` jamal
2005-03-22 1:15 ` Andy Furniss
2005-03-22 3:31 ` jamal
2005-03-22 21:09 ` Andy Furniss
2005-03-23 3:57 ` jamal
2005-03-23 19:33 ` Andy Furniss
2005-03-23 19:45 ` jamal
2005-03-23 20:53 ` Andy Furniss
2005-03-23 21:07 ` jamal
2005-03-23 22:46 ` Andy Furniss
2005-03-23 23:12 ` Andy Furniss
2005-03-24 0:34 ` jamal
2005-03-24 1:00 ` Andy Furniss
2005-03-24 0:53 ` jamal
2005-03-24 1:08 ` Andy Furniss
2005-03-24 11:32 ` jamal
2005-03-24 11:57 ` jamal
2005-03-24 15:41 ` Andy Furniss
2005-03-25 11:13 ` jamal
2005-03-25 12:39 ` jamal
2005-03-25 17:27 ` Patrick McHardy
2005-03-25 18:34 ` jamal
2005-03-25 19:01 ` Patrick McHardy
2005-03-25 20:07 ` Patrick McHardy
2005-03-25 20:31 ` jamal
2005-03-25 20:37 ` Patrick McHardy
2005-03-25 20:54 ` jamal
2005-03-25 21:23 ` Patrick McHardy
2005-03-25 19:08 ` jamal
2005-03-25 19:22 ` jamal
2005-03-25 19:59 ` Andy Furniss
2005-03-25 20:09 ` Patrick McHardy
2005-03-25 20:42 ` Andy Furniss
2005-03-25 20:10 ` jamal
2005-03-25 20:18 ` Patrick McHardy
2005-03-25 20:45 ` jamal
2005-03-25 21:10 ` Patrick McHardy
2005-03-25 21:57 ` jamal
2005-03-25 20:20 ` Thomas Graf
2005-03-25 20:48 ` jamal
2005-03-25 21:01 ` Thomas Graf
2005-03-25 21:48 ` jamal
2005-03-25 22:03 ` Thomas Graf
2005-03-25 22:20 ` jamal
2005-03-25 20:39 ` Patrick McHardy
2005-03-25 20:55 ` jamal
2005-03-25 21:00 ` Patrick McHardy
2005-03-25 21:44 ` jamal
2005-03-25 21:18 ` Andy Furniss
2005-03-25 22:12 ` IMQ again WAS(Re: " jamal
2005-03-25 23:26 ` Andy Furniss
2005-03-27 19:35 ` Andy Furniss
2005-03-28 13:39 ` Andy Furniss
2005-03-28 13:45 ` jamal
2005-03-28 13:55 ` Andy Furniss
2005-03-28 14:08 ` jamal
2005-03-28 13:57 ` jamal
2005-03-28 14:12 ` Andy Furniss
2005-03-28 14:20 ` jamal
2005-03-28 14:28 ` Andy Furniss
2005-03-28 14:36 ` Andy Furniss
2005-03-28 15:24 ` Andy Furniss
2005-03-28 19:27 ` jamal
2005-03-28 20:13 ` Andy Furniss
2005-03-23 1:31 ` Patrick McHardy
2005-03-23 4:01 ` jamal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=41FF97E9.7040501@dsl.pipex.com \
--to=andy.furniss@dsl.pipex.com \
--cc=andre@tomt.net \
--cc=damion@snapgear.com \
--cc=hadi@cyberus.ca \
--cc=netdev@oss.sgi.com \
--cc=nguyendinhnam@gmail.com \
--cc=rmocius@auste.elnet.lt \
--cc=syrius.ml@no-log.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).