前言
开放式最短路径优先OSPF(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议。
RIP是一种基于距离矢量算法的路由协议,存在着收敛慢、易产生路由环路、可扩展性差等问题,目前已逐渐被OSPF取代。
开放式最短路径优先(OSPF)
OSPF原理介绍
ospf中存在这两种关系,需要区分一下:
在ospf中有两个关键名词:
1.邻居关系:即两台路由器没有路由交互
2.邻接关系:即两台路由器有路由交互
与rip的区别是,ospf发送的数据包直接封装在网络层,即直接封装在ip报文之上,且ospf传输的是LSA(链路状态通告信息),该信息包含链路状态信息和拓扑信息(这个可以理解为自己所知道的拓扑地图),因为有了拓扑信息,相比rip协议收敛更快一些。
OSPF报文
OSPF报文封装在IP报文中,协议号为89(rip封装在传输层udp协议之上协议号为520)。
OSPF报文类型有5种:
Hello 报文
DD(Database Description)报文
LSR(LSA Request)报文
LSU(LSA Update)报文
LSACK(Link State Acknowledgment)报文
报文中:
hello interval :代表发送hello包间隔,一般为10s
Router Priority:优先级,默认为1,选举dr/bdr时使用
Router Dead Interval:一般为hello interval*4,若40秒没收到对方发hello包,则认为对方"down"了。
dr/bdr 缺省为0
邻居状态机
down:刚刚配置完ospf的路由器状态都为down。
init:向附近发送组播包(地址为224.0.0.5)时,路由器进入init状态。
2-way:邻居收到组播包,将缓存存到列表中,回复hello包 ,两人进入2-way状态,即进入双向通信状态。
extart: 当进入2-way状态后,主从关系选举开始,即选出master和slave, 目的,控制路由更新序列号(由master先发包,序列号以它序列号为起始序列号开始递增), 确保机制可靠,即router-id大的选为master。
exchange:交换彼此数据库信息
load:加载新的数据库信息
full:邻接关系建立完成的标志。
ospf邻接关系建立
- 邻居发现
Hello报文用来发现和维持OSPF邻居关系。所以在初始化完成后,RTA通过组播地址(224.0.0.5)发送hello包,RTB收到后回复,双方进入2-way状态。
- 数据库同步
路由器使用DD报文来进行主从路由器的选举和数据库摘要信息的交互。即建立主从关系后并不是直接发给对方自己的数据库数据,而是先发送数据库摘要(这里可以理解为,路由器的目录),然后各取所需。
DD报文包含LSA的头部信息,用来描述LSDB的摘要信息。
- 建立完全邻接关系
LSR用于向对方请求所需的LSA。
LSU用于向对方发送其所需要的LSA。
LSACK用于向对方发送收到LSA的确认。
OSPF支持的网络类型
DR&BDR
在ma环境下,dr/bdr选举是非常有必要的,若每台路由器两两之间建立邻接关系,则会导致流量使用过大,影响传输效率,故选举DR/BDR后,其他路由器DRother需要与其他DRother建立邻接关系时,只需用组播地址(224.0.0.6)发送数据包给DR/BDR,由DR/BDR通过组播地址(224.0.0.5)泛洪即可。
需要补充一点,DRdown掉恢复后,不能再抢占回来。
DR&BDR选举
DR是基于端口的路由器优先级的值进行选举的。若优先级一样则比较router-id,都是选值大的为DR。
OSPF区域
每个区域都维护一个独立的LSDB。
Area 0是骨干区域,其他区域都必须与此区域相连。
OSPF开销
OSPF的开销计算公式为带宽参考值/带宽 。
可以通过bandwidth-reference命令来设置带宽参考值。
需要注意的是:当算出来的值小于1时候,一律为1,所以我们设置的参考值越大,精确度越高。
OSPF开销:开销只算入接口开销
OSPF配置
OSPF认证
总结
- OSPF Hello报文中Router Dead Interval字段的作用是什么?
判断对端路由器是否存活- 在广播网络中,DR和BDR用来接收链路状态更新报文的地址是什么?
224.0.0.6
来源:CSDN
作者:shark_辣椒
链接:https://blog.csdn.net/shark_chili3007/article/details/104171986