netconsoleがログサーバーへのパスを取得しないのはなぜですか?

netconsoleがログサーバーへのパスを取得しないのはなぜですか?

netconsole を構成するには、宛先ホストの IP アドレスと MAC アドレスを転送する必要があります。 MACをパラメータとして転送しないと、netconsoleはIPパケットをブロードキャストアドレスを宛先とするイーサネットフレームにまとめます。 netconsoleがルーティングテーブルからホストパスを取得しないのはなぜですか?

これがネットワークポーリングの制限ですか?それとも、ネットワークスタックに問題が発生してもフォールトトレランスはありますか?それとも早く働くためですか?それとも実装するのは難しいですか?

主な理由は何ですか?

ベストアンサー1

Netconsole は、再起動後できるだけ早く動作するように設計されています。 ~からカーネル文書:

Netconsoleはできるだけ早く設計されており、最も重要なカーネルエラーも記録できます。また、IRQ コンテキストでも機能し、パケット送信時に割り込みをイネーブルしません。これらの固有の要件により、構成を自動化することができなくなり、いくつかの基本的な制限が残ります。 IPネットワーク、UDPパケット、およびEthernetデバイスのみがサポートされています。

ご覧のとおり、netconsoleは日常的な使用ではなくデバッグ機能で作成されています。この目的のために、設計者はコンフィギュレーションが粗雑であっても、できるだけ簡単で強力であることを望んでいました。

パケットの送信先を自動的に特定する機能が設計されている場合、コードは宛先ホストが同じサブネット上にあることを確認するためにルーティングテーブルを照会する必要がありますが、最初のメッセージが送信されたときにパスが確立されていない可能性があります。送信された。送る。ターゲットホストが同じサブネット上にあるが、ターゲットMACアドレスがわからないと仮定することができますが、実装は最初にARPクエリを実行する必要があります。応答を待っている間、カーネルがクラッシュし、競合メッセージが失われます。

おすすめ記事