OSPF路由协议总结

OSPF(open shortest path Fist0)是IETF组织开发的一个基于链路状态的内部网关协议,具有收敛快、路由无环、可扩展等优点。

文章目录

        • 一、OSPF基础概念
          • 1.1 协议特点
          • 1.2 OSPF概念
            • 【一】Router-id
            • 【二】cost
            • 【三】Link-State(LSA)
            • 【四】OSPF区域
            • 【五】路由器的角色
            • 【六】虚电路
            • 【七】DR/BDR选举
            • 【八】网络类型
        • 二、OSPF报文及工作方式
          • 2.1 OSPF报文及作用
          • 2.2 OSPF工作方式
            • 【一】OSPF邻接状态建立
            • 【二】OSPF的三张表
            • 【三】OSPF邻居关系建立条件
            • 【四】OSPF各状态停止原因
          • 2.3 OSPF的收敛
            • 【一】快速收敛
            • 【二】按优先级收敛
            • 【三】触发更新
        • 三、OSPF的LSA
          • 3.1 LSA介绍
          • 3.2 LSA更新
            • 【1】LSA的新旧比较
            • 【2】LSA更新时间
          • 3.3 LSA优化
            • 【1】汇总
            • 【2】特殊区域
            • 【3】缺省路由
        • 四、OSPF选路及不规则区域
          • 4.1 OSPF选路
          • 4.2 不规则区域解决方法
            • 【一】tunnel 隧道
            • 【二】虚电路
            • 【三】OSPF多进程双向重发布
          • 4.3 OSPF防环
            • 【一】区域内防环
            • 【二】区域间放环
            • 【三】区域外放环
          • 4.4 路由过滤
            • 【1】路由引入过滤
            • 【2】3类LSA学习、发布过滤
            • 【3】5类、7类LSA生成过滤
            • 【4】接口视图下的lsa过滤
            • 【5】路由计算过滤
        • 五、OSPF其它特点
          • 5.1 路由类型
          • 5.2 OSPF路由优先级
          • 5.3 附录E
          • 5.4 sham-LINk
          • 5.5. Option字段
          • 5.5 Database Overflow
          • 5.6 FA地址

一、OSPF基础概念

1.1 协议特点

适用范围:IGP

类型:链路状态型动态路由协议

算法:i-SPF算法-SPF-dijkstra(对SPF算法的改进,使其更适合路由协议)

封装:基于IP封装,协议号为89—跨层封装在IP数据包中

版本:OSPFV2—IPV4、OSPFV3—IPV6

更新方式:组播或单播—224.0.0.5/224.0.0.6

​ 触发更新/周期更新—周期更新时间是30min

区域划分:OSPF需要合理规划IP地址和区域划分

​ —目的:减少lsa数量、减少lsa传播范围、减少对资源的消耗

​ —原因:OSPF需要消耗大量的路由器资源

metric计算:OSPF使用cost计算metric

​ cost=参考带宽/链路实际带宽

​ 每条路由信息的metric值=该条路径上每段链路的cost值的总和

1.2 OSPF概念
【一】Router-id

类似与IP地址形式

作用:

1、标识路由器在OSPF区域内的属性

2、区分不同LSA的始发路由器

优先级:

1、手工指定

2、最大环回接口

3、最大物理IP地址

【二】cost

OSPF中计算路径的参数属性

作用:表示一条路由的路径开销

计算方法:

1、接口cost值=接口参考带宽/接口实际带宽

2、路由cost值=路由经过的所有出向接口的cost值相加

cost常用来干涉选路

【三】Link-State(LSA)

LSA是指接口的状态信息,包括IP地址,子网掩码,网络类型,cost等。OSPF中传递的不是路由信息,而是LSA,各个路由器通过收集各个路由器发出的LSA,计算出网络的拓扑图,从而选择去各个目的网段的最佳路径,LSA在网络中始终是原始信息,不可改变。

常用类型:1、2、3、4、5、7类

【四】OSPF区域

OSPF是基于链路状态的,因此区域的划分是以链路为基础的,即一段链路只能属于一个OSFP区域。

目的:减少lsa数量、减少lsa传播范围、减少对资源的消耗

​ 原因:OSPF需要消耗大量的路由器资源

划分:

1.骨干域:区域0,必须存在并且唯一,作为OSPF的核心区域,所有的域间、域外路由通过区域0转发,常规区域(非骨干域)间不能传递路由。

注:严格意义上,骨干域内必须存在邻居关系,否则会有成环的风险。

2.非骨干域:非0区域,可以存在多个,但必须与骨干域邻接

3.特殊区域:由非骨干区域而来,在非骨干的区域上的减少lsa传递的数量

命名:区域id的命令采用整数数字,或IP地址形式

【五】路由器的角色

OSPF基于链路划分了骨干域和非骨干域,路由在不同的位置担任不同的角色,起着不同的作用。

ABR:区域边界路由器,位于骨干域和非骨干域的交接处,可以产生3类LSA,承担与骨干域的LSA交换及域间流量的进出口

ASBR:自治系统边界路由器,位于OSPF网络与其它网络的交接处,可以产生5类、7类LSA,承担与其它的网络的通信及将其它网络的路由信息引入的作用。

【六】虚电路

作用:

1、解决骨干域断裂的问题

2、解决不规则区域问题

【七】DR/BDR选举

在MA网络中,如果每个接口之间都建立邻接关系,那么将导致重复更新,OSPF是链路状态协议,没有接口的水平分割,所以需要指定一个主路由器,负责和其它设备交换信息

DR:主路由器

BDR:备份路由器

选举规则:

1、比较接口优先级-大优

P2P网络中接口的优先级为0,不参与选举,因此可将DRouter的接口优先级修改为0,DRouther和DR建立邻接关系,DRouther之间建立邻居关系,即Two-way状态

【八】网络类型

判断网络类型,是基于设备接口的二层封装技术来进行的

1、P2P:点到点通信网络,二层封装为ppp或hdlc,没有物理寻址,不需要选举DR/DBR,支持广播(PPP)

2、MA:多路访问 ,在一个网段内的节点数量不限制,支持广播,自动选举DR/BDR(以太网)

3、NBMA:非广播型多路技术,在一个MA网络中没有广播机制,需要手动指定邻居,不支持伪广播

广播:广播是发送一个报文,该报文在广播域内传递给所有设备

伪广播:通过单播的形式给每一个设备发送一个报文

4、MP:分支之间不能直接通信,需要绕行总部

二、OSPF报文及工作方式

2.1 OSPF报文及作用

【1】hello报文

建立和维护邻居关系

【2】数据库描述包-DBD

携带LSA目录,比对LSA信息,通过LSA头部的三个信息可以区别不同的LSA

~LS Type

~Link State ID

~advertising Router

【3】链路状态请求报文-LSR

向路由器请求特定的LSA

【4】链路状态更新报文-LSU

向请求的路由器发送LSA

【5】链路状态确认报文-LSACK

路由器收到LSA恢复确认

注:由于IP是无连接不可靠的协议,因此报文的发送需要确认,OSPF报文中除hello报文外,其它报文都需要确认

​ DBD-序列号隐式确认

LSR-LSU

LSU-LSACK

2.2 OSPF工作方式

Down → Init → Two-way → Exstart → Exchange → Loading → Full

【一】OSPF邻接状态建立

1、Down:启动状态

OSPF进程刚运行时,路由器没有收到任何数据包,路由器开始发送hello包。

hello包以组播的方式发送,组播地址:224.0.0.5,hello time:10s/dead time 40s

在非广播网络中,不能广播发送hello包,需要手工指定邻居,发送单播hello,进入Attempt状态。

2、Init:初始化状态

路由器收到hello包后进入该状态,并将收到hello包的Router-id加入到自己发送hello包的邻居列表中

3、Two-way:双向通信状态

路由器收到的hello包的邻居列表中包含自己的Router-id,则进入该状态,代表邻居关系建立,建立邻居表,将邻居的Router-id加表

P2P网络:进入下一状态

MA:选举DR/BDR,组播地址:224.0.0.6

4、Exstart:预启动状态

双方邻居关系建立完成以后,通过类hello包的DBD对比,选举主从设备-Master—Slave。主路由器定义DBD序列号,通过序列号的隐式确认,保证传输可靠性

注:如果双方MTU不同,则停在该状态

选举规则:

Router-id较大的成为Master

5、Exchange:准交换状态

双方开始发送DBD数据包,对比LSA信息,确定自己需要的LSA信息

6、Loading:加载状态

使用LSR/LSU/LSack来获取未知的LSA信息

lsr–请求列表-针对每一条发送lsu

lsu–重传列表-对方收到lsu后发送ack确认,如果没收到,则重发

7、full:准发状态

LSA发送完毕,链路状态数据库收敛完毕

附加:Attempt状态:出现在NBMA网络中,NBMA网络没有广播,所以需要手动指定邻居

【二】OSPF的三张表

1、邻居表-peer

路由器在各个激活的OSPF的接口上维护的邻居都列在邻居表中,在邻居关系建立后,将邻居的Router-id加入邻居表中

作用:描述与OSPF建立邻居的路由器及其状态

2、链路状态数据库-LSDB

存储LSA的信息,可以将自己产生及邻居通告的LSA存储在LSDB中,用于计算网络拓扑和生成路由条目,是OSPF运行SPF算法的基础数据

作用:收集LSA的信息,用于SPF算法计算

3、OSPF路由表-Routing

SPF算法对LSDB计算,得到最佳路径,并生成OSPF路由表

作用:提供前往目的网段的最佳路径

【三】OSPF邻居关系建立条件

1.router-ID必须不同

2.area-ID必须一致

3.认证类型和认证型数据都一致

4.hello时间、dead时间都一致

5.特殊区域标识必须一致

6.若在MA网络中,network mask必须一致

7.必须同时使用单播或组播

【四】OSPF各状态停止原因

1、卡在down状态:OSPF没有运行

2、卡在init状态:没有收到对方的包

3、卡在2-way状态:MA网络没法选举

4、卡在exstart状态:MTU不匹配

5、卡在exchange状态:包交互有问题,发出DBD后没有收到ACK

6、卡在loading状态:LSA加载不完全、包交互有问题

2.3 OSPF的收敛
【一】快速收敛

1、增量最短路径优先算法I-SPF

第一次计算全部节点,降低了CPU的占用率,提高网络的收敛速度

2、部分路由计算PRC

只对受影响的路由计算

3、智能定时器

对接口翻滚等带来的接口不稳定,进行智能控制,减少LSA洪泛

初次计算SPF的间隔时间由start-interval参数决定,第n>2次计算SPF时间为hold-interval*2(n-1),当hold到达指定最长时间max-interval时,OSPF计算SPF的时间间隔都是最长时间间隔

【二】按优先级收敛

1、特定路由优先收敛的技术

可以通过前缀列表将指定路由过滤出来,通过不同的路由配置不同的收敛优先级,达到重要路由先收敛,提高网络可靠性

【三】触发更新

1、路由器注意到一个链路状态改变了,他会使用组播地址224.0.0.6向ospf dr和bdr发送LSU包,此包中包含LSA更新信息。

三、OSPF的LSA

3.1 LSA介绍
LSA 类型 作用
Router-LSA Type-1 每个设备都会产生,描述了设备的链路状态和开销,在所在区域传输
Network-LSA Type-2 由DR产生,描述网段的链路状态,在所属区域产生,是对1类的补充
Network-summary-LSA Type-3 由ABR产生,描述区域内的网段 ,为域间路由服务
ASBR-summary-LSA Type-4 由ABR产生描述到ASBR的路由,通告给非ASBR所在区域,是对5类的补充
AS-external-LSA Type-5 由ASBR产生,描述AS外部的路由,通告到所有区域
NSSA-LSA Type-7 由ASBR产生,描述AS外部的路由,只在NSSA区域传播
Opaque LSA Type-9/Type-10/Type-11 9在网段内传播,10支持TE,11无
3.2 LSA更新

正常1800s更新一次,最大老化时间是3609s

【1】LSA的新旧比较

1、会先比较序列号,序列号越大越优,

2、如果序列号相同,会比较校验值(checksum)越大越优

3、如果校验值也相同,会比较LSA Age时间,是否等于MAX-age时间(3600)

4、如果age时间不等于max-age时间,会比较他们的差值,如果差值大15分钟(900秒),小的优

5、如果age时间不等于max-age时间,会比较他们的差值,如果差值小于15分钟,说明是同一条LSA,忽略其中一条

【2】LSA更新时间

1、周期更新-1800s

2、触发更新

3.3 LSA优化
【1】汇总

1)域间路由汇总—将非骨干区域汇总到骨干区域

将3类LSA汇总,减少更新量

2)域外路由汇总—将外部路由汇总为一条导入到OSPF中

将5类LSA汇总,减少更新量

【2】特殊区域

不能是骨干区域,不能存在虚电路

一、不存在ASBR

1、末梢区域 stub

​ 拒绝4/5类的LSA,生成一条3类的缺省指向骨干区域

2、完全末梢区域 Totally stub area

​ 拒绝3/4/5类lsa,仅保留一条3类的缺省

二、存在ASBR

1、Not-So-Stubby Area 非完全末梢区域

​ 拒绝其他区域的ASBR产生的4/5类LSA,本地区域内ASBR产生的5类LSA,以7类在本区域传播,从本区域进入骨干区域时由ABR(新的ASBR)转换为5类,同时自动产生一条7的缺省指向骨干区域

2、 Totally Not-So-Stubby Area

​ 在NSSA的基础上,进一步拒绝3类LSA,生成一条3类缺省指向骨干区域

【3】缺省路由

普通区域:

ASBR上手动配置产生缺省5类,通告到OSPF自治区域外(特殊区域除外)

STub区域:

ABR自动产生一条缺省3类LSA,通告到整个Stub区域内

Totally Stub区域:

ABR会自动产生一条缺省3类LSA,通告到整个Stub区域内

NSSA区域:

ABR自动产生一条缺省LSA,通告到整个NSSA区域内

ASBR手动配置产生一条缺省7类LSA,通告到整个NSSA区域内

Totally NSSA区域:

ABR自动产生一条缺省3类LSA,通告到整个NSSA区域内

四、OSPF选路及不规则区域

4.1 OSPF选路

1、拓扑优于路由 1/2LSA计算所得路由优于3/4/5/7类计算所得

2、内部优于外部 3类优于4/5/7类

3、AS区域内和区域间描述的是AS内部的结构,AS外部路由则描述的是AS以外的目的地址的路由

OSPF将引入AS外部的路由分为Type1和Type2两类

Type1:

到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到目的网络的开销

Type2:

到第二类外部路由的开销=ASBR到目的网络的开销

4.2 不规则区域解决方法
【一】tunnel 隧道

在两台的ABR上建立tunnel,然后将其宣告到OSPF协议中

缺点:

1、周期和触发的信息将对中间的穿越区域造成资源的占用;

2、选路不佳

【二】虚电路

网络中合法的ABR(工作的区域0的ABR),和非法ABR间建立一条虚链路(在OSPF协议中构建,没有新生网段) 由合法ABR授权非法ABR进行区域间路由共享

优点:

没有新生链路,故选路正常

缺点:

设备中依然保留周期的hello包和更新----占用中间区域资源

【三】OSPF多进程双向重发布

OSPF多进程,进程号仅具有本地意义,邻居间建立邻居关系时可以使用不同的进程号;

若在一台设备上同时启动多个进程,那么不同进程存在自己的邻居关系,生成不同的数据库(不共享);

最终将所有数据库计算所得路由加载于同一张路由表中;

在解决不规则区域时,可以让非法ABR将不同的OSPF区域工作在不同的OSPF进程中,之后使用双向重发布技术来实现路由共享

4.3 OSPF防环
【一】区域内防环

域内会有两种LSA-Router和Network,LSDB通过描述一个有向线段图来描述网络拓扑结构

机制:路由器以自己为根构造最短路径树

1、仅考虑路由器和传输网络之间的传输

2、末节网络作为叶子加入树

总结:构造最短路径树

【二】区域间放环
  1. OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。

2)因此当一台ABR在非Area0的区域中收到Type-3 LSA时,虽然它会将其装载进LSDB,但是该 路由器不会使用这些Type-3 LSA进行路由计算,当然它更不会将这些Type-3 LSA再注入回Area0中。

  1. ABR不会将描述一个Area内部的路由信息的Type-3 LSA再注入回该区域中。

总结:区域间水平分割

【三】区域外放环

Type-5 LSA将会被泛洪到整个OSPF域,表面上看,它本身并不具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖Type-1 LSA及Type-4 LSA来实现防环。

总结:依赖4类LSA放环

4.4 路由过滤

OSPF可以使用路由策略包括route-policy、filter、filter-policy,filter-lsa-out,access-list,prefix-list

【1】路由引入过滤

在重发布时配置策略

【2】3类LSA学习、发布过滤

Filter inport、filter export在ABR上对进入离开本区域的3类LSA过滤

【3】5类、7类LSA生成过滤

Filter-policy export 对5、7类LSA过滤

【4】接口视图下的lsa过滤

通过OSPF filter-LSA-out,匹配除Grace LSA外的所有LSA、3、5、7类LSA,并匹配ACL规定的路由前缀时

【5】路由计算过滤

通过filter-policy import过滤规则,可以设置OSPF数据库中的域内、域间、域外LSA计算为路由条目时进行过滤

五、OSPF其它特点

5.1 路由类型

AS区域内和区域间描述的是AS内部的结构,AS外部路由则描述的是AS以外的目的地址的路由

OSPF将引入AS外部的路由分为Type1和Type2两类

Type1:

到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到目的网络的开销

Type2:

到第二类外部路由的开销=ASBR到目的网络的开销

5.2 OSPF路由优先级

1、域内:10 域外:150 (RIP 100 ISIS 15 静态 60 Eigrp 80 BGP 255)

内部路由优先级要小于其他IGP路由协议

外部路由优先级要大于其他IGP路由协议

外部路由大于内部路由会给路由协议带来水平分割保护机制

5.3 附录E

附录E — link-id相同的问题

若一台ABR将两条3类LSA导入其他区域;同时这两条LSA的link-id会相同;

假设:短掩码网段先进入,link-id正常显示;长掩码进入时link-id加反掩码

20.1.0.0/16–link-id 20.1.0.0

20.1.0.0/24–link-id 20.1.0.255

若长掩码先进入,再短掩码进入时,长掩码的信息被刷新为反掩码;

link-id相同时,短掩码正常显示,长掩码加反掩码

5.4 sham-LINk

背景:在MPLS-BGP网络中,由于ospf网络之间还有备份网络,回导致路由优先选择备份路径,原因是OSPF的选路规则,域间或域内大于域外

原理:通过两个可以在PE的vr中通信的回环地址,让俩个PE建立ospf的邻居关系,从而不再依赖bgp的v4来传递俩个PE之间的ospf路由。shame-link的建立是的俩个站点之间的ospf拓扑由

CE1(OSPF_PE1(OSPF-PE1)-*PE2(BGP)-*PE2(OSPF)-CE2(OSPF)

到1

CE1 (OSPF)——> PE1 (OSPF) > PE2 (OSPF) - > CE2 (OSPF)

5.5. Option字段

Option字段:

DN-用来避免在MPLS-VPN中环路,当PE向CE发送3类、5类、7类LSA时,需要设置DN位,其他PE收到该LSA时,不能用于计算

N/P-对7类LSA的控制,N=1表示,支持接受7类LSA,N=0表示不支持,P位告诉ABR将7类转为5类

E-支持接受外部LSA,可以接受5类LSA时,该位置位

MT-支持多拓扑OSPF

5.5 Database Overflow

通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限,OSPF网络中所有的路由器都必须配置相同的上限值

OSPF Datebase Overflow过程:

1、进入该状态,删除自己产生的非缺省外部路由

2、处于该状态中时,不产生非缺省外部路由,丢弃新收到的外部路由并不回复确认报文,如果超限状态定时器超时(5s),检查外部路由数量是否仍然超限,如果超限则重启定时器,没有则退出

3、退出该状态时,路由器删除定时器,产生非缺省外部路由,接受新收到的非缺省外部路由并回复确认报文

5.6 FA地址

FA地址是5、7类LSA特有的

在OSPF引入外部路由时,若产生的五类LSA的FA地址为0.0.0.0,则其他路由器在计算到达该外部网络时,将考虑如何到达ASBR来计算出外部路由的下一跳地址

在OSPF引入外部路由时,若产生的五类LSA的FA地址不为0.0.0.0,则其他路由器在计算到达该外部网络时,将考虑如何到达该FA地址来计算出外部路由的下一跳地址

你可能感兴趣的:(网络)