DM*PN 的三个发展阶段概述

概述

  • DMVPN 是一个高扩展性的 IPSec VPN 解决方案,所谓高扩展性,是指适合企业级大规模部署的解决方案,例如,适用于一个企业拥有几百个分支机构的网络环境

传统 IPSec VPN 星型网络拓扑的局限性

  1. 中心站点配置量大

无论是采用经典配置的 IPSec VPN,还是采用 GRE Over IPSec 或 SVTI,多一个分支站点就要增加一份配置

     2. 分支站点间流量延时较大

即两个分支站点间不能直接通信,两个分支站点间通信需要经过 Hub 节点中转,数据被两次加解密,大大增加了延时时间

     3. 分支站点间流量占用中心带宽

在星型拓扑网络环境,分支站点间的所有流量,都要经过中心站点进行转发

传统 IPSec VPN 的网状模型存在的问题

  1. 中心与分支站点配置量大

无论是采用经典配置的 IPSec VPN,还是采用 GRE Over IPSec 或 SVTI,多一个分支站点,所有的站点都要多一份配置

     2. 分支站点需要维护过多的 IPSec SA

网状拓扑的 IPSec VPN,分支站点要和每一个其它站点建立 IPSec SA,如果站点过多,每一个分支站点就会维护很多的 IPSec SA

     3. 每一个分支站点需要固定 IP 地址

网状拓扑的 IPSec VPN,需要在任意两个站点间建立 IPSec VPN,所以每一个分支站点都需要有固定的 IP 地址

DMVPN 的优点

  • Zero-touch provisioning:零接触服务,增加新的分支站点,无需更改中心站点配置
  • Dynamic Spoke to Spoke tunnel:分支站点间流量,通过动态产生的站点间隧道进行封装
  • Flexible network topologies:灵活的网络拓扑,简单的星型拓扑配置,提供了虚拟网状连通性
  • Multicast support:组播支持,DMVPN支持组播流量通过隧道接口
  • Adaptable connectivity:适应性强的连通性,分支站点支持动态 IP 地址

DMVPN 三个发展阶段

  1. Phase 1Spoke-to-Hub,星型拓扑
  • 中心站点为 mGRE 隧道,所有分支站点均为普通的点对点 GRE 隧道
  • 分支站点间的流量都必须经过中心站点进行转发
  • 阶段一的优点:
    • 增加分支站点并不会增加中心站点的配置量
    • 分支站点支持动态获取 IP 地址(所有阶段都支持)
    • 可以在 Hub 节点做路由汇总
  1. Phase 2Spoke-to-Spoke,虚拟网状拓扑
  • 所有站点都配置 mGRE 隧道
  • 中心站点与分支站点间维护一个永恒的隧道,而分支站点与分支站点间则按需建立隧道,形成了虚拟网状拓扑,真正实现了 DMVPN 的高扩展性
  • 不支持 Hub 节点路由汇总
  1. Hierarchical Tree Spoke-to-Spoke,层次化(树状)设计
  • 主要用于超大范围部署
  • 能够实现不同区域的分支站点间直接建立隧道
  • 支持 Hub 端路由汇总,为 Spoke 节点间优化路由

DMVPN 的4大组件

  1. 动态多点 GRE,Multipoint GRE(mGRE)
  2. 下一跳解析协议(Next Hop Resolution Protocol)
  3. 动态路由协议(Dynamic Routing Protocol,EIGRP,OSPF,BGP)
  4. IPSec 技术

动态多点 GRE,Multipoint GRE(mGRE)

  • tunnel mode gre multipoint
  • 是一个典型的 NBMA 网络
  • 所有 mGRE 隧道接口都在同一个网段
  • 进入 mGRE 网络的任何一个分支站点能够和其它分支站点直接通信

下一跳解析协议(Next Hop Resolution Protocol)

  • mGRE 隧道的虚拟地址就是逻辑地址,物理接口地址就是公网地址,每一个站点的固定公网 IP 地址或者动态获取的公网 IP 地址,就是物理地址。NHRP 协议就是为了这个虚拟地址到公网地址的映射而设计的,首先每一个分支站点都需要手动映射中心站点的虚拟 IP 到公网 IP,所以中心站点必须拥有固定 IP 地址。分支站点有了这个手动映射就能够和中心站点取得联系,并且通过 NHRP 协议,注册这个分支站点的隧道虚拟 IP 到动态获取的公网 IP。一旦注册成功,中心站点就有所有分支站点的 NHRP 映射。这样中心站点也就能够访问所有注册后的分支站点。
  • 因为注册是动态的,所以分支站点支持动态获取地址。当某一分支站点希望访问另外一个分支站点时,它首先使用 NHRP 协议向中心站点(NHRP 服务器)询问目的分支站点隧道虚拟 IP 所对应的公网 IP 地址;接下来,中心站点就会将 NHRP 映射发送给发起方;在发起方收到了目的站点的 NHRP 映射以后,就能够通过 mGRE 直接发起隧道访问目的站点了。
  • 由于这个流量是两个分支站点间直接发起的,并不占用中心站点资源。

动态路由协议

  • 由于NBMA网络类型不支持直接承载组播信息,因此需要配置组播映射,把组播转换成为单播(Hub:ip nhrp map multicast dynamic;Spoke:ip nhrp map multicast Underlay_IP
  • 因为只有中心站点才拥有固定 IP 地址,所以默认值能够配置分支站点和中心站点之间的组播映射
  • 所以动态路由协议的邻居关系,只会出现在分支站点和中心站点之间
  • mGRE 支持的路由协议包括:EIGRP、OSPF、BGP等。

IPSec 技术

  • 对 mGRE 流量进行加密
  • mGRE 只是一种特殊的 GRE 技术,IP 协议号和 GRE 一样都为 47
  • DMVPN 与 GRE over IPSec 的封装原理完全相同,依然是加密点等于通信点,推荐使用传输模式进行封装(mode transport)

DMVPN 第一阶段配置

拓扑:

中心站点 Hub 端通过 Internet 与两个分支站点 Spoke-1、Spoke-2互联,地址规划如下:

Hub 端

物理地址:12.1.1.100

隧道地址:172.16.1.100

Spoke-1 端

物理地址:23.1.1.1

隧道地址:172.16.1.1

Spoke-2 端

物理地址:24.1.1.1

隧道地址:172.16.1.2

路由器身后环回口模拟站点内部网络,Hub 端内部网络 10.0.0.0/16,Spoke-1 端内部网络 10.1.0.0/16,Spoke-2 端内部网络 10.2.0.0/16

基本配置

Internet 路由器基本配置

interface Ethernet0/0

 ip address 12.1.1.2 255.255.255.0

!

interface Ethernet0/1

 ip address 23.1.1.2 255.255.255.0

!

interface Ethernet0/2

 ip address 24.1.1.2 255.255.255.0

基本配置

Hub

interface Loopback100

 ip address 10.0.0.1 255.255.0.0

!

interface Ethernet0/0

 ip address 12.1.1.100 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 12.1.1.2

Spoke-1

interface Loopback1

 ip address 10.1.1.1 255.255.0.0

!

interface Ethernet0/0

 ip address 23.1.1.1 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 23.1.1.2

Spoke-2

interface Loopback1

 ip address 10.2.2.2 255.255.0.0

!

interface Ethernet0/0

 ip address 24.1.1.1 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 24.1.1.2

mGRE NHRP 配置

Hub 路由器

Hub(config)# interface tunnel 0

Hub(config-if)# ip address 172.16.1.100 255.255.255.0

Hub(config-if)# tunnel mode gre multipoint   //配置隧道模式为多点 GRE

Hub(config-if)# tunnel source ethernet 0/0

Hub(config-if)# tunnel key 123   //配置隧道密钥为 123

Hub(config-if)# ip nhrp network-id 1   //nhrp开关network-id 本地有效,建议所有站点相同

Hub(config-if)# ip nhrp authentication ccie   //可选配置,激活NHRP认证,密钥为 ccie

Hub(config-if)# ip nhrp map multicast dynamic   //Hub端建立动态接收 nhrp 的组播映射,默认配置

Spoke-1 配置

Spoke-1(config)# int tunnel 0

Spoke-1(config-if)# ip address 172.16.1.1 255.255.255.0

Spoke-1(config-if)# tunnel mode gre ip   //第一阶段,Spoke节点为点到点 GRE

Spoke-1(config-if)# tunnel source ethernet 0/0

Spoke-1(config-if)# tunnel destination 12.1.1.100

Spoke-1(config-if)# tunnel key 123

Spoke-1(config-if)# ip nhrp network-id 1

Spoke-1(config-if)# ip nhrp authentication ccie

Spoke-1(config-if)# ip nhrp nhs 172.16.1.100

//该配置定义了 NHRP 服务器地址为中心站点的隧道接口虚拟地址172.16.1.100;也可以这么理解,服务器地址一般都为站点内部的私有地址,NHS是NHRP服务器,只要是服务器就得配置企业内部的私有地址

Spoke-2 配置

Spoke-2(config)# interface tunnel 0

Spoke-2(config-if)# ip address 172.16.1.2 255.255.255.0

Spoke-2(config-if)# tunnel mode gre ip   //tunnel接口的默认配置

Spoke-2(config-if)# tunnel source ethernet 0/0

Spoke-2(config-if)# tunnel destination 12.1.1.100   //第一阶段spoke节点无需配置任何map信息,所以不要忘记配置tunnel目的地址

Spoke-2(config-if)# tunnel key 123

Spoke-2(config-if)# ip nhrp network-id 1

Spoke-2(config-if)# ip nhrp authentication ccie

Spoke-2(config-if)# ip nhrp nhs 172.16.1.100

验证 NHRP

Hub# show ip nhrp   //查看spoke手动注册的NHRP映射信息

172.16.1.1/32 via 172.16.1.1   ---------------   Spoke的overlay地址

   Tunnel0 created 00:12:15, expire 00:07:44

   Type: dynamic, Flags: registered nhop

   NBMA address: 23.1.1.1   ------------------  Spoke的underlay地址

172.16.1.2/32 via 172.16.1.2

   Tunnel0 created 00:09:09, expire 00:07:30

   Type: dynamic, Flags: registered nhop

   NBMA address: 24.1.1.1

由于只有 Hub 端是 mGRE,Spoke端还是 P2P GRE,所以只有 Hub 端才能看到 nhrp 映射信息

--------------------------------------------------------------------------------------------------

Hub# show ip nhrp multicast   //组播NHRP映射表

  I/F     NBMA address 

Tunnel0    23.1.1.1        Flags: dynamic          (Enabled)

Tunnel0    24.1.1.1        Flags: dynamic          (Enabled)

hub端根据spoke手动注册的nhrp映射信息,提取出来,放入到自己的组播nhrp映射表里,当发送组播报文时,自动封装组播nhrp映射表里的NBMA地址

--------------------------------------------------------------------------------------------------

动态路由协议 EIGRP 配置

Hub(config)#router eigrp ccie

Hub(config-router)#address-family ipv4 unicast autonomous-system 90

Hub(config-router-af)#network 172.16.1.100 0.0.0.0

Hub(config-router-af)#network 10.0.0.0 0.0.255.255

--------------------------------------------------------------------------------------------------

Spoke-1(config)#router eigrp ccie

Spoke-1(config-router)#address-family ipv4 unicast autonomous-system 90

Spoke-1(config-router-af)#network 172.16.1.1 0.0.0.0

Spoke-1(config-router-af)#network 10.1.0.0 0.0.255.255

--------------------------------------------------------------------------------------------------

Spoke-2(config)#router eigrp ccie

Spoke-2(config-router)#address-family ipv4 unicast autonomous-system 90

Spoke-2(config-router-af)#network 172.16.1.2 0.0.0.0

Spoke-2(config-router-af)#network 10.2.0.0 0.0.255.255

验证 EIGRP 配置

Hub# show ip eigrp neighbors

EIGRP-IPv4 VR(ccie) Address-Family Neighbors for AS(90)

H   Address                 Interface              Hold Uptime   SRTT   RTO  Q  Seq

                                                   (sec)         (ms)       Cnt Num

1   172.16.1.2              Tu0                      11 00:02:28    5  1428  0  4

0   172.16.1.1              Tu0                      10 00:02:46    4  1428  0  4

--------------------------------------------------------------------------------------------------

Spoke-1# show ip eigrp neighbors

EIGRP-IPv4 VR(ccie) Address-Family Neighbors for AS(90)

H   Address                 Interface              Hold Uptime   SRTT   RTO  Q  Seq

                                                   (sec)         (ms)       Cnt Num

0   172.16.1.100            Tu0                      14 00:07:25   14  1470  0  6

--------------------------------------------------------------------------------------------------

Spoke-2# show ip eigrp neighbors

EIGRP-IPv4 VR(ccie) Address-Family Neighbors for AS(90)

H   Address                 Interface              Hold Uptime   SRTT   RTO  Q  Seq

                                                   (sec)         (ms)       Cnt Num

0   172.16.1.100            Tu0                      10 00:10:20   10  1470  0  6

--------------------------------------------------------------------------------------------------

只有 Hub 端可以分别与两个Spoke建立邻居关系,而Spoke之间是无法建立邻居关系的,这主要是由 NHRP 的组播映射决定的,因为只有在中心站点和分支站点间才存在组播映射,分支站点之间是不存在组播映射的

查看 EIGRP 路由

Hub# show ip route eigrp | be Gateway

D        10.1.0.0/16 [90/76800640] via 172.16.1.1, 00:11:11, Tunnel0

D        10.2.0.0/16 [90/76800640] via 172.16.1.2, 00:10:54, Tunnel0

--------------------------------------------------------------------------------------------------

Spoke-1# show ip route eigrp | be Gateway

D        10.0.0.0/16 [90/76800640] via 172.16.1.100, 00:11:21, Tunnel0

--------------------------------------------------------------------------------------------------

Spoke-2# show ip route eigrp | be Gateway

D        10.0.0.0/16 [90/76800640] via 172.16.1.100, 00:11:04, Tunnel0

--------------------------------------------------------------------------------------------------

只有 Hub 端学到了两个分支站点的路由,而分支站点间没有学习到对方分支站点的路由,这是由于 EIGRP 默认开启的水平分割特性,也就是在 Hub 中心站点的隧道接口默认开启了 EIGRP 的水平分割特性造成的

关闭 Hub 端隧道接口水平分割特性

Hub(config)# router eigrp ccie

Hub(config-router)# address-family ipv4 unicast autonomous-system 90

Hub(config-router-af)# af-interface tunnel 0

Hub(config-router-af-interface)# no split-horizon

再次到两个分支站点间查看 EIGRP 路由

Spoke-1# show ip route eigrp | be Gateway

D        10.0.0.0/16 [90/76800640] via 172.16.1.100, 00:20:19, Tunnel0

D        10.2.0.0/16 [90/102400640] via 172.16.1.100, 00:02:49, Tunnel0

--------------------------------------------------------------------------------------------------

Spoke-2# show ip route eigrp | be Gateway

D        10.0.0.0/16 [90/76800640] via 172.16.1.100, 00:20:49, Tunnel0

D        10.1.0.0/16 [90/102400640] via 172.16.1.100, 00:03:37, Tunnel0

--------------------------------------------------------------------------------------------------

关闭水平分割后,分支站点互相学习到了对方内网的路由,由于是第一阶段,所以下一跳为中心站点

路由优化

由于第一阶段支持 Hub 端的路由汇总,用于优化 Spoke 节点的路由

--------------------------------------------------------------------------------------------------

Hub(config)# router eigrp ccie

Hub(config-router)# address-family ipv4 unicast autonomous-system 90

Hub(config-router-af)# af-interface tunnel 0

Hub(config-router-af-interface)# summary-address 10.0.0.0 255.0.0.0

--------------------------------------------------------------------------------------------------

Spoke-1# show ip route eigrp | be Gateway  

D        10.0.0.0/8 [90/76800640] via 172.16.1.100, 00:01:06, Tunnel0

--------------------------------------------------------------------------------------------------

Spoke-2# show ip route eigrp | be Gateway

D        10.0.0.0/8 [90/76800640] via 172.16.1.100, 00:01:11, Tunnel0

分支站点只有一条通过中心站点下放的汇总路由

网络连通性测试

Spoke-1# ping 10.0.0.1 source loop1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:

Packet sent with a source address of 10.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

Spoke-1# ping 10.2.2.2 source loop1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 10.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

Spoke-1# traceroute 10.2.2.2 source loop1

Type escape sequence to abort.

Tracing the route to 10.2.2.2

VRF info: (vrf in name/id, vrf out name/id)

  1 172.16.1.100 0 msec 0 msec 0 msec

  2 172.16.1.2 1 msec *  1 msec

DMVPN 第二阶段配置

要点:

Phase 2Spoke-to-Spoke,虚拟网状拓扑

  • 由于第二阶段支持Spoke之间按需建立虚拟隧道,所以所有站点都要配置 mGRE 隧道
    • tunnel mode gre multipoint
  • ip nhrp nhs 172.16.1.100 nbma 12.1.1.100 multicast
    • ip nhrp map 172.16.1.100 12.1.1.100
    • ip nhp map multicast 12.1.1.100
    • ip nhrp nhs 172.16.1.100
  • 两个 Spoke 站点之间如何动态建立隧道
    • 首先根据路由表下一跳(spoke节点overlay地址)触发该通信需要建立动态虚拟隧道
    • 建立隧道之前,首先要知道对方 spoke 站点的 underlay 和 overlay 地址
    • 发起方 spoke 发送 nhrp 解析请求给 hub,该请求包含对方 spoke 站点的 overlay 地址
    • hub 把请求转发给 destination spoke
    • destination spoke 直接将自己的 underlay 地址发送给发起方 spoke
    • 发起方 spoke 知道了对方的 underlay 和 overlay 地址映射关系后,隧道建立完成
  • Overlay 使用 EIGRP 动态路由协议的注意事项
    • no ip split-horizon eigrp xx
    • no ip next-hop-self eigrp xx
      • 学到明细路由的下一跳地址保持不变
      • 产生该路由的Spoke节点的overlay地址,不会被hub替换掉
      • 下一跳地址为上一个发送该路由的路由器地址(发送该路由的Spoke节点overlay地址)

拓扑

同第一阶段拓扑

基本配置

同第一阶段,略

mGRE 和 NHRP 配置

Hub

interface Tunnel0

 ip address 172.16.1.100 255.255.255.0

 ip nhrp authentication ccie   //可选配置,激活NHRP认证,密钥为 ccie

 ip nhrp network-id 1   //nhrp开关,network-id 本地有效,建议所有站点相同

 ip nhrp map multicast dynamic   //Hub端建立动态接收 nhrp 的组播映射,默认配置(不显示)

 tunnel source Ethernet0/0

 tunnel mode gre multipoint   //配置隧道模式为多点 GRE

 tunnel key 123   //配置隧道密钥为 123

end

--------------------------------------------------------------------------------------------------

Spoke-1

interface Tunnel0

 ip address 172.16.1.1 255.255.255.0

 ip nhrp authentication ccie  

 ip nhrp map 172.16.1.100 12.1.1.100

 ip nhrp map multicast 12.1.1.100

 ip nhrp network-id 1   //nhrp开关,network-id 本地有效,建议所有站点相同

 ip nhrp nhs 172.16.1.100   //该配置定义了 NHRP 服务器地址为中心站点的隧道接口虚拟地址

​​​​​​​ tunnel source Ethernet0/0

 tunnel mode gre multipoint

 tunnel key 123  

end

--------------------------------------------------------------------------------------------------

Spoke-2

interface Tunnel0

 ip address 172.16.1.2 255.255.255.0

 ip nhrp authentication ccie

 ip nhrp map 172.16.1.100 12.1.1.100

 ip nhrp map multicast 12.1.1.100

 ip nhrp network-id 1

 ip nhrp nhs 172.16.1.100

 tunnel source Ethernet0/0

 tunnel mode gre multipoint

 tunnel key 123

end

--------------------------------------------------------------------------------------------------

Spoke-1(config-if)# ip nhrp map 172.16.1.100 12.1.1.100

//手动配置 nhrp 映射,映射中心站点的隧道虚拟 IP 地址(172.16.1.100)到中心站点的公网 IP 地址(12.1.1.100)。有了这个映射,分支站点才能访问中心站点。由于分支站点间没有配置组播映射,所以分支站点间没有动态路由协议的邻居关系

Spoke-1(config-if)# ip nhrp map multicast 12.1.1.100

//映射组播到中心站点的公网 IP 地址(12.1.1.100),告诉Spoke路由器发送组播目的 IP 地址封装12.1.1.100

EIGRP配置

Hub

router eigrp ccie

 !

 address-family ipv4 unicast autonomous-system 90

  !

  af-interface Tunnel0

   no next-hop-self

   no split-horizon

  exit-af-interface

  !

  topology base

  exit-af-topology

  network 10.0.0.0 0.0.255.255

  network 172.16.1.100 0.0.0.0

 exit-address-family

--------------------------------------------------------------------------------------------------

Spoke-1

router eigrp ccie

 !

 address-family ipv4 unicast autonomous-system 90

  !

  topology base

  exit-af-topology

  network 10.1.0.0 0.0.255.255

  network 172.16.1.1 0.0.0.0

 exit-address-family

--------------------------------------------------------------------------------------------------

Spoke-2

router eigrp ccie

 !

 address-family ipv4 unicast autonomous-system 90

  !

  topology base

  exit-af-topology

  network 10.2.0.0 0.0.255.255

  network 172.16.1.2 0.0.0.0

 exit-address-family

Spoke-1# show ip route eigrp | be Gateway

D        10.0.0.0/16 [90/76800640] via 172.16.1.100, 00:01:27, Tunnel0

D        10.2.0.0/16 [90/102400640] via 172.16.1.2, 00:01:27, Tunnel0

//由于Hub端关闭了水平分割学到了对方Spoke节点内网路由;关闭了next-hop-self,下一跳为对方spoke节点overlay地址

验证

Spoke-1# ping 10.2.2.2 source loop1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 10.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

Spoke-1# show ip nhrp

172.16.1.1/32 via 172.16.1.1

   Tunnel0 created 00:00:10, expire 00:09:49

   Type: dynamic, Flags: router unique local

   NBMA address: 23.1.1.1

    (no-socket)

172.16.1.2/32 via 172.16.1.2

   Tunnel0 created 00:00:10, expire 00:09:49

   Type: dynamic, Flags: router nhop  ------------- 动态建立隧道

   NBMA address: 24.1.1.1

172.16.1.100/32 via 172.16.1.100

   Tunnel0 created 00:20:50, never expire

   Type: static, Flags: used

   NBMA address: 12.1.1.100

--------------------------------------------------------------------------------------------------

Spoke-2# show ip nhrp

172.16.1.1/32 via 172.16.1.1

   Tunnel0 created 00:01:08, expire 00:08:51

   Type: dynamic, Flags: router nhop   ------------- 动态建立隧道

   NBMA address: 23.1.1.1

172.16.1.2/32 via 172.16.1.2

   Tunnel0 created 00:01:08, expire 00:08:51

   Type: dynamic, Flags: router unique local

   NBMA address: 24.1.1.1

    (no-socket)

172.16.1.100/32 via 172.16.1.100

   Tunnel0 created 00:16:40, never expire

   Type: static, Flags: used

   NBMA address: 12.1.1.100

Spoke-2# show ip nhrp multicast

  I/F     NBMA address 

Tunnel0    12.1.1.100      Flags: static           (Enabled)

Spoke-2# show dmvpn

Legend: Attrb --> S - Static, D - Dynamic, I - Incomplete

        N - NATed, L - Local, X - No Socket

        T1 - Route Installed, T2 - Nexthop-override

        C - CTS Capable, I2 - Temporary

        # 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 23.1.1.1             172.16.1.1    UP 00:01:22     D

     1 12.1.1.100         172.16.1.100    UP 00:16:53     S

--------------------------------------------------------------------------------------------------

Spoke-1# traceroute 10.2.2.2 source loopback 1

Type escape sequence to abort.

Tracing the route to 10.2.2.2

VRF info: (vrf in name/id, vrf out name/id)

  1 172.16.1.2 1 msec *  0 msec   //Spoke之间建立了虚拟隧道,直接进行通信,无需hub中转

DMVPN 第三阶段配置

要点:

  • 解决了第二阶段的不足:hub端不支持路由汇总,在一个大型网络,会对路由表造成负担
  • 第三阶段:结合了第一阶段的优点(hub端路由汇总)和第二阶段的优点(Spoke间动态建立隧道)
  • 当hub端收到了一个U型流量(从一个接口接收的流量又从该接口发送出去),感知到即将发生一个Spoke间通信,帮助Spoke间动态建立隧道,告诉spoke你可以建立一个直连隧道,无需再经过hub中转,告诉spoke你有一个更好的下一跳而不是我
  • 第三阶段无需关闭next-hop-self功能,而水平分割问题根据拓扑决定(通常关闭)
  • 告诉spoke最优的下一跳方法:
    • 在spoke上直接添加一条到达远端spoke overlay地址的路由;或通过IGP学到汇总路由,但没有到达远端的明细路由,Spoke节点间直连隧道建立后,会通过NHRP产生一条到达远端的明细路由
    • 对本地路由表里已经存在的到达远端站点的路由(下一跳指向hub的路由)直接overrides(next hop override),show ip route里显示%,show ip cef 可以看到真正的下一跳,或show ip route next hop override,以上都是本地有效
  • 将NHRP看成一个路由协议,在spoke节点的路由表里自动产生一条NHRP路由,下一跳是远端Spoke节点的overlay地址
  • DMVPN Phase 3 NHRP Shortcut Switching Enhancements
    • Hub节点:ip nhrp redirect
    • Spoke节点:ip nhrp shortcut(默认配置,show run 无法看到)

拓扑

配置

基本配置

Hub

interface Loopback100

 ip address 10.0.0.1 255.255.0.0

!

interface Ethernet0/0

 ip address 12.1.1.100 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 12.1.1.2

Spoke-1

interface Loopback1

 ip address 10.1.1.1 255.255.0.0

!

interface Ethernet0/0

 ip address 23.1.1.1 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 23.1.1.2

Spoke-2

interface Loopback1

 ip address 10.2.2.2 255.255.0.0

!

interface Loopback2

 ip address 192.168.2.2 255.255.255.0

!

interface Ethernet0/0

 ip address 24.1.1.1 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 24.1.1.2

mGRE和NHRP配置

Hub节点

Hub(config)# interface tunnel 0

Hub(config-if)# ip address 172.16.1.100 255.255.255.0

Hub(config-if)# tunnel mode gre multipoint

Hub(config-if)# tunnel source ethernet 0/0

Hub(config-if)# tunnel key 123

Hub(config-if)# ip nhrp network-id 100

Hub(config-if)# ip nhrp authentication cisco

Hub(config-if)# ip nhrp map multicast dynamic

Hub(config-if)# ip nhrp redirect

Spoke-1节点

Spoke-1(config)# interface tunnel 0

Spoke-1(config-if)# ip add 172.16.1.1 255.255.255.0

Spoke-1(config-if)# tunnel mode gre multipoint

Spoke-1(config-if)# tunnel source ethernet 0/0

Spoke-1(config-if)# tunnel key 123

Spoke-1(config-if)# ip nhrp network-id 100

Spoke-1(config-if)# ip nhrp authentication cisco

Spoke-1(config-if)# ip nhrp map 172.16.1.100 12.1.1.100

Spoke-1(config-if)# ip nhrp map multicast 12.1.1.100

Spoke-1(config-if)# ip nhrp nhs 172.16.1.100

Spoke-1(config-if)# ip nhrp shortcut

Spoke-2节点

Spoke-2(config)# interface tunnel 0

Spoke-2(config-if)# ip add 172.16.1.2 255.255.255.0

Spoke-2(config-if)# tunnel mode gre multipoint

Spoke-2(config-if)# tunnel source ethernet 0/0

Spoke-2(config-if)# tunnel key 123

Spoke-2(config-if)# ip nhrp network-id 100

Spoke-2(config-if)# ip nhrp authentication cisco

Spoke-2(config-if)# ip nhrp nhs 172.16.1.100 nbma 12.1.1.100 multicast

Spoke-2(config-if)# ip nhrp shortcut

EIGRP配置

Hub

Hub(config)# router eigrp ccie

Hub(config-router)# address-family ipv4 unicast autonomous-system 90

Hub(config-router-af)# network 172.16.1.100 0.0.0.0

Hub(config-router-af)# network 10.0.0.0 0.0.255.255

Hub(config-router-af)# af-interface tunnel 0

Hub(config-router-af-interface)# no split-horizon

Hub(config-router-af-interface)# summary-address 10.0.0.0 255.0.0.0

Hub(config-router-af-interface)# end

--------------------------------------------------------------------------------------------------

Spoke-1

Spoke-1(config)# router eigrp 90

Spoke-1(config-router)# network 172.16.1.1 0.0.0.0

Spoke-1(config-router)# network 10.1.0.0 0.0.255.255

Spoke-1(config-router)# end

--------------------------------------------------------------------------------------------------

Spoke-2

Spoke-2(config)# router eigrp 90

Spoke-2(config-router)# network 172.16.1.2 0.0.0.0

Spoke-2(config-router)# network 10.2.0.0 0.0.255.255

Spoke-2(config-router)# network 192.168.2.0 0.0.0.255

Spoke-2(config-router)# end

路由分析

Spoke-1# show ip route | be Gateway

Gateway of last resort is 23.1.1.2 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 23.1.1.2

      10.0.0.0/8 is variably subnetted, 3 subnets, 3 masks

D        10.0.0.0/8 [90/26880032] via 172.16.1.100, 00:01:12, Tunnel0

C        10.1.0.0/16 is directly connected, Loopback1

L        10.1.1.1/32 is directly connected, Loopback1

      23.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

C        23.1.1.0/24 is directly connected, Ethernet0/0

L        23.1.1.1/32 is directly connected, Ethernet0/0

      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks

C        172.16.1.0/24 is directly connected, Tunnel0

L        172.16.1.1/32 is directly connected, Tunnel0

D     192.168.2.0/24 [90/28288000] via 172.16.1.100, 00:00:33, Tunnel0

--------------------------------------------------------------------------------------------------

Spoke-1# ping 10.2.2.2 source loop1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 10.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

--------------------------------------------------------------------------------------------------

icmp流量(10.2.2.2)自动触发两个Spoke之间隧道建立

 

Spoke-1# show ip nhrp

10.1.0.0/16 via 172.16.1.1

   Tunnel0 created 00:00:02, expire 00:09:57

   Type: dynamic, Flags: router unique local

   NBMA address: 23.1.1.1

    (no-socket)

10.2.0.0/16 via 172.16.1.2

   Tunnel0 created 00:00:02, expire 00:09:57

   Type: dynamic, Flags: router rib

   NBMA address: 24.1.1.1

172.16.1.2/32 via 172.16.1.2

   Tunnel0 created 00:00:02, expire 00:09:57

   Type: dynamic, Flags: router nhop rib

   NBMA address: 24.1.1.1

172.16.1.100/32 via 172.16.1.100

   Tunnel0 created 00:26:56, never expire

   Type: static, Flags: used

   NBMA address: 12.1.1.100

--------------------------------------------------------------------------------------------------

隧道建立之后查看Spoke-1的路由表如下

--------------------------------------------------------------------------------------------------

Spoke-1# ping 192.168.2.2 source loop1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:

Packet sent with a source address of 10.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

--------------------------------------------------------------------------------------------------

icmp流量(192.168.2.2)自动触发两个Spoke之间隧道建立

Spoke-1#show ip nhrp | be 192

192.168.2.0/24 via 172.16.1.2

   Tunnel0 created 00:00:18, expire 00:09:41

   Type: dynamic, Flags: router rib nho

   NBMA address: 24.1.1.1

--------------------------------------------------------------------------------------------------

隧道建立之后查看Spoke-1的路由表如下

--------------------------------------------------------------------------------------------------

CEF表里也可以看到真正的下一跳

Spoke-1#show ip cef | in 192

192.168.2.0/24       172.16.1.2           Tunnel0

--------------------------------------------------------------------------------------------------

报文转发路径,下一跳直接为Spoke节点overlay地址

Spoke-1#traceroute 192.168.2.2 source loop1

Type escape sequence to abort.

Tracing the route to 192.168.2.2

VRF info: (vrf in name/id, vrf out name/id)

  1 172.16.1.2 1 msec *  1 msec

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值