to the code base FreeBSD adopted The implementation of the communication protocol NetLink ( RFC 3549 ) used in Linux to organize the interaction of the nucleus with processes in the user space. Project limits support for the NetLink_route family to control the state of the network subsystem in the nucleus.
In the current form, NetLink’s support level allows you to use IPROTE2 freeBSD linux outlines to control network interfaces, installation IP addresses, setting routing and manipulating NEXTHOP objects, storing data on the state used to transmit the package to the desired designation point . After a slight change in header files, it is possible to use Netlink in the routing package bird .
NetLink implementation for FreeBSD is designed in the form of a loaded nucleus module that does not affect other nucleus subsystems and creating separate queues of tasks (TASQUEE) to process the comments on the protocol and performing operations in asynchronous mode. As the reason for porting, Netlink is the lack of a standard mechanism for interacting with nucleus subsystems, which leads to the fact that different subsystems and drivers invent their own protocols.
Netlink offers a unified communication layer and an expanded message format that can act as a mediator, which automatically combines disparate data from different sources in one request. For example, Netlink can be translated by FreeBSD subsystems such as DEVD, Jail and PFILCTL, which now use my own calls, which will greatly simplify the creation of applications for working with these subsystems. In addition, the use of Netlink to change objects and groups of NEXTHOP in the routing stack will more effectively interact with the processes of routing in the user space.
Currently implemented opportunities:
- obtaining information about routes, objects and groups of Nexthops, network interfaces, addresses and neighboring hosts (ARP/NDP).
- Formation of notifications about the appearance and disconnection of network interfaces, installation and deletion of addresses, adding and deleting routes.
- Adding and removing routes, objects and groups of NEXTHOPS, SLEADS,
network interfaces. - Integration with the interface