作为比较有经验的网络工程师都知道,用来解决网络上的问题(或系统问题)的方法是非常多的。而在众多方法中决定哪一个方法“更好”是非常主观的,而且可能会以和其他网络工程师非常激烈的讨论结束。本文简单介绍一下常见故障排除技术,对这些技术的了解对于那些希望获得思科认证网络专业人员(CCNP)和其他更高级别的认证的人是至关重要的。CCNP TSHOOT考试是CCNP考试中必考的一门,这门考试需要本文涉及的一些概念的知识。
自上而下的方法(Top-Down Approach)
自上而下的方法采用开放系统互连(OSI)模型的层次结构。由于大多数网络工程师都在专研OSI和TCP/IP模型的架构,用其中一个架构来建立排错模型是非常有道理的,而且对于那些训练有素的网络工程师来说也很自然。自上而下的模型就像它的名称表示的一样,是首先看看应用层(OSI模型),然后向下排错直到在某一层发现了问题所在。这种模式排错法适用于排错某台计算机上出现了明显的应用层故障。举个使用自上而下方法的例子,当问题发生的时候,首先查看应用层并确定其是否出现故障,如果不是,再逐层往下排错,直到物理线路连通性得到确认。
自下而上的方法(Bottom-Up Approach)
自下而上的方法,使用相同的OSI模型为基础,但首先检查物理层。显然,要真正使用这个方法,对机器的一些物理上的访问是必需的(例如要查看线缆是否被插入或连接是否正确)。有时这是需要的,有时却没有这个需要。网络工程师采用这种方法会先确认问题发生点是否是在应用层,否则会花费大量无必要的时间去对其他层进行排错。举个自下而上方法的例子,当问题发生时,首先确保网络线缆连接性是否存在,然后再检验数据链路层可用性,直到最后可能检测应用层以确保问题发生所在的层次。
分而治之(Divide and Conquer)
分而治是一个非常受欢迎的解决网络问题的技术。不像从OSI模型的头或尾开始排错,分而治之方法从网络架构模型的中坚开始排错,然后根据错误方向进行进一步排错。例如,网络工程师可以尝试ping或traceroute设备来确认问题是发生在网络层以下还是传输层以上的位置。分而治之的方法是最常用的故障排除方法之一,主要是因为它避免了无论是自上而下和自下而上的方法都存在的局限:不知道在OSI模型的哪一侧存在着问题的时候无法进行排错。分而治之方法从OSI模型中间开始排错,一般来说会比自上而下和自下而上方法所检测的层数要少,也就意外着在处理速度和解决问题时间上要比前两者要有优势很多。
遵循路径(Follow the Path)
遵循路径技术通过网络传播路径定位一个问题所在,如traceroute工具可以跟踪网络封包传输的路径。Traceroute如果无法正常完成,那么在出现不正常的该点可能存在问题,有时故障排除要点在于确定网络是否正在通过应该通过的“正确”的路径。这是很容易通过traceroute确定的,网络在哪里出现非正常路径,就应该在哪里进行继续排错。
区分差异(Spot the Differences)
区分差异的技术一般在有参照物的时候使用。例如对接入路由器的配置进行排错的时候,网络工程师可以通过比较配置,以确定是否存在丢失或额外的命令。网络工程师要利用这个方法必须有足够的相关知识,知道什么应该是不同的,什么是必须相同的。
转移问题(Move the Problem)
在这篇文章中所涵盖的最后的故障诊断技术是转移问题的方法。这里的基本原则是,如果一个组件在问题中被移动,问题也跟着消失了,那么问题存在于该组件中。如果问题依旧,然后该组件可能是没有问题的。与所有的其他方法相比,转移问题方法只有在特定的情况下才能使用,它需要可移动的组件以测试,这也是这种方法的主要限制因素之一。举一个简单的例子:如果存在两个分公司,利用同样的路由器和相同(相似)的配置,如果设备进行交换而问题从这个分公司转移到了另一个分公司,那么问题很有可能是存在于跟随分公司移动的那台路由器上。
总结
显然有一些在进行故障排错时,可以使用不同的方法,其中使用哪一种方法在很大程度上取决于具体情况和正在排错的对象。总的来说,每种方法都有其优点和缺点,没有一种方法是完美的,只有在特定的情况下使用特定的方法才能达到最高效。真正有经验的网络功能工程师知道在什么情况下使用什么方法,以减少花在排错上的时间而达到更快解决问题的目的。
无论你是否在准备在CCNP TSHOOT考试,都希望这篇文章所提到的方法建议恩那个帮助到你。
译自:petri
文章评论
文章分享的专业,是个经验的学习。谢谢
IT不错哟
文章很有技术含量!
第一次来,博客真漂亮
@屠苏 哈哈,谢谢
这是篇好文章啊。支持下,当时没有学习网络方面,原因主要是没有网络学习的环境吧。
@海纳百川 我刚学的时候其实也是,都是用模拟器搭的实验,现在偶尔也用用。
it人士着实伤不起啊,太复杂了,这条路也太难了啊
曾经也想过走这条路,但是走到半路就回头了,太苦逼了。
@刘印博客 哈哈,其实和程序员差不多苦逼啊。那你现在转做什么了呢?
@挨踢小茶 自由职业,爱干啥,干啥!!
@刘印博客 哈哈,羡慕嫉妒恨啊
@刘印博客 不错 学习了
没做过这个复杂的工作
软件工程师也一样啊,适当的时候换换角度,可能会更快,更好的解决问题~
@i吴亚辉 是啊,排错这种事情,一开始方向走错,后面就要花费更多时间去纠正。