「フォワーディングテーブル」と呼ばれるものには、L2スイッチのMAC→ポートマッピングとL3ルーターのFIBの2つがあります。残りの質問に基づいて、後者について実際に質問していると仮定します。(前者を本当に意味する場合は、代わりに@harrymcの答えを参照してください。)
1)ルーティングテーブルにはネクストホップルーターまでの最短距離が含まれているため、転送先のルーターインターフェイスを指定する転送テーブルが必要なのはなぜですか?2つのコンセプトを調和させる方法は?または私は何かが欠けていますか
ルーティングプロトコルは通常、2つのデータベースを持つものとして説明されます。
「RIB」(ルーティング情報ベース)には、ルーティングプロトコルが決定を行うために使用する入力が含まれています。たとえば、すべての候補ルート、距離ベクトル、リンク状態などを保存します。BGPでは、他のBGPピアから受信したすべてのルートアドバタイズメントが含まれます。RIBエントリは、ルートとそのインターフェイスの間でまだ直接関連付けられていない場合があります。
「FIB」(転送情報ベース)は、ルーティングアルゴリズムの決定の結果です。解決されたゲートウェイアドレスとデバイスと共に、アルゴリズムが選択した特定のルートのみがあります。基本的には、Linux / BSDで知っている「ルーティングテーブル」です。
RIBはルーティングプロトコルデーモンによって内部的に保持され、FIBはオペレーティングシステムのルーティングテーブル(またはハードウェアアクセラレーションルーティング/転送チップ)にエクスポートされます。言い換えると、ip route
Linuxで実行したときに表示されるのは、実際にはFIBです。
最適なパスの決定は高速ではないため、分離は最適化として存在します。非常に多くのCPUとメモリを必要とする可能性があります(また、「最短」パスを常に使用するほど単純ではありません)。
ただし、すべてのパケットで最短ルートを計算するのではなく、RIBの内容が実際に変更された場合にのみ実行する必要があります。したがって、ルートは事前に計算され、FIBに配置されます。各パケットの最長一致プレフィックスを設定します。
2)ルーティングアルゴリズムは、クライアントからのパケットがサーバーに到達するための最短ルートを決定する必要があります。たとえば、異なるサーバーへのTCP接続が行われるたびに、ルータールーティングテーブルを見て最短ルートが決定されます。
いいえ。前述のように、ネットワークトポロジに変更があるたびに、「最適な」ルートが事前に計算されます。その後、それらはFIBにロードされるため、個々の接続は高速な「最長プレフィックス一致」ルックアップを行うだけで済みます。
インターネットはパケット交換ネットワークです。これは、TCP接続が確立されたときにルートルックアップが行われるだけでなく、後ですべての単一パケットに対しても行われることを意味します。(そして、はい、これは、既存のTCP接続でさえ、以前とは異なるパスを突然開始できることを意味します。)これは、回線交換ネットワークとは対照的です。
それはどのように正確に起こりますか?私は、ルーターがネットワーク内のすべてのルーターの距離ベクトルを保存することを知っています。これは、そのネットワーク内のすべてのルーターへの最短距離です。彼らはその情報をどのように使用してパケットの最短経路を決定するのでしょうか?
一般に最短経路を決定するメカニズムについては、ダイクストラのアルゴリズムが良い出発点です。これは、OSPFおよび他のいくつかのプロトコルの基礎です。
ただし、ルーティングプロトコルごとに異なる方法で行われます。BGPには独自のルールがあり、OSPFおよびIS-ISには独自のルールがあり、RIPおよびバベルには独自のルールがあります。(一部のプロトコルは距離ベクトル、一部はリンク状態、一部は両方同時にです。たとえば、OSPFはエリア内のリンク状態ですが、エリア間の距離ベクトルです。) RIPよりもOSPFルート、BGPよりもRIPなどを優先します。
すべてのルーターが自動ルーティングプロトコルを実行するわけでもないことに注意してください。FIB内のすべてのルートを管理者が手動で入力することは完全に可能です。