Cisco機器でDMVPN Phase 3を設定する
Cisco IOS / IOS XE ルータ 3 台で、IKEv2 PSK により保護された DMVPN Phase 3 を構成する。
DMVPN の mGRE、NHRP、redirect / shortcut の動作は DMVPNの仕組みとPhase 1・2・3、IKEv2 / IPsec の各設定要素は Cisco IOSのIPsec設定要素 を参照する。
- Hub 1 台と Spoke 2 台で DMVPN cloud を作る。
- Hub-Spoke の NHRP 登録を確立する。
- Spoke 間の最初の通信を Hub 経由で転送する。
- NHRP redirect / shortcut により、以降の通信を Spoke 間の直接経路へ切り替える。
- EIGRP または OSPF で各拠点 LAN を広告する。
上段は Tunnel0 のアドレスを使う DMVPN overlay、下段は mGRE の外側 IP packet を運ぶ routed underlay である。NBMA は Non-Broadcast Multi-Access の略で、この構成では各 GigabitEthernet0/0 のアドレスを NBMA アドレスとして使う。Hub、Spoke1、Spoke2 は異なる WAN access subnet に属し、underlay の IP routing により相互到達する。詳しい意味は UnderlayとNBMAアドレス を参照する。
Hub / NHS の NHS は Next Hop Server である。Spoke は自分の Tunnel / NBMA 対応をこの Hub へ登録し、remote Spoke の NBMA アドレスを解決するときの問い合わせ先として使う。NHS は LAN 経路を配る routing protocol の server ではない。
上段の青い実線は shortcut がない時点の Hub 経由の論理経路、緑の点線は通信開始後に動的に形成される Spoke1 から Spoke2 への shortcut を表す。逆方向の通信にも直接経路が必要なら、Spoke2 側でも対応する NHRP 解決が行われる。どちらの論理経路でも、外側 packet は下段の routed underlay を通り、Tunnel protection により peer ごとの IPsec SA で保護される。
| 項目 | Hub | Spoke1 | Spoke2 |
|---|---|---|---|
| 機器 | Cisco IOS / IOS XE ルータ | Cisco IOS / IOS XE ルータ | Cisco IOS / IOS XE ルータ |
| WANインターフェース | GigabitEthernet0/0 |
GigabitEthernet0/0 |
GigabitEthernet0/0 |
| NBMAアドレス | 203.0.113.2/30 |
198.51.100.2/30 |
192.0.2.2/30 |
| Underlay next hop | 203.0.113.1 |
198.51.100.1 |
192.0.2.1 |
| LANインターフェース | GigabitEthernet0/1 |
GigabitEthernet0/1 |
GigabitEthernet0/1 |
| LAN側アドレス | 192.168.0.1/24 |
192.168.1.1/24 |
192.168.2.1/24 |
| Tunnelインターフェース | Tunnel0 |
Tunnel0 |
Tunnel0 |
| Tunnelアドレス | 10.255.0.1/24 |
10.255.0.11/24 |
10.255.0.12/24 |
| Router ID | 1.1.1.1 |
2.2.2.2 |
3.3.3.3 |
| IKEバージョン | IKEv2 | IKEv2 | IKEv2 |
| 認証方式 | PSK | PSK | PSK |
| PSK | ChangeMe-StrongKey |
ChangeMe-StrongKey |
ChangeMe-StrongKey |
WAN / LAN インターフェースの IP アドレスと underlay route は設定済みで、3 台の NBMA アドレスが相互到達可能であることを前提とする。各ルータには、上表の underlay next hop を向く default route または remote NBMA アドレスへの経路が必要である。
DMVPN Tunnel を使わずに、各ルータから他の NBMA アドレスへ ping できることを先に確認する。
Hub で確認する。
ping 198.51.100.2 source GigabitEthernet0/0ping 192.0.2.2 source GigabitEthernet0/0Spoke1 で確認する。
ping 203.0.113.2 source GigabitEthernet0/0ping 192.0.2.2 source GigabitEthernet0/0Spoke2 で確認する。
ping 203.0.113.2 source GigabitEthernet0/0ping 198.51.100.2 source GigabitEthernet0/0以下のコマンドは Cisco IOS / IOS XE の構文に基づく。利用する IOS image により使える暗号方式や細部のキーワードが異なるため、投入前に ? で確認する。
関連する設定要素
Section titled “関連する設定要素”- IKE、IKE SA、Child SA:IKEとSA
- Proposal、Policy、Keyring、Profile、Transform Set、PFS:Cisco IOSのIPsec設定要素
- transport mode:トランスポートモードとトンネルモード
- IKEv2 / IPsec SA の確認:Cisco機器でGRE over IPsecを設定する
- EIGRP の基本:Cisco機器でEIGRPを設定する
- OSPF の基本:Cisco機器でOSPFを設定する
設定が連携する順序
Section titled “設定が連携する順序”DMVPN の設定は、単独のコマンドではなく次の順序で連携する。
| 段階 | 担当 | この構成で必要な理由 |
|---|---|---|
| 1. LAN経路を選ぶ | EIGRP または OSPF | 192.168.2.0/24 への経路と Tunnel 上の next hop を得る |
| 2. peerを解決する | NHRP | Tunnel / NBMA mapping を解決し、Phase 3 では remote Spoke への next-hop override を作る |
| 3. packetを運ぶ | mGRE | 1 個の Tunnel0 から、NHRP が決めた複数の peer へ GRE packet を送る |
| 4. packetを保護する | IKEv2 / IPsec | mGRE packet の peer ごとに SA を作り、暗号化・完全性保護する |
たとえば routing protocol だけ動いても、NHRP mapping がなければ mGRE の外側宛先を決められない。NHRP 登録だけ動いても、remote LAN の経路がなければその peer を使う判断ができない。この依存関係を意識して、動作確認も underlay、IPsec、NHRP、routing、shortcut の順で行う。
1. IKEv2とIPsecの共通設定を作成する
Section titled “1. IKEv2とIPsecの共通設定を作成する”Hub、Spoke1、Spoke2 のすべてに同じ設定を入れる。
固定peer型との違い:remote addressを限定しない
Section titled “固定peer型との違い:remote addressを限定しない”通常の site-to-site VPN や point-to-point GRE over IPsec では、対向 peer が設定時点で決まっている。固定GRE over IPsecの手順では、Keyring と IKEv2 Profile に対向ルータのアドレスを明示している。
Keyring: address 198.51.100.2IKEv2 Profile: match identity remote address 198.51.100.2 255.255.255.255DMVPN では remote peer をすべて事前に列挙できない。
- Hub は、NHRP Registration を送ってくる複数の Spoke と動的に SA を作る。
- Spoke は Hub のアドレスを知っているが、Phase 3 shortcut の相手となる remote Spoke の NBMA アドレスは NHRP Resolution 後に初めて分かる。
そのため、この構成では Keyring と IKEv2 Profile の remote address を次のように wildcard にする。
Keyring: address 0.0.0.0 0.0.0.0IKEv2 Profile: match identity remote address 0.0.0.0 0.0.0.0Keyring の address は、remote peer に使用する Keyring entry と PSK を選ぶ条件である。IKEv2 Profile の match identity remote address は、remote の IKE identity がアドレスである場合に、その相手へ適用する IKEv2 Profile を選ぶ条件である。選択対象が異なるため、この構成では両方を wildcard にする。
wildcard にしても、すべての宛先トラフィックを無条件に暗号化するわけではない。どの Tunnel traffic を保護するかは tunnel protection ipsec profile が決め、実際の peer は mGRE と NHRP の解決結果から決まる。wildcard が広げるのは、この Keyring entry と IKEv2 Profile に一致できる remote address の範囲である。
ただし、PSK を知る任意の remote address が同じ Keyring entry と Profile に一致できるため、固定 peer 型より認証対象が広い。この構成では全 peer が共通 PSK を使う。通常構成では、証明書認証や peer ごとの認証・認可を検討する。
この wildcard は DMVPN 専用の構文ではなく、remote peer を事前に固定できない VPN でも使われる。
conf tcrypto ikev2 proposal DMVPN-IKEV2-PROPOSAL encryption aes-cbc-256 integrity sha256 group 14exit
crypto ikev2 policy DMVPN-IKEV2-POLICY proposal DMVPN-IKEV2-PROPOSALexit
crypto ikev2 keyring DMVPN-IKEV2-KEYRING peer DMVPN-PEERS address 0.0.0.0 0.0.0.0 pre-shared-key ChangeMe-StrongKey exitexit
crypto ikev2 profile DMVPN-IKEV2-PROFILE match identity remote address 0.0.0.0 0.0.0.0 authentication remote pre-share authentication local pre-share keyring local DMVPN-IKEV2-KEYRING dpd 10 3 on-demandexit
crypto ipsec transform-set DMVPN-IPSEC-TS esp-aes 256 esp-sha256-hmac mode transportexit
crypto ipsec profile DMVPN-IPSEC-PROFILE set transform-set DMVPN-IPSEC-TS set ikev2-profile DMVPN-IKEV2-PROFILE set pfs group14exitpre-shared-key ChangeMe-StrongKey は、自分の認証情報の生成と、相手から受け取った認証情報の検証に同じ PSK を使う設定である。方向ごとに異なる PSK を使う場合は、pre-shared-key local と pre-shared-key remote を分けて設定する。
dpd 10 3 on-demand は任意である。peer から 10 秒間 IKEv2 / IPsec traffic を受信していない状態で送信が必要になると生存確認を行い、応答がなければ 3 秒間隔で再送する。省略しても SA は確立するが、応答しない peer の検出と SA の削除が遅れる場合がある。
DMVPN では mGRE が外側 IP ヘッダーを作るため、IPsec は transport mode で GRE ヘッダー以降を保護する。IPsec 自身による外側 IP ヘッダーをもう一つ追加しない。
Tunnel0で共通して使用する値
Section titled “Tunnel0で共通して使用する値”全ルータで network-id 100、tunnel key 100、NHRP authentication の文字列 DMVPN100 を使用する。それぞれの値は別の層で機能するため、役割は 三つの識別設定 を参照する。
bandwidth 1000 は EIGRP などが参照する論理帯域幅であり、通信速度を制限しない。ip mtu 1400 と ip tcp adjust-mss 1360 は、この構成における開始値であり、実際の path MTU に合わせて調整する。packet size の考え方は MTUとMSS を参照する。
全ルータの Tunnel0 で no ip redirects を設定し、通常の IPv4 ICMP Redirect 送信を止める。Hub の ip nhrp redirect とは別の機能であり、違いは ICMP RedirectとNHRP Redirectは別物 を参照する。
tunnel protection ipsec profile DMVPN-IPSEC-PROFILE により、NHRP で動的に判明した Hub-Spoke と Spoke-Spoke の peer に IPsec Profile を適用する。
2. HubのmGREとNHRPを設定する
Section titled “2. HubのmGREとNHRPを設定する”Hub で設定する。
interface Tunnel0 bandwidth 1000 ip address 10.255.0.1 255.255.255.0 no ip redirects ip mtu 1400 ip nhrp authentication DMVPN100 ip nhrp map multicast dynamic ip nhrp network-id 100 ip nhrp redirect ip tcp adjust-mss 1360 tunnel source GigabitEthernet0/0 tunnel mode gre multipoint tunnel key 100 tunnel protection ipsec profile DMVPN-IPSEC-PROFILE no shutdownexitHub は NHS として Spoke の NHRP Registration を受け取り、Tunnel / NBMA mapping を動的に学習する。ip nhrp map multicast dynamic は登録済み Spoke を routing protocol の multicast / broadcast 配送先にし、ip nhrp redirect は Phase 3 shortcut の解決を開始させる。登録と shortcut の流れは NHRPの登録と解決 と Phase 3のredirectとshortcut を参照する。
3. Spoke1のmGREとNHRPを設定する
Section titled “3. Spoke1のmGREとNHRPを設定する”Spoke1 で設定する。
interface Tunnel0 bandwidth 1000 ip address 10.255.0.11 255.255.255.0 no ip redirects ip mtu 1400 ip nhrp authentication DMVPN100 ip nhrp map 10.255.0.1 203.0.113.2 ip nhrp map multicast 203.0.113.2 ip nhrp nhs 10.255.0.1 ip nhrp network-id 100 ip nhrp shortcut ip tcp adjust-mss 1360 tunnel source GigabitEthernet0/0 tunnel mode gre multipoint tunnel key 100 tunnel protection ipsec profile DMVPN-IPSEC-PROFILE no shutdownexitSpoke は起動時から知る Hub の情報だけを静的に設定する。ip nhrp map、ip nhrp map multicast、ip nhrp nhs により Hub への登録・問い合わせを開始し、remote Spoke の mapping は通信開始後に動的に学習する。ip nhrp shortcut は、その解決結果を転送に使用する。各コマンドの関係は SpokeからHubへのマッピング と Phase 3のredirectとshortcut を参照する。
4. Spoke2のmGREとNHRPを設定する
Section titled “4. Spoke2のmGREとNHRPを設定する”Spoke2 で設定する。
interface Tunnel0 bandwidth 1000 ip address 10.255.0.12 255.255.255.0 no ip redirects ip mtu 1400 ip nhrp authentication DMVPN100 ip nhrp map 10.255.0.1 203.0.113.2 ip nhrp map multicast 203.0.113.2 ip nhrp nhs 10.255.0.1 ip nhrp network-id 100 ip nhrp shortcut ip tcp adjust-mss 1360 tunnel source GigabitEthernet0/0 tunnel mode gre multipoint tunnel key 100 tunnel protection ipsec profile DMVPN-IPSEC-PROFILE no shutdownexitSpoke2 も Spoke1 と同様に、Hub だけを静的に設定する。
5. 動的ルーティングを設定する
Section titled “5. 動的ルーティングを設定する”EIGRP と OSPF は代替構成である。以下のどちらか一方だけを設定する。
EIGRPを使う場合
Section titled “EIGRPを使う場合”Hub の設定。
interface Tunnel0 no ip split-horizon eigrp 100exit
router eigrp 100 eigrp router-id 1.1.1.1 passive-interface default no passive-interface Tunnel0 network 10.255.0.0 0.0.0.255 network 192.168.0.0 0.0.0.255exitSpoke1 の設定。
router eigrp 100 eigrp router-id 2.2.2.2 passive-interface default no passive-interface Tunnel0 network 10.255.0.0 0.0.0.255 network 192.168.1.0 0.0.0.255exitSpoke2 の設定。
router eigrp 100 eigrp router-id 3.3.3.3 passive-interface default no passive-interface Tunnel0 network 10.255.0.0 0.0.0.255 network 192.168.2.0 0.0.0.255exitHub の Tunnel0 だけで split horizon を無効化し、同じ multipoint interface の先にある別 Spoke へ経路を広告できるようにする。Phase 3 では NHRP next-hop override を使うため、Phase 2 向けの no ip next-hop-self eigrp 100 は設定しない。詳しい理由は Hubのsplit horizon と next-hop-selfを残す を参照する。
OSPFを使う場合
Section titled “OSPFを使う場合”Hub の設定。
ip prefix-list BLOCK-DMVPN-HOSTS seq 5 deny 10.255.0.0/24 ge 32ip prefix-list BLOCK-DMVPN-HOSTS seq 10 permit 0.0.0.0/0 le 32
router ospf 10 router-id 1.1.1.1 passive-interface default no passive-interface Tunnel0 distribute-list prefix BLOCK-DMVPN-HOSTS inexit
interface Tunnel0 ip ospf network point-to-multipoint ip ospf 10 area 0exit
interface GigabitEthernet0/1 ip ospf 10 area 0exitSpoke1 の設定。
ip prefix-list BLOCK-DMVPN-HOSTS seq 5 deny 10.255.0.0/24 ge 32ip prefix-list BLOCK-DMVPN-HOSTS seq 10 permit 0.0.0.0/0 le 32
router ospf 10 router-id 2.2.2.2 passive-interface default no passive-interface Tunnel0 distribute-list prefix BLOCK-DMVPN-HOSTS inexit
interface Tunnel0 ip ospf network point-to-multipoint ip ospf 10 area 0exit
interface GigabitEthernet0/1 ip ospf 10 area 0exitSpoke2 の設定。
ip prefix-list BLOCK-DMVPN-HOSTS seq 5 deny 10.255.0.0/24 ge 32ip prefix-list BLOCK-DMVPN-HOSTS seq 10 permit 0.0.0.0/0 le 32
router ospf 10 router-id 3.3.3.3 passive-interface default no passive-interface Tunnel0 distribute-list prefix BLOCK-DMVPN-HOSTS inexit
interface Tunnel0 ip ospf network point-to-multipoint ip ospf 10 area 0exit
interface GigabitEthernet0/1 ip ospf 10 area 0exitip ospf 10 area 0 により、Tunnel0 と LAN 側の GigabitEthernet0/1 を process 10、area 0 へ直接所属させる。ip ospf network point-to-multipoint は Tunnel0 の network type を指定する別の設定である。
passive-interface default と no passive-interface Tunnel0 により、Neighbor を形成するのは Tunnel0 だけになるが、LAN prefix は OSPF へ広告される。各コマンドの一般的な役割は router ospfとip ospfの役割 と OSPF network type を参照する。
全ルータで OSPF network type を point-to-multipoint にそろえる。BLOCK-DMVPN-HOSTS と distribute-list ... in は、OSPF が作る Tunnel subnet 内の /32 host route だけをローカルのルーティングテーブルへ入れないために使用する。prefix-list の各行と in の意味は Tunnel subnetの/32 host routeとdistribute-list を参照する。
in は OSPF が計算した経路をローカルのルーティングテーブルへ入れるときの方向である。out は同じ意味ではなく、この目的の代わりにはならない。
IOS / IOS XE image で使用できる prefix-list のキーワードは、次の CLI help で確認する。
router ospf 10 distribute-list ?6. 設定を保存する
Section titled “6. 設定を保存する”3 台すべてで設定を保存する。
endwrite memoryTunnelインターフェース
Section titled “Tunnelインターフェース”3 台で確認する。
show ip interface brief | include Tunnel0show interface Tunnel0Tunnel0 が up/up になることを確認する。mGRE では固定の tunnel destination がないため、Tunnel0 が up/up でも NHRP 登録や remote LAN の到達性まで保証されたわけではない。
HubでSpokeの登録を確認する
Section titled “HubでSpokeの登録を確認する”Hub で確認する。
show dmvpnshow ip nhrpHub が次の動的対応を学習していることを確認する。
10.255.0.11 -> 198.51.100.210.255.0.12 -> 192.0.2.2表示形式や flag 名は IOS image により異なるが、Spoke の entry が dynamic として存在し、NBMA address が正しいことを見る。
SpokeでNHSを確認する
Section titled “SpokeでNHSを確認する”Spoke1 と Spoke2 で確認する。
show ip nhrp nhsshow ip nhrpNHS 10.255.0.1 が応答状態であり、Hub の静的 NHRP entry が 203.0.113.2 を指していることを確認する。
動的ルーティングを確認する
Section titled “動的ルーティングを確認する”EIGRP を選んだ場合。
show ip eigrp neighborsshow ip route eigrpOSPF を選んだ場合。
show ip ospf neighborshow ip route ospfHub が両方の Spoke と隣接し、Spoke1 が 192.168.2.0/24、Spoke2 が 192.168.1.0/24 を学習することを確認する。
OSPF では、OSPF 由来の 10.255.0.0/24 内の remote /32 がルーティングテーブルへ入っていないことも確認する。NHRP shortcut を形成した後に H で表示される NHRP route は別物である。
IKEv2とIPsecを確認する
Section titled “IKEv2とIPsecを確認する”show crypto ikev2 sashow crypto ipsec sashow crypto sessionHub-Spoke 通信を流した後、IKEv2 SA が確立し、IPsec の encaps / decaps counter が増えることを確認する。表示項目の読み方は Cisco機器でGRE over IPsecを設定する を参照する。
Phase 3 shortcutの前後を確認する
Section titled “Phase 3 shortcutの前後を確認する”Spoke1 で、既存の動的 shortcut を消してから状態を確認する場合は次を実行する。
clear ip nhrp shortcut Tunnel0show ip nhrp shortcutshow ip route next-hop-overrideremote Spoke への shortcut がない状態で、Spoke2 LAN 宛の通信を発生させる。
ping 192.168.2.1 source 192.168.1.1 repeat 5traceroute 192.168.2.1 source 192.168.1.1続けて確認する。
show dmvpnshow ip nhrpshow ip nhrp shortcutshow ip route next-hop-overrideshow crypto ipsec sa期待する変化は次のとおり。
- 最初の通信は Hub に向かい、Hub が Spoke2 へ転送する。
- Hub が Spoke1 に NHRP Redirect を送る。
- Spoke1 が Spoke2 の Tunnel / NBMA 対応を動的に学習する。
- Spoke2 LAN に対する next-hop override が作られる。
- Spoke1-Spoke2 間の動的 DMVPN peer と IPsec SA が作られる。
- 以降の通信は Hub をデータ転送経路にせず、Spoke 間を直接流れる。
shortcut は最初の probe を契機に短時間で作られるため、1 回の traceroute の途中で Hub 経由から直接経路へ変わる場合がある。show ip nhrp shortcut と show ip route next-hop-override を併せて判断する。
古い IOS image で show ip route next-hop-override が使えない場合は、show ip nhrp、show ip nhrp shortcut、show dmvpn を中心に確認する。
よくある失敗
Section titled “よくある失敗”| 症状 | 確認する場所 |
|---|---|
Tunnel0 が up/up だが Hub に登録されない |
NBMA 疎通、IKEv2 / IPsec SA、NHRP authentication、network-id、tunnel key、NHS、Hub mapping |
| Hub に Spoke が 1 台しか表示されない | 各 Spoke の Tunnel / NBMA address 重複、PSK、Hub 到達性 |
| EIGRP neighbor はできるが remote LAN を学習しない | Hub Tunnel0 の no ip split-horizon eigrp 100、LAN network statement |
| OSPF neighbor ができない | 全ルータの point-to-multipoint、multicast mapping、passive-interface |
OSPFのTunnel /32 が優先される |
prefix-list と distribute-list、IOS image の構文 |
| remote LANへ到達するが常にHub経由 | Hub の ip nhrp redirect、Spoke の ip nhrp shortcut、動的 NHRP entry、next-hop override |
| NHRP shortcutはあるが暗号化されない | Spoke 側を含む wildcard IKEv2 Profile、Tunnel protection、Spoke-Spoke IPsec SA |
| 小さいpingだけ通る | Tunnel MTU、TCP MSS、underlay の path MTU、NAT-T |
| NAT配下のSpoke同士で直接peerを作れない | 各NAT装置のPAT動作、UDP 500 / 4500、直接通信を許可できるNAT設計か |
トラブルシュートは次の順番で層を分ける。
1. NBMAアドレス間のunderlay疎通2. IKEv2 / IPsec SA3. mGRE TunnelとNHRP登録4. EIGRP / OSPFの隣接関係と経路5. NHRP redirect / shortcut6. MTU / MSS通常推奨される構成
Section titled “通常推奨される構成”この例は、すべての peer に一致する 1 個の wildcard PSK を使う。Spoke 1 台から PSK が漏れると、DMVPN cloud 全体へ不正参加される可能性がある。管理可能な環境では、IKEv2証明書認証を使うDMVPN Phase 3を検討する。
IKEv1 を使う構成では、Cisco機器でIKEv1 IPsec VPNを設定する の IKEv1 / IPsec 設定要素を mGRE の保護に使用する。NHRP と mGRE の役割は IKEv2 構成と同じである。
Hub を冗長化する場合は、複数 NHS、dual-hub、dual-cloud のどれを使うかを設計し、単一 Hub の Tunnel 設定を単純に複製しない。ルーティング、NHRP priority / cluster、障害検出、return path を含めて確認する。
異なる Spoke が別々の PAT 装置の配下にある場合、Spoke 間の直接 session を確立できないことがある。NAT-T により Hub-Spoke IPsec が成立していても、Phase 3 shortcut の成立は別に確認する。
DMVPN の mGRE では GRE keepalive を使用しない。IKE DPD、NHRP、対応機器の DMVPN tunnel health monitoring などを使って状態を監視する。
暗号方式は機器の対応範囲とポリシーに合わせる。AES-GCM、明示的な PRF、ECDH を使う構成は PRFとAEAD を参照する。
- DMVPNの仕組みとPhase 1・2・3
- Cisco機器でDMVPN Phase 1を設定する
- Cisco機器でDMVPN Phase 2を設定する
- トランスポートモードとトンネルモード
- IKEとSA
- Cisco IOSのIPsec設定要素
- Cisco機器でGRE over IPsecを設定する
- Cisco機器でEIGRPを設定する
- Cisco機器でOSPFを設定する
- Dynamic Multipoint VPN - Cisco IOS XE 17.x
- Shortcut Switching Enhancements for NHRP in DMVPN Networks
- Configuring NHRP - Cisco IOS 12.4T
- Appendix: IKEv2 and Legacy VPNs - Cisco IOS XE 17.x
- RFC 2332: NBMA Next Hop Resolution Protocol
- EIGRP Frequently Asked Questions - Cisco
- ICMP Redirects with HSRP - Cisco