The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"CloudFlare применил NetMap для повышения скорости обработки ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от opennews (ok) on 11-Окт-15, 08:41 
Добившись (https://www.opennet.ru/opennews/art.shtml?num=42449) возможности обрабатывать на штатном сетевом стеке ядра Linux миллион пакетов в секунду, инженеры сети доставки контента CloudFlare продолжили (https://blog.cloudflare.com/single-rx-queue-kernel-bypass-wi.../) разработку методов увеличения скорости обработки трафика. На этот раз была предпринята попытка задействовать средства прямого взаимодействия с сетевым адаптером, позволяющие (https://blog.cloudflare.com/kernel-bypass/) в десять раз поднять скорость обработки пакетов по сравнению с использованием сетевого стека Linux.

Для организации прямой обработки пакетов решено использовать фреймворк NetMap (http://info.iet.unipi.it/~luigi/netmap/), который разработан (https://www.opennet.ru/opennews/art.shtml?num=31758) для FreeBSD, но также поддерживает Linux и Windows. Проблема оказалась в том, что NetMap осуществляет перенаправление обработки всех входящих (RX) очередей сетевой карты, отсоединяя их от штатного сетевого стека, в то время как была поставлена задача раздельной обработки очередей: при помощи NetMap планировалось обрабатывать только простейшие потоки трафика, связанные с вредоносной активностью, такой как UDP-флуд, а обработку обычного трафика необходимо было оставить как есть с использованием штатного сетевого стека Linux.


В итоге, компания CloudFlare присоединилась к разработке NetMap и подготовила набор изменений (https://github.com/luigirizzo/netmap/pull/87) с реализаций режима выборочной обработки RX-очередей пакетов, позволяющего связать с NetMap отдельные очереди пакетов, закрепив остальные за обработчиком в сетевом стеке ядра. Перенаравив в связанную с NetMap очередь специфичный трафик, появляется возможность его обработки специально оптимизированным приложением вне сетевого стека. Тестирование показало, что подобный обработчик в пространстве пользователя способен разбирать трафик со скоростью 5.8 млн пакетов в секунду, при сохранении неизменного процесса обработки ядром остальные сетевых потоков.

<center><a href="https://blog.cloudflare.com/content/images/2015/10/RX_bypass... src="https://www.opennet.ru/opennews/pics_base/0_1444540670.png&q... style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></a></center>

URL: https://blog.cloudflare.com/single-rx-queue-kernel-bypass-wi.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=43122

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "CloudFlare применил NetMap для повышения скорости обработки ..."  –1 +/
Сообщение от A.Stahl (ok) on 11-Окт-15, 08:41 
>попытка задействовать средства прямого взаимодействия с сетевым адаптером

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "CloudFlare применил NetMap для повышения скорости обработки ..."  +11 +/
Сообщение от Аноним (??) on 11-Окт-15, 08:57 
Почти на всех 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 | Наверх | Cообщить модератору

4. "CloudFlare применил NetMap для повышения скорости обработки ..."  –2 +/
Сообщение от Аноним (??) on 11-Окт-15, 08:59 
Мне больше это  нравится - https://github.com/luigirizzo/netmap-ipfw
Реализация ipfw и dummynet работающая в пространстве пользователя поверх NetMap. По идее в Linux тоже можно запустить.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Адекват (ok) on 11-Окт-15, 09:48 
> Мне больше это  нравится - https://github.com/luigirizzo/netmap-ipfw
> Реализация ipfw и dummynet работающая в пространстве пользователя

А оно не будет тормозить и грузить проц, как squid например ?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

11. "CloudFlare применил NetMap для повышения скорости обработки ..."  –1 +/
Сообщение от Ivan_83 on 11-Окт-15, 16:14 
Не будет, те то что оно юзерспейс не будет означать что всё упирается именно в пересылку трафика: юзерспейс-ядро.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

6. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Аноним (??) on 11-Окт-15, 09:54 
по ходу, ipfw даже на вантузе запускали.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

10. "CloudFlare применил NetMap для повышения скорости обработки ..."  +2 +/
Сообщение от Аноним (??) on 11-Окт-15, 15:48 
Что значит по ходу? wipfw был точно.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

12. "CloudFlare применил NetMap для повышения скорости обработки ..."  –1 +/
Сообщение от gavrila pavlov on 11-Окт-15, 23:24 
Непонятно, зачем сюда приплели этого графомана одинцова.
Ссылка на его недобложек битая.
Патч по гитхабовской ссылке тоже делал не он, там его вклад только в виде очередного идиотского комментария.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

22. "CloudFlare применил NetMap для повышения скорости обработки ..."  +9 +/
Сообщение от Pavel Odintsov email(ok) on 12-Окт-15, 11:39 
Патч по гитхабовской ссылке как раз делан мною - и именно поэтому Марек упомянул меня в статье, там же есть упоминание, что и код был написан мною  :)

Но за высокую оценку спасибо!

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

24. "CloudFlare применил NetMap для повышения скорости обработки ..."  +4 +/
Сообщение от Pavel Odintsov email(ok) on 12-Окт-15, 11:47 
> Непонятно, зачем сюда приплели этого графомана одинцова.
> Ссылка на его недобложек битая.
> Патч по гитхабовской ссылке тоже делал не он, там его вклад только
> в виде очередного идиотского комментария.

Я даже чуточку расширю свой пост. PoC изначально был вот здесь, https://github.com/pavel-odintsov/ixgbe-linux-netmap-single-... поиск по "CONFIG_NETMAP".  Но код был влит не отдельны коммитом, а сразу всего кода, потому что я правил живой драйвер и честно говоря не думал что что-то выйдет, но оно собралось и даже заработало как ожидалось.

Марек уже собрал на базе этой очень черновой версии отличный удобный для применения патч - https://gist.github.com/majek/f7498fd15569dbb59ce3

Ребята из CloudFlare отлично поработали и процентов 80 работы сделано именно ими =) Теперь это не просто PoC - а готовый для применения стабильный подход.

P.S. зависть - это плохо =)

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

28. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от nik (??) on 13-Окт-15, 10:08 
Зависть это хорошо для того кому завидут, и плохо для завидущего.
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

38. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от count0krsk (ok) on 18-Ноя-15, 22:31 
Ага, сглаживают люди завистью, так что плохо для обоих.
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "CloudFlare применил NetMap для повышения скорости обработки ..."  +1 +/
Сообщение от anonymous (??) on 12-Окт-15, 00:31 
> Зачем в Linux этот out-of-tree модуль, да еще и под жлобской несвободной 2-clause BSD-лицензией, а не под православной GPLv2? А если этот Luigi Rizzo закроет свой код, то это что, получится, что все пользователи NetMap под Linux, в том числе из CloudFlare, на дядю-проприераста поработали забесплатно?

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

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

18. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от cmp (??) on 12-Окт-15, 05:58 
Мне интересно, а сколько нужно открыть ресторанов, чтобы утверждать, что какойто конкретный плохой, или может, чтобы утверждать что самолет не надежен нужно возглавить КБ, а разбиться на нем не достаточно?.. хватит бред нести
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

39. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от count0krsk (ok) on 18-Ноя-15, 22:37 
> Мне интересно, а сколько нужно открыть ресторанов, чтобы утверждать, что какойто конкретный плохой

Утверждать что-либо может даже школьник, право на это закреплено Конституцией.
А вот какой вес будет иметь мнение человека - зависит от его статуса в социальной группе. Например если я в кругу друзей скажу, что КДЕ - отстой, со мной большая часть согласится. Если в универе - там вообще не поймут про что это почти все из группы, ибо виндузятники. Ну и т.д.
СМИ часто используют "говорящие головы" - экспертов, звезд и политиков для придания веса какому-то мнению правящих "элит".

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

17. "CloudFlare применил NetMap для повышения скорости обработки ..."  +1 +/
Сообщение от Аноним (??) on 12-Окт-15, 01:11 
> Я против подобных заигрываний, и думаю, что Торвальдс и Столлман (последний - своим авторитетным мнением) не позволят зайти этой инициативе слишком далеко.

Никто и не позволит ему окопаться в святом ядре. Во всяком случае, при первой попытке сабмита автор линуксового порта был обвинен в ереси Дейвом Миллером, поскольку попытался утверждать что pps с netmap-ом получился в 2 раза выше, что очень оскорбило Дейва:

>> I can not get line rate output with pktgen on existing kernels today.
>Something is incredibly wrong if this is the case.

http://marc.info/?l=linux-netdev&m=136640384802377&w=3

Сам тред с посыланием на йух нетмапа тут:

http://marc.info/?t=136639881600001&r=1&w=3

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

21. "CloudFlare применил NetMap для повышения скорости обработки ..."  –1 +/
Сообщение от Школьник (ok) on 12-Окт-15, 10:30 
Шикарный тред, спасибо, анон!

Еще вот это понравилось:

>If someone is showing you 10x improvement over what Linux gives you,
>then we are doing something wrong and we shouldnt be living in some
>parallel universe and claim theres nothing to see here.

Похоже, им пора вызывать святую инквизицию и запасаться дровами.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

25. "CloudFlare применил NetMap для повышения скорости обработки ..."  +1 +/
Сообщение от Pavel Odintsov email(ok) on 12-Окт-15, 11:49 
> Зачем в Linux эти окаменелые древности из давно умершей ОС? Неужели нет
> своих инженеров у того же RedHat, SuSE, IBM (и кто там
> еще оплачивает разработку Linux), способных написать подобное? Зачем в Linux этот
> out-of-tree модуль, да еще и под жлобской несвободной 2-clause BSD-лицензией, а
> не под православной GPLv2? А если этот Luigi Rizzo закроет свой
> код, то это что, получится, что все пользователи NetMap под Linux,
> в том числе из CloudFlare, на дядю-проприераста поработали забесплатно?
> Я против подобных заигрываний, и думаю, что Торвальдс и Столлман (последний -
> своим авторитетным мнением) не позволят зайти этой инициативе слишком далеко.

Аналогов в Linux NetMap'у  нету, увы. Есть AF_PACKET, прочтите про него: habrahabr.ru/post/261161/ но он решительно больше жрет процессор и обеспечивает меньшие скорости захвата.

За ссылку на хабру сори =( Но в другом месте статьи нету.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

27. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Школьник (ok) on 12-Окт-15, 13:47 
Большое спасибо за статью! Узнал для себя немало нового.

Но вот что касается NetMap, то мне кажется, что это в корне неверный подход - брать абсолютно чуждую для Линукса наработку как с технической точки зрения (тот же Stephen Hemminger это признает: "It still has all the BSD ugliness"), так и - и это ГЛАВНОЕ - с идеологической. Несвободному коду, равно как и коду, на нем основанному, не место в ядре, иначе Линукс превратится в еще одну проприерастную подстилку, как та же боязде, и рано или поздно закономерно повторит ее судьбу - кто вот сейчас помнит о боязде? Никто. И никакие временно достигнутые преимущества в скорости обработки пакетов не оправдывают использование несвободного кода под лицензией BSD.

Единственное, что тут можно сделать, чтобы хоть немного уменьшить ущерб - это добавить шапку GPLv2 в код из родительского репозитория NetMap, чтобы защитить возможные в будущем правки, сделанные в рамках Linux, от попадания обратно в репозиторий NetMap, который поддерживает Luigi Rizzo. Иначе эти правки рано или поздно, но точно попадут проприерастам в руки, и получится, что авторы правок станут соучастниками преступления. Жаль, конечно, что шапку BSD при этом убрать нельзя - того гляди, увидит потом, через время, кто-нибудь, что это неродной для Linux код, поищет его в гугле и обнаружит репозиторий Luigi Rizzo, да еще и чего доброго правки туда сделает, а не в Linux.

А вообще, я уверен, что направь Вы и инженеры из CloudFlare усилия на доработку существующих, родных для Линукса решений, у сообщества уже получилось бы довести их до уровня NatMap, и при этом не пришлось бы идти на сделку с совестью и прикасаться к зловонному коду под лицензией BSD.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

29. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от cebka email on 13-Окт-15, 13:15 
Автор может сменить лицензию на свой код, невзирая на то, gpl она, bsd или вообще public domain. А вот "добавить шапку" gpl - это как раз нарушение авторских прав как в случае gpl, так и в случае gpl кода. Единственный тип лицензий, по которому можно "добавить шапку", - это public domain like (cc0, unlicense). Впрочем, я практически полностью уверен, что вы пытаетесь толсто троллить, потому что иначе существование настолько тупых людей противоречит моему мировоззрению.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

30. "CloudFlare применил NetMap для повышения скорости обработки ..."  +1 +/
Сообщение от Школьник (ok) on 13-Окт-15, 15:50 
А вот и бздюшное трололо пожаловало.

Ну расскажи-ка мне, умный, где в 2-clause лицензии BSD запрет на убирание шапки? Там написано, что при любых обстоятельствах шапка должна остаться. Но никто и никогда не запретит ни мне, ни кому-либо еще добавить GPL-шапку над BSD-шной, чтобы ЗАЩИТИТЬ мои изменения, которые я сделал в файле, от тупого воровства со стороны проприерастов и их подстилок-бздюшников. Лицензия BSD (в отличие от GPL) не запрещает никаких дополнительных ограничений на исходный код, иначе она не была бы столь любима именно за это проприерастами. Так что кушай да не обляпайся, и смотри дальше, как Apple, Microsoft, NetApp и прочие будут пользоваться трудами бздюков АБСОЛЮТНО нахаляву.

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

31. "CloudFlare применил NetMap для повышения скорости обработки ..."  –2 +/
Сообщение от cebka email on 13-Окт-15, 16:09 
Так и есть, но добавление gpl шапки влияет только на внесенные изменения, но не на исходный код. Поэтому, конечно, так никто не делает - люди с психическими отклонениями такого характера просто неспособны писать код, который стоило бы защищать GPL. Исходный же посыл был в том, что единственные люди, способные *менять* лицензию на код - это авторы этого кода во всех случаях, кроме случая public domain like лицензий.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

32. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Школьник (ok) on 13-Окт-15, 16:40 
>добавление gpl шапки влияет только на внесенные изменения

Естественно. К сожалению, никто ведь не запретит загуглить оригинал файла под лицензией BSD. Но в любом случае уже хорошо, что бздюки изменений не смогут получить.

>единственные люди, способные *менять* лицензию на код - это авторы этого кода во всех случаях

Нет, BSD не запрещает налагать дополнительные ограничения на исходный код и превращать его в GPL-лицензированный. Ты правда думаешь, что Microsoft у себя в репозитории не добавила проприетарную лицензию, когда дернула из BSD код TCP/IP-стека, "случайно" позабыв с бздюками поделиться?

Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

33. "CloudFlare применил NetMap для повышения скорости обработки ..."  +1 +/
Сообщение от cebka email on 13-Окт-15, 17:12 
Да, удивительная каша в голове. Повторяю для закрепления материала: НЕВОЗМОЖНО взять BSD лицензированный код и превратить его в GPL лицензированный код без согласия АВТОРА(ов). Но бинарный файл микса кода BSD/GPL будет GPL, это верно. Не так давно меня просил один человек предоставить ему право пользоваться моим кодом не под BSD/MIT лицензией, а под public domain, чтобы не публиковать информацию о лицензии (он, к слову, мое согласие получил).

Следующий момент: какие ограничения предполагается налагать на код, который авторы распространяют по BSD лицензии? Взять его, поменять и не поделиться? Да, это возможно. Но от этого не застрахован и GPL код, потому что тот же Microsoft может придти к автору и попросить его коммерческую лицензию, и *АВТОР* вправе это сделать. На чем, кстати, живет не одна сотня "opensource" контор. И BSD лицензия им, конечно, не подходит - ее не продать твоим любимым проприетарастам, а вот dual-license с GPL/royalty free - запросто.

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

35. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Школьник (ok) on 13-Окт-15, 18:06 
У кого каша - у тебя, бздоид?
Читай, что здесь написано (там даже пример исходника есть с шапкой GPL над шапкой BSD)  https://www.softwarefreedom.org/resources/2007/gpl-non-gpl-c...

Убрать шапку BSD может только лишь автор, это ежу понятно. Добавить сверху шапку GPL, не убирая при этом BSD, может любой и каждый, при этом все изменения в этот код с двумя шапками автоматически должны удовлетворять обеим лицензиям сразу. То есть, по сути должны удовлетворять GPL, плюс требование оставить шапку BSD на месте. А значит, бздюшатам кукиш, а не эти изменения, вот такая вот "радость" для них, ущербных! )))

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

34. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Нимано on 13-Окт-15, 17:20 
> как Apple, Microsoft, NetApp и Школьник будут пользоваться трудами бздюков АБСОЛЮТНО нахаляву.

гордись!

Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

36. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от sdaasd on 15-Окт-15, 13:27 
Ну вообще-то есть PF_RING, который используется в связки со Snort и Suricata для реализациии функциональности IDS/IPS в Linux
Есть и другие технологгии высокоскоросной обработки пакетов на чиная от UIO-DMA заканчивая INTEL PPDK.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

37. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от sdaasd on 15-Окт-15, 13:31 
Причем Intel DPDK гораздо перспективнее любой реализации хаков (netmap , pf_ring) минуя TCP/IP стек. Так как оптимизирован под конкретное железо.
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

14. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от gavrila pavlov on 11-Окт-15, 23:36 
Хотя нет, оно отметилось в виде ценного совета:

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.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Аноним (??) on 12-Окт-15, 00:23 
Ссылочку бы поправить - http://www.stableit.ru/2015/06/how-to-run-netmap-on-single-q...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "CloudFlare применил NetMap для повышения скорости обработки ..."  +/
Сообщение от Pavel Odintsov email(ok) on 12-Окт-15, 11:40 
> Ссылочку бы поправить - http://www.stableit.ru/2015/06/how-to-run-netmap-on-single-q...

Да, ссылко верное :) Спасибо, надеюсь модераторы починят.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру