HCNA数通-路由协议基础-OSPF-Go on...

描述本地LSDB(Link State DatabASe)的摘要信息,用于两台设备进行数据库同步。

3、LSR报文(Link State Request packet)

用于向对方请求所需的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。

4、LSU报文(Link State Update packet)

用于向对方发送其所需要的LSA。

5、LSAck报文(Link State Acknowledgment packet)

用来对收到的LSA进行确认。

4、OSPF基本概念

1、路由ID

一台运行OSPF协议的路由中每个OSPF进程必须指定一个用于标识本地路由器的Router ID,是一个32比特无符号的整数。在一个AS中必须唯一,但在同一台路由器的不同进程(不同进程可以理解为不同的路由协议路由)中可以相同。

2、路由域(AS或自治系统)

路由域(Routing Domain),由运行同一种路由协议并且被同一组织机构管理的一组路由器组成。同一个AS中的所有路由器必须运行相同的路由协议,且彼此相连(中间不能被其他协议、路由域所间断),分配相同的AS号。

在OSPF网络中,只有在同一个AS中的路由器才会相互交换链路状态信息,所有的OSPF路由器都维护一个相同的AS结果描述(AS中各区域间的连接关系)的数据库。该数据库中存放的是路由域中相应的链路状态信息,OSPF通过该数据库来计算路由表。

3、区域(Area)

Area是在一个AS内部划分的多个不同位置或者不同角色的一组路由器单元,每个OSPF路由器只能在Area内部学习到完整的链路状态信息。

在大中型网络中,路由设备可能非常多,如果不进行Area划分的话,则整个网络中的所有设备都要彼此学习路由信息,最终生成的路由信息库可能非常庞大,这样会大大消耗设备的存储空间,更不利于进行高效的路由选择。

每个区域用区域号(Area id)来标识。

OSPF的区域边界是设备接口(IS-IS是链路),即一个网段只能属于同一个区域,即路由器之间直接相连的链路两端接口必须属于同一区域(IS-IS两端属于不同区域)。

划分区域后,可以在区域边界路由器上进行路由聚合,不同区域之间仅向外通告其聚合路由,这样可大大减少LSA(链路状态通告)数量以及最小化网络拓扑变化带来的影响。

在OSPF中,除了普通区域外还可以设置多种特殊区域,如骨干区域(固定为area0、stub(末梢)区域、totally stub(完全末梢)区域、NSSA(非纯末梢)区域、totally NSSA(完全非纯)区域,这些特殊区域将在后面一一介绍。

5、OSPF路由器类型

由于OSPF把一个AS划分成了多个区域,这就使得OSPF网络中不同的路由器扮演不同的角色。

1、区域内路由器IR(Internal Router)

该类设备的所有接口都属于同一个OSPF区域。

2、区域边界路由器ABR(Area Border Router)

该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。

3、骨干路由器BR(Backbone Router)

该类设备至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部设备都是骨干路由器。

4、自治系统边界路由器ASBR(AS Boundary Router)

与其他AS交换路由信息的设备称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内设备,也可能是ABR。只要一台OSPF设备引入了外部路由的信息,它就成为ASBR。

5、DR(Designated Router)与BDR(Backup Designated Router)路由器

在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。

为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。

为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。

BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。

DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息(即任何非DR、非BDR设备之间的通信都是通过与DR或BDR来进行数据交换的)。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。

DR和BDR的选举规则为首先比较DR优先级,优先级高的为DR,次高为BDR,如果优先级相等,则Router ID数值高的为DR。如果一台设备的DR优先级为0则不参与选举。

DR的选举是针对设备的接口而言的,某台设备的一个接口是DR,在另一个接口上可能是BDR或DR Other。若DR选举完毕人为的修改DR优先级值也不会重新选举,即DR/BDR的选举是非抢占的。

6、OSPF路由类型

AS区域内和区域间路由描述的是AS内部的网络结构,AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为Type1和Type2两类。下面按优先级从高到低顺序列出了路由类型。

1、区域内路由(Intra Area),仅用于区域内IR路由器之间的路由,用于IR设备间的互联,不像区域外通告。

2、区域间路由(Inter Area),仅用于区域间ABR之间的路由。

3、第一类外部路由(Type1 External)

这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPF自身路由的开销具有可比性。到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到该路由目的地址的开销。

4、第二类外部路由(Type2 External)

这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以,OSPF计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。

7、OSPF支持的网络类型

OSPF根据链路层协议类型,将网络分为如下表所列四种类型。

1、广播类型(BroadcASt)

当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是BroadcASt。在该类型的网络中通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR( Backup Designated Router)的预留IP组播地址。以单播形式发送DD报文和LSR报文。

2、NBMA类型(Non-BroadcASt Multi-Access)

当链路层协议是帧中继、X.25时,缺省情况下,OSPF认为网络类型是NBMA。

在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。

3、P2MP类型(Point-to-Multipoint)

没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中:

以组播形式(224.0.0.5)发送Hello报文。

以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。

4、P2P类型(point-to-point)

当链路层协议是PPP、HDLC和LAPB时,缺省情况下,OSPF认为网络类型是P2P。

在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。

8、OSPF

邻居状态机

OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。

1、Down:

邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。

2、Attempt(尝试连接):

该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时后仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。

3、Init:

收到Hello报文后状态为Init。

4、2-way:

收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。

5、Exstart(预启动):

开始协商主从关系,并确定DD的序列号,此时状态为Exstart。

6、Exchange(交换、传输):

主从关系协商完毕后开始交换DD报文,此时状态为Exchange。

7、Loading:

DD报文交换完成即Exchange done,此时状态为Loading。

8、Full:

LSR重传列表为空,此时状态为Full。

9、OSPF邻接关系建立

初始状态下,所有OSPF接口的邻居状态都是down,没有与任何设备建立邻居关系,更没有建立邻接(邻居关系不等于邻接关系)关系。

整个OSPF邻接关系建立分4个主要阶段:

1、邻居发现阶段:

以P2P和广播类型网络中设备为例如下图1

HCNA数通-路由协议基础-OSPF-Go on...

图1 OSPF邻接关系建立示意图

首先,当R1的OSPF接口启动路由进程后,会以组播方式向所连接的同网段所有直连的OSPF设备发送一个hello报文。此时因为R1没有与其他设备建立邻居关系,不知道其他设备的路由器ID,所以此hello报文中只封装了自己OSPF路由区域的路由ID。

当R2收到来自R1的hello报文后,将收到来自R1报文的接口转换为init状态,同时R2从接收到的hello报文中获取R1的路由ID并添加到邻居列表中。

然后在Dead Interval超时前以组播方式向所连接网段中的所有直接连接的OSPF设备发送一个封装了自己路由ID和R1路由ID的hello报文。

当R1收到来自R2的hello报文后发现里面有自己的路由ID,则将收到来自R2报文的接口转为2-way状态,同时从收到的报文中获取R2的路由ID并添加到邻居列表中,在Dead Interval超时前以组播方式向所连接的网段中所直连接的OSPF设备发送封装了自己的路由ID 和R2路由ID 的hello报文。

当R2再次收到来自R1的hello报文,发现里面有自己的路由ID后,将收到来自R1报文的接口转换成2-way状态。这是R1和R2建立双向2-way邻居关系。

通过以上4步(两次握手)建立起邻居关系,进入主从关系确立阶段。

2、主从关系确立阶段

在双方都进入2-way后,各自通过hello报文进行DR/BDR选举。

DR和BDR是由同一网段中所有路由器根据路由优先级和路由器ID选举出来的,只有hello报文中Rtr Pri(优先级)字段大于0 的路由器才具有选举资格。

在与一个或多个邻居之间都进入2-way之后,本地路由器对每个邻居发来的hello包中的优先级、DR、BDR域进行检查。此时,所有路由器都宣称自己为DR(将自己的接口地址置于hello包DR字段中),也都宣称自己为BDR。(将自己的接口地址置于hello包BDR字段中)

DR字段中优先级最高的路由器被宣告为DR,如果优先级一样,则拥有最高路由器ID的邻居被选为DR。

BDR字段中优先级最高的路由器被宣告为BDR,如果优先级一样,则拥有最高路由器ID的邻居被选为BDR;如果没有任何路由被选为BDR,则拥有最高优先级的非DR邻居路由器被选为BDR,如果优先级相同,则最高路由ID者被选为BDR。

进入exstart(预启动)状态后,双方路由器开始以DD报文进行交互,确定双方的主从关系(不是DR与BDR),确定用于数据交换的初始DD报文的序列号,以保证路由器得到的永远是最新的链路状态信息。

通过双方的路由器ID来确定主从关系,路由器ID大的为主设备。确定好主从关系后,从设备以主设备的DD报文序列号向主设备发送DD报文,并转换自己接收DD报文的接口为exchange状态;主设备收到从设备DD报文后也将收到DD报文的接口转换为exchange状态。

3、数据库同步阶段

主设备开始向从设备发送带有LSA header字段的报文,对从设备进行数据更新。当主设备向从设备发送最后一个DD报文时,将接收DD报文的接口转换为loading状态;当从设备收到最后一个DD报文时也将收到报文的接口转换为loading状态。

当主设备发送完DD报文后,从设备开始依据所接收的DD报文中的LSA header字段检查自己的LSDB,如果没有,从设备会以LSR报文向主设备发出更新请求;当主设备收到从设备发送来的LSU会向从设备发送对应的LSA;从设备收到主设备的LSU报文后会以LSAck报文进行确认。

在DD报文交换中,主从角色不是固定的,因为双方都可能没有对方的LSA,或者一方的LSA的版本更新,双方都可以向对方发送LSR报文请求更新。

4、完全邻接阶段

当双方的LSDB完全同步后,双方均转为FULL状态,双方OSPF接口间整数建立完全邻接关系。

10、OSPF LSA类型

OSPF是一种典型的链路状态路由协议,缺省情况下每个路由器通过向邻居发送LSA(Link State Advertisement,链路状态通告)来彼此交换并保存整个网络的链路状态信息,从而掌握全网拓扑结构,并独立计算路由。

划分区域后,OPSF设备收集其所在网络上各个设备的的链路状态信息,并生成链路状态数据库(LSDB),然后OSPF设备根据SPF(Shortest Path First,最短路径优先)路由算法独立算出到达任意目的地的路由。

所以不同的OSPF设备所发送的LSA的用途和可以通告的范围各不相同。

OSPF LSA类型示例图

1、Router-LSA(Type1)

每个设备都会产生,描述了该设备直连链路状态和开销,在所属的区域内传播。

2、Network-LSA(Type2)

由DR(Designated Router,指定路由)产生,描述本网段的链路状态(即DR所在网段网络掩码和该网段内有哪些设备),在所属的区域内传播。

3、Summary-Network -LSA(Type3)

由ABR产生,ABR将自己所在区域的Type1和 Type2转换成Type3,来描述区域间的路由信息(包括缺省路由),可以在整个AS内泛洪,但不能泛洪到 Totally STUB(完全末梢)和NSSA(非纯末梢)区域。

4、Summary- ASBR -LSA(Type4)

由ABR产生,描述到其它各区域ASBR的路由,通告给除本ASBR所在区域的其他相关区域,仅可向普通区域泛洪,不能泛洪到 STUB、NSSA、 Totally STUB、Totally NSSA区域。

5、External- AS-LSA(Type5),也称为Autonomous system external LSA

由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB、NSSA、 Totally STUB、Totally NSSA区域)。

6、LSA(Type6)

用于OSPF组播

7、NSSA LSA(Type7)

由NSSA或Totally NSSA区域的ASBR产生,描述到AS外部的路由,仅在NSSA(非纯末梢)或Totally NSSA区域内传播。

8、Opaque LSA(Type9/Type10/Type11)

Opaque LSA提供用于OSPF的扩展的通用机制。其中:

Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种。

Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种。

Type11 LSA在自治域内传播,目前还没有实际应用的例子。

11、OSPF普通区域

缺省情况下,OSPF区域被定义为普通区域。普通区域包括标准区域骨干区域

标准区域是最通用的区域,它传输区域内路由,区域间路由和外部路由。

骨干区域是连接所有其他OSPF区域的中央区域。区域号固定为0.0.0.0,即区域0,通常用Area 0表示。

骨干区域必须是连续的(也就是中间不会越过其他区域),或者通过虚连接(virtual link)连接两个或多个分离的骨干区域,但这些分离的骨干区域的区域号要一样,均为0,同时要求其他区域必须与骨干区域直接连接或通过虚连接虚拟连接。

虚连接被认为是属于骨干区域(相当于骨干区域的延伸)的,在OSPF看来,虚连接两端的两个路由器被一个点对点的链路连在一起,这样原本没有与骨干区域连击的区域就变成直接连接了,称为普通区域。通过虚连接连接两个非连续的骨干区域0的方法一样

在OSPF路由域中,无论是否划分区域,总是至少有一个骨干区域。区域之间的通信都是先被路由到骨干区域,然后再路由到目的区域,最后被路由到目的区域的主机

在骨干区域中的路由器(都是ABR)通过它们所连接的其他区域内的汇总路由到骨干区域中的其他路由器,这些汇总通告只在骨干区域内的路由器传播,使得骨干区域内每台路由器都有一个到达所连接的其他区域ABR的可用路由表。

12、OSPF STUB区域

Stub区域是专为那些性能较低、与AS外部没有太多路由通信的AS边缘区域简化区域内部路由设备上的路由表二采取的一种优化措施。只有处于AS边缘,且只有一个连接到其它区域的ABR,没有ASBR,没有虚连接穿越的非骨干区域才能配置成stub区域。

Stub区域不允许发布(发布的意思是获取和维护外部的明细路由信息)自治系统外部路由,只允许发布区域内路由和区域间的路由

Stub区域不允许发布AS外部路由后回来带来一个问题,stub内部路由设备不能获取AS外部路由信息,不能与AS外部进行通信,但有时候又确需与AS外部通信。

于是增加了一种解决办法,为了保证到自治系统外的路由可达,stub区域的ABR发布Type3缺省路由传播到区域内,所有到自治系统外部的路由都必须通过ABR才能发布,stub区域的ABR将生成一条指向自己的缺省路由(0.0.0.0),并发布给STUB区域中的其他非ABR路由器,这样stub区域的其它非abr路由器就知道通过abr路由器与AS外部通信。

STUB区域是一些特定的区域,STUB区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由设备的路由表规模以及路由信息传递的数量都会大大减少,提高路由效率,减小内存消耗。

STUB区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,STUB区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。

为保证到自治系统外的路由依旧可达,配置STUB区域时需要注意下列几点:

1、骨干区域不能配置成STUB区域。

2、如果要将一个区域配置成STUB区域,则该区域中的所有路由器都要配置STUB区域属性。

3、STUB区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。

4、虚连接不能穿过STUB区域。

13、OSPF Totally STUB区域

Totally stub区域与与stub区域所需满足条件完全一样,除了不允许AS外部路由相关的Type4 LSA和Type5 LSA进入区域外,还不允许AS内其它区域的Type3 LSA经由ABR向区域内泛洪。Totally stub区域只有Type1 LSA和Type2 LSA(广播网络),进一步大大减少了区域内部路由器的路由表规模,降低设备资源消耗,提高路由效率。

为了解决Totally stub区域与其他区域或AS外部通信,同样由Totally stub区域的ABR向区域内泛洪一条缺省路由,使得Totally stub区域内的路由器能与外部通信。

14、OSPF NSSA区域

OSPF规定STUB区域是不能引入外部路由的,这样可以避免大量外部路由对STUB区域路由器带宽和存储资源的消耗。对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,STUB区域就不再满足需求了。因此产生了NSSA区域。

NSSA区域同时保留自治系统内的STUB区域的特征。OSPF NSSA区域(Not-So-Stubby Area)是OSPF新增的一类特殊的区域类型,NSSA区域是stub区域的延伸,或者说是NSSA区域的修订版,即NSSA区域可以位于非边缘区域,可以有多个ABR(stub只有一个),可以有一个或多个ASBR(stub不允许有)。

NSSA区域允许引入自治系统外部路由即由NSSA区域的ASBR发布Type7 LSA通告给NSSA区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中不允许其他区域的ASBR连接的AS外部路由进入本区域。

与stub区域一样,允许区域间的Type3 LSA进入区域内部泛洪。

当区域配置为NSSA区域后,为保证到自治系统外的路由可达,NSSA区域的ABR将生成一条缺省路由,并发布给NSSA区域中的其他路由器。

NSSA区域和STUB区域有许多相似的地方。NSSA区域与STUB区域差别在于STUB区域是不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其它区域的外部路由。

HCNA数通-路由协议基础-OSPF-Go on...

图1 NSSA区域

1、N-bit

一个区域内所有路由器上配置的区域类型必须保持一致。OSPF在Hello报文中使用N-bit来标识路由器支持的区域类型,区域类型选择不一致的路由器不能建立OSPF邻居关系。

虽然协议有要求,但有些厂商实现时违背了在OSPF DD报文中也置位了N-bit,为了和这些厂商互通,路由器的实现方式是可以通过命令设置N-bit来兼容。

2、Type7 LSA

Type7 LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述引入的外部路由信息。

Type7 LSA由NSSA区域的自治域边界路由器(ASBR)产生,其扩散范围仅限于ASBR所在的NSSA区域。

NSSA区域的区域边界路由器(ABR)收到Type7 LSA时,会有选择地将其转化为Type5 LSA,以便将外部路由信息通告到OSPF网络的其它区域。

3、Type7 LSA转化为Type5 LSA

为了将NSSA区域引入的外部路由发布到其它区域,需要把Type7 LSA转化为Type5 LSA以便在整个OSPF网络中通告。

P-bit(Propagate bit)用于告知转化路由器该条Type7 LSA是否需要转化。

缺省情况下,转换路由器的是NSSA区域中Router ID最大的区域边界路由器(ABR)。

只有P-bit置位并且FA(Forwarding Address)不为0的Type7 LSA才能转化为Type5 LSA。FA用来表示发送的某个目的地址的报文将被转发到FA所指定的地址。

区域边界路由器产生的Type7 LSA不会置位P-bit。

4、缺省路由环路预防

在NSSA区域中,可能同时存在多个ABR,为了防止路由环路产生,边界路由器之间不计算对方发布的缺省路由。

配置NSSA区域时需要注意下列几点:

1、骨干区域不能配置成NSSA区域。

2、如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都要配置NSSA区域属性。

3、虚连接不能穿过NSSA区域。

15、OSPF Totally NSSA

区域

Totally NSSA区域与NSSA区域特征一样,不同的是Totally NSSA区域不允许AS内区域间Type3 LSA进入。

16、OSPF区域划分原则

1、合理划分OSPF区域:

当网络规模不断增大时,在大型的OSPF网络中,LSDB(链路状态数据库)会占用大量的存储空间,并使得运行SPF(shortest path first,最短路径优先)算法的复杂度增加,导致CPU负担加重。

当网络规模不断增大时,网络拓扑不断变化,每一次的变化都会导致所有路由器重新进行路由计算,造成大量的OSPF报文在网络中传递,降低网络利用率。

划分自治系统区域能解决上述问题,按照一般经验,区域内路由器数量不超过50台,如果少于20台可只划分为一个区域,即骨干区域。

根据OSPF协议规定,所有其它区域必须与骨干区域连接(直连或虚连),所以规划是合理的选择骨区域的位置(通常为网络的中央)。

2、OSPF对设备性能的要求:

骨干区域要负载整个区域的路由信息传输,负荷较大,应选择性能好处理能力强的路由器来担任。

每个ABR负责所连接的两个或多个区域间的路由信息传输工作,需要保持每个连接区的LSDB,所以也要求路由器性能高的来担任。通常建议在一台ABR上最多连接三个区域,即一个骨干区域和两个普通区域。

每个ASBR负责两个或多个自治系统间的路由传输,同样需要高性能路由器来担任,与ABR类似,也不要连接太多的自治系统。

3、OSPF区域划分原则:

3.1、按照地理区域或行政管理单位划分,这是最简单的区域划分

3.2、按照路由器性能来划分,即通常将一个高端路由器下面连接的多个中低端路由器划分为一个区域,这样的好处是便于合理的选择ABR。

3.3、按照IP网段来划分,好处是便于在ABR上设置路由汇聚,减少网络中路由信息数量

3.4、路由器数量来考虑,通常一个区域中不要超过50台路由器。随着路由器CPU处理速度、内存的增大,最新测试表明200台的一个区域都可以快速收敛。

17、OSPF路由计算基本过程

OSPF根据骨干区域和普通区域分为区域内路由和区域间路由,整个OSPF路由计算过程是在OSPF设备间建立了完全的邻接关系(上面的4个阶段)后进行的,依据就是路由器为所连接的各个区域所保存的LSDB。

1、OSPF区域内路由计算

当网络稳定下来后,OSPF会根据各自的LSDB采用SPF(最短路径优先)算法(具体算法为Dijkstra,狄克斯特拉算法那,IS-IS 也采用此算法)独立地计算到达每一个目的网络的路径,并将路径存入路由表中。路由表中包含该路由到每一个可到达目的地址、开销和下一跳。

OSPF区域内路由是由OSPF内部路由器使用最小开销的路径到达目的网络,且区域内的路由不被聚合。

Dijkstra算法是利用开销来计算路由路径性能的,开销最小者即为最短路径。在配置OSPF路由器时可根据实际情况,如链路带宽、时延等设置链路的开销大小。开销越小,则该链路被选为路由的可能性越大。

这里的开销是根据链路类型计算的,不同的链路类型对应的开销值不一样。

在Dijkstra算法中,为了给在一对给定的的路由器节点之间选择一条最短(链路开销最小)路由路径,只需要在通信子网拓扑中找到在这起始和结束节点之间的中间节点串联起来后链路开销最短的路径即可。

具体为从一个源节点开始,把距离源节点最短路由的节点标识为工作节点,并且是永久性的节点,其到达源节点的距离值是不能改变的,其他的节点为临时性节点,然后沿着与工作节点距离值最小的节点开始计算,直到最终节点。计算的时候工作节点是不断变动的,与工作节点不相邻的节点(到源节点除外)被标记为无穷大。

Dijkstra算法虽然能算出最短路径,但由于它遍历计算的节点很多,所以效率低。有些节点还不能一次就能算出,还要考虑后续节点到达源节点的距离。

2、OSPF区域间路由计算

OSPF路由器的ABR连接了多个OSPF区域,所以保存了多个区域的LSDB。

ABR与所连内部路由器和其他区域内的路由器通信不是以具体的明细路由进行的,而是采用聚合路由进行。

在ABR上会以type3 LSA(网络聚合LSA)的方式向所连区域和其他区域通告网络聚合路由,其它区域的路由器也是以type3 LSA方式向所连区域通告网络聚合路由。

区域内路由器与ABR以及ABR与其他区域的通信都是以网络聚合路由进行的。

两个非骨干区域之间不能直接进行LSA通告,而是借助骨干区域转发,同样,两个非骨干区域之间不能直接进行路由通信,需借助骨干区域进行转发。

3、OSPF路由维护

当链路状态发生变化时,OSPF通告泛洪广播给网络上的其他路由器。OSPF路由器接收到包含新的链路状态更新报文后更新自己的链路状态数据库,然后用spf重新计算路由表,直到计算完成,新的链路状态信息发送给其他路由器。在计算期间继续使用旧的路由表。

即使链路状态没有发送变化,OSPF路由信息也会自动更新,默认是30min。

OSPF路由域中各区域中设备获取路由信息规则:

1、区域内各路由器通告type1 lsa来获取彼此的路由信息,实现相互路由通信。

2、在广播类型网络中,区域内DR、非BDR路由器与DR、BDR路由器之间是通过type2 LSA获取路由信息的,各非DR、BDR路由器之间不相互获取路由信息,需要全部通过DR或者BDR以及该区域的ABR与其他区域进行通信。

3、在区域内部路由器与区域ABR之间,通过所在区域的ABR以type3 lsa向内发布本区域各网段聚合路由信息,实现区域内路由器与对应区域的ABR路由通信。

4、在不同区域之间,通过各自区域的ABR以type3 lsa向内、外发布的本区域和外部区域各网段聚合路由信息(中间经过骨干区域进行lsa转发),实现不同区域的路由间的路由通信。

5、在区域内部路由器与外部AS之间,先通过各区域的ABR以type4 lsa向内发布到达ASbr的聚合路由信息实现与ASbr的路由通信,然后通过对应的ASbr向普通区域内发布的type5 lsa或者向NSSA和totally NSSA区域发布的type7 lsa实现与外部AS的路由通信。

HCNA数通-路由协议基础-OSPF-Go on...


分享到:


相關文章: