Technorati 标签: CCNP, CCIE, OSPF, stub, LSA

特别感谢许名川同学的大力帮助,介绍好的资料给我复习这些相关知识

STUB区域:

stub区域是一个不允许AS 外部LSA在其内部泛红的区域。stub区域只可以携带区域内路由和区域间的路由。这些区域中路由器ospf数据库和路由表以及路由信息传递量都会大大减少,为了保证到自治系统外部路由依旧可达,由该区域的ABR生成一条默认路由0.0.0.0传递到区域内,所有到自治系统外的外部路由都必须通过ABR才能达到。

通过读这里的描述,我自己先做总结,后续再用实验进行验证。

我觉得stub区域中,只会存在1/2/3类的lsa.绝对不会存在5类的lsa。然后生成一条默认路由指向ABR.

默认路由只会泛洪到本stub区域,不会传递到其他的区域去。

下面用实验来说明关于Stub区域的特性:

clip_p_w_picpath002

拓扑图还是这张。

要验证的是stub的原理和定义:

由于stub区域不允许外部的LSA在其内部泛洪,所以该区域内的路由器除了ABRi没有自制系统的外部路由,如果他们想到自治系统外部的时候,在stub区域内会将ABR作为出口,ABR会产生一条0.0.0.0的默认路由通告给整个stub区域内的路由器。这样ABR将是这些 stub区域到AS外部路由的唯一的出口。

配置了stub区域后,ABR会自动神产生一个link ID0.0.0.0,网络掩码为0.0.0.0summary lsa (type=3),并通告给整个stub区域。

当R1和R2将area10配置成了stub区域以后,在R1上面可以看到ospf数据库有1类,2类和3类。并且ABR 20.20.20.20向R1宣告了一条默认的lsa,告诉R1,R2这个ABR才是他想到自制系统外部的唯一的出口。

clip_p_w_picpath004

在R1上面也会生成一条默认路由:

clip_p_w_picpath006

这里可以看到,其实对于R1来说,他知道所有区域的路由,但是唯独不知道AS外部的路由172.16.1/2/3.0的路由,所以默认就甩给R2进行处理。按照原理应该知道,其实R2的area 0中是一定会有OE2的路由的,并且是由ASBR R4通告过来的type-5的,所以当数据到了R2的时候,R2会按照现有的路由表进行查找的。最终将数据通告出去。

那么最后R1到172.16.1/2/3.0的网络仍然是可达的走默认路由:

clip_p_w_picpath008

完全stub区域:

完全stub区域是所有区域中最受限制的区域。它不仅不能携带外部路由(AS external type5),甚至区域间的路由也不能携带(type=3 lsa),只可以携带区域内路由。在这些区域中路由器的ospf数据库和路由表规模以及路由信息的传递量比stub区域又会有大大的降低,对设备的性能更低,为了保证到区域外的路由(注意这里不是AS外部)依旧可达,由该区域的ABR生成一条缺省路由0.0.0.0传递到区域内,所有到该区域外部的路由都必须通过ABR才能达到。

通过读这里的描述,我自己先做总结,后续再用实验进行验证。

相比stub区域,这里在完全stub区域中的路由器只会存在1/2类的lsa,不会有35类的lsa,然后生成一条默认路由指向ABR.

默认路由只会泛洪到本stub区域,不会传递到其他的区域去。

最后说一点,无论在stub或者说是完全stub区域,都不会有ASBR的存在。

前面我们已经验证了stub区域,那么后者我们来验证一下关于完全stub区域的情况。

clip_p_w_picpath002[1]

还是这张拓扑图,其实我们可以更加优化对于R1的负载。当我们作为网络设计者的时候,因为R1的性能很低,我觉得他完全也没有必要知道除了area10以外的区域路由的时候,那么我们还可以把第三类lsa(区域汇总lsa给省略掉),这样,不管R1是到AS外部的路由,还是区域外的路由,都是通过R2这个ABR走,这样对R1的压力就更加小了,以前或许一个2811才能满足的性能,现在可能一个1841就搞定了。网络优化的精髓就是在省钱,但是能达到同样的效果。

配置命令是在R1上面的ospf进程下面:

area 10 stub

在R2的ospf进程下面配置:

area 10 stub no-summary

这样最后R2就会只通告一条0.0.0.0的lsa给R1.对比stub区域,R2还将arae 0的2.1.1.0/3.1.1.0/30.30.30.30/40.40.40.40的lsa通告过来,现在直接就变成一条0.0.0.0 ID的lsa给R1.

路由表随之而来也会大大减少。

clip_p_w_picpath010

再和stub进行一下对比,看看现在是否少了area 0 的那四条lsa。

还有路由表也和stub区域进行对比一下:

clip_p_w_picpath012

现在没有OIA的路由了。对于出口只有一条默认路由了。

clip_p_w_picpath014

关于这两种区域类型,再用比较的方式进行加深一下记忆:

clip_p_w_picpath016

最后找到2个特别有意思的思考题,每一个答案后面都有他产生的背景:

1,在什么样的情况下,stub区域的路由器和ABRospf邻居full了,但是ABR却没有产生默认路由发给stub的路由器?或者换句话说,为什么邻居full了,stub区域的路由器没有获得abr传递给他的默认路由?

2,在一个stub区域,有2abr,他们产生的缺省路由,不会让他们相互指向,形成路由环路吗?

===================================================================================

关于问题一,正确的注解是这样的:

我也照着答案进行了实验的验证,当把ABRarea0的接口shutdown掉,或者是让ABR把骨干区域area0的邻居只要down掉,那么ABR都不会将默认路由传递给stub area 的路由器。为什么呢?

主要是因为解决这样的极端情况,如果一个stub区域 2ABR,那么其中一个一旦和骨干区域area0失去连接,那么这个ABR就不会再发送默认路由给stub的路由器,让另外一个abr可以顺利的发默认路由给stub路由器,这样的话始终都可以保证stub区域的数据得到正确的转发。

那么解决了问题一,问题二就来了,如果两个ABR都是和骨干区域连接没有问题,那么会产生一个怎么样的效果?难道还发两个80的默认路由给同一个stub区域的路由器吗?那个时候数据如何转发呢?

问题二的答案是不会有环路或者是产生转发问题。

这里就是LSA和路由的区别了。当一个stub区域中的ABR接收到同一个区域另外一个ABR发出的默认0.0.0.0LSA,它只会将其存放在OSPF LSA的数据库中,而不会计算出路由来。这样就避免环路的产生。