Jump to content
Калькуляторы

[tc htb] Дать разную скорость на разные сети

Доброго дня! Кто как решает задачу нарезки разной скорости абонентам на мир и "пиринговые сети"?

 

Если просто выделить сети в обход шейпера, то

 

iptables -t mangle -A PREROUTING -s a.b.c.d/xx -j MARK --set-mark 110

tc filter add dev eth0 parent 1: prio 1 protocol ip fw
tc filter add dev eth0 parent 1: prio 1 protocol ip handle 110 fw flowid 1:110

tc class add dev eth0 parent 1:1 classid 1:110 htb rate 1000mbit ceil 1000mbit burst 4096k 
tc qdisc add dev eth0 parent 1:110 sfw perturb 10

а хеш-таблицы клиентских фильтров идут ниже с prio2.

В этой схеме получаем нешейпируемый трафик на сети, маркированные в prerouting, скорость у клиента на скорости линка.

 

Задача нужно нарезать скорость для определенных сетей с линка конкретного оператора, тоже решается несложно.

eth2 - линк оператора, добавляем к командам выше

 

modprobe ifb numifbs=3
ip link set dev ifb2 up 
ifconfig ifb1 txqueuelen 10000 up 

tc qdisc add dev eth2 ingress
tc filter add dev eth2 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb2

дальше вешаем на ifb2 фильтры \ классы, но с указанием нужной скорости. Получаем раздельную нарезку скорости на мир и заданные сети, с индивидуальной настройкой под абонента.

 

 

А если не знаешь, через какого оператора будет маршрут на нужные сети, как тогда нарезать?

Например, зеркалировать в ifb маркированный трафик, но оно похоже так не умеет.

Share this post


Link to post
Share on other sites

Мир роутится на один интерфейс, IX - на другой, на каждом ифейсе - дерево шейпера.

Share this post


Link to post
Share on other sites

Порекламирую модуль ipt-ratelimit

http://forum.nag.ru/forum/index.php?showtopic=108580

Вашу задачу решает без проблем, делаете две таблицы, одну вешаете на ipset до пиринга, другую просто на 0/0

:)

Share this post


Link to post
Share on other sites

Порекламирую модуль ipt-ratelimit

http://forum.nag.ru/forum/index.php?showtopic=108580

Вашу задачу решает без проблем, делаете две таблицы, одну вешаете на ipset до пиринга, другую просто на 0/0

:)

интересная штука, попробую!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now