Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Интерфейс ядра Linux для межпроцессного взаимодействия между процессами, включая модем.
Linux kernel interface for inter process communication between processes
the modem
Netlink — это семейство сокетов, используемое для межпроцессного взаимодействия (IPC) как между ядром и процессами пользовательского пространства, так и между различными процессами пользовательского пространства, подобно сокетам домена Unix, доступным в некоторых Unix-подобных операционных системах, включая его первоначальную реализацию в качестве интерфейса ядра Linux, а также последующую реализацию на FreeBSD. Как и сокеты домена Unix, но в отличие от сокетов INET, связь по Netlink не может пересекать границы хостов. Однако, если сокеты домена Unix используют пространство имен файловой системы, то сокеты Netlink обычно адресуются по идентификаторам процессов (PID). Netlink предназначен и используется для передачи разнообразной сетевой информации между ядром и процессами пользовательского пространства. Сетевые утилиты, такие как семейство iproute2 и утилиты для настройки беспроводных драйверов на основе mac80211, используют Netlink для связи с ядром Linux из пользовательского пространства. Netlink предоставляет стандартный интерфейс на основе сокетов для процессов пользовательского пространства и API на стороне ядра для внутреннего использования модулями ядра. Изначально Netlink использовал семейство сокетов. Netlink разработан как более гибкая замена ioctl; RFC 3549 подробно описывает этот протокол.
Netlink is a socket family used for inter process communication (IPC) between both the kernel and userspace processes, and between different userspace processes, in a way similar to the Unix domain sockets available on certain Unix like operating systems, including its original incarnation as a Linux kernel interface, as well as in the form of a later implementation on FreeBSD. Similarly to the Unix domain sockets, and unlike INET sockets, Netlink communication cannot traverse host boundaries. However, while the Unix domain sockets use the file system namespace, Netlink sockets are usually addressed by process identifiers (PIDs). Netlink is designed and used for transferring miscellaneous networking information between the kernel space and userspace processes. Networking utilities, such as the iproute2 family and the utilities used for configuring mac80211 based wireless drivers, use Netlink to communicate with the Linux kernel from userspace. Netlink provides a standard socket based interface for userspace processes, and a kernel side API for internal use by kernel modules. Originally, Netlink used the socket family. Netlink is designed to be a more flexible successor to ioctl; RFC 3549 describes the protocol in detail.
История
Netlink был создан Алексеем Кузнецовым как более гибкая альтернатива сложному и неудобному способу обмена данными, использовавшемуся для установки и получения внешних опций сокетов. Ядро Linux продолжает поддерживать его для обратной совместимости. Netlink впервые появился в серии 2.0 ядра Linux и был реализован как символьное устройство. К 2013 году этот интерфейс устарел, но по-прежнему используется как метод связи через ioctl; сравните с использованием интерфейса сокетов Netlink, который появился в серии 2.2 ядра Linux. В 2022 году в FreeBSD была добавлена экспериментальная поддержка протокола Netlink. Первоначально поддерживается лишь часть семейств NETLINK ROUTE и NETLINK GENERIC.
Netlink was created by Alexey Kuznetsov as a more flexible alternative to the sophisticated but awkward communication method used for setting and getting external socket options. The Linux kernel continues to support for backward compatibility. Netlink was first provided in the 2.0 series of the Linux kernel, implemented as a character device. By 2013, this interface is obsolete, but still forms an ioctl communication method; compare the use of The Netlink socket interface appeared in 2.2 series of the Linux kernel. In 2022, experimental support for the Netlink protocol was added to FreeBSD. Initially, only a subset of the NETLINK ROUTE family and NETLINK GENERIC is supported.
Протокол Netlink, определяемый пользователем
Пользователи могут добавлять обработчик Netlink в свои собственные подпрограммы ядра. Это позволяет разрабатывать дополнительные протоколы Netlink для решения задач новых модулей ядра.
Users can add a Netlink handler in their own kernel routines. This allows the development of additional Netlink protocols to address new kernel modules.