Ручная балансировка трафика

В некоторых случаях сетевая карта может неравномерно распределить поступающие пакеты  по очередям (посмотреть балансировку пакетов, например, на интерфейсе eth1, можно при помощи команды ethtool -S eth1 | grep "tx_queue_0_p\|tx_queue_1_p\|rx_queue_0_p\|rx_queue_1_p"). Для равномерного распределения пакетов по очередям можно применить ручную балансировку трафика.

Для балансировки поступающего трафика необходимо воспользоваться командой ethtool.

В файл /etc/rc.local.inc (с его содержимым можно ознакомиться в главе «Конфигурирование количества очередей на сетевой карте»), помимо выставления двух очередей на интерфейсах, необходимо добавить строки с командами ethtool --config-ntuple <...>. Так, например, если LAN-интерфейс – это eth13 и поступающие на него пакеты имеют destination-адрес 10.1.1.1 и 10.2.2.1, а WAN-интерфейс – это eth1 и поступающие на него пакеты имеют destination-адрес 192.168.2.127 и 192.168.2.128, то файл /etc/rc.local.inc должен иметь вид:

wan_if=eth1

lan_if=eth13

QNUM=2

 

ethtool -L $wan_if combined $QNUM

ethtool -L $lan_if combined $QNUM

 

ethtool -K $wan_if ntuple on

ethtool -K $lan_if ntuple on

 

ethtool --config-ntuple $wan_if flow-type ip4 dst-ip 192.168.2.127 action 0 loc 100

ethtool --config-ntuple $wan_if flow-type ip4 dst-ip 192.168.2.128 action 1 loc 101

 

ethtool --config-ntuple $lan_if flow-type ip4 dst-ip 10.1.1.1 action 0 loc 100

ethtool --config-ntuple $lan_if flow-type ip4 dst-ip 10.2.2.1 action 1 loc 101

·          “action 0” – очередь под номером 0;

·         “ip4” – название протокола;

·         “loc 100” – номер правила на интерфейсе.

Пакеты, поступающие на интерфейс eth13 (LAN-интерфейс) и имеющие destination-адрес 10.1.1.1, будут отправлены в нулевую очередь, а пакеты, имеющие destination-адрес 10.2.2.1, будут отправлены в первую очередь. Аналогичная настройка происходит на интерфейсе eth13. Пакеты также можно балансировать при помощи source адресов (src-ip).

Подробнее ознакомиться с правилами распределения пакетов при помощи команды ethtool можно, используя мануал: man ethtool

После балансировки трафика, необходимо отследить загруженность ядер, распределение пакетов по очередям и ядрам. Загрузка должна быть равномерной.