Cisco IOS XE OSPF設定方法
Cisco IOS XE でOSPFを有効にするコマンドです。router ospfコンフィグレーションモードで、networkコマンドに一致したインタフェースがそのエリアでOSPFを動かします。OSPFの仕組み(隣接関係、LSDB、SPF計算)はOSPFとはを参照してください。
router ospf [プロセス番号]
router-id [ルータID]
network [アドレス] [ワイルドカードマスク] area [エリアID]| 入力箇所 | 入力内容 |
|---|---|
| [プロセス番号] | OSPFプロセスの番号(1〜65535)。装置内でプロセスを区別するだけの値で、隣接するルータと一致させる必要はない |
| [ルータID] | IPv4アドレス形式の32ビット値(例: 1.1.1.1)。省略すると自動で決まるが、明示的に設定することを推奨(OSPF ルータID) |
| [アドレス] | OSPFを動かすインタフェースのアドレス範囲 |
| [ワイルドカードマスク] | 0が一致、1が任意を表すマスク(/24なら0.0.0.255)。1つのインタフェースだけを指定するなら0.0.0.0 |
| [エリアID] | 0のような10進数か、0.0.0.0のようなドット付き10進表記 |
networkはインタフェースに設定されたIPアドレスと照合するコマンドです。一致したインタフェースでOSPFが有効になり、そのインタフェースのネットワークが指定したエリアの経路として広告されます。
インタフェース配下での有効化
networkを使わず、インタフェースコンフィグレーションモードで直接エリアを指定することもできます。どのインタフェースがどのエリアに属するかがインタフェースの設定を見るだけで分かるため、アドレスの範囲が複雑な構成ではこちらが読みやすくなります。
interface [インタフェース名]
ip ospf [プロセス番号] area [エリアID]同じインタフェースにnetworkとip ospf ... areaの両方が該当する場合は、インタフェース配下のip ospf ... areaが優先されます。
パッシブインタフェース
Loopbackや端末を収容するセグメントのように、経路として広告はするがOSPFの相手がいないインタフェースにはpassive-interfaceを指定します。Helloの送信を止めるので隣接は張られませんが、そのインタフェースのネットワークはOSPFに広告されます。
router ospf [プロセス番号]
passive-interface [インタフェース名]全インタフェースを既定でパッシブにして、Helloを送るインタフェースだけを個別に戻すこともできます。OSPFを動かすインタフェースよりパッシブにしたいインタフェースのほうが多い構成で使います。
router ospf [プロセス番号]
passive-interface default
no passive-interface [インタフェース名]networkコマンドがなく、router ospf配下のareaにinterfaceを1つずつ列挙します。パッシブもrouter ospf直下ではなくarea / interface配下のpassive enableで指定します。設定の反映も、IOS XEが即時反映なのに対しIOS XRはcommitが必要です(IOS XR OSPF基本設定)。Cisco IOS XE OSPF確認コマンド
IOS XE のOSPFはshow ip ospf系のコマンドで確認します。プロセスが1つなら[プロセス番号]は省略できます。
| コマンド | 確認できること |
|---|---|
show ip ospf [プロセス番号] | プロセスの概要。ルータID、エリアの一覧、SPFの実行回数、各種タイマー |
show ip ospf neighbor | ネイバーの一覧。Neighbor ID、プライオリティ、状態(FULL/DRなど)、Dead time、対向アドレス、インタフェース |
show ip ospf neighbor detail | ネイバーの詳細。Optionsフィールド、DR/BDR、状態遷移の回数、隣接している時間 |
show ip ospf interface brief | OSPFを動かしているインタフェースの一覧。プロセス、エリア、コスト、状態、隣接数が1行ずつ |
show ip ospf interface [インタフェース名] | インタフェースの詳細。ネットワークタイプ、コスト、プライオリティ、DR/BDR、Hello/Deadタイマー、パッシブかどうか |
show ip ospf database | LSDBの一覧(LSAタイプごとの要約)。router / network / summary / externalなどを続けると各LSAの中身 |
show ip route ospf | ルーティングテーブルのうちOSPFで学んだ経路(O / O IA / O E2など) |
show ip protocols | 動作中のルーティングプロトコルの要約。OSPFのルータID、network文、パッシブインタフェースの一覧、情報元 |
show ip ospf statistics | SPFの実行回数と所要時間、実行のきっかけになったLSA |
show running-config | section router ospf | OSPFの設定全体 |
OSPFの状態をリセットする操作は次のとおりです。
| コマンド | 動作 |
|---|---|
clear ip ospf [プロセス番号] process | OSPFプロセスをリセットする(隣接とLSDBを消して作り直す)。Reset ALL OSPF processes? [no]:の確認が出る |
clear ip ospf [プロセス番号] counters | ネイバーごとの状態遷移カウンタをクリアする |
clear ip ospf [プロセス番号] redistribution | 再配布した経路を作り直す |
router-idを後から変更した場合、新しいルータIDはclear ip ospf processを実行するまで反映されません。
実機での検証
XE1〜XE3の3台をGigabitEthernetで直列に接続し、両端のXE1・XE3にホストを収容したシングルエリア構成でOSPFを設定しました。すべてのリンクがエリア0です。各ルータのLoopback0のアドレス(1.1.1.1〜3.3.3.3)をルータIDにしています。
Loopback0と、ホストを収容するXE1・XE3のGigabitEthernet2はパッシブインタフェースにしています。ホスト側にOSPFルータはいないため、Helloを送る必要がありません。
| ルータ | ルータID | OSPFを動かすインタフェース |
|---|---|---|
| XE1 | 1.1.1.1 | Loopback0(passive)、Gi1(10.1.2.1/24)、Gi2(10.1.10.1/24、passive) |
| XE2 | 2.2.2.2 | Loopback0(passive)、Gi1(10.1.2.2/24)、Gi2(10.2.3.2/24) |
| XE3 | 3.3.3.3 | Loopback0(passive)、Gi1(10.2.3.3/24)、Gi2(10.3.10.1/24、passive) |
ホストはUbuntu 26.04で、HOST1に10.1.10.10/24、HOST2に10.3.10.10/24を設定し、デフォルトゲートウェイを収容側のルータに向けています。装置はCatalyst 8000V(IOS XE 17.18.02)です。
OSPF設定
XE1にOSPFを設定します。IOS XEはendを入力した時点で設定が反映されます。Loopback0とホスト側のGigabitEthernet2はpassive-interfaceにしています。
XE1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
XE1(config)#router ospf 1
XE1(config-router)# router-id 1.1.1.1
XE1(config-router)# network 1.1.1.1 0.0.0.0 area 0
XE1(config-router)# network 10.1.2.0 0.0.0.255 area 0
XE1(config-router)# network 10.1.10.0 0.0.0.255 area 0
XE1(config-router)# passive-interface Loopback0
XE1(config-router)# passive-interface GigabitEthernet2
XE1(config-router)#end
XE1#show running-config | section router ospf
router ospf 1
router-id 1.1.1.1
passive-interface GigabitEthernet2
passive-interface Loopback0
network 1.1.1.1 0.0.0.0 area 0
network 10.1.2.0 0.0.0.255 area 0
network 10.1.10.0 0.0.0.255 area 0Loopback0はnetwork 1.1.1.1 0.0.0.0 area 0のようにワイルドカードマスクを0.0.0.0にして、そのアドレスだけを指定しています。show running-configでは入力した順番ではなく、passive-interfaceがnetworkより前にまとめて表示されます。
XE2・XE3にも同じ形で設定します。XE2はホストを収容していないため、パッシブにするのはLoopback0だけです。
(XE2)
router ospf 1
router-id 2.2.2.2
passive-interface Loopback0
network 2.2.2.2 0.0.0.0 area 0
network 10.1.2.0 0.0.0.255 area 0
network 10.2.3.0 0.0.0.255 area 0
(XE3)
router ospf 1
router-id 3.3.3.3
passive-interface GigabitEthernet2
passive-interface Loopback0
network 3.3.3.3 0.0.0.0 area 0
network 10.2.3.0 0.0.0.255 area 0
network 10.3.10.0 0.0.0.255 area 0設定の確認
show ip ospf neighborでネイバーを確認します。中継しているXE2は両隣と隣接しているため2行出ます。FULLはLSDBの同期が完了した状態です。
XE2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
3.3.3.3 1 FULL/DR 00:00:32 10.2.3.3 GigabitEthernet2
1.1.1.1 1 FULL/BDR 00:00:36 10.1.2.1 GigabitEthernet1Stateの/の後ろはそのセグメントでの役割です。イーサネットのネットワークタイプは既定でBROADCASTなので、2台だけのリンクでもDR/BDRが選ばれます。
show ip ospf interface briefで、OSPFが動いているインタフェースを一覧できます。Nbrs F/Cは隣接(Full)数と検出したネイバー数です。
XE1#show ip ospf interface brief
Interface PID Area IP Address/Mask Cost State Nbrs F/C
Lo0 1 0 1.1.1.1/32 1 LOOP 0/0
Gi2 1 0 10.1.10.1/24 1 DR 0/0
Gi1 1 0 10.1.2.1/24 1 BDR 1/1パッシブにしたGi2はNbrs F/Cが0/0です。ただし、StateはDRのまま。この一覧だけではパッシブかどうかは判別できません。Helloを送っていないので対向がおらず、自分がDRになっているだけです。
パッシブであることはshow ip ospf interfaceの詳細で確認します。
XE1#show ip ospf interface GigabitEthernet2
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.10.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 1.1.1.1, Interface address 10.1.10.1
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
No Hellos (Passive interface)
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/3/3, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 0, maximum is 0
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 0, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)通常はHelloの送信間隔が出る位置にNo Hellos (Passive interface)と表示され、Neighbor Count is 0になります。Attached via Network Statementは、このインタフェースがnetworkコマンドで有効になったことを示しています。インタフェース配下のip ospf 1 area 0で有効にした場合はAttached via Interface Enableになります。
show ip route ospfで、OSPFで学んだ経路(O)を確認します。XE1には他の2台のLoopback0に加え、パッシブにしたXE3側のホストセグメント10.3.10.0/24も入っています。Helloを止めても、そのインタフェースのネットワークはOSPFに広告されます。
XE1#show ip route ospf | begin Gateway
Gateway of last resort is not set
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/2] via 10.1.2.2, 00:04:06, GigabitEthernet1
3.0.0.0/32 is subnetted, 1 subnets
O 3.3.3.3 [110/3] via 10.1.2.2, 00:04:02, GigabitEthernet1
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
O 10.2.3.0/24 [110/2] via 10.1.2.2, 00:04:02, GigabitEthernet1
O 10.3.10.0/24 [110/3] via 10.1.2.2, 00:04:02, GigabitEthernet1コードの凡例が長いので| begin Gatewayで先頭を飛ばしています。
HOST1からHOST2へpingを実行し、OSPFで学んだ経路を使って端末同士が疎通できることを確認します。
cisco@HOST1:~$ ping -c 5 10.3.10.10
PING 10.3.10.10 (10.3.10.10) 56(84) bytes of data.
64 bytes from 10.3.10.10: icmp_seq=1 ttl=61 time=6.67 ms
64 bytes from 10.3.10.10: icmp_seq=2 ttl=61 time=6.51 ms
64 bytes from 10.3.10.10: icmp_seq=3 ttl=61 time=5.86 ms
64 bytes from 10.3.10.10: icmp_seq=4 ttl=61 time=7.60 ms
64 bytes from 10.3.10.10: icmp_seq=5 ttl=61 time=5.76 ms
--- 10.3.10.10 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 5.757/6.478/7.595/0.660 msttl=61は、Linuxの初期値64からルータ3台を通過して3減った値です。
検証Configおよびshow結果
3台すべてから、次の3種類をルータごとに分けて取得しています。検証Configはこの..._run.txtです。
| ファイル | 内容 |
|---|---|
..._show.txt | show version / show interfaces description / show ip interface brief / show ip route / show ip protocols / show ip ospf / show ip ospf interface / show ip ospf interface brief / show ip ospf neighbor / show ip ospf neighbor detail / show ip ospf database / show ip ospf database router / show ip ospf database network / show ip route ospf / show ip ospf statistics |
..._log.txt | OSPFを設定する直前にsend logでマーカーを入れ、その位置から絞り込んだshow logging。隣接がFULLになる%OSPF-5-ADJCHGが入っています |
..._run.txt | show running-config(=検証Config) |
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| XE1 | show | log | run |
| XE2 | show | log | run |
| XE3 | show | log | run |
関連記事
OSPFの仕組みはOSPFとは、ルータIDの決まり方はOSPF ルータIDを参照してください。IOS XR での設定はIOS XR OSPF基本設定にあります。