GRE(Generic Routing Encapsulation,通用路由封装)协议是一种三层隧道技术,以IP作为传输协议,在IP协议之上承载其他网络层协议,包括IP、IPX等,GRE对应的IP协议号为47。
在使用GRE隧道连接的组网中,如果出现GRE隧道连通性问题,故障排除方法参考如下:
1、 检查GRE Tunnel参数配置是否正确
在GRE Tunnel两端设备上 ,通过display current-configuration命令查看GRE Tunnel两端的外层源、目的IP是否匹配。
2、 检查GRE Tunnel外层IP地址可达性
在GRE Tunnel一端使用ping检查外层源IP与目的IP的连通性,如果ping超时不通,可以使用tracert定位网络中断的具体位置,并检查两端的路由表,是否学习到对端的外层IP地址路由。
3、 检查GRE Tunnel两端的key是否一致
如果启用了GRE key,必须保证两端key完全相同。
4、 检查GRE Tunnel两端设备路由表
如果GRE Tunnel本身可以连通,但是数据无法经过GRE隧道转发,需要检查两端设备的路由表,检查数据报文目的IP地址是否指向GRE Tunnel接口,如果没有目的IP的路由,需要添加静态或者启用动态路由解决。
5、 检查GRE Tunnel的MTU
GRE头部长度一般为4字节,外层IP封装为20字节,因此使用GRE隧道比原始IP多占用24字节,Tunnel的MTU有可能自动降为1476,导致长度为1500字节并且设置了DF位的报文无法通过。
解决GRE Tunnel MTU问题,有两种方法。第一种是修改GRE Tunnel的 MTU值为1500;第二种方法针对TCP应用,使用tcp mss命令修改TCP最大分段尺寸,建议修改为1436。