Intel vs DDoS

в 8:43, , рубрики: ddos, intel, testing, Песочница, Сетевые технологии, системное администрирование, метки: , ,

Всё описанное ниже нельзя рассматривать как руководство к действию и рекламу продукции описанной ниже фирмы. Это лишь результаты тестирования проведённые в один из дней когда нам понадобился очередной сервер в очередном датацентре. Основным критерием при выборе сервера была стрессоустойчивость при SYN/UDP атаках.

Зачастую при выборе сервера администратор не «заморачивается» с выбором сетевой карты, полагая, что все карты одинаковы, однако на своём опыте мы давно пришли к выводу что лучше Intel'a бывает только Intel. Но не все Intelы одинаковы, и когда датацентр предложил на выбор 3 сервера с различными Intel'ами на борту мы решили их предварительно оттестировать, дабы выяснить стоит ли платить больше, т.к. разбежка в цене составляла 300%.

Сразу стоит отметить что тесты проводились на собственных картах, а встроенные карты могут отличаться от своих «не бортовых» собратьев построенных на тех же чипах, потому о полной чистоте теста говорить не приходится, но чем богаты…

Для начала нам надо определиться с какими чипами мы имеем дело. Для этого воспользуемся утилитой pciconf, которая доступна во FreeBSD из коробки:

# pciconf -lv | grep -i device
    ...
    device     = '82541PI Gigabit Ethernet Controller'

# pciconf -lv | grep -i device
   ...
    device     = 'I350 Gigabit Network Connection'
    device     = 'I350 Gigabit Network Connection'

 
# pciconf -lv | grep -i device
   ...
    device     = '82545EM Gigabit Ethernet Controller (Copper)'
 
# pciconf -lv | grep -i device
   ...
   device     = '82576 Gigabit Network Connection'
   device     = '82576 Gigabit Network Connection'

В 4-x случаях всё решилось просто, но 5-й девайс не распознан. Идём другим путём:

# pciconf -lv | more
...
none0@pci0:1:0:0: class=0x020000 card=0x10d315d9 chip=0x10d38086 rev=0x00 hdr=0x00
...

В ряду шифровок нас интересует chip=0x10d38086, который декодируется согласно данных с сайта производителя — www.intel.com/support/network/sb/CS-012904.htm. Первые четыре цифры это DevID(10d3), вторые четыре VendorID(8086).

Desktop Adapters & Network Connections
Board #
(PWA)
Product Name Intel Part Number More
Information
Latest drivers
E46981-xxx Intel® Gigabit CT Desktop Adapter EXPI9301CT
EXPI9301CTBLK
RJ45, 10/100/1000, PCI-e, 82574L

VendorID:8086, DevID: 10D3

Latest drivers

Итак наш пятый пациент 82574L

Собираем тестовый стенд. Атакуемая рабочая станция и три генератора флуда работающие под управлением FreeBSD 9.0 «соединяем» через коммутатор D-LINK DGS-3612.

Слегка тюнигуем систему:

# cat /boot/loader.conf
kern.ipc.nmbclusters=256000
kern.ipc.numopensockets=256000
net.inet.tcp.tcbhashsize=4096
 
hw.igb.max_interrupt_rate=256000
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.num_queues=4
hw.igb.rx_process_limit=4096

#hw.em.rxd=4096
#hw.em.txd=4096
#hw.em.num_queues=4
#hw.em.rx_process_limit=4096

# sysctl -a net.isr.dispatch
net.isr.dispatch: direct

В качестве источника флуда будем использовать утилиту iperf.
стартуем:

# iperf -c 10.0.0.1 -t 60 -u -b100000000 -l 60 -P 16

82541PI

# netstat -w 1 -inb
                        input           (Total)           output
   packets  errs    idrops      bytes     packets  errs       bytes colls
    556487      0        0   33389220          21     0        3570     0
    575695      0        0   34541700          1      0        170      0
    682919      0        0   40975140          21     0        3570     0
    760146  50437        0   45608760          32     0        5440     0
    778946  93314        0   46736760          31     0        5270     0
    799891 142871        0   47993400          31     0        5270     0
    799912 187436        0   47994780          31     0        5270     0
    799027 200552        0   47941620          31     0        5270     0

82576

# netstat -w 1 -inb
            input        (Total)           output
   packets  errs idrops       bytes    packets  errs      bytes  colls
    962227     0      0    57655860         25     0       4730      0
   1092726    69      0    65421996         29     0       5582      0
    997903     0      0    59745752         36     0       6968      0
    885540 89130      0    53028100         89     0      20492      0
   1049650     0      0    62841000         42     0       7956      0
   1174459     0      0    70282864         40     0       7356      0
   1247436  8307      0    74639760         38     0       7212      0
   1236316 19944      0    73995244         44     0       8644      0

I350

# netstat -w 1 -inb
            input           (Total)           output
   packets   errs idrops      bytes    packets  errs      bytes colls
   1433025      0      0   85981500         32     0       6032     0
   1436316      0      0   86178960         44     0       8644     0
   1439834      0      0   86390040         37     0       7250     0
   1547262      0      0   92835720         34     0       6832     0

82545EM

# netstat -w 1 -inb
            input           (Total)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
    180350   1473     0   10821000         13     0       2338     0
    290362  14374     0   17421720          9     0       2010     0
    390550 171473     0   23433000         13     0       2338     0
    390822 164374     0   23449320          9     0       2010     0
    391377 146025     0   23482620         10     0       2004     0
    386249 158581     0   23174940         11     0       2126     0

82574L

# netstat -w 1 -inb
            input        (Total)           output
   packets   errs   idrops      bytes     packets  errs       bytes colls
    697569      0        0   40975140          21     0        3570     0
    780356  49863        0   45608760          32     0        5440     0
    800464 245705        0   48027936          22     0        3740     0
    800443 246861        0   48026612          21     0        3570     0
    800462 242928        0   48027784          22     0        3740     0
    800448 237661        0   48026880          21     0        3570     0

Результаты в общем-то ожидаемые. «Старичок» 82545EM не выдерживает никакой критики. 82541PI и 82574L показали достаточно неплохие результаты для чипов, которые Intel практикует и на десктопных картах, однако использовать их на серьёзной нагрузке врядли стоит. 82576 почти справляется с миллионом пакетов, но с учётом того, что на момент появления ошибок утилизация процессора составила порядка 7%, можно считать, что это потолок адаптера. Безусловным лидером оказался i350, что и ожидалось от одного флагаманов гигабитных карт от Intel.

Автор: DDoSExpert

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js