Данная настройка должна выполняться независимо от модели АП и типа передаваемого трафика. Конфигурирование количества очередей на сетевой карте является необходимым условием для оптимизации производительности аппаратных платформ. Остальные параметры, касающиеся 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
Вывод консоли свидетельствует о том, что теперь количество очередей для обработки прерываний равно двум.