LINUX.ORG.RU
ФорумAdmin

Лимитирование большого числа пакетов по srcip с высоким pps

 ,


1

3

Всем добрый день.

Столкнулся с задачей - нужно отбрасывать любой первый входящий UDP-пакет с любого IP. То есть, при поступлении пакета с IP x.x.x.x, DROP'ать его, любые следующие пакеты с данного IP нужно пропускать.

Что в настоящий момент: 1) Двухпроцессорный Xeon E5-2600 серии с linux на борту, никаких conntrack конечно и т.п. 2) Около 3Mpps и 1Gbps входящего трафика 3) Одновременно около 2Mpps различных source IP.

Опытным путем выяснено, что hashlimit с трудом выполняет задачу, но при этом утилизируя все ядра в полку (свободных ресурсов не остается вообще) и есть потери пакетов. Учитывая, что в будущем нагрузка будет только расти, вариант не подходит.

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

Возможно, кому-то известны какие-то способы/модули iptables для снижения нагрузки? Штатные средства не подойдут явно, но может кто какой модуль знает.


нужно отбрасывать любой первый входящий UDP-пакет с любого IP. То есть, при поступлении пакета с IP x.x.x.x, DROP'ать его, любые следующие пакеты с данного IP нужно пропускать.

ipset

А при чем тут hashlimit?

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

ipset create allowlist hash:ip family inet hashsize 1024 maxelem 65536 timeout 600

iptables -A INPUT -p udp -m set --match-set allowlist src -j ACCEPT
iptables -A INPUT -p udp -j SET --add-set allowlist src
iptables -A INPUT -p udp -j DROP

------------
первый пакет пришедший, добавляется в ipset
следующий пакет уже проходит, ибо в ipset его ип есть.

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

maxelem 65536

А у него там пару мильйонов, так что надо цифирь поболе.

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

+ к blind_oracle

hashsize для 2-х лямов тоже есть смысл увеличить до 2^13-2^14

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

Спасибо за ответ.

На тестах вариант с ipset показал аналогичные hashlimit результаты.

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