Italiano English
Edit History Actions

SkillSharing2015/tc

Linux Traffic Control SkillSharing 2015

Scaletta

  • concetti fondamentali qdisc, class, drop, filter
  • qdisc contengono classi che contengono qdisc - iniziare e finire sempre con una qdisc
  • si puo' controllare solo il traffico in uscita
  • token bucket

command history

tc qdisc del root dev eth0
ip link sh dev eth0
ip link set qlen 100 dev eth0
ip link sh dev eth0
ip link set qlen 5000 dev eth0
ip link set qlen 50000 dev eth0
ip link set qlen 500000 dev eth0
ip link set qlen 5000000 dev eth0
ip link set qlen 50000000 dev eth0
ip link set qlen 500000000 dev eth0
ip link sh dev eth0
ip link set qlen 5000000000 dev eth0
ip link set qlen 500000000 dev eth0
ip link set qlen 1000
ip link set qlen 1000 dev eth0
tc qdisc show dev wlan0
tc qdisc del dev wlan0
tc qdisc del root dev wlan0
tc qdisc del dev wlan0
tc qdisc show dev wlan0
tc qdisc add dev wlan0 root htb default 1
tc qdisc del root dev wlan0

tc qdisc add dev wlan0 root handle 1: htb default 1
tc class add dev wlan0 parent 1: handle 1:1 htb rate 1Mbit
tc class add dev wlan0 parent 1: classid 1:1 htb rate 1Mbit
tc class add dev wlan0 parent 1: classid 1:2 htb rate 2Mbit
tc class add dev wlan0 parent 1: classid 1:3 htb rate 3Mbit
tc qdisc add dev wlan0 parent 1:1 handle 10: pfifo
tc qdisc add dev wlan0 parent 1:1 handle 20: pfifo
tc qdisc add dev wlan0 parent 1:2 handle 20: pfifo
tc qdisc add dev wlan0 parent 1:3 handle 30: pfifo

iperf -c 10.172.5.26 -t 300
iperf -c 10.172.5.26 -t 300 -i 3

tc filter add dev wlan0 protocol ip prio 1 handle 0x10 fw flowid 1:2 

iptables -t mangle -A POSTROUTING -d 10.172.5.26/32 -j MARK --set-mark 0x10

iperf -c 10.172.5.26 -u -b 3Mbit -t 300 -i 3

iptables -t mangle -L POSTROUTING -n -v
tc -s class sh dev wlan0

tc filter sh dev wlan0
tc filter del dev wlan0 protocol ip pref 1 fw classid 1:2
tc filter add dev wlan0 protocol ip prio 1 handle 0x10 fw flowid 1:3
tc filter show dev wlan0
iperf -c 10.172.5.26 -u -b 8Mbit -t 300 -i 3

simple htb shaper

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 1Mbit ceil 1Mbit
tc qdisc add dev eth0 parent 1:1 handle 2: pfifo limit 100

simple priority scheduler

(non abbiamo fatto in tempo a vederlo)

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: prio bands 3 
tc qdisc add dev eth0 parent 1:1 handle 10: pfifo limit 100
tc qdisc add dev eth0 parent 1:2 handle 20: pfifo limit 100
tc qdisc add dev eth0 parent 1:3 handle 30: pfifo limit 100

tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip tos 8 0xff flowid 1:1
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip tos 160 0xff flowid 1:2
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip tos 48 0xff flowid 1:3