LINUX.ORG.RU
ФорумAdmin

Ограничение трафика командой tc


0

0

Доброго всем времени суток.

Намедни попробовал настроить ограничение трафика для пользователей ftp на своем сервере, а то когда качают, невозможно работать. Долго изучал Linux Advanced Routing & Traffic Control HOWTO, в результате пришел к следующему:

# tc qdisc add dev eth1 root handle 1: prio //добавляем на интерфейс eth1 корневую qdisc PRIO

# tc qdisc add dev eth1 parent 1:1 handle 10: sfq perturb 2 limit 10000 //на первый канал PRIO вешаем qdisc sfq

# tc qdisc add dev eth1 parent 1:2 handle 20: tbf rate 10mbit buffer 16000 limit 32000 //на второй канал PRIO вешаем qdisc tbf с ограничением скорости 10мбит/сек

# tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport 20 0xffff flowid 1:2 //данные от ftp-сервера через второй канал PRIO

# tc filter add dev eth1 protocol ip parent 1: prio 2 u32 match ip protocol 0 0xff flowid 1:1 // все осталное через первый канал PRIO (protocol 0 - любой ip протокол)

Вообще-то правило по умолчанию выглядит в вышеуполянутом HOWTO несколько иначе:

# tc filter add dev eth0 protocol ip parent 1: prio 2 flowid 1:1

Но у меня (ASPLinux 9.2) на эту строчку система реагирует так:

Unknown filter "flowid", hence option "1:1" is unparsable

Ну ладно, FTP-трафик я этим ограничил, но также вместе с ним еще ограничил и все остальное до тех же 10мбит/сек. Проверял, скачивая данные из папок Samba с того же сервера. Никак не пойму, где я напарил.

Да, и еще кто-нибудь может подсказать, где можно найти нормальное подробное описание всех возможностей и параметров утилиты tc? Во встроенных в систему мануалах (декабрь 2001) почти ничего нет.

а не пробовал ограничивать траффик самим сервером фтп? ;)

например proftpd так умеет, тока собрать надо правильно!

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

Нет, не пробовал. Вообще стоит задача ограничивать ftp и некоторые другие виды трафика в целом (исходящего и проходящего), т.к. данная машина используется прежде всего в качестве роутера, и когда кто-либо начинает активно качать, делать что-либо другое в сети становится невозможно. Закачивая с ftp-сервера на самом роутере, я лишь проверял, насколько корректно все работает.

Raining_man
() автор топика
Ответ на: комментарий от anonymous

А это что вообще такое? Скрипт, выполняемый при старте системы? Я его что-то не смог найти, даже полным поиском по всему дереву.

Raining_man
() автор топика

>Да, и еще кто-нибудь может подсказать, где можно найти нормальное подробное описание всех возможностей и параметров утилиты tc?

RFCs

http://www.faqs.org/rfcs/rfc791.html - IP, http://www.protocols.ru/files/RFC/RFC-791.pdf - RUS, PDF

http://www.faqs.org/rfcs/rfc793.html - TCP, http://www.protocols.ru/files/RFC/rfc-793.pdf - RUS, PDF

http://www.faqs.org/rfcs/rfc768.html - UDP, http://www.protocols.ru/files/RFC/RFC-768.pdf - RUS, PDF

Документация

http://www.protocols.ru - протоколы, перводы RFC

Traffic-Control-HOWTO. Очень много интересной информации с примерами, http://ldp.linux.by/HOWTO/Traffic-Control-HOWTO/

Linux Advanced Routing and Traffic Control HOWTO. http://www.lartc.org/howto/

HTB User guide. Основная документация по использованию HTB, http://luxik.cdi.cz/ devik/qos/htb/manual/userg.htm

http://www.docum.org

http://diffserv.sourceforge.net/

http://tcng.sourceforge.net/

http://qos.ittc.ku.edu/

http://www.linuximq.net/

http://www.faqs.org/rfcs/rfc3549.html

http://gazette.linux.ru.net/rus/articles/taleLinuxTC.html (рус)

http://www.cisco.com/en/US/netsol/ns341/ns396/ns172/ns103/networking_solution... , рус - http://www.mpls-exp.ru/ispqoscisco.html

Утилиты

http://www.noc.ucf.edu/Tools/Iperf/default.htm

http://dast.nlanr.net/Projects/Iperf/

Скрипты

http://sourceforge.net/projects/htbinit

http://sourceforge.net/projects/cbqinit/

http://lartc.org/wondershaper/

http://www.tldp.org/HOWTO/ADSL-Bandwidth-Management-HOWTO/implementation.html

http://www.digriz.org.uk/jdg-qos-script/

fagot ★★★★★
()

Ничего ты не ограничел!!!!!!!
1)Если один юзер будет несколькими потоками качать, то полоса пропускания будет делиться между потоками, а не хостами. Проверь!
2)то что ты написл называется бредом!!! Не хочу это комментировать. Не обижайся! Должны быть тормоза и не корректная работа.

Я выполнял подобную задачу, все работает. Делай руками, никого не слушай. Используй только tc. В проотивном случае ты только запутаешься. Оличные статьи (ссылки) и примеры на русском можно найти на opennet.ru


Тебе нужно создать класс и подклассы, которые будут занимать полосу пропускания у родительского класса.

1) создаем корневую дисциплину htb
2) создаем класс с твоей полосой пропускания
3) для каждого хоста создаем подкласс с родителем пункта 2 с полосой от нижней до какой хочешь ограничить
4) создаем дисциплины sfq (сколько хостов)и подключаем каждую к своему классу пункта 3
5) создаем фильры u32 сколько хостов. И каждый фильтр будет направлять пакеты от данного хоста в полосу класса из пункта 3.

Все - телемеркет. Трафик разходуется равномерно между хостами.

ЗАПОМНИ: весь другой трафик не будет классифицироваться фильтрами и поэтому не будет ограничиваться!!! УДАЧИ!

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