web-dev-qa-db-ja.com

ルーティングの選択:特異性とメトリック

Linuxが ルーティング選択 を実行すると、宛先への最も具体的なルートを選択することを理解しています。しかし、ルートのメトリックはどうですか?ルートの特異性よりも高い優先度がありますか?

Linuxで使用されるルーティング選択アルゴリズムの詳細を参照していただければ幸いです。

18
Eugene Yarmash

ルートメトリックは、特定性が等しいルート間で優先順位を設定することです。これは、ルーティング全般(つまり、Cisco、Windowsなど)に当てはまります。したがって、モデルは次のように機能します。

  1. 最も具体的なルートを見つける(別名最長プレフィックス一致*
  2. 同じ特定度のルートが複数ある場合は、最小のルートを選択します アドミニストレーティブディスタンス(これにより、直接のようなものを区別しますアタッチされたルート、スタティックルート、およびさまざまなルーティングプロトコル)。
  3. そのルーティングプロトコルと特定のルート内で(ルートの特異性とアドミニストレーティブディスタンスが同じ場合)、最も低いメトリックのルートを選択します

このような ポリシーベースのルーティング を使用すると、送信元IPアドレスに基づいてルーティングなどを実行できることが他にもあることに注意してください。しかし、ルートの特異性、アドミニストレーティブディスタンス、そしてメトリックは、私が3つの主要なものと考えるものです。

*バイナリ(たとえば、/ 24)のサブネットは11111111.11111111.11111111.00000000のように見えるため、これは最長プレフィックス一致と呼ばれます。そのため、ルーターはプレフィックスをバイナリ1でスキャンし、ゼロに達したら停止し、プレフィックスと一致するようになります。

28
Kyle Brandt

Linuxは、柔軟なルーティング選択のためのツールを多数提供しています。

単一のルーティングテーブル

最も単純なケースでは、カーネルルーティングテーブルは1つだけで、SRC属性を持つルートはありません。このテーブルには、手動で配置されたいくつかのルートが含まれています(ip route add)、DHCPデーモン、またはルーティングデーモン。この場合、カーネルは以下を選択します。

  • 最も具体的なルート。
  • 同じように特定されたルートが複数ある場合は、カーネルメトリックが最小のルート。

カーネルメトリック(ip route show)はルーティングデーモンによって選択され、特定のルーティングプロトコルのメトリックに必ずしも関連しているわけではありません。たとえば、Quaggaは、プロトコルのメトリックに関係なく、カーネルにインストールするすべてのルートに同じメトリックを使用します。

ソース固有のルート

Linuxは、特定の送信元アドレスを持つパケットのみに一致するSRC属性を持つルートもサポートします。 SRCはIPv6でのみ機能し、ごく最近までバグがありました(メモリが機能する場合は3.11)。何をしているのかわからない場合は、使用しないことをお勧めします。

複数のルーティングテーブル

上記よりも柔軟性が必要な場合は、複数のルーティングテーブルを操作し、パケットごとに1つの特定のルーティングテーブルを選択するルールを作成する必要があります。一般的な手法は、送信元固有のルートをシミュレートするために送信元アドレスでディスパッチすることです。別の手法は、独自のルーティングテーブルで各ルーティングデーモンを実行し、シスコの「アドミニストレーティブディスタンス」をシミュレートすることです。これについてはすべて LARTCの第4章 で詳しく説明しています。

9
jch