Перейти к содержимому
Калькуляторы

Ограничение скорости в Linux

Доброго времени суток, вот потребовалось ограничить скорость скачи по ftp. Тк сам я linux тока осваиваю, а роутер сделан именно на нем, то экспирименты ставить не хочется вот и обращаюсь к вам за консультацией. Вообщем задача такая ограничить скорость скачки по ftp в обе стороны. Входящий трафик на скорости 6 мбит исходящий на скорости 4 мбита. Общая пропускная способность канала 10 мбит. Для классификации выбрал дисциплину Hierarchical Token Bucket (НТВ). вот что я набрасал конфигурацию, посмотрите и подправте где что неверно... Конфиг привел для ограничения только входящего трафика, то же самое планируется сделать и на другом интерфейсе для исходящего...

# tc qdisc add dev eth1 root handle 1: htb default 20

 

# tc class add dev eth1 parent 1: classid 1:1 htb rate 10mbit burst 15k

 

# tc class add dev eth1 parent 1:1 classid 1:10 htb rate 10mbit burst 15k

# tc class add dev eth1 parent 1:1 classid 1:20 htb rate 6mbit ceil 10mbit burst 15k

 

Автор рекомендует устанавливать дисциплину SFQ для этих классов:

# tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10

# tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10

 

Добавим фильтры, которые будут выполнять классификацию трафика:

# U32="tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32"

# $U32 match ip sport 20 0xffff flowid 1:20

 

 

Вопросы по поводу кончига сразу же( пример рбал из статьи Linux Advanced Routing & Traffic Control HOWTO):

1) Раз я работаю с HTB зачем автор статьи рекомендует ставить SFQ ?

2) Как сильно будет сказываться классификация трафика на загрузке процессора(машина слабая стоит) И может имеет смысл просто без классификации трафик по этому порту резать..

Изменено пользователем VASIA!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1)SFQ(как и FIFO) это qdisc, они применяются когда траффик превышает установленный в классе (HTB) лимит.

2)Все зависит от кучи деталей. Насколько слабая машина стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скажем так слабая очень, но енто временно и ограничение сокрости временно, но необходимо. Воббщем целерон 566, 128 оперативы...

 

Да, по первому пункту можно поподробнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ограничить средствами самого ftp сервера не получается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По первому пункту. Скажем указали вы 10Мбит... и полоса превышена. Все что превысило 10Мбит будет складываться в qdisc.

A)Если qdisc - FIFO - и скажем указано bfifo limit 100000 (буфер 100 Кбайт) то по возможности байты будут отдаваться со скоростью не превышающей 10Мбит в том же порядке как и пришли. Если количество сбуферизованых данных превысит буфер - пакеты будут дропаться (это нестрашно, просто заставить TCP снизить скорость).

2)Если qdisc SFQ - то при превышении 10Мбит - 128 пакетов будут складываться в буфер, но SFQ будет отдавать их не в том порядке как они пришли, а пытаться распределять равномерно между "потоками". Т.е. если скажем качает юзер 1 и юзер 2, он попытается раздавать равномерно данные между обоими и не давать одному из них захватить полосу. Это в теории, но в практике лучше присмотреться к ESFQ, который эту задачу выполняет лучше.

 

Целерон 566 с горкой хватит для ваших 10Мбит. Если конечно на него еще куча задач не навешана.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ограничить средствами самого ftp сервера не получается?

входящий то трафик с фтп какием образом)) фтп то разные и хозяева у них разные, а ограничить скорость надо мне))

 

По первому пункту. Скажем указали вы 10Мбит... и полоса превышена. Все что превысило 10Мбит будет складываться в qdisc.

A)Если qdisc - FIFO - и скажем указано bfifo limit 100000 (буфер 100 Кбайт) то по возможности байты будут отдаваться со скоростью не превышающей 10Мбит в том же порядке как и пришли. Если количество сбуферизованых данных превысит буфер - пакеты будут дропаться (это нестрашно, просто заставить TCP снизить скорость).

2)Если qdisc SFQ - то при превышении 10Мбит - 128 пакетов будут складываться в буфер, но SFQ будет отдавать их не в том порядке как они пришли, а пытаться распределять равномерно между "потоками". Т.е. если скажем качает юзер 1 и юзер 2, он попытается раздавать равномерно данные между обоими и не давать одному из них захватить полосу. Это в теории, но в практике лучше присмотреться к ESFQ, который эту задачу выполняет лучше.

 

Целерон 566 с горкой хватит для ваших 10Мбит. Если конечно на него еще куча задач не навешана.

СПС за ответ, значит буду читать еще про ESFQ. Только мне так никто ничего и не сказал,верно ли описал конфиг, все ли верно....

Да, а в случае с ESFQ как конфиг будет выглядить,если не сложно опишите или сцылку на енто дело...

 

Насчет целерона...на нем еще подсчет трафика и доступ в интернет по VPN вообщем при скорости 10 мбит, если по полной прокачивать то он тупо виснет,даже удаленно на него зайти не могу, VPN отваливается и пинг подскакивает..вообщем не хватает мозгов, не может протерминировать, надо менять машину...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

если виснет - это возможно не связано с перегрузкой, а баг дров

какие сетевухи стоят?

какое ядро (версия)?

в порядке ли вентилятор?

покажите cat /proc/interrupts (прерывания)

 

ESFQ например выглядит так

tc qdisc add dev ${DEV} parent 1:270 handle 270: esfq perturb 30 depth 65536 divisor 14 limit 256 hash ctorigdst

 

Но его надо уметь собирать, не очень тривиальная задача

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Какое-то время года пол назад обнаружил что вентилятор не работал, сколько не работал не известно,но вообщем уже заменен и вроде фунциклирует

-сетевухи акорп на чипсете Realtek RTL8139

-версия ядра 2.4.32

-interrupts : CPU0

0: 319664957 XT-PIC timer

1: 2 XT-PIC keyboard

2: 0 XT-PIC cascade

8: 1 XT-PIC rtc

9: 267317588 XT-PIC acpi etho0

11: 0 XT-PIC usb-uchi

12: 307848885 XT-PIC eth1

14: 3949946 XT-PIC ide0

NMI: 0

LOC: 0

ERR: 0

MIS: 0

 

Вот....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ядро старовато для начала.

9 прерывание делится с acpi, это нехорошо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да...старый дистр стоит...я и говорю что скоро усе будет меняться, но пока что есть, то есть....

а что значит 9 прерываний acpi енто что значит?!

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Граждане..почему-то не работает шейпинг....вводил все как написано в конфиге а ограничения не срабатывали,в чем причина,может кто что подскажет..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все,с шейпингм разобрался..спасибо всем за ответы...

в моем случае команда ceil была лишняя...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.