ルータ ID とは、OSPF を起動しているルータ (OSPF ルータ) を一意に識別するための ID で、OSPF ルータの名前に相当し、ネットワーク内の OSPF ルータはルータ ID によって各ルータを識別します。ルータ ID が変更になると、他のルータとネイバー関係から再構築する必要があるので、通常ルータ ID は変更しないように設定します。
ルータ ID は OSPF プロセス起動時に決定し、ルータ ID を決定する時の優先順位は以下の通りです。
1) router-id コマンドで設定されたIPアドレス
2) shutdown させていないループバックインターフェイスに設定された最も大きいIPアドレス
3) shutdown させていない物理または論理インターフェイスに設定された最も大きいIPアドレス
ここでいう「shutdown させていない」とは、インターフェイスで no shut をしていることを指し、インターフェイスの物理層やデータリンク層が up していなくてもかまいません。例えば、シリアルインターフェイスでは対向ルータが shutdown していても OK ということです。
テキストなどで、「インターフェイスは up/up でなければならない」と書いているものもありますが、実機で確認すると、インターフェイス上のリンクの状態が down/down でも no shut さえ行われていたらルータ ID に採用されました。
また、「リンクが down するとルータ ID が変わるので、OSPF を安定させるためにループバックインターフェイスにIPアドレスを設定するか、router-id コマンドで設定する」とか、書かれているものもありますが、実機で確認すると、一度決定したルータ ID は、ルータ ID として採用されたIPアドレスが設定されているインターフェイスが down しても、そのインターフェイスで shutdown コマンドを実行しても、変わりませんでした。
ルータ ID を再選出させるには、以下のいずれかを行う必要があります。
1) ルータを再起動 (reload) させる
2) OSPF を無効 (no router ospf <プロセス番号> コマンドを実行) して再度 OSPF を有効にする
ただし、router-id コマンドを実行した時だけは、clear ip ospf process コマンドによりルータ ID を変更することが可能です。router-id コマンドまたは no router-id コマンドを実行し、clear ip ospf process コマンドを実行した時も、ルータ ID の再選出が行われます。
[ 注意 ]
まだ、SW-A と RT-B の電源は入れないでください。
- RT-A に以下の設定をしなさい。
< RT-A >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-A
RT-A(config)# int f0/0
RT-A(config-if)# ip add 10.0.0.1 255.255.255.0
RT-A(config-if)# no shut
RT-A(config-if)# router ospf 1
RT-A(config-router)# net 10.0.0.0 0.0.0.255 area 0
RT-A(config-router)# ^Z
RT-A#
- RT-A で sh ip protocols コマンドを実行しなさい。
< RT-A >
RT-A# sh ip protocols
*** IP Routing is NSF aware ***
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 10.0.0.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
10.0.0.0 0.0.0.255 area 0
Routing Information Sources:
Gateway Distance Last Update
Distance: (default is 110)
RT-A#
ルータ ID は、F0/0 のIPアドレスである 10.0.0.1 です。
- RT-A の F0/1 に 10.0.1.1/24 を設定し、no shut を実行しなさい。
< RT-A >
RT-A# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-A(config)# int f0/1
RT-A(config-if)# ip add 10.0.1.1 255.255.255.0
RT-A(config-if)# no shut
RT-A(config-if)# ^Z
RT-A#
F0/0 のIPアドレス 10.0.0.1 より大きい値の 10.0.1.1 を F0/1 に設定しました。
- sh ip protocols コマンドで、OSPF ルータ ID を調べなさい。
< RT-A >
RT-A# sh ip protocols | include Router ID
Router ID 10.0.0.1
RT-A#
ルータ ID は変わっていません。
- clear ip ospf process コマンドを実行後、sh ip protocols コマンドを実行しなさい。
< RT-A >
RT-A# clear ip ospf process
Reset ALL OSPF processes? [no]: y
RT-A# sh ip protocols | include Router ID
Router ID 10.0.0.1
RT-A#
clear ip ospf process は、OSPF プロセスを初期化するコマンドです。
このコマンドを実行してもルータ ID は変わりません。
- 設定を保存し、RT-A を再起動させなさい。
< RT-A >
RT-A# copy run start
Destination filename [startup-config]? < Enter >
Building configuration...
[OK]
RT-A# reload
Proceed with reload? [confirm] < Enter >
- 起動後、sh ip protocols コマンドで、OSPF ルータ ID を調べなさい。
< RT-A >
RT-A# sh ip protocols | include Router ID
Router ID 10.0.1.1
RT-A#
ルータ ID が、F0/1 に設定したIPアドレス 10.0.1.1 に変わりました。
物理インターフェイスに設定したIPアドレスの場合、clear ip ospf process コマンドではルータ ID は変わらず、ルータを再起動 (もしくは、OSPF の無効 → 有効を行う) させる必要があります。
- RT-A にループバックインターフェイス (Lo0) を作り、IPアドレス 9.0.0.1/32 を設定しなさい。
< RT-A >
RT-A# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-A(config)# int lo0
RT-A(config-if)# ip add 9.0.0.1 255.255.255.255
RT-A(config-if)# ^Z
RT-A#
物理インターフェイスに設定しているIPアドレスよりも小さい値を Lo0 に設定しました。
ループバックインターフェイスは no shut を行う必要がありません。
- sh ip protocols コマンドで、OSPF ルータ ID を調べなさい。
< RT-A >
RT-A# sh ip protocols | include Router ID
Router ID 10.0.1.1
RT-A#
ルータ ID は変わりません。
- clear ip ospf process コマンドを実行後、sh ip protocols コマンドを実行しなさい。
< RT-A >
RT-A# clear ip ospf process
Reset ALL OSPF processes? [no]: y
RT-A# sh ip protocols | include Router ID
Router ID 10.0.1.1
RT-A#
clear ip ospf process コマンドを実行してもルータ ID は変わりません。
- 設定を保存し、RT-A を再起動させなさい。
< RT-A >
RT-A# copy run start
Destination filename [startup-config]? < Enter >
Building configuration...
[OK]
RT-A# reload
Proceed with reload? [confirm] < Enter >
- 起動後、sh ip protocols コマンドで、OSPF ルータ ID を調べなさい。
< RT-A >
RT-A# sh ip protocols | include Router ID
Router ID 9.0.0.1
RT-A#
ルータ ID が、Lo0 に設定したIPアドレス 9.0.0.1 に変わりました。値が小さくても、物理インターフェイスに設定したIPアドレスより、ループバックインターフェイスに設定したIPアドレスの方が優先されます。
ループバックインターフェイスに設定したIPアドレスの場合も、clear ip ospf process コマンドではルータ ID は変わらず、ルータを再起動 (もしくは、OSPF の無効 → 有効を行う) させる必要があります。
- RT-A に router-id コマンドで 1.1.1.1 を設定しなさい。
< RT-A >
RT-A# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-A(config)# router ospf 1
RT-A(config-router)# router-id 1.1.1.1
RT-A(config-router)# ^Z
RT-A#
- sh ip protocols コマンドで、OSPF ルータ ID を調べなさい。
< RT-A >
RT-A# sh ip protocols | include Router ID
Router ID 1.1.1.1
RT-A#
router-id コマンドによる設定が最も優先されます。
今回は RT-A でしか OSPF プロセスを実行していないため、ネイバー関係にある OSPF ルータがネットワーク内にありません。そのため、router-id コマンドでの設定が、すぐにルータ ID に反映されましたが、通常は clear ip ospf process コマンドを実行するか、ルータを再起動 (もしくは、OSPF の無効 → 有効を行う) させなければ反映されません。
ここで、SW-A と RT-B の電源を入れます。
- RT-B に以下の設定をしなさい。
< RT-B >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-B
RT-B(config)# int f0/0
RT-B(config-if)# ip add 10.0.0.2 255.255.255.0
RT-B(config-if)# no shut
RT-B(config-if)# router ospf 1
RT-B(config-router)# net 10.0.0.0 0.0.0.255 area 0
RT-B(config-router)# ^Z
RT-B#
- RT-B のルータ ID を、sh ip protocols コマンドで調べなさい。
< RT-B >
RT-B# sh ip protocols | include Router ID
Router ID 10.0.0.2
RT-B#
ルータ ID は、F0/0 のIPアドレスである 10.0.0.2 です。
- RT-A で no router-id コマンドを実行しなさい。
< RT-A >
RT-A# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-A(config)# router ospf 1
RT-A(config-router)# no router-id
% OSPF: Reload or use "clear ip ospf process" command, for this to take effect
RT-A(config-router)#
no router-id コマンドを反映させるには、clear ip ospf process コマンドを実行するか、ルータを再起動 (もしくは、OSPF の無効 → 有効を行う) する必要があります。
- RT-A のルータ ID を、sh ip protocols コマンドで調べなさい。
< RT-A >
RT-A(config-router)# do sh ip protocols | include Router ID
Router ID 1.1.1.1
RT-A(config-router)#
ルータ ID は変わっていません。
- RT-A で、clear ip ospf process コマンドを実行後、sh ip protocols コマンドを実行しなさい。
< RT-A >
RT-A(config-router)# do clear ip ospf process
Reset ALL OSPF processes? [no]: y
RT-A(config-router)# do sh ip protocols | include Router ID
Router ID 9.0.0.1
RT-A(config-router)#
ルータ ID が Lo0 に設定したIPアドレスになりました。
- 再度、RT-A に router-id コマンドで 1.1.1.1 を設定し、また、Lo0 を削除しなさい。
< RT-A >
RT-A(config-router)# no int lo0
RT-A(config)# router ospf 1
RT-A(config-router)# router-id 1.1.1.1
% OSPF: Reload or use "clear ip ospf process" command, for this to take effect
RT-A(config-router)#
前回 router-id コマンドで設定した時と異なり、今度は clear ip ospf process コマンドの実行か、ルータの再起動 (もしくは、OSPF の無効 → 有効を行う) が必要です。
- RT-A のルータ ID を、sh ip protocols コマンドで調べなさい。
< RT-A >
RT-A(config-router)# do sh ip protocols | include Router ID
Router ID 9.0.0.1
RT-A(config-router)#
ルータ ID は変わっていません。Lo0 は削除したのでありませんが、まだ Lo0 に設定したIPアドレスをルータ ID に使用しています。
- RT-A で、clear ip ospf process コマンドを実行後、sh ip protocols コマンドでルータ ID を調べなさい。
< RT-A >
RT-A(config-router)# do clear ip ospf process
Reset ALL OSPF processes? [no]: y
RT-A(config-router)# do sh ip protocols | include Router ID
Router ID 1.1.1.1
RT-A(config-router)#
ルータ ID が、router-id コマンドで設定した値になりました。
- RT-A で no router-id コマンドを実行しなさい。
< RT-A >
RT-A(config-router)# no router-id
% OSPF: Reload or use "clear ip ospf process" command, for this to take effect
RT-A(config-router)#
- RT-A で、clear ip ospf process コマンドを実行後、sh ip protocols コマンドでルータ ID を調べなさい。
< RT-A >
RT-A(config-router)# do clear ip ospf process
Reset ALL OSPF processes? [no]: y
RT-A(config-router)# do sh ip protocols | include Router ID
Router ID 10.0.1.1
RT-A(config-router)#
Lo0 は削除しているので、ルータ ID は F0/1 に設定したIPアドレス 10.0.1.1 になります。