Integrated IS-ISでルート情報がどのように決まるのかを見ていきます。概要ではIS-ISとの違いとルート情報の求め方、詳細では詳細な手順を説明します。
Integrated IS-ISはLSPを使用して計算でルート情報を求めます。計算に使用するSPFは隣接情報であるLSPからネットワークのマップを作成し隣接関係から宛先に対するネクストホップを求めます。
Integrated IS-ISは基本的にIS-ISと同じプロトコルです。そのため計算方法に違いはありません。しかしIS-ISをIPに対応させたことによって以下の違いがあります。
・IPサブネットがESとして扱われる
・ネクストホップにIPアドレスが使用される
計算方法もIS-ISと同じで、Dijkstraのアルゴリズムを使用したSPFで行われます。違いはIPサブネットをESと同じ扱いをするところです。具体的には詳細で説明しています。
メトリックはIS-ISと同じものを使用します。
デフォルトメトリック | 必ず実装しなければならないメトリックで、数値が小さいほど優先度が高いことを示します。通常は回線の帯域幅を比較する尺度として解釈されることを想定していますが、具体的な計算方法は決められていません。IS-ISの規定値は20(RFC4444では10)です。 |
遅延メトリック | 回線の通過遅延を示すメトリックです。値が大きいほど遅延が大きいことを示します。このメトリックはオプションです。 |
経費メトリック | 回線を使用するための金銭的コストを示すメトリックです。値が大きいほど金銭的な負担が大きいことを示します。このメトリックはオプションです。 |
エラーメトリック | 回線のエラー率を示すメトリックです。値が大きいほどエラーの発生する可能性が高いことを示します。このメトリックはオプションです。 |
IPネットワークの特徴から宛先がIPサブネットになるため、IPサブネットはルート計算ではESとして扱われます。
下図はOSIネットワークに対してIPサブネットを割り当てたものです。ここではわかりやすくするためにすべてのサブネットを/24に統一しています。
OSIではISはIDによって一意に特定されますが、IPでは複数のIPアドレスが割り当たる可能性があるため、IPによってISを一意に特定する際にはISに(もしくはIDに)一つのIPアドレスをマッピングする必要があります。その際にはLSPにIP Interface Addressオプションを含めます。
IS1から10.0.3.0/24に対するルート選定は下図のように行われます。青のルートはIS1、IS2を経由してトータルメトリックが30となり、赤のルートはIS1、IS5、IS2を経由してトータルメトリックが35とあるため小さいほうの青のルートがベストルートとして選択されます。
上記のルート選定を踏まえてすべての宛先に対してR1の視点で計算すると下図のようになります。
宛先 | メトリック | ネクストホップ |
IS1 | 0 | W |
IS2 | 20 | 10.0.2.2 |
IS3 | 25 | 10.0.8.5 |
IS4 | 40 | 10.0.8.5 |
IS5 | 15 | 10.0.8.5 |
IS6 | 25 | 10.0.8.5 |
10.0.1.0/24 | 10 | 10.0.1.0/24(直接) |
10.0.2.0/24 | 20 | 10.0.2.0/24(直接) |
10.0.3.0/24 | 30 | 10.0.2.2 |
10.0.4.0/24 | 25 | 10.0.8.5 |
10.0.5.0/24 | 35 | 10.0.8.5 |
10.0.6.0/24 | 45 | 10.0.8.5 |
10.0.7.0/24 | 50 | 10.0.8.5 |
10.0.8.0/24 | 15 | 10.0.8.0/24(直接) |
10.0.9.0/24 | 40 | 10.0.8.5 |
詳細ではIntegrated IS-ISのルート情報の求め方を具体的に説明します。
ここではSPF(Shortest Path First)の動作を追っていくことでLSPからルート情報がどのように求められるのかを見ていきます。
概要でも説明したようにIS-ISと異なるのはIPサブネットをESに置き換えるところです。このためにIntegrated IS-ISではLSPにIP内部到達可能性情報とIP Interface Addressが加わっています。IP内部到達可能性情報はSPFの計算の中でESとして扱われてネクストホップが求められます。IPサブネットをESとして扱うというイメージがどのようなものかは手順の中で説明しています。IP Interface AddressはISをIPアドレスで識別するための役割ですがLSP同士のリンクはIDによって示されるため、SPFの計算の中で役割は持たず使用されません。ただし、ルーティングテーブルではネクストホップをIPアドレスに変換する必要があります。どの段階で置き換えるかは実装次第ですが、この手順ではTENTに入った時点でIPアドレスに置き換えています。また、手順の中ではESは登場しませんが、当然ESが存在していても正常に機能します。
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へ)
1)IS1はPATHSとTENTとTentlengthを初期化します。
2)IS1はPATHSに自分自身を追加します。
3)IS1自身のLSPをTENTに追加します。TENT内のエントリーはPATHSに追加する候補です。
4)Tentlengthの値を1ずつ増やしながらTENTの中で一番小さいエントリーをPATHSに移動します。
TENT内でメトリックが10の10.0.1.0/24のエントリーをPATHSに追加します。ここで追加したIPサブネットはOSIで登場するESと同じ扱いです。ESはNSAPアドレス以外にリンク情報を持たない端点の位置づけのノードです。OSIではOSIネットワークの特徴からESがISに対して存在を通知することでISはESに対して具体的なルートを作成します。IPサブネットはIPネットワークの特徴からISのインターフェースにIPアドレスが設定されている事実から、そこにサブネット(ホスト)が存在している前提でルートを作成します。この2つは「宛先にはなるが、転送を行わない(LSPを持たない)」という意味で同一視しても違いはないことからIS-ISではSPFの計算の上ではIPサブネットをESと同じように扱います。
5)PATHSに移動したのがサブネットであるため、さらにTentlengthのインクリメントを続けてTENTからメトリックが15のIS5をPATHSに移動します。
6)PATHSに移動したIS5はISであるためIS5のLSPから隣接情報をTENTに追加します。
このときPATHSに既に追加されているエントリーは省かれます。またTENTに既に追加されているエントリーはトータルメトリックが小さいほうが選択されます。そのためIS6.1と10.0.4.0/24を追加します。TENTに追加する際のメトリックはトータルメトリックで追加します。図中のMetricでカッコ内の数字がLSPの持つメトリックで左の数字がトータルメトリックです。またIS5はDISであるため、疑似ノードのLSPも追加します。疑似ノードからはPATHSに既に登録されているIS5と、TENTにすでに追加されているIS2は省いてIS3とIS6を追加します。
7)TENTから最小のトータルメトリックとなる10.0.8.0/24をPATHSに移動します。
8)続けてIS2を移動します。
TENTからPATHSにエントリーを移動するときには常にTentlengthの値と同じリンク情報となっていることに注意します。
9)IS2はISなのでIS2のLSPから重複しないLSPを追加します。ここでは10.0.3.0/24のみが対象となります。
10)TENTから最小のトータルメトリックとなる10.0.2.0/24をPATHSへ移動します。
11)続けて10.0.4.0/24を移動します。
12)さらにIS3を移動します。
13)IS3はISなのでIS3のLSPから重複しないリンク情報をTENTに追加します。
14)TENTからトータルメトリックが最小のエントリーであるIS6をPATHSに移動します。
15)IS6はISなのでIS6のLSPから重複しないリンク情報をTENTに追加します。
16)TENTからトータルメトリックが最小の10.0.3.0/24をPATHSに移動します。
17)続けて10.0.5.0/24をPATHSに移動します。
18)さらにIS4をPATHSに移動します。
19)IS4はISであるためIS4のLSPをTENTに追加します。
20)TENTからトータルメトリックが最小の10.0.9.0/24をPATHSに移動します。
21)続けて10.0.7.0/24をPATHSに移動します。
22)さらに10.0.7.0/24をPATHSに移動します。
23)TENTが空で追加できるLSPもないためSPFは終了です。
PATHSの結果が下表になります。並べ替えると概要で説明したものと同じになります。実際のルーティングテーブルではこの情報にインターフェースやMACアドレスが付加されます。
宛先 | メトリック | ネクストホップ |
IS1 | 0 | W |
10.0.1.0/24 | 10 | 10.0.1.0/24(直接) |
IS5 | 15 | 10.0.8.5 |
10.0.8.0/24 | 15 | 10.0.8.0/24(直接) |
IS2 | 20 | 10.0.2.2 |
10.0.2.0/24 | 20 | 10.0.2.0/24(直接) |
10.0.4.0/24 | 25 | 10.0.8.5 |
IS3 | 25 | 10.0.8.5 |
IS6 | 25 | 10.0.8.5 |
10.0.3.0/24 | 30 | 10.0.2.2 |
10.0.5.0/24 | 35 | 10.0.8.5 |
IS4 | 40 | 10.0.8.5 |
10.0.9.0/24 | 40 | 10.0.8.5 |
10.0.6.0/24 | 45 | 10.0.8.5 |
10.0.7.0/24 | 50 | 10.0.8.5 |
ここではIPのみを対象として説明しましたが、同時にNET、NSAPアドレスを使用したSPFも行われています。
レベル2のSPFはレベル1と同じです。IPサブネットとNSAPアドレスのプレフィックスをESとして扱った計算が行われます。