OSPF协议
1.定位:开放式最短路径优先(Open Shortest Path First) 是一个内部网关协议(IGP)用于在单一自治系统(AS) 内决策路由,是对链路状态路由协议(SPF)的
一种实现。使用著名的Dijkstra算法来计算最短路径树。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议;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拓扑表=OSPF拓扑数据库=LSDB;路由表=转发数据库。
OSPF支持基于接口的报文验证;支持到同一目的地址的多条等值路由;
发现的路由可以根据不同的类型而有不同的优先级。
3.OSPF区域结构
1)区域划分思想:链路状态路由协议通常将网络划分成区域,以减少SPF算法的计算量。区域内的路由器数量以及在区域内扩散的LSA数量较少,这意味着
区域内的LSDB较小。这样SPF算法的计算量更小,需要的时间更短。在这种情况下,仍可进行区域间路由选择,但很多内部路由操作是在各个区域内进行
的。如果某一存储链路时好时坏,不会导致其他区域内的路由器间断进行SPF算法。
2)OSPF使用包含两层的层次区域结构
骨干区域:快速、高效地传输IP分组的OSPF区域。骨干区域将其他类型的OSPF连接起来,通常没有终端用户;也叫OSPF区域0,是网络核心,其他区域
都与它直接相连。
非骨干区域:连接用户和资源的OSPF区域。默认情况下,常规区域不允许另一个区域使用其连接将数据流传输到其他区域。来自其他区域的所有数据流都
必须经过骨干区域0.
建议每个区域包含的路由器数量不应超过50台;每个路由器所属的区域数最多不要超过3个。 ABR将区域0与非骨干区域相连。
3)OSPF邻接关系:通过Hello分组建立
1)路由器将Hello分组发送给邻接路由器,并接收来自邻接路由器的Hello分组。Hello分组的目标地址通常是多播地址。
2)路由器通过交换Hello分组来获悉协议特定的参数。交换完Hello分组后,路由器宣称邻居处于正常运行状态。
3)两台路由器使用Hello分组建立邻接关系后,它们通过交换LSA来同步LSDB,并确认已收到邻接路由器的LSA。至此,两台邻接路由器知道它们的
LSDB已经同步。对OSPF而言,这意味着两台路由器已处于完全邻接状态。
4)必要时,路由器将新的LSA转发给其他邻接路由器,确保在整个区域内,链路状态信息时完全同步的。
点到点串行链路上的两台路由器之间建立完全邻接的关系,它们使用的封装类型通常为HDLC或PPP。 在诸如LAN链路等广播网络上,将选举一个指定路由
器DR和一个备用指定路由器BDR。其他的路由器都与这两台路由器建立邻接关系,且只将LSA通告给它们。DR从邻居那里收到更新后,将其转发给LAN上
的其他所有邻居。DR的主要功能之一是确保同一个LAN中的所有路由器的LSDB都相同。在广播网络中,DROTHER(不属于DR或BDR的路由器)与DR和
BDR同步LSDB。
需要指出的是,DR概念是链路级的。在多路访问广播环境中,每个网段都是独立的DR和BDR。
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。
8.DR和BDR的价值体现在:
1)减少路由更新数据流;2)管理链路状态同步。
9.路由器类型:
1)内部路由器:其所有接口都位于同一个区域的路由器;
2)骨干路由器:位于骨干区域边缘,至少有一个接口与区域0相连;使用与内部路由器相同的步骤和算法来维护OSPF路由信息;
3)ABR路由器:与多个区域相连,为其连接的每个区域维护一个独立的LSDB,并路由来自/前往其他区域的数据流。这种路由器是区域的出口,即路由
信息只能通过这种路由器传输到其他区域。可对这种路由器进行配置,使之对其连接的区域的LSDB中的路由信息进行汇总。这种路由器将路由信息分发到
骨干区域中,骨干路由器再将这些信息转发给其他ABR。一个区域可包含一台或多台ABR。
4)ASBR:至少有一个接口与其他路由域(如非OSPF网络)相连。这种路由器可将外部路由重分发到OSPF与或执行相反的操作。
10. 默认的OSPF模式:
1)在点到点帧中继子接口上,默认的OSPF模式为点到点
2)在帧中继多点子接口上,默认的OSPF模式为非广播
3)在帧中继主接口上,默认的OSPF模式为非广播。
11. 1)Cisco广播模式下的OSPF配置
使用广播模式可以避免静态地列出所有的邻接路由器。接口被设置为广播模式后,行为就像连接的是LAN一样。此时将选举DR和BDR,需确保使用全互联
拓扑或根据接口优先级静态地选择DR,从而确保选举出来的DR和BDR连接到了其他所有邻接路由器。
例,全互联拓扑中以OSPF广播模式运行的帧中继路由器
端口下: encapsulation frame-relay
ip ospf network broadcast
2)非广播模式下的OSPF配置
在非广播模式下,OSPF模仿广播网络上的运行方式:为NBMA网络选举DR和BDR,由DR发送LSA。此时为方便建立邻接关系。路由器通常是全互联的;
如果采用的不是全互联拓扑,则必须手工选择DR和BDR,确保DR和BDR与所有路由器都直接相连。要开始DR/BDR选举程序,必须静态地定义邻接。采用
非广播模时,所有,路由器都位于同一个IP子网中。
通过非广播接口扩散时,必须复制LSA分组,为每条PVC提供一个副本。更新被发送到邻居表中列出的每台邻接路由器。网络中的邻居不多时,非广播模式
是在NBMA网络上运行OSPF的效率最高的方式,因为其开销比点到多点模式低。
为接口启用OSPF进程后,按如下方式配置非广播模式。
1)手工指定OSPF邻居;2)将OSPF网络类型指定为非广播。
在非广播模式下,只需在DR和BDR上配置命令neighbor。在中央-分支拓扑中,必须在中央路由器上配置命令neighbor,还必须将其优先级配置得较高,使
其成为DR,在分支路由器上,可以不配置neighbor命令。在全互联NBMA拓扑中,除非使用命令ip ospf priority 静态地配置DR和BDR,否则需要在所有
路由器上配置命令neighbor。
3)Cisco点到多点非广播模式下的OSPF配置
必须静态定义邻居,还可以修改到邻居的链路的开销,以反映链路的不同带宽。在点到多点非广播模式下,必须静态地指定邻居,而不选举DR和BDR。
4)NBMA中OSPF模式小结
12. LSA种类
1类:路由器LSA;
2类:网络LSA;
3类和4类:汇总LSA;
5类:自治系统外部LSA;
6类:多播OSPF LSA;
7类:用于NSSA的LSA;
8类:BGP外部属性LSA;
9、10/11类:不透明LSA。
13. 命令show ip ospf database:获取有关OSPF LSDB的信息,同时还能看到各路由器的ID和使用的子网。
命令max-lsa maximum-number ... … 来配置OSPF LSDB的过载保护,以防止路由器没有正确配置时,导致的大量前缀被重分发和生成大量的LSA,
耗尽本地的CPU和内存资源。
14. 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实现。
3)路由汇总对OSPF路由进程占用的带宽、CPU周期和内存资源有直接影响。
通过路由汇总,可使得只有汇总后的路由传播到骨干中,路由汇总有助于解决OSPF的两个问题:路由表规模庞大以及频繁地在整个自制系统中扩散LSA,
可避免所有路由器都更新其路由表,从而提高了网络的稳定性,减少了不必要LSA的扩散;另外如果网络链路出现故障,有关拓扑变化的信息将不会传播到
骨干,进而通过骨干传播到其他区域。
两种汇总:
1.区域间路由汇总:在ABR上进行,针对的是每个区域内的路由。不能用于通过重分发被导入到OSPF中的外部路由。要实现有效的区域间路由汇总,
区域内的网络号应该是连续的,这样可最大限度减少汇总后的地址数。
命令:area area-id range address mask 来指示ABR对特定区域的路由进行汇总。
2.外部路由汇总:在ASBR上进行,针对通过重分发被导入到OSPF中的外部路由。同样,最好外部地址范围是连续的,以便减少汇总后的地址数。
命令:summary-address ip-address mask
4)骨干区域和非骨干区域都有各自的拓扑数据库,该数据库在区域外面不可见。属于多个区域的路由器(ABR)有多个拓扑数据库——它连接的每个区域
一个。所有区域都必须与骨干区域直接相连或通过虚链路连接到骨干区域。骨干区域必须是连续的。具体的区域类型如下:
1.标准区域:默认类型;接收链路更新、汇总路由和外部路由。
2.骨干区域:区域0,其他区域都与之相连以交换路由信息。骨干区域具有标准区域的所有特性。
3.末节区域:不接受关于自治系统外部的路由信息,如来自非OSPF路由器的路由。如若需要,使用默认路由。末节区域不能包含ASBR。
4.绝对末节区域:不接受来自自治系统外部的路由以及来自自治系统中其他区域的汇总路由。如若需要,使用默认路由。不能又ASBR。
5.NSSA:定义了特殊的LSA——7类LSA。不接受有关自制系统外部的路由的信息,而使用默认路由前外外部网络。能包含ASBR。
6.绝对NSSA。
15. 在路由器上配置邻居路由器身份验证后,路由器将对收到的每个路由更新分组的信源进行身份验证,这是通过交换发送路由器和接收路由器都知道的身份验
证密钥实现的。 默认情况下,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],指定身份验证类型。
16. 如何选择OSPF路由器ID:路由器配置命令router-id ip-address 指定的、最大的活动环回接口IP地址或最大的活动物理接口IP地址。
17. 多播地址224.0.0.5用于将更新后的LSA条目发送给OSPF DR和BDR。
有11种不同的LSA类型;在标准区域中,ASBR路由器生成5类LSA
18. OSPF命令max-lsa的作用:防止路由器将过多收到的(不是自己生成的)LSA存储到LSDB中。
19. 如果OSPF路由器有速度高于100Mbit/s的接口,应考虑在OSPF进行下执行命令auto-cost reference-bandwidth
20. 将区域配置为末节区域的优点:可缩小区域的LSDB,末节区域通常用于中央-分支拓扑中。
知识点1
1.区域
OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域”(Area)。“主干”的部分称为“主干区域”,
所有的区域至少要有一台路由器连接到“主干区域”。每个区域就如同一个独立的网络,该区域的OSPF路由器只保存该区域的链路状态。
每个路由器的链路状态数据库都可以保持合理的大小,路由计算的时间、报文数量都不会过大。
一个OSPF区域是一组相邻的网络和路由器。在同一地区内的路由器共享一个公共的区域ID。由于路由器可以同时是多个地区中的成员,因此区域ID被指定
给此路由器上特定的接口。这样,路由器上的某些接口可能属于区域1,而剩下的接口则可能属于区域0。所有在同一区域中的路由器拥有相同的拓扑表。在
配置OSPF时需要记住,必须使用区域0,在连接到网络主干的路由器上。区域在建立一个分级的网络组织中扮演着重要的角色,它真正强化了OSPF的可缩
放性!
3. OSPF的5种网络类型
根据路由器所连接的物理网络不同,OSPF将网络划分为五种类型:广播多路访问型(Broadcast multiAccess)、非广播多路访问型(None Broadcast
MultiAccess,NBMA)、点到点型(Point-to-Point)、点到多点型(Point-to-MultiPoint)和Virtual links。
广播多路访问型网络如:Ethernet、Token Ring、FDDI。
NBMA型网络如:Frame Relay、X.25、SMDS。Point-to-Point型网络如:PPP、HDLC。
点到点型和点到多点型:除去了对DR或BDR的需求,并且,它们邻居关系的发现也是自动完成的。
4. 指派路由器(DR)和备份指派路由器(BDR)
在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR。每个路由器都与之建
立完全相邻关系。DR负责收集所有的链路状态信息,并发布给其他路由器。选举DR的同时 也选举出一个BDR,在DR失效的时候,BDR担负起DR的职责。
DR和BDR的选择是通过Hello协议来完成的。在每个网络分段上,Hello数据包是通过IP组播来交换的。然而,只有在广播和非广播的多路访问网络(如以太网
和帧中继)的网络分段上才会进行DR和BDR的选举。点到点链路,例如串行WAN连接,将不会进行DR的选举过程。
在广播和非广播的多路访问网络上,网络分段中带有最高OSPF优先级的路由器将会成为本网络分段中的DR。这个优先级在默认时取值为1,可以使用show
ip ospf interface命令来查看它。如果所有的路由器都使用默认优先级设置,那么带有最高路由器ID(RID)的路由器将会胜出。RID是在OSPF启动时由所有接
口中最高的IP地址来确定的。当使用环回(逻辑)接口时,这一方式就不再有效了。
被挑选的DR将负责分发/收集路由选择信息到来自此广播网络或链路中的其他路由器上。这就确保了所有路由器上的拓扑表是同步的。这个共享网络中的所
有路由器都将与DR和备用的指定路由器(BDR)建立邻接关系。具有高优先级的路由器将胜出,成为DR,当具有较高优先级的路由器都退出时,路由器的ID
将打破平局的条件,即在具有相同优先级的路由器中选择DR时,拥有最高路由器ID的路由器将被选中。BDR将从OSPF邻接路由器上接收所有的路由更新,
但并不泛发这些LSA更新。
5. Hello报文:
当路由器开启一个端口的OSPF路由时,将会从这个端口发出一个Hello报文,以后它也将以一定的间隔周期性地发送Hello报文。OSPF路由器用Hello报文来
初始化新的相邻关系以及确认相邻的路由器邻居之间的通信状态。
OSPF不像EIGRP那样直接地与自己所有的邻居共享路由信息。OSPF只与建立了邻接关系的邻居直接共享路由信息。并且并不是所有的邻居都可以成为邻
接,这将取决于网络的类型和路由器上的配置。
对广播型网络和非广播型多路访问网络,路由器使用Hello协议选举出一个DR。在广播型网络里,Hello报文使用多播地址224.0.0.5周期性广播,并通过这个
过程自动发现路由器邻居。在NBMA网络中,DR负责向其他路由器逐一发送Hello报文。
2.SPF树的计算
在区域内部,每台路由器都计算到达同一区域中每个网络的最佳/最短路径。这种计算基于拓扑数据库中收集的信息和最短路径优先(SPF)算法。
在路由器执行SPF算法时,一个关键标准是,去往某网络的每个潜在路径的度量或开销值。但是,这种SPF计算并不适用于来自其他区域的路由。
OSPF使用被称为开销的度量,开销与每个包含在SPF树中的输出接口相关联。完整路径的开销是沿这条路径所有输出接口开销的总和。由于开销是按 RFC
2338所定义的一个任意值,所以Cisco不得不为每一个应用OSPF的接口执行它自己计算开销的方法。Cisco使用简单的“108/带宽”等式来进行计算。这里的
这个“带宽”是为接口配置的带宽。利用这个规则,100Mb/s快速以太网接口将有一个默认为1的OSPF开销,而10Mb/s以太网接口将有一个取值为10的开销。
提示:被设置带有64000带宽的接口,默认时,其开销为1563。
这个值由于使用ip ospf cost命令而可能被忽略。通过将这个值改为1~65535范围内的数,可以巧妙处理开销。由于开销是被配置给每一条链路的,所以这个
值必须要在与你想要修改开销的那个接口上完成。
说明:Cisco是基于带宽来建立链路开销的。其他开发商则可能使用其他度量来计算给定链路的开销。当连接路由器之间的链路来自不同的开发商时,你可
能必须调整开销来与其他开发商的路由器相匹配。两台路由器必须给OSPF运行的链路指定相同的开销。
4.协议操作
第一步:建立路由器的邻接关系
所谓“邻接关系”(Adjacency)是指OSPF路由器以交换路由信息为目的,在所选择的相邻路由器之间建立的一种关系。
路由器首先发送拥有自身ID信息(Loopback端口或最大的IP地址)的Hello报文。与之相邻的路由器如果收到这个Hello报文,就将这个报文内的ID信息加入
到自己的Hello报文内。
如果路由器的某端口收到从其他路由器发送的含有自身ID信息的Hello报文,则它根据该端口所在网络类型确定是否可以建立邻接关系。
在点对点网络中,路由器将直接和对端路由器建立起邻接关系,并且该路由器将直接进入到第三步操作:发现其他路由器。若为MultiAccess 网络, 该路由器
将进入选举步骤。 .
第二步:选举DR/BDR
条件:当一个广播或非广播多路访问网络(像以太网或帧中继)被连接到一台路由器并且链路已经被激活时
不同类型的网络选举DR和BDR的方式不同。
MultiAccess网络支持多个路由器,在这种状况下, OSPF需要建立起作为链路状态和LSA更新的中心节点。选举利用Hello报文内的ID和优先权(Priority)字段
值来确定。优先权字段值大小从 0到255,优先权值最高的路由器成为DR。如果优先权值大小一样,则ID值最高的路由器选举为DR,优先权值次高的路由器
选举为BDR。优先权值和ID 值都可以直接设置。
第三步:发现路由器
在这个步骤中,路由器与路由器之间首先利用Hello报文的ID信息确认主从关系, 然后主从路由器相互交换部分链路状态信息。每个路由器对信息进行分析
比较,如果收到的信息有新的内容,路由器将要求对方发送完整的链路状态信息。这个状态完成后,路由器之间建立完全相邻(Full Adjacency)关系,同
时邻接路由器拥有自己独立的、完整的链路状态数据库。
在MultiAccess网络内,DR与BDR互换信息,并同时与本子网内其他路由器交换链路状态信息。
第四步: 选择适当的路由途径
当一个路由器拥有完整独立的链路状态数据库后,它将采用SPF算法计算并创建路由表。OSPF路由器依据链路状态数据库的内容,独立地用SPF算法计算
出到每一个目的网络的路径,并将路径存入路由表中。
OSPF利用量度(Cost)计算目的路径,Cost最小者即为最短路径。在配置OSPF路由器时可根据实际情况,如链路带宽、时延或经济上的费用设置链路
Cost大小。Cost越小,则该链路被选为路由的可能性越大。
第五步:维护路由信息
OSPF路由器接收到包含有新信息的链路状态更新报文,将更新自己的链路状态数据库,然后用SPF算法重新计算路由表。在重新计算过程中,路由器继续
使用旧路由表,直到SPF完成新的路由表计算。新的链路状态信息将发送给其他路由器。值得注意的是,即使链路状态没有发生改变,OSPF路由信息也会
自动更新,默认时间为30分钟。
OSPF路由器之间使用链路状态通告(LSA)来交换各自的链路状态信息,并把获得的信息存储在链路状态数据库中。各OSPF路由器独立使用SPF算法计算到
各个目的地址的路由。
4.验证
1)注:OSPF只可以在代价相等的链路上进行负载均衡。它不能像EIGRP一样可以在代价不相等的链路上进行负载均衡。
2)show ip ospf命令用于显示OSPF信息,这些信息是关于运行在该路由器上的一个或全部OSPF进程的,包括路由器ID、区域信息、SPF统计和LSA定时器。
3)show ip ospf database命令将给出在互联网络中路由器的编号(AS),及 相邻路由器的ID(这就是我在前面提到过的拓扑数据库)。这个命令将显示“OSPF
路由器”,而不是每一条和所有在AS中的链路。
4)show ip ospf interface命令给出了所有与接口相关的OSPF信息。显示的数据是关于OSPF所有接口或指定接口的。查看DR/BDR选举信息
5)show ip ospf neighbor命令汇总了有关OSPF信息中关于邻居和邻接状态的信息。如果网络中有DR或BDR存在,这些信息也将显示出来。
6)show ip protocols命令提供了一个关于所有当前运行协议真实操作情况的概述:确定此OSPF的进程ID、OSPF的路由器ID、OSPF区域的类型、在OSPF
上配置的网络和区域,以及邻居OSPF的路由器ID等
OSPF和环回接口
1.注:不管路由器是否配置OSPF,都最好配置一个环回接口。
2.在OSPF配置中使用环回接口,是为了确保在OSPF进程中总有一个激活的接口,用于OSPF的配置和诊断。
在路由器上配置环回接口的原因是,如果不配置环回接口,路由器上的最高IP地址将成为此路由器的RID。而此RID则用于通告路由以及选举DR和BDR。在
默认时,OSPF使用在其启动时任一激活接口的最高IP地址。然而,可以使用逻辑接口来取而代之。任何逻辑接口的最高IP地址将总会成为路由器的RID。
【查看RID:Corp#sh ip ospf
Routing Process "ospf 132" with ID 10.1.5.1】
3.配置:Corp(config)#int loopback 0
Corp(config-if)#ip address 172.16.10.1 255.255.255.255
注:/32掩码被称为主机掩码,对于环回接口它更有效,这样可以节省子网空间。【配置完环回接口后使其成为路由器的RID:1.重启;2.命令router-id】
4.在OSPF中,另一种替代使用环回接口来配置DR和BDR的方式是“指定” 选举。通过配置路由器接口的优先级可以做到这一点,只要在选举进行时此优先级比其
他路由器的高就行。换句话说,我们可以使用优先级代替逻辑地址来促使某台路由器成为网络中的DR或BDR。
举例:使用哪个选项来确保路由器R2被选举为此局域网(广播多路访问)分段中的指定路由器(DR)?
首先,需要确定每台路由器的RID,并且确定在172.16.1.0局域网中哪台路由器是默认的DR。 在这里,可以看出R3将是默认时的DR,因为它的RID为
192.168.11.254是最高的。
要确保R2被选举为此局域网分段172.16.l.0/24中的DR,这里给出了3个选项:
1)配置路由器R2上Fa0/0接口的优先级比该以太网中任一其他接口的优先级更高。 所有的路由器接口在默认时其优先级为l,因此通过将此接口的优先级
设置为2(R2(config)#int f0/0 R2(config-if)#ip ospf priority 2),就可以确保它将自动成为此局域网分段中的DR。将某个接口的优先级设置为255,表示没有
人能战胜你的路由器!
2)在R2上配置一个环回接口,并使它的IP地址比其他路由器上的任一IP地址更高。
3)将R1和R3的Fa0/0接口的优先级值修改为0。
如果我们在路由器R1和R3上将优先级设置为零(0),它们将不允许参加选举过程。但是这可能不是最好的方式,这样,我们只能在第一个和第二个选项中进
行选择。【使用show ip ospf inerface命令可以查看到优先级】
对于已经选举结束的网络,即使你修改了路由器接口的优先级,但在已存在的DR或BDR被关闭之前,此路由器也将不会成为此局域网分段的DR。也就是
说,一旦一个选举发生过了,直到DR和BDR被重启和/或关闭,选举都不会再次进行。所以,当有带着更好RID的路由器出现在你的网络中时,并不意味着
你的的DR或BDR将发生改变!
说明:记住,使用debug ip ospf adj命令可以在一个广播或非广播的多路访问网络中看到选举发生的过程。
路由汇总
1.EIGRP:
上图给出了6个网络,其中4个的块尺寸为4(WAN链路),2个的块尺寸为8(LAN连接)。这个网络设计正好可以放入一个尺寸为32的块中。它的网络地址是
192.168.10.64,块尺寸为32,它的掩码将是255.255.255.224。
1)在核心(连接到主干)路由器上,对于EIGRP,我们在Ethernet0上放置汇总路由,这样我们的汇总路由将通告到主干网络(10.10.10.0网络)。这将阻止我们
的6个网络分别进行通告,并以一个路由代替这些通告来告知网络中的其他路由器。当然,在我们邻接网络之外的其他路由器不会了解到在这个通告块后面
存在有子网,否则将会导致路由通告的混淆,这点是必须要保证的。
下面是在核心路由器上进行的EIGPR完整配置:
Core(config)#router eigrp 10
Core(config-router)#network 192.168.10.0
Core(config-router)#network 10.0.0.0
Core(config-router)#no auto-summary
Core(config-router)#interface ethernet 0
Core(config-if)#ip summary-address eigrp 10 192.168.10.64 255.255.255.224
上面为自治系统10做的EIGRP配置将直接在所连接的网络192.168.10.0和 10.0.0.0中进行通告。由于EIGRP在有类边界上会自动汇总,因此有时你必须要使
用no auto-summary命令。我们将要通告到主干网络的汇总路由,放置在连接到主干的接口上,而不用配置在路由进程的控制下。这个汇总路由告诉EIGRP
将192.168.10.64网络中所有的块尺寸为32的网络找出,并将它们以一个路由从接口E0通告出去。这基本上就是说,任何一个通过192.168.10.95的目标地址
为192.168.10.64的数据包都将被转发通过这个汇总路由。
2.OSPF:
要用OSPF汇总与EIGRP示例中相同的不连续网络,我们需要将OSPF配置为多个区域。
Core#config t
Core(config)#router ospf 1
Core(config-router)#network 192.168.10.64 0.0.0.3 area 1
Core(config-router)#network 192.168.10.68 0.0.0.3 area 1
Core(config-router)#network 10.10.10.0 0.0.0.255 area 0
Core(config-router)#area 1 range 192.168.10.64 255.255.255.224
由于默认时OSPF并不去汇总任何边界,因此命令no auto-summary在这里并不需要。上面的OSPF配置将所有来自地区1的网络汇总到主干地区,表现为
192.168.10.64/27表项。
知识点2
1.OSPF特点:
1)比传统的距离矢量协议RIP收敛时间短;支持VLSM和CIDR。
2)思科平台实现OSPF所用度量值是根据接口带宽计算的,而RIP使用跳计数做度量。
3)OSPF在拓扑发生变化时发送路由更新;RIP周期性地更新整个路由表的内容;
4)OSPF是标准的路由协议,多厂商支持,兼容性好。
5)OSPF比RIP占用更多的内存和CPU。
6)当网络规模较大时需要划分区域以降低对路由器资源的占用。划分区域可能会增加网络设计的复杂性。
7)初始运行OSPF时会产生泛洪流量。
8)最小化的路由更新的流量
9)拥有不受限的跳计数
10)OSPF不能自动汇总,只能手动汇总;RIP相反。
2.路由的度量值Cost计算:是路由器的某个接口到目的网络之间所有出方向接口Cost之和。
3.Router ID:在OSPF网络中标识路由器,OSPF中选择router-id的规则:
首先选择环回接口中最高IP地址;没有环回接口时选择物理接口中最高IP地址。 Loopback接口永远不会被动关闭。
4.Hello/Dead间隔(HELLO包时间间隔和路由器无效时间间隔):路由器在每个启用OSPF的接口上发送Hello包:
在多路访问和点到点链路上缺省Hello间隔为10s;
在NBMA网络中缺省Hello间隔为30s;
OSPF的Hello包的目的地址通常为组播地址224.0.0.5。
NBMA网络中缺省的Dead间隔为Hello间隔的4倍。
注:相邻的路由器的Hello和Dead间隔必须一致才能建立邻居关系,否则Hello包被丢弃。
5.邻居:多个共享共同网络分段的路由器在这个网络分段上将成为邻居。这个邻居是通过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)
1.在以太网环境下掩码必须相等(串行链路下可以不相等);
5.Router ID不能相同;
6.MTU的大小必须相等
6.工作过程:
Down State:OSPF已启动并且发送了Hello包。但没有收到对端的Hello包。
Init State:路由器收到了Hello包,但其中不包含该路由器的Router ID。
TWO-way State:路由器收到了Hello包,而且包含该路由器的Router ID。
Full State:所有路由器应保持一致的拓扑信息。
达到Two-Way状态后选举DR和BDR,他们代表某个广播域(子网)。
每个路由器仅与DR和BDR的拓扑库保持一致。
注:每个子网都包含DR/BDR。
7.选举DR/BDR的规则:
接口优先级最高的路由器被选为DR,若优先级相同,其中Router ID最大的当选;
接口优先级次高的路由器被选为BDR,若优先级相同,其中Router ID最大的当选;
可以在接口上设置优先级,缺省为1.设置范围是0~255,0表示不能被选为DR或BDR。
一旦DR选举完毕,一台拥有更高优先级的路由器加入后不会成为新的DR。
如果DR失败,BDR会成为新的DR并选举新的BDR。
8.点到点拓扑:通常是采用PPP和HDLC封装的串行接口或帧中继/ATM中的点到点子接口;不需要选举DR/BDR;OSPF自动探测这种接口类型;OSPF数据包在
这种网络类型中使用目的IP地址 224.0.0.5
NBMA拓扑:OSPF将NBMA看做广播性媒介;在全网状拓扑中要选举DR/BDR。但NBMA网络不总是全网状的。是否选举DR/BDR取决于NBMA的拓扑,例
如设置了点到点子接口的帧中继网络不选举DR/BDR。
9.OSPF优先级的设置范围是0~255,设置为0未知该接口所在的子网中此路由器不能被选为DR/BDR。默认的接口优先级是1。
10. 在OSPF域中传播缺省路由:
不带always参数时,仅当本路由器的路由表中含有缺省路由时才会向邻居传播0.0.0.0的缺省路由。
带always参数时,无论本路由器的路由表中是否含有缺省路由都会向邻居传播0.0.0.0的缺省路由。
OSPF配置和验证
1.条件:如图。
要求:各PC通过OSPF协议互通
2.步骤
1)三层交换机:配置上下联为三层端口并配置IP地址;开启路由功能;
配置OSPF,并宣告所连接网段。
2)各路由器:配置端口;配置OSPF,并宣告所连接网段。
3.配置OSPF进程的步骤
1)启用OSPF进程:router ospf process-id
2)指定路由器的哪些接口将参与OSPF进程以及网络所属的OSPF区域:
network ip-address wildcard-mask area area-id
3)在接口上启用OSPF:端口下,ip ospf process-id area area-id
多区域OSPF配置示例
4.OSPF路由器ID:唯一地标识了网络中的每台OSPF路由器。
OSPF路由进程启用时将选择路由器ID。它是采用IP地址的唯一数字。
1)默认情况下,在OSPF启用时,将路由器ID设置为最大的活动物理接口IP地址。该接口无需参与OSPF进程,但必须处于活动状态,故路由器上必须至少
有一个IP接口处于活动状态。否则:
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)。
3.查看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路由协议参数,包括定时器、过滤器、度量值、网络及路由器的其他信息。