Окт 11, 2015 - 0 Comments - Интересно -

CloudFlare применил NetMap для повышения скорости обработки пакетов в Linux

11.10.2015 08:25 CloudFlare применил NetMap для повышения скорости обработки пакетов в Linux

Добившись возможности обрабатывать на штатном сетевом стеке ядра Linux миллион пакетов в секунду, инженеры сети доставки контента CloudFlare продолжили разработку методов увеличения скорости обработки трафика. На этот раз была предпринята попытка задействовать средства прямого взаимодействия с сетевым адаптером, позволяющие в десять раз поднять скорость обработки пакетов по сравнению с использованием сетевого стека Linux.

Для организации прямой обработки пакетов решено использовать фреймворк NetMap, который разработан для FreeBSD, но также поддерживает Linux и Windows. Проблема оказалась в том, что NetMap осуществляет перенаправление обработки всех входящих (RX) очередей сетевой карты, отсоединяя их от штатного сетевого стека, в то время как была поставлена задача раздельной обработки очередей: при помощи NetMap планировалось обрабатывать только простейшие потоки трафика, связанные с вредоносной активностью, такой как UDP-флуд, а обработку обычного трафика необходимо было оставить как есть с использованием штатного сетевого стека Linux.

В итоге, компания CloudFlare присоединилась к разработке NetMap и, развив имеющиеся наработки Павла Одинцова, подготовила набор изменений с реализаций режима выборочной обработки RX-очередей пакетов, позволяющего связать с NetMap отдельные очереди пакетов, закрепив остальные за обработчиком в сетевом стеке ядра. Перенаправив в связанную с NetMap очередь специфичный трафик, появляется возможность его обработки специально оптимизированным приложением вне сетевого стека.

Данное NetMap-приложение выделяет в общем потоке нормальные запросы и возвращает их на обработку в обычный сетевой стек, отсеивая флуд (например, в результате DDoS-атаки через наводнение DNS-запросами). Тестирование показало, что подобный обработчик в пространстве пользователя способен разбирать трафик со скоростью 5.8 млн пакетов в секунду, при сохранении неизменного процесса обработки ядром остальных сетевых потоков.

  1. Главная ссылка к новости (https://blog.cloudflare.com/si…)
  2. OpenNews: Оценка способности сетевого стека Linux обрабатывать миллион пакетов в секунду
  3. OpenNews: Зафиксирована рекордная DDoS-атака с интенсивностью трафика в 400 Гбит/с (дополнено)
  4. OpenNews: На Spamhaus.org обрушилась крупнейшая в истории DDoS-атака
  5. OpenNews: Отчет о состоянии развития FreeBSD за второй квартал 2011 года
Тип: Практикум
Ключевые слова: cloudflare, network, linux, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
 
–1 +/
>попытка задействовать средства прямого взаимодействия с сетевым адаптером

Но всё это счастье будет работать лишь на некоторых сетевушках? Т.е. нужен модуль для ядра, и отдельный для юзерспейсного NetMap?
Возможно это имеет смысл для спец.прошивок для спец.оборудования, но в общем виде не вызывает особого энтузиазма.

 
 
+7 +/
Почти на всех 10-гигабитных адаптерах такое можно сделать.
Нужен свой NetMap-драйвер, на сегодня поддерживаются r8169, ixgbe, igb, e1000, e1000e и forcedeth.

Пример, для Intel IXGBE:

insmod ./LINUX/netmap.ko
insmod ./LINUX/ixgbe/ixgbe.ko
(let CPU=0; cd /sys/class/net/eth3/device/msi_irqs/; for IRQ in *; do
  echo $CPU > /proc/irq/$IRQ/smp_affinity_list; let CPU+=1
  done)
ethtool -K eth3 ntuple on
ethtool -X eth3 weight 1 1 1 1 0 1 1 1 1 1
ethtool -N eth3 flow-type udp4 dst-port 53 action 4
ethtool -K eth3 lro off gro off
taskset -c 15 ./nm_offload eth3 4

 
 
 
–1 +/
Не будет, те то что оно юзерспейс не будет означать что всё упирается именно в пересылку трафика: юзерспейс-ядро.
 
+1 +/
Непонятно, зачем сюда приплели этого графомана одинцова.
Ссылка на его недобложек битая.
Патч по гитхабовской ссылке тоже делал не он, там его вклад только в виде очередного идиотского комментария.
 
–1 +/
Зачем в Linux эти окаменелые древности из давно умершей ОС? Неужели нет своих инженеров у того же RedHat, SuSE, IBM (и кто там еще оплачивает разработку Linux), способных написать подобное? Зачем в Linux этот out-of-tree модуль, да еще и под жлобской несвободной 2-clause BSD-лицензией, а не под православной GPLv2? А если этот Luigi Rizzo закроет свой код, то это что, получится, что все пользователи NetMap под Linux, в том числе из CloudFlare, на дядю-проприераста поработали забесплатно?

Я против подобных заигрываний, и думаю, что Торвальдс и Столлман (последний — своим авторитетным мнением) не позволят зайти этой инициативе слишком далеко.

 
 
+/
> Зачем в Linux этот out-of-tree модуль, да еще и под жлобской несвободной 2-clause BSD-лицензией, а не под православной GPLv2? А если этот Luigi Rizzo закроет свой код, то это что, получится, что все пользователи NetMap под Linux, в том числе из CloudFlare, на дядю-проприераста поработали забесплатно?

Очень показательно, что это говорит человек, не написавший ни строчки открытого кода. Под любой лицензией.

 
 
+1 +/
Мне интересно, а сколько нужно открыть ресторанов, чтобы утверждать, что какойто конкретный плохой, или может, чтобы утверждать что самолет не надежен нужно возглавить КБ, а разбиться на нем не достаточно?.. хватит бред нести
 
+/
Хотя нет, оно отметилось в виде ценного совета:

We would like to thank Pavel Odintsov who suggested the possibility of using Netmap this way. He even prepared the initial hack we based our work on.

 

Ваш комментарий
 

This entry passed through the Full-Text RSS service — if this is your content and you’re reading it on someone else’s site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *