07-OSPF区域类型–NSSA区域/完全NSSA区域

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

NSSA区域:

NSSA区域允许一些外部路由通告到OSPF自治系统内部,顾名思义,NSSA,是stub的一个升级网络结果,全称为:Not-So-Stub-Area.不是那么末节的区域。

NSSA同时也保留自治系统区域部分的stub区域的特征。假设一个stub区域中的路由器连接了一个运行其他路由器进程的自治系统,现在这个路由器就变成了ASBR.因为有了ASBR,所以这个区域也就不能再叫stub了,而改名叫NSSA区域。但是如果把这个区域配置为NSSA区域,那么ASBR会产生NSSA外部lsa(type=7),然后泛洪到整个NSSA区域内,这些7类的lsa在NSSA的ABR上面最后会转换成type=5的lsa进行泛红到整个ospf域中。

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

我觉得NSSA区域中,只会存在1/2/3/7类的lsa.绝对不会存在5类的lsa

下面还是用实验来验证一下上面的原理:

现在area0是骨干,R2+R3+R4是NSSA area 10.R4将外部EIGRP路由冲分发到OSPF中产生外部路由注入OSPF区域。

然后再R2/R3/R4的ospf进程下面都配置为:

area 10 nssa

这样area 10的所有路由器就共同组成了一个NSSA区域。

这个时候再来验证一下原理:

在R2/R3/R4上面分别配置area 10 nssa.

那么我们来验证一下在R4/R3上面有哪些lsa在ospf的lsdb中。

在R4上面,其实最后就是NSSA type-7的lsdb.宣告路由器是40.40.40.40,宣告的是外部路由172.16.1/2/3.0,lsa类型是7类的.

下面再看看R3.

实际上就是R4, 40.40.40.40在NSSA区域内泛洪了引入的外部路由,所以R3除了1类,2类,3类的lsa,就只有7类从40.40.40.40传递过来的.

然后最后在R2上面,这个ABR,可以看到相关的lsdb.

R2这个ABR也收到了R4这个ASBR发送过来的type-7的NSSA 外部lsa,但是也同时向非nssa区域扩散5类的lsa,可以注意到,到5类的时候,实际上宣告路由器已经发生了变化。变成了20.20.20.20.

根据原理,R2这个ABR要将7类lsa转换成5类的lsa然后在非NSSA区域内进行泛洪。

所以最终在R1上面,应该只有1/2/3/5类的lsa

我们来确认一下:

这里可以看到R1上面,确实符合原理上面,除了1/2/3类的lsa,还有5类的lsa,通过R2这个ABR传递过来的。

最后总结一下就是:

完全NSSA区域:

和NSSA区域类似,完全NSSA区域允许一些外部路由通告到ospf自制系统内部,而同时保留自治系统区域部分的完全stub区域的特征。该区域的ASBR会产生NSSA 外部LSA(type=7),然后再区域内泛洪并通过该区域的的ABR将7类lsa转换成5类lsa然后在其他所有区域进行泛洪.

同时,该区域的ABR也会产生一条默认的缺省路由0.0.0.0传播到区域内,所有区域见的路由都必须通过ABR才能到达.

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

我觉得完全NSSA区域中,只会存在1/2/7类的lsa.绝对不会存在5类和3类的lsa,最后ABR再向该区域的所有路由器通告一个默认路由,下一跳是ABR自己,要到区域间的路由都要通过ABR进行转发。

这里实际上也就是no-summary的作用,和totally stub区域功能一样。只是3类的lsa由一条0.0.0.0,然后目的ID是ABR的id来替代。

在学习完全nssa区域,需要和NSSA的数据库进行对比。

配置方面,我们在R2 ABR上面配置:

这里已经看到了区别。

这就是totally NSSA和NSSA的区别,少了3类的lsa.

NSSA区域和第七类LSA:

NSSA区域是ospf协议中定义的一类特殊的区域,NSSA区域是stub区域概念的延伸,它保留了stub区域的特性,ABR不会将5类的lsa引入到nssa区域内部进行传播,同时NSSA区域允许少量的外部路由通过本区域的ASBR通告进来,ASBR将会为这些外部路由生成第七类的LSA在区域内进行传播,第七类lsa的传播区域仅仅限于在NSSA区域内,ABR会把接收到的type7lsa转换为5类在其他所有ospf区域进行泛洪。

这里还有一个问题比较有意思,就是在一些特定的场合因为配置错误可以形成环路.

呵呵,这个实验比较好验证。

首先,在R2的ospf部分配置为:

R4的相关路由配置为:

注意,这里设置默认路由,但是一定要让默认路由注入到你的路由表中,否则是不会产生环路的,当然我这里是实验环境,所以从新在R4上面起了一个loopback4,ip address 5.5.5.5.6,这样接口up,自然show ip route就可以看到一个默认路由出口是5.5.5.5了。

现在我们根据图中的注释来进行验证,在R3上面,应该是会受到3类的缺省lsa和7类的缺省lsa。

所以在R3上面如果查看ip route路由表,可以看到只有一个默认路由,出口是ABR R2:

而在R2上面,会受到R4发送过来的7类缺省lsa:

然后再看看路由表:

最后形成的环路就会在R2和R3之间不停得循环…..直到TTL耗尽.对于对于网络实际上都可以理解为一种攻击了。

现在在R3上面随便ping一个不存在的地址:

实际上这里环路已经产生了….

当然还有很多细小的知识点,我这里只是复习大体框架。

又找到了一些很有意思的题目可以让我们开展大脑风暴:

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

问题一:

在一个NSSA区域,如果有两个ABR,它们都会将type-7lsa转换成type 5 LSA吗?为什么?

关于问题一,答案肯定是否,如果两个ABR都产生默认路由给NSSA区域内的路由器,那到时候如果不能找到明细路由,该走哪条默认路由呢?还是负载均衡?显然都是不合理的。

所以当一个NSSA区域中有2ABR,那么按照RFC3101 OSPF NSSA option的规定,只有最大的router-IDABR会负责将type-7lsa转换为type5lsa.

06-OSPF区域类型–stub区域/完全stub区域(转载)

STUB区域:

出自—http://361531.blog.51cto.com/351531/696993

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

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

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

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

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

拓扑图还是这张。

要验证的是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才是他想到自制系统外部的唯一的出口。

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

这里可以看到,其实对于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的网络仍然是可达的走默认路由:

完全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区域的情况。

还是这张拓扑图,其实我们可以更加优化对于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.

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

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

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

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

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

最后找到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的数据库中,而不会计算出路由来。这样就避免环路的产生。

【OSPF】防环机制详解

红茶三杯 原创技术文档,转载请注明出处。
我们在提到OSPF的时候,时常喜欢说的一句话就是,OSPF能够计算出无环的路由,那么OSPF究竟是如何规避路由环路的呢?OSPF与距离矢量路由协议不同,运行OSPF的路由器之间交互并不是路由信息,而是LSA,而路由器的计算正是基于网络中所泛洪的各种LSA,所以实际上OSPF路由的环路规避机制还得依赖LSA在环路避免上的设计,接下来我们就来分别探讨各种类型的LSA在防环上的考虑。
1.  Type-1 LSA及Type-2 LSA的防环
我们都知道,每台运行OSPF的路由器都会产生Type-1 LSA,Type-1 LSA用于描述路由器的直连接口状态(接口IP信息或所连接的邻居,另外还有接口的Cost值),而且只在接口所属的区域内泛洪。Type-1 LSA使用各种类型的Link来描述路由器直连接口。Type-2 LSA则只出现在MA网络,由DR产生,用于描述接入该MA网络的所有路由器(的Router-ID),以及该MA网络的掩码信息。
得益于区域内泛洪的Type-1 LSA及Type-2 LSA,OSPF路由器能够“在自己的脑海中”还原区域内的网络拓扑及网段信息。路由器为每个区域维护一个独立的LSDB,并且运行一套独立的SPF算法,同一个区域内的路由器,拥有针对该区域的相同LSDB,大家都基于这个LSDB计算出一颗以自己为根的、无环的最短路径树。之所以能做到无环,是因为路由器能够通过LSA描绘出区域的完整拓扑(包括所有接口的Cost)及网段信息。以下图所示的网络为例:
 
R1、R2、R3及R4的接口均在Area0中,四台路由器都会产生Type-1 LSA并且在Area内泛洪。另外以太网链路由于缺省是广播型多路访问网络,因此会进行DR/BDR的选举,DR会产生Type-2 LSA并在区域内泛洪。在LSDB同步完成之后,每台路由器都拥有了整个区域的拓扑及网段信息,这些都是通过网络中泛洪的Type-1 LSA及Type-2 LSA拼凑出来的,请看下图:
 
接下来,每台路由器都以自己为根,计算一颗无环的最短路径数,以R3为例,它的最短路径树可能像下面这个样子:
 
所以,依赖Type-1 LSA及Type-2 LSA,路由器能够描绘出区域内的拓扑及网段信息,从而运行SPF算法,计算出到达每个网段的最优路径,并将这些路径安装到路由表中,因此区域内的路由(Intra-Area Route)可以实现无环路。
2.  Type-3 LSA及Type-4 LSA的防环
1) OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。
OSPF要求所有的非0区域必须与骨干区域直接相连,区域间(Inter-Area Route)路由需经由骨干区域中转。这个要求使得区域间的路由传递不能发生在两个非0的区域之间,这在很大程度上规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑,如下图所示。
 
2) ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及区域间的路由注入到非0常规区域。ABR从非骨干区域收到的Type-3 LSA不能用于区域间路由的计算。
 
OSPF对ABR有着严苛的要求,区域间的路由传递的关键点在于ABR对Summary LSA的处理。
 
在上图中,如果R3是一台普通的OSPF路由器(不是ABR),例如当它与R2没有OSPF邻居关系时,它会根据R4在Area2中泛洪的Type-3 LSA计算出1.1.1.0/24路由并将路由加载进路由表中。但是当R3与R2建立起OSPF邻接关系后,R3在Area0中就有了一个活跃的全毗邻连接,此时如果它把描述1.1.1.0/24路由的Type-3 LSA再注入回Area0,那么就会带来潜在环路的风险,如下图所示:
 
因此当一台ABR在非Area0的区域中收到Type-3 LSA时,虽然它会将其装载进LSDB,但是该路由器不会使用这些Type-3 LSA进行路由计算,当然它更不会将这些Type-3 LSA再注入回Area0中。因此在本段落的小标题中的这么一句话:“ABR只能够将其所连接的区域的区域内部路由注入到Area0,但是可以将区域内部路由及区域间的路由注入到非0常规区域”这句话,对应到上面的拓扑中,就是R3作为ABR,只能将其所连接的Area2内的区域内部路由注入到Area0(而不能将其在Area2内收到的3类LSA,也就是区域间路由注入Area0),但是可以将Area0的区域内部路由,以及R2注入到Area0的、用于描述Area1的区域间路由注入到非0常规区域Area2。
这里有一个有意思的细节,就是如果R3连接R2的接口虽然激活了OSPF(而且属于Area0),但是不与R2形成邻接关系(例如R2连接R3的接口不激活OSPF),那么此时R3其实并不算是严格意义上的ABR(虽然它产生的Type-1 LSA中B-bit会被置位,但是它在Area0中并没有全毗邻的邻居),因此它会将Area2内收到的Type-3 LSA用于区域间路由的计算,所以在R3的路由表中能看到1.1.1.0/24的区域间路由,但是一旦R2-R3之间的邻接关系建立起来,R3便不能再使用R4下发的Type-3 LSA计算区域间的路由,而只能使用在Area0中收到的、R2下发的Type-3 LSA进行路由计算,所以R3的路由表中,1.1.1.0/24的路由的下一跳将变为R2,即使从R2到1.1.1.0/24网络的Cost大于从R4走的路径,也不会切到R4上来。
PS,关于本段落标题中的内容,RFC2328相应的描述是:“Note that only intra-area routes are advertised into the backbone, while both intra-area and inter-area routes are advertised into the other areas.”,RFC3509则描述得更为精细:“Note that while only intra-area routes are advertised into the backbone, if the router has an Active Backbone Connection, both intra-area and inter-area routes are advertised into the other areas; otherwise,the router only advertises intra-area routes into non-backbone areas.”
 
3) ABR不会将描述一个Area内部的路由信息的Type-3 LSA再注入回该区域中。
实际上,OSPF区域间路由的传递行为,很有点距离矢量路由协议的味道。以下图为例,在Area1中,R1及R2都会泛洪Type-1 LSA、Type-2 LSA,两台路由器都能够根据这些LSA计算区域内路由,而R2作为ABR还担负着另一个责任,就是向Area0通告区域间的路由,实际上它是向Area0中注入用于描述Area1内路由的Type-3 LSA,而这些Type-3 LSA是不会发回Area1的——是的,类似水平分割行为对吧?接下来R3利用这些Type-3 LSA计算出了区域间的路由,并且为Area2注入新的Type-3 LSA用于描述区域间的路由,而这些Type-3 LSA同样的不会被注入回Area0。
R2在向Area0通告Type-3 LSA,为每条区域间路由携带上Cost值,这个值就是它自己到达各个目标网段的Cost,而R3收到这些Type-3 LSA并计算路由时,路由的Cost就是在R2所通告的Cost值的基础上,加上R3自己到R2的Cost值,然后,R3向R4通告这些区域间的路由时也携带者自己到达目标网段的Cost,而R4到达目标网段的Cost则是在R3的通告值基础上累加自己到R3的Cost——典型的距离矢量行为。
 
综上,我们发现OSPF为了区域间的路由防环是操碎了心的。Type-4 LSA实际上与Type-3 LSA都是Summary LSA,只不过一个是Network Summary LSA——用于描述网段路由,另一个则是ASBR Summary LSA——用于描述ASBR,他们使用的防环机制是一致的,因此这里不在赘述。 
 
4)  Type-3 LSA还涉及了DN比特位,用于在MPLS VPN环境下的环路规避
3.  Type-5 LSA的防环
 
当一台OSPF路由器将外部路由引入OSPF域后,它就成为了一台ASBR,被引入的外部路由以Type-5 LSA在整个OSPF域内泛洪。一台路由器使用Type-5 LSA计算出路由的前提是两个,其一是要收到Type-5 LSA,其二是要知道产生这个Type-5 LSA的ASBR在哪里。与ASBR接入同一个区域的路由器能够根据该区域内泛洪的Type-1 LSA及Type-2 LSA计算出到达该ASBR的最短路径,从而计算出外部路由。而其他区域的路由器就没有这么幸运了,因为ASBR产生的Type-1 LSA只能在其所在的区域内泛洪,所以才需要Type-4 LSA。因此其他区域的路由器在获取Type-4 LSA后便能计算出到达ASBR的最短路径,进而利用该ASBR产生的Type-5 LSA计算出外部路由。Type-5 LSA将会被泛洪到整个OSPF域,表面上看,它本身并不具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖Type-1 LSA及Type-4 LSA来实现防环。
另外,Type-5 LSA中的External Route Tag字段被用于在MPLS VPN环境下外部路由的防环,这里就不做深入探讨了。

【OSPF】OSPF进程号的意义及多进程OSPF

1. OSPF进程号的概念
在配置OSPF时,我们采用的是router ospf命令,在该命令后面需要加上这个OSPF进程的进程号(Process-Id),进程号用于在一台路由器上区分不同的OSPF进程。这就有点像人格分裂的感觉 —— 一个自然人有多种不同人格,每种人格之间相互独立,互不影响。进程号的取值范围是1-65535。
 
上图所示的拓扑中,R1使用进程号10创建了一个OSPF进程,同时激活了自己的直连接口FE0/0,而R2使用进程号20创建了一个OSPF进程,同时也在自己的直连接口上激活了OSPF。虽然这两个进程号不一样,但是R1-R2之间的邻居关系建立是完全没有问题的。因为OSPF进程号只具有本地意义,路由器之间交互的所有OSPF报文中,都不会体现任何关于进程号的信息。进程号只在一台路由器上用于区分多个OSPF进程,因此对于R1而言,它并不关心它的直连OSPF邻居R2使用的是什么OSPF进程号,10也号,20也罢,这就有点像“自己的事自己知道就行“ — 本地意义。
当然,在实际的网络部署中,除非有特定的需求,我们还是建议全网使用统一的进程号,虽然每台设备使用不同的进程号对OSPF的运行没什么影响,但是却给网络的管理和维护带来了多余的成本,你不会这么干的,对吧?
2. 多个OSPF进程
上面的拓扑很有意思,在R2上,常规的做法是用一个进程号创建一个OSPF进程,同时将自己的两个直连接口都宣告进这个OSPF进程,但是为了讲解OSPF进程ID的本地意义,我这里在R2上使用两个进程号分别创建了两个OSPF进程,并且分别宣告了R2的两个直连接口,换句话说,R2使用OSPF进程12与R1建立邻居关系,使用OSPF进程23与R3建立OSPF邻居关系。如此一来,R2在本地就有了两个OSPF进程,使用进程号12及23进行区分。整个网络中也就出现了两个OSPF域(OSPF Domain)。这两个OSPF进程,都会各自从其邻居R1和R3学习到OSPF路由,但是值得强调的是:
  • 这两个OSPF进程相互独立和隔离(两个OSPF Domain),两个进程独立维护各自的LSDB。换而言之R2通过OSPF进程12从R1学习到的OSPF路由(严格的说,应该是LSA),例如描述1.1.1.0/24的LSA,缺省时不会传递到进程23的(这是因为在R2,这两个OSPF进程互相独立互相隔离),当然,从R3学习过来的OSPF路由,R2虽然自己能学习到,但是照样不会传递给R1,这就好像,这两个进程虽然都在R2上,但是彼此之间有着一道鸿沟,世界上最遥远的距离,莫过于此啊。
  • 再者,R2这两个OSPF进程虽然说彼此隔离,但是都可以为R2自身贡献路由,例如如果R1更新过来一条路由1.1.1.0/24,R3更新过来一条3.3.3.0/24,那么在R2的全局路由表里都是能看到这两条路由的。但这两条路由不会互相灌进对方的OSPF进程(造成的直接结果是R1没有R3的路由,R3没有R1的路由),除非 — 对了,路由重发布,你懂的。
3. OSPF进程之间的路由重发布
 
同一台路由器上的不同OSPF进程相互独立,各自维护自己的LSDB。如果要把一个OSPF进程内的路由注入到另一个进程中,就需要部署路由重发布,例如上图所示,R2作为一台ASBR,要把进程12中的路由注入到进程23中,配置如上。当然,如果要实现全网路由互通,则还需要在OSPF进程12中,将进程23的路由重发布进来。
4. 什么时候会使用不同的OSPF进程
我们知道一台路由器可以创建多个OSPF进程,而且进程之间相互隔离。一般情况下,当我们在做网络建设时,整个网络就是一个统一的路由选择域,如果选用OSPF作为路由协议,则所有的OSPF路由器使用一个OSPF进程即可。
 
上图展示了一个大型企业的网络拓扑,R1、R2、R3及R4是省公司的设备,SW1、SW2及往下是市公司的设备,R5是区县站点设备(实际上有多个区县站点,此处只显示了一个)。为了实现市公司与各区县站点的网络互通,我们在市公司所有设备,以及区县站点的所有路由器上都配置了OSPF并且进行了多区域的规划。由于整个企业数据网络的规模较大,要想打通整个网络的路由,使用一个OSPF域直接从区县站点往上拉到省公司,显然是不靠谱的,一来整个域太大,路由前缀数量太多,二来OSPF的多区域设计在面对这么大规模网络的时候显得还是有点力不从心,三来总公司并不希望看到分公司以及下面的子站点的路由明细,路由汇总势必是要考虑的,加之对流量的走向还有严格的要求,策略部署上如何考虑?因此为省公司网络规划了另外一个OSPF域,在省公司的边界设备R3、R4上创建两个OSPF进程,进程1面向总公司,进程2面向下面的市公司及区县站点。两个进程相互独立不互相干扰,而R3及R4又能够学习到省公司、分公司及各个区县站点的路由,两个OSPF域可以独立规划,域内Area的设计又变得更加宽松和灵活。
当然,省公司、总干以及地市公司是需要相互通信的,这时候由于省公司的网络属于OSPF进程1,而市分公司及区县站点的网络属于OSPF进程2,相互独立,为了把路由打通,就需要在R3和R4上执行OSPF进程之间的路由相互重发布。一旦把R3、R4设计为路由重发布的执行点,他俩瞬间就变得非常重要和牛逼了,因为在重发布的过程中,可以执行路由策略、可以做路由过滤,更可以做路由汇总,网络的设计和规划就变得非常有弹性了。
下面再来看多进程OSPF的另一个例子:
 
在上图所示的网络中,存在两个不同的业务。生产及办公,两个业务各有自己的服务器网络,两台Router分别连接着这两个业务的服务器网络。而终端用户则连接在SW上,现在终端用户需要访问各自业务的服务器,那么SW当然是需要有相应的路由的。我们希望将生产及办公的业务进行隔离,但是这两个业务的终端用户又都是连接在SW上,如何隔离?很简单,在SW上创建两个OSPF进程,其中进程1用于生产业务,进程2用于办公业务。在OSPF进程1中,激活VLAN10及VLAN20对应的SVI,并激活与SC-Router对接的三层接口;在OSPF进程2中,激活VLAN30、40对应的SCI,并激活与BG-Router对接的三层接口,如此一来办公及生产服务器网段的路由通过这两个OSPF进程在SW上进行了隔离。
这的确是一种好方法,但是虽然OSPF进程是隔离的,SW的全局路由表中却拥有者生产及办公两个业务的路由,也就是说两个业务的路由实际上在SW这个点上是打通的,显然不够安全,如果有人从办公网络登到办公终端,然后再从办公终端跳转,去访问生产服务器就麻烦了。所以,我们又引入了另一个概念——VRF(Virtual Routing Forwarding,虚拟路由转发),所谓的VRF你可以理解为虚拟设备,通过在SW上创建VRF实例,并且将生产的OSPF进程关联到一个VRF实例中,从而彻底将生产路由与办公路由进行隔离(办公路由及业务跑在根设备上,生产路由及业务跑在VRF实例上,两者完全隔离,可以想象为两台SW)。关于VRF的进一步内容,请查阅相关文档,这里篇幅所限,不做详细探讨。

【OSPF】链路类型 LinkType

OSPF除了定义网络类型(Network Type),还定义了链路类型(Link Type),这是两个不同的概念。链路类型主要用于描述OSPF路由器的接口或邻居。在1类LSA中,可以看到产生该LSA的路由器所连接的所有链路(Link)、链路的类型以及相关的内容。通过每个1类LSA中描述的各种链路(Link),OSPF得以描绘出网络的拓扑和子网信息。
  LS age: 1355
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 1.1.1.1
  Advertising Router: 1.1.1.1
  LS Seq Number: 8000001F
  Checksum: 0xFF44
  Length: 48
  Area Border Router
  AS Boundary Router
  Number of Links: 2
    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 10.1.12.1
      Number of TOS metrics: 0
       TOS 0 Metrics: 64
    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.1.12.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 64
1类LSA中,用于描述Link的LINKID、Link Date的取值根据OSPF link类型不同而不同:
下面分别来看一看这些个Link:
1.Stub Network Link
 
如果路由器的一个接口被激活OSPF,并且该接口上没有任何OSPF邻居,则该接口使用Stub Network Link来描述。一个接口被通告进OSPF,无论其二层封装是什么(以太网、PPP、HDLC等),只要在该接口上没有OSPF邻居,那么就是Stub Network Link。例如上图所示,R2产生的1类LSA中用于描述接口FE0/0的Link数据就是:
    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.1.23.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 1
Loopback接口永远被定义为Stub Network Link,默认使用32位掩码表示,这就是为什么在OSPF实验过程中,Loopback接口IP地址无论配置什么掩码,路由学习过来都是/32的主机路由。不管将Loopback接口改为哪种OSPF网络类型(Network Type),始终改变不了它的OSPF链路类型(Link Type),但可以改变它在LSA中的掩码长度。
2.Transit Link
 
拥有两台或两台以上OSPF路由器的链路,简单理解为有邻居的OSPF接口,使用Transit Link来描述。但网络类型为Point-To-Point和点到多点(Point-To-Multipoint)的接口除外,因为它们被定义为Point-To-Point Link。
 
例如上图所示,R1的FE0/0接口激活了OSPF并且有一个OSPF邻居R2,因此R1在LSA1中描述这个接口时,使用Transit Link来描述,如下:
    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.1.23.2
     (Link Data) Router Interface address: 10.1.23.1
      Number of TOS metrics: 0
       TOS 0 Metrics: 1
3.Point-To-Point Link
 
OSPF网络类型为Point-To-Point的接口,使用“Point-To-Point Link”来描述,但Loopback接口除外;
网络类型为点到多点(Point-To-Multipoint)的接口,同样使用为Point-To-Point Link这种链路类型来描述。
例如上图,R1的S0/0口的OSPF网络类型是P2P,因此R1产生的LSA1中用于描述该接口的链路类型就是P2P LINK,输出如下:
    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 1.1.1.1
     (Link Data) Router Interface address: 10.1.12.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 64
    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.1.12.0
     (Link Data) Network Mask: 255.255.255.0
      Number of TOS metrics: 0
       TOS 0 Metrics: 64
值得注意的是,对于P2P的网络类型接口,OSPF使用了两个LINK来描述,一个是P2P Link用于描述链路对端连接的路由器ID及自己本地的接口IP地址,另外还使用了一个Sub Network Link来描述该条链路的子网。
综上所述,OSPF的集中链路类型中,P2P以及Transit Link是用于描述网络拓扑结构的,而Stub Network是用于描述子网号的。
4.Virtual link
这种链路类型用于描述OSPF虚链路(Virtual Link)。
 
在上图中R1、R3建立了一条虚链路,则R1产生的LSA1中描述该虚链路的数据如下:
    Link connected to: a Virtual Link
     (Link ID) Neighboring Router ID: 3.3.3.3                    #虚链路对端设备的RouterID
     (Link Data) Router Interface address: 10.1.12.1         #本地接口IP地址
      Number of TOS metrics: 0
       TOS 0 Metrics: 128
上面输出中的Metric: 128,指的是从本地到虚链路对端,沿途所有出接口的cost累加。例如R1产生的描述虚链路的Link数据中包含的metric值就是如图所示绿色标记的接口cost累加。

【OSPF】DR、BDR的概念及深入探讨

1. DR、BDR的概念
 
MA(Multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)及非广播型多路访问网络(NBMA)。以太网就是一种典型的广播型多路访问网络(见上图),连到这个MA网络的路由器接口都属于同一个广播域和逻辑子网。在MA网络中每台OSPF路由器需与其他的所有路由器建立OSPF全毗邻(FULL)的邻居关系,这意味着网络中共有n(n-1)/2个邻接关系,导致每台路由器不得不为维护这些邻居关系消耗更多的资源,而且当拓扑出现变更时,网络中的LSA泛洪可能会造成带宽的浪费和进一步的设备资源损耗。
为减少MA网络中的LSA泛洪及邻接关系数量,OSPF会在每一个MA网络中选举一个指定路由器 DR(Designated Router)和一个备用指定路由器BDR(Backup Designated Router)。MA网络中的路由器都只与DR、BDR建立全毗邻(FULL)的邻接关系,DRother之间不会建立全毗邻的OSPF邻接关系,而只是停滞在2way状态。说的通俗点,就是“大家共坐一个山头,现在选个大当家,再弄个二当家。其他的都是屌丝村民,所有的村民都只跟大当家和二当家结交好基友的关系,村民之间不许搞基……不许搞基……”
2. 选举过程
当一台OSPF路由器(的接口)激活后并去发现它的邻居路由器时,它将去检查网络中是否已经存在有效的DR和BDR路由器。如果DR和BDR路由器存在的话(网络中某台路由器发出的Hello消息中DR字段为其自身的RouterID),这台路由器将接受己经存在的DR和BDR路由器。
如果BDR路由器不存在,则执行一个选举过程,选出具有最高DR优先级的路由器作为BDR路由器(已经宣称自己是DR的路由器不能参与BDR的选举)。如果存在多台路由器具有相同的优先级,那么在数值上具有最高RouterID的路由器将被选中。如果没有有效的DR路由器存在,那么BDR路由器将被选举为DR路由器,然后再执行一个选取过程选取BDR路由器。
每台路由器的每一个多点访问接口都有一个路由器的DR优先级(范围是0-255,默认为1)。
3.要点总结
 
  • 如果在—个MA网络上只有惟—的一台具有DR选举资格的路由器,那么这台路由器将成为DR,而且在这个网络上没有BDR。其他所有的路由器都将只和这台DR路由器建立邻按关系。
  • 如果没有具有DR选举资格的路由器和一个MA网络相连(例如所有路由器的接口DR优先级都是0),那么这个网络上将没有DR或者BDR路由器,而且也不建立任何邻接关系。
  • DR、BDR的身份是非抢占的,也就是一旦网络中DR确立,则即使后来者的优先级比当前DR更高,也无法抢占DR的身份。当DR失效,BDR成为DR,同时再产生BDR。
  • DR与BDR、DR与Drother、BDR与Drother之间都是FULL状态,Drother之间是2way状态。所有的Drother都只和DR以及BDR建立全毗邻关系。
  • OSPF定义了一个Wait计时器,缺省等于Dead时间40s,当一个MA接口激活OSPF时,它会等待Wait计时器定义的时间,这个时间用于搜集MA网络中具有DR选举资格的路由器。这就是为什么我们在以太网接口上配置OSPF时,邻居关系的建立总是很慢,而在串行接口上配置OSPF,邻居关系很快就建立起来了,串行接口不选举DR、BDR,无需经过WAIT计时器。
  • DR、BDR是一个接口级别的概念。严格的说“这台路由器是DR” 这句话其实并不严谨,例如下图所示,
  • 在192.168.1.0/24这个MA网络中,R1的Fa0/0口最终被选举为DR的话,我们不会说R1就是DR,因为DR是接口级别的角色,只能说R1的Fa0/0口在直连的网络中是DR。并且R1的Fa0/1连接到另一个MA网络,那么在那个MA网络中,也要选举DR、BDR,至于R1的Fa0/1能否成为那个网络的DR,也是要看PK的结果。
4. 关于DR、BDR选举的深入探讨之一
1) 如果下图中两台路由器(的接口)同时激活OSPF,则在接口OSPF状态机的演进过程中,2way状态后会各自启动WAIT计时器,用于搜集MA网络中具有选举资格的OSPF路由器,在各自泛洪的Hello报文中,包含着他们自身的接口DR优先级、RouterID等信息。
40s后R1成为DR,R2成为BDR。此时大家发送出来的Hello消息中,DR字段填写的是R1的RouterID,BDR字段填写的是R2的RouterID。
 
2) 此后,如果R3也加入到了MA网络中,并且它的接口DR优先级比R1更高:R3的接口激活OSPF后,也会启动一个WAIT计时器,但是它会收到R1发送出来的Hello消息,该Hello消息中DR字段填写的正是R1自己的RouterID,这意味着“网络中有人宣称自己是老大”,因此R3将接受这个事实,它的WAIT计时器迅速超时。这就是所谓的DR的不可抢占性。
 
3) 但是我们考虑另一种情况:假设初始情况下R1、R2处于一个LAN中,R3自己处于另外一个LAN中,大家的接口IP都是同网段的,但是属于不通的LAN。例如三台路由器都连接在同一台交换机上,但是R1、R2属于一个VLAN,R3属于另一个VLAN。那么三台路由器的接口激活OSPF后,R1会成为LAN1的DR,而R3会成为LAN2的DR,也就是他们各自发送出来的Hello消息中,都宣称自己就是DR。现在假设两个LAN连接了起来,这就会有问题了,因为同一个LAN中,有两人宣称自己是老大,这就得重新干一架,重新DR选举。
5.关于DR、BDR选举的深入探讨之二
1) 在下图所示的场景中,R1、R2连接到同一个LAN。假设R1的接口在0时刻激活OSPF,而R2的接口在10时刻激活OSPF。虽然R1的接口先激活OSPF,但是它的WAIT计时器超时需要40s,而在该计时器超时之前R2的接口就已经启动了,因此它会收到R2发送的Hello消息并且知道R2的接口优先级比自己高,所以当绝对时间40s到期,R1的WAIT计时器超时,它发送的Hello消息中DR字段为R2的RouterID2.2.2.2,但此刻该LAN的DR还不算最终确立,因为R2的WAIT计时器还没超时,有点像:“别人宣称我是DR这不算数,我自己还没认呢”。因此当50s时刻到来时,R2的WAIT计时器超时,此时R2发送的Hello消息中DR字段就是自己的RouterID,LAN中的DR也就正式确立。
 
2) 现在再来看另一种情况。假设R3在绝对时间的45s时刻接口激活OSPF,会有什么样的情况发生?首先R1的接口率先激活,在其WAIT计时器超时之前发现了R2比自己的DR优先级高,因此它认为R2是DR,但是在R2的WAIT计时器超时之前它发现R3的DR优先级比自己更高,注意此刻R2的WAIT计时器还没超时,也就是说在绝对时刻50s之前,事儿都还没定。在50s时刻,R2的WAIT计时器超时,它认为R3是DR(当然R1也认为R3是DR),但此刻R3的WAIT计时器才开始没多久,只有等到它的计时器也超时并且宣称自己是DR时,这个MA的DR才算最终确立。
6. 闹着玩儿的实验:
 
  • R1、R2接口DR优先级设置为0,则R1、R2不建立FULL邻居关系
  • R1 接口优先级为0,R2为1,则R2成为DR,并且该MA网络中没有BDR
  • 在上一步的基础上,R1接口优先级改为100,对网络没有影响(DR非抢占)
  • 在上一步的基础上,R2(此时为DR)重启OSPF进程,则R1成为DR,R2成为BDR
7. 补充知识点
 
在实际的网络环境中,如若是三层以太网口运行OSPF且物理上为点对点连接,则OSPF仍然会在以太网上选举DR、BDR,因此在这种场景中,我们会将接口的OSPF网络类型改为Point-2-Point,以跳过DR、BDR选举过程,加快OSPF邻居建立。

OSPF的LSA类型

原文地址:OSPF的LSA类型~作者:cfeng_026
OSPF的LSA类型种类繁多,往往让人头晕恶心。然后OSPF又是目前应用最广泛的IGP协议,我们不得不对它进行研究。OSPF的LSA类型一共有11种(之前说错12种自己数来数去少一种,哈哈,纠正下),分别是:
LSA1 路由器LSA(Router LSA)LSA2  网络LSA(Network LSA)

LSA3 网络汇总LSA(Network summary LSA)

LSA4  ASBR汇总LSA(ASBR summary LSA)

LSA5  自治系统外部LSA (Autonomous system external LSA)

LSA6  组成员LSA (Group membership LSA) *目前不支持组播OSPF (MOSPF协议

LSA7  NSSA外部LSA (NSSA External LSA)

LSA8  BGP的外部属性LSA(External attributes LSA for BGP)

LSA9  不透明LSA(本地链路范围)  (opaque LSA)   *目前主要用于MPLS多协议标签交换协议

LSA10 不透明LSA(本地区域范围) (opaque LSA)   *目前主要用于MPLS多协议标签交换协议

LSA11 不透明LSA(AS范围) (opaque LSA)   *目前主要用于MPLS多协议标签交换协议

这11种LSA中,我们主要研究其中的LSA1、2、3、4、5、7。其余的在一些特殊环境使用,暂时不对它们进行深入的探讨。

请先看一幅图,此图涵盖了我们所研究的6种LSA类型在OSPF环境中的作用。

* 图中ADV是通告路由器;ABR是区域边界路由器;ASBR是自治系统边界路由器。
①   LSA1 路由器LSA(Router LSA)
描述路由器的直连链路状态信息。由每个发起路由器通告,只在本区域内传递,不会超过ABR。

②   LSA2  网络LSA(Network LSA)
描述本区域内BMA/NBMA(串行连接信息不会在此出现)的网络信息以及连接到此网络的路由器。由本BMA/NBMA网络的DR或BDR通告,只在本区域传递

③   LSA3 网络汇总LSA(Network summary LSA)
描述OSPF的区域间路由(在路由表中以 O IA 标识)。原LSA 1所描述的路由信息会由所在区域的ABR将其转换为LSA 3。
LSA3可以传播到整个OSPF的所有区域(特殊区域除外)。ABR通告。
注意:LSA 3每穿越一个ABR,其ADV Router都会发生改变,ADV Router转变为最后一次穿越的ABR路由器

④   LSA5  自治系统外部LSA (Autonomous system external LSA)
没有看错,这里是LSA 5,我们先讲LSA 5再反过来看LSA 4。
LSA 5描述的是OSPF区域以外的路由(RIP、EIGRP、BGP等等)。由ASBR所通告,LSA 5可以传播到整个OSPF的所有区域(特殊区域除外
注意:LSA 5的通告路由器在穿越ABR的时候是不会改变的。

⑤   LSA4  ASBR汇总LSA(ASBR summary LSA)
LSA 4所承载的内容是:ASBR的Router-ID。LSA 4其实就是图中R4(通告路由器)将Area 3中R11的Router-ID信息转换为LSA 4,在整个OSPF域中泛洪传播(由于LSA 5的通告路由器在穿越ABR的时候不会改变,如图中Area 3的LSA 5在穿越R4到达Area 0时,通告路由器不改变仍然是R11,因此除了Area 3,Area 0和其他区域都不知道R11的信息。此时就需要LSA 4为Area0和其他区域提供R11的信息,可以这么说,LSA 4是为LSA5所服务的)。

⑥   OSPF的特殊区域:Stub Area末梢区域
在Stub区域中只有域内和域间路由只允许LSA 3进入本区域,LSA 4/5不允许进入。配置Stub区域后会在区域内自动的生成一条默认路由(以便访问OSPF中其他区域的网络)。

⑦   OSPF的特殊区域:Total Stub Area绝对末梢区域
在Total Stub Area中只有本区域内的路由LSA3/4/5均不允许进入本区域。配置Total Stub Area后会在区域内自动的生成一条默认路由(以便访问OSPF中其他区域的网络)。

⑧   OSPF的特殊区域:NSSA Area次末梢区域
在NSSA区域中允许存在ASBR,所以也就可以引入外部路由。这个外部路由在NSSA区域内以LSA 7存在。当此LSA 7路由离开NSSA区域进入别的区域时,NSSA的ABR会进行LSA 7向LSA 5的转换(如图Area 6所示)。
本区域只允许LSA 3进入,禁止LSA4/5的进入。所以此区域有域内、域间和外部路由
配置NSSA区域需要在区域内手工的创建一条默认路由(以便访问OSPF中其他区域的网络)。
# router ospf x
# area 6 nssa default-information-originate

⑨   OSPF的特殊区域:Total NSSA Area绝对次末梢区域
在NSSA区域中允许存在ASBR,所以也就可以引入外部路由。这个外部路由在NSSA区域内以LSA 7存在。当此LSA 7路由离开NSSA区域进入别的区域时,NSSA的ABR会进行LSA 7向LSA 5的转换(如图Area 7所示)。
本区域禁止LSA3/4/5进入,只有本区域内路由和外部路由。配置Total NSSA Area后会在区域内自动的生成一条默认路由(以便访问OSPF中其他区域的网络)。

OSPF的区域类型和LSA类型这两个知识点,经常容易导致人们对他们理解上的混乱,今天就来谈谈这两个概念。
本文将会以下面这个拓扑图为例进行讲解。

一、LSA Type,链路状态通告的类型
本来想先讲区域类型,但是由于要理解不同类型的区域,必然要涉及到不同类型的LSA,现在把LSA放到前面先讲。
我们这里谈谈常见的几种LSA123457LSA
11LSA,路由器LSAOSPF网络中所有路由器都会产生1LSA,他的意思就是表示路由器自己在本区域内的直连链路信息。该LSA仅在本区域内传播。其中,Link IDADV Router写的都是该路由器的RouterID
下图为1LSA
22LSA,网络LSA在广播或者非广播模式下(NBMA)由DR生成。该LSA仅在本区域内传播。2LSA表达的意思应该是:某区域内,在广播或非广播的网段内选举了DR,于是DR在本区域范围利用2LSA来进行通告。该LSA仅在本区域内传播。其中,该LSALink ID就是该DR的接口IP地址,而ADV Router则是DRRouter ID
下图为2LSA
33LSA,网络汇总LSA由区域边界路由器ABR生成,用于将一个区域内的网络通告给OSPF中的其他区域。可以认为3LSA保存着本区域以外的所有其他区域的网络。举个例子,在多区域的环境如1-0-2这样的三个区域,含有area1area0ABR会把area1的网络以3LSA的形式通告给area0,当然它也会把area0里面的网络通告给area1。那么,area1里面的网络又是如何通告到area2呢?这里就要考虑到area1那些一开始被转换成3LSA的网络,是如何进入到area2的问题了。当原先这个3LSA进入到area0area2的边界路由器时,位于这个边界的ABR就把这条包含着area1链路信息的3LSA进行修改,修改的内容是把里面的ADV Router替换成自己的Router ID,并且维持原先的Link ID不变,然后把这条修改后的LSA通告给area2,这个就是3LSA的工作过程。
下图为3LSA

44LSAASBR汇总LSA4LSA5LSA是紧密联系在一起的,可以说4LSA是由于5LSA的存在而产生的。4LSA由距离本路由器最近的ABR生成,这句话应该要这样来理解:如果路由器想要找到包含了外部路由的那台ASBR(自治系统边界路由器)的话,你应该要到达哪台ABR,这台ABRRouter ID就写在该LSAADV Router里面,而LSA里面的Link ID代表的是该ASBRRouter ID
下图为4LSA:


55LSA,外部的LSA5LSA由包含了外部路由的ASBR产生,目标是把某外部路由通告给OSPF进程的所有区域(特殊区域除外,下面会提到)。5LSA可以穿越所有区域,意思是在跨区域通告时,该LSALink IDADV Router一直保持不变。通俗一点来说,就像是该ASBROSPF全网络的所有路由器说,我有这个外部路由,想去的话就来找我吧!其中,Link ID代表的是那台ASBR所引入的网络,ADV Router则是该ASBRRouter ID
下图为5LSA

67LSA7LSA是一种由NSSA区域中引入了外部路由的路由器生成的LSA,他仅在NSSA本区域内传播。由于NSSA区域不允许外部的路由进来从而禁止了5LSA,那么为了能够把自己的外部路由传播出去,于是使用了7LSA来代替5LSA的功能。值得注意的一点是,当这种7LSA到达NSSA跟其他区域的边界后,该边界路由器会根据这条7LSA。生成对应的5LSA然后继续传播给其他区域。此时,这条5类的LSA里面的Link ID7LSA一样,都是该外部网络地址,而ADV Router则变成了该边界路由器的Router ID,因为这条5LSA本来就是边界路由器产生的。这里要注意的一点是,该5LSA里面的Forwarding Address还是保持跟之前的7LSAForwarding Address一样。
下图为7LSA

下图为7类转成5LSA

二、Area Type,区域类型
OSPF的区域类型分为5种:Backbone area(area 0)Standard areaStub areaTotally stubby areaNo so stubby area(NSSA)。下面来逐一介绍。
1Backbone area,也叫骨干区域,其实就是area 0。根据OSPF的设计原则,area 0OSPF网络中起着中心节点的作用,其他区域的链路信息通过area 0来进行相互传递,这也意味着所有其他区域都必须跟area 0相连。该区域支持12345LSA

2Standard area,也叫标准区域,标准区域的意思就是在这个区域里面可以正常传递OSPF各类报文。该区域支持12345LSA

3Stub area,也叫末节区域,所谓末节区域,意思就是该区域不接受非OSPF网络的任何外部路由(external route),它如果要到达那些外部路由的时候,只需要通过默认路由把它发出去就可以了。该区域支持123LSA

4Totally stubby area,也叫完全末节区域,他的意思是该区域非但不接受外部路由,也不接受自己本区域以外的其他区域的链路信息。它如果要到达本区域以外的目标网络的时候,也是跟末节区域一样,直接把报文通过默认路由发出去。这里要注意的是,由于默认路由是用3LSA发送的,所以完全末节区域虽然不允许普通的3LSA报文,但是支持这种包含默认路由的3LSA。该区域支持12LSA,以及包含默认路由的3LSA

5No so stubby area,就是平时所说的NSSA了,这个NSSA其实是从stub区域发展而来的,它的意思是在含有stub区域的条件下,还拥有可以发送外部路由出去给其他区域的能力。该区域支持1237LSA。这里注意一点的是,NSSA区域还有另外一种模式,那就是是完全末节区域模式的NSSA。这个模式其实就是在完全末节区域环境下允许引入外部路由,这种区域模式支持12LSA以及包含默认路由的3LSA

附记:
下面附上stub区域和totally stubby area的配置方式:
Stub区域的配置方式,其实就像普通一样通告OSPF网络,然后在把该区域设置为stub,命令是area xx stub。举开始的拓扑图为例,要设置aera24stub区域,就要在R2R4上分别进入路由配置模式:
      network24.1.1.0 0.0.0.3 area 24
      area 24 stub
通告完24.1.1.0这个网段后,然后用这条命令“area 24 stub”即可把area24配置为stub区域,如果要配置为完全末节区域,则只要在该命令后面添加一个参数no-summary,即可,完整命令为“area 24 stub no-summary”。
若要查看该区域是否成功配置为stub区域的话,直接show ip ospf即可。

ip ospf network point-to-point的作用

拓扑描述:此拓扑运行ospf协议,各接口都配有正确的IP,并宣告了直连网络
在R3上面添加环回口Loopback0,
R3(config)#interface loopback 0
R3(config-if)#ip address 3.3.3.3 255.255.255.0
R3(config-if)#exit
R3(config)#router ospf 1
R3(config-router)#network 3.3.3.3 0.0.0.0 area 0
R3(config-router)#exit
R3(config)#interface loopback 0
R3(config-if)#ip ospf network point-to-point
R3(config-if)#end
R3#wr
当建立环回口时,不使用了命令IP ospf network point-to-point
路由器只会把环回口宣告的当成一个主机地址
在R2上面show ip route后,
会显示为/32的主机

当建立环回口时,使用了命令 ip ospf network point-to-point
路由器会将环回口宣告的部分当成是一个网络,
在R2上面show ip route后,
会显示为/24的网络

OSPF地址汇总 area range address

基本配置后,查看R1的路由表,可以看出外部2.2.2.1,2.2.2.2,2.2.2.3明细路由和3.3.3.1,3.3.3.2,
3.3.3.3明细路由。

r1#
r1#show ip route
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
      D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
      N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
      E1 – OSPF external type 1, E2 – OSPF external type 2
      i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
      ia – IS-IS inter area, * – candidate default, U – per-user static route
      o – ODR, P – periodic downloaded static route

Gateway of last resort is not set

   192.168.12.0/24 is directly connected, Ethernet0/0
    1.0.0.0/32 is subnetted, 1 subnets
      1.1.1.1 is directly connected, Loopback0
   192.168.13.0/24 is directly connected, Ethernet0/2
    2.0.0.0/32 is subnetted, 3 subnets
O IA    2.2.2.2 [110/11] via 192.168.12.2, 00:00:04, Ethernet0/0
O IA    2.2.2.3 [110/11] via 192.168.12.2, 00:00:04, Ethernet0/0
O IA    2.2.2.1 [110/11] via 192.168.12.2, 00:00:04, Ethernet0/0
    3.0.0.0/32 is subnetted, 3 subnets
O IA    3.3.3.3 [110/11] via 192.168.13.3, 00:00:01, Ethernet0/2
O IA    3.3.3.2 [110/11] via 192.168.13.3, 00:00:00, Ethernet0/2
O IA    3.3.3.1 [110/11] via 192.168.13.3, 00:00:00, Ethernet0/2
r1#
r1#

在area 0与area 1的(边界路由器ABR)R2上进行汇总:

r2#
r2(config)#router ospf 100
r2(config-router)#area 1 range 2.2.2.0 255.255.255.0
r2#

在area 0与area 2的(边界路由器ABR)R3上进行汇总:

r3#
r3(config)#router ospf 100
r3(config-router)#area 2 rang 3.3.3.0 255.255.255.0 not-advertise
r3#

此时,查看R1的路由表:

r1#
r1#
r1#show ip route
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
      D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
      N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
      E1 – OSPF external type 1, E2 – OSPF external type 2
      i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
      ia – IS-IS inter area, * – candidate default, U – per-user static route
      o – ODR, P – periodic downloaded static route

Gateway of last resort is not set

   192.168.12.0/24 is directly connected, Ethernet0/0
    1.0.0.0/32 is subnetted, 1 subnets
      1.1.1.1 is directly connected, Loopback0
   192.168.13.0/24 is directly connected, Ethernet0/2
    2.0.0.0/24 is subnetted, 1 subnets
O IA    2.2.2.0 [110/11] via 192.168.12.2, 00:00:33, Ethernet0/0
r1#

可以看出area 1的路由已经汇总成O IA    2.2.2.0 [110/11] via 192.168.12.2, 00:00:33, Ethernet0/0。
而area 2的路由却消失了,这是因为在对area 2 进行汇总时,汇总路由后面加了no-advertise。

Notice:

  area rang的命令的缺省行为是通告指定的范围。它也可以用来一直一个地址范围的通过。带有关键字no-advertise的命令area rang将使指定范围的前缀被抑制。它们将不会在LSA中通告。