OSPFで使用するLSAの種類と役割について説明します。概要ではLSAの種類、詳細ではLSAの作成ついて説明します。
OSPFでは5つ(LS Type 1~5)のLSAを使用してネットワークの接続状態を表します。このLSAを組み合わせてルート計算を行いAS内外のルート情報を得ます。
下図はR1が持つLSAの種類と、LSAのリンクが表す範囲を示したものです。R1はエリア1に存在しているため、エリア1がRouter-LSAとNetwork-LSAによって表現されます。逆にエリア1以外のエリアはエリア間としてSummary-LSAによって表現されます。ASBRもエリアではありませんがSummary-LSAと同様の考え方でASBR-Summary-LSAによって表現されます。ASBR-Summary-LSAは表す対象が異なるだけでSummary-LSAの一部です。そしてOSPFネットワークの範囲外であるAS外のネットワークはAS-external-LSAによって表現されます。
LSAタイプ | LSAの名前 | 作成ルータ | LSA役割 |
LS Type 1 | Router-LSA | 全ルータ | ルータが持つリンクを表すLSA |
LS Type 2 | Network-LSA | DR | 同じ回線上にあるルータの一覧。マルチアクセスネットワーク(Ethernetなど)だけで作成される |
LS Type 3 | Summary-LSA | ABR | 異なるエリアのネットワークの情報。エリア1から見るとエリア0とエリア2の情報 |
LS Type 4 | ASBR Summary-LSA | ABR | ASの外に出ることのできるルータ(ASBR)を表すLSA |
LS Type 5 | AS-external-LSA | ASBR | AS外のネットワークの情報。BGPなどから渡されたルート情報など |
Router-LSAはそのルータが何に接続しているかを表すリンク情報です。このLSAはブロードキャスト回線とポイントツーポイント回線で表現が異なります。Router-LSAは作成されたエリア内でのみ使用されるので他のエリアに伝搬することはありません。
下図のようにR1-R2間がポイントツーポイント回線の場合は、ネイバーに接続していることを表すリンク(ポイントツーポイントリンク)とIPサブネットに接続していることを表すリンク(スタブリンク)で表現します。
R1-R2間がブロードキャスト回線の場合は後で説明するNetwork-LSAに接続していることを表すリンク(トランジットリンク)で表現します。
ポイントツーポイント回線でもブロードキャスト回線でもネイバーが存在しない場合はIPサブネットに接続していることを表すスタブリンクだけで表現します。
この関係をまとめると下表のようになります。
回線 | ネイバーあり | ネイバーなし |
ポイントツーポイント回線 | ポイントツーポイントリンク スタブリンク |
スタブリンク |
ブロードキャスト回線 | トランジットリンク | スタブリンク |
Network-LSAは接続しているブロードキャスト回線上に存在するネイバーの一覧です。ブロードキャスト回線内の代表となるルータ(DR)が作成しエリア内に同期します。下図ではR3がNetwork-LSAを作成しています。ルート計算において、回線内のルータはトランジットリンクを使用してNetwork-LSAを参照する形になり、Network-LSAから回線内のネイバーの存在を確認します。Network-LSAはRouter-LSAと同様にエリアを越えて伝搬することはありません。
Summary-LSAはエリア外のネットワークを表すリンク情報です。下図のR1はエリア1に属しているため隣のエリア0のサブネット2を知りません。そこでABRであるR2エリア内の情報(Router-LSAとNetwork-LSA)として学習したサブネット2の情報をSummary-LSAとしてエリア1内に配布します。R1はこの情報によってR2経由でサブネット2に到達できることを知ります。R1はRouter-LSAとNetwork-LSAによってR2への行き方は計算できるため、Summary-LSAと組み合わせることでサブネット2へのルート情報を計算することができます。
この関係は下図のようにエリアが連続している場合でも同じように考えることができます。エリア2のサブネット3の情報をR3がSummary-LSAとしてエリア0に配布し、そのSummary-LSAをR2が受け取ってルート計算を行います。今度はR2がSummary-LSAを再作成してエリア1に配布します。このようにSummary-LSAはABRによって作成され情報が伝搬していきます。ここで、Summary-LSAが転送されているわけではないことに注意が必要です。R2はR3からのSummary-LSAを受け取りルート計算を行った後に、自分のルーティングテーブルからSummary-LSAを作成し直してエリア1に配布します。つまりSummary-LSAではサブネットの情報は伝搬しますが、Summary-LSAそのものはRouter-LSAやNetwork-LSAと同様にがエリアを越えて伝搬されません。
ASBR-Summary-LSAはASBRの存在を表すリンク情報です。下図ではエリア2にASBRのR4が存在していますが、エリア2に属していないR1やR2はR4の存在を知りません。そこでABRであるR3はエリア内情報(エリア2のRouter-LSA)として学習したASBRの情報(R4のルータID)をASBR-Summary-LSAとしてエリア0内に配布します。エリア0内に属するR2ではR3が配布したASBR-Summary-LSAによってASBRの存在を知ることができます。今度はR2がASBR-Summary-LSAで受け取った情報をASBR-Summary-LSAとしてエリア1内に配布します。この情報によってR1はASBRの情報を知ることができます。このASBR-Summary-LSAは表す情報がASBRのルータIDになっているだけで本質はSummary-LSAと同じです(Summary-LSAとASBR-Summary-LSAは封筒と現金書留のような関係で、中身は異なりますが同じ郵便システムを使う封筒です)。つまりR2では転送しているのではなく、ルーティングテーブルから再作成しています。そのためSummary-LSAと同様にエリアを越えて伝搬しません。さらにスタブエリアとバーチャルリンクにも配布されません。
AS-external-LSAはASBRから行くことのできるAS外のネットワークの情報です。下図のR4は物理的にOSPF外のネットワークに接続していて、BGPなどからAS外の情報を受け取っています。しかしR4以外のルータはAS外の情報を知りません。そこでR4はAS外のルート情報をAS-external-LSAとしてOSPF内に配布します。この情報はスタブエリアとバーチャルリンクを除くすべてのエリアに転送されます。OSPF内のルータはこのAS-external-LSAとASBR-Summary-LSAを組み合わせる事によってAS外のルートを知ることができます。Summary-LSAとASBR-Summary-LSAではエリア1に配布するためにR2で再作成が行われていましたが、AS-external-LSAはそのまま転送されることによってエリア内に配布されます。
少し関係のわかりにくいASBR-Summary-LSA(LS Type 4)とAS-external-LSA(LS Type 5)について説明します。
上で説明したようにAS外のルート情報はASBR-Summary-LSAとAS-external-LSAを合わせることで得ることができます。ASBR-Summary-LSAがASBRまでの行き方、AS-external-LSAがAS外のネットワークへの行き方です。この2つの情報は鉄道に例えるとわかりやすくなります。例えば成田空港が千葉県にあるというのは関東地方の人からすると普通の情報です。そのため「海外には成田空港から行く」という情報を得た場合、直接成田空港に向かうことができます。ところが関東地方以外の地域の人からするとそうではありません。下図は中部地方の静岡から見た関係です。中部地方の静岡からすると「海外には成田空港から行く」と言われても自分のエリアに成田空港が存在しないためどちらに向かえば良いかがわかりません。つまりルート情報の基点となっている成田空港に対するネクストホップが決まらない状況です。
この問題を解決するために、例えば中部地方との中継駅である熱海駅が「成田空港は熱海駅から行く」という情報(ASBR-Summary-LSA)を中部地方内に流すことで静岡は成田空港へ向かうためには熱海駅に向かえば良いことを知ることができます。中部地方ではエリア内情報(Router-LSA、Network-LSA)によって熱海駅の事は必ず知っているため、「海外には成田空港から行く」という情報(AS-external-LSA)と組み合わせることで海外のルートに対する到達性を確保できます。このASBR-Summary-LSAは中部地方のために熱海駅が作成するものであって、成田空港に直接行くことのできる関東地方内では不要であり存在しません。
そもそもなぜこのように2つのLSAに分けるのかについては補足で説明しています。
ここからは「OSPFのルート計算」のページで使用している下図のネットワークを使用して各LSAがどのような情報を持つのかを確認していきます。
このセクションで図解している各LSAは説明上必要な情報だけを抜き出している事に注意してください。また説明はRFC2328をベースにしていますが、すでに廃止されているTOSに関する説明は省略しています。TOSの一部のフィールドは「OSPFのパケットフォーマット」のページで参考情報を載せています。
このネットワークでは各ルータのルータIDとIPアドレスは下記のように想定しています。ルータの番号がそれぞれの第4オクテットに入ります。
Router-LSAはネットワークをリンクで表現するための最も基本的なLSAです。Router-LSAの情報元は各回線のインターフェース情報です。ルータは回線に紐づくIPサブネットやネイバーをリンクとして扱うため下表のようにリンクタイプが決められていて、それぞれ回線の抽象表現に基づいてRouter-LSAを作成します。各ルータで作成したRouter-LSAはルート計算によって組み合わされてルーティングテーブルにルート情報が登録されます。使用するリンクタイプは以下で説明するように定型化されていて、回線の種類によってどのリンクタイプを使用するかが決定しています。以降の説明は「OSPFネットワークの構造」ページの「エリア内の構造」で取り上げた内容を具体的にしたものです。
Router-LSAのリンクタイプ
Type | 意味 | Link IDの情報 | Link Dataの情報 |
1 | Point-to-point Neighbor Router ID link (ポイントツーポイントリンク) |
ネイバーのルータID | MIB-II [Ref8] ifIndex value or IPアドレス |
2 | Link to transit Interface address of network Designated Router (トランジットリンク) |
代表ルータのIPアドレス | IPアドレス |
3 | Link to stub IP network number network (スタブリンク) |
ネットワークアドレス | サブネットマスク |
4 | Virtual link Neighbor Router ID (バーチャルリンク) |
ネイバーのルータID | IPアドレス |
ポイントツーポイント回線の場合Router-LSAの各フィールドは下表の情報が設定されます。ポイントツーポイント回線ではリンクの表現はポイントツーポイントリンクと、スタブリンクの2つの組み合わせで表現されます。そのため下表のTypeフィールドにはポイントツーポイントリンクかスタブリンクのいずれかが設定され、Link IDフィールドとLink Dataフィールドにはリンクのタイプに応じた情報が設定されます。
ブロック | フィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 1:Router-LSA |
Link State ID | 発信元ルータのルータID | |
Advertising Router | LSAを発信したルータのルータID | |
Router-LSA | bit V | バーチャルリンクの端点である場合にセット |
bit E | ASBRである場合にセット | |
bit B | ABRである場合にセット | |
Type | 1:Point-to-point Neighbor Router ID link 3:Link to stub IP network number network |
|
Link ID | Type 1の場合:相手のルータID Type 3の場合:オプションによって変化 オプション1:相手のIPアドレス オプション2:IPサブネットのネットワークアドレス |
|
Link Data | Type 1の場合:IPアドレスの有無によって変化 IPアドレスがある:自分のIPアドレス IPアドレスがない:インターフェースのmib-ii ifindexの値 Type 3の場合:オプションによって変化 オプション1:255.255.255.255 オプション2:IPサブネットのサブネットマスク |
|
Metric | 両タイプともインターフェースのコスト[Interface output cost(s)] |
下図はネットワーク上のポイントツーポイント回線にリンク情報を追加したものです。このネットワークには5つのポイントツーポイント回線が存在していて、そのうち3つがIPアドレスを設定していない(unnumbered)回線です。各ルータでは上表を元にしてネットワーク図の下に示した通りのRouter-LSAが作成されます。IPアドレスを設定しない回線の場合、ポイントツーポイントリンクのLink Dataフィールドにはルータが割り当てたインターフェースの識別番号(ifindex)が入ります。スタブリンクはオプションによって2つの表現から選択できます。下図ではオプション2を使用しています。Metricフィールドは回線に設定されたコストを設定します。
ブロードキャスト回線の場合Router-LSAの各フィールドは下表の情報が設定されます。この回線の場合はネイバーの有無によってトランジットリンクとスタブリンクが切り替わります。そのため下表のTypeフィールドにはトランジットリンクかスタブリンクのいずれかが設定され、Link IDフィールドとLink Dataフィールドにはリンクタイプに応じた情報が設定されます。
パケットの部位 | LSAのフィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 1:Router-LSA |
Link State ID | 発信元ルータのルータID | |
Advertising Router | LSAを発信したルータのルータID | |
Router-LSA | bit V | バーチャルリンクの端点である場合にセット |
bit E | ASBRである場合にセット | |
bit B | ABRである場合にセット | |
Type | 2:Link to transit Interface address of network Designated Router 3:Link to stub IP network number network |
|
Link ID | Type 2の場合:DRのIPアドレス(=Network-LSAのLink State ID) Type 3の場合:IPネットワークアドレス |
|
Link Data | Type 2の場合: 自分のIPアドレス Type 3の場合:サブネットマスク |
|
Metric | 両タイプともインターフェースのコスト[Interface output cost(s)] |
・ネイバーが存在するケース
下図はネットワーク上のブロードキャスト回線にリンク情報を追加したものです。このネットワークにはいくつかのブロードキャスト回線が存在していますが、ネイバーが存在しているのは1つだけです。回線を共有している各ルータでは上表を元にしてネットワーク図の下に示した通りのRouter-LSAが作成されます。この回線では各ルータは実体のないノードであるNetwork-LSA(LS Type 2)に対して接続するため、Tyepフィールドにはトランジットリンクを表す2を設定し、Link IDフィールドにDRのIPアドレス、Link Dataフィールドに自分自身のIPアドレスを設定します。Link IDの示すDRのIPアドレスはNetwork-LSAではLink State IDとして使用されますので、Network-LSAに接続する意味になります。Metricフィールドは回線に設定されたコストを設定します。
・ネイバーが存在しないケース
下図は回線にネイバーが存在しない場合のリンク情報を表したものです。このネットワークにはネイバーを持たないブロードキャスト回線が4つ存在しています。この回線では各ルータはスタブリンクのみのRouter-LSAを作成します。Tyepフィールドはスタブリンクを表す3を設定し、Link IDフィールドにIPネットワークアドレス、Link Dataフィールドにサブネットマスクを設定します。Metricフィールドは回線に設定されたコストを設定します。
ポイントツーマルチポイント回線の場合Router-LSAの各フィールドは下表の情報が設定されます。この回線はポイントツーポイントの集合として表現されます。しかし複数のネイバーが存在できることから回線の存在によってネイバーを特定できないため、IPアドレスで識別する必要があります。使用するリンクタイプはポイントツーポイント回線と同様にポイントツーポイントリンクとスタブリンクです。そのため下表のTypeフィールドにはポイントツーポイントリンクかスタブリンクのいずれかが設定され、Link IDフィールドとLink Dataフィールドにはリンクタイプに応じた情報が設定されます。Metricフィールドは回線に設定されたコストを設定します。ただしスタブリンクの場合はLink IDフィールドが自分のIPアドレスとなり、Metricフィールドが0に設定されます。
説明に使用しているしているネットワークには純粋なポイントツーマルチポイント回線がありません。ポイントツーマルチポイント回線のRouter-LSAの表現は下で説明するNBMA回線のポイントツーマルチポイントモードを参照してください。回線の分類は異なりますが、表現方法は同じです。
パケットの部位 | LSAのフィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 1:Router-LSA |
Link State ID | 発信元ルータのルータID | |
Advertising Router | LSAを発信したルータのルータID | |
Router-LSA | bit V | バーチャルリンクの端点である場合にセット |
bit E | ASBRである場合にセット | |
bit B | ABRである場合にセット | |
Type | 1:Point-to-point Neighbor Router ID link 3:Link to stub IP network number network |
|
Link ID | Type 1の場合:相手のルータID Type 3の場合:自分のIPアドレス |
|
Link Data | Type 1の場合:自分のIPアドレス Type 3の場合:255.255.255.255 |
|
Metric | Type 1の場合:インターフェースのコスト[Interface output cost(s)] Type 3の場合:0 |
NBMA回線として分類することのできる回線では、一般的に回線の利用形態を変更できる特徴を持ちます。OSPFではNBMA回線の利用形態に応じてNBMAモードとポイントツーマルチポイントモードを選択することができます。NBMAモードはブロードキャスト回線と同じリンク表現を使用し。ポイントツーマルチポイントモードはポイントツーマルチポイント回線と同じリンク表現を用います。
NBMAモードはブロードキャスト回線で使用されるリンク表現をそのままNBMA回線で使用する方法です。リンク情報としてはブロードキャスト回線の考え方がそのまま適用できますが、ブロードキャスト回線とNBMA回線では回線の特徴が異なるため、NBMA回線の動作をブロードキャスト回線とそん色ない程度まで寄せる設定が必要になります。つまりOSPFがNBMA回線をブロードキャスト回線だと勘違いするように仕向けなければならないということです。例えばフレームリレーの場合は、回線上のすべてのルータがすべてのネイバーに直接到達できるようにDLCIのマッピングができていなければなりません。そのうえで各ルータはブロードキャスト回線と同様にRouter-LSAを作成します。下表はブロードキャスト回線と同じものです。
パケットの部位 | LSAのフィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 1:Router-LSA |
Link State ID | 発信元ルータのルータID | |
Advertising Router | LSAを発信したルータのルータID | |
Router-LSA | bit V | バーチャルリンクの端点である場合にセット |
bit E | ASBRである場合にセット | |
bit B | ABRである場合にセット | |
Type | 2:Link to transit Interface address of network Designated Router 3:Link to stub IP network number network |
|
Link ID | Type 2の場合:DRのIPアドレス(=Network-LSAのLink State ID) Type 3の場合:IPネットワークアドレス |
|
Link Data | Type 2の場合: 自分のIPアドレス Type 3の場合:サブネットマスク |
|
Metric | 両タイプともインターフェースのコスト[Interface output cost(s)] |
下図はネットワーク上のNBMAモードで動作するNBMA回線にリンク情報を追加したものです。このネットワーク上には2つのNBMA回線が存在(エリア0とエリア2)していますが、NBMAモードで動作しているのは1つだけです。回線を共有している各ルータでは上表を元にしてネットワーク図の下に示した通りのRouter-LSAが作成されます。Router-LSAのリンク表現はブロードキャスト回線と同じで、回線上にネイバーが存在する場合、Tyepフィールドにはトランジットリンクを表す2を設定し、Link IDにDRのIPアドレス、Link Dataに自分自身のIPアドレスを設定します。回線上にネイバーが存在しない場合、Tyepにはスタブリンクを表す3を設定し、Link IDフィールドにIPネットワークアドレス、Link Dataフィールドにサブネットマスクを設定します。いずれの場合もMetricフィールドは回線に設定されたコストを設定します。
ポイントツーマルチポイントモードはポイントツーマルチポイント回線で使用されるリンク表現をそのままNBMA回線で使用する方法です。ポイントツーマルチポイント回線で説明したようにこのモードではIPアドレスを設定したポイントツーポイント回線の集合として扱うため、Typeフィールドにはトランジットリンクかスタブリンクのいずれかが設定され、Link IDフィールドとLink Dataフィールドにはリンクタイプに応じた情報が設定されます。スタブリンクの場合はLink IDが自分のIPアドレスとなり、Metricフィールドが0に設定されます。下表はポイントツーマルチポイント回線と同じものです。
パケットの部位 | LSAのフィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 1:Router-LSA |
Link State ID | 発信元ルータのルータID | |
Advertising Router | LSAを発信したルータのルータID | |
Router-LSA | bit V | バーチャルリンクの端点である場合にセット |
bit E | ASBRである場合にセット | |
bit B | ABRである場合にセット | |
Type | 1:Point-to-point Neighbor Router ID link 3:Link to stub IP network number network |
|
Link ID | Type 1の場合:相手のルータID Type 3の場合:自分のIPアドレス |
|
Link Data | Type 1の場合:自分のIPアドレス Type 3の場合:255.255.255.255 |
|
Metric | Type 1の場合:インターフェースのコスト[Interface output cost(s)] Type 3の場合:0 |
下図はネットワーク上のポイントツーマルチポイントモードで動作するNBMA回線にリンク情報を追加したものです。このネットワーク上には2つのNBMA回線が存在(エリア0とエリア2)していますが、NBMAモードで動作しているのは1つだけです。回線を共有している各ルータでは上表を元にしてネットワーク図の下に示した通りのRouter-LSAが作成されます。Router-LSAのリンク表現はポイントツーマルチポイント回線と同じで、回線上にネイバーが存在する場合、ポイントツーポイントリンクとしてTyepフィールドに1を設定し、Link IDフィールドに相手のルータID、Link Dataフィールドに自分自身のIPアドレスを設定し、Metricフィールドは回線に設定されたコストを設定します。同時にスタブリンクとしてTyepフィールドに3を設定し、Link IDフィールドに自分のIPアドレス、Link Dataフィールドに255.255.255.255を設定し、Metricフィールドは0に設定します。回線上にネイバーが存在しない場合はスタブリンクだけとなります。
バーチャルリンクの場合Router-LSAの各フィールドは下表の情報が設定されます。バーチャルリンクではリンクの表現はポイントツーポイント回線と同じ考え方ができますが、ポイントツーポイントリンクの代わりにリンクタイプが4のVirtual link Neighbor Router IDを使用します。このリンクタイプ4はリンクタイプ1のポイントツーポイントリンクと概念的に同じで、特定のネイバーを表します。しかしバーチャルリンクではネイバーが同じローカル回線上に存在しない場合があるためスタブリンクに値するものは存在せず、常にリンクタイプ4だけが使用されます。バーチャルリンクはエリア0の回線でABRによって作成されるため、Area IDフィールドは常に0でbit Bフィールドは必ずセットされます。
パケットの部位 | LSAのフィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 0:バックボーンエリア | |
LSAヘッダ | LS Type | 1:Router-LSA |
Link State ID | 発信元ルータのルータID | |
Advertising Router | LSAを発信したルータのルータID | |
Router-LSA | bit V | バーチャルリンクの端点である場合にセット |
bit E | ASBRである場合にセット | |
bit B | ABRである場合にセット | |
Type | 4:Virtual link Neighbor Router ID | |
Link ID | ネイバーのルータID | |
Link Data | 自分のIPアドレス | |
Metric | ネイバー間のコストの合計 |
下図はネットワーク上にバーチャルリンクの情報を追加したものです。このネットワークではR1とR4の間でバーチャルリンクを設定しています。各ルータでは上表を元にしてネットワーク図の下に示した通りのRouter-LSAが作成されます。上で説明したようにArea IDフィールドは0となり、bit Bがセットされます。Typeフィールドはバーチャルリンクを表す4を使用し、Link IDフィールドにネイバーのルータID、Link Dataに自分のIPアドレスを設定します。Metricフィールドはネイバー間のコストの合計です。
Network-LSAはブロードキャスト回線やNBMA回線などで2台以上のルータが存在する場合にDRによって作成されます。Network-LSAは回線内のルータ(ネイバー)一覧を記した名簿であり、各ルータはルート計算を行う際にRouter-LSAのトランジットリンクによってNetwork-LSAに接続・参照します。Network-LSAにはネイバーの一覧の他にサブネットマスクも含まれていて、IPアドレスを組み合わせることでIPサブネットを得ることができるようになっています。Network-LSAは同じリンクステートプロトコルであるIS-ISの疑似ノードと概念的には全く同じです。
パケットの部位 | フィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 2:Network-LSA |
Link State ID | 回線上のDRのIPアドレス | |
Advertising Router | LSAを発信したDRのルータID | |
Network-LSA | Network Mask | IPサブネットのサブネットマスク |
Attached Router | ネイバーのルータID |
下図はネットワーク上のブロードキャスト回線とNBMA回線にリンク情報を追加したものです。各回線上のDRは上表を元にしてネットワーク図の下に示した通りのNetwork-LSAを作成します。Network-LSAのLink State IDフィールドはDRのIPアドレスとなります。DR以外のルータはこのIPアドレスに対するトランジットリンクで接続する形となります。Network Maskフィールドには回線のIPサブネットのサブネットマスク、Attached Routerフィールドには各ネイバーのルータIDが設定されます。
Summary-LSAはエリア間の情報を伝達することが目的のLSAです。エリア間の情報を扱うためマルチエリア構成のネットワークのみで必要となるLSAで、ABRによって作成されます。ABRはルーティングテーブルを元にSummary-LSAを作成して元のルート情報とは異なるエリアに対して配布します。ルーティングテーブルを元に作成するため、Summary-LSAから作成されたルート情報からもSummary-LSAを作成できます。そのため直接隣接しないエリアのルート情報を伝搬することができます。しかしこの場合エリア構造によるループの懸念があることから、同じエリアに属するルーティングエントリーを使用してサマリーLSAを作成することはありません。これはOSPFのスプリットホライズンの機能です。またSummary-LSAはABRが作成することから、エリア(ABR)で集約したルートを扱うことができます。集約したルートのメトリックは対象となるサブネットの最大のコストを使用します。Summary-LSAの作成イメージや配布の制約は「OSPFのルータ」ページの「ABRの動作」、もしくは「OSPFのルート計算」ページの「ABRの計算」でも説明しています。
パケットの部位 | LSAのフィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 3:Summary-LSA |
Link State ID | 宛先IPネットワークアドレス | |
Advertising Router | LSAを発信したABRのルータID | |
Summary-LSA | Network Mask | Link State IDで指定したIPサブネットのサブネットマスク |
Metric | 宛先IPネットワークアドレスのコスト |
下図は各ABRが作成するSummary-LSAのリンク情報を追加したものです。各ABRは上表を元にしてネットワーク図の下に示した通りのSummary-LSAを作成します。LSAヘッダのLink State IDフィールドは対象となる各ネットワークアドレスとなり、Summary-LSAのNetwork Maskフィールドにサブネットマスクが設定され、この2つでIPサブネットを表します。Metricフィールドはルーティングテーブルのメトリック(各IPサブネットまでのトータルコスト)が設定されます。このネットワークではエリア1とエリア2のIPサブネットをそれぞれ/16に集約しています。集約元の情報はエリアデータ構造の「List of area address ranges 」で指定された範囲を対象とします。
説明に使用しているネットワークでは表現するリンクが多いため図を2つに分けています。下図はR1、R4の作成するSummary-LSAです。Summary-LSAは配布するエリア毎に分かれていますのでRouter IDとArea IDフィールドに注目してください。
下図はR7、R8の作成するSummary-LSAです。繰り返しになりますが、ルート集約を行っていることと、Router IDとArea IDフィールドに注意してください。
Summary-LSAは作成するエリアがスタブエリアの場合、デフォルトルートを作成することができます。その場合作成するSummary-LSAは以下のパラメータを設定します。StubDefaultCostはエリアデータ構造の情報です。
フィールド | 値 |
Link State ID | DefaultDestination(0.0.0.0) |
Network Mask | 0x00000000 |
Metric | StubDefaultCost |
ASBR-Summary-LSAはASBRの情報を伝達することが目的のLSAです。このLSAはLS Typeは異なりますが、Summary-LSAの一部です。つまりSummary-LSAと同様にエリア間の情報を扱います。そのため、Summary-LSAと同様にマルチエリア構成のネットワークのみで必要となり、ABRによって作成されます。ASBR-Summary-LSAの扱うエリア間情報はASBRのルータIDで、エリアに属するASBRのルータIDを他方のエリアに対して伝達するために作成します。LSA情報の作成プロセスはSummary-LSAと同じでルーティングテーブルを元に作成するため、複数のABRを伝ってASBRの存在を周知することができます。ただし、このLSAはAS外ルートの解決のために使用するため、AS-external-LSAと同様にスタブエリアとバーチャルリンクには伝搬されません。ASBR-Summary-LSAの作成イメージや配布の制約は「OSPFのルート計算」ページの「ABRの計算」でも説明しています。
パケットの部位 | フィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 4:ASBR-Summary-LSA |
Link State ID | ASBRのルータID | |
Advertising Router | LSAを発信したABRのルータID | |
ASBR-Summary-LSA | Network Mask | 0 |
Metric | ASBRまでのコスト |
下図は各ABRが作成するASBR-Summary-LSAのリンク情報を追加したものです。各ABRは上表を元にしてネットワーク図の下に示した通りのASBR-Summary-LSAを作成します。LSAヘッダのLink State IDフィールドは対象となる各ASBRのルータIDを設定、Network Maskフィールドは0になります。Metricフィールドはルーティングテーブルのコスト(ASBRまでのトータルコスト)が設定されます。ASBR-Summary-LSAも配布されるエリアの認識が重要であるためRouter IDとArea IDフィールドに注意する必要があります。
AS-external-LSAはAS外のルート情報をOSPFネットワーク内に伝搬することが目的のLSAです。AS外の情報を扱うためASBRが設置されているネットワークにおいてASBRが作成します。ASBRはBGPなどの他のプロトコルや静的な情報を元に(プロトコルデータ構造のList of external routes経由で)AS-external-LSAを作成してOSPFネットワーク全体に配布します。この情報はSummary-LSAとは異なり、LSA自体に手を加える異なく転送によって伝搬します。そのためエリアに関係なくすべてのルータが同じLSAを保持することになります。ただし、AS-external-LSAはスタブエリアとバーチャルリンクには配布されません。AS-external-LSAは作成したASBRのあるエリアとは異なるエリアのルータでは単体でネクストホップを解決できません。そのためASBR-Summary-LSAと合わせてルート計算を行います。AS-external-LSAの作成イメージは「OSPFのルータ」ページの「ASBRの動作」でも説明しています。
AS-external-LSAの主なフィールドは下表のとおりです。この中でAS-external-LSAはE (bit-E)とForwarding addressの特徴的な2つのフィールドを持っています。 bit-Eによってルートのメトリックタイプを指定することができ、Forwarding addressフィールドによって転送先のアドレスを指定することができます。どちらもルート計算に影響します。
パケットの部位 | LSAのフィールド | 値 |
OSPFヘッダ | Router ID | LSAを作成したルータのルータID |
Area ID | 配布エリアのArea ID | |
LSAヘッダ | LS Type | 5:Summary-LSA |
Link State ID | 宛先IPネットワークアドレス | |
Advertising Router | LSAを発信したASBRのルータID | |
AS-external-LSA | Network Mask | Link State IDで指定したIPサブネットのサブネットマスク |
E | 外部ルートのメトリックタイプ。 0 — タイプ1(加算) 1 — タイプ2(加算なし) |
|
Metric | 宛先IPネットワークアドレスのコスト | |
Forwarding address | このルートの転送先アドレス |
下図はASBRが作成するSummary-LSAのリンク情報を追加したものです。ASBRは上表を元にしてネットワーク図の下に示した通りのASBR-Summary-LSAを作成します。LSAヘッダのLink State IDフィールドは対象となるAS外ルートのネットワークアドレスとなり、AS-external-LSAのNetwork Maskフィールドにサブネットマスクが設定され、この2つでIPサブネットを表します。Metricフィールドは任意で指定します。bit-EとForwarding addressフィールドはこの後説明しています。
※Router-LSAのbit-Eとの混同に注意
AS-external-LSAのMetric Type(bit-E)はメトリックのタイプを表し、各ルータで行うAS外ルートのルート計算の方法を決定します。下表のとおりbit-Eが設定されていない場合(0)はタイプ1となりメトリックは累積コストとして扱われます。bit-Eが設定されている場合(1)はタイプ2となり固定のコストとなります。これはインターネットで買い物をするときに「送料を足した金額」で比較をするか(タイプ1)、「商品だけの金額」で比較をするか(タイプ2)のような違いです。なおタイプ1とタイプ2で同じルート情報がある場合は、タイプ1が優先されます。
bit-E | メトリックタイプ | 計算方法 |
0 | タイプ1 | 累積コスト |
1 | タイプ2 | 固定コスト |
タイプ1(bit-Eを設定しない)はASBRが設定したコストにASBRまでの経路のコストを加算して一番小さいコストのルートを選択します。これはエリア内のルートと同様に、個々のルータそれぞれがトータルコストによって最寄りのASBRを選ぶ形となります。
タイプ2(bit-Eを設定する)はASBRが設定したコストだけで比較して一番小さいルートを選択します。つまりOSPFネットワーク内の状態関わらず、すべてのルータに同じASBRを選ばせることができます。これは設定する値(コスト)によってルータが選ぶルート(どのASBRを通るか)をコントロールできることを意味します。もし同じコストで配布されている場合には内部コストによる選択が行われます。
フォワーディングアドレスはより効率の良いネクストホップが存在する場合に設定するアドレスです。通常はForwarding Address フィールドが0.0.0.0に設定され、ネクストホップはASBRとして計算されます。しかし下図のような構成の場合、AS外に向かうパケットはいったんR2に送信され、その後R2がR3に転送することになってしまいます。
そこでForwarding AddressフィールドにR3のIPアドレスを設定します。各ルータではForwarding Addressフィールドが0.0.0.0以外になっている場合はフォワーディングアドレスを使用してルート計算を行うため、下図のように直接R3に送信することになり効率的になります。
またもし上図のスイッチにもう一台ASBRが接続されいている場合、構成を冗長化しつつネクストホップを統一できます。さらにNSSAではより効果的にフォワーディングアドレスが利用されています。
AS-external-LSAは通常個別のルート情報を設定しますが、デフォルトルートを作成することもできます。その場合、作成するAS-external-LSAは以下のパラメータを設定します。Summary-LSAのデフォルトルートのようなMetricの指定は特にありません。
フィールド | 値 |
Link State ID | DefaultDestination(0.0.0.0) |
Network Mask | 0x00000000 |
概要で説明しているようにAS外のルート情報はASBR-Summary-LSAとAS-external-LSAを組み合わせることによって得ることができますが、ここではそもそもなぜAS外のルートは2のLSAに分かれるのか、AS外ルートの必要性について考えてみます。
まず、ルータが受け取るルートの分かれ方を確認します。下図のR1は大きく分けて3つの情報を受け取ります。エリア内ルートは自分の属するエリア内ネットワークへのルート、エリア間ルートは自分の属するエリアとは異なるエリアへのルート、そしてAS外ルートはOSPFの外のネットワークへのルートです。
ここでエリア間ルートとAS外ルートの違いを考えてみます。R1からするとエリア外という意味ではエリア間ルートもAS外ルートも同じですからまとめて考えることもできるように思えます。エリア間ルートもAS外ルートも扱う情報はほぼ同じであるため技術的にも容易に思えます。その場合、使用するLSAのタイプが減りシンプルで効率的になります。しかし、OSPFでは次の2つの理由から採用していません。
一つ目はEGPとの連携のためです。EGPとの連携というのは文字通りOSPFとEGPの間で行うルート情報の交換です。OSPFはインターネットの構造に当てはめるとIGPという役割を持ちます。理想的なIGPではBGPから受け取った情報と、BGPに渡す情報を区別できなければなりません(「OSPFネットワークの構造」ページの「EGPとIGPの関係」を参照)。そのためOSPFではAS外ルートをAS内ルートと区別します。
二つ目はデータ削減のためです。データ削減というのはAS内を流れるOSPFの情報や、AS内の各OSPFルータが持つデータ量を極力減らしてパフォーマンスを最大化させることです。AS外ルートをエリア間ルートと同様に扱った場合、無視することができないほど情報量が増えてしまう問題が発生してしまいます。この問題に対応するためにOSPFはAS外ルートをエリア間ルートと区別するだけでなく、扱い方も異なっています。この問題については次に説明します。
AS外ルートを考える前にエリア間ルートのデータの持ち方について考えてみます。下図はエリア2にあるNetwork Aの情報が、どのようにエリア間を伝搬するかを表しています。初めにR3によってNetwork Aを表す情報(Router-LSA)が作成されます。その情報はABRであるR1、R2、R4、R5によって伝搬される過程で複製(Summary-LSA)が行われて様々なコピーを残します。下図の青い点がNetwork Aに対するルータが作成する情報、赤い点がそのコピーです。図の構成はそれほど複雑ではありませんが、1つのネットワークの情報だけでも各ルータに複数の同じような情報を持つことになります。例えばR1ではNetwork Aの情報として4つ(つまり4倍)のLSAを持つことになります。この仕様は明らかに無駄に感じますが、AS内ルートでは許容されています。
しかし、この仕様をAS外のルートにも適用するわけにはいきません。なぜならAS内のルートに比べるとAS外のルート情報は桁違いに多いためです。例えば現在のインターネットのフルルートは80万程度ですが、それをAS内に取り込んだ場合、R1ではその4倍の情報を持つことになります。たとえルータのパフォーマンスに問題がなかったとしても明らかに非効率です(OSPF開発当時はルート数がもっと少なかったと思いますが、当時の機器の性能を考えると状況はより深刻だっと思います)。
そこでOSPFではAS外ルートをエリアに関係なく、各ルータで1セットだけ持つようにしています。下図はR3が作成したAS外のルートをAS内に伝搬する様子を表しています。情報の伝わり方は上図と同じですが、ABRは情報を作成せず転送を行います。ルータが保持するAS外ルートは各ルータにつき1セットだけなので保持する情報を最小限に抑えることができます。
ただし、この方法を採用するとエリア1とエリア0ではASBRを特定できないという問題が生じます。具体的には、R3(ASBR)は「R3 —> Network A」というルータIDとIPサブネットの紐づけ情報をAS外ルート(AS-external-LSA)として作成し、AS内の各ルータはそのコピーを持つことになります。このときR2とR5はASBRと同じエリアに属するため問題になりませんが、R1とR4はASBRとは異なるエリアに属するためR3というルータIDを解決することができず、AS外ルートからネクストホップを得ることができません。これはエリア0やエリア1の内部ルータでも同様です。
そこでR2とR5はそれぞれ「R3 —> R2」、「R3 —> R5」という紐づけ情報をエリア間ルート(ASBR-Summary-LSA)として作成しエリア0に配布します。この情報はR1とR4によって「R3 —> R1」、「R3 —> R4」に書き換えられて(正確にはSummary-LSAと同様にルーティングテーブルからの作成で)エリア1に配布されます。これらの情報によってR1、R4を含むエリア1とエリア0内のルータがAS外ルートを計算できるようになります。ASBR-Summary-LSAの作成が非効率のようにも思えますが、ASBR1台につき1つのSummary-LSA(ASBR-Summary-LSA)が作成されるだけであるため、AS外ルートのセットをいくつも持つことに比べると圧倒的に効果的です。