# IP / 経路制御（OSPF）

ネットワークの規模が大きくなると、手動で経路情報を登録するスタティックルーティングでは管理の手間が大きくなり、設定ミスなどによる通信障害が起きやすくなります。ダイナミックルーティングは、ルーター間で経路情報を自動的に交換しあう「ダイナミックルーティング（経路制御）プロトコル」を用いて、経路情報の管理を自動化する方法です。本製品では以下のダイナミックルーティングプロトコルを使用できます。

- RIP（Routing Information Protocol）
- OSPF（Open Shortest Path First）
- BGP（Border Gateway Protocol）

ここでは、OSPFの設定手順について解説します。関連機能については以下のセクションをご覧ください。

- スタティックルーティング
- RIP
- BGP
- 経路フィルタリング
- ポリシーベースルーティング

Note

OSPF由来の経路を65経路以上使用する場合はフィーチャーライセンスが必要です。フィーチャーライセンスがなくてもOSPFは使用できますが、その場合OSPF由来の経路は64経路までしかシステムの経路表に登録されません（登録できなかった場合はログに記録が残ります）。
ライセンスのインストール方法については「運用・管理」/「システム」の「ライセンスキーのインストール」をご参照ください。

## プロトコル概要

OSPF（Open Shortest Path First）は中規模以上のネットワークでの使用を想定して開発された経路制御プロトコルです。現在のバージョンであるOSPFバージョン2はRFC2328で規定されています。
RIPがネットワーク全体をフラットなものとして扱うのに対し、OSPFではネットワークをエリアと呼ばれる小さな単位に分割して、経路情報をエリアごとに管理する点が特徴的です。また、使用するアルゴリズムも異なり、OSPFではリンクステートアルゴリズム、RIPはディスタンスベクターアルゴリズムを使用しています。
OSPFが採用するリンクステートアルゴリズムでは、同一エリア内のすべてのルーターが同じトポロジーデータベースを保持しています。各ルーターはこのデータベースをもとに経路表を作成し、これに基づいてエリア内の経路選択を行います。エリア内部の詳細なトポロジーは他のエリアからは見えないようになっており、経路情報の削減に貢献しています。

### AS（自律システム）

経路制御プロトコルには、組織内で使用するIGP（Interior Gateway Protocol）と組織間で使用するEGP（Exterior Gateway Protocol）がありますが、OSPFはRIPと同様IGPに分類されます。
ここでいう「組織」は、より正確には「AS（Autonomous System = 自律システム）」と呼ぶべきものです。ASとは、同じルーティングプロトコルを使用して経路情報を交換しあっているルーターの集まり、すなわち、OSPFならOSPF、RIPならRIPを使用しているネットワークの範囲を示します。ASはルーティングドメインなどと呼ばれることもあります。

### エリア

OSPFでは、ネットワークを複数のエリアに分割して、それぞれを経路情報の管理範囲とします。各エリアは、エリアIDと呼ばれる32ビットの整数値（0～4294967295）で識別されます。また、エリアIDは「0.0.0.1」（32ビット整数の10進表記では1）のようにIPアドレスと同じ形式で書き表すこともあります。エリアIDはnetworkコマンドを始めとする各種コマンドで指定しますが、そのときは10進形式でもIPアドレス形式でもかまいません。
Note

エリアIDはIPアドレスと同じ形式で表せますが、IPアドレスと直接の関係はありません。任意の数値を使うことができます。管理上わかりやすい番号を付けるとよいでしょう。

各エリアで分散管理されている経路情報を束ねるのは、バックボーンと呼ばれる特殊なエリアです。OSPFネットワークを構成する各エリアは必ずバックボーンエリア（エリアID「0.0.0.0」）に接続されており、エリアごとに管理されている経路情報は、バックボーンエリア経由で他のエリアに伝えられます。
このとき重要な役割を果たすのが、各エリアとバックボーンの境界に位置するエリア境界ルーター（ABR）です。ABRはエリア内の情報を要約した上で、これを他エリアのABRにバックボーン経由で伝える役割を持ちます。また、バックボーン経由で入手した他エリアの経路情報をエリア内部に通知する役割も果たします。
始点・終点ともに同一エリア内のトラフィックは、エリア内の情報だけに基づいて配送されます（エリア内ルーティング）。一方、エリアをまたがるトラフィックは、エリア内→エリア間→エリア内の2レベル3段階で配送されます（エリア間ルーティング）。
OSPFエリアには次のような種類があります。

表 1：OSPFエリアの種類
名称 | 役割
バックボーンエリア | OSPFネットワークの根幹をなす重要なエリア。エリアIDは「0.0.0.0」（0）がバックボーンエリアのために予約されています。どのOSPFネットワークにも必要です。バックボーン以外のエリアは何らかの形でバックボーンエリアと接続されていなくてはなりません。これは、各エリアの経路情報が、バックボーンを通じて交換されるためです。エリア情報の交換は、バックボーンと他のエリアの境界に位置するABR（エリア境界ルーター）が行います
スタブエリア | 1つのエリアとしか隣接しておらず、出口が1つしかないエリアをスタブエリアと呼びます。スタブエリア内には、AS外部（OSPFネットワークの範囲外）の詳細な経路情報（タイプ5LSA）が通知されず、代わりにデフォルト経路（タイプ3LSA）だけが通知されます。これにより、エリア内のルーターにかかる計算負荷を下げることができます。スタブエリア内にはASBR（AS境界ルーター）を置くことができず、また、後述する仮想リンクの通過エリアとなることもできません。通常、AS内の他エリアへの経路情報（タイプ3LSA）は個別に通知されますが、通知されないよう設定することもできます（完全スタブエリア）
準スタブエリア（NSSA） | スタブエリアとほぼ同じですが、ASBR（AS境界ルーター）を置くことができ、AS外部の経路情報をタイプ7のLSAとして取り込むことができます。準スタブエリアのABR（エリア境界ルーター）では、タイプ7のLSAがタイプ5のLSA（通常のAS外部LSA）に変換された上で他のエリアに通知されます。なお、スタブエリアと同じように、他エリアのASBRが生成したAS外部経路（タイプ5LSA）はNSSA内には通知されません。さらに、スタブエリアではAS外部経路の代わりとして通知されるデフォルト経路のタイプ3LSAもNSSAには通知されません。スタブエリア同様、AS内の他エリアへの経路情報（タイプ3LSA）は個別に通知されますが、通知されないよう設定することもできます（完全スタブエリア的なNSSA）。NSSAはNot-So-Stubby-Area（それほどスタブでないエリア）の略です
通常エリア | バックボーンエリアでもスタブエリアでもない通常のエリアです。仮想リンクを通過させたいエリアは、通常エリアでなくてはなりません

### 仮想リンク

OSPFネットワークでは、バックボーン以外のすべてのエリアが、バックボーンエリアと接続されている必要があります。物理的にバックボーンエリアと隣接することが不可能なエリアでは、仮想リンクを使って論理的にバックボーンとの接続を確立します。これは、バックボーンエリアのABRと孤立したエリアのABRが、通常エリアをはさんで仮想的な接続を張ることによって実現されます。これにより、孤立エリアは、通常エリアと直接接続され、バックボーンエリアとは間接的に接続されていることになります。

### OSPFルーター

OSPFルーターは、それぞれルーターIDという識別子を持ちます。ルーターIDはエリアIDと同様の32ビット値で、通常IPアドレスと同じ形式で書き表します（例：2.2.2.2）。
ルーターIDを設定するコマンドはいくつかありますが、OSPFにおいては次の順序で使用されます。

1. OSPFモードのospf router-idコマンドかrouter-idコマンドでOSPFルーティングプロセス固有のルーターIDが設定されている場合は、それが使われる。
2. OSPFルーティングプロセス固有のルーターIDは設定されていないが、グローバルコンフィグモードのrouter-idコマンドでシステムのルーターIDが設定されている場合は、それが使われる。
3. ループバックインターフェース（lo）にIPアドレスが設定されている場合、その中でもっとも大きなものがルーターIDとして使われる。
4. いずれのルーターIDも未設定の場合は、ループバック（lo）以外のインターフェースに設定されたIPアドレスの中でもっとも大きなものがルーターIDとして使われる。

Note

ルーターIDはIPアドレスと同じ形式で表しますが、IPアドレスと直接の関係はありません。明示的に設定しなかった場合はインターフェースのアドレスのうちもっとも大きなものが使われますが、これも一意の識別子を得るための方法として使っているだけであり、実際には任意の数値を使うことができます。管理上わかりやすい番号を付けるとよいでしょう。

OSPFルーターは、役割によって以下のとおり分類できます。

表 2：OSPFルーターの種類
名称 | 略称 | 役割
内部ルーター（Internal Router） | IR | 1つのエリアにだけ所属しているルーター（すべてのインターフェースが同一エリア内にあるルーター）
エリア境界ルーター（Area Border Router） | ABR | 複数のエリア（バックボーンとそれ以外）に所属しているルーター。エリア内の経路情報を要約し、バックボーンエリア経由で他のエリアに伝える役目を負う。また、バックボーンエリア経由で入手した他エリアの経路情報を自エリア内部に通知する役割もある。
バックボーンルーター（Backbone Router） | BR | バックボーンエリアに所属しているルーター。ABRは必ずバックボーンルーターになるが、バックボーンルーターがつねにABRとは限らない。すべてのインターフェースがバックボーンエリア内にあるIRもバックボーンルーターである。
AS境界ルーター（Autonomous System Boundary Router） | ASBR | OSPFネットワークと他のルーティングプロトコルを使用しているネットワークとの境界に位置するルーター。外部ネットワークの経路情報をOSPFネットワーク内に通知する

### OSPFメッセージ

OSPFはIPを直接使用します。プロトコル番号は89（OSPFIGP）です。メッセージのやりとりには、ユニキャストアドレスに加え、以下のマルチキャストグループアドレスが使用されます。

- 224.0.0.5（OSPFルーター）
- 224.0.0.6（OSPF代表ルーター）

OSPFメッセージには以下の種類があります。

表 3
タイプ | メッセージ名 | 説明
1 | Hello（Hello） | 隣接ルーターの探索、代表ルーター（DR）の決定などに使用する
2 | Database Description（データベース記述） | 隣接関係の形成時にトポロジーデータベースの内容を要約して通知する
3 | Link State Request（リンク状態要求） | 隣接関係形成の最終段階において追加のLSA（トポロジー情報）を要求する
4 | Link State Update（リンク状態更新） | LSA（トポロジー情報）を通知する
5 | Link State Ack（リンク状態確認） | リンク状態更新パケットに対する確認応答

### LSA（リンク状態通知）

OSPFのトポロジーデータベース（LSDB：Link State Database）を構成する基本レコードをLSA（Link State Advertisement）と呼びます。各ルーターはLSAを交換しあうことによって、トポロジーデータベースを構築します。LSAには以下の種類があります。

表 4：LSAの種類
LSAタイプ | 名称 | 説明
1 | ルーターLSA | エリア内にあるルーターインターフェースの情報。すべてのルーターが生成する。通知範囲はエリア内に限定される
2 | ネットワークLSA | 複数のルーターが接続されているマルチアクセス型ネットワークの情報。接続されているルーターの一覧を示す。該当ネットワークの代表ルーター（DR）が生成する。通知範囲はエリア内に限定される
3 | ネットワークサマリーLSA | エリア外（ただしAS内）ネットワークへの経路情報（ネクストホップ、メトリックなど）。エリア境界ルーター（ABR）が生成する。ABRが接続されているすべてのエリアに通知される
4 | ASBRサマリーLSA | エリア外にあるAS境界ルーター（ASBR）への経路情報。ABRが生成する。ABRが接続されているすべてのエリアに通知される
5 | AS外部LSA | AS外部への経路情報。通常エリアのASBRが生成する。AS内全体に通知される。また、NSSAのエリア境界ルーター（ABR）は、NSSA内のタイプ7LSAをタイプ5LSAに変換して他のエリアに通知する
7 | NSSA AS外部LSA | AS外部への経路情報。準スタブエリア（NSSA）のASBRが生成する。NSSA内にのみ通知される。NSSAのエリア境界ルーター（ABR）では、タイプ7のLSAがタイプ5のLSAに変換される

## 基本設定

OSPFネットワークを構築するための基本的な手順について説明します。

### 単一エリア構成

エリア0（バックボーンエリア）だけで構成されたシンプルなOSPFネットワークの設定例を示します。ここでは、次のようなネットワーク構成を例に解説します。

この構成では、すべてのルーターがエリア0の内部ルーター（IR）となります。ここでは、ルーターA、Bの設定を示します。
なお、以下の各例では、VLANの作成とIPアドレスの設定は完了しているものとします。VLANの設定については、「L2スイッチング」の「バーチャルLAN」をご覧ください。IPアドレスの設定については、「IP」の「IPインターフェース」をご覧ください。

#### ルーターA（IR）

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterA(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterA(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterA(config-router)# ospf router-id 0.0.0.1

4. OSPFメッセージの送受信を行うIPインターフェースと所属エリアを指定します。

       RouterA(config-router)# network 172.16.10.0/24 area 0
       RouterA(config-router)# network 172.16.20.0/24 area 0

#### ルーターB（IR）

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterB(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterB(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterB(config-router)# ospf router-id 0.0.0.2

4. OSPFメッセージの送受信を行うIPインターフェースと所属エリアを指定します。

       RouterB(config-router)# network 172.16.20.0/24 area 0
       RouterB(config-router)# network 172.16.30.0/24 area 0

設定は以上です。

### 複数エリア構成

エリア0（バックボーンエリア）、1（通常エリア）、2（スタブエリア）、3（NSSA）、4（完全スタブエリア、仮想リンクでエリア0と接続）の5エリアで構成されるOSPFネットワークの設定例を示します。エリア1と3は非OSPFネットワーク（RIPネットワーク）と接続されているものとします。
Note

以下の構成例は、エリア種別（バックボーン、通常、スタブ、NSSAなど）やルーター種別（IR、ABR、ASBRなど）による設定の違いを示すために設計したもので、運用ネットワークで使用することを目的としたものではありませんのでご注意ください。また、スペースの都合上、構成図中で詳細を省略している箇所があります。図中「省略」の部分には、OSPFルーターやIPサブネットが複数存在しているとお考えください。

各エリアの範囲は次のとおりです。

表 5
エリア | IPアドレス範囲 | 所属ルーター | 備考
0（バックボーン） | 172.16.0.0/16 | A(ABR), B(ABR), C(ABR) | A・H間の仮想リンクでエリア4と接続
1（通常エリア） | 172.21.0.0/16 | A(ABR), D(ASBR), H(ABR) | ASBRのD経由でRIPドメインAと接続。エリア0・4間の仮想リンクの通過エリア
2（スタブエリア） | 172.22.0.0/16 | B(ABR), E(IR) | -
3（準スタブエリア） | 172.23.0.0/16 | C(ABR), F(IR), G(ASBR) | ASBRのG経由でRIPドメインBと接続
4（完全スタブエリア） | 172.24.0.0/16 | H(ABR), I(IR) | H・A間の仮想リンクでエリア0と接続
RIPドメインA | 10.10.0.0/16 | D |
RIPドメインB | 10.20.0.0/16 | G |

ここでは、ルーターA～Iの設定を示します。
なお、以下の各例では、VLANの作成とIPアドレスの設定は完了しているものとします。VLANの設定については、「L2スイッチング」の「バーチャルLAN」をご覧ください。IPアドレスの設定については、「IP」の「IPインターフェース」をご覧ください。

#### ルーターA（通常エリアABR）

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterA(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterA(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterA(config-router)# ospf router-id 1.1.1.1

4. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。ルーターAはABRなので、複数のエリアに所属しています。

       RouterA(config-router)# network 172.16.10.0/24 area 0
       RouterA(config-router)# network 172.21.10.0/24 area 1

5. エリア4のABRであるルーターH（4.1.1.1）との間に仮想リンクを張り、エリア4をエリア0と接続します。通過エリアはエリア1となります。仮想リンクの設定は、リンクの両端のルーターで必要です。

       RouterA(config-router)# area 1 virtual-link 4.1.1.1

6. エリア1内の経路を集約した上で他のエリアに通知する設定を行います。
   エリア1には、図の中で明示している以外にもサブネットワークが存在しています（図中「省略」の部分を、複数のOSPFルーターで構成されたサブネットワークと考えてください）。
   ここでは、エリア1のABRであるルーターAにおいて、これらの経路を「172.21.0.0/16」に集約するよう設定します。

       RouterA(config-router)# area 1 range 172.21.0.0/16

#### ルーターB（スタブエリアABR）

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterB(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterB(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterB(config-router)# ospf router-id 2.1.1.1

4. エリア2をスタブエリアに設定します。この設定は、スタブエリアに所属するすべてのルーターで行う必要があります。

       RouterB(config-router)# area 2 stub

5. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。ルーターBはABRなので、複数のエリアに所属しています。

       RouterB(config-router)# network 172.16.20.0/24 area 0
       RouterB(config-router)# network 172.22.10.0/24 area 2

6. エリア2内の経路を集約した上で他のエリアに通知する設定を行います。
   エリア2には、図の中で明示している以外にもサブネットワークが存在しています（図中「省略」の部分を、複数のOSPFルーターで構成されたサブネットワークと考えてください）。
   ここでは、エリア2のABRであるルーターBにおいて、これらの経路を「172.22.0.0/16」に集約するよう設定します。

       RouterB(config-router)# area 2 range 172.22.0.0/16

#### ルーターC（準スタブエリアABR）

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterC(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterC(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterC(config-router)# ospf router-id 3.1.1.1

4. エリア3を準スタブエリア（NSSA）に設定します。また、エリア3のABRであるルーターCにおいて、デフォルト経路のタイプ7LSAを生成し、NSSA内に通知するよう設定します。

       RouterC(config-router)# area 3 nssa default-information-originate

   Note

   ここで「default-information-originate」を指定しないと、エリア3内からは、ルーターD（エリア1のASBR）に接続されているRIPドメインA（10.10.0.0/16）に到達できません。

5. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。ルーターCはABRなので、複数のエリアに所属しています。

       RouterC(config-router)# network 172.16.30.0/24 area 0
       RouterC(config-router)# network 172.23.10.0/24 area 3

6. エリア3内の経路を集約した上で他のエリアに通知する設定を行います。
   エリア3には、図の中で明示している以外にもサブネットワークが存在しています（図中「省略」の部分を、複数のOSPFルーターで構成されたサブネットワークと考えてください）。
   ここでは、エリア3のABRであるルーターCにおいて、これらの経路を「172.23.0.0/16」に集約するよう設定します。

       RouterC(config-router)# area 3 range 172.23.0.0/16

#### ルーターD（通常エリアASBR）

ルーターDはASBRなので、OSPFだけでなく他のルーティングプロトコル（ここではRIP）も実行しています。

1. RIPの動作に必要なRIPサービスとOSPFの動作に必要なOSPFサービスを有効にします。これにはservice rip、service ospfコマンドを使います。

       RouterD(config)# service rip
       RouterD(config)# service ospf

2. RIPルーティングプロセスを起動し、RIPモードに移行します。

       RouterD(config)# router rip

3. RIPで通知するネットワークの範囲とRIPパケットの送受信を行うインターフェースを指定します。ここでは、vlan20（10.10.10.1）でのみRIPパケットの送受信を有効にし、vlan20に接続されている10.10.10.0/24を通知対象とします。

       RouterD(config-router)# network 10.10.10.0/24

4. RIPネットワークに対しては、OSPFネットワークへの経路をデフォルトルートとして通知します。以上でRIPの設定は完了なので、exitコマンドでグローバルコンフィグモードに戻ります。

       RouterD(config-router)# default-information originate
       RouterD(config-router)# exit

5. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterD(config)# router ospf

6. OSPFのルーターIDを設定します。

       RouterD(config-router)# ospf router-id 1.1.1.2

7. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。

       RouterD(config-router)# network 172.21.200.0/24 area 1

8. 非OSPF経路を集約した上でOSPFネットワークに通知するための設定をします。
   ここでは、エリア1のASBRであるルーターDにおいて、10.10.0.0～10.10.255.255の範囲に含まれる個々の非OSPF経路を「10.10.0.0/16」に集約するよう設定します。

       RouterD(config-router)# summary-address 10.10.0.0/16
       RouterD(config-router)# exit

9. 非OSPF経路をAS外部経路としてOSPFドメインに取り込むための設定をします。
   ここでは、非OSPFインターフェースの直結経路とRIP経路をOSPFネットワーク内に再通知するよう設定します。

       RouterD(config)# access-list 1 permit 10.10.10.0 0.0.0.255
       RouterD(config)# route-map vlan20only permit 10
       RouterD(config-route-map)# match ip address 1
       RouterD(config-route-map)# exit
       RouterD(config)# router ospf
       RouterD(config-router)# redistribute rip
       RouterD(config-router)# redistribute connected route-map vlan20only

   Note

   「redistribute rip」だけでは、RIPインターフェース（ここではvlan20）の直結経路（ここでは10.10.10.0/24）がOSPFで再通知されません。これは、redistributeコマンドでは、RIPインターフェースの直結経路も非OSPFインターフェースの直結経路として扱われるためです。したがって、RIP経路をOSPFで再通知するときは、「redistribute rip」と「redistribute connected」を併用してください。なお、「redistribute connected」でルートマップvlan20onlyを指定しているのは、運用ネットワーク側に通知したくないインターフェースの経路情報がOSPFで再通知されるのを防ぐためです。

#### ルーターE（スタブエリアIR）

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterE(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterE(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterE(config-router)# ospf router-id 2.1.1.2

4. エリア2をスタブエリアに設定します。この設定は、スタブエリアに所属するすべてのルーターで行う必要があります。

       RouterE(config-router)# area 2 stub

5. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。

       RouterE(config-router)# network 172.22.10.0/24 area 2
       RouterE(config-router)# network 172.22.20.0/24 area 2

#### ルーターF（準スタブエリアIR）

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterF(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterF(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterF(config-router)# ospf router-id 3.1.1.2

4. エリア3を準スタブエリア（NSSA）に設定します。この設定は、NSSAに所属するすべてのルーターで行う必要があります。

       RouterF(config-router)# area 3 nssa

5. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。

       RouterF(config-router)# network 172.23.70.0/24 area 3
       RouterF(config-router)# network 172.23.80.0/24 area 3

#### ルーターG（準スタブエリアASBR）

ルーターGはASBRなので、OSPFだけでなく他のルーティングプロトコル（ここではRIP）も実行しています。

1. RIPの動作に必要なRIPサービスとOSPFの動作に必要なOSPFサービスを有効にします。これにはservice rip、service ospfコマンドを使います。

       RouterG(config)# service rip
       RouterG(config)# service ospf

2. RIPルーティングプロセスを起動し、RIPモードに移行します。

       RouterG(config)# router rip

3. RIPで通知するネットワークの範囲とRIPパケットの送受信を行うインターフェースを指定します。ここでは、vlan20（10.20.10.1）でのみRIPパケットの送受信を有効にし、vlan20に接続されている10.20.10.0/24を通知対象とします。

       RouterG(config-router)# network 10.20.10.0/24

4. RIPネットワークに対しては、OSPFネットワークへの経路をデフォルトルートとして通知します。以上でRIPの設定は完了なので、exitコマンドでグローバルコンフィグモードに戻ります。

       RouterG(config-router)# default-information originate
       RouterG(config-router)# exit

5. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterG(config)# router ospf

6. OSPFのルーターIDを設定します。

       RouterG(config-router)# ospf router-id 3.1.1.3

7. エリア3を準スタブエリア（NSSA）に設定します。この設定は、NSSAに所属するすべてのルーターで行う必要があります。

       RouterG(config-router)# area 3 nssa

8. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。

       RouterG(config-router)# network 172.23.200.0/24 area 3

9. 非OSPF経路を集約した上でOSPFネットワークに通知するための設定をします。
   ここでは、エリア3のASBRであるルーターGにおいて、10.20.0.0～10.20.255.255の範囲に含まれる個々の非OSPF経路を「10.20.0.0/16」に集約するよう設定します。

       RouterG(config-router)# summary-address 10.20.0.0/16
       RouterG(config-router)# exit

10. 非OSPF経路をAS外部経路としてOSPFドメインに取り込むための設定をします。
    ここでは、非OSPFインターフェースの直結経路とRIP経路をOSPFネットワーク内に再通知するよう設定します。

        RouterG(config)# access-list 1 permit 10.20.10.0 0.0.0.255
        RouterG(config)# route-map vlan20only permit 10
        RouterG(config-route-map)# match ip address 1
        RouterG(config-route-map)# exit
        RouterG(config)# router ospf
        RouterG(config-router)# redistribute rip
        RouterG(config-router)# redistribute connected route-map vlan20only

    Note

    「redistribute rip」だけでは、RIPインターフェース（ここではvlan20）の直結経路（ここでは10.20.10.0/24）がOSPFで再通知されません。これは、redistributeコマンドでは、RIPインターフェースの直結経路も非OSPFインターフェースの直結経路として扱われるためです。したがって、RIP経路をOSPFで再通知するときは、「redistribute rip」と「redistribute connected」を併用してください。なお、「redistribute connected」でルートマップvlan20onlyを指定しているのは、運用ネットワーク側に通知したくないインターフェースの経路情報がOSPFで再通知されるのを防ぐためです。

#### ルーターH（完全スタブエリアABR）

ルーターHは物理リンクでエリア1、4と接続されており、仮想リンクでエリア0と接続されています。結果的にルーターHは、エリア0、1、4の3エリアに接続されたABRということになります。

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterH(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterH(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterH(config-router)# ospf router-id 4.1.1.1

4. エリア4を完全スタブエリアに設定します。no-summaryオプションが完全スタブエリアの設定です。stubの設定は、完全スタブエリアに所属するすべてのルーターで行う必要がありますが、no-summaryの設定は完全スタブエリアのABRにだけ行います。

       RouterH(config-router)# area 4 stub no-summary

5. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。ルーターHはABRなので、複数のエリアに所属しています。

       RouterH(config-router)# network 172.21.240.0/24 area 1
       RouterH(config-router)# network 172.24.10.0/24 area 4

6. エリア0のABRであるルーターA（1.1.1.1）との間に仮想リンクを張り、エリア4をエリア0と接続します。通過エリアはエリア1となります。仮想リンクの設定は、リンクの両端のルーターで必要です。

       RouterH(config-router)# area 1 virtual-link 1.1.1.1

7. エリア4内の経路を集約した上で他のエリアに通知する設定を行います。
   エリア4には、図の中で明示している以外にもサブネットワークが存在しています（図中「省略」の部分を、複数のOSPFルーターで構成されたサブネットワークと考えてください）。
   ここでは、エリア4のABRであるルーターHにおいて、これらの経路を「172.24.0.0/16」に集約するよう設定します。

       RouterH(config-router)# area 4 range 172.24.0.0/16

#### ルーターI（完全スタブエリアIR）

IRの設定は、完全スタブエリアと普通のスタブエリアで異なる箇所はありません。両者の設定が異なるのは、ABRにおいてのみです。

1. OSPFの動作に必要なOSPFサービスを有効にします。これにはservice ospfコマンドを使います。

       RouterI(config)# service ospf

2. OSPFルーティングプロセスを起動し、OSPFモードに移行します。

       RouterI(config)# router ospf

3. OSPFのルーターIDを設定します。

       RouterI(config-router)# ospf router-id 4.1.1.2

4. エリア4をスタブエリアに設定します。この設定は、スタブエリアに所属するすべてのルーターで行う必要があります。エリア4は完全スタブエリアですが、IRでは普通のスタブエリアと同じ設定になります。

       RouterI(config-router)# area 4 stub

5. OSPFメッセージの送受信を行うIPインターフェースのネットワーク範囲と所属エリアを指定します。

       RouterI(config-router)# network 172.24.10.0/24 area 4
       RouterI(config-router)# network 172.24.20.0/24 area 4

設定は以上です。

## 詳細設定

### 非OSPF経路の再通知（ASBR）

非OSPF経路をOSPFで再通知するルーターをASBRと呼びます。
ASBRはバックボーンエリア、通常エリア、準スタブエリア（NSSA）に置くことができますが、スタブエリアには置くことができません。
バックボーンエリア、通常エリアに配置されたASBRは、非OSPF経路をタイプ5LSA（AS外部LSA）としてエリア内に取り込み、ABRを経由してAS内全体に通知します。
NSSAに配置されたASBRは、非OSPF経路をタイプ7LSA（NSSA外部LSA）としてNSSA内に取り込み、さらにNSSAのABRでは、タイプ7LSAをタイプ5LSAに変換した上で他のエリアに通知します。
なお、タイプ5LSAは通常AS全体に通知されますが、スタブエリアやNSSAには通知されません。その代わり、スタブエリアにはデフォルト経路のタイプ3LSAが通知されます。一方、NSSAの初期設定では、デフォルト経路のタイプ3LSAは通知されません。
ASBRでは、redistributeコマンドを使って、再通知したい経路の種別を指定します。このとき、経路種別ごとに再通知時のメトリックやメトリックタイプなども指定できます。また、ルートマップを利用して、再通知する経路を限定したり、再通知する経路の内容を書き換えたりもできます。
スタティック経路をOSPFで再通知する場合は次のようにします。ここでは、すべてのスタティック経路をメトリック1000で通知するよう設定しています。

    awplus(config-router)# redistribute static metric 1000

RIP経路をOSPFで再通知する場合は次のようにします。

    awplus(config-router)# redistribute rip
    awplus(config-router)# redistribute connected

「redistribute connected」で非OSPFインターフェースの直結経路も再通知するよう設定しているのは、「redistribute rip」だけでは、RIPインターフェースの直結経路がOSPFで再通知されないためです。
redistributeコマンドでは、RIPインターフェースの直結経路も非OSPFインターフェースの直結経路として扱われます。そのため、RIP経路をOSPFで再通知するときは、「redistribute rip」と「redistribute connected」を併用してください。
また、RIPもOSPFも動作させていないインターフェースの経路が存在しており、これをOSPFで再通知したくない場合は、redistributeコマンドのroute-mapパラメーターを利用して、必要な直結経路だけを再通知するよう設定してください。
たとえば、RIPを動作させているインターフェースがvlan20（インターフェースアドレス172.21.10.1/24）の場合、RIP経由で学習した経路と、vlan20の直結経路172.21.10.0/24だけをOSPFで再通知し、その他の非OSPFインターフェースの直結経路は再通知しないよう設定するには、次のようにします。

    awplus(config)# access-list 1 permit 172.21.10.0 0.0.0.255
    awplus(config)# route-map vlan20only permit 10
    awplus(config-route-map)# match ip address 1
    awplus(config-route-map)# exit
    awplus(config)# router ospf
    awplus(config-router)# redistribute rip
    awplus(config-router)# redistribute connected route-map vlan20only

Note

経路フィルタリングの詳細については、「IP」の「経路制御（フィルタリング）」をご覧ください。

### 経路の集約

OSPFにおいて、経路の集約はABRとASBRの2箇所で行うことができます。

#### エリア間経路の集約（ABR）

タイプ3LSA（ネットワークサマリーLSA）で通知されるエリア間経路の集約は、エリアとエリアの間に位置するABRで行います。
エリア間経路を集約するには、area rangeコマンド（OSPFモード）で集約経路エントリーを作成します。
たとえば、エリア2のABRにおいて、エリア2内の経路情報を172.16.0.0/18に集約してから他のエリアに通知したい場合は、次のような集約経路エントリーを作成します。

    awplus(config-router)# area 2 range 172.16.0.0/18

これにより、172.16.0.0/18の範囲におさまるエリア2内の個別経路（たとえば、「172.16.10.0/24」や「172.16.20.0/24」）は、1つのタイプ3LSA「172.16.0.0/18」に集約された上で他のエリアに通知されるようになります。

#### AS外部経路の集約（ASBR）

タイプ5LSA（AS外部LSA）、タイプ7LSA（NSSA外部LSA）で通知されるAS外部経路の集約は、非OSPF経路を再通知するASBRで行います。
AS外部経路を集約するには、summary-addressコマンドで集約経路エントリーを作成します。
たとえば、ASBRにおいて、AS外部の経路情報を10.0.0.0/8に集約してからAS内に通知したい場合は、次のような集約経路エントリーを作成します。

    awplus(config-router)# summary-address 10.0.0.0/8

これにより、10.0.0.0/8の範囲におさまる個々の外部経路（たとえば、「10.10.10.0/24」や「10.100.0.0/16」）は、1つのタイプ5/7LSA「10.0.0.0/8」に集約された上でAS内に通知されるようになります。

### 認証

OSPFではOSPFパケットの認証を行うことができます。
認証方式の設定はエリアごと、あるいは、インターフェースごとに行います。
認証鍵（パスワード）の設定は、インターフェースごとに行います。
エリア単位で認証方式を設定するには、次のようにします。

1. 認証を行うエリアに対し、area authenticationコマンドを実行して認証方式を指定します。
   簡易パスワード認証を使用する場合は次のようにします。

       awplus(config-router)# area 0 authentication

   MD5ダイジェスト認証を使用する場合は次のようにします。

       awplus(config-router)# area 0 authentication message-digest

2. 該当エリア所属の各OSPFインターフェースにおいて、使用する認証鍵（パスワード）を設定します。同一サブネット上のルーター間で
   簡易パスワード認証用の鍵は、ip ospf authentication-keyコマンドで指定します。

       awplus(config)# interface vlan10
       awplus(config-if)# ip ospf authentication-key 8aM1te9u04oh!

   MD5ダイジェスト認証用の鍵は、ip ospf message-digest-keyコマンドで指定します。

       awplus(config)# interface vlan10
       awplus(config-if)# ip ospf message-digest-key 1 md5 8aDaYaDa!8aM1te!

設定は以上です。
該当インターフェースとOSPFパケットを交換するすべてのルーターに対し、同じ認証方式と同じパスワードを設定してください。
インターフェースごとに異なる認証方式を使うこともできます。この場合は、各インターフェースに対して、ip ospf authenticationコマンドを実行し、該当インターフェースで使用する認証方式を指定してください。ip ospf authenticationコマンドの設定は、エリアごとの認証設定（area authenticationコマンド）よりも優先されます。なお、認証鍵の設定方法はエリア単位で認証方式を設定する場合と同じです。
たとえば、vlan10では簡易パスワード認証を、vlan20ではMD5ダイジェスト認証を行うよう設定するには、次のようにします。

1. vlan10に対し、認証方式（簡易パスワード認証）と認証鍵を設定します。

       awplus(config)# interface vlan10
       awplus(config-if)# ip ospf authentication
       awplus(config-if)# ip ospf authentication-key 1i4o8a8A
       awplus(config-if)# exit

2. vlan20に対し、認証方式（MD5ダイジェスト認証）と認証鍵を設定します。

       awplus(config)# interface vlan20
       awplus(config-if)# ip ospf authentication message-digest
       awplus(config-if)# ip ospf message-digest-key 1 md5 6u9u8aP8a
       awplus(config-if)# exit

設定は以上です。
該当インターフェースとOSPFパケットを交換するすべてのルーターに対し、同じ認証方式と同じパスワードを設定してください。

### 経路フィルタリング

OSPFにおける経路フィルタリングについては、「IP」の「経路制御（フィルタリング）」をご覧ください。

## 設定や状態の確認

OSPFの設定や各種状態を確認するコマンドを紹介します。
OSPFの全体設定を確認するには、show running-configコマンドでセクション名「router ospf」を指定するとよいでしょう。

    awplus# show running-config router ospf

インターフェース固有のOSPF設定を確認したいときは、show running-configコマンドでセクション名「interface」または「interface IFRANGE」を指定するとよいでしょう。

    awplus# show running-config interface vlan10,vlan20

OSPFルーティングプロセスの情報を確認するにはshow ip ospfコマンドを使います。

    awplus# show ip ospf

OSPFインターフェースの状態はshow ip ospf interfaceコマンドで確認します。

    awplus# show ip ospf interface

隣接ルーターの情報を確認するには、show ip ospf neighborコマンドを使います。

    awplus# show ip ospf neighbor

トポロジーデータベース（LSDB）の情報を確認するにはshow ip ospf databaseコマンドおよび関連する以下のコマンドを使います。

- show ip ospf database routerコマンド
- show ip ospf database networkコマンド
- show ip ospf database summaryコマンド
- show ip ospf database asbr-summaryコマンド
- show ip ospf database externalコマンド
- show ip ospf database nssa-externalコマンド

    awplus# show ip ospf database

OSPF経路表を確認するにはshow ip ospf routeコマンドを使います。
OSPF経路表はOSPFルーティングプロセスが独自に保持している経路データベースで、トポロジーデータベース（LSDB）を元に生成・維持されます。この中からメトリック（コスト）的に最適と判断された経路がシステムのIP経路表（RIB）に登録されます。

    awplus# show ip ospf route

IP経路表（RIB）を確認するにはshow ip route databaseコマンドを使います。
IP経路表（RIB）は各種情報源から得た経路情報を蓄積するデータベースで、この中から管理距離（AD：Administrative Distance）的に最適と判断された経路がシステムのIP転送表（FIB）に登録されます。

    awplus# show ip route database

IP転送表（FIB）を確認するにはshow ip routeコマンドを使います。
IP転送表（FIB）は、IPパケットの転送判断時に参照するデータベースで、各宛先に対する最適な経路だけが登録されています。

    awplus# show ip route

## OSPFグレースフルリスタート

OSPFグレースフルリスタート機能について説明します。
メンテナンス等で本装置のOSPFルーティングプロセスを再起動させると隣接するOSPFピアがそれを検出し、本装置が通知した経路情報を自身のルーティングデータベースから削除するため、経路情報の再通知が完了するまでの間、パケット転送が停止します。
OSPFで大量の経路情報を管理している場合、経路の再学習に長い時間を要するため、パケット転送の停止状態が予想以上に長くなる場合があります。
OSPFグレースフルリスタートは、OSPFルーティングプロセスを再起動した場合に、隣接するOSPFピアが本装置が通知した再起動前の経路情報を保持することにより、再起動中もパケット転送を継続させる機能です。
OSPFグレースフルリスタートでは、OSPFルーティングプロセスを再起動させるノードと隣接ピアの再起動を検出した場合に再起動前の経路を保持するノードが存在します。
capability restartコマンドを使用し、OSPFグレースフルリスタート機能を有効にします。

    awplus(config-router)# capability restart graceful

ospf restart grace-periodコマンドを使用し、OSPFルーティングのリスタートのグレース間隔（grace-period）を60秒に設定します。

    awplus(config)# ospf restart grace-period 60

Note

2台のルーターに同じ宛先アドレスとネクストホップを持つスタティックルートを設定し、AS外部LSAのForwarding addressがNon-Zeroになる設定をしたとき、優先度の低い（ルーターIDの値が小さい）ルーターがグレースフルリスタートを発生させると、優先度の低いルーターからのAS外部LSAを登録してしまいます。不正なAS外部LSAの情報を元に経路情報が作成されますが、経路は登録されていますので通信は可能です。

Note

VCS 構成時は、グレースフルリスタートは有効（初期設定）でご利用ください。

Note

OSPFグレースフルリスタート発生時にトポロジーチェンジが発生する環境では、以下のことが発生し、通信の復旧に時間がかかることがあります。

- グレースフルリスタートがタイムアウトまで終了できない
- グレースフルリスタートが失敗して、通常 OSPF 動作の隣接関係の再構築が発生する