Beginner Опубликовано 22 сентября, 2009 · Жалоба Извиняюсь, если тема избита и неинтересна. Решил написать шейпер для терминатора. Естественно первым делом пошел смотреть что используют другие - изобретать велосипед хлопотно. Нашел скрипты от биллингов 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 пакеты в сторону клиента не особо улучшают комфортность его работы. Вот прошу совета более опытных товарищей, стоит что-то брать за основу (и где ее брать) или лучше ваять все от начала и до конца самому? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 22 сентября, 2009 · Жалоба Шейпер самому под свои нужды. Следует понимать что вешая шейпер на ppp интерфейс, невозможно управлять QoS в общем канале, хотя это может быть возложено на другое железо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
littlesavage Опубликовано 22 сентября, 2009 · Жалоба Пустые ack пакеты, обычно, в другую сторону приоритезируют :) http://www.benzedrine.cx/ackpri.html Может здесь считают что перегрузка входящего канала абонента может влиять на его исходящую скорость? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 22 сентября, 2009 · Жалоба Для ограничения входящего трафика достаточно дисциплин tbf на виртуальных интерфейсах. Для исходящего нужна дисциплина htb и, в зависимости от задач, какой-то быстрый классификатор: flow или u32 с hashing filters. Приоритезацию различных типов трафика (ACK-пакетов и прочего) лучше делать на отдельной машине или не делать вообще. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a0d75 Опубликовано 23 сентября, 2009 (изменено) · Жалоба Мой упрощенный вариант: 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 Изменено 23 сентября, 2009 пользователем a0d75 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...