LINUX.ORG.RU
ФорумAdmin

TC и шейпинг локалхоста.

 , ,


1

2

Собственно, http://pastebin.com/FU7h5qbi

Я, как положено наивному хомячку локалхоста, был уверен, что все правильно.

Но, rtorrent доказал обратное.
Канал соточка. rtorrent разогнался до предела. И я решил параллельно проверить wget'ом. Оказалось, что wget выдает или 112кб или 300-400кб. Как только режу $DOWNLOAD до 50мбит, то wget сразу резво выжирает до 1.5-3 мбайт/с.

Что я наковырял не так?

★★

Ты таким макаром torrent не отдетектишь. Тебе нужен ipp2p из patch-o-matic. Им детектишь torrent, маркируешь пакеты и соединения, а с помощью tc уже шейпишь на основе меток.

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

-=:=-

Эм...как это не отдетектишь?
Как только я зажимаю DOWNLOAD/10 - кач торрентом сразу падает до 1.2 мбайт/c. Тоесть «$ifb root handle 1: htb default 50» реально кидает траффик в «/tc class add dev $ifb parent 1:1 classid 1:50 htb rat****» класс.

Вопрос в том, как правильно шейпить? Чтобы любой класс с приоритетом Выше ниже лежащего оттягивал на себя максимум, что может.

KosmiK ★★
() автор топика
Ответ на: -=:=- от KosmiK

Хз, когда я пробовал, оно создавало кучу related соединений на других портах, и без ipp2p их детектить было не судьба. Для себя нашёл единственный рабочий вариант с ipp2p.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: -=:=- от KosmiK

А, я понял. Вопрос в том, что ты не хочешь указывать максимальный предел, и спрашиваешь, как сделать без него? Никак. Ты должен знать пропускную способность канала.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

-=:=-

Эм...ну так я знаю. $[$сотка-5мбит].
То есть тупо Резать по живому? Вариантов «отжать по приоритету» не существует?

Шейпер что, не может на автомате уменьшать рейт или цел для менее важных приоритетов???

Ну не может такого быть, наф тогда вообще шейпинг есть?

Или писать свой костыль, который смотрит за всеми классами, и если на вышестоящем активность - то рубить все что ниже...

KosmiK ★★
() автор топика
Ответ на: -=:=- от KosmiK

Шейпер что, не может на автомате уменьшать рейт или цел для менее важных приоритетов???

Не понял, а на основе чего он должен это делать? Пока есть свободные тикеты, пакеты будут передаваться. Тикетов нет - пакеты дропаются. Вся логика основана на известной полосе пропускания канала. Если она указана неверно, логика ломается.

Black_Shadow ★★★★★
()

Не совсем разбирался в вопросе, но, вероятно, проблема в следующем: торрент не фиксирован на определенном порту (исходящий - можно зафиксировать, входящий зависит от сидов). Насколько я вижу, шейпинг настроен по портам, стало быть если рабочий порт не указан в списке, на него распространяется только ограничение всего интерфейса. То есть совет про ipp2p - наиболее подходящее решение.

l0stparadise ★★★★★
()
Ответ на: комментарий от l0stparadise

Да дело в другом. Указана завышенная полоса. Ну либо не все пакеты подпадают под условия фильтрации.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от l0stparadise

-=:=-

Нет. в том то и дело, торрент шейпится дефолтом 1:50.
Другое дело, что его можно только жестко фиксировать. Не могу заставить шейпер ужимать его динамически.

KosmiK ★★
() автор топика
Ответ на: -=:=- от KosmiK

Погоди, а каким фильтром ты помещаешь torrent-трафик в класс? А то я сейчас попытался разобраться в скрипте и не увидел фильтра для torrent.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

Вот и я о том же. Я там увидел только фильтры по конкретным портам.

l0stparadise ★★★★★
()
Ответ на: комментарий от Black_Shadow

-=:=-

Без разницы. Специально добавил
tc filter add dev $ifb parent 1:0 protocol ip prio 7 u32 match ip dst 172.16.81.97/32 flowid 1:50

Как торрент попадал в 1:50 так и попадает.

А вот прикол в том, что speedtest успешно отжимает у торрента канал.
P.S. ОБновил пасту.

KosmiK ★★
() автор топика
Последнее исправление: KosmiK (всего исправлений: 1)
Ответ на: -=:=- от KosmiK

Всё, понял. 1:50 у тебя дефолтный класс.

Black_Shadow ★★★★★
()
Ответ на: -=:=- от KosmiK

То есть реально не 95 мегабит, а меньше

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: -=:=- от KosmiK

И что ты хочешь?

1. Вруби sfq_codel
2. Шейпить трафик на принимающей стороне - глупо даже в теории.

devl547 ★★★★★
()
Ответ на: комментарий от devl547

2. Шейпить трафик на принимающей стороне - глупо даже в теории.

Не совсем. Можно дропать часть пакетов, заставляя отправляющую сторону снижать скорость.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

-=:=-

Что будет если UPLOAD и DOWNLOAD поставить 80?

Поставил 85.

Торрент около 8500 кбайт жмет.
http://speedtest.tele2.net/10GB.zip прыгает от 900 кбайт до 1.5 мбайт.

KosmiK ★★
() автор топика
Ответ на: комментарий от Black_Shadow

Можно дропать часть пакетов, заставляя отправляющую сторону снижать скорость.

Насколько я понимаю, довольно фиговое решение IRL.

devl547 ★★★★★
()

То, что вы ставите торренту 80 или 85 Мбит не означает, что он будет пытаться качать именно на такой скорости. Торрент будет пытаться качать на большей скорости, но шейпер будет пропускать заданную полосу, будут потери пакетов и механизм ограничения скорости будет как-то работать, но фактически, вам по физическому каналу будет всё время стремиться пройти больше трафика, чем эти 85 Мбит.

Причём, возможно что временами его будет больше, чем 100 Мбит и на оборудовании провайдера может возникать очередь пакетов. Очередь — задержка в передачи, когда задержка большая, то на скорость работы tcp уже будет влиять размер окна и другие параметры tcp-соединения и тут уже сравнивать скорость с разных серверов не корректно. Чудес не бывает, хорошего полосования без резревирования части полосы нет.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.