FreeBSD engade soporte para o protocolo Netlink usado no núcleo de Linux

A base de código FreeBSD adopta unha implementación do protocolo de comunicación Netlink (RFC 3549), que se usa en Linux para organizar a interacción entre o núcleo e os procesos no espazo do usuario. O proxecto limítase a admitir a familia de operacións NETLINK_ROUTE para xestionar o estado do subsistema de rede no núcleo.

Na súa forma actual, a capa de soporte de Netlink permite que FreeBSD utilice a utilidade IP Linux do paquete iproute2 para xestionar interfaces de rede, establecer enderezos IP, configurar o enrutamento e manipular obxectos nexthop que almacenan o estado utilizado para reenviar un paquete ao destino desexado. . Despois de cambiar lixeiramente os ficheiros de cabeceira, é posible usar Netlink no paquete de enrutamento Bird.

A implementación de Netlink para FreeBSD está empaquetada como un módulo do núcleo cargable que, se é posible, non afecta a outros subsistemas do núcleo e crea colas de tarefas separadas (tasqueue) para procesar as mensaxes entrantes a través do protocolo e realizar operacións en modo asíncrono. O motivo para portar Netlink é a falta dun mecanismo estándar para interactuar cos subsistemas do núcleo, o que leva a que diferentes subsistemas e controladores inventen os seus propios protocolos.

Netlink ofrece unha capa de comunicación unificada e un formato de mensaxe extensible que pode actuar como intermediario que combina automaticamente datos dispares de diferentes fontes nunha única solicitude. Por exemplo, os subsistemas de FreeBSD como devd, jail e pfilctl pódense migrar a Netlink, usando agora as súas propias chamadas ioctl, o que simplificará moito a creación de aplicacións para traballar con estes subsistemas. Ademais, o uso de Netlink para modificar os obxectos e grupos de nexthop na pila de enrutamento permitirá unha interacción máis eficiente cos procesos de enrutamento do espazo do usuario.

Funcións implementadas actualmente:

  • Obtención de información sobre rutas, obxectos e grupos de nexthops, interfaces de rede, enderezos e hosts veciños (arp/ndp).
  • Formación de notificacións sobre a aparición e desconexión de interfaces de rede, configuración e eliminación de enderezos, engadindo e eliminando rutas.
  • Engadir e eliminar rutas, obxectos e grupos nexthops, pasarelas, interfaces de rede.
  • Integración coa interface Rtsock para xestionar a táboa de enrutamento.

Fonte: opennet.ru

Engadir un comentario