Конфигурирование количества очередей на сетевой карте

Данная настройка должна выполняться независимо от модели АП и типа передаваемого трафика. Конфигурирование количества очередей на сетевой карте является необходимым условием для оптимизации производительности аппаратных платформ. Остальные параметры, касающиеся L3 VPN (cpu_distribution, NUMA, Hyper-Threading), корректно настроены на стадии производства АП.

Для того, чтобы определить, какое количество очередей выделено на обработку пакетов, например, сетевого интерфейса eth13, необходимо воспользоваться командой:

root@Gate7000:~# ethtool –l eth13

Channel parameters for eth13:

Pre-set maximums:

RX:             0

TX:             0

Other:          1

Combined:       24

Current hardware settings:

RX:             0

TX:             0

Other:          1

Combined:       24

Вывод команды приведён на АП «С-Терра Шлюз 7000». Параметр “Combined” в поле “Current hardware settings” свидетельствует о том, что на сетевом интерфейсе eth13 выставлено 24 очереди. На устройстве «С-Терра Шлюз 8000» количество очередей по умолчанию - 56.

Количество очередей, на которые сетевая карта будет раскладывать пакеты, должно быть равно количеству ядер, отведённых на обработку прерываний (irq cores) VPN драйвером.

Количество ядер в VPN драйвере, отвечающих за прерывания, можно посмотреть в файле /etc/modprobe.d/vpndrvr.conf:

root@Gate7000:~# cat /etc/modprobe.d/vpndrvr.conf | grep cpu

options vpndrvr cpu_distribution=*:2/18

Параметр cpu_distribution модуля vpndrvr имеет следующий формат:

*:<irq cores>/<working cores>

·         <irq cores> позволяет указать число процессорных ядер, выделенных на обработку прерываний сетевых интерфейсов;

·         <working cores> позволяет указать число процессорных ядер, используемых для IPsec обработки.

Изменять параметры cpu_distribution без согласования с вендором – запрещено.

Вывод команды свидетельствует о том, что на обработку прерываний выделено 2 ядра (irq cores), а на IPsec шифрование выделено 18 ядер (working cores). Так как значение irq cores равно 2, то раскладывать поступающие пакеты необходимо в 2 очереди. Для того, чтобы выставить на сетевом интерфейсе 2 очереди, необходимо:

1.    Создать файл /etc/rc.local.inc:

root@Gate7000:~# vim.tiny /etc/rc.local.inc

2.    Поместить в созданный файл строки ниже, записав в переменную QNUM значение <irq cores>, которое указано в параметре cpu_distribution (в данном случае, оно равно 2). Имена интерфейсов, на которых нужно выставить две очереди, необходимо задавать в нотации linux. Данная настройка производится только на тех физических сетевых интерфейсах, через которые проходит трафик.

      Пример 1. LAN-интерфейс – это eth13, WAN-интерфейс – это eth1, то файл /etc/rc.local.inc должен иметь вид:

wan_if=eth1

lan_if=eth13

QNUM=2

ethtool -L $wan_if combined $QNUM

ethtool -L $lan_if combined $QNUM

Пример 2. WAN-интерфейсы eth0 и eth1 объединены в bond, а LAN-интерфейс – это eth13, то файл /etc/rc.local.inc должен иметь вид:

wan_if_0=eth0

wan_if_1=eth1

lan_if=eth13

QNUM=2

ethtool -L $wan_if_0 combined $QNUM

ethtool -L $wan_if_1 combined $QNUM

ethtool -L $lan_if combined $QNUM

3.    Выдать права на запуск созданного файла:

root@Gate7000:~# chmod u+x /etc/rc.local.inc

4.    Перезапустить сервис rc.local:

root@Gate7000:~# systemctl restart rc.local.service

Данный файл будет выполняться автоматически после загрузки ОС или же после перезагрузки сервиса rc.local.

5.    Проверить количество очередей:

root@Gate7000:~# ethtool –l eth13

Channel parameters for eth13:

Pre-set maximums:

RX:             0

TX:             0

Other:          1

Combined:       24

Current hardware settings:

RX:             0

TX:             0

Other:          1

Combined:       2

Вывод консоли свидетельствует о том, что теперь количество очередей для обработки прерываний равно двум.