ограничение полосы - это глюк или фича !?
WL500gp делит домашний интернет на два компа. Прошивка 1.9.2.7-8-pre9. Было замечено следующие :
когда один комп в сети , то он использует (по данным диспетчера задачь) не более 50 % канала ....но как в сеть подключаеться второй комп в диспетчерах задачь загрузка канала у обоих сразу падает до 25 % ...
Кто-то сталкивался с таким ?! - У всех ли идет вот такое резервирование канала ?! ...т.е. как бы выходит, что в любом случае роутером резервируеться 50 % канала .....:cool: :eek:
Настройка QoS для чайника (распределение трафика в WL500gP)
Господа, прорывшись 3 дня на форуме, я так и не смог осуществить действие, вынесенное в название темы.
Задача: обладая минимальным опытом работы с Linux, настроить ограничения по скачиванию с WAN для компьютеров внутренней сети (для примера, с IP 192.168.1.3, 192.168.1.72, 192.168.1.115).
Что имеем: рутер WL500gP c последней прошивкой от Олега, настроенное подключение через PPPoE к повайдеру Lanck Telecom (Питер).
Что я сделал:
1. Установил и запустил терминальную программу Putty (под Vista).
2. Связался с рутером (адрес по умолчанию, 192.168.1.1). Ввёл логин и пароль администратора.
3. Изучил редактор vi (нашёл справку по нему, сделав запрос в ya.ru "vi editor commands"). Запускается командой vi, выход из него- набрать ZZ (shift+Z 2 раза).
4. Выяснил, что на моём рутере после запуска терминальной сессии я нахожусь в (пустом) каталоге root, по этому команда ls (аналог команды DIR для MS-DOS) ничего не выдаёт.
5. Выяснил, что команда cd /usr/sbin и последовательность команд cd /usr, cd /sbin приводят (почему-то!) в разные каталоги (согласно листингу ls). :confused:
6. Узнал, что файл wshaper в каталоге, куда я перешел командами cd /usr, cd/sbin, защищён от записи. Стереть/изменить его я не могу.
Подскажите, пожалуйста, дальнейшую последовательность действий.
Напомню, что жаргон типа "скомпилируй, смонтируй, сделай выполняемый скрипт" требует пошагового пояснения ввиду труднодоступности документации и обилия проблем типа пункта 5.
Скрипт управления скорость в rTorrent в зависимости от форвардного трафика. Часть 1.
Вдохновленный идеями от nil и Siddha, описаными ими в этой теме здесь и здесь. Я решил развить эту идею.
Моя идея состоит в том, что скорость rTorrent'а будет ограничиваться не только фактом наличия форвардного трафика, но и регулироваться в заданом диапазоне в зависимости от количества форвардного трафика. Кроме того, скрипт не будет постоянно крутиться в бескончном цикле, а будет запускаться самим rTorrent'ом с заданной периодичностью.
Ниже, я опишу, как я настраивал свой роутер, чтобы работал мой скрипт rt-shaper.sh. По аналогии и скорее всего с незначительными изменениями вы сможите сделать тоже самое.
Значит так. Предполагается, что роутер (ASUS wl-500gP или совместимый) уже прошит олеговской прошивкой и проведена начальная настройка до rTorrent. Кроме того, должны стоять следующие утилиты: tail, head, awk, wget. Если чего из этого нет, то отправляемся ищем темы по начальной настройке и настраиваем все, что нужно. Кроме того, понадобится утилита sudo, для того, чтобы скрипт смог работать под пользователем p2p, от имени которого стартует rTorrent.
Sudo
У меня rTorrent работает от имени пользователя p2p. Поскольку этот пользователь бесправный, то он не сможет запускать этот скрипт. Точнее скрипт он запустит, а вот обратиться к iptables - не сможет. Для того чтобы обойти эту неприятность и ставится sudo. Ставим:
После установки, находим конфиг sudo (/opt/etc/sudoers) и правим его. Самый ПРАВИЛЬНЫЙ способ править конфиг sudo - это использовать утилиту visudo. Дело в том, что перед записью исправленного конфига visudo в начале проверяет его на корректность и если все нормально, то сохраняет его. А если находит ошибки - то не сохраняет. Итак, набираем в консоле:
Code:
[admin@IGORROUTER root]$ visudo
Вот мой конфиг sudo. Строки которые я исправлял, отмечены красным:
Code:
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Runas alias specification
# User privilege specification
# root ALL=(ALL) ALL
admin ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
p2p IGORROUTER = (admin) NOPASSWD: /usr/sbin/iptables
Defaults:p2p runas_default = admin
Defaults:admin runas_default = admin
Пользователя root я закомментарил, и добавил пользователя admin, аналогичного root.
Указал, что пользователь p2p может запускать на моем роутере (IGORROUTER) утилиту iptables без пароля.
Пользователем по умолчанию для p2p назначен admin. Также и для пользователя admin, назначен пользователь admin, иначе sudo пытается использовать пользователя root, которого нет. Узнать имя роутера можно при помощи hostname. Набираем в консоле:
Code:
[admin@IGORROUTER root]$ hostname
IGORROUTER
и видим имя своего роутера. Заменяем IGORROUTER на имя своего роутера.
Кратко, команды, которые я использовал при правке конфига в visudo:
- клавиша <Insert> - перейти в режим редактирования;
- клавиша <Ecs> - выйти из режима редактирования;
- ":w" - сохранить конфиг;
- ":q" - выйти из visudo;
- ":wq" - сохранить конфиг и выйти из visudo.
Сам скрипт и описание как он работает в следующем сообщении.
1 Attachment(s)
Скрипт управления скорость в rTorrent в зависимости от форвардного трафика. Часть 2.
продолжение этого сообщения.
Скрипт rt-shaper.sh
Скрипт rt-shaper.sh предназначен для автоматической регилировки скачки/отдачи bittorrent-клиентом rTorrent в зависимости от наличия и количества трафика проходящего через роутер. Другими словами, если форвардного(проходящего через роутер на клиентов в вашей сети) трафика через роутер нет, то rTorrent, установленный на роутер, не ограничивается. Если же форвардный трафик есть, то скорость скачки/отдачи ограничивается. Более того, и скорость скачки, и скорость отдачи изменяется в заданном интервале в зависимости от количества форвардного трафика.
Я рекомендую скрипт ставить в отдельный каталог. У меня он стоит в /opt/etc/rt-shaper
На данный каталог нужно дать права пользователю p2p. У меня в качестве группы для каталога указана p2p и группе даны права на чтение(r), запись(w) и выполнение(x).
Далее, нужно место, где будут храниться значения, которые должны сохраняться между запусками скрипта. Поскольку, при каждом запуске скрипта, туда что-то пишется, лучше это место завести не на флешке, а на винте. У меня винт смонтирован в /home, а на нём я создал подкаталог var и ещё подкаталог rtorrent. Таким образом, каталог с временными файлами имеет такой вид: /home/var/rtorrent
На него тоже нужно дать права на запись пользователю p2p. У меня права на этот каталог совпадают с правами на /home/var/rtorrent
Скрипт /opt/etc/rt-shaper/rt-shaper.sh я приложил к сообщению.
Переменные скрипта, которые возможно прийдется поменять под себя:
RTSHAPER= - каталог, в котором лежит сам скрипт
VARCAT= - каталог временных файлов
LOGFILE= - логфайл
В каталог /opt/etc/rt-shaper можно положить файл с настройками, которые будут использоваться в работе скрипта.
Файл rt-shaper.conf
Code:
min_uprate=50; # минимальный upload rate rTorrent в килобайтах. Скорость будет уменьшаться до него, но не ниже
min_dlrate=10; # минимальный download rate rTorrent в килобайтах. Скорость будет уменьшаться до него, но не ниже
step_rate=10; # шаг изменения rate в килобайтах
max_uprate=70; # максимальный upload rate rTorrent в килобайтах. При появлении форвардного трафика будет выставлен именно он. При дальнейшем росте форвардного трафика rate будет уменьшаться вплоть для min_uprate
max_dlrate=50; # максимальный download rate rTorrent в килобайтах. При появлении форвардного трафика будет выставлен именно он. При дальнейшем росте форвардного трафика rate будет уменьшаться вплоть для min_dlrate
max_count_change_rate=5; # максимально количество пропущенных изменений rate. После этого количества rate будет изменен по любому
interval_rate=7; # частота точнее интервал, в секундах, с которой дергается скрипт. Должен совпадать с тем, что указано в конфиге rTorrent
enable_log=0; # признак ведения лога 0-не вести лог. 1-вести лог, 2-вести подробный лог, 3-лог с промежуточными переменными
Можно конфиг и не ложить, а задать все необходимые значения прямо в скрипте.
Параметры: min_uprate, min_dlrate, max_uprate, max_dlrate, step_rate - задаются в килобайтах и зависят от скорости вашего интернета (У меня сейчас скорость такая: download = 777 килобит, upload = 824 килобит). Т.е. сейчас, при наличии форвардного трафика скорость скачки будет гулять в интервале между 10 килобайтами и 50 килобайтами, а скорость отдачи между 50 килобайтами и 70 килобайтами с шагом в 10 килобайтами.
Параметр: interval_rate - должен совпадать с тем значением, которое будет указано для шедулера rTorrent, который будет запускать скрипт.
Подключение скрипта к rTorrent
Для подключения скрипта к rTorrent, нужно добавить одну строчку в конфиг rTorrent.
У меня конфиг rTorrent лежит в /opt/etc/rtorrent.conf
Добавляем туда строку:
Code:
schedule = rtshaper,15,7,execute=/opt/etc/rt-shaper/rt-shaper.sh
Здесь: 15 - задержка, в секундах, после которой rTorrent начнет запускать скрипт на выполнение. 7 - интервал, в секундах, с которым rTorrent будет запускать скрипт, должен совпадать с параметром interval_rate из rt-shaper.conf.
Вот собственно и все. Надеюсь, что я ни чего не пропустил.