CloudFlare применил NetMap для повышения скорости обработки пакетов в Linux
Для организации прямой обработки пакетов решено использовать фреймворк NetMap, который разработан для FreeBSD, но также поддерживает Linux и Windows. Проблема оказалась в том, что NetMap осуществляет перенаправление обработки всех входящих (RX) очередей сетевой карты, отсоединяя их от штатного сетевого стека, в то время как была поставлена задача раздельной обработки очередей: при помощи NetMap планировалось обрабатывать только простейшие потоки трафика, связанные с вредоносной активностью, такой как UDP-флуд, а обработку обычного трафика необходимо было оставить как есть с использованием штатного сетевого стека Linux.
В итоге, компания CloudFlare присоединилась к разработке NetMap и, развив имеющиеся наработки Павла Одинцова, подготовила набор изменений с реализаций режима выборочной обработки RX-очередей пакетов, позволяющего связать с NetMap отдельные очереди пакетов, закрепив остальные за обработчиком в сетевом стеке ядра. Перенаправив в связанную с NetMap очередь специфичный трафик, появляется возможность его обработки специально оптимизированным приложением вне сетевого стека.
Данное NetMap-приложение выделяет в общем потоке нормальные запросы и возвращает их на обработку в обычный сетевой стек, отсеивая флуд (например, в результате DDoS-атаки через наводнение DNS-запросами). Тестирование показало, что подобный обработчик в пространстве пользователя способен разбирать трафик со скоростью 5.8 млн пакетов в секунду, при сохранении неизменного процесса обработки ядром остальных сетевых потоков.
Источник: http://www.opennet.ru/opennews/art.shtml?num=43122
|
0 | Tweet | Нравится |
|