Приветствую вас на сайте Adeptus Web Project (AWP). Adeptus - этой мой ник, широко известный в некоторых узких кругах... Проект не имеет четкой направленности, и предназначен просто для информирования о разных интересных и полезных вещах в сфере Интернет, игр, программ, фильмов и т.д. Кроме того, тут я буду представлять новости о работе моих Интернет-сервисов: файл-сервер, сервер Direct Connect, игровые сервера. ДОБРО ПОЖАЛОВАТЬ В ADEPTUS WEB PROJECT!



Распределение трафика с помощью DLink-504T
Автор: Adeptus. Дата: 14.01.2007 г. (просмотров - 10342)
Image   Как известно, основным (да и единственным) отличием роутера DLink-504T от модели 500Т является наличие в первом 4-портового коммутатора, позволяющего подключать "напрямую" до 4 компьютеров, создав, таким образом, свою собственную маленькую локальную сеть с единым общим каналом выхода в Интернет. В роутере 500Т для решения подобной задачи придется покупать и подключать дополнительный хаб. Однако наверняка многие из тех, кто организовывал такую "мини-сеть" на базе 504Т, с удивлением замечали, что трафик от него на подключенных пользователей идет уж как-то очень странно - например, не в меру "агрессивное" приложение на компьютере одного из пользователей может легко "перехватить" практически весь внешний Интернет-канал, оставляя других пользователей ползти еле-еле. Происходит это просто потому, что 504Т "не умеет" регулировать распределение трафика между подключенными пользователями. Будем бороться и побеждать эту проблему.

   Сразу скажу, что представленная задача имеет несколько решений. Мы будем вести речь только об одном, на мой взгляд - самом простом и дешевом: замене и настройке прошивки.

   Итак,  стандартные "заводские" прошивки Длинк резать трафик  между  пользователями не умеют.  Одако  гуру  "прошивкописательства"  для Длинк  - McMCC, уже довольно давно внес в прошивку 504Т скрипт jdg-qos, позволяющий реализовать практически все необходимые функции управления трафиком, а именно:

  • - точная приоритизация входящего и исходящего трафика
  • - балансировка и распределение трафика между подключенными пользователями
  • - неравное распределение трафика между пользователями.
Image
   А раз так - вперед!

   Для начала вам необходимо скачать подправленную прошивку для 504Т - dsl50xt_20051130_066b (например, из моего файлового архива). Полученный архив распаковать в любое удобное место на вашем диске. Данный архив  содержит образы сразу для 504Т и 500Т, вам понадобится только первый, поэтому файл с именем DSL-504T_kernel_V1... нужно оставить, а файл с именем DSL-500T_kernel_V1... можно удалить, во избежание путаницы и ошибок.
   Теперь убедитесь, что в вашем роутере залита фирменная прошивка версии 1. Увидеть версию прошивки можно на закладке HOME web-интерфейса управления роутером:

Image

    Если в вашем роутере установлена прошивка другой версии (V2 или V3) - настоятельно советую "откатиться" на прошивку V1, т.к. заливка "самодельной" прошивки поверх V2/V3 может привести к непредсказуемым последствиям. Процедура "отката" с V2/V3 на V1 многократно описана в Сети (например, на сайте Длинк).

   Убедившись в соответствии версии, заходим на закладку "Tools-Update Gateway" web-интерфейса:

Image

   Нажимаем верхнюю кнопку "Обзор", и выбираем файл кернельного образа прошивки - DSL-504T_kernel_V1.00B02T02.RU.20051130.MC06.6b. Нажимаем кнопку "Update gateway", пошел процесс заливки кернела. По окончании модем перезагрузится (если этого не произошло - перегрузите его вручную путем "отрубания" питания на 10 секунд). Вновь вернитесь на эту же закладку, только теперь выберите и прошейте файловую систему - DSL-50xT_fs_V1.00B02T02.RU.20051130.MC06.6b_ADSL2+. Этот файл одинаков для 500Т и 504Т, потому он в архиве один. По окончании процесса модем снова должен перезагрузиться. В третий раз зайдем на вкладку и теперь уже в нижней части окна (Configuration - Backup & Restore) кнопкой "Обзор" выберем файл DLinkRU_PPPoE_8_35_config.xml и нажмем кнопку "Restore" - пошел процесс заливки конфигурации. По окончании - еще одна, последняя перезагрузка. Поздравим себя - теперь у нас новая прошивка! Теперь входите в веб-интерфейс модема и настраивайте все свои соединения, как обычно (помните, что после перепрошивки логин и пароль сбросились в заводские admin/admin?)

   Однако  не удивляйтесь, если трафик-шейпер (распределение трафика) после этой процедуры не начал работать так, как вам хотелось - встроенный в прошивку скрипт управления трафиком требует небольшой дополнительной настройки. Для этого потребуется всего-навсего внести небольшие изменения в файл конфигурации модема. Только не в тот, который вы получили в архиве с прошивкой, а в тот, который "сидит" внутри вашего модема после всех сделанных вами "под себя" настроек. Вот этот-то ваш рабочий конфиг и будем править.

   Чтобы править свой конфигурационный файл, его нужно для начала из модема извлечь - вновь идем на ту же закладку "Update Gateway", и в нижней части окна нажимаем синюю кнопку "Back Up". Выбираем место сохранения, и там будет сохранен файлик с расширением XML - текущая конфигурация вашего модема. С ним мы и будем дальше работать.

    Не пугайтесь расширения XML - по сути, для нас в свете решаемой задачи, это обычный текстовый файл. Откроем его обычным Блокнотом из Windows или редактором, встроенным в ваш любимый файловый менеджер (Тотал Коммандер, ФАР и т.п.), сделав предварительно на всякий случай резервную копию.

ВНИМАНИЕ! Ни в коем случае не редактируйте файл конфигурации с помощью Microsoft Word или других подобных редакторов! Полученный после такого редактирования файл заливать в модем нельзя!

   Итак, открывает конфиг в Блокноте и ищем в нем секцию <setenv>.... Выглядеть это будет примерно так:

<config>
    <entities>
        <manager>
            <settings>
                <dependencies>
                    <connection>
                        <bridge>
                            <tops>
                                <bridge/>
                            </tops>
                            <bottoms>
                                <sar/>
                            </bottoms>
                        </bridge>
                          ну и т.д. и т.п.
                        <setenv>
                         что-нибудь
                        </setenv>

    Если секции <setenv> в конфиг-файле почему-либо нет, ее нужно создать. Для этого ищем

<config>
    <entities>
        тут всякая всячина
    </entities>
    <modules>
       тут всякая всячина
    </modules>
    <dependencies>
        тут всякая всячина
    </dependencies>
    <external>
        тут всякая всячина
    </external>

и вот в этом месте добавляем

<setenv>
</setenv>

   В любом случае секция <setenv>... должна находиться после тега </dependencies>, но до тега </config>. Все прочие добавления/изменения мы будем вставлять между тегами и .

   В самом простом случае, если у вас компьютеры в подсети 192.168.1.ХХХ, всего их не более 8 и трафик между ними нужно распределять всегда равномерно - то в секцию <setenv> достаточно прописать одну команду:

<setenv>
        <jdg-qos>yes
</setenv>

(или, если секция уже есть, просто убедиться, что такая команда там присутствует). Теперь сохраним получившийся файл, и вновь пройдя на закладку "Update Gateway" веб-интерфейса модема, "прошьем" новый конфиг, нажав кнопку "Обзор" в нижней части, выбрав свой конфиг-файл и нажав синюю кнопку "Restore". Не забудем о перезагрузке модема! Все, теперь ваш 504Т умеет раздавать трафик всем подключенным к нему пользователям поровну.

   Однако, скрипт позволяет и более тонкую настройку управления трафиком. Полное описание его возможностей можно найти на домашней странице скрипта. Я же приведу лишь некоторые примеры.

<setenv>
    <jdg-qos>yes
- включает скрипт управления трафиком.  По умолчанию выключено.
    <tc_downlink>100 - ограничивает общую пропускную способность канала "к вам" (в кбит/сек), по умолчанию автомат
    <tc_uplink>80 - ограничивает общую пропускную способность канала "от вас" (в кбит/сек), по умолчанию автомат
    <tc_dwif>br0 - задает номер интерфейса модема, смотрящего в сторону локальной сети. По умолчанию BR0
    <tc_noprioportdst>6881 4662</tc_noprioportdst> - список низкоприоритетных портов через пробел (для р2р и т.п.). По умолчанию установлены те, которые я привел
    <tc_nat>1 - включение/выключение NAT (модем в режиме роутера)
    <tc_local_traffic>192.168.1.0/24 - диапазон IP-адресов локальной сети. По умолчанию 192.168.1.0...192.168.1.24
    <tc_p2p>1 - включение/выключение детектора р2р-трафика. По умолчанию включен
    <tc_wrr_clients>8  - максимальное количество подключенных клиентов ЛАН
    <nat_standart>yes - уменьшение выделение памяти под таблицу NAT. Может быть полезно при активном использовании р2р
</setenv>

   Одно важное замечание. В прошивке присутствует еще один трафик-шейпер - wondershaper. Работать вместе с JDG-QOS они не могут, и если по какой-то причине у вас включен сервис wshaper, то работать будет только он, независимо от включения jdg-qos. Поэтому на всякий случай проверьте конфиг на строчки <wshaper>, и если такие обнаружатся - удалите их!

   И, в заключение, один из примеров решения с помощью сервиса JDG-QOS нестандартной задачи - неравномерного распределения трафика между пользователями (автор способа - Юрий Зайцев).

Дано: роутер 504Т с адресом 192.168.1.1. К нему подключены 4 пользователя с адресами 192.168.1.2-192.168.1.5. Канал в Интернет 1 Мбит.

Задача: распределить трафик между пользователями равномерно, за исключением пользователя с адресом 192.168.1.4, для которого ограничить канал на 64 Кбит.

Решение:

1. Скачать, установить и настроить модифицированную прошивку, как рассказано выше. Таким образом мы добьемся равномерного (примерно по 250 Кбит) распределения пропускной способности канала между всеми 4-мя пользователями.

2. Внести в конфигурационный файл дополнительные команды (в любом месте после <setenv> но перед ):

<external>
    <ipmac>192.168.1.2 00:xx:хх:хх:xx:хх - с помощью скрипта ipmac осуществляем привязку IP-адресов пользователей к МАС-адресу его сетевой карты
    <ipmac>192.168.1.3 00:xx:хх:хх:xx:хх - пользователь №2
    <ipmac>192.168.1.4 00:xx:хх:хх:хх:хх - пользователь №3 (ему будем резать канал)
    <ipmac>192.168.1.5 00:xx:хх:хх:xx:xx - пользователь №4
    <tc> qdisc add dev eth0 root handle 1:0 htb - поднимаем eth0
    <tc> class add dev eth0 parent 1:0 classid 1:1 htb rate 64kbit
- создаем на eth0 корневой узел HTB и  узел с ограниченной полосой пропускания на 64 Кбит
    <tc> filter add dev eth0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.4 flowid 1:1 -  привязываем к ограниченному узлу нужный нам IP-адрес
</external>
<external_stop>
    <tc> qdisc del dev eth0 root handle 1:0 htb
    <tc> class del dev eth0 parent 1:0 classid 1:1 htb rate 64kbit
    <tc> filter del dev eth0 parent 1:0 protocol ip prio 2 u32 match ip dst 192.168.1.3 flowid 1:1
</external_stop>

    Секция <external_stop> добавлена для предотвращения ошибок в результате многократного вызова при каждом поднятии линка.

   В приведенном примере символы ХХ замените на МАС-адреса сетевых карт, через которые ваши пользователи подключены к 504Т (хинт для самых продвинутых: МАС-адрес сетевой карты можно узнать, дав команду IPCONFIG /ALL в командной строке компьютера). Полученный конфиг-файл сохраните и залейте в модем стандартным способом.

Профессиональный вторичный рынок недвижимости: информация и цены.

Комментарии (12) >>

Lamer сказал: _

  Всё бы хорошо! Но разьяснил бы кто конкретные значения и параметры - те что в п.2. Так сказать по-полочкам надо бы разложить... smilies/smiley.gif
January 16, 2007

Adeptus сказал: _

  С удовольствием разъясню, только не сдесь, а в форуме.
January 16, 2007

neo сказал: _

  Друх, пошли на форум! smilies/smiley.gif
January 17, 2007

ZYV сказал: _

  Спасибо, что на меня сослались, однако два комментария:

1) Лучше оставлять , а то народ ещё ндб подумает, что их не надо закрывать.

2) Я сделал глупость, когда писал HOWTO - не смертельную, но всё же. Удалять всё созданное при падении интерфейса надо в обратном порядке... См. http://forum.ixbt.com/topic.cgi?id=14:34671-150#4050 .

3) Комментарий неверный - eth0 мы не поднимаем. Мы создаёт qdisc, привязанный к eth0. Потом к qdisc'у действительно привызываем корневой узел HTB. Ещё раз не поленюсь оставить ссылку на http://opalsoft.net/qos для тех, кто хочет понять что такое эти волшебные qdisc, HTB и т.п.
January 17, 2007

ZYV сказал: _

  Упс. Во-первых, получилось три комментария, а во-вторых, "создаёт" = "создаём" и " ," = " < / ... >,". И ещё моменты:

a) jdg-qos пессимистичен, если у вас шейпинг динамический провайдером и вы в потолках уверены, то лучше указывать в 0.8 завышенные значения uplink и downlink, а не реальные. А для резервирования пользоваться rt_bandwidth.

б) Решение задачи не при помощи jdg-qos, а при помощи tc из iproute2, но это уже занудство smilies/smiley.gif
January 17, 2007

Adeptus сказал: _

  Уважаемый ZYV, приглашаю вас в форум или в асю 258355620 - пообщаться на предмет возможного сотрудничества на проекте AWP.
January 17, 2007

ZYV сказал: _

  Уважаемый Adeptus, моя аська - 166756898, e-mail есть на сайте. Если у вас есть какие-то конкретные предложения - подумаем.
January 18, 2007

Adeptus сказал: _

  ZYV, принято, договорились.
January 18, 2007

Gleb сказал: _

  Модем завис после заливки третьего файла и никак не реагировал на окружающий мир. Пришлось везти модем в С/Ц.
Всё делал по инструкции. И ещё, прошивая 504-Т залить 500T_kernel_V1.00B02T02.RU.20051130.MC06.6b это не опечптка? заливал 504T_kernel
January 23, 2007

Adeptus сказал: _

  Fixed.
January 25, 2007

Ал сказал: _

  А на д-Линк 500Т гигабитный неуправляемый роутер, делаемё всё тоже самое?
May 16, 2008

Mitradis сказал: _

  Если кто этим еще занимается, скажите как резать скорость на ДЛ и АП раздельно
July 03, 2008
Комментарии, содержащие ссылки на другие ресурсы Сети, запрещены!
quote
bold
italicize
underline
strike
url
image
quote
quote
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley

busy
 
« Пред.   След. »