A implementação do protocolo de comunicação Netlink (RFC 3549) foi incorporada ao código-fonte do FreeBSD, utilizada no Linux para organizar a interação entre o núcleo e os processos no espaço do usuário. O projeto abrange o suporte à família de operações NETLINK_ROUTE para gerenciar o estado da subsistema de rede no núcleo.
Na sua forma atual, o nível de suporte do Netlink permite o uso da utilidade ip do FreeBSD, proveniente do pacote iproute2, para gerenciar interfaces de rede, configurar endereços IP, ajustar roteamentos e manipular objetos nexthop, que armazenam dados sobre o estado utilizado para transmitir pacotes ao destino desejado. Após pequenas modificações nos arquivos de cabeçalho, é possível utilizar o Netlink no pacote de roteamento Bird.
A implementação do Netlink para FreeBSD está configurada como um módulo de núcleo carregável, que, sempre que possível, não afeta outros subsistemas do núcleo e cria filas de tarefas (taskqueue) separadas para processar mensagens recebidas pelo protocolo e executar operações de forma assíncrona. A razão para a portabilidade do Netlink é a ausência de um mecanismo padrão para interagir com os subsistemas do núcleo, levando diferentes subsistemas e drivers a inventarem seus próprios protocolos.
O Netlink oferece uma camada de comunicação unificada e um formato de mensagens expansível, que pode atuar como intermediário, combinando automaticamente dados dispersos de várias fontes em um único pedido. Por exemplo, subsistemas como devd, jail e pfilctl do FreeBSD, que atualmente usam chamadas ioctl próprias, podem ser traduzidos para o Netlink, facilitando significativamente a criação de aplicativos para trabalhar com esses subsistemas. Além disso, o uso do Netlink para modificar objetos e grupos de nexthops na pilha de roteamento permitirá uma interação mais eficiente com os processos de roteamento no espaço do usuário.
Funcionalidades atualmente implementadas:
- Obtenção de informações sobre rotas, objetos e grupos de nexthops, interfaces de rede, endereços e hosts vizinhos (arp/ndp).
- Geração de notificações sobre a adição e remoção de interfaces de rede, a configuração e remoção de endereços, adição e remoção de rotas.
- Adição e remoção de rotas, objetos e grupos de nexthops, gateways e interfaces de rede.
- Integração com a interface Rtsock para gerenciamento da tabela de roteamento.
Fonte: opennet.ru
