HCIE课程笔记9-OSPF之基本原理
一 OSPF基本原理—邻居关系建立
邻居状态建立:
(1)Down:邻居初始状态,表示没有从邻居收到任何信息;
(2)init:此状态下,路由器已经收到邻居发送的Hello报文,但是自己的router-id不在所收到的Hello报文的邻居列表中,表示尚未于邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的列表中。
(3)2-Way:在此状态下,两台路由器已确认可以双向通信,邻居关系已经建立;但是还没建立邻接关系。这是建立邻接关系以前的最高级状态。如果网络为广播网络或者NBMA网络则选举DR/BDR。
在形成邻接关系过程中,需要对Hello报文携带的参数进行协商:
(1)如果接口端口的网络类型是广播型点到多点或者NBMA,所接受的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段;
(2)所接收的Hello报文中的HelloInterval和RouterDeadInterval字段必须和接收端口的配置保持一致;
(3)所接收的Hello报文中的认证字段需要于本机配置一致;
(4)所接收的Hello报文中的Options字段中的E-bit(表示是否接收外部路由信息)必须和接收端口的相关区域配置保持一致。
(5)所接收的Hello报文中的区域字段必须和接收端口的配置一致。
邻居关系状态机:
二 OSPF基本原理—邻接关系建立
邻接状态建立:
- 邻接状态机变为ExStart以后,R1向R2发送第一个DD报文,在这个报文中,DD***被设置为552A(假设),Initial比特位为1表示这是第一个DD报文,More比特为1表示后续还有DD报文要发送,Master比特为1表示R1宣告自己为主路由器。
- 邻居状态机变为ExStart后,R2向R1发送第一个DD报文,在这个报文中,DD***被设置为5528(假设)。由于R2的Router ID比R1的大,所以R2应当为主路由器,Router ID的比较结束后,R1会产生一个NegotiationDone事件 ,所以R1状态机从ExStart改变为Exchange。
- 邻居状态机变为Exchange以后,R1发送一个新的DD报文,在这个新的报文中包含LSDB的摘要信息,***设置为R2在第二步里使用的***,More比特为0表示不需要另外的DD报文描述LSDB,Master比特为0表示R1宣告自己为从路由器。R2收到这个报文后,会产生一个NegotiationDone事件,邻居状态更改为Exchange。
- R2邻居状态变为Exchange以后,发送一个新的DD报文,该报文中包含LSDB的描述信息,DD***设为5529(上次使用的***加1);
- 即使R1不需要新的DD报文描述自己的LSDB,但是作为从路由器,R1需要对主路由器R2发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,***5529,该报文内容为空。
- 邻居状态变为Loading之后,R1开始向R2发送LS request报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。
- R2收到LS Request报文之后,向R1发送LS Update报文,在LS Update报文中,包含了那些被请求的链路状态的详细信息。R1收到LS Update报文之后,将邻居状态从Loading改变成Full;
- R1向R2发送LS Ack报文,确认R2发送的LSA已被R1正确接收。LS Ack用来
确认。
邻接关系状态机:
三 OSPF基本原理—特殊区域
OSPF可以将特定区域配置为Stub和Totally Stub区域。Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。Stub区域是一种可选的配置属性,Stub区域通常位于自治系统的边界,一般只有一个ABR。为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由并发布给Stub区域中的其他非ABR路由器。
Stub区域
- 骨干区域不能配置成Stub区域。
- 如果一个区域配置成Stub区域,则该区域中的所有路由器都要配置Stub区域属性;
- Stub区域内不能引入外部路由,不能存在ASBR,即自治区域外部的路由不能在本区域内传播;
- 虚连接不能穿过Stub区域;
- Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播;
- 区域内的路由器必须能够通过ABR到达自治系统外部的网络。实现方法是ABR会自动产生一条缺省Summary LSA通告整个Stub区域。这样,到达自治系统外部的数据包就可以通过ABR到达目的网络。
Totally Stub区域
- Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。区域内的路由器必须通过ABR连通自治系统外部和其他区域的网络。
- ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。
四 OSPF基本原理—NSSA
OSPF规定的Stub区域不能引入外部路由,而NSSA区域在Stub区域基础上额外增加了引入外部路由的功能。
NSSA区域能够将外部路由引入并传播到整个OSPF自治域中,同时也不会学习来自OSPF网络其他区域的5类LSA。
7类LSA
(1)7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述引入的外部路由信息。
(2)7类LSA由NSSA区域的ASBR产生,其扩散范围仅限于该ASBR所在的NSSA区域。
(3)NSSA区域的区域边界路由器ABR收到7类LSA时,会有选择地将其转化为5类LSA,以便将外部路由信息通告到OSPF网络的其他区域。
(4)缺省路由也可以通过7类LSA发布,用于指导流量流向其他自治域。
为了将NSSA区域引入的外部路由发布到其他区域,需要通过ABR将7类LSA转化为5类LSA以便在整个OSPF网络中通告:
- option字段P用于告知转化路由器该条7类LSA是否需要转化;
- 进行转化的时NSSA区域中RouterID最大的区域边界路由器(ABR);
- 只有P置位并且Forwarding Address不为0的7类LSA才能转化为5类LSA。Forwarding Address用来表示该外部路由的OSPF域内的目标地址。
- 满足以上条件的缺省7类LSA也可以被转发;
- 区域边界路由器产生的7类LSA不会置位P-bit;
注意事项:在NSSA区域中,可能同时存在多个边界路由器。为了防止产生路由环路,边界路由器之间不计算对方发布的缺省路由。
NSSA和Totally NSSA:
(1)NSSA区域允许存在少量通过本区域的ASBR引入的外部路由,但不允许存在其他区域引入的外部路由,不允许ASE LSA在NSSA区域内传播。即NSSA区域中的外部路由只能由本区域的ASBR发布。
(2)Totally NSSA区域既不允许存在其他区域引入的外部路由,不允许5类LSA在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。
五 OSPF收敛特性
快速收敛
- 增量最短路径优先算法I-SPF:只对受影响的节点进行路由计算;只第一次计算全部节点;最后生成的SPT与原来的算法结果相同,大大降低了CPU的占用率,提高了网络收敛速度;
- 部分路由计算PRC:只对发生变化的路由进行重新计算;根据I-SPF算出来的SPT来更新路由;
- 只能定时器:对接口翻动等原因带来的网络不稳定,进行只能控制,减少LSA泛洪
按优先级收敛:可以通过IP前缀列表等将特定路由过滤出来,通过对不同的路由配置不同的收敛优先级,达到重要的路由先收敛的目的,提高网络的可靠性。
六 OSPF扩展特性
OSPF扩展特性-Database Overflow
Database Overflow:限制非缺省外部路由数量,避免数据库超限。
通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限。OSPF网络中所有路由器必须配置相同的上限值。这样,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动超限状态定时器(默认超时时间位5秒),路由器在定时器超过5秒后自动推出超限状态。
OSPF Database Overflow过程:
(1)进入Overflow状态时,路由器删除所有自己产生的非缺省外部路由。
(2)处于Overflow状态中时,路由器不产生非缺省外部路由;丢弃新收到的非缺省外部路由且不回复确认报文;当超限状态定时器超时,检查外部路由数量是否仍然超过上限,如果超限则重启定时器,如果没有则退出超限状态。
(3)退出Overflow状态时,路由器删除超限状态定时器;产生非缺省外部路由;接收新收到的非缺省外部路由并回复确认报文;准备下一次进入超限状态。
OSPF扩展特性—虚连接
虚连接
(1)虚连接是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道
(2)接必须在两端同时配置方可生效;
(3)为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域;
(4)传输区域不能是末节区域;
通过虚连接,两台ABR之间直接传递OSPF报文信息,他们之间的OSPF路由器只是起到一个转发报文的作用。由于OSPF协议报文的目的地址不是这些路由器,所以这些报文对于他们而言是透明的,只是当作普通的IP报文来转发。虚连接部署不当时有可能产生环路。
OSPF扩展特性—认证
认证分类:接口认证和区域认证,当两种验证方式都存在时,优先使用接口验证方式;
认证方式:Null、Simple、MD5、HMAC-MD5;
七 OSPF管理特性
OSPF管理特性—缺省路由
普通区域:ASBR上手动配置产生5类LSA,通告到整个OSPF自治域;
Stub/Totally Stub区域:ABR会自动产生一条缺省3类LSA,通告到整个Stub区域内;
NSSA区域:在ABR自动产生一条缺省7类LSA,通告到整个NSSA区域内;在ASBR手动配置产生一条缺省7类LSA,通告到整个NSSA区域内;
Totally NSSA区域:ABR自动产生一条缺省3类LSA,通告到整个NSSA区域。
OSPF缺省路由通常应用于下面两种情况:
- 由ABR发布缺省3类LSA,用来指导区域内路由器进行区域之间报文的转发。
- 由ASBR发布缺省5类LSA,或者缺省7类LSA,用来指导自治系统(AS)内路由器进行自治系统外报文的转发。
注意:
(1)当路由器无精确匹配的路由时,可以通过缺省路由进行报文转发,其中3类缺省路由优先级高于5类和7类缺省路由
OSPF管理特性—路由过滤
LSA过滤:
(1)ABR对进入或离开本区域的3类LSA进行过滤;
(2)ASBR对引入到本区域的5类LSA进行过滤
路由过滤:
(1)OSPF(除ABR)对接收到的区域内、区域间和自治系统外部的路由进行过滤;
(2)只对通过SPF算法计算出来的路由是否放置到路由表有效,产生该路由LSA仍然会在OSPF自治系统内扩散。
注意:间接的LSA过滤包括末节区域和database overflow。
八 OSPF与IS-IS比较
基本特点比较
相同点:
- 均为IGP协议,且应用广泛
- 均支持IP环境
- 均采用分层设计和分区域设计
不同点:
- OSPF仅支持IP;IS-IS既支持IP,又支持CLNP;
- OSPF支持的网络类型丰富;IS-IS仅支持两种网络类型;
- OSPF支持虚连接;IS-IS虽然由类似功能,但是多数厂商不支持;
- OSPF工作在IP之上;IS-IS工作在数据链路层之上;
- OSPF基于接口划分区域;IS-IS基于设备划分区域;
邻接关系特点比较
相同点:
(1)均通过Hello建立和维护邻居关系
(2)多点访问网络均选举DR/DIS
不同点:
- OSPF建立邻居关系条件苛刻;IS-IS的要求则相对宽松;
- OSPF点对点链路形成邻居关系比较可靠;IS-IS可靠性相对较弱;
- OSPF邻居关系部分层次;IS-IS邻居关系分两个层次;
- OSPF处理DR/BDR和IS-IS处理DIS方式不同(非抢占与抢占);
相关解释如下:
- OSPF建立邻居需要检查Hello报文中的掩码、认证、hello/dead时间间隔、区域等信息。而IS-IS形成邻居关系条件宽松;
- OSPF P2P链路建立邻居关系需要三次握手。IS-IS则可以不需要三次握手。
- OSPF依据优先级和router-id选举DR/BDR,且选举结束后,不可抢占。在OSPF中,所有DRother与DR/BDR形成完全邻接关系,DRother间形成2-way即不完全邻接关系。OSPF中,如果优先级为0,则表示该路由器不参与DR/BDR选举
- IS-IS选举DIS依据优先级和MAC地址,可以抢占。在IS-IS中,所有路由器均形成邻接关系。IS-IS中,如果优先级为0,则表示该路由器也会参与DIS选举,只是优先级比较低。
数据库同步特点比较
相同点:均需形成统一的LSDB
不同点:
(1)OSPF LSA种类比IS-IS的 LSP种类多很多;
(2)OSPF与IS-IS数据库同步过程不同;
(3)OPPF LSA生存时间从零递增;IS-IS生存时间从最大值递减;
其他特点比较
相同点:均使用SPF算法计算路由;无环路,收敛快,支持大规模网络部署;
不同点:OSPF开销类型较为简单,IS-IS开销类型相对比较复杂;OSPF支持按需拨号网络,IS-IS无此特性;