OSPFの基本的な設定手順

OSPFの基本的な設定手順は、次の2つです。

  1. OSPFルーティングプロセスの起動
  2. インタフェースでOSPFを有効化

その他にもさまざまな設定がありますが、この2つの手順でOSPFの基本的な設定はOKです。

図 OSPFの基本的な設定の流れ

OSPFルーティングプロセスの起動

「ルーティングプロセス」とは、実行中のルーティングプロトコル用のプログラムです。「OSPFルーティングプロセスを起動」とは、ルータで「OSPF用のプログラムを実行する」ということを意味します。

OSPFルーティングプロセスを起動するには、グローバルコンフィグレーションモードで次のコマンドを入力します。

OSPFルーティングプロセスの起動

(config)#router ospf <process-id>
(config-router)#

<process-id> : OSPFプロセス番号

プロセス番号は1~65535の任意の番号を指定します。1台のルータで複数のOSPFプロセスを起動することもでき、プロセス番号はルータローカルでOSPFプロセスを識別するためのものです。ただ、特別な理由がない限り、複数のOSPFプロセスを起動することはありません。

プロセス番号はルータローカルで利用するので、他のルータと合わせる必要はありません。しかし、ルータごとにバラバラなプロセス番号だと設定がわかりづらくなるので、同じプロセス番号を利用することが一般的です。

インタフェースでOSPFを有効化

そして、インタフェースでOSPFを有効化するには2通りの設定があります。以前より利用している設定はOSPFのコンフィグレーションモードでのnetworkコマンドの設定です。

インタフェースでOSPFを有効化 networkコマンド

(config)#router ospf <process-id>
(config-router)#network <ip-address> <wildcardmask> area <area-id>

<process-id> : OSPFプロセス番号
<ip-address> : IPアドレス
<wildcardmask> : ワイルドカードマスク
<area-id> : エリア番号

<ip-address> <wildcardmask>の組み合わせで、OSPFを有効化したいインタフェースに設定されているIPアドレスのビットパターンを指定します。たとえば、「192.168.0.0 0.0.255.255」であれば、先頭16ビットが「192.168」のIPアドレスのインタフェースという意味です。インタフェースでOSPFを有効化するのですが、設定上はインタフェース名ではなく「インタフェースに設定されているIPアドレスのビットパターン」を指定することになります。そして、OSPFを有効化したインタフェースが所属するエリア番号を指定します。

ワイルドカードマスクはサブネットマスクの「0」と「1」を反転させたものと説明されていることがよくあります。でも、それはウソです。正しくありません。

もう1つの設定方法は、OSPFを有効にしたいインタフェースのインタフェースコンフィグレーションモードのip ospf areaコマンドの設定です。

インタフェースでOSPFを有効化 ip ospf areaコマンド

(config)#interface <interface-name>
(config-if)#ip ospf <process-id> area <area-id>

<interface-name> : インタフェース名
<process-id> : OSPFプロセス番号
<area-id> : エリア番号

ip ospf areaコマンドのほうがnetworkコマンドよりも、「このインタフェースでOSPFを有効にするんだ!」ということがわかりやすくなりますね。ただ、OSPFを有効にしたいインタフェースがたくさんあるときは、ip ospf areaコマンドの設定は面倒です。networkコマンドのワイルドカードマスクを工夫すれば、1つのnetworkコマンドで複数のインタフェース一括でOSPFを有効にできます。どちらの設定方法にせよ、「インタフェースでOSPFを有効にする」ということをしっかりと意識してください。

もし、networkコマンドの設定とip ospf areaコマンドの設定が重複している場合は、ip ospf areaコマンドの設定のほうが優先されます。

OSPFルーティングプロセスを有効化する前にインタフェースでip ospf areaコマンドを入力することもできます。その場合は、自動的にルーティングプロセスが有効化されます。

マルチエリアでABRとして設定する場合は、エリア0のインタフェースとそれ以外のエリアのインタフェースの設定を行えばよいだけです。ABRとするための特別なコマンドはありません。

関連記事

networkコマンドのワイルドカードマスクはACL(Access Control List)の設定でもよく使います。ワイルドカードマスクについて、以下の記事もご覧ください。

インタフェースでOSPFを有効化することの詳細について、以下の記事で解説しています。

その他のさまざまな設定

基本的な設定以外にも、以下のようなよく行う設定もあります。

  • ルータIDの設定
  • Hello/Deadインターバルの設定
  • ネイバー認証の設定
  • OSPFコストの設定
  • DR/BDRを決定するためのプライオリティの設定
  • パッシブインタフェース(passive-interface)の設定
  • デフォルトルート生成の設定

これらの設定について、別のページで詳しくまとめています。

関連記事

OSPFの設定例

以下は、シンプルなネットワーク構成でのOSPFの設定例です。

図 OSPF設定例
図 OSPF設定例

R1の設定

R1はABRです。「network 192.168.12.0 0.0.0.255 area 0」は、IPアドレス「192.168.12.x(x:任意)」のインタフェースでOSPFを有効化してエリア0に所属させるという意味です。つまり、E0/0でOSPFを有効化して、エリア0のインタフェースとしています。そして、「network 192.168.13.1 0.0.0.0 area 1」は、IPアドレス「192.168.13.1」のインタフェース、すなわち、S1/0でOSPFを有効化してエリア1のインタフェースとする設定です。

R1(ABR)のOSPF設定コマンド

router ospf 1
 network 192.168.12.0 0.0.0.255 area 0
 network 192.168.13.1 0.0.0.0 area 1

R2の設定

R2はインタフェースコンフィグレーションモードでのOSPF有効化の設定例です。E0/0とE0/1の2つのインタフェースでOSPFを有効にして、エリア0に所属させています。

R2 のOSPF設定コマンド

router ospf 1
!
interface Ethernet 0/0
 ip ospf 1 area 0
!
interface Ethernet 0/1
 ip ospf 1 area 0

R3の設定

そして、R3ではワイルドカードマスクの指定で、E0/1とS1/0の2つのインタフェースを1行のnetworkコマンドで有効化している例です。「network 192.168.0.0 0.0.255.255 area 1」は、IPアドレス「192.168.x.x(x:任意)」のインタフェースが対象です。すなわち、E0/1とS1/0の2つのインタフェースを一括で指定していることになります。

R3 のOSPF設定コマンド

router ospf 1
 network 192.168.0.0 0.0.255.255 area 1

OSPFプロセス番号はすべて共通で1としています。これは設定をわかりやすくするためで、プロセス番号は一致していなくても問題ありません。

OSPFの確認コマンド

OSPFの動作を確認するための主な確認コマンドを表にまとめています。

確認コマンド概要
#show running-config | section router ospfrunning-configのOSPFのセクションのみを表示します。
#show ip protocolsルーティングプロトコルの全般的な情報を表示します。
#show ip ospfOSPFの全般的な情報を表示します。
#show ip ospf interface [brief]OSPFが有効なインタフェースの情報を表示します。
#show ip ospf neighborOSPFネイバーを表示します。
#show ip ospf databaseLSDBの概要を表示します。
#show ip route ospfルーティングテーブルのOSPFルートを表示します。
#debug ip ospf helloHelloパケットのやり取りを表示します。
#debug ip ospf adjLSDB同期の処理を表示します。
表 OSPFの主な確認コマンド

show running-config | section router ospf

show running-config | section router ospfコマンドでrunning-configのOSPFのセクションのみを表示できます。OSPFについての設定コマンドが正しく入力されているかを効率よく確認できます。ただ、これではOSPFの設定が入っているかどうかしかわかりません。他のルータとの相互作用が正しくできているかを確認するためには、さらに以降のさまざまなshowコマンドも必要です。

show running-config | section router ospf サンプル

R1#show running-config | section router ospf
router ospf 1
 log-adjacency-changes
 network 192.168.12.0 0.0.0.255 area 0
 network 192.168.13.1 0.0.0.0 area 1

show ip protocols

show ip protocolsコマンドはOSPFに限らずルーティングプロトコルの全般的な情報を表示します。OSPFに関しては、プロセス番号やルータID、networkコマンドの設定、コスト計算式の分子の値などを確認できます。また、後半の「Routing Information Sources」には、同一エリア内のOSPFルータのルータIDが表示されます。

show ip protocols サンプル

R1#show ip protocols
Routing Protocol is "ospf 1"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Router ID 192.168.13.1
  It is an area border router
  Number of areas in this router is 2. 2 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    192.168.12.0 0.0.0.255 area 0
    192.168.13.1 0.0.0.0 area 1
 Reference bandwidth unit is 100 mbps
  Routing Information Sources:
    Gateway         Distance      Last Update
    192.168.12.2         110      00:02:20
    192.168.13.3         110      00:02:20
  Distance: (default is 110)

show ip ospf

show ip ospfコマンドでOSPFの処理を行う際のさまざまなタイマの値などを確認できます。また、エリアごとのSPF計算の実行回数もわかります。

show ip ospf サンプル

R1#show ip ospf
 Routing Process "ospf 1" with ID 192.168.13.1
 Start time: 00:01:20.912, Time elapsed: 00:24:17.452
 Supports only single TOS(TOS0) routes
 Supports opaque LSA
 Supports Link-local Signaling (LLS)
 Supports area transit capability
 It is an area border router
 Router is not originating router-LSAs with maximum metric
 Initial SPF schedule delay 5000 msecs
 Minimum hold time between two consecutive SPFs 10000 msecs
 Maximum wait time between two consecutive SPFs 10000 msecs
 Incremental-SPF disabled
 Minimum LSA interval 5 secs
 Minimum LSA arrival 1000 msecs
 LSA group pacing timer 240 secs
 Interface flood pacing timer 33 msecs
 Retransmission pacing timer 66 msecs
 Number of external LSA 0. Checksum Sum 0x000000
 Number of opaque AS LSA 0. Checksum Sum 0x000000
 Number of DCbitless external and opaque AS LSA 0
 Number of DoNotAge external and opaque AS LSA 0
 Number of areas in this router is 2. 2 normal 0 stub 0 nssa
 Number of areas transit capable is 0
 External flood list length 0
    Area BACKBONE(0)
        Number of interfaces in this area is 1
        Area has no authentication
        SPF algorithm last executed 00:04:34.996 ago
        SPF algorithm executed 2 times
        Area ranges are
        Number of LSA 5. Checksum Sum 0x025DEE
        Number of opaque link LSA 0. Checksum Sum 0x000000
        Number of DCbitless LSA 0
        Number of indication LSA 0
        Number of DoNotAge LSA 0
        Flood list length 0
    Area 1
        Number of interfaces in this area is 1
        Area has no authentication
        SPF algorithm last executed 00:04:35.000 ago
        SPF algorithm executed 2 times
        Area ranges are
        Number of LSA 4. Checksum Sum 0x00A9B3
        Number of opaque link LSA 0. Checksum Sum 0x000000
        Number of DCbitless LSA 0
        Number of indication LSA 0
        Number of DoNotAge LSA 0
        Flood list length 0

show ip ospf interface

show ip ospf interfaceはOSPFが有効なインタフェースを表示します。briefをつけると、概要を一覧表示します。briefなしのときは、ネットワークタイプやコスト、Hello/DeadインターバルなどOSPFが有効になっているインタフェースの詳細がわかります。

show ip ospf interface サンプル

R1#show ip ospf interface brief
Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C
Et0/0        1     0               192.168.12.1/24    10    BDR   1/1
Se1/0        1     1               192.168.13.1/24    64    P2P   1/1
R1#show ip ospf interface
Ethernet0/0 is up, line protocol is up
  Internet Address 192.168.12.1/24, Area 0
  Process ID 1, Router ID 192.168.13.1, Network Type BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State BDR, Priority 1
  Designated Router (ID) 192.168.12.2, Interface address 192.168.12.2
  Backup Designated router (ID) 192.168.13.1, Interface address 192.168.12.1
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:09
  Supports Link-local Signaling (LLS)
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 3
  Last flood scan time is 0 msec, maximum is 4 msec
  Neighbor Count is 1, Adjacent neighbor count is 1
    Adjacent with neighbor 192.168.12.2  (Designated Router)
  Suppress hello for 0 neighbor(s)
Serial1/0 is up, line protocol is up
  Internet Address 192.168.13.1/24, Area 1
  Process ID 1, Router ID 192.168.13.1, Network Type POINT_TO_POINT, Cost: 64
  Transmit Delay is 1 sec, State POINT_TO_POINT
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:07
  Supports Link-local Signaling (LLS)
  Index 1/2, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 2
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 1, Adjacent neighbor count is 1
    Adjacent with neighbor 192.168.13.3
  Suppress hello for 0 neighbor(s)

show ip ospf neighbor

show ip ospf neighborコマンドでOSPFネイバーを表示します。OSPFはまずネイバーを確立しないといけません。OSPFの動作を確認するには、まず、show ip ospf neighborコマンドで正しくネイバーを確立できているかどうかが重要です。

show ip ospf neighbor サンプル

R1#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.12.2      1   FULL/DR         00:00:32    192.168.12.2    Ethernet0/0
192.168.13.3      0   FULL/  -        00:00:31    192.168.13.3    Serial1/0

Stateの部分が「FULL/  -」となっているのは、ポイントツーポイントインタフェースであるためDRの選出が必要ないことを表しています。

show ip ospf database

OSPF LSDBを表示するためにshow ip ospf databaseコマンドを利用します。show ip ospf databaseコマンドは、LSDBに含まれるLSAを一覧表示します。ABRはエリアごとにLSDBを保持します。

show ip ospf database サンプル

R1#show ip ospf database

            OSPF Router with ID (192.168.13.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
192.168.12.2    192.168.12.2    677         0x80000003 0x00289C 2
192.168.13.1    192.168.13.1    667         0x80000005 0x00B691 1

                Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.12.2    192.168.12.2    677         0x80000001 0x00DB80

                Summary Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.3.0     192.168.13.1    671         0x80000001 0x0030DE
192.168.13.0    192.168.13.1    671         0x80000001 0x005DB1

                Router Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum Link count
192.168.13.1    192.168.13.1    667         0x80000005 0x001C2D 2
192.168.13.3    192.168.13.3    1789        0x80000001 0x0012B1 3

                Summary Net Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.2.0     192.168.13.1    673         0x80000001 0x001D29
192.168.12.0    192.168.13.1    673         0x80000001 0x004AFB

LSDB内の各LSAの詳細を確認するには、show ip ospf dabaseコマンドにさらにオプションを追加します。

コマンド表示する詳細なLSAのタイプ
#show ip ospf database routerLSAタイプ1 ルータLSA
#show ip ospf database networkLSAタイプ2 ネットワークLSA
#show ip ospf database summaryLSAタイプ3 ネットワークサマリーLSA
#show ip ospf database asbr-summaryLSAタイプ4 ASBRサマリーLSA
#show ip ospf database externalLSAタイプ4 AS外部LSA
#show ip ospf database nssa-externalLSAタイプ7 NSSA外部LSA
表 LSDBの詳細なLSAの表示

show ip route ospf

show ip route ospf コマンドでルーティングテーブルのOSPFルートのみを表示します。

show ip route ospf サンプル

R1#show ip route ospf
O    192.168.2.0/24 [110/20] via 192.168.12.2, 00:12:23, Ethernet0/0
O    192.168.3.0/24 [110/74] via 192.168.13.3, 00:12:23, Serial1/0

OSPFルートのコードには、以下の表のようにいくつかの種類があります。

コードOSPFルート種類
Oエリア内のOSPFルート
O IA他のエリアのOSPFルート
O E1非OSPFドメインのルート(メトリックタイプ1)
O E2非OSPFドメインのルート(メトリックタイプ2)
表 OSPFルートのコード

debug ip ospf hello

debug ip ospf helloでOSPF Helloパケットのやり取りをリアルタイムにコンソールに表示します。

debug ip ospf hello サンプル

R1#debug ip ospf hello
OSPF hello events debugging is on
R1#
*Mar  1 00:36:29.707: OSPF: Rcv hello from 192.168.13.3 area 1 from Serial1/0 192.168.13.3
*Mar  1 00:36:29.707: OSPF: End of hello processing
*Mar  1 00:36:30.223: OSPF: Send hello to 224.0.0.5 area 0 on Ethernet0/0 from 192.168.12.1
*Mar  1 00:36:30.223: OSPF: Send hello to 224.0.0.5 area 1 on Serial1/0 from 192.168.13.1
*Mar  1 00:36:30.611: OSPF: Rcv hello from 192.168.12.2 area 0 from Ethernet0/0 192.168.12.2
*Mar  1 00:36:30.611: OSPF: End of hello processing
R1#undebug all
All possible debugging has been turned off

debug ip ospf adj

debug ip ospf adjでOSPF LSDB同期の処理をリアルタイムにコンソールに表示します。

debug ip ospf adj サンプル

R1#debug ip ospf adj
OSPF adjacency events debugging is on
R1#clear ip ospf process
Reset ALL OSPF processes? [no]: y
R1#
*Mar  1 00:37:43.267: OSPF: Interface Ethernet0/0 going Down
*Mar  1 00:37:43.267: OSPF: 192.168.13.1 address 192.168.12.1 on Ethernet0/0 is dead, state DOWN
*Mar  1 00:37:43.267: OSPF: Neighbor change Event on interface Ethernet0/0
*Mar  1 00:37:43.267: OSPF: DR/BDR election on Ethernet0/0
*Mar  1 00:37:43.267: OSPF: Elect BDR 0.0.0.0
*Mar  1 00:37:43.267: OSPF: Elect DR 192.168.12.2
*Mar  1 00:37:43.267: OSPF: Elect BDR 0.0.0.0
*Mar  1 00:37:43.267: OSPF: Elect DR 192.168.12.2
*Mar  1 00:37:43.267:        DR: 192.168.12.2 (Id)   BDR: none
*Mar  1 00:37:43.267: OSPF: 192.168.12.2 address 192.168.12.2 on Ethernet0/0 is dead, state DOWN
*Mar  1 00:37:43.267: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.12.2 on Ethernet0/0 from FULL to DOWN, Neighbor Down: Interface down or detached
~省略~

まず見るのは、show ip ospf neighbor

OSPFに関するshowコマンドにはたくさんの種類があります。この中でまず見るべきは、show ip ospf neighborコマンドです。ネイバーがいないと話になりません。そのため、show ip ospf neighborコマンドでネイバーを正常に確立できているかどうかを最初に確認するとよいでしょう。

ネイバーが正常に確立できていないときは、OSPFの設定が間違っているかインタフェースの障害などが考えられます。OSPFの設定が間違っていないかはshow ip ospf interfaceコマンドで意図したとおりにインタフェースでOSPFが有効になっているかを確認するとよいでしょう。

ネイバーが正常に確立できていれば、よっぽど特殊な設定をしていない限り、問題なくOSPFルートがルーティングテーブルに登録されているはずです。show ip route ospfコマンドでOSPFルートを確認しましょう。

OSPFの仕組み