
前言 /Profile/
网络工程师这个职业经过了几十年的发展,在行业内其实并没有一个成文的规范与规则。很多培训机构为了商业炒作,单方面地强调“证书高薪论”;而在一些用人单位,面试机构,能“量化”衡量一个网络工程师基础水平的,却又是一些平时“用不着”,但又晦涩难懂的题目。比如臭名昭著的“生成树协议试题”,用明显有“风险”的配置来考你……
其实,对于局域网的设计来说,很多大的集成商已经有了自己的“套路”,而主流的厂商比如思科,华为,H3C也有一些建议的“解决方案”。
本文就以一些“误人子弟”的问题来入手,然后谈谈关于一些拿不准的参数该如何处理。
01
面试题风波
每当两个人吃了晚饭,开始独处的时候,吴雄飞和紫竹总是会回忆起他们刚刚进入公司的时候,各自遇到的面试题。
吴雄飞还记得,当时他入职的时候就进行了一次现场面试,那个时候他的面试官是程彪本人。因为他和程彪早就认识,所以面试题目也很顺利。就是一些和配置命令相关的题目。
比如这道题目很有代表性:
请问横线的地方该写什么命令:
stp region-configuration
region-name TEST
instance 1 vlan 101-107
instance 2 vlan 201-207
_________________________
stp instance 1 priority 0
stp instance 2 priority 4096
你看起来这是一个已经配置好的MSTP的命令吧,但实际上横线上的那条命令才是“决定性”因素,这条命令就是:active region-configuration,可以简写为“ac re”。对于华为、H3C的配置命令来说,不写这条命令,你配置的MST实例就不会生效,相当于这条命令上面的四行命令都是你“白配”的。
而紫竹来面试的时候,面试官是赵小志。那天赵小志被人顶撞得够呛,心情特别不爽。见来面试的是一个年轻姑娘,本想着戏弄她一番,也算出出气。谁知道紫竹那么伶牙俐齿,能说会道的,气势上还压了赵小志一头。于是,赵小志随口一问:“哎,你说你考了CCIE来的对吧,那你给我演示一下DUEL算法吧,时间不超过一分钟。”

实际上,EIGRP的DUAL算法确实有点难以用那么一两句话就解释清楚。不过其中的几个重要的信息要首先了解:
结合着一张图来理解:


不过当时紫竹选了另外一种方式来回答这个问题:
你现在的位置在国贸桥附近的建外大街,想去中关村买一台笔记本电脑。但是你是电脑盲,于是你就打电话约你的三个专业的朋友一起去。但是三个朋友都要求你先到他那里去接他,然后一起去中关村。
朋友A的位置在角门西,从他那里去中关村有19.8公里;
朋友B的位置在北京大学东门,从他那里去中关村有1.7公里;
朋友C的位置在大鲁店,从他那里去中关村有45公里。
这几个都相当于是A、B、C到目的地中关村的AD
然后呢?
你到朋友A的距离是21公里,去接你朋友后再去中关村,FD就是21+19.8=40.8
你到朋友B的距离是22公里,去接你朋友后再去中关村,FD就是22+1.7=23.7
朋友A和朋友B,最小的FD是23.7,最大的FD是40.8,所以朋友A所在的位置是“可行后继”,而朋友B的位置是“后继”。
而为什么不考虑朋友C呢?因为朋友C告诉你,他那里去中关村45公里,都已经大于了你去接你朋友的FD了,所以C不满足可行条件,不予考虑。
这么说可能不够严谨,不过紫竹也算是通过了面试……
这两个面试题,一个是从配置方面来考查网络工程师对配置的相关熟悉程度,另一个则完全是理论,就看网络工程师对某一种路由协议的算法是否熟悉。说起来,这两个问题还算是靠谱,但下面两个问题,可就是真的有“问题”了。
先看第一个问题:

如图架构,二层环状网络,运行生成树协议,收敛完毕。没有标明的优先级为默认配置。
请标出各个根端口和指定端口。
这个问题是想考查网络工程师对“生成树协议”计算规则的知识点,从出题者的目的来看,弄一个复杂一点的拓扑图,是想考查网络工程师对这块知识点是否精通吧。不过,这个题目这么出是有问题的:
这拓扑明显违反了网络设计的规范,因为广播的范围太大,已经到了一个无法收敛的程度了。这里就有人说了:这不是可以收敛的吗?我用Cisco Packet Tracer模拟过啊,都收敛了的啊。
但是实际情况呢?
实际情况下,计算生成树会消耗交换机大量的CPU资源,而且接口一会Forwarding一会Blocked的,加上TCN-BPDU报文在交换机里肆意泛洪。估计还没等到生成树收敛,交换机就已经瘫痪了。
另外,生成树协议是一个非常弱鸡的协议,效率非常低。你想想,如果生成树协议那么强悍的话,后来为什么要出各种各样的“堆叠”,“虚拟化”技术呢?
再来看另外一个问题,这是HCNP的考试题目,说得也是含糊不清。
1、配置ACL的时候,是按照用户的配置顺序进行匹配,请问这句话是否正确。
这个问题,答案上给了个“正确”。但实际上,这个问题忘了一个大前提条件,那就是ACL的rule seq-number。

所以呢,这个问题“配置ACL的时候,是按照用户的配置顺序进行匹配”,指的是让其默认生成rule seq-number的时候,但如果要求用户手工指定rule seq-number的时候呢,就可能出现这种情况:
你先配置了:rule 10 permit ip 10.77.23.0 0.0.0.255 any
再配置了:rule 5 deny ip 10.77.0.0 0.0.255.255 any
于是呢,先生效的就是后配置的rule 5 deny ip 10.77.0.0 0.0.255.255 any这一条规则了。
所以,这种问题典型的“条件不明”。它本来目的是为了考查你ACL配置顺序和匹配顺序的问题,但实际情况下呢?在配置大量的ACL的时候,写脚本的时候任何厂商的配置命令都必须要求显式地配置上ACL的seq-number,防止ACL顺序写错了造成一些问题。
上面,捷哥说的这两个问题,只是抓了两个典型例子。
实际上,很多中级偏低级的网络知识笔试题或者是面试题,都经不起一些推敲的。
比如:
第一个问题:不管生成树开关是否打开,实际工作中如果需要使用生成树,都必须在配置脚本中用命令开启一次;反之必须用命令关闭一次。所以去了解哪个产品的生成树在默认状态下是什么类型,到底是什么类型的生成树,意义不大。
第二个问题:“透明网桥”到底是个啥玩意?咱就姑且把它当成二层交换机吧,但是这个“物理网段”又怎么去理解?所以意义含混不清。
第三个问题:STP的TCN-BPDU有没有数据线,对实际工作上生成树的应用没啥影响,所以你问我我也不知道。
第四个问题:无非就是STP是大集合,RSTP只是STP的一个子集而已。
第五个问题:虽然这句话是正确的,但这句话带有一定的“误导”性质。有些人会认为“反正Router-id会自动生成,没必要手动配置”,但实际上,OSPF的Router-id是一个方便管理的东西,地位非常重要。