TCP/IPネットワークでは,IPアドレスを使ってデバイスを識別したり,経路を判断したりします。OSIプロトコルでは,「NSAPアドレス」と呼ばれる別のアドレス体系が使われます。今回は,Integrated IS-ISで使われるNSAPアドレスを勉強しましょう。
OSIプロトコルで使うアドレス体系
OSIプロトコルでのアドレッシングは,NSAP(Network Service Access Point)と呼ばれるアドレスを使用します。NSAPは,最大40桁(160ビット)による可変長フォーマットです。IS-ISでは,IS(ルータ)自体に割り当てるアドレスや経路情報など,すべてにNSAPアドレスを使います。Integreted IS-ISは,IS-ISのルーテッドプロコルとしてIPを使えるようにしたものですが,基本的なルーティング方式はIS-ISを使うため,デバイスには必ずNSAPアドレスを設定する必要があります。NSAPアドレスでIS(ルータ)を識別したり,各ISがトポロジテーブルを作成したりします。NSAPアドレスは,IPアドレスとは異なり,デバイスのアドレスと,上位プロトコルの識別子からなります。IPヘッダには上位プロトコルを示すフィールド(プロトコル番号フィールド)がありますが,NSAPではそれがアドレスの一部となっています。Cisco機器がIntegrated IS-ISで使うNSAPアドレスのフォーマットは,次の通りになります(図1)。
図1 NSAPアドレスの構成
- IDP ・・・IPアドレスのネットワーク部に相当
- AFI ・・・ NSAPのフォーマットを指定。NSAPは使用する場所によってフォーマットが変わるため。
- IDI ・・・ ドメインを識別する
- DSP ・・・IPアドレスのサブネット部とホスト部に相当
- HODSP ・・・ ドメインをエリア分割した場合の識別に使う。IPアドレスのサブネット部に相当
- SystemID ・・・ デバイスを識別する
- NSEL ・・・ サービス識別子。上位プロトコルの識別に使う
SystemIDはデバイスを識別する値で,ISやESに割り当てるアドレスです。IPアドレスのように,「インタフェース」に付けられる値ではありません。SystemIDには,MACアドレスが使われることが多いです。
NSELは上位プロトコルを識別する値で,TCP/IPにおけるIPヘッダの上位プロトコルフィールドやポート番号に相当します。NSELがゼロ(0x00)の場合,そのNSAPデバイスそのものを表すアドレス(IPアドレスと同じ扱い)とされます。このアドレスはNET(Network Entity Title)と呼ばれ,IS-ISではNSAPアドレスにこのNETを使います。
IPアドレスとNSAPアドレスを対比すると次のような形になります(図2)。赤字部分がIPアドレスに相当する部分です。
図2 IPアドレスとNSAPアドレスの比較
NSAPアドレスの記述方法
Cisco機器に設定するNSAPアドレスは,一般的には次のようになります。- AFI ・・・ IPアドレスのグローバルIPアドレス同様,プロバイダや企業ごとに決められたアドレスを使います。0x49がプライベートアドレスとして使われます
- IDI+HODSP ・・・ ドメインとエリアを識別します。慣例として最小2バイトを使います
- SystemID ・・・ ルータのMACアドレスか,IPアドレスを使用します
- NSEL ・・・ デバイスを識別するアドレスのため,NET(0x00)を使用します
AFIとIDIとHODSPの3つの部分は「エリアID」として使用されています。NSAPアドレスは可変長のため,CiscoIOSはNSAPアドレスを後ろから確認し,次のようにNSAPアドレスのフィールドを識別します。
- 最後尾の1バイトがNSEL
- NSELの前6バイトがSystemID
- 残りがエリアID
- エリアIDのうち,先頭3バイトがドメインID
- 残りがエリアID
ドメインIDとエリアIDは,ドメイン間のルーティング(レベル3ルーティング,ISO-IGRPやIDRPが担当)の場合は別のIDとして認識し,レベル3ルーティングを行います。IS-ISが行うドメイン内ルーティング(レベル1・2ルーティング)ではドメインが同一のため,ドメインIDとエリアIDは区別せず,1つのエリアIDとして使用します。
NSAPアドレスを表記するときは,ドットで区切って示します。AFIとNSELは1バイトでドットを入れますが,そのほかの部分は2バイトごとにドットを入れます。NSAPアドレスの表記例は,以下のようになります(図3)。
図3 NSAPアドレスの例