目录

简介

背景信息

四种不同的隧道状态

P2P GRE 隧道状态

线路协议在路由器本地关闭

GRE隧道Keepalive

带隧道保护功能的 GRE 隧道

多点 GRE (mGRE) 隧道接口

对冗余状态的依赖性

故障排除

相关信息

简介

本文档介绍可能对通用路由封装 (GRE) 隧道接口状态产生影响的各种不同情况。

背景信息

GRE 隧道设计为完全无状态。这意味着每个隧道终端不会保留有关远程隧道终端的状态或可用性的任何信息。由此产生的后果是，默认情况下，如果无法访问隧道的远程端，本地隧道终端路由器将无法关闭 GRE 隧道接口的线路协议。使用在链路远程端不可用时将接口标记为关闭的功能，是为了删除路由表中使用该接口作为出站接口的所有路由（具体说来是静态路由）。具体而言，如果接口的线路协议更改为关闭，则会从路由表中删除使用该接口的所有静态路由。这样就可以安装备用（浮动）静态路由，或实施基于策略的路由 (PBR)，以便选择备用的下一跳或接口。此外，还可以在接口更改状态时触发其他应用；例如“backup interface <b-interface>”。

四种不同的隧道状态

GRE 隧道接口可能出现四种状态：

1. “打开/打开”- 这意味着隧道完全正常运行并传输流量。它处于管理性开启状态且其协议也处于开启状态。

2. “管理性关闭/关闭”- 这意味着接口已管理性关闭。

3. “打开/关闭”- 这意味着虽然隧道处于管理性打开状态，但某些情况导致了接口上的线路协议处于关闭状态。

4. “重置/关闭”- 这通常是在软件重置隧道时发生的瞬时状态。当隧道错误配置了自己的IP地址下一跳服务器(NHS)时，通常会发生这种情况。

当首次创建隧道接口且未向其应用其他配置时，默认情况下不会关闭该接口：

Router#show run interface tunnel 1

Building configuration...

Current configuration : 40 bytes

!

interface Tunnel1

no ip address

end

在此状态下，接口始终处于“打开/关闭”状态：

Router(config-if)#do show ip interface brief

Interface                  IP-Address      OK? Method Status                Protocol

GigabitEthernet0/0         172.16.52.1     YES NVRAM  administratively down down

GigabitEthernet0/1         10.36.128.49    YES NVRAM  down                  down

GigabitEthernet0/2         unassigned      YES NVRAM  down                  down

GigabitEthernet0/3         unassigned      YES NVRAM  down                  down

Loopback1                  192.168.2.1     YES NVRAM  up                    up

Tunnel1                    unassigned      YES unset  up                    down

这是因为接口已管理性启用，但由于它没有隧道源或隧道目的地，因此线路协议会关闭。

要使此接口进入“打开/打开”状态，必须配置有效的隧道源和隧道目的地：

Router#show run interface tunnel  1

Building configuration...

Current configuration : 113 bytes

!

interface Tunnel1

ip address 10.1.1.1 255.255.255.0

tunnel source Loopback1

tunnel destination 10.0.0.1

end

Router#show ip interface brief

Interface                  IP-Address      OK? Method Status                Protocol

GigabitEthernet0/0         172.16.52.1     YES NVRAM  up                    up

GigabitEthernet0/1         10.36.128.49    YES NVRAM  down                  down

GigabitEthernet0/2         unassigned      YES NVRAM  down                  down

GigabitEthernet0/3         unassigned      YES NVRAM  down                  down

Loopback0                  unassigned      YES unset  up                    up

Loopback1                  192.168.2.1     YES manual up                    up

Tunnel1                    10.1.1.1         YES manual up                    up

以上序列信息显示：

- 有效隧道源包括本身处于“打开/打开”状态并已配置 IP 地址的任何接口。例如，如果隧道源已更改为 Loopback0，即使 Loopback0 处于“打开/打开”状态，隧道接口也会关闭：

Router(config)#interface tunnel 1

Router(config-if)#tunnel source loopback 0

Router(config-if)#

*Sep  6 19:51:31.043: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to down

- 有效隧道目的地是指可路由的目的地。但是，该目的地不一定可访问，这可通过执行以下 ping 测试来了解：

Router#show ip route 10.0.0.1

% Network not in table

Router#show ip route | inc 0.0.0.0

Gateway of last resort is 172.16.52.100 to network 0.0.0.0

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

Router#ping 10.0.0.1

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

到目前为止，隧道已配置为点对点 (P2P) GRE 隧道，这是默认设置。如果将此隧道更改为多点 GRE (mGRE) 隧道，则只要具有有效的隧道源，隧道即可处于打开状态（mGRE 隧道可以有很多隧道目的地，因此无法用于控制隧道接口状态）：

Router#show run interface tunnel 1

Building configuration...

Current configuration : 129 bytes

!

interface Tunnel1

ip address 10.1.1.1 255.255.255.0

no ip redirects

tunnel source Loopback1

tunnel mode gre multipoint

end

Router#show ip interface brief | include Tunnel

Tunnel1                    10.1.1.1         YES manual up                    up

如果隧道接口在任何时候被管理性关闭，隧道会立即进入“管理性关闭/关闭”状态：

Router#show run interface tunnel 1

Building configuration...

Current configuration : 50 bytes

!

interface Tunnel1

no ip address

shutdown

end

Router#show ip interface brief | include Tunnel

Tunnel1                    unassigned      YES unset  administratively down down

P2P GRE 隧道状态

P2P GRE隧道接口通常在配置了有效的隧道源地址或启用接口和可路由的隧道目标IP地址后立即启用，如上一节所示。

线路协议在路由器本地关闭

在正常情况下，只有三个原因会导致 GRE 隧道处于“打开/关闭”状态：

- 没有通往隧道目的地址的路由（包括默认路由）。

- 定位隧道源的接口关闭。

- 通往隧道目的地址的路由经过隧道本身，这会导致递归。

这三个规则(missing路由、接口关闭和隧道目的地路由错误)是隧道终端上路由器本地的问题，不包括介入网络中的问题或与GRE隧道相关的可配置的其他功能。本文档介绍其他因素可能影响GRE隧道状态的方案。

GRE隧道Keepalive

基本规则不包括 GRE 隧道数据包成功转发但在到达隧道另一端前丢失的场景。这样，通过 GRE 隧道的数据包会“被黑洞吞噬”，即使可以使用 PBR 备选路由或另一个接口的浮动静态路由。在 GRE 隧道接口上使用保持连接来解决此问题，这与在物理接口上使用保持连接方式相同。

使用 Cisco IOS® 软件版本 12.2(8)T，可以在 P2P GRE 隧道接口上配置保持连接。通过此更改，如果keepalive在某一时间段内失败，隧道接口将动态关闭。为了更好地了解GRE隧道keepalive的工作方式，请参阅GRE隧道Keepalive。

注意：GRE 隧道保持连接仅对 P2P GRE 隧道有效和产生影响；它们对 mGRE 隧道无效，也不会产生任何影响。

带隧道保护功能的 GRE 隧道

在Cisco IOS软件版本15.4(3)M/15.4(3)S及更高版本中，GRE隧道线路协议状态可以遵循IPsec安全关联(SA)状态，因此线路协议可以保持关闭，直到IPsec会话完全建立。此问题已使用思科漏洞 ID CSCum34057 提交（最初尝试使用思科漏洞 ID CSCuj29996 提交，后来使用思科漏洞 ID CSCuj99287 进行撤消）。

多点 GRE (mGRE) 隧道接口

对于 mGRE 隧道接口，由于没有固定的隧道目的地，因此之前对 P2P 隧道进行的某些检查不适用。以下是mGRE隧道线路协议可能处于关闭状态的原因：

- 隧道源接口处于关闭状态。

- 如果为动态多点 VPN (DMVPN) 启用了接口状态控制功能，但没有任何 NHS 作出响应，则线路协议处于关闭状态。有关接口状态控制功能的详细信息，请参阅 DMVPN 隧道运行状况监控和恢复配置指南。

对冗余状态的依赖性

当隧道源 IP 地址被配置为冗余 IP 地址（例如，热备用路由器协议虚拟 IP [HSRP VIP] 地址）时，隧道接口状态会跟踪冗余状态。

这增加了一项额外的检查，使线路协议中的这些隧道接口保持关闭状态，直到冗余状态变为“活动”。在此示例中，错误配置的 ipc zone default 配置会导致冗余处于“协商”状态，并使这些隧道接口保持关闭状态：

Router#show redundancy state

my state = 3  -NEGOTIATION

peer state = 1  -DISABLED

Mode = Simplex

Unit ID = 0

Maintenance Mode = Disabled

Manual Swact = disabled (system is simplex (no peer unit))

Communications = Down      Reason: Simplex mode

client count = 16

client_notification_TMR = 60000 milliseconds

RF debug mask = 0x0

Router#show interface tunnel100

Tunnel100 is up, line protocol is down

Hardware is Tunnel

Internet address is 172.16.1.100/24

MTU 17912 bytes, BW 100 Kbit/sec, DLY 50000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation TUNNEL, loopback not set

Keepalive not set

Tunnel source 10.122.162.254 (GigabitEthernet0/1)

Tunnel Subblocks:

src-track:

Tunnel100 source tracking subblock associated with GigabitEthernet0/1

Set of tunnels with source GigabitEthernet0/1, 2 members (includes

iterators), on interface <OK>

Tunnel protocol/transport multi-GRE/IP

<SNIP>

故障排除

除上述原因外，还可以使用show tunnel interface tunnel x hidden命令查看隧道关闭原因的隧道线路状态评估，如下所示：

Router#show tunnel interface tunnel 100

Tunnel100

Mode:multi-GRE/IP, Destination UNKNOWN, Source GigabitEthernet0/1

Application ID 1: unspecified

Tunnel Subblocks:

src-track:

Tunnel100 source tracking subblock associated with GigabitEthernet0/1

Set of tunnels with source GigabitEthernet0/1, 2 members (includes

iterators), on interface <OK>

Linestate - current down

Internal linestate - current down, evaluated down - interface not up

Tunnel Source Flags: Local

Transport IPv4 Header DF bit cleared

OCE: IP tunnel decap

Provider: interface Tu100, prot 47

Performs protocol check [47]

Performs Address save check

Protocol Handler: GRE: key 0x64, opt 0x2000

ptype: ipv4 [ipv4 dispatcher: drop]

ptype: ipv6 [ipv6 dispatcher: drop]

ptype: mpls [mpls dispatcher: drop]

ptype: otv [mpls dispatcher: drop]

ptype: generic [mpls dispatcher: drop]

注意：有一个开放式增强功能，用于使隧道关闭的原因更加明确，以表明它是由于冗余状态而关闭的，因为它不是活动的。此增强功能记录在思科漏洞 ID CSCuq31060 下。

相关信息

- RFC 1701，通用路由器封装 (GRE)

- RFC 2890，GRE 密钥和序列号扩展

- 通用路由封装 (GRE) 隧道Keepalive

- IP 分段和 PMTUD

- 技术支持和文档 - Cisco Systems