【DMVPN】フェーズ1上のOSPF(point-to-multipoint non-broadcastタイプ)

DMVPN フェーズ1では、スポーク同士の通信もすべてハブを経由します。この記事では、DMVPN フェーズ1のトンネルで OSPF のネットワークタイプを point-to-multipoint non-broadcast にして、ネイバーと経路を確かめます。point-to-multipoint non-broadcast は point-to-multipoint とほぼ同じ動きをしますが、ネイバーを自動で見つけないので、neighbor コマンドで指定する必要があります。

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

この記事でわかること
  1. point-to-multipoint non-broadcast で neighbor が必要なこと
  2. DR・BDR を選ばないので、スポークの優先度を変える必要がないこと
  3. 経路のネクストホップがすべてハブになり、通信がハブを経由すること

検証構成

ハブの R2 と、スポークの R5・R6 を DMVPN のトンネル(192.168.0.0/24)でつなぎ、すべてエリア0にします。トンネルインターフェースの OSPF ネットワークタイプを point-to-multipoint non-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.6point-to-multipointnon-broadcastpoint-to-multipointnon-broadcastpoint-to-multipointnon-broadcast
図1 検証構成(トンネルのネットワークタイプは point-to-multipoint non-broadcast)

ネットワークタイプを変える

R2(ハブ)

R2(config)#interface tunnel 0
R2(config-if)#ip ospf network point-to-multipoint non-broadcast

R5(スポーク)

R5(config)#interface tunnel0
R5(config-if)#ip ospf network point-to-multipoint non-broadcast

R6(スポーク)

R6(config)#interface tunnel 0
R6(config-if)#ip ospf network point-to-multipoint non-broadcast

インターフェースの状態を確認する

ネットワークタイプは POINT_TO_MULTIPOINT と表示され、Hello 間隔は 30 秒、Dead 間隔は 120 秒です。State も POINT_TO_MULTIPOINT で、DR・BDR の行はありません。

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 POINT_TO_MULTIPOINT, Cost: 1000
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           1000      no          no            Base
  Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT
  Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
    oob-resync timeout 120
    Hello due in 00:00:07
  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)

neighbor コマンドでネイバーを指定する

non-broadcast なのでネイバーを自動では見つけません。ハブの R2 で、neighbor にスポークのトンネルアドレスを指定します。

R2

R2(config)# router ospf 1
R2(config-router)# neighbor 192.168.0.5
R2(config-router)# neighbor 192.168.0.6

すると、R5・R6 との隣接関係が FULL になります。今回はハブの R2 だけに neighbor を設定しました。スポーク側は、ハブから届いた Hello に応えるので、neighbor の設定は不要です。

%OSPF-5-ADJCHG: Process 1, Nbr 5.5.5.5 on Tunnel0 from LOADING to FULL, Loading Done
%OSPF-5-ADJCHG: Process 1, Nbr 6.6.6.6 on Tunnel0 from LOADING to FULL, Loading Done

ネイバーを確認する

R2

R2# show ip ospf neighbor  

Neighbor ID     Pri   State           Dead Time   Address         Interface
6.6.6.6           0   FULL/  -        00:01:53    192.168.0.6     Tunnel0
5.5.5.5           0   FULL/  -        00:01:53    192.168.0.5     Tunnel0

point-to-multipoint は、ネットワークをポイントツーポイントのリンクの集まりとして扱うので、DR・BDR を選びません。broadcast で DR・BDR が表示される欄は - になります。スポーク側でも同じです。

R5

R5#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           0   FULL/  -        00:01:55    192.168.0.2     Tunnel0

R6

R6#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           0   FULL/  -        00:01:42    192.168.0.2     Tunnel0

DR・BDR を選ばないので、broadcast や non-broadcast のときのように、スポークの優先度を 0 にする必要はありません。

経路を確認する

ハブの R2 は、スポークのループバックに加えて、スポークのトンネルアドレスを /32 のホスト経路として学習しています。point-to-multipoint では、各ルータが自分のインターフェースのアドレスを /32 で広告するためです。

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: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
      192.168.0.0/24 is variably subnetted, 4 subnets, 2 masks
O        192.168.0.5/32 [110/1000] via 192.168.0.5, 00:02:53, Tunnel0
O        192.168.0.6/32 [110/1000] via 192.168.0.6, 00:02:53, Tunnel0

スポークの経路を見ると、ネクストホップはすべてハブの R2(192.168.0.2)です。R5 から見た 6.6.6.6 も、R6 のアドレスではなく R2 経由になり、コストは R5→R2、R2→R6 の2区間分(2001)です。

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:03:07, Tunnel0
      6.0.0.0/32 is subnetted, 1 subnets
O        6.6.6.6 [110/2001] via 192.168.0.2, 00:02:57, Tunnel0
      192.168.0.0/24 is variably subnetted, 4 subnets, 2 masks
O        192.168.0.2/32 [110/1000] via 192.168.0.2, 00:03:07, Tunnel0
O        192.168.0.6/32 [110/2000] via 192.168.0.2, 00:02:57, 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:19, Tunnel0
      5.0.0.0/32 is subnetted, 1 subnets
O        5.5.5.5 [110/2001] via 192.168.0.2, 00:03:19, Tunnel0
      192.168.0.0/24 is variably subnetted, 4 subnets, 2 masks
O        192.168.0.2/32 [110/1000] via 192.168.0.2, 00:03:19, Tunnel0
O        192.168.0.5/32 [110/2000] via 192.168.0.2, 00:03:19, Tunnel0
表示意味
192.168.0.x/32point-to-multipoint のインターフェースのアドレスを、各ルータが /32 のホスト経路として広告したもの
via 192.168.0.2ネクストホップはすべてハブ。スポーク同士は隣接関係がないので、ハブを経由する経路になる
[110/2001]トンネル2区間(1000+1000)とループバック(1)のコスト

DMVPN フェーズ1ではすべての通信がハブを経由する構成なので、ネクストホップがハブになっても問題ありません。

トレースルートで経路を確かめる

R5 から R6 のループバックへトレースルートすると、1ホップ目がハブの R2(192.168.0.2)、2ホップ目が R6(192.168.0.6)です。

R5# traceroute 6.6.6.6
Type escape sequence to abort.
Tracing the route to 6.6.6.6
VRF info: (vrf in name/id, vrf out name/id)
  1 192.168.0.2 16 msec 44 msec 36 msec
  2 192.168.0.6 108 msec 80 msec 80 msec
DMVPNR2(Hub)R5R6192.168.0.5192.168.0.6R5 → R2 → R6
図2 R5 から R6 への通信(ネクストホップがハブなので、R2 を経由する)

まとめ

項目point-to-multipoint non-broadcast(DMVPN フェーズ1)
ネイバーの検出自動ではしない。ハブで neighbor にスポークのアドレスを指定する
DR・BDR選ばない(スポークの優先度の変更は不要)
タイマーHello 30 秒、Dead 120 秒
経路インターフェースのアドレスを /32 で広告。スポーク間の経路のネクストホップはハブ

ネクストホップが必ずハブになるので、スポーク間を直接通信させたいフェーズ2には向きません。フェーズ2では broadcast や non-broadcast を使います。

 

コメント