LINUX.ORG.RU

перегруз ядра от iptables


0

3

Стоит правило DROP определенного размера пакета при syn флуде, но когда летит около 400-500тыс пакетов, первое ядро становится на 100% а остальные отдыхают. Как сделать распределение нагрузки на все ядра нагрузки? Debian 6


Ответ на: комментарий от anonymous

если не дропать пакеты, даже ssh помирает при syn флуде

User01
() автор топика

Повторяю еще раз! настрой rps или распредели прерывания от сетевой карты по разным ядрам, если сетевушка имеет несколько очередей прерываний.

А сколько правил проходит пакет прежде чем его дропнут ?

vel ★★★★★
()
Ответ на: комментарий от vel

мне кажется или ядро 2.6 не поддерживает или сетевая не умеет такого. У меня апачь, iptables и тд грузит именно одно ядро.

правило стоит только одно, дроп определенного размера пакета и всё.

vel можем ли мы как-то связаться помимо форума?

User01
() автор топика
Ответ на: комментарий от User01

ядра 2.6.35 и выше поддерживают rps/rfs

Можно попробовать разрешить обрабатывать прерывания от сетевой карты всем ядрам через /proc/irq/X/smp_affinity (Documentation/IRQ-affinity.txt)

Если правила фильтрации не нуждаются в conntrack, то есть смысл либо не загружать conntrack, либо использовать NOTRACK на все пакеты. Это даст до 20% снижения нагрузки на CPU.

С другой стороны для борьбы с synflood не так давно появился SYNPROXY, но не для ядер 2.6.*

Ядра 2.6 не лучший выбор для нагруженного сетевого стека. Там есть проблемы с масштабированием. Если в системе нет сторонних ядерных модулей, то есть смысл апгрейда ядра и iptables.

А сколько сетевых карт используется и что за модель? Для таких задач лучше взять что-то умное типа i82576 - у нее до 8 очередей которые можно привязать к разным ядрам

# echo 1 >/proc/irq/62/smp_affinity
# echo 2 >/proc/irq/63/smp_affinity
# echo 4 >/proc/irq/64/smp_affinity
# echo 8 >/proc/irq/65/smp_affinity
# grep . /proc/irq/6[2-5]/smp_affinity
/proc/irq/62/smp_affinity:01
/proc/irq/63/smp_affinity:02
/proc/irq/64/smp_affinity:04
/proc/irq/65/smp_affinity:08

# cat /proc/interrupts  | grep eth3
 62:   27059393          0          0          0          0          0          0          0   PCI-MSI-edge      eth3-TxRx-0
 63:   25473227         84          0          0          0          0          0          0   PCI-MSI-edge      eth3-TxRx-1
 64:   32545173          0         75          0          0          0          0          0   PCI-MSI-edge      eth3-TxRx-2
 65:   41569886          0          0         73          0          0          0          0   PCI-MSI-edge      eth3-TxRx-3
 66:   15782171          0          0          0          0          0          0          0   PCI-MSI-edge      eth3-TxRx-4
 67:   42104110          0          0          0          0          0          0          0   PCI-MSI-edge      eth3-TxRx-5
 68:   35121135          0          0          0          0          0          0          0   PCI-MSI-edge      eth3-TxRx-6
 69:  231720760          0          0          0          0          0          0          0   PCI-MSI-edge      eth3-TxRx-7
Другие карты умеют распределять прерывания по всем доступным ядрам автоматически
cat /proc/interrupts | grep eth0
 44: 1597706434  544926663  208654555  160181150   PCI-MSI-edge      eth0-rx-0
 45:  574643552  487930004  183058125  132526011   PCI-MSI-edge      eth0-tx-0

grep . /proc/irq/4[56]/smp_affinity
/proc/irq/45/smp_affinity:f
/proc/irq/46/smp_affinity:f

vel ★★★★★
()
Ответ на: комментарий от vel

Две встроенные двухпортовые сетевые платы Gigabit Ethernet с переключением при отказе и выравниванием нагрузки Broadcom® NetXtreme IITM 5709c

Ядро посмотреть не могу, ставил уже собранное. Касательно что я фильтрую, так это 40б пакеты syn, дропаю без разбирательств.

root@gs12:~# cat /proc/interrupts | grep eth1 78: 2770674759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-0 79: 246095441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-1 80: 3351476032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-2 81: 2519360754 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-3 82: 621351134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-4 83: 3748177985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-5 84: 2659613654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-6 85: 3577352454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-7 root@gs12:~#
User01
() автор топика
Ответ на: комментарий от User01

есть уменя такие в dell PE710 с ядром 3.4

01:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
# grep eth0 /proc/interrupts 
  72:    4637473    4648338    4634841    4642077    4639646    4632080    4636487    4638373   PCI-MSI-edge      eth0-0
  73:   28865534   28856385   28855422   28867716   28856629   28874950   28879955   28858123   PCI-MSI-edge      eth0-1
  74:  100510204  100420631  100601584  100450968  100570097  100425020  100469015  100444545   PCI-MSI-edge      eth0-2
  75:   22540081   22571249   22524333   22565508   22529988   22571346   22552739   22568839   PCI-MSI-edge      eth0-3
  76:   25602741   25616977   25578567   25606039   25585640   25605203   25600272   25610555   PCI-MSI-edge      eth0-4
  77:   22298302   22320823   22288757   22317737   22288379   22318115   22303948   22322573   PCI-MSI-edge      eth0-5
  78:   24338080   24345130   24331846   24335876   24329845   24343540   24340938   24342140   PCI-MSI-edge      eth0-6
  79:   22815589   22824130   22802063   22814805   22808630   22825094   22822275   22824949   PCI-MSI-edge      eth0-7
что мешает сказать
echo 1 >/proc/irq/78/smp_affinity
echo 2 >/proc/irq/79/smp_affinity
echo 4 >/proc/irq/80/smp_affinity
echo 8 >/proc/irq/81/smp_affinity
echo 10 >/proc/irq/82/smp_affinity
echo 20 >/proc/irq/83/smp_affinity
echo 40 >/proc/irq/84/smp_affinity
echo 80 >/proc/irq/85/smp_affinity

Ядро посмотреть не могу, ставил уже собранное

Это как ? «uname -r» не работает ?

vel ★★★★★
()
Ответ на: комментарий от vel

uname -r 3.0.0-ub-100hz ставил другое ядро, поэтому по названию судить некак.

«что мешает сказать» с этим не понял что делать root@gs12:~# grep . /proc/irq/4[56]/smp_affinity grep: /proc/irq/4[56]/smp_affinity: No such file or directory root@gs12:~#

User01
() автор топика
Ответ на: комментарий от User01

версию ядра можно посмотреть в /proc/version

3.0 - конечно лучше 2.6, но 3.0 это переходное ядро. Если оно работает с ядром 3.0, то апгрейд до 3.4(последняя старая ветка) должен быть простым.

Я приводил пример на машинке где сетевая карта использовала irq 45 и 46. У тебя они другие (78...85). Вот в этих irq и смотри содержимое smp_affinity ( и меняй ).

«grep . file1 file2 ...» - одной командой выводит содержимое всех указанных файлов с указанием имени файла в начале каждой строки. А про 4[56] - man bash /Brace Expansion.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от User01

вот что получаю, везде одинаково

root@gs12:~# grep . /proc/irq/78/smp_affinity
00ffffff
root@gs12:~# grep . /proc/irq/79/smp_affinity
00ffffff
root@gs12:~# grep . /proc/irq/80/smp_affinity
00ffffff
root@gs12:~# grep . /proc/irq/81/smp_affinity
00ffffff
root@gs12:~#

User01
() автор топика
Ответ на: комментарий от User01

Вот как вышло, не понятно распределяет

root@s20:~# cat /proc/interrupts | grep eth1
  78: 3763772155          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-0
  79: 2495400463    2324589          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-1
  80: 1175996983          0    1410498          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-2
  81:  209223582          0          0     759949          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-3
  82: 2962755566          0          0          0    1100963          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-4
  83: 1687213152          0          0          0          0     859575          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-5
  84:  212859375          0          0          0          0          0     553138          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-6
  85: 1253183739          0          0          0          0          0          0     692256          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth1-7

User01
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.