Ограничение входящего и исходящего трафика (ширины пропускания канала) в 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

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

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

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

chmod 777 /etc/config/user.sh

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

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