目录

背景介绍

问题现象

故障分析

解决方案

相关命令

参考文档

背景介绍

在日常维护中，我们经常会遇到MTU mismatch的问题。有时尽管两端路由器或者交换机的端口MTU是一致的，但是还是会有大包PING不通，协议建立不起来的问题出现。这个时候，需要注意到，在设备间是否存在其他中间设备（如传输，L2交换机等。。），这些中间设备的MTU是否和两端路由设备一致。 下面让我们来看一下由于MTU mismatch 对于isis 协议的影响。

如上图所示，R1 R2为两台路由设备，端口的MTU设置成为9178.中间设备的MTU最小为9160.R1 R2 端口上的配置如下：

interface GigabitEthernet0/0/4

dampening

description To US-SJ-SJC-F-2.CN2 GE-1

mtu 9178   <<<<<<<<<<<<<<<<<<<<<<<<<<<

ip address 59.43.248.42 255.255.255.252

no ip redirects

no ip directed-broadcast

no ip proxy-arp

ip pim sparse-mode

ip router isis cn2

ip route-cache flow sampled input

load-interval 30

carrier-delay msec 60

no negotiation auto

mpls label protocol ldp

tag-switching ip

isis circuit-type level-1

isis network point-to-point

isis metric 2000 level-1

isis password 59.43.248.40

isis hello-interval 3

isis three-way-handshake ietf

no isis hello padding   <<<<<<<<<<<<<<<<<<

service-policy output pmOutput-Eo

hold-queue 1500 in

hold-queue 1500 out

ISIS 协议，缺省的行为时要按照端口的MTU大小去发送hello包的。这样做的好处有两点，1 在早期就能检测出大包传输不通的问题 2 MTU mismatch的问题。

当端口配置了“no isis hello padding”的时候，意味着取消了hello包被padding乘物理端口MTU size的行为，这样做的好处是能节省带宽。在一些比较新的IOS里，这个功能是被缺省打开的。下面让我们来分析一下MTU mismatch带来的问题。

问题现象

当网络一切正常，R1和R2之间的ISIS 已经UP后，客户基于业务需求，更改了R1和R2的MTU 从1500改为9178，之后发现一切正常。运行一段时间后，R1到中间设备的物理链路出现过一次flapping， 之后ISIS始终无法建立起来。客户检查配置，R1 R2两端MTU 都是9178。同时，端口上都已经enable 了“no isis hello padding”，但是邻居就是无法建立成功。客户将两端R1 和R2的MTU 重新设置回1500，ISIS 建立成功。最后，客户又将R1 R2的MTU从1500改回到9178， 发现ISIS还是UP的，业务恢复，一切正常。

故障分析

从上面的现象可以看出，显然这个问题是和MTU有一定关系的，首先从问题发生时的状态入手，可以看出MTU已经match了，disable了hello padding了，为何isis 的邻居还是建立不成功呢。 “no isis hello padding”工作的前提是isis邻居已经成功建立了，之后交互的hello包不在padding乘物理端口的MTU大小了，但是在ISIS邻居建立过程的前5个hello包，还是要被padding的，所以按照上图所示，前5个包，发出去的是9178，中间过程MTU是9160，过不去，这就导致了为什么isis的邻居建立不成功。后来客户把MTU调整回1500，hello 肯定是可以通过的，这样邻居就建立成功了，成功以后的hello 包都不在padding了，这也是为什么客户重新把MTU从1500调整回9178后，邻居没有断，依然是up的原因。

解决方案

1. 调整 整个path的MTU值，使其可以支持R1 和R2的9178大小的包通过而不需要分片。

2. 在R1 和R2物理端口下enable “no isis hello padding always “ , 注意，这是个隐藏命令，可以支持但是tab到。 这个命令可以让isis协议在建立初期的前5个hello包就不在padding。

3. 使用 CLNS MTU 在R2 R1 的物理端口上，这个值应当小与或等于9160。CLNS MTU只会影响isis协议所使用的MTU值，对普通的IP业务没有影响。当没有设置的时候，缺省它是等于端口的物理MTU的。设置的时候也要小于或者等于实际物理端口的MTU。

相关命令

Show clns neighbor

Debug isis adj-packets

Show interface type X/Y/Z

Extend ping with specific Size (this method could help you to detect the max size which is

supported by the whole path)

参考文档

MTU Mismatch Problem in IS-IS

Intermediate System-to-Intermediate System Protocol

CLNS 快速查阅手册