DMVPN フェーズ1では、スポーク同士の通信もすべてハブを経由します。この記事では、DMVPN フェーズ1のトンネルで OSPF のネットワークタイプを broadcast にして、ネイバーと DR の選び方、経路と実際の通信の流れを確かめます。broadcast はイーサネットの既定のネットワークタイプで、複数のルータが同じセグメントにつながるマルチアクセスのネットワークで使います。
DMVPN フェーズ1の構成は 【DMVPN】フェーズ1をわかりやすく解説、DMVPN 上で OSPF を動かすときの基本は 【OSPF】DMVPN上でOSPFを有効後、大量にエラーが出る を参照してください。
- broadcast では Hello をマルチキャストで送り、ネイバーを自動で見つけること
- スポークが DR に選ばれたときの直し方(優先度 0 とプロセスのリセット)
- フェーズ1では、経路のネクストホップがスポークでも通信はハブを経由すること
検証構成
ハブの R2 と、スポークの R5・R6 を DMVPN のトンネル(192.168.0.0/24)でつなぎ、すべてエリア0にします。トンネルインターフェースの OSPF ネットワークタイプを broadcast にします。図は、この記事で最終的にできあがる状態(ハブが DR、スポークは優先度 0)です。
ネットワークタイプを broadcast にする
R2(ハブ)
R2(config)# interface Tunnel0
R2(config-if)# ip ospf network broadcast
R5(スポーク)
R5(config)# interface Tunnel0
R5(config-if)# ip ospf network broadcast
R6(スポーク)
R6(config)# interface Tunnel0
R6(config-if)# ip ospf network broadcast
インターフェースの状態を確認する
ネットワークタイプは BROADCAST で、Hello 間隔は 10 秒、Dead 間隔は 40 秒です。
R2# show ip ospf interface tunnel0 Tunnel0 is up, line protocol is up Internet Address 192.168.0.2/24, Area 0, Attached via Network Statement Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1000 Topology-MTID Cost Disabled Shutdown Topology Name 0 1000 no no Base Transmit Delay is 1 sec, State DR, Priority 1 Designated Router (ID) 2.2.2.2, Interface address 192.168.0.2 No backup designated router on this network Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 oob-resync timeout 40 Hello due in 00:00:08
Hello パケットを見る
R2 が送る Hello をキャプチャすると、宛先はマルチキャストアドレスの 224.0.0.5 です。この Hello でネイバーを自動で見つけます。外側の IP ヘッダを見ると、マルチキャストの Hello が GRE でカプセル化され、スポーク(R5)の NBMA アドレス宛てのユニキャストで送られていることもわかります。
この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
▸ Ethernet II, Src: 00:00:00_00:22:22 (00:00:00:00:22:22), Dst: 00:00:00_00:33:33 (00:00:00:00:33:33)▸ 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 231▸ Internet Protocol Version 4, Src: 169.254.23.2, Dst: 169.254.35.5▸ Generic Routing Encapsulation (IP)2▸ Internet Protocol Version 4, Src: 192.168.0.2, Dst: 224.0.0.5▾ Open Shortest Path First ▾ OSPF Header Version: 23 Message Type: Hello Packet (1) Packet Length: 52 Source OSPF Router: 2.2.2.2 Area ID: 0.0.0.0 (Backbone) Checksum: 0x11d2 [correct] Auth Type: Null (0) Auth Data (none): 0000000000000000 ▸ OSPF Hello Packet ▸ OSPF LLS Data Block
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Src: 169.254.23.2, Dst: 169.254.35.5Generic Routing Encapsulation | 外側の IP ヘッダと GRE。R2 の NBMA アドレスから R5 の NBMA アドレスへのユニキャスト |
| 2 | Src: 192.168.0.2, Dst: 224.0.0.5 | トンネルの中の IP ヘッダ。OSPF の Hello はマルチキャスト(224.0.0.5)宛て |
| 3 | Message Type: Hello Packet (1) | OSPF パケットの種類が Hello であること |
DMVPN のトンネルでマルチキャストを送るには、NHRP のマルチキャストの設定が必要です。ハブはマルチキャストのパケットをスポークごとにコピーし、それぞれの NBMA アドレスへユニキャストで送ります。
ネイバーと DR を確認する
R2 のネイバーを見ると、スポークの R6 が DR、R5 が DROTHER になっています。
R2# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
5.5.5.5 1 FULL/DROTHER 00:00:36 192.168.0.5 Tunnel0
6.6.6.6 1 FULL/DR 00:00:32 192.168.0.6 Tunnel0
DMVPN では、スポーク同士は直接 Hello をやり取りできず、どちらもハブとしかつながっていません。スポークが DR になると、ほかのスポークとの間で LSA をやり取りできず、経路が一部しか届かなくなります。全員とやり取りできるハブだけが DR になるようにします。
スポークの優先度を 0 にする
スポークの R5・R6 で、トンネルインターフェースの OSPF の優先度を 0 にします。優先度 0 のルータは DR・BDR に選ばれません。
R5
R5(config)#interface tunnel 0
R5(config-if)#ip ospf priority 0
R6
R6(config)#interface tunnel 0
R6(config-if)#ip ospf priority 0
DR の選出には「後から優先度の高いルータが現れても、今の DR を交代させない」性質があります。優先度を変えただけでは DR は変わらないので、ハブの R2 で OSPF のプロセスをリセットして、選び直させます。
R2
R2# clear ip ospf process
Reset ALL OSPF processes? [no]: yes
R2#
%OSPF-5-ADJCHG: Process 1, Nbr 5.5.5.5 on Tunnel0 from FULL to DOWN, Neighbor Down:
Interface down or detached
%OSPF-5-ADJCHG: Process 1, Nbr 6.6.6.6 on Tunnel0 from FULL to DOWN, Neighbor Down:
Interface down or detached
%OSPF-5-ADJCHG: Process 1, Nbr 6.6.6.6 on Tunnel0 from LOADING to FULL, Loading Done
%OSPF-5-ADJCHG: Process 1, Nbr 5.5.5.5 on Tunnel0 from LOADING to FULL, Loading Done
DR を確認する
R2 から見ると、R5・R6 はどちらも DROTHER になりました。
R2
R2# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 5.5.5.5 0 FULL/DROTHER 00:00:39 192.168.0.5 Tunnel0 6.6.6.6 0 FULL/DROTHER 00:00:35 192.168.0.6 Tunnel0 R2#
スポークの R5・R6 から見ると、ハブの R2 が DR として FULL になっています。
R5
R5# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1 FULL/DR 00:00:33 192.168.0.2 Tunnel0
R6
R6# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1 FULL/DR 00:00:32 192.168.0.2 Tunnel0
経路を確認する
R2
R2# show ip route ospf
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/1001] via 192.168.0.5, 00:01:29, Tunnel0
6.0.0.0/32 is subnetted, 1 subnets
O 6.6.6.6 [110/1001] via 192.168.0.6, 00:01:29, Tunnel0
スポークの R5 から見た 6.6.6.6 のネクストホップは、ハブの R2(192.168.0.2)ではなく、R6 のトンネルアドレス 192.168.0.6 です。R6 から見た 5.5.5.5 も、R5 の 192.168.0.5 です。broadcast のように同じセグメントを共有するネットワークタイプでは、ネクストホップがハブに書き換わらないためです。
R5
R5#show ip route ospf
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/1001] via 192.168.0.2, 00:02:53, Tunnel0
6.0.0.0/32 is subnetted, 1 subnets
O 6.6.6.6 [110/1001] via 192.168.0.6, 00:02:53, Tunnel0
R6
R6#show ip route ospf
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/1001] via 192.168.0.2, 00:03:12, Tunnel0
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/1001] via 192.168.0.5, 00:03:02, Tunnel0
通信の流れを確かめる
R6 のループバックから R5 のループバックへ ping すると、疎通できます。
R6# ping 5.5.5.5 source 6.6.6.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:
Packet sent with a source address of 6.6.6.6
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 76/87/116 ms
トレースルートすると、1ホップ目はハブの R2(192.168.0.2)、2ホップ目が R5(192.168.0.5)です。ルーティングテーブルのネクストホップは 192.168.0.5 なのに、実際の通信はハブを経由しています。
R6# traceroute 5.5.5.5 Type escape sequence to abort. Tracing the route to 5.5.5.5 VRF info: (vrf in name/id, vrf out name/id) 1 192.168.0.2 22 msec 37 msec 42 msec 2 192.168.0.5 94 msec 49 msec 80 msec
DMVPN フェーズ1では、スポークのトンネルは宛先がハブに固定されたポイントツーポイントの GRE トンネルです。ネクストホップが 192.168.0.5 でも、パケットはハブ宛てにカプセル化されて送られ、ハブが R5 へ転送します。スポーク間の直接通信は、NHRP で相手を調べてトンネルを張るフェーズ2の機能です。
まとめ
| 項目 | broadcast(DMVPN フェーズ1) |
|---|---|
| ネイバーの検出 | 自動(Hello を 224.0.0.5 へ送る。NHRP のマルチキャストの設定が必要) |
| DR | ハブを DR にする(スポークは ip ospf priority 0。変更後はプロセスをリセットして選び直す) |
| タイマー | Hello 10 秒、Dead 40 秒 |
| 経路と通信 | ネクストホップは相手スポーク。ただしフェーズ1ではトンネルの宛先がハブなので、通信はハブを経由する |
コメント