当前课程知识点:计算机网络工程实践 > 4 内部路由技术 > 4.4 OSPF 路由协议 > 4.4-1 OSPF路由协议
4.4 OSPF路由协议
1、内部路由协议基本概念
链路状态路由协议是层次式的,采用链路状态路由协议的路由器并不向邻居传递“路由项”,而是通告给邻居一些链路状态。
距离矢量协议是平面式的,所有的路由学习完全依靠邻居,交换的是路由项。
链路状态协议是把路由器分成区域,收集区域的所有的路由器的链路状态信息,根据状态信息生成网络拓扑结构,每一个路由器再根据拓扑结构计算出路由。
这里首先介绍内部路由协议的基本概念。
(1)路由域与自治系统
内部路由协议所指的路由域(Routing Domain),也称为自治系统AS(Autonomous System),是由运行同一种路由协议并且被同一组织机构管理的一组路由器组成。同一个路由域中的所有路由器必须运行相同的路由协议,且彼此相连(中间不能被其他协议、路由域所间断)。
在互联网中的自治系统AS(Autonomous System)是指在一个(有时是多个)实体管辖下的所有IP网络和路由器的网络,它们对互联网执行共同的路由策略。每一个自治系统AS可以支持多个内部网关路由协议。一个AS内的所有网络都被分配同一个AS号,属于一个行政单位管辖。AS号分为2字节AS号和4字节AS号。2字节AS号的范围为1至65535。
(2)区域(Area)
内部路由协议的区域(Area)是在一个路由域(Routing Domain)内部划分的多个不同位置或者不同角色的一组路由器单元,每个路由器只能在区域内部学习到完整的链路状态信息。在大中型网络中,路由设备可能非常多,如果不进行区域划分的话,则整个网络中的所有设备都要彼此学习路由信息,最终生成的路由信息库可能非常庞大,这样会大大消耗设备的存储空间,更不利于进行高效的路由选择。
(3)路由器ID(Router-ID)
一些动态路由协议(OSPF和BGP)要求使用Router-ID来保证能够唯一标识设备,如果在启动这些路由协议时没有显示指定Router-ID,则缺省使用路由管理的Router-ID。Router ID是一个用于标识设备的32位值,通常是IPv4地址的形式。Router-ID选择规则如下:
如果通过命令router id配置了Router-ID,则按照配置结果设置。
如果没有通过命令router-id配置Router-ID,则按照下面的规则进行选择:
如果存在配置了IP地址的Looback接口,则选择Loopback接口地址中最大的作为Router-ID。
如果没有配置了IP地址的Loopback接口,则从其他接口的IP地址中选择最大的作为Router-ID(不考虑接口的UP/DOWN状态)。
2、 OSPF路由协议基础
总体来说。OSPF协议比RIP具有更大的扩展性、快速收敛性和安全可靠性,同时它采用路由增量更新的机制,在保证全区域路由同步的同时,尽可能地减少了对网络资源的浪费。OSPF协议适合企业中小型网络构建。
要掌握学习好OSPF协议,需要首先了解学习以下概念,OSPF区域类型、OSPF路由器类型、OSPF网络类型、OSPF路由类型、OSPF报文类型、LSA类型等,下面分别介绍。
1)OSPF的区域类型
链路状态路由协议通过将网络划分区域(AREA),以减少区域内链路状态数据库(LSDB)的大小,同时减少SPF算法的计算量。
在OSPF区域中,包括普通区域和多种特殊区域。普通区域包括标准区域和骨干区域。特殊区域包括stub(末梢)区域、totally stub(完全末梢)区域、NSSA(非纯末梢)区域、totally NSSA(完全非纯)区域。
(1)普通区域
缺省情况下,OSPF区域被定义为普通区域。普通区域包括骨干区域和标准区域。
标准区域是最通用的区域,它传输区域内路由,区域间路由和外部路由。
骨干区域是连接所有其他OSPF区域的中央区域。骨干区域通常用Area 0表示。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有此规定:所有非骨干区域必须与骨干区域保持连通;②骨干区域自身也必须保持连通。
(2)Stub区域和Totally Stub区域
Stub区域和Totally STUB区域是一种可选的配置属性,并不是每个区域都符合配置的条件。通常来说,Stub区域和Totally STUB区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。
Stub区域,不允许发布自治系统外部路由,只允许发布区域内路由和区域间的路由。
Totally Stub区域,不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。
配置Stub区域时需要注意下列几点:①骨干区域不能配置成Stub区域。②如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置stub命令。③Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。④虚连接不能穿过Stub区域。
(3)NSSA 区域与Totally NSSA区域
NSSA(Not-So-Stubby Area)区域和Totally NSSA区域是OSPF特殊的区域类型。NSSA区域与Stub区域有许多相似的地方,两者都不传播来自OSPF网络其它区域的外部路由。差别在于Stub区域是不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中。
NSSA区域和Totally NSSA区域允许引入自治系统外部路由,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中。NSSA区域同时保留自治系统内的Stub区域和Totally Stub Area区域的特征。该区域的ABR发布Type7缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。
配置NSSA区域时需要注意下列几点:①骨干区域不能配置成NSSA区域。②如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都要配置NSSA区域属性。③虚连接不能穿过NSSA区域。
2)OSPF虚连接(Virtual-link)
OSPF协议按照RFC1583和RFC 2328的建议,要求所有非骨干区域必须与骨干区域保持连通,且骨干区域自身也必须保持连通。在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求,此时可以通过配置OSPF虚连接来解决这个问题。
虚连接(Virtual-link):虚连接是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。虚连接必须在两端同时配置方可生效。
如图所示,Area2没有连接到骨干区Area0,RouterB不是ABR,因此不会向Area2生成Area0中网络的路由信息,所以RouterD上没有到达Area0中网络的路由。
使用命令Vlink-Peer配置虚连接,可以使两台ABR(RouterA和RouterB)之间直接传递OSPF报文信息,使RouterB虚连接都骨干区域Area0,并成为ABR。满足非骨干区域必须与骨干区域保持连通的要求。
OSPF虚连接
3)OSPF路由器类型
采用OSPF协议的自治系统,根据路由器在自制系统AS中的不同位置,可以分为以下四中类型。
(1)区域内路由器(internal Routers),该类路由器的所有接口都属于同一个OSPF区域。
(3)区域边界路由器ABR(Area Border Routers),该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。
(3)骨干路由器(Backbone Routers),该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
(4)自治系统边界路由器ASBR(AS Boundary Routers),与其它AS交换由路信息的路由器称为ASBR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
OSPF协议中常用到的路由器类型如图所示。
常用路由器类型
4) OSPF的网络类型
OSPF根据链路层协议类型将网络分为下列四种类型。
(1)广播(Broadcast)类型:当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是Broadcast。在该类型的网络中,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR( Backup Designated Router)的预留IP组播地址。
(2)NBMA(Non-Broadcast Multi-Access)类型:当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA.在该项类型的网络中,以单播形式发送协议报文。
(3)点到多点P2MP(pont-to-multipoint)类型:没有一种链路层协议会被缺省的认为是point-to-multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
(4)点到点P2P(point-to-point)类型:当链路层协议是PPP,HDLC和LAPB时,OSPF缺省认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
5) OSPF路由类型
采用OSPF协议的自治系统,OSPF路由按所属区域划分包括自治系统AS内部路由(Intra Area)和AS外部引入路由,自制系统AS内部路由包括区域内路由(Intra Area)和区域间路由,是用来描述AS内部的网络结构。AS外部引入路由包括Type 1和Type2两类路由,外部引入路由默认为Type2类型,是用来描述如何选择到AS以外目的地址的路由。OSPF将路由分为4级,下面按优先级从高到低顺序列出OSPF路由类型。
(1)区域内路由(Intra Area):路由协议优先级为缺省为10。
(2)区域间路由(inter Area):路由协议优先级缺省为10。
(3)第一类外部路由(Type1 External):路由协议优先级缺省为150。第一类外部路由开销=本路由器到相应ASBR开销+ASBR到该路由目的地址开销。
(4)第二类外部路由(Type2 External):路由协议优先级缺省为150。第二类外部路由的开销=ASBR到该路由目的地址的开销。
6)邻居状态机
在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。
邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居,进入2-way状态,并停留此状态。
邻接关系:形成邻居关系后,需要建立邻接关系,则进入Exstart状态,开始协商主从关系,如果两端设备成功交换DD报文和LSA,则建立邻接关系,进入Full状态。
OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
邻居和邻接状态是通过OSPF邻居状态机表现的,其中Down(邻居会话初始阶段)、2-way、Full是稳定状态,Attempt、Init、Exstart、Exchange、Loading是不稳定状态。不稳定状态是在转换过程中瞬间存在的状态,一般不会超过几分钟。
7) OSPF报文类型
OSPF用IP报文直接封装协议报文,协议号为89。OSPF报文分如表所示的5种报文类型:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
8) OSPF中LSA类型
OSPF协议中的LSU报文,用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA(Link State Advertisement),其中的LSA包括表所示的多种类型。
LSA的类型中,Type1为router-LSA,Type2为network-LSA,Type3为Network-Sumary-LSA,Type4为ASBR-summary-LSA,Type5为AS-external-LSA,Type7为NSSA-LSA。
Type1和Type2属于区域内路由(Intra area),Type3和Type4为区域间路由(Inter area),Type5和Type7为外部路由(External)。
3、OSPF路由基本原理
首先,一起来了解一下OSPF协议具备的特点,OSPF协议具备以下六个方面的特点。
(1)OSPF把路由域划分成逻辑意义上的一个或多个区域。
(2)OSPF通过LSA(Link State Advertisement)的形式发布路由。
(3)OSPF依靠在OSPF区域内各路由器间交互OSPF报文来达到路由信息的统一。
(4)OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。
(5)支持OSPF接口使能特性,方便用户通过网管软件管理OSPF。
(6)支持Router-id冲突检测并修复功能,实现当OSPF检测到Router-ID冲突后选择新的Router-ID,从而避免路由震荡。
1) OSPF协议工作过程(参考《路由交换技术》第1卷(下册))
OSPF协议有四个主要的工作工作过程,分别是寻找邻居、建立邻接关系、链路状态信息传递、计算路由。
(1)寻找邻居
广播网络、点对点网络、点到多点网络自动发现邻居,而非广播多点接入网络(NBMA)的邻居不是自动发现的,需要使用命令 peer ip-address手工指定邻居。
(2)建立邻接关系
只有建立了可靠邻接关系的路由器才相互传递链路状态信息。
对于广播网络,如果所有的邻居关系都建立邻接关系,那么,如果有n台路由器,则有n(n-1)/2个邻接关系。邻接关系需要消耗较多的资源来维持,而且邻接路由器之间要两两交换链路状态信息,就会造成网络资源和路由器处理能力的巨大浪费。
为了解决这个问题,OSPF要求在广播型网络中选举一台指定路由器DR(Designated Router)。OSPF在选择DR的同时还会选举一个备份指定路由器BDR(Backup Designated Router)。
网络上所有路由器同时与DR和BDR形成邻接关系,如果DR失效,BDR立即成为新的DR。路由器在选举DR时的优先级取值范围为0~255,其值越大,优先级越高。默认情况下,路由器的选举DR时的优先级为1。
注意:点对点网络、点到多点网络建立邻接关系不需要选定DR和BDR;而广播网络和非广播多点接入网络(NBMA)需要选定DR和BDR。可以通过对网络链路所在路由器接口使用命令 ospf dr-priority priority配置DR优先级来时设置DR/DBR。
(3)链路状态信息传递
邻接关系建立后,OSPF路由器将建立描述网络状况的LSA(Link State Advertisement,链路状态通告),建立邻接关系的OSPF路由器之间将通过发送DD报文、LSR报文、LSU报文以及LSAck报文来交互LSA,最终形成包含网络完整链路状态信息的LSDB(Link State Database,链路状态数据库)。
为避免网络资源浪费,OSPF路由器采用路由增量更新机制发布LSA,即只发布邻居缺失的链路状态给邻居。如果网络变更时,路由器立即发送LSA摘要信息(DD报文)。如果网络状态没有发送变化,OSPF路由器每隔30分钟向邻居发送一次LSA的摘要信息,这个过程称为LSA泛洪,也称为LSA刷新。
(4)计算路由
获得完整的链路状态数据库LSDB后,OSPF区域内的每一个路由器将会对该区域的网络结构有相同的认识,随后各路由器将依据LSDB的信息用SPF算法独立计算出路由。
OSPF开销COST:OSPF协议是根据路由器的每个接口指定的度量值来决定最短路径的,这里的度量值是指开销(COST)。OSPF的接口开销COST=带宽参考值/接口带宽。一条路由的开销是指沿着到达目的网络的路径上所有路由器出接口的开销的总和。
2)OSPF选路规则
目前,OSPF选路主要有两个标准:RFC1583与RFC2328,这两个RFC标准中选路规则存在不同。RFC1583规定:区域外部路由选路时只需要对比Cost值,Cost值小的优先,如果Cost值相同则负载分担。RFC2328规定:区域外部路由选路时只需要对比区域号大小,而不需要对比Cost值,区域号大的将优先使用。
默认情况下,华为的设备启用OSPF后都工作在RFC1583兼容模式,此模式兼顾了RFC1583和RFC2328的规定,其的特点为:当一台路由器收到能从不同的路径去往目标的外部路由,会先比较路径的Cost值,只有在Cost值相同的情况下才会进一步比较区域号。如果Cost值与区域号都相同,才会形成负载分担。
可以在OSPF进程视图下,执行命令undo RFC1583 compatible,将RFC1583兼容模式配置成RFC2328选路标准。
RFC1583兼容模式OSPF选路规则如下。
(1)域内路由优于域间路由:即由1类或者2类lsa生成的路由是优先于3类lsa生成的路由的。
(2)域间路由优于外部路由:即由3类lsa产生的路由是优于5类或者是7类产生的路由。
(3)如果同为外部路由,则先比较路由的Type,Type1优于Type2
(4)如果同为Type1:则比较路由的外部cost与内部cost之和,选择选小的。
(5)如果同为Type2:则先比较路由的外部cost值,相同再比较路由的内部cost值,不一样就选择小的。
-1.1 计算机网络基础
-1.3 网络路由技术
-1.4 局域网技术
-1.5 ACL技术
-1.6 NAT技术
-第1章作业:计算机网络互联基础
-2.1 高级VLAN技术
-第2章作业:局域网高级技术
-(3.4-3.8) 各类网络互联实践-拓扑图及初始配置
--(3.4-3.8)-1 各类网络互联配置实践-拓扑图构建
--(3.4-3.8)-2 各类网络互联配置实践--初始配置
-3.4 X.25 网络
-3.6 FR网络
-3.7 ATM网络
-3.8 SDH网络
-第3章作业:城域网和广域网技术
-4.4 OSPF 路由协议
-4.5 ISIS路由协议
-第4章作业:内部路由技术
-5.4 BGP路由配置实践
-第5章作业:外部路由协议
-6.6 路由控制实践
-第6章作业:路由控制技术
-7.3 出口选路控制实践
-第7章作业:出口选路控制
-8.3 VRRP技术及其实践
-第8章作业:网络可靠性技术
-9.4 防火墙配置示例
-第9章作业:防火墙技术
-期末考试题01