From: Marek Kierdelewicz <marek@piasta.pl>
To: wilson@optimumwireless.com
Cc: netfilter@vger.kernel.org
Subject: Re: How can I test my tc script?
Date: Sat, 5 Feb 2011 21:21:51 +0100 [thread overview]
Message-ID: <20110205212151.27f217e0@catus> (raw)
In-Reply-To: <1296827153.3644.7.camel@debian-laptop.OptimumWireless>
Hi,
>This method is somewhat complicated but, according to the documentation
>"very worth it".
>Can someone please explain it a little better, thanks.
Sure... here goes the example:
We want to share 100mbit connection. Internet access is connected to
the router on eth0 and lan in on eth1. We do egress shaping of download
traffic on eth1.
---------------------complete script------------------------------
tc qdisc add dev eth1 root handle 1: htb default 1
tc class add dev eth1 parent 1: classid 1:1 htb rate 100Mbit
tc filter add dev eth1 parent 1:1 prio 11 handle 2: protocol ip \
u32 divisor 256
tc filter add dev eth1 protocol ip parent 1:1 prio 11 u32 match \
ip dst 0.0.0.0/0 hashkey mask 0x000000ff at 16 link 2:
tc class add dev eth1 parent 1:1 classid 1:400 htb rate 5mbit
tc qdisc add dev eth1 parent 1:400 handle 400: sfq perturb 1
tc filter add dev eth1 protocol ip prio 11 u32 ht 2:46: match ip \
dst 10.5.0.70 flowid 1:400
tc class add dev eth1 parent 1:1 classid 1:401 htb rate 5mbit
tc qdisc add de eth1 parent 1:401 handle 401: sfq perturb 1
tc filter add de0 eth1 protocol ip prio 11 u32 ht 2:a: match ip \
dst 10.5.0.10 flowid 1:401
---------------------------------------------------------------------
Now lets go line by line.
>tc qdisc add dev eth1 root handle 1: htb default 1
add htb qdisc to eth1, direct all unclassified traffic to 1:1 by default
>tc class add dev eth1 parent 1: classid 1:1 htb rate 100Mbit
add main class 1:1 with rate 100mbit; we don't specify ceil, it's
automaticaly set to rate if ommited
>tc filter add dev eth1 parent 1:1 prio 11 handle 2: protocol ip \
>u32 divisor 256
add hash table with 256 entries (maximal size), table is located at "2:"
>tc filter add dev eth1 protocol ip parent 1:1 prio 11 u32 match \
>ip dst 0.0.0.0/0 hashkey mask 0x000000ff at 16 link 2:
this filter defines how information in ip packet translates to entry in
hash table;
"u32 match ip dst 0.0.0.0/0" - matches any ip traffic;
"hashkey mask 0x000000ff at 16" - number 16 defines location in ip
header [1] and it's destination IP addres; mask 0x000000ff defines that
we're interested in last octet of the destination ip address; example,
if the packet is directed to 10.0.0.192, then te mask will yild value
192; note: mask returns values in range of 0-255 - it coresponds with
divisor setting in previous rule;
"link 2:" - direct packets to table 2: (added in previous rule);
[1]
http://www.siongboon.com/projects/2006-03-06_serial_communication/IP-Header-v4.png
>tc class add dev eth1 parent 1:1 classid 1:400 htb rate 5mbit
add class fo this client, let if be 1:400;
>tc qdisc add dev eth1 parent 1:400 handle 400: sfq perturb 1
attach sfq qdisc to client's class
>tc filter add dev eth1 protocol ip prio 11 u32 ht 2:46: match ip \
>dst 10.5.0.70 flowid 1:400
add filter that directs traffic to 10.5.0.70 to class 1:400;
interesting parts:
"ht 2:46:" - use hash table 2:, 46 is the last octet of clients ip
address converted from decimal to hexadecimal notation; decimal 70 is
equal 0x46 hexadecimal;
>tc class add dev eth1 parent 1:1 classid 1:401 htb rate 5mbit
add class of second client, let if be 1:401;
>tc qdisc add dev eth1 parent 1:401 handle 401: sfq perturb 1
... sfq
>tc filter add dev eth1 protocol ip prio 11 u32 ht 2:a: match ip \
>dst 10.5.0.10 flowid 1:401
add filter that directs traffic to 10.5.0.10 to class 1:401;
interesting parts:
"ht 2:a:" - use hash table 2:, a is the last octet of clients ip
address converted from decimal to hexadecimal notation; decimal 10 is
equal 0xa hexadecimal;
I hope it'll clear things a bit.
Best regards,
Marek Kierdelewicz
next prev parent reply other threads:[~2011-02-05 20:21 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-03 2:17 How can I test my tc script? Optimum Wireless Services
2011-02-03 11:01 ` Marek Kierdelewicz
2011-02-03 14:13 ` Optimum Wireless Services
2011-02-03 15:06 ` Marek Kierdelewicz
2011-02-03 16:18 ` Optimum Wireless Services
2011-02-04 13:45 ` Optimum Wireless Services
2011-02-04 16:49 ` Optimum Wireless Services
2011-02-04 19:57 ` Optimum Wireless Services
2011-02-05 12:29 ` Andrew Beverley
2011-02-05 19:32 ` Marek Kierdelewicz
2011-02-05 19:29 ` Marek Kierdelewicz
2011-02-05 20:21 ` Marek Kierdelewicz [this message]
2011-02-06 0:05 ` Marek Kierdelewicz
2011-02-06 2:24 ` Optimum Wireless Services
2011-02-04 14:22 ` Michele Petrazzo - Unipex
2011-02-05 2:08 ` Andrew Beverley
2011-02-05 14:58 ` Marek Kierdelewicz
2011-02-05 16:37 ` Andrew Beverley
2011-02-05 16:48 ` good tutorial J Webster
2011-02-05 19:22 ` Andrew Beverley
2011-02-05 19:33 ` J Webster
2011-02-05 19:51 ` Bob Miller
2011-02-05 22:47 ` Andrew Beverley
2011-02-05 22:44 ` Andrew Beverley
2011-02-05 17:04 ` How can I test my tc script? Marek Kierdelewicz
2011-02-06 2:12 ` Optimum Wireless Services
2011-02-06 16:13 ` Andrew Beverley
2011-02-07 8:20 ` Michele Petrazzo - Unipex
2011-02-03 19:38 ` Andrew Beverley
2011-02-05 2:44 ` Optimum Wireless Services
2011-02-05 6:07 ` Optimum Wireless Services
2011-02-05 12:27 ` Andrew Beverley
2011-02-06 2:14 ` Optimum Wireless Services
2011-02-06 16:15 ` Andrew Beverley
2011-02-06 16:35 ` Optimum Wireless Services
2011-02-06 17:02 ` Andrew Beverley
2011-02-06 23:27 ` Optimum Wireless Services
2011-02-08 0:56 ` Andrew Beverley
2011-02-08 2:11 ` Optimum Wireless Services
2011-02-08 6:52 ` Andrew Beverley
2011-02-08 2:20 ` Optimum Wireless Services
2011-02-08 6:53 ` Andrew Beverley
2011-02-06 16:44 ` Marek Kierdelewicz
2011-02-06 23:31 ` Optimum Wireless Services
2011-02-08 0:58 ` Andrew Beverley
2011-02-05 12:35 ` Andrew Beverley
2011-02-06 2:17 ` Optimum Wireless Services
2011-02-06 15:54 ` Andrew Beverley
2011-02-06 16:28 ` Optimum Wireless Services
2011-02-06 17:11 ` Andrew Beverley
2011-02-06 23:33 ` Optimum Wireless Services
2011-02-08 1:01 ` Andrew Beverley
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=20110205212151.27f217e0@catus \
--to=marek@piasta.pl \
--cc=netfilter@vger.kernel.org \
--cc=wilson@optimumwireless.com \
/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.