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

cac2s

Пользователи
  • Публикации

    24
  • Зарегистрирован

  • Посещение

О cac2s

  • Звание
    Абитуриент
    Абитуриент

Контакты

  • ICQ
    Array
  1. дело в том, что я администрирую небольшой офис, так что хеш-таблицы вряд-ли понадобятся. покрайней мере в ближайшей время...
  2. нет. не нужно. достаточно того, что он может разгонятся.спасибо Вам большое! ну, ты это... если что - заходи (с) ;) UPD: к ста, при 1:5 rate 80% (1:10..1:90 ceil 80% соответсвенно) жмёт немного лучше. пожалуй, останусь на нём.
  3. уррррааааа! дядя Фёдорррр пррриеееехааал!!! it's works! в общем: 1:2 rate 85% ceil 100% 1:10 rate 85% ceil 85% 1:20 rate 1kbit ceil 85% при такой схеме всё намного! лучше. дальше. применяю такой подход к боевой схеме: +------+ | root | +------+ | | +---------------------------------+ +--| class 1:1 (нетранзитный трафик) | | +---------------------------------+ | | +---------------------------------+ +--| class 1:5 (транзитный трафик) | rate 85% ceil 100% +---------------------------------+ | +------+ |--| 1:10 | rate 5% ceil 85% (icmp, dns) | +------+ | +------+ |--| 1:20 | rate 15% ceil 85% (icecast) | +------+ | +------+ |--| 1:30 | rate 10% ceil 85% (ssh, rdp) | +------+ | +------+ |--| 1:40 | rate 20% ceil 85% (http<512Кбит) | +------+ | +------+ |--| 1:50 | rate 25% ceil 85% (mail, jabber, http>512Кбит ) | +------+ | +------+ +--| 1:90 | rate 1kbit ceil 85% (bulk) +------+ итог - при неоходимости 1:90 скукоживается до нескольких килобит
  4. прошу прощения, но голова уже квадратная. можно подробнее? например, есть 1:10 prio 4 для веба и 1:20 prio 7 для торрентов. куда лепить 3-й класс, и какие давать rate и ceil всем трём (можно в процентах. думаю, смысл будет уловлен)
  5. дык, а что после этого? поставить что-то качать - не проблема. докачаться ведь может :)UPD: запустил торрент-качалку
  6. так пробовал ужеладно. для пущей уверенности сделаю ещё раз: #!/bin/bash IPT="/sbin/iptables" TC="/sbin/tc" IP="/bin/ip" DEV_IN="eth0" # Смотрит в лок. сеть RATE_IN="2500" # Гарантированная 3072КБит $TC qdisc del dev $DEV_IN root >/dev/null 2>&1 $IP link set dev $DEV_IN qlen 32 $TC qdisc add dev $DEV_IN root handle 1: htb # Транзитный трафик $TC class add dev $DEV_IN parent 1: classid 1:5 htb rate ${RATE_IN}kbit $TC class add dev $DEV_IN parent 1:5 classid 1:10 htb rate $[75[quot]$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 0 # 75% $TC class add dev $DEV_IN parent 1:5 classid 1:20 htb rate $[25[/quot]$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 1 # 25% $TC qdisc add dev $DEV_IN parent 1:10 handle 10: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:20 handle 20: sfq perturb 10 $IPT -t mangle -D POSTROUTING -o $DEV_IN -j SHAPER-IN >/dev/null 2>&1 $IPT -t mangle -F SHAPER-IN >/dev/null 2>&1 $IPT -t mangle -X SHAPER-IN >/dev/null 2>&1 $IPT -t mangle -N SHAPER-IN $IPT -t mangle -I POSTROUTING -o $DEV_IN -j SHAPER-IN $IPT -t mangle -A SHAPER-IN -d 192.168.0.100 -j CLASSIFY --set-class 1:10 $IPT -t mangle -A SHAPER-IN -d 192.168.0.100 -j RETURN $IPT -t mangle -A SHAPER-IN -d 192.168.0.248 -j CLASSIFY --set-class 1:20 $IPT -t mangle -A SHAPER-IN -d 192.168.0.248 -j RETURN echo "Inbound shaping added to $DEV_IN. Rate: ${RATE_IN}Kbit/sec." проверка показывает правильную работу: 100-й ip одной закачкой/соединением "ест" 75%, 248-й ip тремя закачками - 25%
  7. и так, схема: +------+ | root | +------+ | | +---------------------------------+ +--| class 1:1 (нетранзитный трафик) | | +---------------------------------+ | | +---------------------------------+ +--| class 1:5 (транзитный трафик) | +---------------------------------+ | +------+ |--| 1:10 | rate 5% ceil 25% (icmp, dns) | +------+ | +------+ |--| 1:20 | rate 10% ceil 50% (icecast) | +------+ | +------+ |--| 1:30 | rate 10% ceil 50% (ssh, rdp) | +------+ | +------+ |--| 1:40 | rate 10% ceil 30% (mail) | +------+ | +------+ |--| 1:50 | rate 40% ceil 100% (web) | +------+ | +------+ |--| 1:60 | rate 20% ceil 90% | +------+ | +------+ +--| 1:90 | rate 5% ceil 75% (bulk) +------+ скрипт: #!/bin/bash IPT="/sbin/iptables" TC="/sbin/tc" IP="/bin/ip" DEV_IN="eth0" # Смотрит в лок. сеть RATE_IN="2500" # Гарантированная 3072КБит RATE_LOCAL="1gbit" IP_LOCAL="192.168.0.254" $TC qdisc del dev $DEV_IN root >/dev/null 2>&1 $IP link set dev $DEV_IN qlen 32 $TC qdisc add dev $DEV_IN root handle 1: htb # Нетранзитный трафик $TC class add dev $DEV_IN parent 1: classid 1:1 htb rate $RATE_LOCAL quantum 60000 prio 7 $TC qdisc add dev $DEV_IN parent 1:1 pfifo $TC filter add dev $DEV_IN parent 1: prio 1 protocol ip u32 match ip src $IP_LOCAL flowid 1:1 # Транзитный трафик $TC class add dev $DEV_IN parent 1: classid 1:5 htb rate ${RATE_IN}kbit $TC class add dev $DEV_IN parent 1:5 classid 1:10 htb rate $[5[quot]$RATE_IN/100]kbit ceil $[25[/quot]$RATE_IN/100]kbit prio 0 $TC class add dev $DEV_IN parent 1:5 classid 1:20 htb rate $[10[quot]$RATE_IN/100]kbit ceil $[50[/quot]$RATE_IN/100]kbit prio 1 $TC class add dev $DEV_IN parent 1:5 classid 1:30 htb rate $[10[quot]$RATE_IN/100]kbit ceil $[50[/quot]$RATE_IN/100]kbit prio 2 $TC class add dev $DEV_IN parent 1:5 classid 1:40 htb rate $[10[quot]$RATE_IN/100]kbit ceil $[30[/quot]$RATE_IN/100]kbit prio 3 $TC class add dev $DEV_IN parent 1:5 classid 1:50 htb rate $[40[quot]$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 4 $TC class add dev $DEV_IN parent 1:5 classid 1:60 htb rate $[20[/quot]$RATE_IN/100]kbit ceil $[90[quot]$RATE_IN/100]kbit prio 5 $TC class add dev $DEV_IN parent 1:5 classid 1:90 htb rate $[5[/quot]$RATE_IN/100]kbit ceil $[75[quot]$RATE_IN/100]kbit prio 6 $TC qdisc add dev $DEV_IN parent 1:10 handle 10: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:20 handle 20: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:30 handle 30: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:40 handle 40: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:50 handle 50: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:60 handle 60: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:90 handle 90: sfq perturb 10 $TC filter add dev $DEV_IN parent 10: protocol ip handle 110 flow hash keys dst divisor 512 $TC filter add dev $DEV_IN parent 20: protocol ip handle 120 flow hash keys dst divisor 512 $TC filter add dev $DEV_IN parent 30: protocol ip handle 130 flow hash keys dst divisor 512 $TC filter add dev $DEV_IN parent 40: protocol ip handle 140 flow hash keys dst divisor 512 $TC filter add dev $DEV_IN parent 50: protocol ip handle 150 flow hash keys dst divisor 512 $TC filter add dev $DEV_IN parent 60: protocol ip handle 160 flow hash keys dst divisor 512 $TC filter add dev $DEV_IN parent 90: protocol ip handle 190 flow hash keys dst divisor 512 $IPT -t mangle -D POSTROUTING -o $DEV_IN -j SHAPER-IN >/dev/null 2>&1 $IPT -t mangle -F SHAPER-IN >/dev/null 2>&1 $IPT -t mangle -X SHAPER-IN >/dev/null 2>&1 $IPT -t mangle -N SHAPER-IN $IPT -t mangle -I POSTROUTING -o $DEV_IN -j SHAPER-IN # icmp, dns $IPT -t mangle -A SHAPER-IN -p icmp -j CLASSIFY --set-class 1:10 $IPT -t mangle -A SHAPER-IN -p udp --sport 53 -j CLASSIFY --set-class 1:10 # icecast $IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 7000,8000 -j CLASSIFY --set-class 1:20 # ssh, rdp $IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 22,3389 -j CLASSIFY --set-class 1:30 # imap, imaps, pop3, pop3s $IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 143,993,110,995 -j CLASSIFY --set-class 1:40 # http, https; ftp(20,21) $IPT -t mangle -A SHAPER-IN -p tcp -m multiport --sports 80,8080,443,20,21,1935 -j CLASSIFY --set-class 1:50 # bulk $IPT -t mangle -A SHAPER-IN -j CLASSIFY --set-class 1:90 echo "Inbound shaping added to $DEV_IN. Rate: ${RATE_IN}Kbit/sec." результат неизменный :-/ при старте торрент-закачки bulk-класс ни как не хочет отдавать "одолженную" ширину. сцу..а :)
  8. выходные же! =) завтра приду на работу, и первым делом переделаю схему с учётом прежних ошибок, оттестирую и отпишу.
  9. © http://lartc.org/howto/lartc.qdisc.filters.html Если я что не дочитал и не так понял - исправте меня :) исправляю: я при классификации пакетов при помощи iptables вместо -j MARK использую -j CLASSIFY, так что необходимость в добавлении фильтров к корневой дисциплине отпадает (см. здесь) а те фильтры, о которых Вы говорите - это гарантия деления ширины между dst, а не src,dst,proto,proto-src,proto-dst (по умолчанию), т.е. каждая краевая дисциплина теперь будет делить свою полосу между ip
  10. да. точно. припоминаю. просто голова уже квадратная, поэтому неудивительно, что ни как не отреагировал на совет. прошу прощения :) приоритеты стали нормальными, НО у 1:2 prio нет! (пробовал менять prio на 1,2,...) - ситуация не поменялась. почему так? это и имел ввиду. т.е. моя ошибка заключалась в использовании prio>7
  11. 1. в общем, отписал письмо автору HTB... бросив небольшой скрипт для примера. если ответит - отпишу2. на opennet.ru один человек натолкнул на правильную идею: выводить tc -d class show dev eth0 после каждого выполнения команды tc class add... скрипт: #!/bin/bash IPT="/sbin/iptables" TC="/sbin/tc" IP="/bin/ip" DEV_IN="eth0" RATE_IN="2750" $TC qdisc del dev $DEV_IN root $IP link set dev $DEV_IN qlen 32 $TC qdisc add dev $DEV_IN root handle 1: htb r2q 3 $TC class add dev $DEV_IN parent 1: classid 1:1 htb rate ${RATE_IN}kbit echo 1:1; $TC -d class show dev eth0; echo $TC class add dev $DEV_IN parent 1:1 classid 1:10 htb rate $[50*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 60000 prio 0 echo 1:10; $TC -d class show dev eth0; echo $TC class add dev $DEV_IN parent 1:10 classid 1:11 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 30000 prio 0 echo 1:11; $TC -d class show dev eth0; echo $TC class add dev $DEV_IN parent 1:10 classid 1:12 htb rate $[25*$RATE_IN/100]kbit ceil $[50*$RATE_IN/100]kbit quantum 30000 prio 1 echo 1:12; $TC -d class show dev eth0; echo $TC class add dev $DEV_IN parent 1:1 classid 1:20 htb rate $[50*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 25000 prio 1 echo 1:20; $TC -d class show dev eth0; echo $TC class add dev $DEV_IN parent 1:20 classid 1:21 htb rate $[25*$RATE_IN/100]kbit ceil ${RATE_IN}kbit quantum 25000 prio 0 echo 1:21; $TC -d class show dev eth0 выхлоп: 1:1 class htb 1:1 root prio 0 quantum 114583 rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 1:10 class htb 1:10 parent 1:1 prio 0 quantum 60000 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7 1:11 class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6 class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7 1:12 class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7 class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6 class htb 1:12 parent 1:10 prio 1 quantum 30000 rate 687000bit ceil 1375Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 1:20 class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7 class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6 class htb 1:20 parent 1:1 prio 1 quantum 25000 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:12 parent 1:10 prio 1 quantum 30000 rate 687000bit ceil 1375Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 1:21 class htb 1:11 parent 1:10 prio 0 quantum 30000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:1 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7 class htb 1:10 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6 class htb 1:20 parent 1:1 rate 1375Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 6 class htb 1:21 parent 1:20 prio 0 quantum 25000 rate 687000bit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:12 parent 1:10 prio 1 quantum 30000 rate 687000bit ceil 1375Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 имеет место закономерность: quantum и prio класса удаляются/пропадают_из_выхлопа при добавлении к этому классу дочернего класса вот такая вот петрушка... уж и не знаю: так_и_должно_быть/баг/что-то_упущенно...
  12. выставил - ничего не поменялось :( #!/bin/bash IPT="/sbin/iptables" TC="/sbin/tc" IP="/bin/ip" DEV_IN="eth0" RATE_IN="2750" RATE_LOCAL="1gbit" IP_LOCAL="192.168.0.100" $TC qdisc del dev $DEV_IN root $IP link set dev $DEV_IN qlen 32 $TC qdisc add dev $DEV_IN root handle 1: htb r2q 3 # Транзитный трафик $TC class add dev $DEV_IN parent 1: classid 1:2 htb rate ${RATE_IN}kbit quantum 60000 prio 0 # high-prio $TC class add dev $DEV_IN parent 1:2 classid 1:5 htb rate $[95*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 0 # low-prio $TC class add dev $DEV_IN parent 1:2 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil $[75*$RATE_IN/100]kbit prio 1 # Нетранзитный трафик $TC class add dev $DEV_IN parent 1: classid 1:99 htb rate $RATE_LOCAL quantum 60000 prio 1 выхлоп # tc -d class show dev eth0: class htb 1:99 root prio 1 quantum 60000 rate 1000Mbit ceil 1000Mbit burst 1375b/8 mpu 0b overhead 0b cburst 1375b/8 mpu 0b overhead 0b level 0 class htb 1:90 parent 1:2 prio 1 quantum 5708 rate 137000bit ceil 2062Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 class htb 1:2 root rate 2750Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 7 class htb 1:5 parent 1:2 prio 0 quantum 108833 rate 2612Kbit ceil 2750Kbit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0 мало того, в выхлопе у 1:2 нет явно прописанного quantum. баг? UPD: немного подправил и упростил (удалил классы 1:10-1:90)
  13. так, решил бороться с проблемами по порядку, поэтому на повестке дня - проблема с prio. скопировал скрипт себе на ноут (чтобы разобраться с prio, а на боевом сервере буду отлаживать) и упростил скрипт практически до нЕльзя + поменял prio (проблема с семёрками заключалась в том, чта на prio выделен только один бит со всеми вытекающими): #!/bin/bash IPT="/sbin/iptables" TC="/sbin/tc" IP="/bin/ip" DEV_IN="eth0" RATE_IN="2750" RATE_LOCAL="1gbit" IP_LOCAL="192.168.0.100" $TC qdisc del dev $DEV_IN root $IP link set dev $DEV_IN qlen 32 $TC qdisc add dev $DEV_IN root handle 1: htb r2q 3 # Главный класс $TC class add dev $DEV_IN parent 1: classid 1:1 htb rate $RATE_LOCAL # Транзитный трафик $TC class add dev $DEV_IN parent 1:1 classid 1:2 htb rate ${RATE_IN}kbit prio 0 # high-prio $TC class add dev $DEV_IN parent 1:2 classid 1:5 htb rate $[95*$RATE_IN/100]kbit ceil ${RATE_IN}kbit prio 0 # low-prio $TC class add dev $DEV_IN parent 1:2 classid 1:90 htb rate $[5*$RATE_IN/100]kbit ceil $[75*$RATE_IN/100]kbit prio 1 # Нетранзитный трафик $TC class add dev $DEV_IN parent 1:1 classid 1:99 htb rate $RATE_LOCAL quantum 60000 prio 1 ситуация изменилась, но все же есть косяки. вывод tc -d class show dev eth0 (упорядочил для более удобного сравнения с добавлением классов в скрипте): приоритеты стали нормальными, НО у 1:2 prio нет! (пробовал менять prio на 1,2,...) - ситуация не поменялась. почему так?