From: "Martin A. Brown" <mabrown-lartc@securepipe.com>
To: lartc@vger.kernel.org
Subject: Re: [LARTC] Parameters for the ingress qdisc?
Date: Thu, 07 Aug 2003 01:18:16 +0000 [thread overview]
Message-ID: <marc-lartc-106021927406925@msgid-missing> (raw)
In-Reply-To: <marc-lartc-106011742407167@msgid-missing>
Hello all,
I played a bit with the ingress qdisc after seeing Patrick and Stef
talking about it and came up with a few notes and a few questions.
: The ingress qdisc itself has no parameters. The only thing you can do
: is using the policers. I have a link with a patch to extend this :
: http://www.cyberus.ca/~hadi/patches/action/ Maybe this can help.
:
: I have some more info about ingress in my mail files, but I have to
: sort it out and put it somewhere on docum.org. But I still didn't
: found the the time to do so.
Regarding policers and the ingress qdisc. I have never used them before
today, but have the following understanding.
About the ingress qdisc:
- ingress qdisc (known as "ffff:") can't have any children classes
(hence the existence of IMQ)
- the only thing you can do with the ingress qdisc is attach filters
About filtering on the ingress qdisc:
- since there are no classes to which to direct the packets, the only
reasonable option (reasonable, indeed!) is to drop the packets
- with clever use of filtering, you can limit particular traffic
signatures to particular uses of your bandwidth
Here's an example of using an ingress policer to limit inbound traffic
from a particular set of IPs on a per IP basis. In this case, traffic
from each of these source IPs is limited to a T1's worth of bandwidth.
Note that this means that this host can receive up to 1536kbit (768kbit +
768kbit) worth of bandwidth from these two source IPs alone.
# -- start of script
#! /bin/ash
#
# -- simulate a much smaller amount of bandwidth than the 100MBit interface
#
RATE\x1536kbit
DEV=eth0
SOURCES="10.168.53.2/32 10.168.73.10/32 10.168.28.20/32"
# -- attach our ingress qdisc
#
tc qdisc add dev $DEV ingress
# -- cap bandwidth from particular source IPs
#
for SOURCE in $SOURCES ; do
tc filter add dev $DEV parent ffff: protocol ip \
u32 match ip src $SOURCE flowid :1 \
police rate $RATE mtu 12k burst 10k drop
done
# -- end of script
Now, if you are using multiple public IPs on your masquerading/SNAT host,
you can use "u32 match ip dst $PER_IP" with a drop action to force a
particular rate on inbound traffic to that IP.
My entirely unquantified impression is that latency suffers as a result,
but traffic is indeed bandwidth limited.
Just a few notes of dissection:
tc filter add dev $DEV # -- the usual beginnings
parent ffff: # -- the ingress qdisc itself
protocol ip # -- more preamble | make sure to visit
u32 match ip # -- u32 classifier | http://lartc.org/howto/
src $SOURCE # -- could also be "dst $SOME_LOCAL_IP"
flowid :1 # -- ??? (but it doesn't work without this)
police rate $RATE # -- put a policer here
mtu 12k burst 10k # -- ???
drop # -- drop packets exceeding our police params
Maybe a guru or two out there (Stef?, Bert?, Jamal?, Werner?) can explain
why mtu needs to be larger than 1k (didn't work for me anyway) and also
how these other parameters should be used.
I'll add a few questions:
Why does policing fail entirely without "flowid :1"? (There's no flow!)
Why does the policer drop all traffic if mtu is small?
How are mtu and burst used?
Oh yes, and "Ah, that's linux!"
-Martin
--
Martin A. Brown --- SecurePipe, Inc. --- mabrown@securepipe.com
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
next prev parent reply other threads:[~2003-08-07 1:18 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-05 20:59 [LARTC] Parameters for the ingress qdisc? Patrick Turley
2003-08-05 21:15 ` Stef Coene
2003-08-05 22:11 ` Patrick Turley
2003-08-06 18:18 ` Stef Coene
2003-08-06 18:41 ` Patrick Turley
2003-08-06 19:23 ` Stef Coene
2003-08-06 20:35 ` Stef Coene
2003-08-07 1:18 ` Martin A. Brown [this message]
2003-08-07 1:37 ` Martin A. Brown
2003-08-07 1:41 ` Patrick Turley
2003-08-07 1:51 ` Patrick Turley
2003-08-10 0:16 ` Martin A. Brown
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=marc-lartc-106021927406925@msgid-missing \
--to=mabrown-lartc@securepipe.com \
--cc=lartc@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.