Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Ограничение входящего и исходящего трафика (ширины пропускания канала) в RG24xx/44xx осуществляется с помощью инструмента traffic control (tc) из iproute2. Ограничение работает только в режиме роутера (маршрутизатора).

  • Порядок первого конфигурирования устройства
  • Изменение параметров
  • Отключение ограничений

Порядок первого конфигурирования устройства:

1) Подключаемся к консоли шлюза RG (com/telnet/ssh)

2) Создаем локально на устройстве скрипт. Ввиду особенностей файловой системы локальный скрипт должен располагаться только в каталоге /etc/config, т.к. только содержимое этого каталога сохраняется после перезагрузки устройства:

vi /etc/config/user.sh

И копируем туда следующее:

# CLEAR
#!/bin/sh
tc=tc
lan=eth1
bw=2000kbit
$tc qdisc del dev $lan handle ffff: ingress
$tc filter del dev $lan parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $bw burst 10kb drop flowid :1
$tc qdisc del dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate $bw

# WAN--->LAN
#!/bin/sh
tc=tc
lan=eth1
bw=2000kbit
$tc qdisc add dev $lan handle ffff: ingress
$tc filter add dev $lan parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $bw burst 10kb drop flowid :1

# LAN--->WAN
#!/bin/sh
tc=tc
lan=eth1
bw=8000kbit
$tc qdisc add dev $lan handle ffff: ingress
$tc qdisc add dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate $bw

Комментарии:

  • WAN--->LAN - ограничение трафика из внешней сети (WAN) во внутреннюю (LAN). Задается параметром bw. В примере bw=2000kbit (2000кбит/с)
  • LAN--->WAN - ограничение трафика из внутренней сети (LAN) во внешнюю (WAN). Так же задается параметром bw. На примере bw=8000kbit (8000кбит/с)
  • lan=eth1 - выбранный интерфейс. В данном примере eth1 соответствует внешнему интерфейсу, а br0 - внутреннему. Посмотреть можно командами ifconfig и brctl show в CLI

Выходим из редактора vi с сохранением файла.

3) После создания скрипта ему необходимо назначить права на запуск командой:

chmod 777 /etc/config/user.sh

4) В устройстве серии RG-24xx/RG-44xx предусмотрена возможность через конфигурационный файл настроить запуск произвольного скрипта, в который можно поместить любую желаемую последовательность команд. Для запуска нашего скрипта в файле конфигурации создана секция настроек UserScript.

  • Заходим в файл конфигурации RG:
    vi /etc/config/cfg.yaml
  • Находим поле UserScript. Выставить опцию «Enable» в значение 1 для запуска скрипта. В параметре URL прописать путь к скрипту вида File://etc/config/user.sh. В итоге должно получиться следующее:
    UserScript:
    Enable: "1"
    URL: "File://etc/config/user.sh"

5) В этом же файле конфигурации обязательно нужно выключить опцию EnableHWAccelerate которая находится в ветке Internet.Network. Меняем значения параметра EnableHWAccelerate с «1» на «0»:

EnableHWAccelerate:"0"

6) Выходим из редактора vi с сохранением файла конфигурации. Применяем и сохраняем конфигурацию:

 reloadcfg 
save

7) Запускаем скрипт командой:

./etc/config/user.sh

На этом настройка ширины пропускания канала на RG24xx/44xx с помощью утилиты tc закончена. После перезагрузки скрипт будет запускать автоматически.

Изменение параметров:

Для изменения параметров необходимо скорректировать значение bw в файле /etc/config/user.sh или закомментировать некоторые правила.

Например, сделать ограничение только входящей связи (из внешней сети) до 5Мбит/с можно следующим образом:

 # CLEAR
#!/bin/sh
tc=tc
lan=eth1
bw=2000kbit
$tc qdisc del dev $lan handle ffff: ingress
$tc filter del dev $lan parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $bw burst 10kb drop flowid :1
$tc qdisc del dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate $bw

# WAN--->LAN
#!/bin/sh
tc=tc
lan=eth1
bw=5Mbit
$tc qdisc add dev $lan handle ffff: ingress
$tc filter add dev $lan parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $bw burst 10kb drop flowid :1

# LAN--->WAN
#!/bin/sh
# tc=tc
# lan=eth1
# bw=8000kbit
# $tc qdisc add dev $lan handle ffff: ingress
# $tc qdisc add dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate $bw

После изменения файла необходимо запустить скрипт командой:

./etc/config/user.sh

Отключение ограничений:

Для отключения ограничений необходимо закомментировать правила в файле /etc/config/user.sh:

 # CLEAR
#!/bin/sh
tc=tc
lan=eth1
bw=2000kbit
$tc qdisc del dev $lan handle ffff: ingress
$tc filter del dev $lan parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $bw burst 10kb drop flowid :1
$tc qdisc del dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate $bw

# WAN--->LAN
#!/bin/sh
# tc=tc
# lan=eth1
# bw=5Mbit
# $tc qdisc add dev $lan handle ffff: ingress
# $tc filter add dev $lan parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $bw burst 10kb drop flowid :1

# LAN--->WAN
#!/bin/sh
# tc=tc
# lan=eth1
# bw=8000kbit
# $tc qdisc add dev $lan handle ffff: ingress
# $tc qdisc add dev $lan handle 1:0 root tbf burst 20k limit 20k mtu 1514 rate $bw

После этого необходимо запустить скрипт командой:

./etc/config/user.sh

Так же для полного восстановления скорости передачи данных необходимо проделывать пункты 4,5,6 из первого раздела в обратном порядке (при этом отключится работа скрипта после перезагрузкиустройства). Для этого необходимо:

  • открыть редактирование файла /etc/config/cfg.yaml
     vi /etc/config/cfg.yaml
  • выставить в разделе UserScript опцию «Enable» в значение "0":
    UserScript:
    Enable: "0"
    URL: "File://etc/config/user.sh"
  • выставить параметр EnableHWAccelerate в значение "1":
    EnableHWAccelerate:"1"
  • выйти из редактора vi с сохранением файла;
  • применить и сохранить конфигурацию:
    reloadcfg
    save