FreeBSD adiciona suporte para o protocolo Netlink usado no kernel do Linux

A base de código do FreeBSD adota uma implementação do protocolo de comunicação Netlink (RFC 3549), que é usado no Linux para organizar a interação entre o kernel e os processos no espaço do usuário. O projeto é limitado a suportar a família de operações NETLINK_ROUTE para gerenciar o estado do subsistema de rede no kernel.

Em sua forma atual, a camada de suporte Netlink permite que o FreeBSD use o utilitário Linux ip do pacote iproute2 para gerenciar interfaces de rede, definir endereços IP, configurar roteamento e manipular objetos do próximo salto que armazenam o estado usado para encaminhar um pacote para o destino desejado . Depois de alterar ligeiramente os arquivos de cabeçalho, é possível usar o Netlink no pacote de roteamento de pássaros.

A implementação do Netlink para FreeBSD é empacotada como um módulo de kernel carregável que, se possível, não afeta outros subsistemas do kernel e cria filas de tarefas separadas (tasqueue) para processar mensagens recebidas por meio do protocolo e executar operações em modo assíncrono. A razão para portar o Netlink é a falta de um mecanismo padrão para interagir com os subsistemas do kernel, o que leva diferentes subsistemas e drivers a inventar seus próprios protocolos.

O Netlink oferece uma camada de comunicação unificada e um formato de mensagem extensível que pode atuar como um intermediário que combina automaticamente dados díspares de diferentes fontes em uma única solicitação. Por exemplo, subsistemas FreeBSD como devd, jail e pfilctl podem ser migrados para Netlink, agora usando suas próprias chamadas ioctl, o que simplificará muito a criação de aplicativos para trabalhar com esses subsistemas. Além disso, usar o Netlink para modificar os objetos e grupos do próximo salto na pilha de roteamento permitirá uma interação mais eficiente com os processos de roteamento no espaço do usuário.

Funcionalidades atualmente implementadas:

  • Obtendo informações sobre rotas, objetos e grupos de nexthops, interfaces de rede, endereços e hosts vizinhos (arp/ndp).
  • Formação de notificações sobre o aparecimento e desconexão de interfaces de rede, configuração e exclusão de endereços, adição e exclusão de rotas.
  • Adicionar e remover rotas, objetos e grupos de nexthops, gateways, interfaces de rede.
  • Integração com a interface Rtsock para gerenciamento da tabela de roteamento.

Fonte: opennet.ru

Adicionar um comentário