netconsole이 로그 서버에 대한 경로를 검색하지 않는 이유는 무엇입니까?

netconsole이 로그 서버에 대한 경로를 검색하지 않는 이유는 무엇입니까?

netconsole을 구성하려면 대상 호스트의 IP 주소와 MAC 주소를 전달해야 합니다. MAC를 매개변수로 전달하지 않으면 netconsole은 IP 패킷을 브로드캐스트 주소를 대상으로 하는 이더넷 프레임으로 묶습니다. netconsole이 라우팅 테이블에서 호스트 경로를 검색하지 않는 이유는 무엇입니까?

이것이 네트워크 폴링의 한계입니까? 아니면 네트워크 스택에 문제가 발생하더라도 내결함성이 있습니까? 아니면 더 빨리 일하기 위해서인가요? 아니면 구현하기가 어렵나요?

주된 이유는 무엇입니까?

답변1

Netconsole은 재부팅 후 최대한 빨리 작동하도록 설계되었습니다. ~에서커널 문서:

Netconsole은 최대한 즉각적으로 설계되었으며 가장 중요한 커널 오류도 기록할 수 있습니다. 또한 IRQ 컨텍스트에서도 작동하며 패킷을 보낼 때 인터럽트를 활성화하지 않습니다. 이러한 고유한 요구 사항으로 인해 구성을 더 이상 자동화할 수 없으며 몇 가지 기본 제한 사항이 남아 있습니다. IP 네트워크, UDP 패킷 및 이더넷 장치만 지원됩니다.

보시다시피 netconsole은 일상적인 사용이 아닌 디버깅 기능으로 만들어졌습니다. 이를 위해 디자이너는 구성이 조잡하더라도 최대한 간단하고 강력하기를 원했습니다.

패킷을 보낼 위치를 자동으로 파악하도록 기능이 설계된 경우 코드는 대상 호스트가 동일한 서브넷에 있는지 확인하기 위해 라우팅 테이블을 쿼리해야 하지만 첫 번째 메시지가 전송될 때 경로가 설정되지 않았을 수 있습니다. 전송된. 보내다. 대상 호스트가 동일한 서브넷에 있지만 대상 MAC 주소를 모른다고 가정할 수 있더라도 구현에서는 먼저 ARP 쿼리를 수행해야 합니다. 응답을 기다리는 동안 커널이 충돌하고 충돌 메시지가 손실됩니다.

관련 정보