Разработка программного обеспечения Разработка сетевого программного обеспечения Разработка программного обеспечения под Линукс Разработка программного обеспечения под Linux Разработка на C Разработка драйверов Линукс Разработка драйверов Linux Разработка драйверов ядра Написание драйверов Написать программу под Линукс Заказная разработка Заказная разработка ПО Заказная разработка под Линукс Заказная разработка драйверов Заказная разработка модулей ядра Операционная система Операционная система на базе Линукс Операционная система на базе Linux Российская операционная система Операционная система для сетевого оборудования Операционная система для телекоммуникационного оборудования Рссийская операционная система для сетевого оборудования Российская операционная система для телекоммуникационного оборудования Встроенное программное обеспечение Прошивки Маршрутизатор Сеть Коммутатор Точка доступа Сотовый Реестр отечественного ПО Реестр Минцифры Российский софт Нетше Нетше лаб Linux Firmware Kernel NETSHe OS Router Switch AP CPE Cellular 2G 3G 4G 5G STAsoft.net NETSHe NETSHe Lab

XDP

Разработанные нами компоненты Fast Routing и Fast iACL основаны на имеющейся в ядре Линукс подсистеме XDP.

Данная подсистема позволяет на стадии, когда образ кадра/пакета только перенесен из сетевого адаптера в кольцевой буфер драйвера (т.е. до выделения структуры sk_buff и копирования туда образа кадра) провести анализ этого образа и принять решение о продолжении его обработки стандартным сетевым стеком (XDP_PASS), прекращения любой дальнейшей обработки и отбрасывания образа кадра (XDP_DROP), или пересылки образа кадра прямо в буфер другого сетевого адаптера для его немедленной отправки (XDP_REDIRECT).

Такие решения имеются, но нормальным для них является использование XDP вместе с другой ядерной подсистемой - eBPF.

В своем решении мы отказались от eBPF и используем в компонентах относительно небольшой код, написанный на C и собранный как часть ядра.

Такой подход позволил получить выигрыш в производительности без увеличения потребления памяти и процессорного времени.

Больше информации о XDP по следущюей ссылке.