组网网络测试丢包处理过程
从结构上来看,这个网络采取了一个比较典型的接入模式。用户通过二层交换机或是三层交换机接入会聚装备BH6808,再通过BH6808的组网功能接入到骨干INTERNET&组网网络里。各装备接口IP分配参看拓扑图,BH6808和骨干网络之间运行OSPF和组网协议,OSPF通告直连网段和指向172.0.0.0/24的静态路由;三层交换机采取静态路由方式。在调试结束后,在PCA和PCB都做了相干的测试,PING各个接口地址和DNS服务器地址都可达。
二、问题描写
在网络接入实际用户时,出现了问题,从现场反馈的信息里,可以了解到一个重要的信息:三层交换机接入的用户在打开部份网页时,不能正常开启,但DNS可以解析到,而二层交换机接入的用户则一切都比较正常。
三、问题分析及处理进程
从网络结构和现象上分析,BH6808下接三层交换机或是二层交换机的结构变化,对IP网络的影响应当基本上不会触及到骨干网络,初步怀疑两种结构的两种结果应当就是和BH6808和接入交换机有关系,然后开始依照这个思路开始排查问题。
在做进一步分析前,可以做一些简单的、有效果的工作来减小问题的排查范围。比如装备替换法,更换不同系列的三层交换机或是将该三层交换机改成二层交换机测试,更换不同系列装备可以肯定故障和单台装备没有关系;将三层交换机改成二层交换机测试可以肯定故障和该交换机的物理端口特性没有关系(担心物理端口对某些报文的影响),但更换三层装备无效,故障现象仍如前面描写的情况。将三层交换机切换成二层功能,交换机下的用户就能够访问所有网站,跟前面描写的情况一样。从而排除接入装备的问题。
进一步,在接入层装备上对打开上海盛大网络(www.shanda.com.cn)的主页进行抓包分析。对抓到的报文做对照分析,可以看到二层交换机接入用户的HTTP交互的完全进程,是从TCP连接到HTTP报文的传送,HTTP数据报文的长度为1518字节;而三层交换机接入用户的HTTP交互进程里,只存在TCP连接,没有HTTP报文的传送!现在问题的问题排查点出来了,
这些报文丢在哪儿呢,为啥丢呢?
通过MIRROR各个装备的上行端口,逐级排查,最后肯定在三层交换机接入的方式下,BH6808上行端口就没有收到CISCO装备发过来的HTTP报文,也就是说实际上是CISCO装备把HTTTP数据报文抛弃了,为啥呢?如前所说,对IP网络来讲,BH6808下接三层交换机或是二层交换机的结构变化,对骨干的CISCO装备应当是没有影响的,但请注意两点:
1、对接入二、三层交换机,在BH6808上体现的就是目的网段是直连或是静态路由。比如,如果接入的是二层交换机,目的网段是192.168.2.0/24的为直连路由;而接入三层交换机,目的网段是172.0.0.0http://blog.sina.com.cn/s/24,则应当是静态路由。
2、BH6808和CISCO装备之间运行了组网。
这两点会致使出现甚么情况了,在BH6808上SHOW
相干的信息:
showmplsldpbindings172.0.0.0/24
Prefix172.0.0.0/24
localbinding:label:2118
remotebinding:
192.168.0.1:0.0label:
208
status:Liberal
showmplsipbinding
ldp172.0.0.0/24
Prefix:172.0.0.0/24
OperType:
php
In
Label:2118
Out_if:netbar1
showmplsforwardingtable
172.0.0.0/24
Local
Outgoing
Prefix
Outgoing
Next
Hop
label
label
orvc
id
interface
2118
3
172.0.0.0/24
netbar1
192.168.1.2
通过这些信息,可以肯定CISCO装备在发送目的IP为172.0.0.0/24的数据包时应当是携带了组网标签的,标签值为2118.
showmplsldpbindings
192.168.2.2/24
Prefix192.168.2.2/24
localbinding:label:implicitnull
remotebinding:
192.168.0.1:0.0label:
218
status:Liberal
直连网段则为空标签,根据组网PHP(倒数第二跳弹出)的机制,可以肯定CISCO装备在发送目的IP为192.168.2.2/24的数据包时应当是不携带组网标签的IP报文。而目的IP为172.0.0.0/24的数据包时是携带了组网标签的,恰正是携带标签的这些数据包,在HTTP传输进程中没有转达到BIG6800上来。那末,简单想想就能够得出这样的结论:没有加组网的报文CISCO装备能发出,而加了组网的报文CISCO装备没能发出来!
这两种报文的区分在哪里呢(为什么加了组网就发不出来呢)?
到此,可以把问题怀疑到了数据报文的长度上来了,由于网页的HTTP报文长度本身已到了以太网帧的最大长度1518,加上组网标签的4个字节,在三层交换机接入的情况下,在CISCO装备和BH6808之间的数据帧最长应当是1522字节;而二层交换机接入时,在CISCO装备和BH6808之间的数据帧最长只会是1518字节(不会有标签)。可以肯定BH6808能够接受的以数据帧MTU长度是1544字节,但CISCO装备呢?在和CISCO装备的管理人员沟通后发现CISCO装备和BH6808对接的EH2/1端口实际上的以数据帧最长长度是1518字节,所以当需要发往172.0.0.0/24的数据帧长度到达1522字节后,CISCO装备EH2/1端口将会抛弃这些数据帧。
在修改了CISCO装备EH2/1端口的数据帧MTU后,上网业务全部恢复正常,二层交换机和三层交换机的用户都可以正常开启海盛大网络(www.shanda.com.cn)的主页,问题解决!
四、总结
这个网络问题或比较“隐蔽”的,首先应当分析出网络结构不同对数据转发和数据格式的不同影响,同时下接三层交换机不能正常通讯是由于CISCO装备EH2/1端口支持的数据帧长度不够,致使该端口抛弃组网报文。
另外,还请注意端口支持的数据帧长度和接口MTU的区分,接口的MTU通常为指的IP数据的长度(在SHOW
INTERFACE时可以查看),该长度值对一些协议有很重要的作用,比如OSPF在邻居建立时需要检查该长度值,所以不能随意修改,而端口可以接受的数据帧长度则是可以改变的,这个数据帧长度包括了802.1Q和组网标签的长度。
对组网交换机,目前的实现方式是非直连路由不分配空标签,不履行PHP。其缘由在于目前的实现方式里不能肯定非直连路由的下一跳是否是也是组网交换机,也就是不能肯定组网交换机自己不能肯定自己会不会LSP里的倒数第二跳。