MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

DD-WRT Разделение канала

Техническая поддержка нахаляву, но не оперативная.

Модераторы: FELiS, Death_Morozz, null

DD-WRT Разделение канала

Сообщение znixz » 02 фев 2012, 17:52

Задача



Необходимо разделить канал для нескольких пользователей на базе недорогого роутера. Каждому пользователю будет гарантировано предоставляться определенная часть канала для скачивания/закрузки и полный канал при отсутствии других пользователей.


Решение




В качестве роутера был выбран DIR-615 C2 по соображениям низкой цены и возможности установить на нем прошивку DD-WRT. Так как в бесплатных вариантах DD-WRT QoS работает некорректно, то было решено настроить его с помощью скриптов.


Установка DD-WRT на роутер DIR-615 C2



1) Скачиваем с прошивку для DIR-615 C2. Для этого роутера будут найдеты два файла прошивки — «dir615c1-factory-to-ddwrt-firmware.bin» и «dir615c1-firmware.bin». Нас интересует dir615c1-factory-to-ddwrt-firmware.bin.

2) С помощью hex редактора меняем hardware ID в самом конце файла прошивки «dir615c1-factory-to-ddwrt-firmware.bin» с AP81-AR9130-RT-080609-05 на 01AP81-AR9130-RT-070614-02. Тут есть одна тонкость. Wiki по DD-WRT предлагает менять на AP81-AR9130-RT-070614-02. Но если на роутере стоит заводская прошивка с абривиатурой RUS, нужно менять на 01AP81-AR9130-RT-070614-02. В качестве hex редактора я использовал mc.

3) Подключаем DIR-615 и заходим через веб-интерфейс на . Пользователь admin, пароль пустой. Встроенными средствами (Tools -> Firmware) обновляем прошивку (выбираем модифицированную нами «dir615c1-factory-to-ddwrt-firmware.bin»). Настоятельно рекомендуется использовать Firefox.

4) Ждем пару минут, пока обновляется прошивка. После окончания загрузки прошивки роутер перезагрузится, а ip сменится на 192.168.1.1.

5) Открываем , настраиваем подключение к интернету и раздачу адресов в локальной сети.


Настройка QoS в DD-WRT с помощью скриптов



1) Отключаем QoS в веб интерфейсе (NAT/QoS -> QoS), нажимаем Apply Settings.

2) Скачиваем генератор скриптов .

3) Распаковываем и запускаем WRT54SG.exe.
Переключаем на английский (вверху круглая кнопка с флагами).
Указываем ip адрес роутера(192.168.1.1), а так же скорость скачивания и загрузки траффика. Эти скорости можно узнать на или умножив скорости, предоставляемые по договору провайдером, на 0.9.

В моем случае при договорной скорости 800 кб/с, скачивание — 720 кб/с, а загрузка 420 кб/c.
Настраиваем время жизни пакетов.

Тут я ничего не менял.
Добавляем пользователей, указав их гарантированную (Rate) и максимальную (Ceil) скорости скачавания/ загрузки и приоритет.

В моем примере это 3 пользователя:
Код: Выделить всё
  192.168.1.2, DL Rate — 400 kbps, DL Ceil — 720 kbps, UL Rate — 200 kbps, UL Ceil — 400 kbps, Priority — High, TCP — no limit, UDP — no limit  192.168.1.3, DL Rate — 150 kbps, DL Ceil — 720 kbps, UL Rate — 90 kbps, UL Ceil — 400 kbps, Priority — Normal, TCP — no limit, UDP — no limit  192.168.1.4, DL Rate — 150 kbps, DL Ceil — 720 kbps, UL Rate — 90 kbps, UL Ceil — 400 kbps, Priority — Normal, TCP — no limit, UDP — no limit  



Я решил оставить «люфт» в гарантированных скоростях скачиваня/загрузки в 20 kbps, так как встречал рекомендации не выбирать гарантированными полосами пропускания весь диапазон.
Скрипт сгенерирован, копируем его в буфер или сохраняем в текстовый файл.

Вот пример получившегося скрипта:

Код: Выделить всё
#--------------------------------------------     #WRT54 script Generator v1.02     #© 2006-2007 Robert \"Robson\" Mytkowski     #--------------------------------------------     TCA=\"tc class add dev br0\"     TFA=\"tc filter add dev br0\"     TQA=\"tc qdisc add dev br0\"     SFQ=\"sfq perturb 10\"     tc qdisc del dev br0 root     tc qdisc add dev br0 root handle 1: htb     tc class add dev br0 parent 1: classid 1:1 htb rate 720kbit     $TCA parent 1:1 classid 1:10 htb rate 400kbit ceil 720kbit prio 1     $TCA parent 1:1 classid 1:11 htb rate 150kbit ceil 720kbit prio 2     $TCA parent 1:1 classid 1:12 htb rate 150kbit ceil 720kbit prio 2     $TQA parent 1:10 handle 10: $SFQ     $TQA parent 1:11 handle 11: $SFQ     $TQA parent 1:12 handle 12: $SFQ     $TFA parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10     $TFA parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11     $TFA parent 1:0 prio 2 protocol ip handle 12 fw flowid 1:12     iptables -t mangle -A POSTROUTING -d 192.168.1.2 -j MARK --set-mark 10     iptables -t mangle -A POSTROUTING -d 192.168.1.3 -j MARK --set-mark 11     iptables -t mangle -A POSTROUTING -d 192.168.1.4 -j MARK --set-mark 12     TCAU=\"tc class add dev imq0\"     TFAU=\"tc filter add dev imq0\"     TQAU=\"tc qdisc add dev imq0\"     modprobe imq     modprobe ipt_IMQ     ip link set imq0 up     tc qdisc del dev imq0 root     tc qdisc add dev imq0 root handle 1: htb     tc class add dev imq0 parent 1: classid 1:1 htb rate 400kbit     $TCAU parent 1:1 classid 1:10 htb rate 200kbit ceil 400kbit prio 1     $TCAU parent 1:1 classid 1:11 htb rate 90kbit ceil 400kbit prio 2     $TCAU parent 1:1 classid 1:12 htb rate 90kbit ceil 400kbit prio 2     $TQAU parent 1:10 handle 10: $SFQ     $TQAU parent 1:11 handle 11: $SFQ     $TQAU parent 1:12 handle 12: $SFQ     $TFAU parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10     $TFAU parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11     $TFAU parent 1:0 prio 2 protocol ip handle 12 fw flowid 1:12     iptables -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 10     iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 11     iptables -t mangle -A PREROUTING -s 192.168.1.4 -j MARK --set-mark 12     iptables -t mangle -A PREROUTING -j IMQ --todev 0




4)В веб интерфейсе роутера открываем Administration -> Commands. Вставляем сгенерированный скрипт в поле Commands и сохраняем как фаевол (Save Firewall).

5) Перезагружаем роутер (Administration -> Commands в поле Commands пишем reboot и нажимаем Run Commands).


Итог


В результате произведенных выше действий был получен роутер с прошивкой DD-WRT, разделяющий канал в зависимости от заданных диапазона скоростей и приоритета для кажного пользователя.

Источник
IT-Profity
Аватара пользователя
znixz
Парторг
 
Сообщения: 55
Зарегистрирован: 14 янв 2011, 09:20
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 10
Новичок

Вернуться в Техподдержка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 4

cron
x

#{title}

#{text}