【DMVPN】フェーズ2上でのOSPF(Broadcastタイプ)

DMVPN フェーズ2では、スポーク同士の通信はハブを経由せず、スポーク間で直接やり取りされます。この記事では、DMVPN フェーズ2のトンネルで OSPF のネットワークタイプを broadcast にして、ネイバーと経路、スポーク間の通信を確かめます。broadcast はイーサネットの既定のネットワークタイプで、複数のルータが同じセグメントにつながるマルチアクセスのネットワークで使います。

DMVPN フェーズ2の構成は 【DMVPN】フェーズ2をわかりやすく解説、DMVPN 上で OSPF を動かすときの基本は 【OSPF】DMVPN上でOSPFを有効後、大量にエラーが出る を参照してください。

この記事でわかること
  1. broadcast ではネイバーを自動で見つけること
  2. ハブを DR にし、スポークを優先度 0 にする理由
  3. フェーズ2でスポーク間の通信がハブを経由しないこと

検証構成

ハブの R2 と、スポークの R5・R6 を DMVPN のトンネル(192.168.0.0/24)でつなぎ、すべてエリア0にします。トンネルインターフェースの OSPF ネットワークタイプを broadcast にします。

OSPF Area 0DMVPNTunnel 192.168.0.0/24R2(Hub)Lo0 2.2.2.2/32R5Spoke1Lo0 5.5.5.5/32R6Spoke2Lo0 6.6.6.6/32.2.5.6broadcastbroadcastbroadcastPriority 1(DR)Priority 0Priority 0
図1 検証構成(トンネルのネットワークタイプは 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
スポークの優先度を 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 BROADCASTHello をマルチキャストで送り、ネイバーを自動で見つけるネットワークタイプ
Cost: 1000トンネルインターフェースの既定の帯域(100 kbit/s)から計算したコスト
State DR, Priority 1R2 が DR になっている。BDR はいない(スポークは優先度 0)
Hello 10, Dead 40broadcast の既定のタイマー
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
DMVPNR2(Hub)R5R6192.168.0.5192.168.0.6R6 → R5 直接
図2 フェーズ2のスポーク間通信(ハブを経由せず、R6 から R5 へ直接届く)

まとめ

項目broadcast(DMVPN フェーズ2)
ネイバーの検出自動(Hello をマルチキャストで送る。NHRP のマルチキャストの設定が必要)
DRハブを DR にする(スポークは ip ospf priority 0)
タイマーHello 10 秒、Dead 40 秒
スポーク間の経路ネクストホップは相手スポークのトンネルアドレス。ハブを経由せず直接通信する

broadcast は、スポークを追加してもハブ側の OSPF の設定を変える必要がありません。non-broadcast のようにハブで neighbor を足す手間がないので、DMVPN フェーズ2ではよく使われる組み合わせです。

 

コメント