Por que o netconsole não procura rota para o servidor de registro?

4

Para configurar o netconsole, você deve passar o endereço IP e o endereço MAC do host de destino. Se você não passar o MAC como parâmetro, o netconsole empacota o pacote IP para o quadro Ethernet com o endereço de broadcast como destino. Por que o netconsole não procura rota para hospedar na tabela de roteamento?

É uma limitação do netpoll? Ou é recurso de tolerância a falhas, se algo de errado com a pilha de rede? Ou isso é feito para um trabalho mais rápido? Ou é apenas difícil de implementar?

Qual é o principal motivo?

    
por AlexZ 24.04.2017 / 13:51

1 resposta

3

O Netconsole foi projetado para funcionar o mais rápido possível após a reinicialização. De a documentação do kernel :

Netconsole was designed to be as instantaneous as possible, to enable the logging of even the most critical kernel bugs. It works from IRQ contexts as well, and does not enable interrupts while sending packets. Due to these unique needs, configuration cannot be more automatic, and some fundamental limitations will remain: only IP networks, UDP packets and ethernet devices are supported.

Como você pode ver, o netconsole se destina a ser um recurso de depuração, não para uso diário. Para este propósito, os projetistas queriam que ele fosse o mais simples e robusto possível, mesmo se a configuração fosse um pouco bruta.

Se o recurso tivesse sido projetado automaticamente para saber para onde enviar o pacote, o código teria que consultar a tabela de roteamento para ver se o host de destino está na mesma sub-rede, mas o roteamento provavelmente não está configurado quando as primeiras mensagens devem ser enviados. Mesmo se pudermos supor que o host de destino esteja na mesma sub-rede, sem o conhecimento do endereço MAC de destino, a implementação terá primeiro que fazer uma consulta ARP. Enquanto aguarda a resposta, o kernel falha e a mensagem de falha é perdida.

    
por 24.04.2017 / 15:38