Linux

為什麼 netconsole 不搜尋到日誌伺服器的路由?

  • April 24, 2017

要配置 netconsole,您應該傳遞目標主機的 IP 地址和 MAC 地址。如果您不將 MAC 作為參數傳遞 - netconsole 會將 IP 數據包打包到乙太網幀中,並以廣播地址作為目標。為什麼 netconsole 不在路由表中搜尋到主機的路由?

這是 netpoll 限制嗎?或者它是容錯功能,如果網路堆棧有問題?或者它是為了更快的工作而完成的?還是很難實施?

主要原因是什麼?

Netconsole 旨在重新啟動後儘快工作。從核心文件

Netconsole 被設計為盡可能即時,甚至可以記錄最關鍵的核心錯誤。它也適用於 IRQ 上下文,並且在發送數據包時不會啟用中斷。由於這些獨特的需求,配置不能更加自動化,並且一些基本限制仍然存在:僅支持 IP 網路、UDP 數據包和乙太網設備。

如您所見,netconsole 旨在用作調試功能,而不是日常使用。為此,設計人員希望它盡可能簡單和健壯,即使配置它很粗糙。

如果該功能被設計為自動找出將數據包發送到哪裡,則程式碼必須查詢路由表以查看目標主機是否在同一子網中,但在發送第一條消息時可能未設置路由發送。即使我們可以假設目標主機在同一個子網中,在不知道目標 MAC 地址的情況下,實現也必須首先進行 ARP 查詢。在等待響應時,核心崩潰並且崩潰消息失去。

引用自:https://unix.stackexchange.com/questions/360944