[РЕШЕНО] Приоритеты приложений в выходном траффике

akorop, ты спросил куда копать — тебе ответили — смотри в сторону Traffic Control, управление шириной канала, - вещь довольная сложная и знают ее досканально только сетевики, и помочь здесь ничем не можем, а одноразово разбираться с этим нет никакого желания. Но, с этой штукой можно сделать многое — она позволяет делить на дисциплины и классы — но вот только один нюанс — зачем такие сложности и нужно ли это..........)))...???
Ошибки не исчезают с опытом - они просто умнеют
anode
может через порт, которій использует приложение
Мне нужно дать низкий приоритет конкретно приложению qbittorrent. В его настройках ничего нет про порты для основного траффика, и есть у меня почти полная уверенность, что он выбирает для каждого соединения произвольный свободный порт.
Можно, конечно, создать виртуальную машину, запустить qtbittorrent там, и тогда в хост-компьютере получится нормальная задача приоритетов при роутинге, но мне это всё не настолько критично, чтобы ставить такие костыли.

В общем, складывается впечатление, что нормального решения задача не имеет. Жаль.
Торрент открывает порты в диапазоне выше ... вроде 10000, это раз. Во вторых, смутно помню, что iptables вроде умеет различать трафик по приложению - источнику.
Velesich
Торрент открывает порты в диапазоне выше ... вроде 10000, это раз.
От этого толку мало. Скажем, при отправке почты (seamonkey) порты seamonkey и порты qbittorrent идут вперемешку. А настроек, которые бы позволили ограничить диапазон портов, ни там, ни там я не увидел.
Кстати, а нельзя ли внешними средствами ограничить диапазон портов, доступных приложению? Тогда я мог бы торренту отдать определённый диапазон, у всех остальных этот диапазон забрать, и дальше путь через tc более или менее ясен.
Velesich
Во вторых, смутно помню, что iptables вроде умеет различать трафик по приложению - источнику.
Да, умеет. Например, по pid. Вот только не врубаюсь, что мне это даёт. В iptables я не вижу никаких приоритетов траффика, а в tc, увы, я не вижу ни pid, ни чего-то подобного. То есть сформировался более конкретный вопрос: как увязать распознавание источника в iptables с приоритетами в tc?

vasek
зачем такие сложности и нужно ли это..........)))...???
Не настолько нужно, чтобы преодолевать серьёзные сложности. Собственно, стартовый вопрос именно так и был сформулирован.
akorop
Не настолько нужно, чтобы преодолевать серьёзные сложности. Собственно, стартовый вопрос именно так и был сформулирован.
Сразу скажу, я в этом чайник, но посмотрев в Traffic Control некоторые дитсциплины, обнаружил, например, такую
red — Random Early Detection (RED). Симуляция затора. Отбрасывает пакеты случайным образом при достижении заданной полосы пропускания. Хорошо подходит для ограничения прожорливых в плане трафика приложений.
Это в том смысле, что зря ты ругался на ту статью, просто нужно разбираться - у меня, между прочим, имеется и ее русский перевод.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Хорошо подходит для ограничения прожорливых в плане трафика приложений.
Это в том смысле, что зря ты ругался на ту статью, просто нужно разбираться
Я никоим образом не ругался, просто это о другом (как я понял). Мне не нужно ограничичивать трафик торрента, мне нужно дать торренту низкий приоритет. Если канал свободен - пусть себе забирает его весь. Если 50% занято чем-то другим - пусть занимает 50%. Если отдача ftp-сервера хочет забрать весь канал - пусть торрент постоит в сторонке, пока ftp-сервер не освободит канал.

Подход я, вроде, понял. Нужно торрент запускать от специального пользователя, в iptable опознать его (owner) и пометить (mark) пакет, а в tc пакетам с этой меткой дать низкий приоритет. Осталось правильно сформулировать заклинания и чудо произойдёт :)
А чем собственно вас не устраивает маркирование с помощью iptables пакетов от нужного приложения, а потом управление с помощью tc єтими пакетами по нужным вам правилам? Примеров в руководствах по iptables и LARTC полно, в том числе и пример управления трафиком и по метке пакета, а в первом руководстве пример маркирования по PID процесса.
И сочиняете что-то на основании примеров по своим требованиям. А когда станет совсем плохо, то где-то в сети я видел графическую прогу для генерации правил по управлению трафиком для tc и iptables.
ЗЫ. Качаете. Получаете готовый скрипт. Наслаждаетесь. Кстати генератор разделяет трафик по портам, можете исправить для своих требований по PID.
anode
А чем собственно вас не устраивает маркирование с помощью iptables пакетов от нужного приложения, а потом управление с помощью tc єтими пакетами по нужным вам правилам?
Исключительно моей безграмотностью. Преодолеваю (в необходимом для этой задачи объёме).
anode
Примеров в руководствах по iptables и LARTC полно, в том числе и пример управления трафиком и по метке пакета, а в первом руководстве пример маркирования по PID процесса.
Увы, это типичный для linux world пример: 1) пример ничего не поясняет, а просто переписывает кусочек из списка параметров, я могу написать автоматический генератор таких "примеров"; 2) пример не работает (поскольку нормальная сборка iproute2 не включает --pid-owner, и это естественно).
anode
ЗЫ. Качаете. Получаете готовый скрипт. Наслаждаетесь.
Первые два пункта получились, третий - нет. Везде пишут, что искусственный интерфейс нужен только для управления входящим трафиком, а эта программа нагенерировала мне его для управления исходящим. Не хочу разбираться в том, что мне заведомо не нужно.

Что касается классов и приоритетов, то до меня не доходит, зачем нужно метить пакеты в iptables, а затем в tc классифицировать по меткам, если в iptables можно прямо задать класс (где-то я видел такой совет, без работающего примера, естественно). Воодушевлённый этой идеей, я сделал запуск qbittorrent от юзера 1000 (основная работа у меня не от него), и наваял такой скрипт:
tc qdisc add dev eth1 root handle 1: prio
# Создаются по умолчанию три полосы, то есть классы 1:1, 1:2, 1:3; полоса 1 имеет бОльший приоритет

iptables  -t mangle -A OUTPUT -m owner --uid-owner 1000  -j CLASSIFY --set-class 1:3
# установить низкоприоритетный класс 1:3 для пакетов от uid 1000 (qbittorrent)
Достоинство этого скрипта - что он понятный, недостаток - что не работает, то есть никакого влияния на работу от него я не заметил.

Вообще, ситуация прикольная: моя задача имеет смысл для любого домашнего компьютера, так что, по-хорошему, давным-давно готовое решение с пояснениями должно было лежать на каждом углу, а то и включено в дистрибутивы. Ан нет.
думаю стоит копать в сторону cgroup
https://ru.wikipedia.org/wiki/Cgroups
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
А что если просто понизить приоритет кубитторрента?
www.linux32.ru - новости и статьи о Linux
 
Зарегистрироваться или войдите чтобы оставить сообщение.