転送テーブルとルーティングテーブルの違いは何ですか?
ルーティングは、パケットが送信されるインターフェイスの決定です。この決定は、ローカルで作成されたパケットに対しても行う必要があります。ルーティングテーブルには、ネットワークアドレスと関連するインターフェイスまたはネクストホップが含まれています。これはip route
およびip rule
を参照します(Linuxコンテキストの場合)。
転送とは、システムに到達したが、このシステム宛ではないパケットを指します。転送はシステムの決定です:「私はパケットを受け取り、それを宛先に向けようとします。」ただそれを落とす代わりに。 「転送」は、パケットフィルターのコンテキストでは一般的な用語です。 LinuxのNetfilterのベーステーブルには、INPUT、OUTPUT、FORWARDの3つのチェーンがあります。このチェーンは、「このパケットを転送するかドロップするか」という決定を下すだけです。 (通常、システムで転送が有効になっている場合。Linuxでも/ proc/sys/net/ipv4/ip_forward)。
ほとんどのシステム(単一のネットワーク接続を持つシステム)では同じです。ただし、ルーターでは、異なる傾向があります。
ルーティングテーブルには、OSPFやBGPなどの動的ルーティングプロトコルを使用して、ルーターがピアおよびネイバーから学習したすべてのルートが保持されます。各ルートは、使用中のルーティングプロトコルのパラメーターに基づいてソートおよび評価され、「最適」なルーティングテーブルエントリのサブセットが転送テーブルに入れられます。ルーターがパケットを受信すると、転送テーブルで宛先アドレスを検索して、パケットを送信するインターフェイスと、次のホップアドレスを決定します。新しいルートが学習されたり、インターフェースがアップまたはダウンしたり、ランキングスキームにポリシーが変更されたりすると、ルーティングテーブルが再評価され、転送テーブルが更新されます。
ルーティングテーブルは通常、RAMに格納されます。高性能ギアの転送テーブルは、ラインカード全体(モジュラーシステム)に分散され、高速TCAMに格納されます。通常、TCAMで保持できるルートの数には限りがあります。転送テーブルがTCAM容量を超えると、パケットがドロップされるか、ソフトウェアでルーティングされる可能性があります(これはかなり低速です)。
まず第一に、私の見解では、最初にforwardingとroutingの違いを明確に理解する必要があります。本Lary L.Petersonによる240ページのコンピュータネットワークによると、転送は、宛先アドレスの確認、テーブルの参照、送信など、パケットが受信されるとルータが実行する一連のアクションです。そのテーブルで決定された方向のパケット。ただし、ここでのルーティングとは、転送テーブルが作成されるプロセスを指します。
元の質問に戻ると、転送テーブルとルーティングテーブルを同じ構造に保つことができますが、それらを分離する多くの理由があるという結論を導き出すことができます。 転送テーブルは通常、パケットを転送するときにアドレスを検索するプロセスを最適化するように構造化する必要があり、MACアドレスなどの詳細情報を保持します。対照的に、ルーティングテーブルは通常、トポロジの変更の計算に重点を置いており、ルーティングテーブルのエントリは通常、より簡潔で、ネクストホップのIPのみが含まれます。