Beginner Posted September 22, 2009 Posted September 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 пакеты в сторону клиента не особо улучшают комфортность его работы. Вот прошу совета более опытных товарищей, стоит что-то брать за основу (и где ее брать) или лучше ваять все от начала и до конца самому? Вставить ник Quote
SokolovS Posted September 22, 2009 Posted September 22, 2009 Шейпер самому под свои нужды. Следует понимать что вешая шейпер на ppp интерфейс, невозможно управлять QoS в общем канале, хотя это может быть возложено на другое железо. Вставить ник Quote
littlesavage Posted September 22, 2009 Posted September 22, 2009 Пустые ack пакеты, обычно, в другую сторону приоритезируют :) http://www.benzedrine.cx/ackpri.html Может здесь считают что перегрузка входящего канала абонента может влиять на его исходящую скорость? Вставить ник Quote
photon Posted September 22, 2009 Posted September 22, 2009 Для ограничения входящего трафика достаточно дисциплин tbf на виртуальных интерфейсах. Для исходящего нужна дисциплина htb и, в зависимости от задач, какой-то быстрый классификатор: flow или u32 с hashing filters. Приоритезацию различных типов трафика (ACK-пакетов и прочего) лучше делать на отдельной машине или не делать вообще. Вставить ник Quote
a0d75 Posted September 23, 2009 Posted September 23, 2009 (edited) Мой упрощенный вариант: 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 Edited September 23, 2009 by a0d75 Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.