Доброго всем времени суток.
Намедни попробовал настроить ограничение трафика для пользователей 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) почти ничего нет.