Кіріспе
Linux ядросының процестер арасындағы байланыс интерфейсі – Netlink, ядро мен пайдаланушы кеңістігіндегі процестердің, сондай-ақ әртүрлі пайдаланушы кеңістігіндегі процестердің арасындағы процестер аралық байланыс (IPC) үшін қолданылатын сокеттер отбасы. Бұл Unix-ке ұқсас операциялық жүйелерде қол жетімді Unix домендік сокеттеріне ұқсас, оның ішінде Linux ядросының бастапқы интерфейсі ретіндегі түрі және FreeBSD-дегі кейінгі іске асырылуы. Unix домендік сокеттері сияқты, Netlink байланысы INET сокеттерінен айырмашылығы, хост шекараларын кесіп өте алмайды. Бірақ Unix домендік сокеттері файлдық жүйе атау кеңістігін пайдаланса, Netlink сокеттері көбінесе процестердің идентификаторлары (PID) арқылы адрестеледі. Netlink ядролық кеңістік пен пайдаланушы кеңістігіндегі процестер арасында әртүрлі желілік ақпаратты беру үшін жасалған және қолданылады. Желілік құралдар, мысалы iproute2 отбасы және mac80211 негізіндегі сымсыз драйверлерді конфигурациялауға арналған құралдар, Linux ядросымен байланысу үшін Netlink-ті пайдаланады. Netlink пайдаланушы кеңістігіндегі процестер үшін стандартты сокетке негізделген интерфейс және ядро модульдерінің ішкі пайдалануы үшін ядро жағындағы API ұсынады. Алғашқыда Netlink сокеттер отбасын пайдаланды. Netlink, ioctl-дің икемді жаңаруы ретінде жобаланған; RFC 3549 протоколды толық сипаттайды.
the modem
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 алғаш рет Linux ядросының 2.0 сериясында мінездемелік құрылғы ретінде жүзеге асырылды. 2013 жылға қарай бұл интерфейс қолданыстан шықты, бірақ әлі де ioctl байланыс әдісі болып табылады; Netlink сокет интерфейсінің қолданылуын салыстырыңыз. Netlink сокет интерфейсі Linux ядросының 2.2 сериясында пайда болды. 2022 жылы FreeBSD-ге Netlink протоколына тәжірибелік қолдау қосылды. Бастапқыда NETLINK ROUTE отбасы және NETLINK GENERIC-тің бір бөлігі ғана қолдалады.
Пайдаланушы анықтаған Netlink протоколы
Пайдаланушылар өздерінің ядролық процедураларына Netlink өңдеушісін қоса алады. Бұл жаңа ядролық модульдерге арналған қосымша Netlink протоколдарын жасауға мүмкіндік береді.