DMVPN フェーズ2では、スポーク同士の通信はハブを経由せず、スポーク間で直接やり取りされます。この記事では、DMVPN フェーズ2のトンネルで OSPF のネットワークタイプを broadcast にして、ネイバーと経路、スポーク間の通信を確かめます。broadcast はイーサネットの既定のネットワークタイプで、複数のルータが同じセグメントにつながるマルチアクセスのネットワークで使います。
DMVPN フェーズ2の構成は 【DMVPN】フェーズ2をわかりやすく解説、DMVPN 上で OSPF を動かすときの基本は 【OSPF】DMVPN上でOSPFを有効後、大量にエラーが出る を参照してください。
- broadcast ではネイバーを自動で見つけること
- ハブを DR にし、スポークを優先度 0 にする理由
- フェーズ2でスポーク間の通信がハブを経由しないこと
検証構成
ハブの R2 と、スポークの R5・R6 を DMVPN のトンネル(192.168.0.0/24)でつなぎ、すべてエリア0にします。トンネルインターフェースの OSPF ネットワークタイプを broadcast にします。
ネットワークタイプを broadcast にする
スポークの R5 と R6 は、ハブの R2 とだけネイバーになります。スポークが DR や BDR に選ばれないよう、優先度を 0 にします。
R2(ハブ)
R2(config)# interface Tunnel0
R2(config-if)# ip ospf network broadcast
R5(スポーク)
R5(config)# interface Tunnel0 R5(config-if)# ip ospf network broadcast R5(config-if)# ip ospf priority 0
R6(スポーク)
R6(config)# interface Tunnel0 R6(config-if)# ip ospf network broadcast R6(config-if)# ip ospf priority 0
DR はセグメント内のすべてのルータと隣接関係を作る必要がありますが、DMVPN で全員に Hello を届けられるのはハブだけです。スポークが DR や BDR になると、ほかのスポークとの間で LSA をやり取りできず、経路が一部しか届かなくなります。スポークの優先度を 0 にして、ハブだけが DR になるようにします。
broadcast では Hello をマルチキャスト(224.0.0.5)で送ります。DMVPN のトンネルでマルチキャストを送るには、NHRP のマルチキャストの設定(ハブは ip nhrp map multicast dynamic、スポークはハブの NBMA アドレスを指定)が必要です。この検証の DMVPN の設定は、DMVPN フェーズ2の記事 を参照してください。
インターフェースの状態を確認する
ネットワークタイプが BROADCAST で、Hello 間隔は 10 秒、Dead 間隔は 40 秒です。neighbor コマンドを使わなくても、R5・R6 を自動で見つけて隣接関係を作っています。
R2# show ip ospf interface tunnel 0 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:05 Supports Link-local Signaling (LLS) Cisco NSF helper support enabled IETF NSF helper support enabled Index 2/2, 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 2, Adjacent neighbor count is 2 Adjacent with neighbor 5.5.5.5 Adjacent with neighbor 6.6.6.6 Suppress hello for 0 neighbor(s)
| 表示 | 意味 |
|---|---|
| Network Type BROADCAST | Hello をマルチキャストで送り、ネイバーを自動で見つけるネットワークタイプ |
| Cost: 1000 | トンネルインターフェースの既定の帯域(100 kbit/s)から計算したコスト |
| State DR, Priority 1 | R2 が DR になっている。BDR はいない(スポークは優先度 0) |
| Hello 10, Dead 40 | broadcast の既定のタイマー |
| Adjacent with neighbor | 隣接関係ができているネイバー(R5 と R6) |
ネイバーを確認する
R2 から見ると、R5・R6 はどちらも DR でも BDR でもない DROTHER です。
R2
R2# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 5.5.5.5 0 FULL/DROTHER 00:00:32 192.168.0.5 Tunnel0 6.6.6.6 0 FULL/DROTHER 00:00:31 192.168.0.6 Tunnel0
スポークの 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:31 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:37 192.168.0.2 Tunnel0
経路を確認する
ハブの R2 は、スポークのループバックを学習しています。
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:57:21, Tunnel0
6.0.0.0/32 is subnetted, 1 subnets
O 6.6.6.6 [110/1001] via 192.168.0.6, 00:57:21, Tunnel0
スポークの R5 は、R2 と R6 のループバックを学習しています。6.6.6.6 のネクストホップは、ハブの R2(192.168.0.2)ではなく、R6 のトンネルアドレス 192.168.0.6 です。
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:57:56, Tunnel0
6.0.0.0/32 is subnetted, 1 subnets
O 6.6.6.6 [110/1001] via 192.168.0.6, 00:57:56, Tunnel0
R6 でも同じように、5.5.5.5 のネクストホップは R5 の 192.168.0.5 です。
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:58:37, Tunnel0
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/1001] via 192.168.0.5, 00:58:27, Tunnel0
broadcast のように同じセグメントを共有するネットワークタイプでは、経路のネクストホップは、その経路を持つルータのセグメント上のアドレスになります。DR が LSA を中継しても、ネクストホップはハブに書き換わりません。これがフェーズ2でスポーク間の直接通信ができる理由です。
スポーク間の通信
通信前の DMVPN の状態
R6 の DMVPN の状態を見ると、トンネルはハブの R2 とだけつながっています(Attrb が S=スタティック)。
R6# show dmvpn
Legend: Attrb --> S - Static, D - Dynamic, I - Incomplete
N - NATed, L - Local, X - No Socket
# Ent --> Number of NHRP entries with same NBMA peer
NHS Status: E --> Expecting Replies, R --> Responding, W --> Waiting
UpDn Time --> Up or Down Time for a Tunnel
============================================
Interface: Tunnel0, IPv4 NHRP Details
Type:Spoke, NHRP Peers:1,
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 169.254.23.2 192.168.0.2 UP 01:20:52 S
R6 から R5 へ ping する
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 = 36/68/120 ms
もう一度 DMVPN の状態を見ると、R5 とのトンネルができています(Attrb が D=ダイナミック)。R6 が NHRP で 192.168.0.5 の NBMA アドレス(169.254.35.5)を調べ、R5 と直接トンネルを張ったためです。
R6# show dmvpn
Legend: Attrb --> S - Static, D - Dynamic, I - Incomplete
N - NATed, L - Local, X - No Socket
# Ent --> Number of NHRP entries with same NBMA peer
NHS Status: E --> Expecting Replies, R --> Responding, W --> Waiting
UpDn Time --> Up or Down Time for a Tunnel
============================================
Interface: Tunnel0, IPv4 NHRP Details
Type:Spoke, NHRP Peers:2,
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 169.254.23.2 192.168.0.2 UP 01:23:56 S
1 169.254.35.5 192.168.0.5 UP 00:00:03 D
トレースルートで経路を確かめる
R6 から R5 のループバックへトレースルートすると、1ホップ目が R5(192.168.0.5)です。ハブを経由せず、R5 へ直接届いています。
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.5 20 msec 16 msec 16 msec
まとめ
| 項目 | broadcast(DMVPN フェーズ2) |
|---|---|
| ネイバーの検出 | 自動(Hello をマルチキャストで送る。NHRP のマルチキャストの設定が必要) |
| DR | ハブを DR にする(スポークは ip ospf priority 0) |
| タイマー | Hello 10 秒、Dead 40 秒 |
| スポーク間の経路 | ネクストホップは相手スポークのトンネルアドレス。ハブを経由せず直接通信する |
broadcast は、スポークを追加してもハブ側の OSPF の設定を変える必要がありません。non-broadcast のようにハブで neighbor を足す手間がないので、DMVPN フェーズ2ではよく使われる組み合わせです。
コメント