LINUX.ORG.RU
ФорумAdmin

шейпер tc, фильтр для Ifb


0

1

debian 7, шлюз, интернет eth0, локалка eth2
делаю шейпер на eth2, исходящий, входящий заворачиваю на ifb0 и на нем делаю ограничения.

#!/bin/bash

TC="/sbin/tc"

########## Исходящий в локалку
echo Создаем корневую дисциплину на интерфейсе eth2
$TC qdisc del dev eth2 root
$TC qdisc add dev eth2 root handle 1: htb default 800

echo  Создаем общий для клиентов класс
$TC class add dev eth2 parent 1: classid 1:1 htb rate 30Mbit ceil 30Mbit

echo Создаем корневой класс клиента
$TC class add dev eth2 parent 1:1 classid 1:10 htb rate 5Mbit ceil 30Mbit
$TC class add dev eth2 parent 1:1 classid 1:20 htb rate 5Mbit ceil 30Mbit

echo Создаем дисциплины шейпирования для конечных классов
$TC qdisc add dev eth2 parent 1:10 handle 10: sfq perturb 5
$TC qdisc add dev eth2 parent 1:20 handle 20: sfq perturb 5

echo Создаем фильтры
$TC filter add dev eth2 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.8/32 flowid 1:10
$TC filter add dev eth2 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.0.7/32 flowid 1:20

echo Дефолтный класс 800
$TC class add dev eth2 parent 1:1 classid 1:800 htb rate 1Mbit ceil 30Mbit prio 3
$TC qdisc add dev eth2 parent 1:800 handle 800: sfq perturb 5


########## Исходящий в инет
echo Подключаем модуль ядра для ifb
modprobe ifb

echo Поднимаем интерфейсы ifb
ip link set dev ifb0 up

echo Создаем корневую дисциплину для входящего трафика на локальных интерфейсах 
tc qdisc add dev eth2 ingress

echo Теперь непосредственно заворачиваем трафик в ifb0
tc filter add dev eth2 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

echo Создаем корневую дисциплину на интерфейсе ifb0
$TC qdisc del dev ifb0 root
$TC qdisc add dev ifb0 root handle 1: htb default 800

echo  Создаем общий для клиентов класс
$TC class add dev ifb0 parent 1: classid 1:1 htb rate 30Mbit ceil 30Mbit

echo Создаем корневой класс клиента
$TC class add dev ifb0 parent 1:1 classid 1:10 htb rate 5Mbit ceil 30Mbit
$TC class add dev ifb0 parent 1:1 classid 1:20 htb rate 5Mbit ceil 30Mbit

echo Создаем дисциплины шейпирования для конечных классов
$TC qdisc add dev ifb0 parent 1:10 handle 10: sfq perturb 5
$TC qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 5

echo Создаем фильтры
$TC filter add dev ifb0 parent 1:0 protocol ip prio 2 u32 match ip src 192.168.0.8/32 flowid 1:10
$TC filter add dev ifb0 parent 1:0 protocol ip prio 2 u32 match ip src 192.168.0.7/32 flowid 1:20

echo Дефолтный класс 800
$TC class add dev ifb0 parent 1:1 classid 1:800 htb rate 1Mbit ceil 30Mbit prio 3
$TC qdisc add dev ifb0 parent 1:800 handle 800: sfq perturb 5

на eth2 работает нормально - в дефолтный класс ничего не попадает, а вот на ifb0 в дефолтном классе есть трафик. Откуда он там берется? как посмотреть тип трафика в этом класе?

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.