Шейпирование трафика [message #41189] |
Thu, 09 December 2010 16:06  |
cac2s
Messages: 5 Registered: December 2010
|
Junior Member |
|
|
имеется:
* debian squeeze
* eth0 - wan
* eth1 - lan (192.168.1.0/24)
* venet0 - dmz-зона для контейнеров
нужно:
* пакеты, идущие в dmz: rate=max_rate/3, ceil=max_rate
* пакеты, идущие в lan: rate=max_rate*2/3, ceil=max_rate
* исходя из вышеизложенного: каждая из подсетей может "одалживать" другой неиспользуемые ею "ресурсы"
догадки:
поскольку хочется именно динамически шейпить подсети - понимаю, что нужно это делать до eth1|venet0
но:
* перенаправлять пакеты с eth0 на ifb бессмысленно, ибо ifb "лежит" до nat'а, а значит раскидать трафик по классам в зависимости от dst не получится
* можно перенаправить с eth0 на imq, а после раскидывать по классам, но для этого нужно патчить ядро, чего очень не хочется
прошу:
подсказать <другие варианты>/<упущенные мною моменты> для реализации задуманного
попытки:
попробовал входящий venet'а на ifb
$TC qdisc del dev venet0 root >/dev/null 2>&1
$TC qdisc del dev venet0 ingress >/dev/null 2>&1
$TC qdisc del dev ifb0 root >/dev/null 2>&1
$TC qdisc del dev ifb0 ingress >/dev/null 2>&1
$TC qdisc add dev venet0 ingress
$TC filter add dev venet0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
$TC qdisc add dev ifb0 root handle 1: htb default 10
$TC class add dev ifb0 parent 1: classid 1:10 htb rate 800kbit ceil 800kbit
$TC qdisc add dev ifb0 parent 1:10 handle 10: sfq perturb 5
ifconfig ifb0 up
эффекта ноль
|
|
|
Re: Шейпирование трафика [message #41228 is a reply to message #41189] |
Wed, 15 December 2010 11:44  |
cac2s
Messages: 5 Registered: December 2010
|
Junior Member |
|
|
поборол!
#!/bin/bash
IPT="/sbin/iptables"
TC="/sbin/tc"
IP="/bin/ip"
$TC qdisc del dev venet0 root >/dev/null 2>&1
$TC qdisc del dev venet0 ingress >/dev/null 2>&1
$TC qdisc del dev ifb0 root >/dev/null 2>&1
$TC qdisc del dev ifb0 ingress >/dev/null 2>&1
$IP link set ifb0 down
rmmod ifb
modprobe ifb numifbs=1
$IP link set ifb0 up
==========
==========
$TC qdisc add dev venet0 root handle 1: prio
$TC qdisc add dev venet0 ingress
$TC filter add dev venet0 parent 1: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
==========
==========
$TC qdisc add dev ifb0 root handle 1: htb
$TC class add dev ifb0 parent 1: classid 1:10 htb rate 80kbit ceil 80kbit
$TC qdisc add dev ifb0 parent 1:10 handle 10: sfq perturb 5
$TC filter add dev ifb0 parent 1: prio 10 protocol ip u32 match ip dst 192.168.254.254 flowid 1:10
|
|
|