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

Шейпер на РРР-интерфейс. Сомнения

Извиняюсь, если тема избита и неинтересна.

Решил написать шейпер для терминатора. Естественно первым делом пошел смотреть что используют другие - изобретать велосипед хлопотно.

Нашел скрипты от биллингов Abills и BGBilling. Вот смотрю на них и немного удивляюсь.

Скрипты совпадают на 100% (по крайней мере те, что нашел я). Оба биллинга от одной и той же конторы?

Сам скрипт тоже немного странный. Например кусок

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

/sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate ${UPSPEED}kbit burst 4k prio 1

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

Родительский класс и 2 подкласса имеют одинаковый rate, хотя по идее сумма подклассов должна быть ровна классу.

Еще одна строка

/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 u160x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10

То, что она везде написана с ошибкой - полбеды. Я не понимаю зачем она вообще здесь - пустые ack пакеты в сторону клиента не особо улучшают комфортность его работы.

 

Вот прошу совета более опытных товарищей, стоит что-то брать за основу (и где ее брать) или лучше ваять все от начала и до конца самому?

 

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


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

Шейпер самому под свои нужды. Следует понимать что вешая шейпер на ppp интерфейс, невозможно управлять QoS в общем канале, хотя это может быть возложено на другое железо.

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


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

Пустые ack пакеты, обычно, в другую сторону приоритезируют :) http://www.benzedrine.cx/ackpri.html

 

Может здесь считают что перегрузка входящего канала абонента может влиять на его исходящую скорость?

 

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


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

Для ограничения входящего трафика достаточно дисциплин tbf на виртуальных интерфейсах. Для исходящего нужна дисциплина htb и, в зависимости от задач, какой-то быстрый классификатор: flow или u32 с hashing filters. Приоритезацию различных типов трафика (ACK-пакетов и прочего) лучше делать на отдельной машине или не делать вообще.

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


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

Мой упрощенный вариант:

 

cat /etc/ppp/ip-up
#!/bin/sh

# This script is run by pppd after the link is established.
# It executes all the scripts available in /etc/ppp/ip-up.d directory,
# with the following parameters:
# $1 = interface name (e.g. ppp0)
# $2 = tty device
# $3 = speed
# $4 = local IP address
# $5 = remote IP address
# $6 = ipparam (user specified parameter, see man pppd)

if [ -f /var/run/radattr.$1 ]; then
    SPEED=`/usr/bin/awk '/PPPD-Upstream-Speed-Limit/ {print $2}' /var/run/radattr.$1`
    FILTER=`/usr/bin/awk '/Filter-Id/ {print $2}' /var/run/radattr.$1`

    if [ "$SPEED" != "0" ]; then
        /sbin/tc qdisc add dev $1 root tbf rate ${SPEED}kbit burst 102400 latency 50
        /sbin/tc qdisc add dev $1 ingress handle ffff:
        /sbin/tc filter add dev $1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${SPEED}kbit burst 102400
    fi

    if [ "$FILTER" != "" ]; then
        /sbin/ipset -A ppp $5 >/dev/null 2>&1
    fi
fi

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

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


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

Join the conversation

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

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

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

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

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

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

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