IS-IS ルート決定

ここではISでのルートがどのように決まるかを説明します。概要ではIS-ISのルート計算の特徴とルートの簡単な求め方を、詳細では具体的な手順を説明します。

■概要

IS-ISはISがNPDUを正しく転送できるようにするためのルーティングプロトコルですので、最終的にルート情報を求めルーティングテーブルにインストールします。ここではIS-ISのルートの求め方の特徴と考え方について説明します。

IS-ISは以下のような特徴を持ちます。

・計算範囲はエリア内

・エリア内のすべてのISのLSPを使用する

・ルート計算にはSPF(Shortest Path First)を使用する

・ESも計算対象となる

・OSPFのようなスタブの概念が存在しない

・ブロードキャスト回線では疑似ノードを使用する

・複数のメトリックを使用できる

計算方法

ルート計算で使用される計算方法はDijkstraのアルゴリズムをベースとしたSPF(Shortest Path First)が使用されます。これはルート(root)を含む最短経路でつながるノードの集合より到達できる各隣接の中から、ルート(root)からの最短の隣接を求め集合に追加することを繰り返すアルゴリズムです。(具体的な動作は詳細セクションで説明しています)

メトリック

メトリックについてはルーティングのページでも説明していますが、IS-ISのルート情報で使用できるメトリックは4つあります。必ず実装されなければいけないのはデフォルトメトリックで、そのほかはオプションです。各メトリックには内部メトリックと外部メトリックが存在しますが、エリア内は内部メトリックが使用されます。このページの説明では内部のデフォルトメトリックだけを使用します。

デフォルトメトリック 必ず実装しなければならないメトリックで、数値が小さいほど優先度が高いことを示します。通常は回線の帯域幅を比較する尺度として解釈されることを想定していますが、具体的な計算方法は決められていません。IS-ISの規定値は20(RFC4444では10)です。
遅延メトリック 回線の通過遅延を示すメトリックです。値が大きいほど遅延が大きいことを示します。このメトリックはオプションです。
経費メトリック 回線を使用するための金銭的コストを示すメトリックです。値が大きいほど金銭的な負担が大きいことを示します。このメトリックはオプションです。
エラーメトリック 回線のエラー率を示すメトリックです。値が大きいほどエラーの発生する可能性が高いことを示します。このメトリックはオプションです。

ルート情報の求め方

IS-ISのルート情報はLSPとSPFのアルゴリズムによって求められますが、基本的な計算は足し算です。ここでは足し算によるISから宛先へのルート情報の求め方を説明します。

接続状態とメトリックの設定

ISのメトリックはシステム管理者によって回線に設定します。各回線のメトリック値は回線の帯域の比較を意図しているため、回線の速度に応じた値を設定します。下図ではIS同士を結ぶ線の横の数字がメトリック値です。原則的には各ISで設定するメトリック値は回線を共有するインターフェースでは同じ値を使用します。

IS1のルート情報の選定

ルートの選定は宛先に対するトータルメトリックを求めることから始めます。トータルメトリックはルート計算を行うISから宛先までの間に通過するすべての回路のメトリックを加算して求めます。宛先に対する複数の行き方が存在する場合すべてのパターンでトータルメトリックを求め、最小のメトリックとなるルートをベストルートとして選択します。

例えばIS1からES2に至るルートを考えた場合、下図のようにIS2だけを経由する青ルートと、IS5とIS2を経由する赤ルートの2つがあります。青ルートのトータルコストは30、赤ルートは35となりこの場合メトリックの小さい青のルートが選択されることになります。この時計算に使用されるメトリックは各ISから出口となるインターフェースのメトリックだけが使用されます。

IS1から見たルート情報

下図はIS1で求められるすべての宛先へのルート情報です。丸のついた数字が各宛先までのコストとして加算されるメトリックです。中央のブロードキャスト回線には疑似ノード(IS6.1)が存在しますが、疑似ノードは単にローカル回線上の名簿であるためコストは0です。実際はESの接続される回線に対しても疑似ノードが存在しますが、煩雑になるためここでは省いています。

下図ではIS1を例に挙げましたが実際にはこのようなルートの計算をすべてのISが個別に実行します。注意しておきたいポイントはすべてのISは同じLSPを持つということです。LSPの交換によってエリア内のISはすべてのISのLSPを持ちますが、計算のルート(root)となるISがそれぞれ異なるため各ISの持つルート情報は異なります。

IS1のルーティングテーブル

宛先 メトリック ネクストホップ
IS1 0 W
IS2 20 IS2
IS3 25 IS5
IS4 40 IS5
IS5 15 IS5
IS6 25 IS5
ES1 10 ES1
ES2 30 IS2
ES3 35 IS5
ES4 50 IS5

※実際には出力インターフェースとネクストホップが含まれます

■詳細

詳細ではIS-ISのルート情報の求め方をもう少し具体的に説明します。

SPFによるツリーの作成

ここではSPF(Shortest Path First)の動作を追っていくことでLSPからルート情報がどのように求められるのかを見ていきます。

必要なもの

LSP

同じエリア内のすべてのISのLSPが必要でIS、ESのネイバーIDとメトリックが使用されます。使用するメトリックはデフォルトメトリックと、オプションで指定した遅延、コスト、エラーのいずれかのメトリックですが計算方法は同じです。説明ではデフォルトメトリックとして各回線に重みを付けて計算しています。

PATHS

最短パスツリーのパスリストです。計算で一時的に使用されるデータベースで、このリストに追加されたものは最短であることが確定したものです。

TENT

最短パスツリーに追加するLSPの候補(tentative)リストです。計算で一時的に使用されるデータベースで、最短パスツリーに追加される可能性のあるシステムへの隣接情報を保持します。

Tentlength

計算中のパスの長さを示す値です。0から始まり1ずつ加算されます。同じ長さのパス情報をTENTリストから検索しPATHSに追加します。手順内では内部メトリックのみを使用していますが、実際には内部と外部が存在します。

手順の概要

この次の作成の手順では一つ一つの動作を追いながら説明していますが、SPFの手順を要約すると以下の3つのステップに分かれます。はじめにStep0で初期化を行い、その後Step2へと進み最短の候補をTENTへ追加し、次にStep1で最短ノードをPATHSに追加する作業を行います。このあとは1と2の処理を繰り返し行います。最終的に全てのノードがPATHSに入ると終了です。

Step0)初期化

Step1)最短ノードの追加(PATHSへ)

Step2)候補の追加(TENTへ)

作成の手順

前の手順の概要を踏まえて、概要セクションで説明した図を使用しIS1がどのように計算するのかを1手順毎に見ていきます。概要と同様にESとの接続回線の疑似ノードは省略しています。初期化の動作は1~3までです。

1)初めにDBを初期化します。Tentlengthを0にしPATHSとTENTを空にします。

2)IS1自身の情報をPATHSに追加します。(Wは直接送信を意味します)

3)ローカルIS(IS1)の隣接DBの内容をTENTに追加します。LSPの中で自分自身に対する隣接はすでにPATHSに存在するため省きます。

4)Tentlengthの値を1から順に増やしながらTENT内の一番小さな値のエントリーをPATHSに移動します。

ES1がメトリック10で最短ですのでPATHSに移動します。PATHSに入ると最短が確定され後にルート情報として使用されます。図ではPATHSに入ったパスを青の矢印で示していきます。

5)追加されたES1はエンドシステムのため続いてTENTから次の最短のエントリーをPATHSに移動します。

IS5がメトリック15で最短のためPATHSに移動します。

6)追加したIS5はISですのでIS5のLSPから隣接情報をTENTに追加します。

IS5の持つ隣接関係はIS1と疑似ノードですが、IS1向けの隣接情報はすでにPATHSに存在するため追加しません。

疑似ノードは実体のないISですがLAN内の隣接ISを示した情報を持つため疑似ノードの持つ隣接をTENTに追加します。疑似ノード持つ隣接情報はIS2、IS3、IS5、IS6ですが、IS2はすでにTENTに存在しトータルメトリック小さく、IS5はPATHSに存在するため追加しません。よってIS3とIS6をTENTに追加します。この時、追加したISはIS1から直接到達できないため、IS1から追加したノードまでのトータルコストを計算します。図のTENTリストではMetricのカッコ内の数字がオリジナルのコストで左の数字がトータルコストです。最短パスの選択には常にトータルコストを使用します。

7)TENTの中から最短のTentlengthのエントリーをPATHSに移動します。

IS2が20でTENT内では最短のためPATHSに移動します。

8)IS2はISのためIS2が持つ隣接情報をTENTに追加します。

IS2の持つ隣接はIS1、ES2、疑似ノードですが、IS1はすでにPATHSに存在し、疑似ノード内の隣接(IS2、IS3、IS5、IS6)はすでにPATHSにあるかTENTにありトータルコストが小さいため追加しません。よってTENTにはES2を追加します。

9)TENT内から最短のエントリーをPATHSに移動します。

IS3をPATHSに移動します。(IS3とIS6がありますがどちらから追加しても結果は同じです)

10)IS3はISであるため隣接情報をTENTに追加します。

IS3のもつ隣接としてES3とIS4を追加します。

11)TENTから最短のエントリーをPATHSに追加します。

IS6をPATHSに移動します。

12)IS6はISのため隣接情報をTENTに追加します。

IS6の隣接関係のIS4はTENTに既に存在します。しかしコストを比較するとIS6の持つ隣接関係のほうが小さいため上書きして更新します。

13)TENTから最短のエントリーをPATHSに移動します。

ES2をPATHSに移動します。

14)ES2はエンドシステムであるため続いてTENTから最短のエントリーをPATHSに移動します。

ES3をPATHSに移動します。

15)ES3はエンドシステムであるため続いてTENTから最短のエントリーをPATHSに移動します。

IS4をPATHSに移動します。

16)IS4はISのため隣接情報をTENTに追加します。

IS6とIS3の隣接はすでにPATHSに存在するためES4をTENTに追加します。

17)TENTから最短のエントリーをPATHSに移動します。

ES4をPATHSに移動します。

18)TENTが空で追加できるLSPがなくなったためショーテストパスツリーの作成は終了です。

この計算によって作成されたPATHSが下表になります。この表を並べ替えると概要で説明したルーティングテーブルと同じものになります。ルーティングテーブルとして使用するためにはこの表に出力インターフェースもしくはSNPA(MAC)アドレスの情報を付加します。

宛先 メトリック ネクストホップ
IS1 0 W
ES1 10 ES1
IS5 15 IS5
IS2 20 IS2
IS3 25 IS5
IS6 25 IS5
ES2 30 IS2
ES3 35 IS5
IS4 40 IS5
ES4 50 IS5

レベル2のルート計算

レベル2のルート計算では計算方法自体は同じですが、レベル1で宛先として使用されたESは存在しません。その代りレベル2では宛先としてエリアアドレスとプレフィックスが使用されます。また仮想リンクの場合はPATHに追加されたシステムが、パーティションL2 DISの場合は続けて仮想リンクの他端点のNETが追加されます。

使用するLSPの識別

基本的なルート計算に使用するLSPはISのLSPと、疑似ノードのLSPに分かれます。この2つのLSPはLSP IDで識別します。LSP IDは下図のように3つの数値からできていますが、Pseudonode IDが0の場合はISのLSPで、0以外の場合は疑似ノードのLSPとなります。LSP IDの命名については「LSPの交換」のページで説明しています。