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

11 октября 2015 года

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

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

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

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

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «CloudFlare применил NetMap для повышения скорости обработки пакетов в Linux», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.