OSPF【OSPFの設定】


CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

前回投稿記事

こちらの「OSPF【OSPFの概要】」投稿記事の続きです。

2.OSPFの設定と確認

2-1.OSPFの設定

■2-1-1.ワイルドカードマスク

OSPFでは、動作を有効にしたいインターフェイスを指定する際に ワイルドカードマスクという
ものを使用します。ワイルドカードマスクは、直前に指定されたセットとなっているIPアドレスの
どこまでを比較の対象とするのかを指定する為に使用されます。
直前に指定されたIPアドレスのうち、条件とする部分を 0、任意の値で良い部分を 1
指定します。

具体的に確認してみましょう。

例えば「172.16.1.0/24」のネットワークに属するインターフェイスでOSPFの動作を有効に
したい場合、172.16.1.0/24のネットワーク内に属するIPアドレスは、172.16.1.0〜172.16.1.255
ですので、最初の3オクテットの 172.16.1が条件とする部分で、最後の1オクテットは任意である
IPアドレスとなります。
ワイルドカードマスクは、IPアドレスのうち、条件とする部分を 0、任意の値で良い部分を 1とする為、
ワイルドカードマスクは、「0.0.0.255」となります。よって、IPアドレスとワイルドカードマスクは、「172.16.1.0 0.0.0.255」と指定します。


■2-1-2.OSPFの有効化

ダイナミックルーティングを行うには、ルータでOSPFを有効化する必要があります。
OSPFを有効化するには、グローバルコンフィギューレションモードで 次のrouter ospfコマンド
を実行します。

(config)# router ospf <プロセスID>

OSPFは1台のルータで、複数のOSPFプロセスを起動することができます。
その際に他のプロセス区別する為にプロセスIDを指定する必要があります。
プロセスIDは、1 ~ 65,535の値を指定可能です。

このプロセスIDはローカルルータのみで使用する値であるため、ネイバールータとプロセスIDを
一致させる必要はなく、範囲内のいずれかの値を指定しておけば問題ありませんが、
分かりやすい設計/管理という観点でネイバールータとプロセスIDは同じの方が望ましいです。

コマンドを実行するとルータコンフィギューレションモードに移行し、
プロンプトが「(config-router)#」となります。


■2-1-3.インターフェイスの指定

インターフェイスでOSPFを有効にするには、ルータコンフィギューレションモード
次の networkコマンドを実行します。

(config-router)# network < IPアドレス > < ワイルドカードマスク > area < エリアID >

<エリアID>には、有効にするインターフェイスが所属するエリア番号を指定します。

インターフェイスでOSPFを有効にすると、Helloパケットを送信し始めます。また、
そのインターフェイスに関する LSAを通知します。


また、IOSのバージョンによっては、インターフェイスコンフィギューレションモード
次の ip ospf areaコマンドを実行する事で有効にする事も出来ます。

(config-if)# ip ospf < プロセスID > area < エリアID >

このコマンドではインターフェイス事にOSPFを有効にする事が出来ます。
<プロセスID>は、どのプロセスを起動させるかを指定します。

※ IPアドレスを「0.0.0.0」、ワイルドカードマスクを「255.255.255.255」にすると
IPアドレスとしてどのような値でもかまわないという意味になり、全てのインターフェイスで、
OSPFが有効になります。


■2-1-4.パッシブインターフェイスの設定

パッシブインターフェイスの設定をする事で、OSPFを動作させる必要があるものの
Helloパケットがを送信する必要がないインターフェイスから、Helloパケットが送信されなく
なります。

パッシブインターフェイスの設定するには、ルータコンフィギューレションモードで、
次の passive-interfaceコマンドを実行します。

(config-router)# passive-interface < インターフェイス >


■2-1-5.ルータIDの指定

OSPFでは、各ルータを識別する為にルータIDが必要になります。
ルータIDは設定しなくても、IPアドレスが設定されていればそこから自動で設定します。
しかし、手動で設定したい場合は、ルータコンフィギューレションモードで、
次の router-idコマンドを実行します。

(config-router)# router-id < ルータID >

<ルータID>には、32ビットの値をIPアドレスと同じ形式で指定します。

また、手動で設定していない場合は、ループバックインターフェイス、物理インターフェイスの順で、
IPアドレスから設定されます。
ループバックインターフェイスの作成は、グローバルコンフィギューレションモードで、
次の interface Loopbackコマンドを実行します。

(config)# interface Loopback <番号>

<番号>には、0 ~ 2,147,483,647の値を指定します。作成したインターフェイスには、
IPアドレスを設定します。

またルータID設定した後、再度設定変更するには、
router-idコマンドで再設定した後、再起動する必要があります。
再起動のコマンドは、特権EXCEモードで、次の clear ip ospf processコマンド
実行します。

# clear ip ospf process


■2-1-5.OSPFの設定の流れ
(config)# interface Loopback 0                           // ループバックインターフェイスの作成
(config-if)# ip address 10.10.10.1 255.255.255.255       // IPアドレスの設定
(config-if)# exit
(config)# router ospf 10
(config-router)# network 192.168.100.0 0.0.0.255 area 0  //インターフェイスでOSPFの有効化
(config-router)# network 172.16.10.1 0.0.0.0 area 0      //インターフェイスでOSPFの有効化

※ ワイルドカードマスクを、「0.0.0.0」に指定すると全てのビットを条件とする為、
IPアドレスそのものを指定します。


2-2.OSPFの設定の確認

■2-2-1.ネイバーの確認

OSPFでは、ネイバーとして隣のルータを認識しないとLSDBの同期を始めません。
なので、まずネイバーテーブルの確認をします。ネイバーテーブルを確認するには、
特権EXCEモードで、次の show ip ospf neighborコマンドを実行します。

# show ip ospf neighbor



show ip ospf neighborコマンドの実行結果を確認していきます。

項目 説明
①Neighbor ID 認識しているネイバーのルータID
②Pri ネイバーのルータプライオリティ
③State 隣接関係を表す。「FULL」または「2Way」と表示。 / の後ろはDR、BDR、DROTHERかそれ以外(-)が表示される
④Dead Time 後何秒間、Helloパケットが到達しなかったらネイバーダウンとみなすかを表す
⑤Address ネイバーのIPアドレス
⑥Interface 隣接関係を結んだインターフェイス



show ip ospf neighborコマンドでネイバーテーブルを確認出来ますが、自身のルータ情報ではなく、
隣接するネイバーのルータの情報である事に注意。


■2-2-2.LSDBの要約情報の確認

LSDBの要約情報であるトポロジテーブルを確認します。
特権EXCEモードで、次の show ip ospf databaseコマンドを実行します。

# show ip ospf database



詳細は、CCNA試験の範囲外なので割愛します。

※興味がある方はOSPFデータベースの概要と読解という記事参照して見て下さい


■2-2-3.ルーティングテーブルの確認

OSPFでルートを学習出来ているかどうかの確認をするには、
特権EXCEモードで、次の show ip routeコマンドを実行します。

# show ip route

show ip routeコマンドの実行結果を確認していきます。

項目 説明                                   
ルートの情報源。「O」であることからOSPFにより宛先ルート
宛先ネットワーク。
アドミニストレーティブディスタンス。OSPFの場合はAD値が「110」。
OSPFの場合、メトリック値はコスト
ネクストホップアドレス。
宛先ルートを受信してから経過時間。
宛先ネットワークに転送するための出力インターフェース。


■2-2-4.OSPFのプロトコルの確認

OSPFのプロトコルの確認をするには、
特権EXCEモードで、次の show ip protocolsコマンドを実行します。

# show ip protocols

show ip protocolsコマンドの実行結果を確認していきます。

項目 説明
①Routing Protocol 通信プロトコル
②Router ID ルータID
③Number of area このルータの所属するエリアは1つで標準エリアに接続していることを表示。スタブエリア、NSSAエリアには所属なし。
④Maximum path 等コストロードバランシングの数
⑤Routing for Networks 定義したnetworkコマンドの情報を表示
⑥Reference コスト計算式の分子の値
⑦Routing Information Sources エリア内でLSAを交換しているルータの情報を表示
⑧Distance アドミニストレーティブディスタンス値


■2-2-5.インターフェイスの確認

OSPFが動作しているインターフェイスの情報を確認するには、
特権EXCEモードで、次の show ip ospf interfaceコマンドを実行します。

# show ip ospf interface  [<インターフェイス>]

インターフェースの所属エリア、ネットワークタイプ、コスト値、Hello/Deadタイマー間隔を確認できます。
例えば、Fa 1 のOSPFの動作状況を確認したい場合は、下記のように入力します。

# show ip ospf interface FastEthernet 1



show ip ospf interfaceコマンドの実行結果を確認していきます。

項目 説明
このインターフェースのIPアドレスと、インターフェースの所属エリア ※1
このルータのOSPFプロセスID、ルータID、このインターフェースのネットワークタイプとコスト値 ※2
このインターフェースのプライオリティ値及びDR/BDR/DROTHERなのかを示す
このインターフェースのセグメント上のDRのルータIDとIPアドレス
このインターフェースのセグメント上のBDRのルータIDとIPアドレス
このインターフェースのHelloタイマー、Deadタイマー、Waitタイマー、Retransmitタイマー ※3
このインターフェースのセグメントにおけるネイバー関係の数、アジャセンシ―関係の数
アジャセンシー関係が確立されたネイバールータのルータIDと、ネイバールータがDRであることの情報

※1 エリアIDやサブネットマスクが対抗ルータと異なっているとネイバーにはなりません
※2 ネットワークタイプが「ブロードキャストマルチアクセス」の場合、「BROADCAST」と表示さ、
 ネットワークタイプが「ポイントツーポイント」の場合、「POINT_TO_POINT 」と表示される。
※3 これらの値が隣接ルータとずれていると隣接関係が築けません


2-3.OSPF関連のパラメータの調整

■2-3-1.ルータプライオリティ

マルチアクセス環境では、DRとBDRを選択します。その際に比較されるのが、
ルータプライオリティとルータIDです。

● ルータプライオリティの変更
ルータプライオリティを設定するには、インターフェイスコンフィギューレションモードで、
次の ip ospf priorityコマンドを実行します。

(config-if)#ip ospf priority <ルータプライオリティ値>

<ルータプライオリティ値>のデフォルト値は 1です。変更したい場合は、0 ~ 255の値を
指定します。0を設定すると、DR及びBDRに選出されなくなります。

ルータプライオリティを変更する事で、意図するルータにDRの役割を持たせる事が出来ます。

● ルータプライオリティの変更の注意点
例えば、既にDRに選定されているルータがあり、ip ospf priorityコマンドを使用して、
ルータプライオリティ値を設定して新たに別のルータをDRを選定しようとした場合、
DRの変更されない可能性があります。

理由は、既にDRとして選定されているルータが稼動している為です。
DRが頻繁に変更されるとそのたびにマルチアクセスネットワーク上の他のルータとアジャセンシーを
確立しなおさなければいけないので、なるべくDRは変更されないように動作
しているからです。
なので、プライオリティの高いルータが新たに追加されたとしても、DRは変更されません。

そこで、既にDRとして選定されているルータのプライオリティをip ospf priorityコマンドを使用して、
0に変更してしましょう。0を設定すると、DR及びBDRに選出されなくなります。
そうすれば、DRではなくなり、プライオリティの高いルータが新たにDRに選定されます。

また、OSPFのプロセスを再始動して、OSPFの動作を初めからやり直すというやり方もあります。
OSPFのプロセスを再始動するには、特権EXCEモードで、次の clear ip ospf processコマンド
実行します。

# clear ip ospf process

プロセスを再始動すると、隣接するルータとネイバーの関係を一度解消し、
OSPFの動作を初めからやり直す事が出来ます。


■2-3-2.OSPFのコスト

インターフェイスのコスト値を変更する事で、最適ルートを任意に変更する事が出来ます。
インターフェイスのコスト値を変更するには、インターフェイスコンフィギューレションモードで、
次の ip ospf costコマンドを実行します。

(config-if) #ip ospf cost <コスト値>

<コスト値>は、 1 ~ 65535 の範囲で指定する。

例えば、interface GigabitEthernet 0/1 にコスト値を 「10」 とする設定例は以下。

(config) # interface GigabitEthernet 0/1
(config-if) # ip ospf cost 10


■2-3-3.帯域幅

コスト計算で使用する帯域幅を変更する事でもルートを変更する事が出来ます。

インターフェイスの帯域幅を変更するには、インターフェイスコンフィギューレションモードで、
次の bandwidthコマンドを実行します。

(config-if) #bandwidth <帯域幅>

<帯域幅>は、kbps単位で指定します。

コスト値と帯域幅の変更を同時に行った場合、コスト値の変更で設定した値が優先されます。
その為、帯域幅でコスト値を変更する場合は、コスト値を変更するコマンドを先に実行しておく
必要があります。

bandwidthコマンドで帯域を変更する事で、コスト値を変更することも可能ですが、
このようなマイナー手法での設定変更は一般的に行いません。


■2-3-4.Hellowインターバルの変更

OSPFは、Helloパケットによってネイバーを検出します。
Helloパケットを定期的に送信していて、ネイバーからのHelloパケットを受信出来ていれば、
そのネイバーが正常に動作していると判断します。

Helloパケットを送信する間隔をHelloインターバルと呼び、ネイバーがダウンしたとみなす時間が、
Deadインターバルです。これらの間隔はインターフェイス事に設定出来ます。

Helloインターバルを変更するには、インターフェイスコンフィギューレションモードで、
次の ip ospf hello-intervalコマンドを実行します。

(config-if) #ip ospf hello-interval <秒数>

Helloインターバルを変更すると、Deadインターバルは自動でその4倍の時間に設定されます。

● 下記が設定例

(config) #interface FastEthernet 0/0
(config-if) #ip ospf hello-interval 10

Helloインターバルを 10と設定したので、自動的にDeadインターバルは 40と設定される


Deadインターバルのみを変更するには、インターフェイスコンフィギューレションモードで、
次の ip ospf dead-intervalコマンドを実行します。

(config-if) #ip ospf dead-interval <秒数>



隣接するルータと、Helloインターバル、Deadインターバルが一致していないとネイバーとして認識
されない為、実行する際には注意が必要です。


■2-3-5.MTUのミスマッチ検出機能の無効化

MTUのサイズが異なると、完全な隣接環境を築く事が出来ません。
その為、MTUを合わせるか、またはMTUの不一致を検出する機能を無効にする必要が、
あります。

MTUの不一致を検出する機能を無効にするには、インターフェイスコンフィギューレションモードで、
次の ip ospf mtu-ignoreコマンドを実行します。

(config-if) #ip ospf mtu-ignore


■2-3-6.デフォルトルートの配布

● デフォルトルートの配布の設定

1台のルータにデフォルトルートの設定を行い、OSPFで他のルータに配布すると
いった方法を使う事があります。

デフォルトルートを他のルータに配布するには、ルータコンフィギューレションモードで、
次の default-information originateコマンドを実行します。

(config-router) #default-information originate [always]

alwaysのオプションを付けると、ルータにデフォルトルートの設定がされていなくても
デフォルトルートを他のルータに配布する事が出来ます。
つまり、デフォルトルートの設定を行う ip routeコマンドを行わなくても、デフォルトルートを
他のルータに配布するという事。

● デフォルトルートの配布の設定例

設定例1

RouterA(config) #ip route 0.0.0.0.0.0.0.0 FastEthernet 0/1
RouterA(config) #router ospf 10
RouterA(config-router) #network 192.168.1.0. 0.0.0.255 area 0
RouterA(config-router) #default-information originate

設定例2(alwaysのオプションを付けた場合)

RouterA(config)# router ospf 1
RouterA(config-router) #network 192.168.1.0. 0.0.0.255 area 0
RouterA(config-router)#default-information originate always

● 補足
ルーティングテーブルで確認した際、ルートの情報源が、「O*E2」と表示されます。
「*」は、デフォルトルートを表し、「E2」は、OSPF以外で設定されたルートがOSPFで構成
されているネットワーク内で伝えられた事
を表します。このようなルートを外部ルートといいます。


参考記事

OSPF DR/BDRという記事参照
OSPF - sh ip ospf neighbor / sh ip ospf database / sh ip routeという記事参照