Почему netconsole не ищет маршрут к серверу регистрации?

Почему netconsole не ищет маршрут к серверу регистрации?

Для настройки netconsole необходимо передать IP-адрес и MAC-адрес хоста назначения. Если вы не передадите MAC в качестве параметра - netconsole упаковывает IP-пакет в кадр Ethernet с широковещательным адресом в качестве назначения. Почему netconsole не ищет маршрут к хосту в таблице маршрутизации?

Это ограничение netpoll? Или это функция отказоустойчивости, если что-то не так с сетевым стеком? Или это сделано для более быстрой работы? Или это просто сложно реализовать?

В чем основная причина?

решение1

Netconsole был разработан для скорейшего начала работы после перезагрузки.документация ядра:

Netconsole был разработан, чтобы быть максимально мгновенным, чтобы обеспечить регистрацию даже самых критических ошибок ядра. Он также работает из контекстов IRQ и не допускает прерываний при отправке пакетов. Из-за этих уникальных потребностей конфигурация не может быть более автоматической, и некоторые фундаментальные ограничения останутся: поддерживаются только сети IP, пакеты UDP и устройства Ethernet.

Как вы можете видеть, netconsole предназначен для отладки, а не для ежедневного использования. Для этой цели дизайнеры хотели, чтобы он был максимально простым и надежным, даже если его настройка довольно грубая.

Если бы функция была разработана автоматически, чтобы находить, куда отправлять пакет, код должен был бы запросить таблицу маршрутизации, чтобы узнать, находится ли целевой хост в той же подсети, но маршрутизация, вероятно, не настроена, когда должны быть отправлены первые сообщения. Даже если мы можем предположить, что целевой хост находится в той же подсети, без знания MAC-адреса назначения, реализация сначала должна была бы сделать запрос ARP. Во время ожидания ответа ядро ​​аварийно завершает работу, и сообщение об аварийном завершении теряется.

Связанный контент