stasn1 Опубликовано 30 декабря, 2015 · Жалоба Чисто в теории, имхо, рулеж на базе меток - более верный и гибкий вариант. Я уже писал выше про подобный вариант. Сейчас рулю у себя по метке skb->priority, но можно и fwmark как доп.вариант. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
aabc Опубликовано 31 декабря, 2015 · Жалоба А интересно, модуль можно с nDPI скрестить и приобрести зимовать траф по классам по абененту? А как TBF (фильтр без очереди) может так делать? ("Так" - разные классы трафика в пределах одной полосы к одному абоненту.) Единственное, в голову приходит идея с различными значениями burst для разных классов трафика. Где для более приоритетного трафика burst выше. Тогда в случае забивания канала он будет проходит в первую очередь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
bomberman Опубликовано 31 декабря, 2015 (изменено) · Жалоба Я уже писал выше про подобный вариант. Сейчас рулю у себя по метке skb->priority, но можно и fwmark как доп.вариант. Тоже считаю необходимым разбор по метками или приоритету, как дополнительную полезную плюшку, не портящую основной идеи модуля - "простой полисинг". Единственное, в голову приходит идея с различными значениями burst для разных классов трафика. Где для более приоритетного трафика burst выше. Тогда в случае забивания канала он будет проходит в первую очередь. Некий метод вытеснения выходит. У кого больше, то выше прыгнет, и быстрее пройдет. Так выходит? Изменено 31 декабря, 2015 пользователем bomberman Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
aabc Опубликовано 31 декабря, 2015 · Жалоба Единственное, в голову приходит идея с различными значениями burst для разных классов трафика. Где для более приоритетного трафика burst выше. Тогда в случае забивания канала он будет проходит в первую очередь. Некий метод вытеснения выходит. У кого больше, то выше прыгнет, и быстрее пройдет. Так выходит? В полисинге ничего быстрее не ходит так как нет буфера, это просто фильтр. В TBF размер ведёрка определяется значением burst, ведёрко постоянно опустошается со скоростью rate, если в ведёрке есть место для нового пакета - то он проходит фильтр (и его размер добавляется в ведёрко), если нет, то пакет отбрасывается. Соответственно, если для каких-то пакетов burst выше, то они будут проходить, когда пакеты с меньшим burst уже отбрасываются. Rate при этом будет в среднем одинаковый, кроме времени пока действует burst. Плохо в этой схеме то, что мне не известно, чтоб кто-то такое практически использовал и, самое главное, не понятно какие значения ставить, чтоб получить то, что обычно хотят получить QOS. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
bomberman Опубликовано 31 декабря, 2015 · Жалоба Плохо в этой схеме то, что мне не известно, чтоб кто-то такое практически использовал Тоже не встречал. Но попробовать думаю стоит. Хотя бы из интереса. самое главное, не понятно какие значения ставить, чтоб получить то, что обычно хотят получить QOS. Ну раз QOS, то наверное будет логично, для начала попробовать задать общую полосу, и потом вес для какждого типа. Но сумма всех весов в пределах общего канала выделенного для IP или (если несколько IP)подписчика. Т.е. я пока это вижу как параметры напрмер: IP,<speed - общая скорость для подписчика> <num_q - количество классов> <clss_id=1:speed(или вес в процентах от общей скорости)>...<clss_id=N:speed(или вес в процентах от общей скорости)> Это первое что пришло на ум. А там быть может что ещё интереснее посоветуется. Ну и + идентификация трафика/клиента не по IP или сегменту, а ещё и по внутренней метке, или по значению в поле QOS. Но в последнем случае общей скоростью как вариант - скорость самого интерфейса. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
gsmail Опубликовано 6 января, 2016 · Жалоба В качестве идей. PPS нужен, что-то в виде echo +10.0.0.1 1000000 187500 pps> /proc/net/ipt_ratelimit/name вместо pps подставлять цифру нужну, например 10000 если дальше пойдти, можно рассмотреть еще указание портов, чтобы отдельные правила в iptables не добавлять, на каждый порт или порты свой лимит для указанного IP. Все это пригодится для фильтрования ддос-атак. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
boco Опубликовано 14 января, 2016 · Жалоба скажите, почему может быть такое: $ cat /proc/net/ipt_ratelimit/upload ... cat: /proc/net/ipt_ratelimit/upload: Operation not permitted $ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
wed Опубликовано 14 января, 2016 · Жалоба Так пишет же - нет прав. сделайте sudo cat /proc/net/ipt_ratelimit/upload Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
boco Опубликовано 14 января, 2016 · Жалоба Так пишет же - нет прав. сделайте sudo cat /proc/net/ipt_ratelimit/upload =) нет, дело не в этом. права там не нужны. я просто скипнул вывод cat'а до сообщения об ошибке. boco@ipn2:~$ cat /proc/net/ipt_ratelimit/download |wc -l1845 boco@ipn2:~$ cat /proc/net/ipt_ratelimit/upload |wc -l cat: /proc/net/ipt_ratelimit/upload: Operation not permitted 1839 upd. все-таки придется proc_buf[] увеличить, "echo +192.168.253.0/24 10000000" разворачивается в 4001 байт =) вопрос пока снимаю. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sacrament Опубликовано 19 февраля, 2016 · Жалоба Подскажите реально этим модулем нарезать скорости на разные зоны (локалка, мир, etc)? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
crank Опубликовано 20 февраля, 2016 · Жалоба К сожалению в списках ratelimit нельзя указывать целые подсети, только конкретные IP адреса. Так что врят ли получится. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 20 февраля, 2016 · Жалоба А есть ли смысл мне с 1G трафика уходить с TC? тарифы 10-100мбит Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sol Опубликовано 20 февраля, 2016 · Жалоба Подскажите реально этим модулем нарезать скорости на разные зоны (локалка, мир, etc)? Скорее можно, чем нет. iptables -N LOCAL iptables -N WORLD iptables -A FORWARD -d xx.xx.xx.xx -j LOCAL iptables -A FORWARD -d yy.yy.yy.yy -j LOCAL iptables -A FORWARD -d zz.zz.zz.zz -j WORLD iptables -A LOCAL -m ratelimit --ratelimit-set local-out --ratelimit-mode src -j DROP iptables -A LOCAL -m ratelimit --ratelimit-set local-in --ratelimit-mode dst -j DROP iptables -A WORLD -m ratelimit --ratelimit-set world-out --ratelimit-mode src -j DROP iptables -A WORLD -m ratelimit --ratelimit-set world-in --ratelimit-mode dst -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-out --ratelimit-mode src -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-in --ratelimit-mode dst -j DROP echo +10.0.0.1 10000000 > /proc/net/ipt_ratelimit/local-in echo +10.0.0.1 10000000 > /proc/net/ipt_ratelimit/local-out echo +10.0.0.1 1000000 > /proc/net/ipt_ratelimit/world-in echo +10.0.0.1 1000000 > /proc/net/ipt_ratelimit/world-out echo +10.0.0.1 512000 > /proc/net/ipt_ratelimit/etc-in echo +10.0.0.1 512000 > /proc/net/ipt_ratelimit/etc-out Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sacrament Опубликовано 22 февраля, 2016 · Жалоба Скорее можно, чем нет. iptables -N LOCAL iptables -N WORLD iptables -A FORWARD -d xx.xx.xx.xx -j LOCAL iptables -A FORWARD -d yy.yy.yy.yy -j LOCAL iptables -A FORWARD -d zz.zz.zz.zz -j WORLD iptables -A LOCAL -m ratelimit --ratelimit-set local-out --ratelimit-mode src -j DROP iptables -A LOCAL -m ratelimit --ratelimit-set local-in --ratelimit-mode dst -j DROP iptables -A WORLD -m ratelimit --ratelimit-set world-out --ratelimit-mode src -j DROP iptables -A WORLD -m ratelimit --ratelimit-set world-in --ratelimit-mode dst -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-out --ratelimit-mode src -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-in --ratelimit-mode dst -j DROP echo +10.0.0.1 10000000 > /proc/net/ipt_ratelimit/local-in echo +10.0.0.1 10000000 > /proc/net/ipt_ratelimit/local-out echo +10.0.0.1 1000000 > /proc/net/ipt_ratelimit/world-in echo +10.0.0.1 1000000 > /proc/net/ipt_ratelimit/world-out echo +10.0.0.1 512000 > /proc/net/ipt_ratelimit/etc-in echo +10.0.0.1 512000 > /proc/net/ipt_ratelimit/etc-out Я думал в этом направлении, но проблема в том, что на разных тарифах есть разные скорости на локалку и etc Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 22 февраля, 2016 · Жалоба ну так для каждого адреса на каждое направление же рулятся скорости раздельно... в чем проблема? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sol Опубликовано 22 февраля, 2016 · Жалоба Скорее можно, чем нет. iptables -N LOCAL iptables -N WORLD iptables -A FORWARD -d xx.xx.xx.xx -j LOCAL iptables -A FORWARD -d yy.yy.yy.yy -j LOCAL iptables -A FORWARD -d zz.zz.zz.zz -j WORLD iptables -A LOCAL -m ratelimit --ratelimit-set local-out --ratelimit-mode src -j DROP iptables -A LOCAL -m ratelimit --ratelimit-set local-in --ratelimit-mode dst -j DROP iptables -A WORLD -m ratelimit --ratelimit-set world-out --ratelimit-mode src -j DROP iptables -A WORLD -m ratelimit --ratelimit-set world-in --ratelimit-mode dst -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-out --ratelimit-mode src -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-in --ratelimit-mode dst -j DROP echo +10.0.0.1 10000000 > /proc/net/ipt_ratelimit/local-in echo +10.0.0.1 10000000 > /proc/net/ipt_ratelimit/local-out echo +10.0.0.1 1000000 > /proc/net/ipt_ratelimit/world-in echo +10.0.0.1 1000000 > /proc/net/ipt_ratelimit/world-out echo +10.0.0.1 512000 > /proc/net/ipt_ratelimit/etc-in echo +10.0.0.1 512000 > /proc/net/ipt_ratelimit/etc-out Я думал в этом направлении, но проблема в том, что на разных тарифах есть разные скорости на локалку и etc И в чём проблема? В моём примере 10 мбит на локалку, 1 мбит на мир и 512к на ETC Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sacrament Опубликовано 22 февраля, 2016 · Жалоба Проблема в том, что у абонента А скорость на локалку будет 10 мбит, а у абонента Б будет на локалку 20 мбит. Т.е. на одну и ту же зону разные скорости. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sol Опубликовано 22 февраля, 2016 · Жалоба #!/bin/sh set_speed() { ABONENT=$1 LOCAL=$2 WORLD=$3 ETC=$4 echo +${ABONENT} $LOCAL > /proc/net/ipt_ratelimit/local-in echo +${ABONENT} $LOCAL > /proc/net/ipt_ratelimit/local-out echo +${ABONENT} $WORLD > /proc/net/ipt_ratelimit/world-in echo +${ABONENT} $WORLD > /proc/net/ipt_ratelimit/world-out echo +${ABONENT} $ETC > /proc/net/ipt_ratelimit/etc-in echo +${ABONENT} $ETC > /proc/net/ipt_ratelimit/etc-out } set_speed('10.0.0.1', 10000000, 1000000, 512000) set_speed('10.0.0.2', 20000000, 2000000, 1000000) За фигурные скобки в ${ABONENT} не уверен, что они нужны. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sacrament Опубликовано 22 февраля, 2016 · Жалоба sol Интересно. Спасибо за участие. Попробую потестить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sol Опубликовано 22 февраля, 2016 · Жалоба Попробую потестить. Чего тестить-то? Дело верное! Сразу в продакшн. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 22 февраля, 2016 · Жалоба Проблема в том, что у абонента А скорость на локалку будет 10 мбит, а у абонента Б будет на локалку 20 мбит. и что? в чем проблема указать для одного ип 10 мбит, а для второго - 20? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sacrament Опубликовано 23 февраля, 2016 · Жалоба NiTr0 и что? в чем проблема указать для одного ип 10 мбит, а для второго - 20? Да прошу прощения. Сразу не понял как модуль работает. Сейчас разобрался, но почему то вот это правило iptables -A FORWARD -m ratelimit --ratelimit-set etc-out --ratelimit-mode src -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-in --ratelimit-mode dst -j DROP режет мне скорость на все, а те зоны что указал ранее и куда скорость должны быть выше игнорируются. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sol Опубликовано 23 февраля, 2016 · Жалоба режет мне скорость на все, а те зоны что указал ранее и куда скорость должны быть выше игнорируются. 1. Перепишите по-русски. 2. iptables -n -v -L в студию. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 23 февраля, 2016 · Жалоба NiTr0 и что? в чем проблема указать для одного ип 10 мбит, а для второго - 20? Да прошу прощения. Сразу не понял как модуль работает. Сейчас разобрался, но почему то вот это правило iptables -A FORWARD -m ratelimit --ratelimit-set etc-out --ratelimit-mode src -j DROP iptables -A FORWARD -m ratelimit --ratelimit-set etc-in --ratelimit-mode dst -j DROP режет мне скорость на все, а те зоны что указал ранее и куда скорость должны быть выше игнорируются. Вам надо вынести эти правила из FORWARD в отдельную цепочку, как показано выше в примере с LOCAL и WORLD. Иначе не понятно, как вы зоны делите. Ну и некрасиво все правила запихивать в FORWARD. Все же фаервол не линейный, как во фре, а "процедурный". Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 23 февраля, 2016 · Жалоба Просто приведу пример, как сделать можно. iptables -N ratelim iptables -N ratelocal iptables -N rateworld iptables -N rateetc iptables -A FORWARD -j ratelim iptables -A ratelim -d xx.xx.xx.xx -j ratelocal iptables -A ratelim -d xx.xx.xx.xx -j RETURN iptables -A ratelim -d yy.yy.yy.yy -j ratelocal iptables -A ratelim -d yy.yy.yy.yy -j RETURN iptables -A ratelim -d zz.zz.zz.zz -j rateworld iptables -A ratelim -d zz.zz.zz.zz -j RETURN iptables -A ratelim -j rateetc iptables -A ratelocal -m ratelimit --ratelimit-set local-out --ratelimit-mode src -j DROP iptables -A ratelocal -m ratelimit --ratelimit-set local-in --ratelimit-mode dst -j DROP iptables -A rateworld -m ratelimit --ratelimit-set world-out --ratelimit-mode src -j DROP iptables -A rateworld -m ratelimit --ratelimit-set world-in --ratelimit-mode dst -j DROP iptables -A rateetc-m ratelimit --ratelimit-set etc-out --ratelimit-mode src -j DROP iptables -A rateetc -m ratelimit --ratelimit-set etc-in --ratelimit-mode dst -j DROP А еще лучше сделать селектор чрез ipset, если там больше, нежели 1 адрес. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...