¿Por qué netconsole no busca la ruta al servidor de registro?

¿Por qué netconsole no busca la ruta al servidor de registro?

Para configurar netconsole debe pasar la dirección IP y la dirección MAC del host de destino. Si no pasa MAC como parámetro, netconsole empaqueta el paquete IP en una trama Ethernet con la dirección de transmisión como destino. ¿Por qué netconsole no busca la ruta al host en la tabla de enrutamiento?

¿Es una limitación de netpoll? ¿O es una característica de tolerancia a fallas, si hay algún problema con la pila de red? ¿O se hace para un trabajo más rápido? ¿O simplemente es difícil de implementar?

¿Cuál es la razón principal?

Respuesta1

Netconsole fue diseñado para funcionar lo antes posible después de reiniciar. Dela documentación del núcleo:

Netconsole fue diseñado para ser lo más instantáneo posible, para permitir el registro incluso de los errores del kernel más críticos. También funciona desde contextos IRQ y no permite interrupciones al enviar paquetes. Debido a estas necesidades únicas, la configuración no puede ser más automática y seguirán existiendo algunas limitaciones fundamentales: solo se admiten redes IP, paquetes UDP y dispositivos Ethernet.

Como puede ver, netconsole pretende ser una función de depuración, no para uso diario. Para ello, los diseñadores querían que fuera lo más simple y robusto posible, aunque configurarlo sea un poco tosco.

Si la función hubiera sido diseñada para descubrir automáticamente dónde enviar el paquete, el código tendría que consultar la tabla de enrutamiento para ver si el host de destino está en la misma subred, pero el enrutamiento probablemente no esté configurado cuando se deben enviar los primeros mensajes. enviado. Incluso si podemos suponer que el host de destino está en la misma subred, sin conocer la dirección MAC de destino, la implementación primero tendría que realizar una consulta ARP. Mientras espera la respuesta, el kernel falla y se pierde el mensaje de falla.

información relacionada