前段时间有客户报障,说某个业务应用,有一段时间使用不了,而之前一直是正常使用的,网络的拓朴图如下,现在是CE1连接不到CE2

   刚开始,只是在自己负责的那部分PE网络B点到E点,用1500字节的,设置DF位的ICMP包进行ping检查,无异常,网络非常畅通,于是将问题丢回给客户,让他们检查CE1到PE-B的链路是否正常。但过后,还是反应不关CE1到PE-B链路的问题,因为他们由CE-1到另一个网络A的相同业务应是正常。
    当问题变得棘手时,另一位同事仔细观察,发现CE-1流向CE-2的数据流是走B->C->E->CE2,而由CE2返回的数据流则走E->D->B-CE1,再检查这几个PE的配置,惊讶地见到C和B,C和E之间的互连端口都有正确地配置“ tag-switching mtu 1518”,即指定MTU最大值为1518,而D和B,D和E之间的互连端口则缺少这一命令。因此,可知当数据从CE2返回到CE1时,由于这段链路不能让1500字节的、不分段的数据包通过,从而导致客户的业务出现问题。重新添加这条命令后,故障即消失。从此次案例可知,部署MPLS ***网络时,各个PE之间一定要指定MTU最大值,而华为和思科的设备,对这个值的定义又是有所不同。对于部署了MPLS ***网络的运维人员来讲,经常会遇到MTU的问题,看来有必要看看相关的文章了。
    对于这个案例,客户说之前业务一直是正常的,只是几个月前出现故障(他们的报障流程也太。。。)。联想到此网络,之前曾整体断电进行维护,有经验的同事指出:断电前,CE1到CE2的数据流,发送和返回都是走B->C->E这一段,所以才没人发现MTU的问题。