OSPF(Open Shortest Path First)——基于链路状态的内部网关协议详解

OSPF简介

OSPF是基于链路状态的内部网关路由协议,OSPF可以解决网络扩容带来的问题。

当网络上路由器越来越多,路由信息流量急剧增长的时候,OSPF可以将每个自治区域划分为多个区域,并限制每个区域的范围。

OSPF的优点

1、无环路

2、收敛快

3、扩展性好

4、支持认证

OSPF原理介绍

OSPF协议规定每个运行OSPF的路由器都需要对整个网络的链路状态信息和路由信息有了解,这样才能计算出到达目的网关的最优距离,通过LSA(Link State Advertisement) 链路状态通告泛洪开始,LSA中包含了路由器的接口IP地址、掩码、开销和网络类型等信息,并通过LSA信息建立自己的LSDB,并再LSDB的基础上通过SPF算法计算出到达目的网络的最优路由,并将其加入到路由表中。

OSPF报文

OSPF共五类报文

1、Hello报文:

Hello报文的作用是发现和维护邻居关系,在NBMA网络和广播中选举DR和BDR。

2、DD(DataBase Description)报文

DD报文用于在LSDB同步的过程中,DD报文来描述自身的LSDB DD报文存放着LSA的信息头部,可以减少路由器之间的协议报文流量。

3、LSR(Link State Request)报文

LSR报文用于LSDB数据同步结束后 请求获取对方拥有的而本地没有的LSA信息,LSR报文只包含了LAS的摘要信息

4、LSU(Link State Update)报文

LSU报文用于发送对方请求的LSA信息

5、LSACK报文

LSACK报文用来对接收到的LSU报文进行确认

邻居状态

OSPF共五种状态

1、Down状态:

这是邻居的初始状态,表示在邻居失效时间内未收到邻居发送的Hello报文

2.1、Attempet状态:

此状态只在NMBA网络上存在,表示没有接到任何邻居消息,但是已经周期性的向邻居发送报文,如果RouterDeadInterval间隔内未收到Hello报文,则转为Down状态

2、Init状态:

Init状态表示已经收到邻居发送的Hello包,但自己不在所收到的hello报文的邻居列表中,未形成双向通信

3、2-Way状态:

此状态表示已经和邻居建立双向通信,在接收到的hello报文邻居列表中

4、ExStart状态:

此状态是形成邻接关系的第一个步骤,表示LSDB同步的初始状态,这时会发送DD报文,但不包含链路状态信息,主从状态和初始化DD序列号均在此步骤完成

5、ExChange状态:

状态开始互相发送DD报文,描述本地LSDB的内容

6、Loading状态:

相互发送LSR报文请求LSA,发送LSU报文通告LSA

7、Full状态:

完成LSDB同步。

Router ID、邻居和邻接

Router是一个32位的值 和IP地址构成一样,它标志了一个自治系统的路由器,如果未手动指定,默认使用逻辑接口中最大的IP地址作为Router ID

运行OSPF的路由器直接需要交换链路状态信息和路由信息,在交换这些信息之前需建立邻接关系

邻居(Neighbor)

OSPF路由器启动后,便会通过OSPF接口想外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中的一些参数,如果参数一致,就会彼此形成邻居关系。

邻接(Adjacency)

只有双方交换DD报文,完成LSDB同步后才可称之为邻接

邻居发现

Hello报文重要字段解析

Network Mask:发送Hello报文的接口的子网掩码

Hello Interval:发送Hello报文的间隔时间

Options:可选功能

Router Prioripty:路由优先级 用于选举DR和DBR

Router Dead Interval:路由失效时间 一般为4倍的Hello Interval,为40

数据库同步

1、建立完邻居关系后,RTA向RTB发送DD报文,DD序列号被设置为X,RTA宣告自己是为主路由器

2、RTB也向RTA发送DD报文,在报文中,DD序列号被设置为Y,RTB也宣告自己为主路由器,由于RTB的Router ID比RTA的大,所以RTB是真正的主路由器

3、RTA发送一个新的DD报文,DD序列号为Y,因此RTB将邻居状态改变为ExChange。

4、变为ExChange后,RTB发送一个新的DD报文,DD序列号为Y+1

5、即使RTA不需要新的DD报文来描述自己的LSDB,但是作为从路由器,要向主路由器发送的每一个DD报文做确认,所以RTA发送一个内容为空的DD报文,发送完最后一个报文的时候,RTA将邻居状态改变为Loading;RTB收到最后一个DD报文之后,改变状态为FULL

建立完全邻接关系

1、邻居状态变为loading之后,RTA开始对RTB发送LSR报文,请求LSA信息

2、RTB收到LSR报文后,向RTA发送LSU报文

3、RTA收到LSU报文后,切换至FULL状态

4、RTA向RTB发送LSACK报文,用于对已接收LSU报文的确认

5、此时、RTA和RTB之间的邻居状态变为FULL,表示达到完全邻接状态

DR&BDR选举

DR和BDR可以减少网络中邻接关系的数量,从而减少链路状态信息和路由信息的交换次数,节省带宽

一个广播上所有路由器都必须连接DR和BDR

DR和BDR是基于端口优先级选举的,如果优先级相同时,则根据Router id来选举

OSPF区域

OSPF开销

OSPF的开销公式为:带宽参考值/带宽

 

posted @ 2021-05-10 15:13  小王同学!  阅读(1180)  评论(0编辑  收藏  举报