Перейти к содержимому
Калькуляторы

Шейпер с указанием максимальной полосы аплинка

Всем привет. Используем тазик на линуксе. Канал от аплинка - гигабит. Дальше расширять пока не можем - требуется замена оборудования у аплинка, ждем. Появилось желание указать шейперу максимальную скорость аплинка. Авторизация - PPPoE. Сейчас скорость нарезаю таким скриптом в ip-up

 

/sbin/tc qdisc del dev $1 root > /dev/null
/sbin/tc qdisc del dev $1 ingress > /dev/null

##### speed server->client
/sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 68
/sbin/tc class add dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}kbit burst 51k cburst 2k
/sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate ${UPSPEED}kbit burst 51k cburst 2k prio 2
/sbin/tc class add dev $1 parent 1:1 classid 1:20 htb rate ${UPSPEED}kbit burst 51k cburst 2k prio 3
/sbin/tc class add dev $1 parent 1:1 classid 1:30 htb rate 100Mbit ceil 100Mbit burst 51k cburst 2k prio 1    ##IPTV###
/sbin/tc qdisc add dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 1500
/sbin/tc qdisc add dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 1500
/sbin/tc qdisc add dev $1 parent 1:30 handle 30: sfq perturb 10 quantum 1500    ##IPTV###
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 4 u32 match ip protocol 6 0xff match ip src 10.11.11.1 match ip sport 8888 0xffff flowid 1:30 ##IPTV###
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10

##### speed client->server
/sbin/tc qdisc add dev $1 handle ffff: ingress
/sbin/tc filter add dev $1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNSPEED}kbit burst 1024kb drop flowid :1

Как настроить желаемое? Или где об этом почитать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

/sbin/tc class add dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}kbit burst 51k cburst 2k

Плохо помню tc, но вроде здесь и задаётся через $UPSPEED скорость аплинка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Т.е, указываю тут 1000Mbit открытым текстом и все работает?

 

нельзя указывать 1Гбит. Попадёте на шейпер аплинка или упрётесь в скорость порта, будут дропы.

Нужно указывать на 10% меньше - 900Мбит ну или 950. Смотреть как работает.

 

У нас такая же проблема с аплинком. Канал 1,1Гбит обрезан на 1Гбит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Т.е, указываю тут 1000Mbit открытым текстом и все работает?

Вот мой кусок скрипта для 2G канала, насколько помню обязательно нужно указывать rate/ceil.

qdisc add dev bond0.2 root handle 2 htb default d
class add dev bond0.2 root  htb rate 1900Mbit ceil 1900Mbit  quantum 65535

class add dev bond0.2 parent 2:0 classid 2:d htb rate 1900Mbit ceil 1900Mbit  quantum 65535
qdisc add dev bond0.2 parent 2:d handle d pfifo  limit 10000

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И ещё есть проблема, если порт гигабитный, то гигабита не добьётесь. У меня было где-то 950 мбит. Тут уже на десятку надо переходить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Утилизировать могу 987 мегабит. Указал 950, буду наблюдать. Спасибо.

Указал там же, в ip-up. Это корректно?

Изменено пользователем myth

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поднимаю свою тему вновь. Переросли 1г, теперь нас полисят и как-то все это перестало работать. Сейчас канал 1,2гигабита. Пробовал уменьшать rate вплоть до 100 мегабит, все равно стучимся в полисер вышестоящего оператора. При нехватке входящего канала скорости не уменьшаются пропорционально, а кто как может, тот так и качает. Что изменить?

 

Текущий вариант скрипта ip-up. Ограничиваются скорости на ppp интерфейсах.

/sbin/tc qdisc del dev $1 root > /dev/null
/sbin/tc qdisc del dev $1 ingress > /dev/null
fi
##### speed server->client
/sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 10
/sbin/tc class add dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}kbit quantum 65535
if [ "$UPSPEED" -ge "6000" ] ;
then
/sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate 2Mbit ceil ${UPSPEED}kbit burst 60k cburst 200k prio 1
/sbin/tc class add dev $1 parent 1:1 classid 1:20 htb rate 2Mbit ceil ${UPSPEED}kbit burst 60k cburst 200k prio 2
/sbin/tc qdisc add dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 1600
/sbin/tc qdisc add dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 1600
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flo$
#######Мелкие тарифы до 6000Kbit/sec#########################################
else
/sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate ${UPSPEED}kbit burst 20k prio 1
/sbin/tc class add dev $1 parent 1:1 classid 1:20 htb rate ${UPSPEED}kbit burst 20k prio 2
/sbin/tc qdisc add dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 1600
/sbin/tc qdisc add dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 1600
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 1 0xff flowid 1:10
/sbin/tc filter add dev $1 parent 1: protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flo$
fi

Это при старте вешается на внутренний интерфейс

/sbin/tc qdisc del dev eth1 root
/sbin/tc qdisc add dev eth1 root handle 2 htb default d
/sbin/tc class add dev eth1 root  htb rate 1080Mbit ceil 1080Mbit  quantum 65535
/sbin/tc class add dev eth1 parent 2:0 classid 2:d htb rate 1080Mbit ceil 1080Mbit  quantum 65535
/sbin/tc qdisc add dev eth1 parent 2:d handle d pfifo  limit 10000

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решил собирать нормальное дерево. Подключил ifb0, направил туда трафик с аплинка. Возникают вопросы о хэш фильтрах. И вот тут мои познания резко заканчиваются. Как работать с хэшами? Или, может быть, скриптом кто-то поделится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

15 часов назад, myth сказал:

Решил собирать нормальное дерево. Подключил ifb0, направил туда трафик с аплинка. Возникают вопросы о хэш фильтрах. И вот тут мои познания резко заканчиваются. Как работать с хэшами? Или, может быть, скриптом кто-то поделится?

https://sourceforge.net/p/leaf/bering-uclibc/ci/master/tree/repo/hash-shaper/

использование https://sourceforge.net/p/leaf/bering-uclibc/ci/master/tree/repo/ppp-hsh/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

меняю в скрипте src на dst и получаю дерево для входящего трафика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подправил немного скрипт. Классы создались, скорость согласно классам нарезается. Но не могу заставить работать set speed. Правила применяются, но, такое ощущение, что куда-то не туда...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.