qos 实践

iptables -t mangle -A FORWARD -m dscp --dscp 36 -o eth0 -j CLASSIFY --set-class 100:0
iptables -t mangle -A OUTPUT  -m dscp --dscp 36 -o eth0 -j CLASSIFY --set-class 100:0

tc qdisc add dev eth0 root handle 1: nssprio bands 2
tc qdisc add dev eth0 parent 1:1 handle 10: nsstbl rate 10Mbit burst 30K
tc qdisc add dev eth0 parent 1:2 handle 20: nsstbl rate 1000Mbit burst 30K
tc qdisc add dev eth0 parent 10: handle 100: nsspfifo limit 100
tc qdisc add dev eth0 parent 20: handle 200: nsspfifo limit 100 set_default

echo 1>/sys/kernel/debug/ecm/ecm_classifier_default/accel_delay_pkts

#方案1

rmmod ifb && insmod ifb numifbs=5
tc qdisc add dev eth0 handle ffff: ingress
/etc/init.d/qca-nss-mirred start

tc filter add dev eth0 parent ffff: u32 match u32 0 0 action nssmirred redirect dev ifb0 fromdev eth0
ifconfig ifb0 down
ifconfig ifb0 up

tc qdisc add dev ifb0 root handle 1: nsshtb accel_mode 0
tc class add dev ifb0 parent 1: classid 1:1 nsshtb crate 400Mbit cburst 160k

tc class add dev ifb0 parent 1:1 classid 1:2 nsshtb rate 40Mbit burst 10k crate 100Mbit cburst 20k priority 0
tc class add dev ifb0 parent 1:1 classid 1:3 nsshtb rate 40Mbit burst 10k crate 100Mbit cburst 20k priority 0
tc class add dev ifb0 parent 1:1 classid 1:4 nsshtb rate 40Mbit burst 10k crate 100Mbit cburst 20k priority 0

tc qdisc add dev ifb0 parent 1:2 handle 100: nsspfifo limit 10 set_default
tc qdisc add dev ifb0 parent 1:3 handle 200: nsspfifo limit 10
tc qdisc add dev ifb0 parent 1:4 handle 300: nsspfifo limit 10

tc filter add dev ifb0 parent 1: protocol ip u32 match ip src 192.168.1.200 flowid 200:0

#方案2

rmmod ifb && insmod ifb numifbs=5
tc qdisc add dev eth0 handle ffff: ingress
/etc/init.d/qca-nss-mirred start

tc filter add dev eth0 parent ffff: u32 match u32 0 0 action nssmirred redirect dev ifb0 fromdev eth0
ifconfig ifb0 down
ifconfig ifb0 up

tc qdisc add dev ifb0 root handle 1: nsshtb accel_mode 0
tc class add dev ifb0 parent 1: classid 1:1 nsshtb rate 0Mbit burst 100k crate 1000Mbit cburst 100k

tc class add dev ifb0 parent 1:1 classid 1:10 nsshtb rate 10Mbit  crate 20Mbit    burst 100k cburst 100k priority 0
tc class add dev ifb0 parent 1:1 classid 1:20 nsshtb rate 4Mbit  crate 8Mbit    burst 100k cburst 100k priority 1
tc class add dev ifb0 parent 1:1 classid 1:30 nsshtb rate 0Mbit  crate 1000Mbit burst 100k cburst 100k priority 2
tc class add dev ifb0 parent 1:1 classid 1:40 nsshtb rate 0Mbit  crate 1000Mbit burst 100k cburst 100k priority 3

tc qdisc add dev ifb0 parent 1:10 handle 100: nsspfifo limit 100
tc qdisc add dev ifb0 parent 1:20 handle 200: nsspfifo limit 100
tc qdisc add dev ifb0 parent 1:30 handle 300: nsspfifo limit 100 set_default
tc qdisc add dev ifb0 parent 1:40 handle 400: nsspfifo limit 100

tc filter add dev ifb0 parent 1: protocol ip u32 match ip src 192.168.1.200 flowid 400:0

tc filter add dev ifb0 parent 1: protocol ip u32 match u16 0x4590 0xffff at 0 flowid 100:0   # 发送10m
tc filter add dev ifb0 parent 1: protocol ip u32 match u16 0x45b8 0xffff at 0 flowid 400:0   # 发送 150m

tc filter add dev ifb0 parent 1: protocol ip u32 match u16 0x4590 0xffff at 0 flowid 100:0

tc filter add dev ifb0 parent 1: protocol ip u32 match u16 5001 0xffff at 22 flowid 100:0
tc filter add dev ifb0 parent 1: protocol ip u32 match u16 5002 0xffff at 22 flowid 400:0

#方案3

rmmod ifb && insmod ifb numifbs=5
ifconfig ifb0 down
ifconfig ifb0 up
/etc/init.d/qca-nss-mirred start
tc qdisc add dev ath2 handle ffff: ingress
tc filter add dev ath2 parent ffff: u32 match u32 0 0 action nssmirred redirect dev ifb0 fromdev ath2

tc qdisc add dev ifb0 root handle 1: nsshtb accel_mode 0
tc class add dev ifb0 parent 1: classid 1:1 nsshtb rate 0Mbit burst 100k crate 1000Mbit cburst 100k

tc class add dev ifb0 parent 1:1 classid 1:10 nsshtb rate 20Mbit crate 200Mbit  burst 100k cburst 100k priority 0
tc class add dev ifb0 parent 1:1 classid 1:20 nsshtb rate 4Mbit  crate 8Mbit    burst 100k cburst 100k priority 1
tc class add dev ifb0 parent 1:1 classid 1:30 nsshtb rate 0Mbit  crate 1000Mbit burst 100k cburst 100k priority 2
tc class add dev ifb0 parent 1:1 classid 1:40 nsshtb rate 0Mbit  crate 1000Mbit burst 100k cburst 100k priority 3

tc qdisc add dev ifb0 parent 1:10 handle 100: nsspfifo limit 100
tc qdisc add dev ifb0 parent 1:20 handle 200: nsspfifo limit 100
tc qdisc add dev ifb0 parent 1:30 handle 300: nsspfifo limit 100 set_default
tc qdisc add dev ifb0 parent 1:40 handle 400: nsspfifo limit 100

tc filter add dev ifb0 parent 1: protocol ip u32 match ip src 192.168.1.88 flowid 100:0

tc filter add dev ifb0 parent 1: protocol ip u32 match u16 0x4590 0xffff at 0 flowid 100:0   # 发送10m
tc filter add dev ifb0 parent 1: protocol ip u32 match u16 0x45b8 0xffff at 0 flowid 400:0   # 发送 150m