目录

简介

先决条件

要求

使用的组件

背景信息

具有mGRE隧道的动态L3 VPN的限制

配置

在仅IP（非MPLS）网络上具有mGRE隧道的动态L3 VPN

网络图

配置

验证

在IP + MPLS网络上具有mGRE隧道的动态L3 VPN

网络图

配置

验证

故障排除

相关信息

简介

本文档介绍如何使用多点通用路由封装(mGRE)隧道功能配置动态第3层(L3)VPN。

先决条件

要求

在使用mGRE隧道功能配置动态L3 VPN之前，请确保多协议标签交换(MPLS)VPN已配置并正常运行，并且已为IPV4网络建立端到端连接。

使用的组件

本文档中的信息基于以下软件和硬件版本：

- Cisco 7206VXR(NPE-G1)系列路由器，带Cisco IOS®软件版本15.2(4)S3

- 带Cisco IOS软件版本12.2(33)SRE4的Cisco 7609-S系列路由器

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

具有mGRE隧道的动态L3 VPN功能提供基于增强的mGRE隧道技术的L3传输机制，用于IP网络。动态L3隧道传输也可在IP网络内使用，以便在服务提供商和企业网络间传输VPN流量，并为IP和MPLS VPN之间的数据包传输提供互操作性。此功能为RFC 2547提供支持，RFC 2547定义了企业网络的IP主干服务外包。

具有mGRE隧道的动态L3 VPN的限制

以下是适用于具有mGRE隧道的动态L3 VPN的限制列表：

- 不支持在单个网络中同时部署IP/GRE和MPLS封装的MPLS VPN。

- 每个提供商边缘(PE)路由器仅支持一个隧道配置。

- Cisco 7600系列路由器上面向核心的VLAN接口不受支持，必须输入隧道标记流量。它应该是主接口或子接口。

- 使用ES-40线卡和会话初始协议(SIP)400线卡作为面向核心的卡的Cisco 7600系列路由器支持基于mGRE的MPLS VPN。

配置

本节介绍两种配置：

- 在仅IP网络上具有mGRE隧道的动态L3 VPN

- 在IP + MPLS网络上具有mGRE隧道的动态L3 VPN

在仅IP（非MPLS）网络上具有mGRE隧道的动态L3 VPN

网络图

配置

这些是路由器3(R3)和路由器2(R2)上所需的配置。

以下是 R3 的配置：

l3vpn encapsulation ip MGRE

transport ipv4 source Loopback0

route-map MGRE-NEXT-HOP permit 10

set ip next-hop encapsulate l3vpn MGRE

router bgp 65534

!

address-family vpnv4

neighbor 192.168.2.2 route-map MGRE-NEXT-HOP in

以下是 R2 的配置：

l3vpn encapsulation ip MGRE

transport ipv4 source Loopback0

route-map MGRE-NEXT-HOP permit 10

set ip next-hop encapsulate l3vpn MGRE

router bgp 65534

!

address-family vpnv4

neighbor 192.168.3.3 route-map MGRE-NEXT-HOP in

验证

使用本部分可确认配置能否正常运行。

R2#show tunnel endpoints

Tunnel0 running in multi-GRE/IP mode

Endpoint transport 192.168.3.3 Refcount 3 Base 0x1E8E1B74 Create Time 00:47:53

overlay 192.168.3.3 Refcount 2 Parent 0x1E8E1B74 Create Time 00:47:53

R2#show l3vpn encapsulation ip MGRE

Profile: MGRE

transport ipv4 source Loopback0

protocol gre

payload mpls

mtu default

Tunnel Tunnel0 Created [OK]

Tunnel Linestate [OK]

Tunnel Transport Source Loopback0 [OK]

R2#show ip route vrf MGRE 172.16.3.3

Routing Table: MGRE

Routing entry for 172.16.3.3

Known via "bgp 65534", distance 200, metric 0, type internal

Last update from 192.168.3.3 on Tunnel0, 01:03:25 ago

Routing Descriptor Blocks:

* 192.168.3.3 (default), from 172.16.112.1, 01:03:25 ago, via Tunnel0 <points to tunnel

Route metric is 0, traffic share count is 1

AS Hops 0

MPLS label: 17   <BGP vpnv4 label>

MPLS Flags: MPLS Required

注意：在上一个示例中，只有两个PE。但是，如果您有一个具有多个PE路由器的大型网络，则此动态mGRE非常易于配置和扩展，因为您必须在所有PE上具有类似的配置，并且隧道会自动发现。

在IP + MPLS网络上具有mGRE隧道的动态L3 VPN

网络图

如果您有一个双连接方案，其中一个连接是MPLS，另一个是非MPLS，则必须在涉及的所有PE路由器上配置mGRE。使用此拓扑，必须在所有三台PE路由器上配置mGRE。

如果您尚未在R3和R1之间的MPLS链路连接上配置mGRE，则R3后面的子网无法与R2后面的子网通信。

R1和R2根据L3 VPN配置文件与R3建立隧道终端。请参阅本文档中的配置，其中未配置L3 VPN配置文件，未应用到R3上边界网关协议(BGP)对等体的路由映射，且未应用R1上R3的L3 VPN的路由映射。

配置

这些是R1、R2和R3上所需的配置。

以下是R1的配置：

l3vpn encapsulation ip MGRE

transport ipv4 source Loopback0

route-map MGRE-NEXT-HOP permit 10

set ip next-hop encapsulate l3vpn MGRE

router bgp 65534

address-family vpnv4

neighbor 192.168.2.2 send-community extended

neighbor 192.168.2.2 route-map MGRE-NEXT-HOP in

neighbor 192.168.3.3 activate

以下是 R2 的配置：

l3vpn encapsulation ip MGRE

transport ipv4 source Loopback0

route-map MGRE-NEXT-HOP permit 10

set ip next-hop encapsulate l3vpn MGRE

router bgp 65534

address-family vpnv4

neighbor 192.168.1.1 route-map MGRE-NEXT-HOP in

neighbor 192.168.1.1 activate

以下是 R3 的配置：

router bgp 65534

address-family vpnv4

neighbor 192.168.1.1 activate

验证

现在，您可以从R2 loopback1 ping R3 loopback1:

R2#ping vrf  MGRE  172.16.3.3 source 172.16.2.2

Type escape sequence to abort.

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

Packet sent with a source address of 172.16.2.2

.....

Success rate is 0 percent (0/5)

R2#show ip route vrf MGRE 172.16.3.3

Routing Table: MGRE

Routing entry for 172.16.3.3/32

Known via "bgp 65534", distance 200, metric 0, type internal

Last update from 192.168.3.3 on Tunnel0, 00:50:23 ago

Routing Descriptor Blocks:

* 192.168.3.3 (default), from 192.168.1.1, 00:50:23 ago, via Tunnel0

pointed towards a tunnel>

Route metric is 0, traffic share count is 1

AS Hops 0

MPLS label: 19

MPLS Flags: MPLS Required

R2#show tunnel endpoints

Tunnel1 running in multi-GRE/IP mode

Tunnel0 running in multi-GRE/IP mode

Endpoint transport 192.168.1.1 Refcount 3 Base 0x507665E4 Create Time 01:24:25

overlay 192.168.1.1 Refcount 2 Parent 0x507665E4 Create Time 01:24:25

Endpoint transport 192.168.3.3 Refcount 3 Base 0x507664D4 Create Time 00:50:51

overlay 192.168.3.3 Refcount 2 Parent 0x507664D4 Create Time 00:50:51

R2根据172.16.3.3路由的BGP下一跳为192.168.3.3创建了动态隧道。

R2#show ip bgp vpnv4 vrf  MGRE 172.16.3.3

BGP routing table entry for 43984:300:172.16.3.3/32, version 29

Paths: (1 available, best #1, table MGRE)

Advertised to update-groups:

1

Local, imported path from 300:300:172.16.3.3/32

192.168.3.3 (metric 3) (via Tunnel0) from 192.168.1.1 (192.168.1.1)

Origin incomplete, metric 0, localpref 100, valid, internal, best

Extended Community: RT:43984:300

Originator: 192.168.3.3, Cluster list: 192.168.1.1

mpls labels in/out nolabel/19

它已在R1上验证，并且为两个PE路由器创建了隧道终端：

R1#show tunnel endpoints

Tunnel1 running in multi-GRE/IP mode

Tunnel0 running in multi-GRE/IP mode

Endpoint transport 192.168.2.2 Refcount 3 Base 0x1E8EE7B0 Create Time 01:36:41

overlay 192.168.2.2 Refcount 2 Parent 0x1E8EE7B0 Create Time 01:36:41

Endpoint transport 192.168.3.3 Refcount 3 Base 0x1E8EE590 Create Time 00:59:34

overlay 192.168.3.3 Refcount 2 Parent 0x1E8EE590 Create Time 00:59:34

在R3上，未创建隧道终端：

R3#show tunnel endpoints

以下是R2子网的路由，它发出了ping:

R3#show ip route vrf  MGRE  172.16.2.2

Routing Table: MGRE

Routing entry for 172.16.2.2/32

Known via "bgp 65534", distance 200, metric 0, type internal

Last update from 192.168.2.2 01:01:57 ago

Routing Descriptor Blocks:

* 192.168.2.2 (default), from 192.168.1.1, 01:01:57 ago

Route metric is 0, traffic share count is 1

AS Hops 0

MPLS label: 17

MPLS Flags: MPLS Required

因此，数据包将封装在GRE中发送到R3。由于R3没有隧道，因此它不接受GRE数据包，并丢弃它。

因此，必须在路径上配置mGRE端到端，才能使其正常运行。以下是R3上mGRE的配置，这是必需的：

l3vpn encapsulation ip MGRE

transport ipv4 source Loopback0

route-map MGRE-NEXT-HOP permit 10

set ip next-hop encapsulate l3vpn MGRE

创建L3 VPN配置文件后，即会创建隧道终端，并且您收到之前丢弃的流量。但是，返回流量是MPLS而非GRE，除非您在BGP对等体上应用配置文件。该流量在R1上被丢弃，因为R1没有任何R2的标签信息，R2只运行IP。

R3#show tunnel endpoints

Tunnel0 running in multi-GRE/IP mode

Endpoint transport 192.168.1.1 Refcount 3 Base 0x2B79FBD4 Create Time 00:00:02

overlay 192.168.1.1 Refcount 2 Parent 0x2B79FBD4 Create Time 00:00:02

Endpoint transport 192.168.2.2 Refcount 3 Base 0x2B79FAC4 Create Time 00:00:02

overlay 192.168.2.2 Refcount 2 Parent 0x2B79FAC4 Create Time 00:00:02

R3#show ip cef vrf  MGRE  172.16.2.2

172.16.2.2/32

nexthop 192.168.13.1 GigabitEthernet0/0.1503 label 21 17

router bgp 65534

address-family vpnv4

neighbor 192.168.1.1 route-map MGRE-NEXT-HOP in

R3#show ip cef vrf  MGRE  172.16.2.2

172.16.2.2/32

nexthop 192.168.2.2 Tunnel0 label 17

R2#ping vrf  MGRE 172.16.3.3 source  172.16.2.2

Type escape sequence to abort.

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

Packet sent with a source address of 172.16.2.2

!!!!!

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

场景 3

假设R5后面需要与R3通信的子网不想使用mGRE。然后，您可以使用用于L3 VPN配置文件的路由映射来设置下一跳并调用前缀列表，并且仅允许需要mGRE隧道的前缀。

以下是R1的配置：

route-map MGRE-NEXT-HOP permit 10

match ip address prefix-list test

set ip next-hop encapsulate l3vpn MGRE

route-map MGRE-NEXT-HOP permit 20

您可以允许前缀列表测试中需要mGRE隧道的前缀，并且其他所有设备没有隧道作为送出接口并遵循正常路由。此配置之所以有效，是因为R3和R5具有端到端MPLS连接。

故障排除

目前没有针对此配置的故障排除信息。

相关信息

- 具有多点GRE隧道的动态第3层VPN

- 技术支持和文档 - Cisco Systems