[Sysadmins] Борьба с synflood

Dubrovskiy Viacheslav slava на tangramltd.com
Чт Дек 20 10:20:30 MSK 2012


12.12.2012 00:33, Michael A. Kangin пишет:
> Добрый день.
>
> хочется запинать систему, которая бы выдерживала как можно большее PPS
> синфлуда без вреда для предоставляемых сервисов.
>
> Есть тестовый сервер с двумя ксеончиками, и сетевухой Intel
> Corporation 82580 Gigabit Network Connection (драйвер igb).
>
> Запускаем на нём в качестве жертвы апача с тестовым cgi, который
> рассказывает текущее время - так проверяем отзывчивость сервиса.
>
> атакуем так с другого сервера:
> hping3 <ip> -p 80 -S --rand-source --flood
> Это даёт нам порядка 380K pps исходящего.
>
> А атакуемый сервер (p6, std-def) принимает только порядка 75K,
> остальное дропает. Ну и сервис отвечает более-менее уверенно только до
> 150K.
>
> Если поставить 3.4.21-un-def-alt0.M60P.1, число принимаемых пакетов
> немного увеличивается, до 110К. Причём, количество принимаемых пакетов
> снижается с ростом нагрузки - так, при атаке под 500К принимается уже
> только 90K.
>
> Немного лучше себя ведёт Centos6 - она вполне принимает до 140K, и
> сохраняет отзывчивость сервиса до 200К с атакующей стороны.
>
> На атакуемой машинке в htop'е светятся красным все ядра, отданные под
> прерывания сетевухи и довольно высокий LA.
>
>
> Интриги добавляет тот факт, что Линупс сосёт.
>
> Если на этот сервер поставить FreeBSD9, то она принимает под 450К без
> всякого ухудшения сервиса. И живёт со скрипом вплоть до 750К с
> атакующей машины, больше я с неё не смог выжать.
>
> Собственно, что сделать можно под Линуксом?
> Все настройки в целом по умолчанию (кроме раскидывания прерываний по
> ядрам процессора). Я пробовал много шаманств - и всякие там sysсtl
> крутить, и длины очередей в ifconfig и ethtool, и параметры igb. Все
> бесполезно (да и раскидывание прерываний, подозреваю, тоже).
Еще идея. А пробовали менять TCP congestion avoidance algorithm?
Во фре по умолчанию используется NewReno.
http://en.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm
TCP New Reno is the most commonly implemented algorithm, SACK support is
very common and is an extension to Reno/New Reno. Most others are
competing proposals which still need evaluation. Starting with 2.6.8 the
Linux kernel switched the default implementation from Reno to BIC. The
default implementation was again changed to CUBIC in the 2.6.19 version.
FreeBSD uses NewReno as the default algorithm.

-- 
WBR,
Dubrovskiy Viacheslav

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : smime.p7s
Тип     : application/pkcs7-signature
Размер  : 3746 байтов
Описание: п я─п╦п©я┌п╬пЁя─п╟я└п╦я┤п╣я│п╨п╟я▐ п©п╬п╢п©п╦я│я▄ S/MIME
Url     : <http://lists.altlinux.org/pipermail/sysadmins/attachments/20121220/15c672e5/attachment.bin>


Подробная информация о списке рассылки Sysadmins