Из сетевых возможностей сетевого стека, выполнение которых можно ускорить при помощи GPU, отмечаются обработчики сетевых протоколов, IPsec, туннели, шифрование, netfilter, управление трафиком, OVS (Open vSwitch) и XDP. На данном этапе развития внимание проекта сосредоточено на ускорении подсистемы XDP (eXpress Data Path), которая дополняет eBPF возможностью запускать BPF-программы на уровне сетевого драйвера, с поддержкой прямого доступа к DMA-буферу пакетов и работой на стадии до выделения памяти сетевым стеком.
При выполнении таких операций, как балансировка нагрузки на транспортном уровне (L4 OSI) и IPsec-шифрование через XDP, производительность упирается в число ядер CPU. В контексте KNOD подобные BPF-программы при помощи JIT-компилятора транслируются в машинный код GPU и выполняются на GPU. Применение GPU даёт возможность тысячам потоков параллельно выполнять одну и ту же программу над разными сетевыми пакетами, перенося нагрузку с CPU на GPU и позволяя масштабировать пропускную способность за счёт массового параллелизма GPU (SIMT), а не количества ядер CPU.
Проект может использоваться на системах с видеокартами AMD на базе архитектуры GCN. Выбор GPU AMD объясняется наличием полноценного открытого драйвера AMDGPU, интегрированного в основной состав ядра Linux, в котором документирована функциональность, необходимая для организации вычислений на GPU без лишних прослоек и абстракций. В будущем не исключается реализация поддержки GPU Intel. Поддержка GPU NVIDIA пока затруднена из-за отсутствия полноценного открытого драйвера в основном составе ядра (имеющихся драйвер Nouveau пока непригоден для использования в KNOD).
Источник: http://www.opennet.ru/opennews/art.shtml?num=65983
