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 ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.