From 994a85389a8c30ef66032c4225cc9735607f0839 Mon Sep 17 00:00:00 2001 From: aapostoliuk Date: Mon, 3 Feb 2025 14:47:12 +0200 Subject: [PATCH] DMVPN Dual Hub Dual Cloud blueprint DMVPN Dual Hub Dual Cloud blueprint --- docs/_static/images/dual-hub-DMVPN.png | Bin 0 -> 88497 bytes .../dmvpn-dualhub-dualcloud.rst | 548 ++++++++++++++++++ docs/configexamples/index.rst | 1 + 3 files changed, 549 insertions(+) create mode 100644 docs/_static/images/dual-hub-DMVPN.png create mode 100644 docs/configexamples/dmvpn-dualhub-dualcloud.rst diff --git a/docs/_static/images/dual-hub-DMVPN.png b/docs/_static/images/dual-hub-DMVPN.png new file mode 100644 index 0000000000000000000000000000000000000000..51ba9c147262a21e3025e452404086e7408ea26c GIT binary patch literal 88497 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

h@}3+L)S1*=O7|(~-U?BvWSM;) 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 z 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 - selected route, * - FIB route, q - queued, r - rejected, b - backup + t - trapped, o - offload failure + + ...... + O>* 192.168.11.0/24 [110/3] via 10.100.100.1, tun100 onlink, weight 1, 00:12:36 + * via 10.100.101.1, tun101 onlink, weight 1, 00:12:36 + O 192.168.12.0/24 [110/1] is directly connected, eth1, weight 1, 01:24:40 + C>* 192.168.12.0/24 is directly connected, eth1, weight 1, 01:24:43 + L>* 192.168.12.1/32 is directly connected, eth1, weight 1, 01:24:43 + O>* 192.168.13.0/24 [110/3] via 10.100.100.1, tun100 onlink, weight 1, 00:12:36 + * via 10.100.101.1, tun101 onlink, weight 1, 00:12:36 + +After initiating traffic between SPOKES sites, Phase 3 of DMVPN will work. +For instance, traceroute was generated from PC-SPOKE-2 to PC-SPOKE-1 + +.. code-block:: none + + PC-SPOKE-2 : 192.168.12.2 255.255.255.0 gateway 192.168.12.1 + + PC-SPOKE-2> trace 192.168.11.2 + trace to 192.168.11.2, 8 hops max, press Ctrl+C to stop + 1 192.168.12.1 0.558 ms 0.378 ms 0.561 ms + 2 10.100.101.1 1.768 ms 1.158 ms 1.744 ms + 3 10.100.101.11 7.196 ms 4.971 ms 4.793 ms + 4 *192.168.11.2 7.747 ms (ICMP type:3, code:3, Destination port unreachable) + + PC-SPOKE-2> trace 192.168.11.2 + trace to 192.168.11.2, 8 hops max, press Ctrl+C to stop + 1 192.168.12.1 0.562 ms 0.396 ms 0.364 ms + 2 10.100.100.11 4.401 ms 4.399 ms 4.174 ms + 3 *192.168.11.2 3.241 ms (ICMP type:3, code:3, Destination port unreachable) + +First trace goes via HUB but the second goes directly from SPOKE-1 to SPOKE-2. +Now routing tables are changed. LAN networks 192.168.12.0/24 and 192.168.11.0/24 available directly via SPOKES. + +.. code-block:: none + + vyos@SPOKE-2:~$ show ip route + Codes: K - kernel route, C - connected, L - local, S - static, + R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP, + T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR, + f - OpenFabric, t - Table-Direct, + > - selected route, * - FIB route, q - queued, r - rejected, b - backup + t - trapped, o - offload failure + + N>* 192.168.11.0/24 [10/0] via 10.100.100.11, tun100 onlink, weight 1, 00:00:14 + O 192.168.11.0/24 [110/3] via 10.100.100.1, tun100 onlink, weight 1, 00:00:54 + via 10.100.101.1, tun101 onlink, weight 1, 00:00:54 + + + SPOKE-1# show ip route next-hop-override + Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP + D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area + N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 + E1 - OSPF external type 1, E2 - OSPF external type 2 + i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 + ia - IS-IS inter area, * - candidate default, U - per-user static route + o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP + a - application route + + - replicated route, % - next hop override, p - overrides from PfR + + Gateway of last resort is 10.0.11.1 to network 0.0.0.0 + + O % 192.168.12.0/24 [110/1002] via 10.100.101.1, 00:24:09, Tunnel101 + [110/1002] via 10.100.100.1, 00:25:46, Tunnel100 + [NHO][110/1] via 10.100.100.12, 00:00:03, Tunnel100 + +NHRP shows shortcuts on Spokes + +.. code-block:: none + + vyos@SPOKE-2:~$ show ip nhrp shortcut + Type Prefix Via Identity + dynamic 192.168.11.0/24 10.100.100.11 10.0.11.2 + + SPOKE-1# show ip nhrp shortcut + 10.100.100.12/32 via 10.100.100.12 + Tunnel100 created 00:09:59, expire 00:02:21 + Type: dynamic, Flags: router nhop rib nho + NBMA address: 10.0.12.2 + 192.168.12.0/24 via 10.100.100.12 + Tunnel100 created 00:02:38, expire 00:02:21 + Type: dynamic, Flags: router rib nho + NBMA address: 10.0.12.2 + +A new Spoke to Spoke IPSec tunnel is created + +.. code-block:: none + + SPOKE-1#show crypto isakmp sa + IPv4 Crypto ISAKMP SA + dst src state conn-id status + 10.0.0.2 10.0.11.2 QM_IDLE 1002 ACTIVE + 10.0.12.2 10.0.11.2 QM_IDLE 1004 ACTIVE + 10.0.1.2 10.0.11.2 QM_IDLE 1003 ACTIVE + + vyos@SPOKE-2:~$ show vpn ipsec sa + Connection State Uptime Bytes In/Out Packets In/Out Remote address Remote ID Proposal + -------------------------- ------- -------- -------------- ---------------- ---------------- ----------- ------------------------ + dmvpn-NHRPVPN-tun100-child up 7m26s 4K/4K 57/53 10.0.0.2 10.0.0.2 AES_CBC_256/HMAC_SHA1_96 + dmvpn-NHRPVPN-tun100-child up 11m48s 316B/1K 3/15 10.0.11.2 10.0.11.2 AES_CBC_256/HMAC_SHA1_96 + dmvpn-NHRPVPN-tun101-child up 5m58s 5K/4K 62/51 10.0.1.2 10.0.1.2 AES_CBC_256/HMAC_SHA1_96 + +Summary +======= + +If one of the Hubs loses connectivity to the Internet, the other Hub will be available and take the main role. +This is a simple example where only one internet connection is used. But in the real world, there can be two +connections to the Internet. In this case, there is a recommendation to build each tunnel via each Internet connection, +choose the main cloud, and manipulate traffic via a routing protocol. It allows the creation failover on link-level +connections too. \ No newline at end of file diff --git a/docs/configexamples/index.rst b/docs/configexamples/index.rst index 11dee8066e..36d3869b4b 100644 --- a/docs/configexamples/index.rst +++ b/docs/configexamples/index.rst @@ -19,6 +19,7 @@ This chapter contains various configuration examples: l3vpn-hub-and-spoke lac-lns inter-vrf-routing-vrf-lite + dmvpn-dualhub-dualcloud qos segment-routing-isis nmp