这个是小弟我第一次翻译文章,译地不要,请多指教……
 
译文:
  我在以前的工作岗位上,别人经常请我指导他们如何准备应聘网络工程师和职业服务的技术面试。一个CCIE和有与之相称的经验通常是通过上述技术面试的一个方法,所以那些应聘者在知道他们已经具备上述资格的时候就不再垂头丧气了。

  除非应聘者来自有系统提供商背景的工作岗位,否则他们很可能不具备实际的MPLS和IS-IS知识,而仅仅具备一些简单的BGP经验。所以,我面试时经常不在MPLS和IS-IS上进行深挖,而是仅仅只尝试判断他们的对这些即将很快进入他们工作领域协议的快速学习能力。我是这么做的,但是我希望每个应聘者都拥有广泛和深厚的OSPF经验,并且这些才是我大多数问题所关注的重点所在。

  下面这个问题是排在我最喜欢的技术面试问题中第一位的,这几乎在我每次面试的时候都会问的。这是一个可以透露出一个人是否对协议是怎样工作的有一些了解,不仅仅局限于它是怎样配置的。可是还是令我震惊的是,还是有很多应聘者倒在了这道问题上。

  这道问题就是:

  为什么OSPF要求两个非骨干区域的所有通信流量都要通过骨干区域(area 0)?

  对比链路状态协议的三个基本概念,这些概念几乎是每个初学OSPF的人都知晓的,这个问题的答案将很容易得出。

  第一个概念是

  每个链路状态路由器将把关于自身、直连链路和其邻居的信息泛洪给其他路由器。从这泛洪的信息中,每个路由器将建立一个完全相同的链路状态数据库。然后每个路由器将依据这个数据库独立地运行最短路径协议计算——一个使用分布式信息的本地计算——来生成一个最短路径树。这个树是一个去往其他每个路由器最短路径的分类图。

  一个链路状态协议的优点是链路状态数据库提供了整个网络的详细“视图”,阻止了大多数的路由环路。这个和距离矢量协议不同,距离矢量协议的路由信息是逐跳传输到整个网络的并且计算是每跳进行的——一个使用本地信息的分布式计算。每一个路由器跟着一个路由器,这样的架构是建立在下一跳路由器已经正确地完成了路径选择计算并且正确地传递了结果。当一个路由器通告它所学的前缀给他的邻居,基本上可以说成是“我知道如何到达目的地。”因为每一个距离矢量路由器只知道它邻居所告示给他的,并且除去它的邻居外,对整个网络没有一个清晰的视图,距离矢量协议是容易出现环路的。

  第二个概念是

  当链路状态域变大,泛洪和链路状态数据库的大小变成了一个相当具有规模的问题。这个问题的解决办法是将路由域打破成多个区域:这样第一个概念就被修改了,变成了泛洪只发生在一个区域边界以内,并且这样导致链路状态数据库只包含了来自区域内路由器的信息。这发过来又意味着每一个路由器计算的最短生成树仅仅描述了去往这个区域内其他路由器的路径。

  第三个概念是

  OSPF区域间是通过一个或者多个区域间路由器(ABR)连接的(其他主要的链路状态协议,如IS-IS的连接方式有些不同)。ABR维护各别的链路状态数据库,并且各自计算每个它们所连接区域的最短路径树。因此,一个ABR被定义为是同属于两个或多个区域的成员。它将通过向目标区域泛洪3类的LSAs来通告它从源区域所学习到的前缀。这样也基本上可以说成是“我知道如何到达目的地。”

  等一下——最后一个概念描述的不是链路状态,这是距离矢量。在区域中的路由器是看不到ABR以外的东西,并且相信ABR正确地告诉他们通过它可以到达的前缀。区域内的生成树计算起源于一个描述ABR之外所有前缀都视为以一些特殊的开销链接到ABR上的叶节点的最短路径树

  以上将引导我们得出问题的答案

  因为区域间OSPF是距离矢量,这是容易出现环路的。要避免环路的话需要一个无环的区域间拓扑结构。这个就是为什么OSPF要求两个非骨干区域的所有通信流量都要通过骨干区域(area 0)的原因。

  以上是我送你的一个小礼物。你下一次面试被一个老笨蛋用类似这个问题来分辨哪些是只会动手的,哪些是真正了解一些OSPF的时候,你就可以微笑地面对他灰白的脸了。