
netconsole을 구성하려면 대상 호스트의 IP 주소와 MAC 주소를 전달해야 합니다. MAC를 매개변수로 전달하지 않으면 netconsole은 IP 패킷을 브로드캐스트 주소를 대상으로 하는 이더넷 프레임에 압축합니다. netconsole이 라우팅 테이블에서 호스트에 대한 경로를 검색하지 않는 이유는 무엇입니까?
넷폴 제한인가요? 아니면 네트워크 스택에 문제가 있는 경우 내결함성 기능입니까? 아니면 더 빠른 작업을 위해 수행됩니까? 아니면 구현하기가 어렵나요?
주된 이유는 무엇입니까?
답변1
Netconsole은 재부팅 후 최대한 빨리 작동하도록 설계되었습니다. 에서커널 문서:
Netconsole은 가장 중요한 커널 버그도 로깅할 수 있도록 최대한 즉각적으로 설계되었습니다. IRQ 컨텍스트에서도 작동하며 패킷을 보내는 동안 인터럽트를 활성화하지 않습니다. 이러한 고유한 요구로 인해 구성은 더 이상 자동화될 수 없으며 몇 가지 근본적인 제한 사항이 남아 있습니다. IP 네트워크, UDP 패킷 및 이더넷 장치만 지원됩니다.
보시다시피 netconsole은 일상적인 사용이 아닌 디버깅 기능으로 만들어졌습니다. 이를 위해 설계자는 구성이 조잡하더라도 가능한 한 간단하고 견고하기를 원했습니다.
기능이 패킷을 보낼 위치를 자동으로 찾도록 설계된 경우 코드는 대상 호스트가 동일한 서브넷에 있는지 확인하기 위해 라우팅 테이블을 쿼리해야 하지만 첫 번째 메시지가 전송될 때 라우팅이 설정되지 않았을 수 있습니다. 전송된. 대상 호스트가 동일한 서브넷에 있다고 가정하더라도 대상 MAC 주소를 모르면 구현 시 먼저 ARP 쿼리를 작성해야 합니다. 응답을 기다리는 동안 커널이 충돌하고 충돌 메시지가 손실됩니다.