red_neon Опубликовано 18 сентября, 2013 · Жалоба photon, спасибо, с $o_if все получается хорошо, а с $i_if - нет, если убрать его во всех функциях, то не могут заполниться массивы например, вот здесь: sub u32_load { my ($ip, $cid, $rate); my $ret = E_OK; open my $TCFH, '-|', "$tc -p -iec filter show dev $i_if" or log_croak("unable to open pipe for $tc"); my @tcout = <$TCFH>; close $TCFH or log_carp("unable to close pipe for $tc"); for my $i (0 .. $#tcout) { ... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 18 сентября, 2013 · Жалоба В таких местах надо заменить переменную $i_if на $o_if. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
red_neon Опубликовано 23 сентября, 2013 · Жалоба В таких местах надо заменить переменную $i_if на $o_if. Спасибо, всё получилось! Надеемся увидеть такую опцию в новых версиях вашего скрипта, очень полезно в случае с несколькими бгп-сессиями. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 24 сентября, 2013 · Жалоба Да, стоит сделать такую опцию, это довольно просто реализуется. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
T_Igor Опубликовано 13 ноября, 2013 · Жалоба добрый день! на унстабле ядре не хочет работать uname -a Linux shaper 3.9-0.bpo.1-amd64 #1 SMP Debian 3.9.6-1~bpo70+1 x86_64 GNU/Linux а также на 10 и 11 при выводе команды: sbin/tc qdisc add dev eth3 root handle 1: htb ругается - RTNETLINK answers: File exists хотя если набрать sbin/tc qdisc add dev eth3 root handle 1: htb default 9 все хорошо проходит Куда копать, что ему нехватает? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 13 ноября, 2013 (изменено) · Жалоба Странно, никогда такого не видел. Сейчас тестирую новый релиз, надо будет его с новыми ядрами проверить. Если там поломали HTB, так что без default-класса не работает, то просто добавьте "... default fffe" в соответствующих местах. Там все равно весь нефильтрованный трафик блокируется по умолчанию. Изменено 13 ноября, 2013 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
T_Igor Опубликовано 13 ноября, 2013 · Жалоба А если пользуюсь "патчем от Петрович-2012", то как поправить default-класс, чтобы не блокировался? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 13 ноября, 2013 (изменено) · Жалоба --- a/sc Thu Jan 10 00:13:36 2013 -0800 +++ b/sc Wed Nov 13 18:16:47 2013 +0100 @@ -1285,7 +1285,7 @@ { my ($dev, $match, $offset) = @_; - $TC->("qdisc add dev $dev root handle 1: htb"); + $TC->("qdisc add dev $dev root handle 1: htb default fffe"); $TC->("filter add dev $dev parent 1:0 protocol ip pref $pref_hash u32"); foreach my $net (sort {$filter_nets{$a}{'ht'} <=> $filter_nets{$b}{'ht'}} keys %filter_nets) { @@ -1345,10 +1345,10 @@ } # block all other traffic - $TC->( - "filter add dev $dev parent 1:0 protocol ip pref $pref_default ". - 'u32 match u32 0 0 at 0 police mtu 1 action drop' - ); +# $TC->( +# "filter add dev $dev parent 1:0 protocol ip pref $pref_default ". +# 'u32 match u32 0 0 at 0 police mtu 1 action drop' +# ); return $?; } Изменено 13 ноября, 2013 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
T_Igor Опубликовано 13 ноября, 2013 · Жалоба Спасибо! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
krasniy_krd Опубликовано 25 декабря, 2013 · Жалоба Подскажите как сделать так, чтобы трафик с некоторых ip(ip сайтов) на этом шейпере не шейпился, а проходил мимо? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 26 декабря, 2013 (изменено) · Жалоба Подскажите как сделать так, чтобы трафик с некоторых ip(ip сайтов) на этом шейпере не шейпился, а проходил мимо? Речь идет о сайтах из внешней сети? Если да, то нужно дописать необходимые правила tc: создать отдельный класс обслуживания и заворачивать туда трафик с помощью u32 filters. Значение prio для этих фильтров должно быть ниже, чем для остальных правил. Изменено 26 декабря, 2013 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
krasniy_krd Опубликовано 27 декабря, 2013 · Жалоба photon, да, именно сайты из внешней сети. Был бы крайне вам благодарен за пример. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 28 декабря, 2013 · Жалоба Сейчас проверил работу sc в одном из новых дистрибутивов. В версии iproute2-ss130716 не работает чтение правил через пайп, которое используется для ускорения загрузки правил (echo ... | tc -batch). Если отключить эту фичу или делать чтение правил через временный файл (tc -b filename), то все работает. Это какой-то лютый идиотизм, я собираюсь писать Хэммингеру bugreport. У кого-то еще есть похожие проблемы? UPDATE: Глянул в исходники. Все работает нормально, если поставить тире после -batch: echo ... | tc -batch -. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 29 декабря, 2013 (изменено) · Жалоба Сделал релиз 1.4.0, в котором присутствует возможность пропускать трафик мимо шейпера до указанных сетей и исправление указанной выше проблемы. Изменено 29 декабря, 2013 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dee Опубликовано 21 января, 2014 · Жалоба ещё раз пропишу благодарность за этот полезный скрипт !!! Не бросайте это благое дело :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
leo_lee Опубликовано 27 января, 2014 · Жалоба Спасибо за полезный скрипт Выкладываю реализацию с использованием MARK IP rate mark sc dbadd 10.10.10 2048 1235 работает на sqllite на mysql не пробовал но думаю труда не составит до мускул зделать :) sc.txt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 27 января, 2014 (изменено) · Жалоба Спасибо. Однако, если вместо MARK использовать номера классов tc, то можно обойтись вообще без iptables. Есть следующий вопрос: кто-нибудь пользуется классификацией трафика с помощью flow (filter_method = flow)? Я собираюсь выкинуть этот метод, потому что он тянет за собой зависимости от iptables и ipset, и обладает меньшими возможностями, чем хэш-фильтры u32. Единственное его достоинство -- простота правил, один хэш на все 2^16 адресов. работает на sqllite на mysql не пробовал но думаю труда не составит до мускул зделать :) Конечно. Perl DBI реализует некий абстрактный интерфейс к БД и может работать даже поверх CSV-файлов. Я уже как-то пробовал. Изменено 27 января, 2014 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex39x Опубликовано 27 января, 2014 · Жалоба кто-нибудь пользуется классификацией трафика с помощью flow мы нет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nshut Опубликовано 30 января, 2014 · Жалоба День добрый. Ответьте на ламерский вопрос. Сколько пользователей данный калиссификатор способен классифицировать? интересует практика: гигабит в сек на вход, количество пользователей (ip=скорость) и производительность. Прочитал тему, порыл интернет, увы кроме фраз, тысячи и теория ничего не нашел. Либо тыкните пальцем в куда надо :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dyr Опубликовано 30 января, 2014 (изменено) · Жалоба photon, а можно ли вас про-donate'ить, чтобы вы реализовали возможность шейпить по /29 на пользователя, причём адреса могут быть из нескольких сетей /16 (10.5[2-4].0.0/16)? Или это архитектурно невозможно? Сейчас на FreeBSD, надоело бегать с бубном вокруг и шаманить для получения нормальной сетевой производительности с NAT и shaper. Изменено 30 января, 2014 пользователем Dyr Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 30 января, 2014 · Жалоба photon, а можно ли вас про-donate'ить, чтобы вы реализовали возможность шейпить по /29 на пользователя, причём адреса могут быть из нескольких сетей /16 (10.5[2-4].0.0/16)? Или это архитектурно невозможно? Сейчас на FreeBSD, надоело бегать с бубном вокруг и шаманить для получения нормальной сетевой производительности с NAT и shaper. Это возможно, в базе нужно будет хранить две таблицы в формате (classid, rate) и (network, classid). Донэйтить через PayPal можно тут: https://sourceforge.net/p/sc-tool/donate/ . Пишите в личку, если нужно обсудить детали. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 30 января, 2014 · Жалоба В следующем релизе удалю фильтр flow и сделаю поддержку дисциплины hfsc. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
leo_lee Опубликовано 31 января, 2014 · Жалоба Спасибо. Однако, если вместо MARK использовать номера классов tc, то можно обойтись вообще без iptables. Есть следующий вопрос: кто-нибудь пользуется классификацией трафика с помощью flow (filter_method = flow)? Я собираюсь выкинуть этот метод, потому что он тянет за собой зависимости от iptables и ipset, и обладает меньшими возможностями, чем хэш-фильтры u32. Единственное его достоинство -- простота правил, один хэш на все 2^16 адресов. работает на sqllite на mysql не пробовал но думаю труда не составит до мускул зделать :) Конечно. Perl DBI реализует некий абстрактный интерфейс к БД и может работать даже поверх CSV-файлов. Я уже как-то пробовал. Ну данная реализация с марк для пирингов и NAT В нашем случае это NAT + Пирин на неораниченой скорости т.к. проблема с IP v4 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 2 февраля, 2014 (изменено) · Жалоба Вышла версия 1.5 с поддержкой HFSC в качестве корневой дисциплины. Ходят слухи, что HFSC якобы оптимальнее, чем HTB. Так ли это на самом деле? Изменено 2 февраля, 2014 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
engdev Опубликовано 11 февраля, 2014 · Жалоба Может вопрос глупый, скажите будет ли работать шейпер если в качестве интерфейса к примеру, указывать вланы входного eth1.1000 и выходного eth1.1001 ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...