IS-IS ルーティング

IS-ISを使ったOSIネットワークでどのようにルーティングが行われるのかを見ていきます。一つのエリアにESがある状態からから複数のエリアに跨った通信まで、一般的に考えられるパターンからいくつかのケースを取り上げます。

エンドツーエンドのルーティング

このページで行うエンドツーエンドの通信について説明します。このページで行うルーティングはすべてES1からES2への一方向です。この間でどのようにルート情報を交換し、どのようにデータが転送されていくのかを見ていきます。

NSAPアドレス、NET

NSAPアドレスはネットワーク層のSAPを表すアドレスで各ESに重複することなく付与されます。NETはネットワーク層のエンティティを表すアドレスでISとESに付与されます。ここで使用するアドレスは下図のようにESにはNSAPアドレスのみ、ISにはNETのみを付与します。エリアが分かれる場合は49.0001が49.0002のように頭の3オクテットが変わります。アプリケーション同士のプロセス間通信を想定してNSAPアドレスはSELを21(DECnet)としていますが、SELはルーティングには関わりません。

SNPAアドレス

SNPAアドレスはサブネットワークとの接続点を表すアドレスでEthernetではMACアドレスになります。このページではすべてのネットワークでEthernetを想定しているため読みやすさを優先して「SNPAアドレス」は使わず、「MACアドレス」を使用します。説明の中でES-ISが使用する「ALL ES」、「ALL IS」には下表のアドレスを使用します。

ALL ES(全てのESへ送信) 09-00-2B-00-00-04
ALL IS(全てのISへ送信) 09-00-2B-00-00-05

ルーティングメトリック

IS-ISのルーティングで使用されるメトリックは以下の4つがあります。どのメトリックを実装・利用するのかはISの問題ですが、どのメトリックを使用してルーティングするかはNPDUがQoSをサポートするかどうかで決まります。NPDUのQoSパラメータが何らかのQoSを使用することを示していれば該当するメトリック値が選択されます。QoSパラメータが含まれていない場合は、デフォルトメトリックが使用されます。また4つのメトリックはそれぞれドメイン内で使用する内部メトリックと、ドメイン外を表す外部メトリックが存在します。内部と外部のメトリックの比較は行われませんが、内部メトリックは外部メトリックよりも常に優先されます。ここでの説明では内部のデフォルトメトリックのみを使用します。

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

使用するPDU

IS-ISとES-ISを使用したルーティングで使うPDUを下表にまとめました。この中でグレーにしているPDUはルーティングの動作に直接関係しないためこのページでは登場しません。

プロトコル PDUタイプ 用途
ES-IS ESH(End System Hello PDU) ESからISへ送信するPDU
ISH(Intermediate System Hello PDU) ISからESへ送信するPDU
RD PDU(Redirect PDU) リクエストリダイレクトで使用するPDU
IS-IS IIH(IS to IS Hello PDU) IS間で使用するPDU
LSP(Link State PDU) 隣接情報を交換するPDU
CSNP(Complete Sequence Numbers PDU) すべてのLSPをリストしたPDU
PSNP(Partial Sequence Numbers PDU) 特定のLSPをリストしたPDU
CLNP NPDU(Network PDU) ユーザデータPDU

[ES-IS] サブネットワーク内の通信(ISあり)

ES-ISを使用した基本的なルーティングはサブネットワークに最低1台のISを必要とします。ESが同じサブネットワーク内の別のESに対してNPDUを送信する場合は一旦ISに対して送信して、RD PDUによってルート情報を学習するとESへ直接送信します。この動作はES-ISの機能ですのでISは登場しますが、IS-ISは使用しません。下図はES1からES2へデータを送信する手順を示しています。

1)初めにES2がESHをすべてのISに対して送信します。ESHにはNSAPアドレスが含まれていてIS1がES2のルート情報を学習します。この動作はES1でも同様に行われます。

2)次にIS1がISHを送信します。ISHにはNETの情報が含まれていてこれによってES1とES2はIS1の存在を学習します。IS1のMACアドレスはサブネットワーク内のゲートウェイの役割として登録されます。

ここまでの動作はES、ISのインターフェースが有効になると自動で行われる動作です。

3)次にES1はES2宛にNPDUを送信しますが、ES2のMACアドレスを知らないためゲートウェイであるIS1に送信します。このときの宛先はNSAPアドレスがES2でMACアドレスはIS1です。

4)NPDUを受信したIS1はNPDUのあて先からES2がES1同じサブネットワークであることを認識し受信したNPDUをES2に転送します。そして同時にIS1はリクエストリダイレクトの機能を使用しRD PDUをES1に送信します。RD PDUはISが同じサブネットワーク内のシステムの存在を知らせるためのPDUです。下図の場合、IS1はES2がES1と同じサブネットワークに存在し、ES1からIS1を経由せずに直接到達が可能であることをES1に知らせるためにRD PDUを送信しています。ES1はRD PDUを受信することでES2の存在を知り、ES2のMACアドレスを学習します。

5)ES1は次回からは学習したルート情報を使用してNPDUをES2へ直接送信します。

[ES-IS] サブネットワーク内の通信(ISなし)

サブネットワーク内にISの存在しない環境でルーティングを行う場合は次のいずれかの方法を使用します。

・ほかのESが送信したESHを受信する

・NPDUのブロードキャスト

ほかのESが送信したESHを受信する

ES-ISでは基本的にISを通じてルーティングを行うため、通常ほかのESが送信したESHは受信しません。ESHはマルチキャストされていますのでサブネットワーク内のすべてのデバイスに届いていますが、あて先がすべてのIS(ALL IS)になっているためISでないシステムは無視するようになっています。ただし、ISの存在しないネットワークにも対応するためES-ISの実装によってESがほかのESが送信したESHを受信してルートを学習することが可能です。

1)下図はES2が送信したESHをES1が受信している様子を示しています。ES1では通常は無視されるはずのESHを受信することによってES2へのルートを学習しています。

2)ES1は学習したルート情報を使用してNPDUを送信します。

NPDUのブロードキャスト

NPDUのブロードキャストはNPDUをESHのクエリとして使用する方法です。初めにすべてのESに対してNPDUを送信し応答(ESH)を受け取ることでルート情報を学習します。下図はES1がクエリを出す様子を示しています。

1)ES1はES2宛にNPDUを送信しますが、ES2のMACアドレスを知らないためALL ESで送信します。NPDUを受信したES2は受信したPDUの宛先MACアドレスがALL ESになっているため、ES1が宛先MACアドレスを知らないと認識します。

2)ES2はES1宛てにESHを送信します。ES1ではESHを受信しES2のMACアドレスを学習します。

3)次回以降ES1は学習したルート情報を使用してES2へNPDUを直接送信します。

[ES-IS] エリア内の通信

ES同士が同じエリアに属していてもサブネットワークがISによって隔てられている環境ではISによるルーティングを行います。下図ではES1とES2が異なるサブネットワークに接続されておりES同士が直接到達することができないためISはNPDUの中継を行います。この機能も前の環境と同様にES-ISの機能ですのでISは登場しますが、IS-ISは使用しません。

1)初めにES1とES2がそれぞれESHを送信します。ESHを受信したIS1はそれぞれのNSAPアドレスとMACアドレスに受信したインターフェースを紐づけて学習します。

2)IS1がIS Hello PDU(ISH)を送信します。ISHにはNETの情報が含まれていて、受信したES1はIS1の存在を学習します。IS1のMACアドレスはサブネットワーク内のゲートウェイの役割として登録されます。下図では送信を行うES1側だけにISHを送信していますが、ES2に対しても同様にISHを送信します。

3)ES1はES2宛にNPDUを送信しますが、ES2のMACアドレスを知らないためゲートウェイであるIS1に送信します。このときの宛先はNSAPアドレスがES2でMACアドレスはIS1です。

4)NPDUを受信したIS1はNPDUのあて先からES2がES1とは異なるサブネットワークなのでNPDUをIF2から送信します。

[ES-IS, IS-IS] 複数のISの存在するエリア内通信

エリア内に複数のISが存在し、異なるサブネットワークを跨がなければ到達できない環境の場合はES-ISとIS-ISを合わせて使用します。この環境では複数のISによって構成されているためESのルート情報は直接接続したISしか知ることができません。そこでIS-ISを使用してIS同士で情報を交換してESに対するルート情報をエリア全体で共有します。

1)各ESはESHを使用してISに対してNSAPアドレスを通知します。各ISはESHを受信することでESの存在を認識しESのNSAPアドレスを学習します。下図ではES1が送信したESHでIS1が学習し、ES2が送信したESHでIS2が学習する様子を示しています。

2)その後IS同士はIS-ISがLSPを交換します。下図ではIS1とIS2がLSPを交換しルート情報を学習する様子を示しています。

3)ESがESHを送信するのと同じタイミングで、ISはISHを使用してESにNETを通知します。各ESはISHを受信することでISの存在を認識しゲートウェイを学習します。下図はIS1から送信したISHでES1がゲートウェイを学習する様子を示しています。図には示していませんが、ES2もIS2から送信されたISHで同様に学習します。

4)ES1はES2宛てのNPDUを送信します。ES1はES2の直接の宛先を知らないため、ゲートウェイであるIS1に対して送信します。この時の宛先はNSAPアドレスがES2宛てで、MACアドレスがIS1宛てです。

5)NPDUを受信したIS1はIS-ISによって学習されたルーティングテーブルに従ってNPDUをIS2へ転送します。

6)NPDUを受信したIS2はES-ISによって学習したルーティングテーブルに従ってNPDUをES2へ送信します。

[ES-IS, IS-IS] 複数のルートが存在する場合のエリア内通信

同じエリア内に複数のルートが存在する場合はIS-ISによる情報交換に加えてルートの選択を行います。下図は各回線にメトリックが設定されている様子を示しています。この環境ではES1からES2へ至るルートが2つ存在するためどちらかを選択しなければなりません。IS-ISでは宛先によってルートを選択するため各ISからES2までのトータルメトリックが小さいほうを選択することになります。分岐点となるIS1ではトータルメトリックの小さくなるIS3を通るルートをベストルートとして採用します。この動作はIS-ISが計算上行うものであり、これまで説明してきたESやISの行う通信手続きに違いはありませんが、NPDUの通る経路に影響します。

1)各ESはESHを使用してISに対してNSAPアドレスを通知します。各ISはESHを受信することでESの存在を認識しESのNSAPアドレスを学習します。下図ではES1が送信したESHでIS1が学習し、ES2が送信したESHでIS2が学習する様子を示しています。

2)その後IS同士はIS-ISがLSPを交換します。下図ではIS1とIS2とIS3がLSPを交換しルート情報を学習する様子を示しています。

3)ESがESHを送信するのと同じタイミングで、ISはISHを使用してESにNETを通知します。各ESはISHを受信することでISの存在を認識しゲートウェイを学習します。下図はIS1から送信したISHでES1がゲートウェイを学習する様子を示しています。図には示していませんが、ES2もIS2から送信されたISHで同様に学習します。

4)ES1はES2宛てのNPDUを送信します。ES1はES2の直接の宛先を知らないため、ゲートウェイであるIS1に対して送信します。この時の宛先はNSAPアドレスがES2宛てで、MACアドレスがIS1宛てです。

5)NPDUを受信したIS1はIS-ISによって学習されたルーティングテーブルに従ってNPDUをIS3へ転送します。IS1からはES2へ到達できるルートが2つありますが、初めに説明した通りIS1からのトータルメトリックが小さくなるIS3経由のルートがベストルートとして採用されています。

6)NPDUを受信したIS3はIS-ISによって学習されたルーティングテーブルに従ってNPDUをIS2へ転送します。

7)NPDUを受信したIS2はES-ISによって学習したルーティングテーブルに従ってNPDUをES2へ送信します。

[ES-IS, IS-IS] サブネットワークに複数のISが存在する通信

サブネットワーク上に複数のISが存在する場合は、ES-ISによるリクエストリダイレクトが発生する場合があります。この動作はゲートウェイが2つ存在するサブネットワークでより良いゲートウェイをESに選択させるための機能です。リクエストリダイレクト機能はES-ISの機能でRD PDUが使用されますが、ルーティングテーブルの作成はIS-ISで行います。この機能はISのルート情報から最適な情報をESに知らせるというES-ISとIS-ISが協調した動作を行います。

1)各ESはESHを使用してISに対してNSAPアドレスを通知します。各ISはESHを受信することでESの存在を認識しESのNSAPアドレスを学習します。下図ではES1が送信したESHでIS1とIS2が学習する様子と、ES2が送信したESHでIS3が学習する様子を示しています。

2)その後IS同士はIS-ISがLSPを交換します。下図ではIS1とIS2とIS3がLSPを交換しルート情報を学習する様子を示しています。

3)上と同じタイミングでISからISHが送信されます。ES1はISからのISHによってISを学習しています。このときES1と同じサブネットワークにはIS1とIS2の2台のISが存在するためES1は同じ条件で2つのISを学習します。もし、IS1経由とIS2経由でメトリックが異なっていたとしてもES-ISはメトリックを扱わないため違いが判りません。

4)ES1はES2へNPDUをIS1もしくはIS2に対して送信します。同じ条件で登録を行いましたのでどちらに送信されるかは実装次第ですが、下図ではIS2に送信しています。

5)IS2ではNPDUを受信して転送するかどうかを判断します。IS2のIF2にメトリック50が設定されているため、トータルメトリックが60のIS1経由がES2までの最短ルートであると判断できます。IS2のルーティングテーブルにはネクストホップがIS1となっているためNPDUを受信したIF1からIS1へ転送します。この動作はIS-ISにおける通常のルーティングです。この後NPDUはIS3を経由してES2に受信されます。

6)IS2は送信元のES1がネクストホップであるIS1と同じサブネットワークに属すると分かったことで、ES-ISのリクエストリダイレクトを使用しRD PDUをES1宛てに送信します。RD PDUには最適なNETとMACアドレスの情報が含まれていてES1にルート情報の修正を促します。ES1はRD PDUを受信するとES2に対するルート情報を自身のルーティングテーブルに追加します。

7)次回からはES1からES2へ送信されるNPDUは修正されたルーティングテーブルをもとにIS1へと送信されることになります。

リクエストリダイレクトの機能は常にES間の最適なルートを選択させるわけではないことに注意が必要です。例えば下図ではIS2からES2へのトータルメトリックはIS1を経由しても経由しなくても同じですが、ES1からES2へのトータルメトリックではIS1経由が最短となります。この環境でES1がIS2にNPDUを送った場合、NPDUの転送とリクエストリダイレクトの動作は行われず、すべてのNPDUはトータルメトリックとして劣るルートを転送されることになります。

[ES-IS, IS-IS] 異なるエリアの通信

ネットワークが複数のエリアで構成されている場合にはIS-ISを使用してエリア間ルーティングを行います。ネットワークが複数のエリアに分かれている場合はエリアとは異なるレベルの概念が用いられ、通常のエリアはレベル1、エリア間をつなぐルーティングはレベル2として扱われます。エリア内はこれまで説明してきたシステムIDによるルーティングを行いますが、エリア間のルーティングはエリアアドレスを使用したプレフィックスルーティングを行います。

1)まず、各ESはESHを使用してISに対してNSAPアドレスを通知します。各ISはESHを受信することでESの存在を認識しESのNSAPアドレスを学習します。下図ではES1が送信したESHでIS1が学習する様子と、ES2が送信したESHでIS4が学習する様子を示しています。

2)その後IS同士はIS-ISを使用してLSPを交換します。下図ではIS1、IS2、IS3、IS4がLSPを交換しルート情報を学習する様子を示しています。IS間はLSPの交換によってルート情報を作成しますが、各エリアのISはそのエリアに属するシステムに関する情報を持ち、エリア間のレベル2ではプレフィックスの情報を持ちます。

3)上記のLSPの交換と同じタイミングでISからISHが送信されます。ES1はISHを受信することによってIS1の存在(ゲートウェイ)を知ることができます。

4)ES1がデータを送信します。ES1はES2の直接のMACアドレスを知らないため、送信先はNSAPアドレスがES2宛て、MACアドレスがIS1宛てです。

5)IS1はNPDUの転送動作を行います。NPDUの宛先は異なるエリアであるためレベル2で動作するIS2に向けて送信します。

6)IS2は受信したNPDUが異なるエリアであるためレベル2のルーティングを行います。IS-ISでIS3からNPDUの宛先と同じエリアのプレフィックスを学習しているためNPDUをIS3へ転送します。

7)IS3は受信したNPDUが自分の属するエリアであるためレベル1のルーティングを行います。IS-ISでIS4からES2のアドレスを学習しているためNPDUをIS4へ転送します。

8)IS4は受信したNPDUの宛先がES-ISによって学習したES2のものであるためPDUをES2へ送信します。