IS-IS アドレッシング(NSAPアドレス)

IS-ISのアドレス付与について説明します。初めにOSIのNSAPアドレスの付与とIS-ISの解釈について取り上げて、続いてアドレス構成のとらえ方について説明します。

■ NSAPアドレスとアドレス付与

OSIネットワークはESやISなどのシステムによって構成されていますが、各システムはネットワーク層で付与されるIDによって識別されます。このIDは下図のような最大20オクテットの長さを持ったNSAPアドレスもしくはNETと呼ばれるネットワークアドレスで、ルールに則って付与することによりESやISが相互に通信することができるようになります。

アドレスの付与ポイントと構成

ここではNSAPアドレスを「どこに付与するのか」、「誰が付与するのか」、「付与する際のルールと範囲」の順に見ていきます。

どこに付与するのか

システムに対するネットワークアドレスの付与ポイントはNSAPとNetwork Entityの2つです。NSAP(Network Service Access Point)はネットワーク層が上位層を識別するための点で、この点に設定するネットワークアドレスがNSAPアドレスです。ネットワーク層の上層はトランスポート層であるため、NSAPアドレスはトランスポートエンティティを識別します。Network Entityはネットワーク層で動作するプロセスなどの要素で、このNetwork Entityに付与するネットワークアドレスがNET(Network Entity Title)です。NETはNSAPアドレスと同じ範囲から付与されることになっているため、アドレス形式はNSAPアドレスと同じものになります。NETによってネットワークエンティティを識別することができます。

ネットワークアドレスの付与ポイントを、使用するシステムごとに分けたものが下図になります。見てわかるのはESがNSAPアドレスを持ち、ISがNETを持っていることです。ESもISもネットワーク通信を行う上で必要なものですが、ESはエンドツーエンドの通信を、ISはネットワーク層での転送を行います。そのためESはネットワーク層からするとトランスポートエンティティを識別するためにNSAPアドレスを持ち、ISはネットワーク層で動作するためネットワークエンティティを識別するためにNETを使用します。これが、各システムが使用するアドレスの種類と付与ポイントです。

誰が付与するのか

NSAPアドレスもNETもOSIアドレスプレフィックスの中から付与します。アドレスプレフィックスはOSI(実際は各番号計画のアドレス指定機関)から割り当てられるアドレスの範囲で、アドレスの上位部分のみ値が決まって提供されます。下図はアドレスの付与の概念を表したものです。組織が運用するドメインに対してOSIからアドレスプレフィックスが割り当てられ、組織内では割り当てられたアドレスプレフィックスをもとにNSAPもしくはNetwork EntityへIDを付与します。付与されたアドレスは実際にシステムに設定することによってネットワーク通信を行うことができるようになります。これがネットワークアドレス付与の大まかな流れです。

付与する際のルールと範囲

OSIから割り当てられたアドレスプレフィックスはドメイン間の通信ができるようにはなっていますが、ドメイン内の利用については定められていません。そのためドメイン内では自由にアドレッシングを行うことができますが、ドメイン内にルールが存在する場合はそれを守って付与します。

下図はドメイン内のルールとしてIS-ISがNSAPアドレスとNETを解釈するところを表したものです。OSIから割り当てられたプレフィックスから付与されるNSAPアドレスとNETは、ドメイン内の通信を効率的に行うことを目的としてIS-ISから別の解釈(エリア情報やIDなど)が与えられることになります。そのためNSAPアドレスとNETを付与する際にはIS-ISのルールに沿ったアドレッシングを行う必要があります。

このIS-ISの解釈は他のドメイン内プロトコルとの関係に注意が必要です。IS-ISの行う解釈はIS-ISがNSAPアドレスやNETを扱うためのものであるため、ドメイン内の他のプロトコルには関係ありません。しかし、IS-ISがドメイン内のルーティング制御を司っている以上、IS-ISに依存するES-ISなどのプロトコルはIS-ISと同じ解釈でアドレッシングを行わなければ正常にルーティングができないことになります。

下図はIS-ISとES-ISの適用範囲を示しています。ES-ISはIS-ISのルールの外にあり本来は自由にアドレッシングすることができますが、IS-ISにルーティングを依存している以上少なくとも見かけ上はIS-ISのルールに従ってアドレッシングを行う必要があります。ただし、IS-ISがES-ISの動作に干渉するわけではないためES-ISではIS-ISの設けるエリア情報やIDなどは解釈せず、常にフルアドレスで扱います。

アドレスの構成

NSAPアドレスとNETは下図に示すように最大20オクテットの可変長アドレスです。中央のアドレスを挟んで上側の赤色がOSIで規定されている区分で下側の水色がIS-ISとして解釈する部分です。

OSIの規定ではドメインにプレフィックスを割り当てることが目的となるため、アドレス全体の区分(IDP、DSP)と、IDP内のプレフィックス(AFI、IDI)を決定する役割を持ちます。このIDPがドメインを識別するパートで、DSPはドメイン内でシステムを識別するパートという扱いです。

IS-ISの解釈はドメイン内のルーティングで効率よくルート情報を扱うことが目的であるため、OSIの規定を守りながらArea Address、ID、SELの3つのフィールドで取り扱います。Area AddressにはOSIのプレフィックスが完全に含まれていて、任意にエリアを分けるためのHO-DSPを設けることができます。IDはドメイン内でシステムに付与する値で任意につけることができます。SELは上位プロトコルを識別するための値を使用します。SELはIS-ISでは使用しませんがISにアドレス付与する場合には一般的に00が使用されます。

下図ではOSIのプレフィックスとしてAFI(37)とIDI(4431.0000.0000.01)が決まった状態です。そしてIS-ISの解釈としてプレフィックスに足してArea AddressとなるHO-DSP(00.0001)、システムを識別するID(1111.1111.1111.1111)、上位層を識別するSEL(01)が決まっています。各フィールドの説明は表にまとめたとおりですが、ページ後半の「NSAPアドレスのとらえ方」でより具体的に説明しています。

フィールド 長さ (Octet) 記数法 用途
IDP(Inter Domain Part) ドメインを識別するためのパート。OSIが指定しドメインごとに異なる番号になる
DSP(Domain Specific Part) ドメイン内のシステムを識別するためのパート。OSIの指定はなく、ドメインで一意に番号を設定する
AFI(Authority and Format Identifier) 1 16進数 ネットワークアドレス指定機関を識別する。番号はISOによって規定されている
IDI(Initial Domain Identifier) 可変長 0~8 10進数 AFIで指定されたネットワークアドレス指定機関から付与された番号が入る
HO-DSP(High Order Domain Specific Part) 可変長 0~17 AFI指定 エリアをドメイン内で分ける際に任意で使用する
ID(SystemID) 可変長 1~8 AFI指定 ドメイン内の機器に付けるための番号
SEL (Network Selector) 1 AFI指定 上位層を識別するための番号。ISは一般的に00、ESの場合は上位層が指定する
Area Address IS-ISでエリアの識別に使用する範囲

アドレスの決め方

NSAPアドレスの決め方を大きく3つのステップに分けて説明します。

※ここで扱う”NSAPアドレス”はIS-ISのNETとIS-ISのルールに則って付与するES-ISのNSAPアドレスとNETを含んだ呼び方です。

1)AFIとIDIの値を決める

AFIでは使用する番号計画を指定し、IDIでは番号計画のアドレス指定機関から割り当てられた値を入れます。長さはAFIが固定で1オクテット、IDIはAFIで指定した番号計画によって決まります。図では仮にX.121の番号を割り当てています。AFI(37)はX.121を使用することを表し、IDIの値はX.121で指定された組織の識別番号(4431:架空の番号)とその組織が付与する端末番号です(IDIの付与番号は各番号計画の問題でNSAPアドレスの範囲外です)。

2)HO-DSPとIDの長さを決める

HO-DSPはエリアに付与する値、IDはシステム(IS、ES)に付与する値で、それぞれ使用する数に見合う桁数を決定します。SELは上位層を識別するための値で長さは1オクテットの固定です。HO-DSPとIDは前出の表で示した通りの範囲で長さを決めますが、NSAPアドレス全体で20オクテットを超えないようにします。図ではHO-DSPを3オクテット、IDを8オクテットにしていますが可変長なのでHO-DSPを4オクテット、IDを7オクテットにしても問題ありません。また20オクテット以内であれば良いため任意で短くすることができます。逆に上で指定したIDIが短い場合には長くすることもできます(ただしIDは最長8オクテット)。

※可変長のフィールドが連続することになるためHO-DSPかIDの長さを明示するか固定する実装が必要です。

3)HO-DSP、ID、SELの値を決める

HO-DSPとIDの値は任意で決めることができます。SELは上位層のプロトコルによって決まるトランスポートエンティティを識別するための値を指定します。

ローカルアドレスを使用したNET

前のアドレスの決め方を踏まえてローカルアドレスをIS-ISで使用する場合に限定した一般的なNETの決め方を見ていきます。ローカルアドレスは閉じたネットワーク環境内であれば自由に使用することのできるアドレスです。AFIでローカルアドレスを表す49を使用し、アドレス指定機関が存在しないためIDIフィールドが含まれない特徴を持ちます。そして一般的なIS-ISの実装ではこれまで説明したルール以外にいくつかの仕様が追加されています。以下の条件に沿って決めていきますが、ユーザで決めなければならないのは下図の赤字で示した情報です。

一般的なルータにおけるローカルアドレスの既定条件。図の番号と対応しています。

1)AFI:49(1オクテット固定)

ローカルアドレスではAFIが49に決められています。

2)IDI:なし

AFIに49を使用した場合はアドレス指定機関がないことを意味するため、IDIフィールドはなくなります。

3)HO-DSP:任意値(可変長)

AFIと合わせてAreaAddressにするための番号を決めます。長さは任意ですが、IDが6オクテットに固定されているため最大12オクテット分を使用することができます。長さを0にしてフィールドをなくすこともできます。その場合Area AddressはAFIのみとなります。

4)ID:任意値(6オクテット固定)

IDは長さが6オクテットに固定されます。これはIS-ISの規定ではなくGOSIP(Government OSI Profile)に準拠した長さ (RFC3719ではMUST) です。値は6オクテット内で自由に決めることができます。

5)SEL:00(1オクテット固定)

IS-ISでNETを指定する場合、SELは一般的に00に固定します。

アドレスの例

ローカルアドレスを使用した場合に決まるIS-ISのNETは以下のようなバリエーションを考えることができます。

HO-DSPの長さを12オクテットで値を1、IDを1にした場合は以下のようになります。この構成はローカルアドレスを使用したNETの最長の構成です。

HO-DSPの長さを4オクテットで値を12、IDを3にした場合は以下のようになります。

HO-DSPの長さを0オクテット、IDを4にした場合は以下のようになります。この構成がローカルアドレスでは最短のNETです。エリアはAFIの示す1つだけになります。

HO-DSPの長さを2オクテットで値を1、IDを5にした場合は以下のようになります。この構成がNETを表現する際によく用いられます。

アドレスの付与

ここでは以下のローカルアドレスを使用して各システムやエリアに対してIDをどのように付与するのか見ていきます。これまでの説明通りIS-ISではNSAPアドレスやNETを下図のように3つのフィールドとして解釈します。アドレスを付与する場合はこのフィールド分けを意識したアドレッシングを行わなくてはなりません。アドレッシングにはシステム間通信とプロセス間通信の意味が含まれていて、システム間通信にはArea AddressとID、プロセス間通信にはSELを使用します。

なお下のアドレス付与規則はIS-ISのものであり厳密にはESは直接関係しませんがES(CLNS、ES-IS)がIS-ISのルールに則った前提で説明します。

アドレス付与規則

・同じエリアアドレスを有するシステムは同じエリアに属する

・すべてのシステムのIDの長さは同じ

・エリア内でシステムごとに異なるID値

・レベル2の中でシステムごとに異なるID値

・ISのSELは一般的に00、ESのSELは同じ値

・システムは長さの異なる複数のエリアアドレスを持つことができる(補足を参照)

シングルエリア

まずは1つのエリアで構成されるネットワークで考えてみます。下図は3つのシステムからなるネットワークですが、このネットワークに対してシステム間通信のためのArea AddressとID、プロセス間通信のためのSELを付与します。このネットワークはシングルエリアのためエリアアドレスは全体で1つ、すべてのシステムに異なるIDを付与して、ESに同じSELを付与します。

下図はそれぞれの意味ごとに値を付与したものです。シングルエリアのシステム間通信ではエリアが一つとなるため、すべてのシステムが一つのエリア(49.0001)内に収まっています。そしてIDによってシステムを識別するためエリア内のすべてのシステムで異なるIDを付与しています。これによってエリア内のシステム間通信が可能になります。そして上位層の同じプロセス同士が通信するためにすべてのESで同じSEL(01)を付与しています。これによってプロセス間通信が可能になります。ISのSELはNetwork Entityを識別する目的で00を付与しています。

この状態から各システムで「Area Address、ID、SEL」の順に連結すると下図のようにNSAPアドレスもしくはNETが決まります。

マルチエリア

複数のエリアから構成されるネットワークはシングルエリア構成のネットワークが複数接続された形になっています。そのためシングルエリアのアドレッシングに加えてエリア同士をつなぐ際の注意が必要となります。

下図は2つのエリアを想定して配置したネットワークです。このネットワークに対してシステム間通信のためのエリアとID、プロセス間通信のためのSELを付与します。

下図はエリアの境界でエリアを分けてアドレスを付与したものです。マルチエリアの構成ではエリアが複数集まった形になっているため、各エリアは前のシングルエリアと同じ方法でアドレッシングします。追加で注意する点はエリアの区別とレベル2のID付与です。複数のエリアが存在することはエリアを区別しなければならないため、エリアごとに異なるエリアアドレスを付与します。そして異なるエリアアドレスの境界に発生するレベル2はエリアアドレスとESが存在しない点を除くとエリアと同じ性質であるため、レベル2内のすべてのシステムに異なるIDを付与します。これによってエリアをまたいでシステム間通信ができるようになります。

そして上位層が同じプロセスと通信するためにドメイン内のすべてのESでSELを同じにします。これによってプロセス間通信が可能になります。

シングルエリアの時と同様に各システムで「Area Address、ID、SEL」の順に連結すると下図のようにNSAPアドレスもしくはNETが決まります。

■ NSAPアドレスのとらえ方

ここまではNSAPアドレスの概要とIS-ISで使用する一般的な付与方法について説明しましたが、ここからはもう少し具体的なNSAPアドレスの説明とアドレスのとらえ方について説明します。

NSAPアドレスを理解するためのポイントはNSAPアドレスに関する規定が複数存在していることと、それぞれの役割を知ることです。NSAPアドレスに関する規定は次のようなものがあります。

・OSIの規定

・アドレス指定機関の規定

・IS-ISの規定

・GOSIPの規定

・ベンダの規定

これらの規定は下図のように整理することができます。決まり事は大きく緑のエリアの「アドレスを付与する規定」と、青のエリアの「アドレスを利用する規定」に分けることができます。ユーザからするとどちらもNSAPアドレスの規定ですが、「アドレスを付与する規定」ではドメイン間の通信を行うためのドメインアドレスの付与に関してのみ決められているため、そのままではドメイン内での利用には不十分です。「アドレスを利用する規定」ではドメイン内で利用する立場からNSAPアドレスを解釈してプロトコルやユーザが利用しやすくしています。

OSIの規定

OSIの規定はOSIネットワークに関する様々な事を決めていますが、NSAPアドレスについては主にアドレス全体の構成と、NSAPアドレスで使用する番号計画をどのように扱うかを規定しています。番号計画はE.164やX121などの番号・アドレスの付与規則を表します。番号をグローバルに管理し要求のあった組織に対して割り振る権限を持ったアドレス指定機関が運用する番号体系です。

全体の構成

アドレス全体の構成では、アドレスのサイズや性質、区分などが決まっています。アドレスのサイズは全体で20オクテットの可変長で、階層化を前提として考えられています。NSAPアドレスはOSIネットワーク用のアドレス形式ですが、OSI専用として決められたのではなく複数の既存の番号計画を内包して選択できる構造になっています。そして階層化したアドレッシングを可能にするためアドレスの構造は、ドメインのアドレスを決めるIDPと、組織内のIDを決めるDSPの2つからなります。下図はNSAPアドレスの構成を示しています。

全体の構成 最大20オクテットの可変長アドレスで、IDPとDSPに分かれる
IDP(Inter Domain Part)

ドメイン間通信で使用するアドレスを表すパート。使用する番号計画とアドレス割り当てを行う組織を識別する

DSP(Domain Specific Part) ドメイン内通信で使用するドメイン内IDを表すパート。DSPの具体的な使用方法は規定されていない

OSIの規定ではIDPはドメインに対してどのようにアドレスを付与するのかが目的となっていて、DSPの扱いはアドレス指定機関やドメインやプロトコルにゆだねられていることから、NSAPアドレスのパートは多少強引ですが以下のように役割分担をしていると解釈することができます。

番号計画の扱い

NSAPアドレスはそのアドレス内で複数の番号計画を扱えるようになっています。IDPは下図のようにAFIとIDIにフィールド分けられていて、AFIは使用する番号計画の識別番号、IDIはドメインを管理する各組織のアドレスが入ります。AFIの値はOSIの規定で番号計画ごとに決められていて、IDIの値は各番号計画を管理するアドレス指定機関が各組織に付与します。

AFI(Authority and Format Indicator)

AFIはドメインアドレスで使用するためのフォーマットと番号計画を表す値で長さは1オクテットです。AFIは下に示した表に従って番号を決定することで次の指定を行います。

・IDIのフォーマット

・IDIの値の割り当てを担当するネットワークアドレス指定機関

・IDIの先頭桁の意味の解釈

・DSPの構文指定

上の表は番号計画と抽象構文の組み合わせで選択を行います。行で番号計画(IDI Format)を選択し、列でDSPフィールドの抽象構文(DSP Syntax)を選択します。番号計画の選択ではIDIの長さ(フォーマット)とアドレス指定機関が決まり、抽象構文の選択ではDSPで使うことのできる数字や文字が決まります。

例えばX.121アドレスがすでに付与されていてDSPをIPアドレスのような10進数で表現する場合には36か52を使用することになります。またアドレスの付与がなくローカル用途で使用する場合はLocalになりますが、DSPをMACアドレスのように(もしくはMACアドレスをそのまま埋め込む形で)使用する場合は49に決まります。

X.121のように2つのAFI値のある番号計画は可変長タイプであるため、IDIに入るアドレスの先頭桁の値(番号計画の問題)によってどちらかを選択します。NSAPのIDPはAFI毎に固定長であるためIDIの最大長よりも短いアドレスの場合はIDIの先頭にパディングが必要です。バイナリ符号化ではパディングに0を使いますが、番号計画から付与されたアドレスの初めの桁が0の場合は区別をつけなければなりません。IDIの初めの有効桁が0でない場合は小さいほうのAFI値を選択し、0の場合は大きいほうのAFI値を選択します。これによってバイナリ符号化の際のパディング値(0か1)が決定します。

IDI(Initial Domain Identifier)

各組織(ネットワークドメイン)を識別するための番号が入るフィールドです。AFIと連結してドメインアドレスとして機能します。IDIの実際の値はAFIで示されたアドレス指定機関によって割り当てられた番号が入ります。IDIの作成規則は各番号計画の問題であるためOSIとしては、アドレスの入れ物(IDI)をだけを準備し収まりだけ注意しています。それが前のAFIで説明しているフォーマットや先頭桁の解釈です。IDIの長さは指定された番号計画によって異なり最短で0オクテット(Local)、最長は8オクテット(E.164)でいずれも10進数です。Localはドメイン内で任意で使用することができるアドレスで、ドメインの区別が必要ないためIDIは存在しません。

下図はAFIをBinaryで指定した場合にIDIのアドレスの長さを比較した例です。桁数が収まるようにオクテット単位でIDIが使用されます。

アドレス指定機関の規定

アドレス指定機関の規定は上のAFIで指定された番号計画のためにアドレス指定機関が設けた決まりです。この規定はそれぞれの番号計画の中での決まりですが、NSAPアドレスの長さや使い方に影響を与えます。例えば、NSAPアドレスを短くして使用する場合、番号計画から付与されるアドレスの長さを把握しておかなければフィールドが被ってしまう危険があるため、使用する番号計画の規定を事前に知っておく必要があります。またアドレス指定機関から識別番号を付与された組織がユーザに番号を付与する際に条件を設けている場合は順守する必要があります。

下図はX.121のアドレスを当てはめた例です。X.121は通常は14桁(7オクテット)のアドレスですが、プライベート番号を使用する場合は可変長となります。

IS-ISの規定

ここまでの規定でIDPの使用方法とドメインで使用するアドレスが決まった状態ですので、ここからはアドレスを利用する立場でドメイン内の規定を設けていきます。

このページで説明しているのはIS-ISで使用するNSAPアドレスであるため、付与されたドメインアドレスに対してIS-ISとしてNSAPアドレスをどのように使用するかの解釈を加えます。下図はIS-ISとしてNSAPアドレスを使用する場合のフィールドです。DSPの右側からSEL、ID、Area Addressとフィールド分けされています。Area AddressにはIDPで付与されたドメインのアドレス(緑部分)とHO-DSPフィールドが含まれています。わざわざこのようにフィールドを分けなおす理由はIS-ISにとってIDPは意味を持たないためです。IDPはプレフィックスでありドメイン内では変更できません。IS-ISからするとIDPは苗字のような存在で、フルネームとしては必要ですがドメイン内では活用することができません。そのためIDPとIDの間に任意でエリアを識別することができるHO-DSPフィールドを配置しています。

Area Address

IS-ISとしてエリアを識別するためのアドレスが入ります。ドメインを表すアドレスはIDPのアドレスですが、そこにDSPの頭に位置するHO-DSPを加えてドメイン内の各エリアを識別するためのアドレスとして扱います。エリア間のルーティングを行う場合はこのArea Addressを元に行います。

HO-DSP(High Order Domain Specific Part)

ドメイン内で複数のエリアを設ける際に使用するアドレスです。IS-ISではHO-DSPとIDPを合わせてArea Addressと解釈します。”HO-DSP”はRFC1142以降で使用される名前ですが、OSI側での名称が存在しないため便宜的に使用します。

ID

システムを識別するための番号です。エリア内ではこのIDを使用してルーティングを行います。そのためエリア内では一意でなければなりません。なおPDU内で指定されるID Lengthフィールドの値は1~8の値でオクテット長を示しますが、0の場合は6オクテットを示し、255の場合は長さ0のNULLフィールドを表します。

SEL(Selector)

SELは上位層(トランスポートエンティティ)を区別するための情報です。この値は自由に使用することが可能ですが、相互通信を行う場合には上位のプロトコルに対して同じ値を使用する必要があります。ただしSEL値を決めるのは上位層であり、値の管理はIS-ISを運用する各ネットワークのローカル(もしくは上位プロトコル)の問題となります。IS-ISのようなネットワークエンティティを識別する場合もネットワーク層の上で動作することからトランスポートエンティティと同じNSAPアドレスによって識別されます。このネットワークエンティティに対して付与されたアドレスをNETといいます。SELはTCP/IPにおけるプロトコル番号やTCPポートと同じ役割をします。プロトコル番号やTCPポートがルーティングには関わらないのと同じように、SELはルーティングでは使用されません。

※SELに関する補足:一般的なIS-ISの実装ではNETの指定にSELを”00”で設定することで固定的にNETを識別するようになっています。このページでもISに対するNETでは一般的にSELに”00”を使用する説明をしていますが、実際にはISO/IEC 10589ではそのような決まりはなく、ネットワークエンティティに付与したIDをNETと呼ぶことになっています。ところがISO/IEC 10589をRFC向けに編集したRFC1142と、それ以降のRFCでは「アドレス全体からSelectorフィールドを省いたものを、対応するシステムのNETと呼ぶ」としています。IS-ISはNSAPアドレスの長さをアドレスの値から得るため、エンコーディングの際にフィールドを省くことはできないことから、RFC1142に準じた場合SELを”00”にしたアドレスがNETに含まれることになります。ですがISO/IEC 10589ではパーティション修復機能のために「IntradomainRouteingSelector = 0」がSELとして既定されており、NETに”00”を使用すると仮想エンティティが識別できないことになり、パーティション修復機能が使用できなくなる可能性があります。

IS-ISでのDSPの使い方には各フィールドの長さに関して注意することがあります。

下図はNSAPアドレスの長さを最大の20オクテットにして、IS-ISで使用するフィールドの長さをIDが最も長い状態(8オクテット)で当てはめた例です。青いDSPフィールドの中でSELとIDは番号計画に関係なく一律に同じ長さを確保することができますが、HO-DSPはIDPとIDとSELを差し引いた残りを使用するため、使用する番号計画やIDの長さによって使用できる数が変わります。下図の赤字はHO-DSPが最低限使用することができる長さを示しています。この状態からNSAPアドレスの長さが短くなったり、IDの長さが短くなったりするとHO-DSPの長さが変化します。例えば下図の一番上のX.121は3オクテットのHO-DSPが使用できますが、NSAPアドレス全体の長さが18オクテットになると使用できるHO-DSPの長さが1オクテットになります。その状態からIDの長さが4オクテットになると、使用できるHO-DSPは5オクテットになります。このようにHO-DSPはNSAPアドレスの中で明示的ではありません。そのためHO-DSPの長さを正確に知るためにはIDの長さが指定されていなければなりません。

GOSIPの規定

GOSIP(Government OSI Profile)はアメリカ(NIST)やイギリス国内で設けられたOSI機器の調達に対する規定です。上で説明したOSIやIS-ISの規定は幅の広い選択肢を持つためOSI機器を調達する際に一定の仕様にとなるよう設けられた基準です。GOSIPはOSIネットワーク全体に対して規定されていますが、NSAPアドレスに関しては細かなフィールド分けが行われています。下図はUS GOSIP 2.0によるフィールド分けです。AFIでISO 6523-ICD(47)を使用した独自の分け方がされています。下図のフィールドの分け方は一見するとOSIやIS-ISの規定とは全く異なるように見えますが、OSIとIS-ISの規定を侵さない形で独自のフィールド(赤字)が追加されています。

ベンダの規定

ベンダの規定はネットワーク機器やアプリケーションサービスを開発するメーカーの実装仕様です。メーカーによって実装のされ方が異なるため内容も異なります。下図ではIDの長さと、SELの例を挙げています。

IDはIS-ISの規定では1~8オクテットの可変長ですが、下図では6オクテットでの使用に固定されています。これはGOSIPの規定でEnd Systemの長さが6オクテットになっているためです。IDが6オクテットに固定されているとNSAPアドレス全体の長さを20オクテットにした場合、HO-DSPフィールドが広がることに注意しておく必要があります。

SELはOSIで規定されているネットワークエンドポイントを識別するためにIS-ISで規定されたIDで、基本的に上位層からの指定によって使用します。ネットワーク層ではIS-ISによるNET以外の明確な利用は規定されていません。ルーティングやルート計算でも基本的に使用しないため、IS-ISとしての受け入れは必要ですが、上位プロトコルの思想によって省かれたとしてもネットワークは機能します(ただし、プロセス間通信では原則として必要です)。この考え方はES-IS(ISO9542)でもNETによってESの持つすべてのNSAPアドレスの存在を意味する実装の可能性について示唆されています。

■補足

複数のエリアアドレスの付与(Manual Area Address)

ISで複数のエリアアドレスを使用する場合の注意点と、その中でManual area addressesの使われ方を説明します。

IS-ISはNSAPアドレスをArea AddressとIDに分けて扱います。エリアアドレスは複数の値を割り当てることができ値はManual area addresses(リスト)として管理されます。エリアに対して複数のエリアアドレスを割り当てるのは以下のイメージです。このときIS3とIS4はエリア1とエリア2の両方に属していることになります。IPで例えるとインターフェースに対して複数のサブネットを割り当てるイメージです。1つのISに複数のエリアを割り当てるのは、異なるポリシーを適用するなどの運用上の点から有用性がありますが、IS-ISとしてのエリアの扱いを正しく理解しなければ混乱の元となるため注意が必要です。IS-ISのエリアはエリアアドレスでその範囲を既定しますが、IS-ISが扱う機能的には「エリア = エリアアドレスの範囲」ではありません。この考え方を次の例で説明します。

複数のエリアアドレスの付与

下図のように2つのエリアがあり、何らかの理由によって1つのエリアとして結合する場合を考えてみます。

単純にIS2とIS3の間に回線を接続するとIS2とIS3がレベル2としても動作する場合、IS-ISの仕様から下図のようにレベル2のエリアが発生します。2つのエリアをつなぐことはできますが、既存のレベル2が存在すると不連続な領域ができてしまいます。複数のレベル2の領域の扱いについてはISOで明言されていませんが、この場合意図しないレベル2ができてしまうことになります。そこでIS2とIS3をレベル1としてだけ動作するように変更します。するとレベル2は発生しませんがそもそもレベル1で隣接にならないため2つのエリアをつなぐことはできません。

ここでIS2とIS3に第3のエリアを追加で属するように設定を行うと既存のエリアはそのままで、エリアの範囲を結合し拡張することができます。下図は第3のエリアとして49.0003.を追加した様子です。見た目には変わりませんが、IS-ISとしては新たなエリアの追加によって複数のエリアが1つのエリアに集約されます。それぞれエリアアドレスが異なるためエリアアドレスの数としては3つのエリアができたことになりますが、IS-ISのエリアに対する機能範囲としては1つになります。つまりすべてのISはIS1~IS4のすべてのLSPを受信します。

この動作は一見不自然に見えますがIS-ISとしては自然な動作で、隣接の考え方を知ることで理解できます。IS-ISでは隣接関係になる際にエリアアドレスを使用しますがこの時の評価は受け取ったIIHに含まれたエリアアドレスと自分の属するエリアアドレスで一致するものがあるかどうかです。この一致確認は「同じエリアアドレスか(レベル1)、そうでないか(隣接なし)」の2分岐で、「どのエリアか」の判断は行いません。つまりISが認識する領域はレベル1として1つ(レベル2を合わせると2つ)の領域だけを認識します。そしてエリアアドレスの評価は隣接時のみだけであるため「同じレベルの隣接範囲が機能範囲」ということになります。

下図は隣接になる時のエリアアドレス交換の様子を示しています。この図で重要なことはエリアは異なりますが、同じレベルで隣接が連続していることです。例えばIS2はIS1からエリア49.0001.を受信し自分も同じエリアに属するため隣接となります。IS3からは49.0002.と49.0003.を受信し49.0002.は属しませんが49.0003.に属するため隣接となります。このようにIS2はエリアアドレスは異なりますがIS1、IS3とも同じレベル1の隣接になります。この時の評価は「エリアアドレスが同じか異なるか(隣接になるかならないか)」だけであるため隣接後は49.0001.と49.0003.は区別されずIS1もIS3も同じ隣接として同様にLSPの交換が行われます。

簡単に言い換えるとIS-ISのエリアに対する機能範囲は同じレベルでつながっている範囲であり、エリア情報は同じレベルで隣接関係になることができるかを判断するための材料として使用されます。IS-ISの管理者からするとエリア分けはISに対して重要な意味を持っていますが、IS-ISからするとエリア情報はレベル1で隣接するのかしないかを判断するための情報にすぎず、重要なのは「同じレベルで隣接になっているか」ということになります。この説明では第3のエリアを作成していますが、49.0001.もしくは49.0002.のエリアを他方のエリアに拡張する形も同様の考え方となります。なお、レベル2の隣接ではエリアアドレスの評価自体が存在しないため上で説明した動作は行われずエリアに関係なく隣接となります。

機能範囲に複数のエリアを含める際の注意点は隣接の範囲内でIDが被らないようにすることです。これまでの説明では「エリア内で異なるID」と説明していますが、実際には隣接の連続する範囲でLSPを交換することになるためこの範囲(上図ではIS1~IS4のすべて)でIDが一意でなければいけません。

ManualAreaAddresses

IIHのエリアアドレスと自分の属するエリアを比較する際にはManualAreaAddressesが使用されます。ManualAreaAddressesは自分が属するエリア情報を保持するためのパラメータでリストとしてエリアアドレスを保持します。上で説明した各ISは予めエリアアドレスだけにした状態ですが、正確に表現すると下図のようになります。ISにアドレスを付与する際の方法は実装次第ですが、図のようにフルアドレスで付与ししたNETは分解されてエリアアドレスだけManualAreaAddressesに格納され比較などの利用に備えて管理されます。

なお隣接時の評価はエリアが同じかどうかですので格納されるエリアアドレスの長さは異なっていても問題ありません。