VASIA! Posted January 10, 2008 Posted January 10, 2008 (edited) Доброго времени суток, вот потребовалось ограничить скорость скачи по 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) Как сильно будет сказываться классификация трафика на загрузке процессора(машина слабая стоит) И может имеет смысл просто без классификации трафик по этому порту резать.. Edited January 12, 2008 by VASIA! Вставить ник Quote
nuclearcat Posted January 10, 2008 Posted January 10, 2008 1)SFQ(как и FIFO) это qdisc, они применяются когда траффик превышает установленный в классе (HTB) лимит. 2)Все зависит от кучи деталей. Насколько слабая машина стоит? Вставить ник Quote
VASIA! Posted January 10, 2008 Author Posted January 10, 2008 Скажем так слабая очень, но енто временно и ограничение сокрости временно, но необходимо. Воббщем целерон 566, 128 оперативы... Да, по первому пункту можно поподробнее. Вставить ник Quote
puh Posted January 10, 2008 Posted January 10, 2008 ограничить средствами самого ftp сервера не получается? Вставить ник Quote
nuclearcat Posted January 10, 2008 Posted January 10, 2008 По первому пункту. Скажем указали вы 10Мбит... и полоса превышена. Все что превысило 10Мбит будет складываться в qdisc. A)Если qdisc - FIFO - и скажем указано bfifo limit 100000 (буфер 100 Кбайт) то по возможности байты будут отдаваться со скоростью не превышающей 10Мбит в том же порядке как и пришли. Если количество сбуферизованых данных превысит буфер - пакеты будут дропаться (это нестрашно, просто заставить TCP снизить скорость). 2)Если qdisc SFQ - то при превышении 10Мбит - 128 пакетов будут складываться в буфер, но SFQ будет отдавать их не в том порядке как они пришли, а пытаться распределять равномерно между "потоками". Т.е. если скажем качает юзер 1 и юзер 2, он попытается раздавать равномерно данные между обоими и не давать одному из них захватить полосу. Это в теории, но в практике лучше присмотреться к ESFQ, который эту задачу выполняет лучше. Целерон 566 с горкой хватит для ваших 10Мбит. Если конечно на него еще куча задач не навешана. Вставить ник Quote
VASIA! Posted January 10, 2008 Author Posted January 10, 2008 ограничить средствами самого 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 отваливается и пинг подскакивает..вообщем не хватает мозгов, не может протерминировать, надо менять машину... Вставить ник Quote
nuclearcat Posted January 11, 2008 Posted January 11, 2008 если виснет - это возможно не связано с перегрузкой, а баг дров какие сетевухи стоят? какое ядро (версия)? в порядке ли вентилятор? покажите 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 Но его надо уметь собирать, не очень тривиальная задача Вставить ник Quote
VASIA! Posted January 11, 2008 Author Posted January 11, 2008 Какое-то время года пол назад обнаружил что вентилятор не работал, сколько не работал не известно,но вообщем уже заменен и вроде фунциклирует -сетевухи акорп на чипсете 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 Вот.... Вставить ник Quote
nuclearcat Posted January 11, 2008 Posted January 11, 2008 Ядро старовато для начала. 9 прерывание делится с acpi, это нехорошо. Вставить ник Quote
VASIA! Posted January 11, 2008 Author Posted January 11, 2008 да...старый дистр стоит...я и говорю что скоро усе будет меняться, но пока что есть, то есть.... а что значит 9 прерываний acpi енто что значит?! да..насчет конфига ктонить выскажитесь,все верно описанно под мою задачу....да..и где потом можно будет эти правила редпктировать,если мне понадобится что либо изменить.. Вставить ник Quote
VASIA! Posted January 12, 2008 Author Posted January 12, 2008 Граждане..почему-то не работает шейпинг....вводил все как написано в конфиге а ограничения не срабатывали,в чем причина,может кто что подскажет.. Вставить ник Quote
VASIA! Posted January 12, 2008 Author Posted January 12, 2008 Все,с шейпингм разобрался..спасибо всем за ответы... в моем случае команда ceil была лишняя... Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.