LINUX.ORG.RU
ФорумAdmin

А tc так может?

 , шeйпинг


0

1

Хочу шейпилку, которой можно задать лимит трафика в минуту и чтобы она налету делала расчет чтобы плавно подгонять к этому значению в скользящем окне.

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

В справке по tc ничего подходящего не нашёл. Разве что руками считать трафик и перекидывать человека из группы в группу, но это как-то запарно.

★★★★★

Последнее исправление: ya-betmen (всего исправлений: 3)
Ответ на: комментарий от Bers666

Там ничерта непонятно с настройкой этого буфера, я так понимаю, что этот бурст не фича а следствие работы алгоритма через буфер.

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

заскриптовать можно. смотришь на класс периодически, если там полочка - замеряешь время, в следующей итерации учитываешь и полочку и время и если надо меняешь настройки класса «как надо»

LonleyLockley
()

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

Дык это же про tc и есть. У вас есть дырявое ведро вы задаете скорость его опустошения и скорость его наполнения при условии наполненности ведра.

anc ★★★★★
()
Ответ на: комментарий от ya-betmen

Создаете базовый класс в нем указываем нашу натуральную скорость, потом создаем подкласс с порезанной скоростью, потом создаем фильтр у которого parent базовый класс а flowid порезанный и в этом фильтре указываем ip провинившегося.
Но вообще странно, что вы не нашли, об это дело столько копий сломлено, в том смысле что документации чуть больше чем много начиная со старого доброго Linux Advanced Routing & Traffic Control HOWTO.
Это из самого простого. Есть и вариант когда для большей гибкости правил можно пользовать iptables. Создаете фильтр в котором указываете handle ЧИСИЛКО и в правилах iptables ... CONNMARK --set-mark ЧИСЕЛКО и/или MARK --set-mark ЧИСЕЛКО.

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

потом создаем фильтр у которого parent базовый класс а flowid порезанный и в этом фильтре указываем ip провинившегося

И это не то что я хочу. Руками кидать ип туда сюда я могу без проблем.

ya-betmen ★★★★★
() автор топика

tc конечно ещё та циска головного мозга Кузнецова, но почитай в бесконечных мануалах про burst. Для некоторых шейперов он будет делать примерно то, что тебе нужно. Например настроить чтобы скачивание 10Мб вебговна укладывалось в burst, и после пары секунд пока потребитель вебговна разглядывает страничку лендинга burst ресетился. А если будет литься больше 10Мб без перерыва, то всё остальное будет шейпиться с указанной скоростью. Настроек и режимов burst много, можно и более навороченную логику получить. Можно добавить маркировку пакетов в iptables и ещё более навороченную резалку сделать. В обшем, если очень хочется, то перечитав кучу документации и поэкспериментировав в принципе можно добиться примерно того, что тебе нужно.

ЗЫ: ненавижу tc, но оно работает.

Stanson ★★★★★
()