西西河

主题:【原创】寻找小强 -- 数据传输故障调查实例 一 -- 萨苏

共:💬99 🌺346
全看分页树展 · 主题 跟帖
家园 【原创】寻找小强 -- 数据传输故障调查实例 五 完

所谓网络协议分析仪,是怎样的一种东西呢?

大家可能记得某个电影中有类似这样的情节 –土八路武工队在鬼子两个据点之间的电话线上接根线出来连上电话机,侦察员拿起电话来听听,不一会儿回过头来对指挥员说 – 队长,今天下午两点,赵各庄的鬼子要送一车臭豆腐到县城,咱打不打?

点看全图
外链图片需谨慎,可能会被源头改

八路咋知道俺们要运臭豆腐尼?

网络协议分析仪的工作原理,和这种窃听鬼子电话通信的做法差不多,窃听的地点,就是SW数据交换机。这是因为,所有的数据,都要经过SW数据交换机,而数据交换机上一般都有多余的空闲端口,只要把这个空闲端口与数据传递的端口设成Port Mirroring,网络协议分析仪就可以从这个空闲端口监听所有来往的数据包,就好像在线路上放了耳朵来听。

点看全图
外链图片需谨慎,可能会被源头改

孩儿她娘,精神点儿。最近老是闹蟑螂,你好好听听,厨房有没有小强在爬?

而从这些数据包的内容,往往可以看出数据传送中存在哪些问题。

早期的网络协议分析仪是一台真正的机器,在九十年代前期是价格昂贵的东西。然而,和网络世界的所有东西一样,能被“虚拟”的,今天都不会再以硬件的方式存在了。只要安装一个软件,例如Sniffer Pro或者Ethereal,任何一台普通的计算机都可以把自己当成网络分析仪使用。

而且有些这样的软件已经是免费的,比如我现在使用的Wireshark

点看全图
外链图片需谨慎,可能会被源头改

Wireshark的商标

点看全图

外链图片需谨慎,可能会被源头改

Wireshark开始截取数据后的主画面,不同颜色代表不同类型的数据,可以轻易找出出错信息

Wireshark这个名字很是贴切 – “线上鲨鱼”,容易让人想起一头张开血盆大口的巨鲨,吞噬线路上的一切数据。

Wireshark的前身,是Sniffer类软件中颇有名气的Ethereal,后来他的设计者跳槽却没法带着商标走,只好换了这个更加响亮的名字。

萨比较欣赏这个软件的原因,一是其代码开放,在Unix,Linex,Windows环境下都可以免费使用;另一是它的界面十分友好,容易操作。通过一个端口的数据很多,真正对调查故障有帮助的却并不多。这就好像电话线上鬼子之间的说话也可能有很多是聊天打屁,对八路毫无意义。作为武工队的侦察员他没有办法限制鬼子聊什么,只好什么都听,然后自己判断哪些有用哪些没用,这是个很累的活儿。但是Wireshark可以让网络工程师省去这样的烦恼,它可以很好地进行过滤。例如,线路两端固定的一台计算机A与另一台计算机B之间的通讯有问题,我要调查,只需要在Wireshark的Capture filter里面作一个设定,规定只监控这两台计算机之间的数据就可以了。

点看全图

从上面的图,可以看出设置的方法很是简便 (假设了一个Filter,叫Lixiangyang,两台计算机地址分别是3.3.3.2,8.8.8.8)

就这样,为了查清这个数据传输迟缓的问题,我在服务器与防火墙之间,防火墙与SW之间,SW与路由器之间分别设置了三台带有Wireshark的PC,接着下令对端开始数据传输,进行监控分析。

三条大鲨鱼抓小强,再抓不着这小强也太狡猾了。

Wireshark有一个很好的功能,可以汇总传递中看来可疑,有可能成为问题点的数据包,这个功能就是其Analyze/Expert Info Composite,下面这个画面,就是这次测试中得到的汇总画面。

点看全图

虽然有这样好的工具,对数据的分析,也花费了很长的时间,然而,最终正是这个工具,让技术人员发现了真正问题之所在。

经过分析,数据的传递并无大恙,但是,有一种数据包却多得惊人 – TCP Zero Window,这是不正常的。

说明这种数据包多不正常是怎样的意义,可能会把文章变得很枯燥。简单地说,就是说接收数据的服务器,在不断通告发送一方 – 我受不了啦,你慢点儿发。

这就可以有力地解释到底是谁导致了数据输送速度的降低 – 罪魁祸首与网络无关,却是负责接收数据的服务器计算机效率太低!

点看全图
外链图片需谨慎,可能会被源头改

原来,你小子就是小强!

甚至其原因也可以清楚地找到 -- TCP buffer space being overloaded – 接收端数据缓冲区不足。

于是,即刻与负责服务器的工程师联系,经过紧急修改缓冲区尺寸,数据的通讯质量迅速回升.

小强击毙,问题解决。

小强虽然被击毙,还有一个很大的麻烦得去面对 -- 这件事的解决,已经是“案发” 48小时之后,从上到下的头头脑脑们都在问 – 到底是谁的责任?!

按说,此事的责任似乎十分明确 – 安装系统的时候,负责服务器的工程师明白大数据量传输对缓冲区的冲击,所以把系统缓冲区设的很大,完全符合要求。现在忽然变小了,肯定是有人改了系统呗。

而拥有改系统设置权力的工程师,不过区区三人而已,找出罪魁祸首来似乎不是很困难。

点看全图

说,是不是你把小强放进臭豆腐里去的?

然而,这三个工程师 -- 包括一个中国的,一个印度的,还有一个日本的,个个大义凛然,坚持此事与自己无关,无论威逼利诱人人都是打死你我也不说的架势,可见硬骨头在世界各地都有出产,并非我国专利。

更让人可恼的是,系统纪录也显示,在问题发生的阶段,他们的确没有对系统进行任何操作,计算机还没有发展到铁臂阿童木阶段,尚无撒谎的智慧,这下子,就算让鸠山太君来查,恐怕也是一个无头案。

最后查出来的罪魁祸首让人啼笑皆非。

竟然是微软公司。

原来,我们这个服务器,安装的是微软公司Windows2003 Server操作系统,这微软公司虽然是天下第一大软件公司,但却是丐帮出身的 – 没事儿就给你衣服上加补丁(Patch),一年下来那叫补丁摞补丁阿,数不胜数。

点看全图
外链图片需谨慎,可能会被源头改

微软公司前总裁比尔盖茨想象生活照

我们的系统工程师不胜其烦,就给服务器设置了一个定期任务,随时安装微软公司提供的系统补丁。

结果,这一安装,就惹出了大麻烦 – 其中某个微软公司的补丁本身还需要补丁,因为它安装之后,自动会把系统的主要参数全部回归出厂设置!

于是,这台服务器的缓冲区,也就自动回归了出厂时低于我们所需要数值的设置,在工作中不敷分配了。

具体是哪一个补丁捣的乱,现在敝公司还在和微软打嘴皮官司验证,不过这一次安装的所有补丁编号可以提供给大家,前车之鉴,如果大家安装它们的时候,千万要加些小心。

KB943460

KB942763

KB941568

KB944653

KB941569

KB941644

KB943485

KB942831

KB946026

KB943055

KB948496

KB941693

KB945553

KB947864

KB948590

KB948881

KB944338

这补丁里面,可藏着三笑逍遥散呢!

点看全图

点看全图

事情总算过去,对于一个工程师来说,忙了几天之后,点开画面对比一下问题解决前和解决后完全不同的数据传输曲线,这才是最让人觉得愉快的事情吧。

[完]

点看全图
外链图片需谨慎,可能会被源头改

走,跟我上王沟道口买臭豆腐去,这头疼的事儿总算弄完了,咱也得去乐和乐和。。。


本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河