1.OSPF:开放式最短路径优先(Open Shortest Path First) 是一个内部网关协议(IGP)用于在单一自治系统(AS) 内决策路由,是对链路状态路由协议(SPF)的一种实现。使用著名的Dijkstra算法来计算最短路径树。

  OSPF是链路状态协议,具有支持大型网络、路由收敛快、占用网络资源少等优点。    采用OSPF的路由器彼此交换并保存整个网络的链路信息,从而掌握全网的拓扑结构,独立计算路由。

2.链路状态路由协议

  1)快速适应网络变化;

  2)在网络发生变化时发送触发更新;

  3)以较低的频率(如每隔30分钟)发送定期更新,这被称为链路状态刷新

  链路状态路由协议仅在网络拓扑发生变化时才生成路由更新。链路的状态发生变化后,检测到变化的设备将生成一个针对该链路的链路状态通告(LSA,也称为链路状态协议数据单元(PDU))。

  使用特殊的多播地址将LSA传播给所有邻接设备。每台路由选择设备都存储该LSA并将其转发给区域内的所有邻接设备。这种LSA扩散确保所有路由设备都更新其链路状态数据库(LSDB),然后更新路由表以反映新的拓扑。

  LSDB用于计算穿越网络的最佳路径。链路状态路由器对LSDB应用Dijkstra算法(也叫SPF算法)以建立SPF树。每台路由表都从其SPF树中选择最佳路径,并将其加入到路由表中。

  链路状态路由选择协议不像距离矢量路由选择算法那样,需要使用定时器才能保持网络的稳定。

  为确保网络中的所有路由器都做出一致的路由选择决策,每台路由器须记下

  1)直接相连的邻接路由器;失去与邻接路由器的联系后,路由器将在几秒钟之内将该邻居提供的所有路径作废,并重新计算路径。在OSPF中,有关邻居的信息存储在邻居表中,这个表也被称为邻接关系数据库。

  2)网络或区域内的其他路由器及其连接的网络:路由器通过LSA来获悉其他路由器和网络,LSA被扩散到整个网络,它存储在拓扑表或数据库中。

  3)前往每个目的地的最佳路径:每台路由器都使用Dijkstra算法独立地计算前往网络中每个目的地的最佳路径。所有路径都存储在LSDB中。最佳路径被加入到路由表中。路由器收到分组后,将根据路由表中的信息对其进行转发。

  OSPF邻居表=邻接关系数据库;OSPF拓扑表=OSPF拓扑数据库=LSDB;路由表=转发数据库。

  OSPF支持基于接口的报文验证;支持到同一目的地址的多条等值路由;发现的路由可以根据不同的类型而有不同的优先级。      

3.OSPF区域结构

  1)区域划分思想:链路状态路由协议通常将网络划分成区域,以减少SPF算法的计算量。区域内的路由器数量以及在区域内扩散的LSA数量较少,这意味着  区域内的LSDB较小。这样SPF算法的计算量更小,需要的时间更短。

  在这种情况下,仍可进行区域间路由选择,但很多内部路由操作是在各个区域内进行的。如果某一存储链路时好时坏,不会导致其他区域内的路由器间断进行SPF算法。

  2)OSPF使用包含两层的层次区域结构

  骨干区域:快速、高效地传输IP分组的OSPF区域。骨干区域将其他类型的OSPF连接起来,通常没有终端用户;也叫OSPF区域0,是网络核心,其他区域都与它直接相连。

  非骨干区域:连接用户和资源的OSPF区域。默认情况下,常规区域不允许另一个区域使用其连接将数据流传输到其他区域。来自其他区域的所有数据流都必须经过骨干区域0.

  建议每个区域包含的路由器数量不应超过50台;每个路由器所属的区域数最多不要超过3个。

  3)OSPF邻接关系:通过Hello分组建立

    ①路由器将Hello分组发送给邻接路由器,并接收来自邻接路由器的Hello分组。Hello分组的目标地址通常是多播地址。

    ②路由器通过交换Hello分组来获悉协议特定的参数。交换完Hello分组后,路由器宣称邻居处于正常运行状态。

    ③两台路由器使用Hello分组建立邻接关系后,它们通过交换LSA来同步LSDB,并确认已收到邻接路由器的LSA。至此,两台邻接路由器知道它们的LSDB已经同步。对OSPF而言,这意味着两台路由器已处于完全邻接状态。

    ④必要时,路由器将新的LSA转发给其他邻接路由器,确保在整个区域内,链路状态信息时完全同步的。

  4)默认的OSPF开销如下

  T1(1.544Mbit/s的串行链路):64 ; E1(2.408Mbit/s的串行链路):48

  以太网:10;快速以太网:1;FDDI:1;ATM:1.  开销越低,链路越好。

  要调整开销度量值,可使用命令ip ospf cost 、 bandwidth和auto-cost reference-bandwidth。

4.OSPF的5种报文类型:是在IP报文中发送的,使用的协议号为89.

  1)Hello分组:发现邻居并在它们之间建立邻接关系;

  2)数据库描述(DBD):检查路由器的数据库之间是否同步;

  3)链路状态请求(LSR):向另一台路由器请求特定的链路状态记录;

  4)LSU:发送请求的链路状态记录;

  5)LSAck:对其他类型的分组进行确认。

  路由器通过LSU收到LSA后:1)如果没有这样的LSA条目,则将其加入到LSDB中,返回一个LSAck,将该信息扩散到其他路由器,运行SPF,并更新其路由表;

  2)如果有这样的条目,但LSA包含的信息更新(序列号更大),则将其加入到LSDB中,返回一个LSAck,将该信息扩散到其他路由器,运行SPF,并更新其路由表;

  3)如果有这样的条目,但LSA包含的信息更旧,则将一个包含新信息的LSU发送给发送方。 

5.邻接路由器要建立邻接关系,Hello分组的如下字段必须匹配

  Hello间隔;失效间隔;区域ID;身份验证密码;末节区域标记;接口的主IP地址必须位于同一个子网且子网掩码相同,接口的最大传输单元(MTU)也必须匹配。

6.网络类型

  1)点到点:将一对路由器连接起来的网络;不需要DR和BDR。在点到点链路上,默认的OSPF Hello间隔和失效间隔分别是10秒和40秒,可使用 ip ospf hellointerval seconds 和 ip ospf dead-interval seconds 修改。

  不要求采用全互联拓扑;不要求静态地配置邻居;复制LSA分组。

  2)广播:多路访问广播网络,如以太网

  3)非广播多路访问(NBMA):连接的路由器超过两台,但没有广播功能,帧中继、ATM和X.25。默认OSPF Hello间隔和失效间隔分别是30秒和120秒。

  在点到点链路上,路由器彼此建立完全邻接关系,而在LAN链路上,路由器只与DR和BDR建立完全邻接关系。

7.为选举DR和BDR,路由器在交换Hello分组时查看其它路由器的OSPF优先级,然后根据下述条件来做出选择

  1)优先级最高的路由器,优先级次高的路由器成为BDR;

  2)接口的OSPF优先级默认为1.在优先级相同的情况下,根据路由器ID来作出决定:路由器ID最大的路由器成为DR,次大的路由器成为BDR。

  3)优先级为0的路由器不能成为DR和BDR,不是DR和BDR,则是DROTHER。

  4)优先级更高的路由器加入网路时,并不会抢占DR或BDR。仅当DR或BDR出现故障时,才更换DR或BDR。如果DR出现故障BDR将成为DR,并选举新的BDR。如果BDR出现故障,将选举新的BDR。

  命令ip ospf priority number x:指定多路访问链路上的那个路由器接口用作DR或BDR。x的默认优先级为0,其取值范围为0~255.

  DR正常运行时,BDR不执行任何DR功能;BDR接收所有的信息,但转发LSA和同步LSDB的任务由DR来完成。仅当DR出现故障时,BDR才执行DR的任务。

  BDR使用等待定时器来判断DR是否出现了故障。 DR概念是链路级的,在多路访问广播环境中,每个网段都有自己的DR和BDR。

 DR和BDR的价值体现在:1)减少路由更新数据流;2)管理链路状态同步。

8.路由器类型:

  1)域内路由器:其所有接口都位于同一个区域的路由器;

  2)骨干路由器:位于骨干区域边缘,至少有一个接口与区域0相连;使用与内部路由器相同的步骤和算法来维护OSPF路由信息;

  3)ABR路由器:与多个区域相连,为其连接的每个区域维护一个独立的LSDB,并路由来自/前往其他区域的数据流。这种路由器是区域的出口,即路由信息只能通过这种路由器传输到其他区域。

  可对这种路由器进行配置,使之对其连接的区域的LSDB中的路由信息进行汇总。这种路由器将路由信息分发到骨干区域中,骨干路由器再将这些信息转发给其他ABR。一个区域可包含一台或多台ABR。

  4)ASBR:至少有一个接口与其他路由域(如非OSPF网络)相连。这种路由器可将外部路由重分发到OSPF与或执行相反的操作。

9.NBMA中OSPF模式小结

  OSPF技术介绍

10. LSA种类

  1类:路由器LSA;

  2类:网络LSA;

  3类和4类:汇总LSA;

  5类:自治系统外部LSA;

  6类:多播OSPF LSA;

  7类:用于NSSA的LSA;

  8类:BGP外部属性LSA;

  9、10/11类:不透明LSA。

11. 1)命令passive-interface type number 禁止通过指定的路由器接口向外发送路由更新。命令passive-interface default 将所有接口默认状态设置为被动。

  2)使用默认路由的解决方案的可扩展性最强,还可缩小路由表的规模以及减少占用的资源和CPU周期。外部网络故障时,不需要重新进行SPF算法。

  默认情况下,OSPF路由器不会生成默认路由并将其注入到OSPF域中。需使用命令:default-information originate 。

  将默认路由通告给标准区域的两种方式:1.将0.0.0.0通告给OSPF域(条件是发出通告的路由器已经有一条默认路由),使用命令default-information originate实现;

  2.通告0.0.0.0,而不管发出通告的路由器是否有默认路由,使用命令default-information originate 中指定关键字always实现。

12.骨干区域和非骨干区域都有各自的拓扑数据库,该数据库在区域外面不可见。属于多个区域的路由器(ABR)有多个拓扑数据库——它连接的每个区域一个。所有区域都必须与骨干区域直接相连或通过虚链路连接到骨干区域。

  骨干区域必须是连续的。具体的区域类型如下:

  1.标准区域:默认类型;接收链路更新、汇总路由和外部路由。

  2.骨干区域:区域0,其他区域都与之相连以交换路由信息。骨干区域具有标准区域的所有特性。

  3.末节区域:不接受关于自治系统外部的路由信息,如来自非OSPF路由器的路由。如若需要,使用默认路由。末节区域不能包含ASBR。

  4.绝对末节区域:不接受来自自治系统外部的路由以及来自自治系统中其他区域的汇总路由。如若需要,使用默认路由。不能又ASBR。

  5.NSSA:定义了特殊的LSA——7类LSA。不接受有关自制系统外部的路由的信息,而使用默认路由前外外部网络。能包含ASBR。

  6.绝对NSSA。

  OSPF技术介绍

13. 在路由器上配置邻居路由器身份验证后,路由器将对收到的每个路由更新分组的信源进行身份验证,这是通过交换发送路由器和接收路由器都知道的身份验证密钥实现的。 

  默认情况下,OSPF使用身份验证方法null,即不对通过网络交换的路由选择信息进行身份验证。OSPF还支持明文验证和MD5。

  1)简单密码配置:

  首先,接口下 ip ospf authentication-key password 用于对邻接路由器进行OSPF简单密码身份验证。参数password最长8个字符。 在每个接口上可以指定不同的密码,但同一个网络中的所有邻接路由器都必须使用相同的密码,

  这样才能交换OSPF信息。然后,接口下ip ospf authentication [message-digest | mull] md5指定身份验证类型。 如果在ip ospf authentication中不指定任何参数,则表示使用简单密码身份验证。

  要为区域指定身份验证方式,则使用命令area area-id authentication [message-digest];后不加参数,表示使用简单身份验证。

  2)MD5身份验证的配置

  首先,接口下使用命令ip ospf message-digest-key key-id md5 key

  然后,接口下使用命令ip ospf authentication [message-digest | null],指定身份验证类型。

14.Hello/Dead间隔(HELLO包时间间隔和路由器无效时间间隔):路由器在每个启用OSPF的接口上发送Hello包:

  在多路访问和点到点链路上缺省Hello间隔为10s;在NBMA网络中缺省Hello间隔为30s;OSPF的Hello包的目的地址通常为组播地址224.0.0.5。NBMA网络中缺省的Dead间隔为Hello间隔的4倍。

  注:相邻的路由器的Hello和Dead间隔必须一致才能建立邻居关系,否则Hello包被丢弃。

15.邻居:多个共享共同网络分段的路由器在这个网络分段上将成为邻居。这个邻居是通过Hello协议选择出来的。Hello数据包将使用IP组播周期性地被发送出每个接口。

  OSPF建立邻居关系的条件

  1.区域ID要一致:在某一特定网络分段上的两台路由器的接口必须要属于同一个区域。这些接口必须归属于相同的子网。

  2.认证:OSPF允许为特定的区域设置口令。虽然路由器间的认证并不必需,但是如果你需要就可以去设置它。如果你使用了认证,要使路由器成为邻居,那么它们在该网络分段上的口令必须相同。

  3.Hello和Dead间隔一致:OSPF在每个网络分段上交换Hello数据包。此Hello间隔用于设定两个Hello数据包之间相隔的秒数。而Dead间隔是指路由器发出的Hello数据包没有被邻居看到而宣称此OSPF路由器

  已消失(关闭)所需要等待的秒数。OSPF要求,两个邻居间设置的这些间隔是完全相同的。如果这两个间隔中的任何一个不相同,则这些路由器在此网络分段上将不会成为邻居。可以使用show ip ospf interface命令来验证这些定时器。

  4. 两台直接相连接的路由器,定时器设置需一致。

  5.主IP地址跟对方的主IP地址需在同一网段内(EIGRP可以不用,可以使用辅助地址建邻居)

  6.路由器接口子网掩码(多址网络需要一致、点对点链路无需完全一致,只需在同一网段内即可)

  7.MTU(双发接口的MTU不一致,会卡在EXSTART状态,并重传LSA)

  8.网络类型(某些情况不会影响邻居建立,会影响路由的生成)

  9.RID在区域内需唯一

  10.优先级(如果都为0则无法建立邻接关系,无法交换LSA)

  11.在以太网环境下掩码必须相等(串行链路下可以不相等);

  12.Router ID不能相同;

  13.MTU的大小必须相等

16.点到点拓扑:通常是采用PPP和HDLC封装的串行接口或帧中继/ATM中的点到点子接口;不需要选举DR/BDR;OSPF自动探测这种接口类型;OSPF数据包在这种网络类型中使用目的IP地址 224.0.0.5

  NBMA拓扑:OSPF将NBMA看做广播性媒介;在全网状拓扑中要选举DR/BDR。但NBMA网络不总是全网状的。是否选举DR/BDR取决于NBMA的拓扑,例如设置了点到点子接口的帧中继网络不选举DR/BDR。

17.OSPF优先级的设置范围是0~255,设置为0未知该接口所在的子网中此路由器不能被选为DR/BDR。默认的接口优先级是1。

18. 在OSPF域中传播缺省路由:

  不带always参数时,仅当本路由器的路由表中含有缺省路由时才会向邻居传播0.0.0.0的缺省路由。

  带always参数时,无论本路由器的路由表中是否含有缺省路由都会向邻居传播0.0.0.0的缺省路由。

19.OSPF路由器ID:唯一地标识了网络中的每台OSPF路由器。

  OSPF路由进程启用时将选择路由器ID。它是采用IP地址的唯一数字。

  1)默认情况下,在OSPF启用时,将路由器ID设置为最大的活动物理接口IP地址。该接口无需参与OSPF进程,但必须处于活动状态,故路由器上必须至少有一个IP接口处于活动状态。否则:

   OSPF技术介绍

  2)有环回接口,则IP地址总是优先于物理接口地址,因此环回接口永远不会关闭。如果有多个环回接口地址,则将路由器ID设置为最大的活动环回接口地址。

  3)如果配置了OSPF路由器配置命令router-id ip-address,这样设置的路由器ID将优先于其他两种方式选择的路由器ID。 配置命令router-id后,可使用

  EXEC命令clear ip ospf process来重新启用OSPF路由进程,让路由器将新的IP地址用作路由器ID,但此命令将导致网络暂时中断。

  注:如果将物理接口的IP地址用作路由器ID,当该物理接口出现故障且路由器重新启动后,路由器ID将改变,这加大了管理和排障的难度,建议使用环回地址(掩码建议为/32)。

20.查看OSPF的运行情况

  1)show ip ospf:显示OSPF路由器ID(RID)、OSPF定时器、执行了SPF算法多少次以及LSA信息

  2)show ip ospf interface xxx:查看接口是否被加入到正确的区域中,还显示各种定时器(包括Hello间隔)和邻接关系

  3)show ip ospf neighbor typr-number neighbor-id:显示一个邻居列表,包括它们的OSPF路由器ID、OSPF优先级、邻接关系状态及失效定时器。

  4)show ip protocols:显示IP路由协议参数,包括定时器、过滤器、度量值、网络及路由器的其他信息。

  5)show ip ospf database:获取有关OSPF LSDB的信息,同时还能看到各路由器的ID和使用的子网。

  6)max-lsa maximum-number xx:OSPF LSDB的过载保护,以防止路由器没有正确配置时,导致的大量前缀被重分发和生成大量的LSA,耗尽本地的CPU和内存资源。

 

相关文章:

  • 2021-09-27
  • 2022-01-16
  • 2021-12-13
  • 2021-09-06
  • 2021-08-02
  • 2021-08-15
  • 2021-06-26
猜你喜欢
  • 2021-08-26
  • 2021-11-28
  • 2021-11-29
  • 2021-07-12
  • 2021-05-09
  • 2021-09-24
  • 2021-12-08
相关资源
相似解决方案