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的开销公式为:带宽参考值/带宽