Ubuntuサーバーは、何千ものデバイスのルーターとして実行されます。リンクされたクライアントの数が増え続けるにつれて、カーネルログに3つのオーバーフローの問題がありました。
1. Route cache chain too long
2. Neighbor table overflow
3. ip conntrack table full
3つのテーブルはすべてサイズを拡張でき、そのようにしましたが、テーブルに関連するメカニズムの違いを理解していませんでした。
それでは、誰かがカーネルパスキャッシュと隣接テーブルの違いを簡単に説明しますか?彼らは同様の目的を持っているようで、同じメカニズム(ガベージコレクション)を使用し、両方ともルーティングを管理します。
connntrackテーブルの説明も歓迎します:)
答え1
パスキャッシュとネイバーテーブルはどちらも、次にパケットを送信する場所を決定するのに役立ちます。
違いは、ネイバーテーブルがレイヤ2(イーサネット)レベルでエントリをキャッシュすることです。これはIPアドレスをMACアドレスに変換するのに役立ちます。これARPプロトコルキャッシュする新しい項目を照会するために使用されます。
ルートキャッシュはレイヤ3(IP)で機能します。最も単純な形式では、宛先IPアドレスは「次ホップ」(すなわち、パケットが送信されるノード)にマッピングされる。非ルータは通常、すべてのトラフィックを単一の「デフォルトルート」にマッピングする完全に静的キャッシュを持ちます。
さらに、サービス品質の制約、ソース、宛先アドレスなどに影響を与えるより複雑なキャッシュ戦略があります。 IPルーティングガイド良い概要を提供します。