一、题目
某位网络工程师在排查OSPF故障时输出信息如下,据此判断哪种原因导致领接关系无法正常建立
A、认证密码不一致
B、区域类型不一致
C、Hello报文发送间隔不一致
D、接口的IP地址掩码不一致
二、答案
D
三、解析
根据图片信息我们可以知道,这张图输出的是接口GI0/0/0收到的OSPF的错误信息,General Packet error输出的信息中,可以看到错误信息都为0,表示这里是没有错误的。但是在Hello packet error中可以看到Netmask mismatch这一段有出现2的信息,证明OSPF领接关系没有起来的错误原因在于接口IP地址的掩码不一致。
四、扩展–OSPF特殊区域
认识特殊区域
为了让我们的讲解更加的通俗易懂,我设计了上面这个拓扑,这是一个根据客户业务逻辑结构所涉及的 OSPF 网络,共有四个区域(实际上远远不止),骨干区域 area 0 为网络中心,Area 0 只能是常规区域,为了保证网络的畅通,我们将网络中的各个角落都宣告进了 OSPF,感觉上很爽,但是其实路由器很压抑,毕竟随着设备越老越多、网络前缀越来越多,路由条目势必逐渐增多,那么路由器就亚历山大了,毕竟庞大的路由表及 LSA 在极大地消耗着路由器的资源。从网络优化的角度,我们一直在试图在保证网络通畅的情况下减少网络中传递的路由条目及 LSA 的数量,路由汇总就是一种很好的方式,当然从 OSPF 的设计规划角度,我们还有特殊区域可供我们灵活运用,下面来看看 OSPF 特殊区域是如何帮助我们减少 LSA 泛洪的。我们拿 Area1 做参考区域,当 Area1 为常规区域时,区域中会有多少种 LSA 在泛洪呢?1 类是必然有的,由于 Area1 中默认为 MA 网络,因此 2 类 LSA 也有。其他区域的 3 类 LSA 被 ABR 也都注入进了本区域。另外,由于 Area 0 的 ASBR 引入的外部路由(5 类 LSA)也会被泛洪进 Area1,当然 4类 LSA 也跟着来了。那么如此一来, Area1 中就有 1、2、3、4、5,共计 5 种类型的 LSA,齐活了。但是仔细一想我们就发现,其实 Area1 与 Area2 作为末端区域,没必要知道外部路由的详细情况,我只需要知道有那么一条路,让我到达域外即可,我们将 Area2 配置为第一种特殊区域:末梢区域 Stub Area:
末梢区域 stub area
我们可以通过配置,将一个常规区域设置为 stub 区域。
Stub 区域将禁止 4、5 类 LSA 进入该区域,同时该区域的 ABR 将会自动下发一条默认路由(3类 LSA)进该区域,以确保数据通路没有问题。这可以形象的理解为:“外面的世界再怎么多彩,你不用告诉我细节,只要让我出去就行了”。这就是 Stub Area 的设计思路。当引入大量的外部路由进 OSPF,适当的规划某些区域为 Stub,可以起到不错的网络优化作用。
有一点值得注意,你不能将骨干区域 Area0 配置为 Stub 区域,同时,让一个区域被指定为 Stub,区域内将不允许注入外部路由,也就是不能做重发布。
配置命令:[Huawei-ospf-1-area-0.0.0.2]stub
需要注意的是,该命令要配置在 Stub 区域中的所有路由器上,如果某台路由器没有配置,那么它将无法去其他 Stub area router 建立邻接关系。
实现效果:
Area1 中将不会在有 4、5 类 LSA,也就是 area2 重发布进来的路由,被 ABR 过滤掉了,同时area1 中的路由器将获取到一条 3 类 LSA 的默认路由,该默认路由是由 area1 的 ABR 自动下发。
完全末梢区域 totally stub
通过将 Area2 规划为 stub area,可以起到一定的网络优化作用,但是感觉上还不够彻底,除了外部路由,其他区域的路由(LSAs)其实我也没必要知道太多细节,完全用一条默认路由替代也行嘛,那么你可以将 Area2 配置为完全末梢区域(totally stub area),当一个区域被配置为完全末梢区域,这个区域将:
- 阻挡 3、4、5 类 LSA 进入本区域
- 区域的 ABR 自动下发一条 3 类 LSA 的默认路由进入本区域
这么一来,Area1 内路由器收到的 LSA 将进一步减少,在存储 LSA 及进行 SPF 算法运算的时候,耗费的资源自然也就减少了,另外当区域外拓扑出现变更的时候,对本区域的影响也将变为最小。与 stub 区域类似,你无法将骨干区域 area0 配置为 totally stub area,当然,如果一个区域被指定为 totally stub area,你将不能在区域中的路由器上做路由重发布动作。
配置命令:
ABR [Huawei-ospf-1-area-0.0.0.2]stub
域内路由器:[Huawei-ospf-1-area-0.0.0.2]stub no-summary
在完全末梢区域内的所有路由器,都配置上述命令,与 stub 区域的区别在于 ABR 的配置,下面是配置在完全末梢区域的 ABR 上的。
实现效果:
完成上述配置后,area1 内的路由器将只有本区域内的路由(ABR 除外),同时都能获取到 ABR 下发的 3 类的默认路由。也就是说其他区域的路由以及外部注入的路由都被 ABR 阻挡在外,取而代之的是一条默认路由。
非完全末梢区域 NSSA
在前面的知识基础上,我们已经了解到,在保证网络连通性的情况下,减少 LSA 的泛洪以及精简路由表,我们可以将特定区域配置为末梢区域或完全末梢区域。看上面的拓扑,我们将 area1 配置为
stub,那么,这个区域一来将阻挡来自其他区域的 4、5 类 LSA,同时区域内的路由器禁止重发布外部路由,那么如果此时我期望这个区域保持“阻挡其他区域过来的 4、5 类 LSA”这个特性,同时允许我在区
域本地重发布路由,从而优化链路转发呢?
例如,假设 area1 原先是作为一个末梢区域运行的,但突然有一个外部网络,需要接入到我们这个
OSPF 网络中,并且连接在 area1 中,那么这个时候,为了保证路由的可达,就必须向 area1 中注入外部路由了,而这又违法了 stub area 的规则。
这里就引入 NSSA(not-so-stubby-area)的概念,中文翻译过来,可以理解为非完全末梢区域,当你将一个区域配置为 NSSA,那么这个区域一来将阻挡骨干区域过来的 4、5 类 LSA,同时允许区域本地注入外部路由,这些外部路由以一种特殊的 LSA 类型—7 类 LSA 在 NSSA 中泛洪,并且 7 类 LSA 不允许进入骨干区域或常规区域, NSSA 的 ABR 会负责将 7 类 LSA“转换”成 5 类 LSA,从而在常规区域中进一步泛洪。上面的“允许区域本地注入”的意思是,NSSA 这个区域的路由器配置重发布。
值得注意的是,与 stub area 及 totally stub area 不同的是,如果你将一个区域配置为 NSSA,默认情况下 NSSA 的 ABR 不会自动下发默认路由进 NSSA,因此在 NSSA 环境下,需留意网络连通性问题。
配置命令: [Huawei-ospf-1-area-0.0.0.2]nssa
实现效果:
将 area2 配置为 nssa 后,从骨干区域过来的 4、5 类 LSA 将无法进入 NSSA,也就是说如果area1 做了重发布,那么这些重发布的外部路由将无法进入 NSSA(这是因为 NSSA 中不允许出现 5 类LSA),与此同时,area2 允许本地的路由器做重发布动作,重发布进来的路由,以 LSA7 在 NSSA 中泛洪,大家在路由表中看到的这些外部路由,标记为“O N”,而这些 7 类 LSA 在“穿越”NSSA 的 ABR进入骨干区域之前,由 ABR 负责将 7 类 LSA “转换”成 5 类 LSA。最终 area0 和 area1 也能学习到这些外部路由。
Totally NSSA
Totally NSSA,这是一个不太好用中文翻译的词汇,完全 非完全末梢区域?显得有点尴尬,不过这个概念的理解并不像其名字那么唬人,Totally NSSA 是在 NSSA 区域的基础之上,进一步阻挡 NSSA 区域外的其他区域过来的 3 类 LSA,同时 ABR 自动下发一条 3 类的默认路由进 NSSA 区域。
配置命令: [Huawei-ospf-1-area-0.0.0.2]nssa
上述命令需配置在 NSSA 中的所有路由器上,ABR 的配置有所不同,如下:
配置命令: [Huawei-ospf-1-area-0.0.0.2]nssa no-summary
实现效果
Area2 之外的其他 OSPF area 过来的 3、4、5 类 LSA,都会被阻挡在 NSSA 之外,同时 ABR 会自动下发默认路由进 NSSA,另外,NSSA 内的路由器做重发布动作,区域内的其他路由器将会学习到 7 类
的外部 LSA,这些外部 LSA 会被 ABR 转成 5 类 LSA 并注入进骨干区域。