* Re: Qdisc HTB root overlimits and requeues
2015-01-25 20:27 Qdisc HTB root overlimits and requeues Дмитрий Шикуть
@ 2015-01-25 21:48 ` Dave Taht
2015-01-26 5:59 ` Dzmitry Shykuts
2015-01-26 6:41 ` Dzmitry Shykuts
2 siblings, 0 replies; 4+ messages in thread
From: Dave Taht @ 2015-01-25 21:48 UTC (permalink / raw)
To: lartc
give fq_codel a shot instead of sfq.
see also the sqm-scripts.
requeues means that you hit a limit and had to wait for the next
scheduled round.
On Sun, Jan 25, 2015 at 12:27 PM, Дмитрий Шикуть
<dshykuts@brest.beltelecom.by> wrote:
> Hello!
>
> I created script for traffic shaping. After run, there are many overlimits
> and requeues in tc stat for htb root discipline. Is this normal or something
> going wrong?
>
> Here is script:
>
> #!/bin/sh
> ### BEGIN INIT INFO
> # Provides: trafficshaper
> # Required-Start: $network $syslog
> # Required-Stop: $network $syslog
> # Should-Start:
> # Should-Stop:
> # Default-Start: 2 3 4 5
> # Default-Stop: 0 1 6
> # Short-Description: Start and stop trafficshaper
> # Description: trafficshaper
> ### END INIT INFO
>
> PATH=/sbin:/bin:/usr/bin
>
> . /lib/init/vars.sh
> . /lib/lsb/init-functions
>
> # Reads config file (will override defaults above)
> [ -r /etc/default/trafficshaper ] && . /etc/default/trafficshaper
>
> # Devices calculation
> devDL=$dev
> devUL=ifb0
>
> # Flush discuiplines for DL and UL devices
> delete_qdisc () {
> tc qdisc del dev $devDL ingress 2>/dev/null
> tc qdisc del dev $devUL root 2>/dev/null
> tc qdisc del dev $devDL root 2>/dev/null
> }
>
> case "$1" in
> start|"")
> log_daemon_msg "Starting trafficshaper" "ok"
>
> # Global constants
> divisor 48
> quantum\x1514
> perturb\x10
>
> reNum="\([0-9]*\)[a-zA-Z]*"
> reStr="[0-9]*\([a-zA-Z]*\)"
>
> # Bandwidth calculation
> bwPrivateDL=`expr \( $bwDL : $reNum \) / 2``expr $bwDL : $reStr`
> bwPublicDL=$bwPrivateDL
>
> bwPrivateUL=`expr \( $bwUL : $reNum \) / 2``expr $bwUL : $reStr`
> bwPublicUL=$bwPrivateUL
>
> # Delete discuiplines for DL and UL devices
> delete_qdisc
>
> ifconfig $devUL txqueuelen 1000 2>/dev/null
> ifconfig $devUL up 2>/dev/null
>
> # Add discuiplines for DL device
> tc qdisc add dev $devDL root handle 1: htb default 12
>
> # Add classes for DL device
> tc class add dev $devDL parent 1: classid 1:1 htb rate $bwDL ceil
> $bwDL quantum $quantum
> tc class add dev $devDL parent 1:1 classid 1:11 htb prio 1 rate
> $bwPrivateDL ceil $bwDL quantum $quantum
> tc class add dev $devDL parent 1:1 classid 1:12 htb prio 2 rate
> $bwPublicDL ceil $bwPublicDL quantum $quantum
>
> tc qdisc add dev $devDL parent 1:11 handle 11: sfq divisor $divisor
> perturb $perturb
> tc qdisc add dev $devDL parent 1:12 handle 12: sfq divisor $divisor
> perturb $perturb
>
> tc filter add dev $devDL protocol all prio 1 parent 11: handle 11
> flow hash keys dst divisor $divisor baseclass 1:11
> tc filter add dev $devDL protocol all prio 2 parent 12: handle 12
> flow hash keys dst divisor $divisor baseclass 1:12
>
> # Add filters for DL device
> if [ -s $filePrivate ]; then
> for ip in `grep -v "#" $filePrivate`; do
> if [ `expr index $ip :` = 0 ]; then
> tc filter add dev $devDL protocol all prio 1 parent 1:
> u32 match ip dst $ip flowid 1:11
> else
> echo $ip
> tc filter add dev $devDL protocol all prio 1 parent 1:
> u32 match ip6 dst $ip flowid 1:11
> fi
> done
> fi
>
> tc filter add dev $devDL protocol all prio 2 parent 1: u32 match ip
> dst 0/0 flowid 1:12
> tc filter add dev $devDL protocol all prio 2 parent 1: u32 match ip6
> dst ::/0 flowid 1:12
>
> # Add discuiplines for UL device
> tc qdisc add dev $devUL root handle 2: htb default 22
>
> # Add classes for UL device
> tc class add dev $devUL parent 2: classid 2:2 htb rate $bwUL ceil
> $bwUL quantum $quantum
> tc class add dev $devUL parent 2:2 classid 2:21 htb prio 1 rate
> $bwPrivateUL ceil $bwUL quantum $quantum
> tc class add dev $devUL parent 2:2 classid 2:22 htb prio 2 rate
> $bwPublicUL ceil $bwPublicUL quantum $quantum
>
> tc qdisc add dev $devUL parent 2:21 handle 21: sfq divisor $divisor
> perturb $perturb
> tc qdisc add dev $devUL parent 2:22 handle 22: sfq divisor $divisor
> perturb $perturb
>
> tc filter add dev $devUL protocol all prio 1 parent 21: handle 21
> flow hash keys src divisor $divisor baseclass 2:21
> tc filter add dev $devUL protocol all prio 2 parent 22: handle 22
> flow hash keys src divisor $divisor baseclass 2:22
>
> # Add filters for UL device
> if [ -s $filePrivate ]; then
> for ip in `grep -v "#" $filePrivate`; do
> if [ `expr index $ip :` = 0 ]; then
> tc filter add dev $devUL protocol all prio 1 parent 2:
> u32 match ip src $ip flowid 2:21
> else
> tc filter add dev $devUL protocol all prio 1 parent 2:
> u32 match ip6 src $ip flowid 2:21
> fi
> done
> fi
>
> tc filter add dev $devUL protocol all prio 2 parent 2: u32 match ip
> src 0/0 flowid 2:22
> tc filter add dev $devUL protocol all prio 2 parent 2: u32 match ip6
> src ::/0 flowid 2:22
>
> # Add mirred redirect discuiplines for UL device
> tc qdisc add dev $devDL ingress
> tc filter add dev $devDL parent ffff: protocol all u32 match u32 0 0
> action mirred egress redirect dev $devUL
>
> log_end_msg 0
> ;;
>
> stop)
> log_daemon_msg "Stopping trafficshaper" "ok"
>
> # Delete discuiplines for DL and UL devices
> delete_qdisc
>
> log_end_msg 0
> ;;
>
> restart|force-reload)
> $0 stop
> $0 start
> ;;
>
> *)
> echo "Usage: trafficshaper [start|stop|restart|force-reload]" >&2
> exit 3
> ;;
> esac
>
> :
>
> And there is tc show output:
>
> # tc -s qdisc show dev eth0
>
> qdisc htb 1: root refcnt 6 r2q 10 default 12 direct_packets_stat 5
> direct_qlen 1000
> Sent 147698795 bytes 958679 pkt (dropped 0, overlimits 43066 requeues 148)
> backlog 0b 0p requeues 148
> qdisc sfq 11: parent 1:11 limit 127p quantum 1514b depth 127 divisor 2048
> perturb 10sec
> Sent 81156975 bytes 527521 pkt (dropped 0, overlimits 0 requeues 0)
> backlog 0b 0p requeues 0
> qdisc sfq 12: parent 1:12 limit 127p quantum 1514b depth 127 divisor 2048
> perturb 10sec
> Sent 66541452 bytes 431152 pkt (dropped 0, overlimits 0 requeues 0)
> backlog 0b 0p requeues 0
> qdisc ingress ffff: parent ffff:fff1 ----------------
> Sent 2333918666 bytes 1999165 pkt (dropped 421, overlimits 0 requeues 0)
> backlog 0b 0p requeues 0
>
> # tc -s class show dev eth0
>
> class htb 1:11 parent 1:1 leaf 11: prio 1 rate 30000Kbit ceil 60000Kbit
> burst 1593b cburst 1590b
> Sent 82530637 bytes 547960 pkt (dropped 0, overlimits 0 requeues 0)
> rate 0bit 0pps backlog 0b 0p requeues 0
> lended: 521119 borrowed: 5867 giants: 0
> tokens: 6097 ctokens: 3048
>
> class htb 1:1 root rate 60000Kbit ceil 60000Kbit burst 1590b cburst 1590b
> Sent 150027823 bytes 987451 pkt (dropped 0, overlimits 0 requeues 0)
> rate 0bit 0pps backlog 0b 0p requeues 0
> lended: 5867 borrowed: 0 giants: 0
> tokens: 3215 ctokens: 3215
>
> class htb 1:12 parent 1:1 leaf 12: prio 2 rate 30000Kbit ceil 30000Kbit
> burst 1593b cburst 1593b
> Sent 67497186 bytes 439491 pkt (dropped 0, overlimits 0 requeues 0)
> rate 0bit 0pps backlog 0b 0p requeues 0
> lended: 437399 borrowed: 0 giants: 0
> tokens: 6431 ctokens: 6431
>
> Is my script correct or I'm something missing?
>
> Thank's.
>
> --
> To unsubscribe from this list: send the line "unsubscribe lartc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Dave Täht
thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: Qdisc HTB root overlimits and requeues
2015-01-25 20:27 Qdisc HTB root overlimits and requeues Дмитрий Шикуть
2015-01-25 21:48 ` Dave Taht
@ 2015-01-26 5:59 ` Dzmitry Shykuts
2015-01-26 6:41 ` Dzmitry Shykuts
2 siblings, 0 replies; 4+ messages in thread
From: Dzmitry Shykuts @ 2015-01-26 5:59 UTC (permalink / raw)
To: lartc
Have a 3.13.0-44-generic kernel only, so no fq_codel as module.
And what about script structure (handlers, classids)? Is it correct?
-----Original Message-----
From: lartc-owner@vger.kernel.org [mailto:lartc-owner@vger.kernel.org] On Behalf Of Dave Taht
Sent: Monday, January 26, 2015 12:48 AM
To: Дмитрий Шикуть
Cc: lartc@vger.kernel.org
Subject: Re: Qdisc HTB root overlimits and requeues
give fq_codel a shot instead of sfq.
see also the sqm-scripts.
requeues means that you hit a limit and had to wait for the next scheduled round.
On Sun, Jan 25, 2015 at 12:27 PM, Дмитрий Шикуть <dshykuts@brest.beltelecom.by> wrote:
> Hello!
>
> I created script for traffic shaping. After run, there are many
> overlimits and requeues in tc stat for htb root discipline. Is this
> normal or something going wrong?
>
> Here is script:
>
> #!/bin/sh
> ### BEGIN INIT INFO
> # Provides: trafficshaper
> # Required-Start: $network $syslog
> # Required-Stop: $network $syslog
> # Should-Start:
> # Should-Stop:
> # Default-Start: 2 3 4 5
> # Default-Stop: 0 1 6
> # Short-Description: Start and stop trafficshaper # Description:
> trafficshaper ### END INIT INFO
>
> PATH=/sbin:/bin:/usr/bin
>
> . /lib/init/vars.sh
> . /lib/lsb/init-functions
>
> # Reads config file (will override defaults above) [ -r
> /etc/default/trafficshaper ] && . /etc/default/trafficshaper
>
> # Devices calculation
> devDL=$dev
> devUL=ifb0
>
> # Flush discuiplines for DL and UL devices delete_qdisc () {
> tc qdisc del dev $devDL ingress 2>/dev/null
> tc qdisc del dev $devUL root 2>/dev/null
> tc qdisc del dev $devDL root 2>/dev/null }
>
> case "$1" in
> start|"")
> log_daemon_msg "Starting trafficshaper" "ok"
>
> # Global constants
> divisor 48
> quantum\x1514
> perturb\x10
>
> reNum="\([0-9]*\)[a-zA-Z]*"
> reStr="[0-9]*\([a-zA-Z]*\)"
>
> # Bandwidth calculation
> bwPrivateDL=`expr \( $bwDL : $reNum \) / 2``expr $bwDL : $reStr`
> bwPublicDL=$bwPrivateDL
>
> bwPrivateUL=`expr \( $bwUL : $reNum \) / 2``expr $bwUL : $reStr`
> bwPublicUL=$bwPrivateUL
>
> # Delete discuiplines for DL and UL devices
> delete_qdisc
>
> ifconfig $devUL txqueuelen 1000 2>/dev/null
> ifconfig $devUL up 2>/dev/null
>
> # Add discuiplines for DL device
> tc qdisc add dev $devDL root handle 1: htb default 12
>
> # Add classes for DL device
> tc class add dev $devDL parent 1: classid 1:1 htb rate $bwDL
> ceil $bwDL quantum $quantum
> tc class add dev $devDL parent 1:1 classid 1:11 htb prio 1
> rate $bwPrivateDL ceil $bwDL quantum $quantum
> tc class add dev $devDL parent 1:1 classid 1:12 htb prio 2
> rate $bwPublicDL ceil $bwPublicDL quantum $quantum
>
> tc qdisc add dev $devDL parent 1:11 handle 11: sfq divisor
> $divisor perturb $perturb
> tc qdisc add dev $devDL parent 1:12 handle 12: sfq divisor
> $divisor perturb $perturb
>
> tc filter add dev $devDL protocol all prio 1 parent 11: handle
> 11 flow hash keys dst divisor $divisor baseclass 1:11
> tc filter add dev $devDL protocol all prio 2 parent 12: handle
> 12 flow hash keys dst divisor $divisor baseclass 1:12
>
> # Add filters for DL device
> if [ -s $filePrivate ]; then
> for ip in `grep -v "#" $filePrivate`; do
> if [ `expr index $ip :` = 0 ]; then
> tc filter add dev $devDL protocol all prio 1 parent 1:
> u32 match ip dst $ip flowid 1:11
> else
> echo $ip
> tc filter add dev $devDL protocol all prio 1 parent 1:
> u32 match ip6 dst $ip flowid 1:11
> fi
> done
> fi
>
> tc filter add dev $devDL protocol all prio 2 parent 1: u32
> match ip dst 0/0 flowid 1:12
> tc filter add dev $devDL protocol all prio 2 parent 1: u32
> match ip6 dst ::/0 flowid 1:12
>
> # Add discuiplines for UL device
> tc qdisc add dev $devUL root handle 2: htb default 22
>
> # Add classes for UL device
> tc class add dev $devUL parent 2: classid 2:2 htb rate $bwUL
> ceil $bwUL quantum $quantum
> tc class add dev $devUL parent 2:2 classid 2:21 htb prio 1
> rate $bwPrivateUL ceil $bwUL quantum $quantum
> tc class add dev $devUL parent 2:2 classid 2:22 htb prio 2
> rate $bwPublicUL ceil $bwPublicUL quantum $quantum
>
> tc qdisc add dev $devUL parent 2:21 handle 21: sfq divisor
> $divisor perturb $perturb
> tc qdisc add dev $devUL parent 2:22 handle 22: sfq divisor
> $divisor perturb $perturb
>
> tc filter add dev $devUL protocol all prio 1 parent 21: handle
> 21 flow hash keys src divisor $divisor baseclass 2:21
> tc filter add dev $devUL protocol all prio 2 parent 22: handle
> 22 flow hash keys src divisor $divisor baseclass 2:22
>
> # Add filters for UL device
> if [ -s $filePrivate ]; then
> for ip in `grep -v "#" $filePrivate`; do
> if [ `expr index $ip :` = 0 ]; then
> tc filter add dev $devUL protocol all prio 1 parent 2:
> u32 match ip src $ip flowid 2:21
> else
> tc filter add dev $devUL protocol all prio 1 parent 2:
> u32 match ip6 src $ip flowid 2:21
> fi
> done
> fi
>
> tc filter add dev $devUL protocol all prio 2 parent 2: u32
> match ip src 0/0 flowid 2:22
> tc filter add dev $devUL protocol all prio 2 parent 2: u32
> match ip6 src ::/0 flowid 2:22
>
> # Add mirred redirect discuiplines for UL device
> tc qdisc add dev $devDL ingress
> tc filter add dev $devDL parent ffff: protocol all u32 match
> u32 0 0 action mirred egress redirect dev $devUL
>
> log_end_msg 0
> ;;
>
> stop)
> log_daemon_msg "Stopping trafficshaper" "ok"
>
> # Delete discuiplines for DL and UL devices
> delete_qdisc
>
> log_end_msg 0
> ;;
>
> restart|force-reload)
> $0 stop
> $0 start
> ;;
>
> *)
> echo "Usage: trafficshaper [start|stop|restart|force-reload]" >&2
> exit 3
> ;;
> esac
>
> :
>
> And there is tc show output:
>
> # tc -s qdisc show dev eth0
>
> qdisc htb 1: root refcnt 6 r2q 10 default 12 direct_packets_stat 5
> direct_qlen 1000 Sent 147698795 bytes 958679 pkt (dropped 0,
> overlimits 43066 requeues 148) backlog 0b 0p requeues 148 qdisc sfq
> 11: parent 1:11 limit 127p quantum 1514b depth 127 divisor 2048
> perturb 10sec Sent 81156975 bytes 527521 pkt (dropped 0, overlimits 0
> requeues 0) backlog 0b 0p requeues 0 qdisc sfq 12: parent 1:12 limit
> 127p quantum 1514b depth 127 divisor 2048 perturb 10sec Sent 66541452
> bytes 431152 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p
> requeues 0 qdisc ingress ffff: parent ffff:fff1 ---------------- Sent
> 2333918666 bytes 1999165 pkt (dropped 421, overlimits 0 requeues 0)
> backlog 0b 0p requeues 0
>
> # tc -s class show dev eth0
>
> class htb 1:11 parent 1:1 leaf 11: prio 1 rate 30000Kbit ceil
> 60000Kbit burst 1593b cburst 1590b Sent 82530637 bytes 547960 pkt
> (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p
> requeues 0
> lended: 521119 borrowed: 5867 giants: 0
> tokens: 6097 ctokens: 3048
>
> class htb 1:1 root rate 60000Kbit ceil 60000Kbit burst 1590b cburst
> 1590b Sent 150027823 bytes 987451 pkt (dropped 0, overlimits 0
> requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0
> lended: 5867 borrowed: 0 giants: 0
> tokens: 3215 ctokens: 3215
>
> class htb 1:12 parent 1:1 leaf 12: prio 2 rate 30000Kbit ceil
> 30000Kbit burst 1593b cburst 1593b Sent 67497186 bytes 439491 pkt
> (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p
> requeues 0
> lended: 437399 borrowed: 0 giants: 0
> tokens: 6431 ctokens: 6431
>
> Is my script correct or I'm something missing?
>
> Thank's.
>
> --
> To unsubscribe from this list: send the line "unsubscribe lartc" in
> the body of a message to majordomo@vger.kernel.org More majordomo info
> at http://vger.kernel.org/majordomo-info.html
--
Dave Täht
thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
--
To unsubscribe from this list: send the line "unsubscribe lartc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: Qdisc HTB root overlimits and requeues
2015-01-25 20:27 Qdisc HTB root overlimits and requeues Дмитрий Шикуть
2015-01-25 21:48 ` Dave Taht
2015-01-26 5:59 ` Dzmitry Shykuts
@ 2015-01-26 6:41 ` Dzmitry Shykuts
2 siblings, 0 replies; 4+ messages in thread
From: Dzmitry Shykuts @ 2015-01-26 6:41 UTC (permalink / raw)
To: lartc
Now have such a tc stat:
#tc -s qdisc show dev eth0
qdisc htb 1: root refcnt 6 r2q 10 default 12 direct_packets_stat 95 direct_qlen 1000
Sent 1391798728 bytes 1862214 pkt (dropped 37906, overlimits 2006475 requeues 122)
backlog 0b 0p requeues 122
qdisc sfq 11: parent 1:11 limit 127p quantum 1514b depth 127 divisor 2048 perturb 10sec
Sent 905146766 bytes 842124 pkt (dropped 37656, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 12: parent 1:12 limit 127p quantum 1514b depth 127 divisor 2048 perturb 10sec
Sent 486520788 bytes 1019985 pkt (dropped 223, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc ingress ffff: parent ffff:fff1 ----------------
Sent 1735656945 bytes 2071052 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
#tc -s class show dev eth0
class htb 1:11 parent 1:1 leaf 11: prio 1 rate 30000Kbit ceil 60000Kbit burst 1593b cburst 1590b
Sent 923690013 bytes 879301 pkt (dropped 25090, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 570597 borrowed: 284812 giants: 0
tokens: 6164 ctokens: 3082
class htb 1:1 root rate 60000Kbit ceil 60000Kbit burst 1590b cburst 1590b
Sent 1473354142 bytes 2046438 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 284812 borrowed: 0 giants: 0
tokens: 3082 ctokens: 3082
class htb 1:12 parent 1:1 leaf 12: prio 2 rate 30000Kbit ceil 30000Kbit burst 1593b cburst 1593b
Sent 549664129 bytes 1167137 pkt (dropped 248, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 1007042 borrowed: 0 giants: 0
tokens: 6397 ctokens: 6397
Traffic shaping as needed (equally between clients).
Is my stat normal? Nothing wrong with it?
P.S. Thanks' for your help and attention.
-----Original Message-----
From: Dave Taht [mailto:dave.taht@gmail.com]
Sent: Monday, January 26, 2015 9:04 AM
To: Dzmitry Shykuts
Subject: Re: Qdisc HTB root overlimits and requeues
fq_codel has been available as a module since 3.6. If it isn't compiled in in your distro, I would be sad.
The rest of the script looked fine, but I like my sqm-scripts.
On Sun, Jan 25, 2015 at 9:59 PM, Dzmitry Shykuts <dshykuts@brest.beltelecom.by> wrote:
> Have a 3.13.0-44-generic kernel only, so no fq_codel as module.
>
> And what about script structure (handlers, classids)? Is it correct?
>
> -----Original Message-----
> From: lartc-owner@vger.kernel.org [mailto:lartc-owner@vger.kernel.org]
> On Behalf Of Dave Taht
> Sent: Monday, January 26, 2015 12:48 AM
> To: Дмитрий Шикуть
> Cc: lartc@vger.kernel.org
> Subject: Re: Qdisc HTB root overlimits and requeues
>
> give fq_codel a shot instead of sfq.
>
> see also the sqm-scripts.
>
> requeues means that you hit a limit and had to wait for the next scheduled round.
>
>
> On Sun, Jan 25, 2015 at 12:27 PM, Дмитрий Шикуть <dshykuts@brest.beltelecom.by> wrote:
>> Hello!
>>
>> I created script for traffic shaping. After run, there are many
>> overlimits and requeues in tc stat for htb root discipline. Is this
>> normal or something going wrong?
>>
>> Here is script:
>>
>> #!/bin/sh
>> ### BEGIN INIT INFO
>> # Provides: trafficshaper
>> # Required-Start: $network $syslog
>> # Required-Stop: $network $syslog
>> # Should-Start:
>> # Should-Stop:
>> # Default-Start: 2 3 4 5
>> # Default-Stop: 0 1 6
>> # Short-Description: Start and stop trafficshaper # Description:
>> trafficshaper ### END INIT INFO
>>
>> PATH=/sbin:/bin:/usr/bin
>>
>> . /lib/init/vars.sh
>> . /lib/lsb/init-functions
>>
>> # Reads config file (will override defaults above) [ -r
>> /etc/default/trafficshaper ] && . /etc/default/trafficshaper
>>
>> # Devices calculation
>> devDL=$dev
>> devUL=ifb0
>>
>> # Flush discuiplines for DL and UL devices delete_qdisc () {
>> tc qdisc del dev $devDL ingress 2>/dev/null
>> tc qdisc del dev $devUL root 2>/dev/null
>> tc qdisc del dev $devDL root 2>/dev/null }
>>
>> case "$1" in
>> start|"")
>> log_daemon_msg "Starting trafficshaper" "ok"
>>
>> # Global constants
>> divisor 48
>> quantum\x1514
>> perturb\x10
>>
>> reNum="\([0-9]*\)[a-zA-Z]*"
>> reStr="[0-9]*\([a-zA-Z]*\)"
>>
>> # Bandwidth calculation
>> bwPrivateDL=`expr \( $bwDL : $reNum \) / 2``expr $bwDL : $reStr`
>> bwPublicDL=$bwPrivateDL
>>
>> bwPrivateUL=`expr \( $bwUL : $reNum \) / 2``expr $bwUL : $reStr`
>> bwPublicUL=$bwPrivateUL
>>
>> # Delete discuiplines for DL and UL devices
>> delete_qdisc
>>
>> ifconfig $devUL txqueuelen 1000 2>/dev/null
>> ifconfig $devUL up 2>/dev/null
>>
>> # Add discuiplines for DL device
>> tc qdisc add dev $devDL root handle 1: htb default 12
>>
>> # Add classes for DL device
>> tc class add dev $devDL parent 1: classid 1:1 htb rate $bwDL
>> ceil $bwDL quantum $quantum
>> tc class add dev $devDL parent 1:1 classid 1:11 htb prio 1
>> rate $bwPrivateDL ceil $bwDL quantum $quantum
>> tc class add dev $devDL parent 1:1 classid 1:12 htb prio 2
>> rate $bwPublicDL ceil $bwPublicDL quantum $quantum
>>
>> tc qdisc add dev $devDL parent 1:11 handle 11: sfq divisor
>> $divisor perturb $perturb
>> tc qdisc add dev $devDL parent 1:12 handle 12: sfq divisor
>> $divisor perturb $perturb
>>
>> tc filter add dev $devDL protocol all prio 1 parent 11:
>> handle
>> 11 flow hash keys dst divisor $divisor baseclass 1:11
>> tc filter add dev $devDL protocol all prio 2 parent 12:
>> handle
>> 12 flow hash keys dst divisor $divisor baseclass 1:12
>>
>> # Add filters for DL device
>> if [ -s $filePrivate ]; then
>> for ip in `grep -v "#" $filePrivate`; do
>> if [ `expr index $ip :` = 0 ]; then
>> tc filter add dev $devDL protocol all prio 1 parent 1:
>> u32 match ip dst $ip flowid 1:11
>> else
>> echo $ip
>> tc filter add dev $devDL protocol all prio 1 parent 1:
>> u32 match ip6 dst $ip flowid 1:11
>> fi
>> done
>> fi
>>
>> tc filter add dev $devDL protocol all prio 2 parent 1: u32
>> match ip dst 0/0 flowid 1:12
>> tc filter add dev $devDL protocol all prio 2 parent 1: u32
>> match ip6 dst ::/0 flowid 1:12
>>
>> # Add discuiplines for UL device
>> tc qdisc add dev $devUL root handle 2: htb default 22
>>
>> # Add classes for UL device
>> tc class add dev $devUL parent 2: classid 2:2 htb rate $bwUL
>> ceil $bwUL quantum $quantum
>> tc class add dev $devUL parent 2:2 classid 2:21 htb prio 1
>> rate $bwPrivateUL ceil $bwUL quantum $quantum
>> tc class add dev $devUL parent 2:2 classid 2:22 htb prio 2
>> rate $bwPublicUL ceil $bwPublicUL quantum $quantum
>>
>> tc qdisc add dev $devUL parent 2:21 handle 21: sfq divisor
>> $divisor perturb $perturb
>> tc qdisc add dev $devUL parent 2:22 handle 22: sfq divisor
>> $divisor perturb $perturb
>>
>> tc filter add dev $devUL protocol all prio 1 parent 21:
>> handle
>> 21 flow hash keys src divisor $divisor baseclass 2:21
>> tc filter add dev $devUL protocol all prio 2 parent 22:
>> handle
>> 22 flow hash keys src divisor $divisor baseclass 2:22
>>
>> # Add filters for UL device
>> if [ -s $filePrivate ]; then
>> for ip in `grep -v "#" $filePrivate`; do
>> if [ `expr index $ip :` = 0 ]; then
>> tc filter add dev $devUL protocol all prio 1 parent 2:
>> u32 match ip src $ip flowid 2:21
>> else
>> tc filter add dev $devUL protocol all prio 1 parent 2:
>> u32 match ip6 src $ip flowid 2:21
>> fi
>> done
>> fi
>>
>> tc filter add dev $devUL protocol all prio 2 parent 2: u32
>> match ip src 0/0 flowid 2:22
>> tc filter add dev $devUL protocol all prio 2 parent 2: u32
>> match ip6 src ::/0 flowid 2:22
>>
>> # Add mirred redirect discuiplines for UL device
>> tc qdisc add dev $devDL ingress
>> tc filter add dev $devDL parent ffff: protocol all u32 match
>> u32 0 0 action mirred egress redirect dev $devUL
>>
>> log_end_msg 0
>> ;;
>>
>> stop)
>> log_daemon_msg "Stopping trafficshaper" "ok"
>>
>> # Delete discuiplines for DL and UL devices
>> delete_qdisc
>>
>> log_end_msg 0
>> ;;
>>
>> restart|force-reload)
>> $0 stop
>> $0 start
>> ;;
>>
>> *)
>> echo "Usage: trafficshaper [start|stop|restart|force-reload]" >&2
>> exit 3
>> ;;
>> esac
>>
>> :
>>
>> And there is tc show output:
>>
>> # tc -s qdisc show dev eth0
>>
>> qdisc htb 1: root refcnt 6 r2q 10 default 12 direct_packets_stat 5
>> direct_qlen 1000 Sent 147698795 bytes 958679 pkt (dropped 0,
>> overlimits 43066 requeues 148) backlog 0b 0p requeues 148 qdisc sfq
>> 11: parent 1:11 limit 127p quantum 1514b depth 127 divisor 2048
>> perturb 10sec Sent 81156975 bytes 527521 pkt (dropped 0, overlimits
>> 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 12: parent 1:12
>> limit 127p quantum 1514b depth 127 divisor 2048 perturb 10sec Sent
>> 66541452 bytes 431152 pkt (dropped 0, overlimits 0 requeues 0)
>> backlog 0b 0p requeues 0 qdisc ingress ffff: parent ffff:fff1
>> ---------------- Sent
>> 2333918666 bytes 1999165 pkt (dropped 421, overlimits 0 requeues 0)
>> backlog 0b 0p requeues 0
>>
>> # tc -s class show dev eth0
>>
>> class htb 1:11 parent 1:1 leaf 11: prio 1 rate 30000Kbit ceil
>> 60000Kbit burst 1593b cburst 1590b Sent 82530637 bytes 547960 pkt
>> (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p
>> requeues 0
>> lended: 521119 borrowed: 5867 giants: 0
>> tokens: 6097 ctokens: 3048
>>
>> class htb 1:1 root rate 60000Kbit ceil 60000Kbit burst 1590b cburst
>> 1590b Sent 150027823 bytes 987451 pkt (dropped 0, overlimits 0
>> requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0
>> lended: 5867 borrowed: 0 giants: 0
>> tokens: 3215 ctokens: 3215
>>
>> class htb 1:12 parent 1:1 leaf 12: prio 2 rate 30000Kbit ceil
>> 30000Kbit burst 1593b cburst 1593b Sent 67497186 bytes 439491 pkt
>> (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p
>> requeues 0
>> lended: 437399 borrowed: 0 giants: 0
>> tokens: 6431 ctokens: 6431
>>
>> Is my script correct or I'm something missing?
>>
>> Thank's.
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe lartc" in
>> the body of a message to majordomo@vger.kernel.org More majordomo
>> info at http://vger.kernel.org/majordomo-info.html
>
>
>
> --
> Dave Täht
>
> thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
> --
> To unsubscribe from this list: send the line "unsubscribe lartc" in
> the body of a message to majordomo@vger.kernel.org More majordomo info
> at http://vger.kernel.org/majordomo-info.html
>
--
Dave Täht
thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
^ permalink raw reply [flat|nested] 4+ messages in thread