Pull to refresh

Comments 19

это всё хорошо, но сейчас netmap-enabled драйверов в freebsd всего 5 штук =(
В моих тестах всё сильно зависит от используемого драйвера. Если драйвер умеет использовать несколько ядер (ixgb, ixgbe), то всё хорошо. Если не умеет (e1000), то всё плохо.

В линуксах есть pktgen (модуль ядра), который способен срать со скоростью среды (точнее, со скоростью сетевухи).
По идее e1000 умеет работать на скоростях не больше 1Gbit/s. Если учесть, что, только на одном ядре, netmap поднимает пакеты из кабеля в userspace со скоростью 14Mpps (10Gbp/s), есть ли смысл драйверу поддерживать многоядерность?
На мелких пакетах (512 бит) это почти 2Mpps, а e1000 столько не выжимает. Печалька.
Если я правильно помню, размер самого мелкого ethernet-пакета может быть не менее 84 байт.

1. Interframe gap — 12 байт
2. Preamble — 8 байт
3. DST + SRC MAC — 12 байт
4. Ether type — 2 байта
5. Payload — 46 байт минимум
6. CRC — 4 байта
Итого: 84 байта или 672 бита

Получается, если нет коллизий, через 1Gbit/s = 1 073 741 824 bit/s, можно прокачать 1.5 Mpps (1 597 830).
Думаю, что создатель Netmap Luigi Rizzo, просто не стал заморачиваться поддержкой многоядерности, т.к. на одном 900Mhz ядре он поднимает в userspace целых 14Mpps.
Не, я про другое. Даже если netmap сгенерирует столько, то e1000 просто не выплюнет столько в сеть, будет 100% irq и на этом всё.
Если не умеет (e1000), то всё плохо.

не знаю, насчёт e1000, но у меня igb в linux спокойно выдаёт 1.48mpps одним ядром.

В линуксах есть pktgen (модуль ядра), который способен срать со скоростью среды (точнее, со скоростью сетевухи).


увы, всё сильно зависит от сетевухи. на r8169 и sky2 цифры удручающие.
igb совсем другой расклад. Кстати, откуда «одно ядро»? igb размазывается по всем ядрам по-умолчанию.
em (e1000) не умеет 1.48 мппс.

на 600к-800к начинает задыхаться и не важно какие настройки…
ну я даже не знаю. у меня e1000e, 82572EI выдал 1.2mpps на одном ядре.
на 82545 делал 1,1
на 82571 и выше — 1,48
vendor=0x8086 device=0x1096 subvendor=0x108e subdevice=0x4843 class=0x020000
Вот такое чудо, на интеловском сайте найти не могу, полагаю магия Sun Microsystems.
искать нужно по чипу, например:
# 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).
Одни
chip=0x10968086
другая пара
chip=0x105e8086

Но основной работает первая пара.
Хм, чудная зверушка. первый раз вижу, чтоб чип не бился. Бывало, что не совпадает с vendor/device.
Не помешало бы и в следствие неэффективности атак их стало бы меньше.
Ну компания коммерческая, явно это теперь продукт за денюжку :)
Значит самое время написать OpenSource аналог. Вызов принят =)
Sign up to leave a comment.

Articles