OSPF协议
Posted 你是我世界的光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSPF协议相关的知识,希望对你有一定的参考价值。
前言: OSPF是一种链路状态路由协议,即采用OSFP协议的路由器均知道它所属于的区域内的所有接口和链路的状态信息。
一.距离矢量路由协议回顾
- 运行距离矢量路由协议的路由器会周期性的泛洪自己的路由表,也就是说协议更新消息中包含的是路由信息。
- 距离矢量协议中,路由器了解的不是网络的拓扑结构,只是通过路由更新和简单的机制来学习路由,这种方式称为依照传闻的更新。
二.OSPF特点
- 无类别的链路状态路由协议
- 使用组播更新,属于触发更新(同时以时间间隔30min一次的周期性更新来维护拓扑数据库(LSDB)),组播地址:224.0.0.5,224.0.0.6或者备份指定路由器的地址。
- 快速收敛
- 使用SPF算法构造无环网络
- 支持等开销负载均衡、路由认证、区域和域外汇总(这里的“开销”类比于EIGRP中的metric和RIP中的跳数)。
- 具有区域划分。
- 使用LSA报文来交换路由信息。
LSA:链路状态通告,内部包含了接口的状态信息,类型信息,度量值,优先级,网络地址等等。类型有11种,拓扑信息和路由信息等等。
三.OSPF的三张表
①:邻居表
2台路由器的OSPF要协同工作,基本要求就是二者形成全毗邻的邻接关系,而邻居表存储了OSPF路由器邻居的状态和邻居的其他信息。
②:拓扑数据库(LSDB)
OSPF用LSA来描述网络拓扑信息,LSDB中存储着路由器产生或者受到的LSA。
③:OSPF路由表
基于LSDB进行SPF算法运算,计算出的路由存储在此表中,也就是说用于实际数据传送的路由存在此处。
四.OSPF中消息数据包的类型
1.hello包
用途:建立邻居关系;keep alive;
间隔:10s发送一次,如果4倍的hello间隔之内没有收到邻居新的hello包,那么认为双方的邻居关心已经down,因此4倍的间隔成为死亡间隔。
2.DBD数据库描述数据包
- 用于LSDB摘要信息交换之间的主从关系
- 描述LSDB摘要信息(LSA各种信息,但是不包含详细内容)
3.LSR(链路状态请求数据包)
用于请求未知的LSA信息,用于实现LSDB的同步。
4.LSU(链路状态更新包)
包含了相信的LSA信息,当LSA有变化时,“LSA寄生在LSU中泛洪”。
5.LSACK(确认包)
用于确认LSR、DBD、LSU。
现在我们明确了5种报文,然后我们就以这5种报文为基础粗略讲一下OSPF路由器邻接关系建立过程。
- 第一步:双方均未发送hello包,当hello开始发送,转入第二步。
- 第二步:初始化,双方通过发送hello包和确认返回的hello包,建立邻居关系。
- 第三步:预启动,想开始交换路由信息,开始决定主从关系(DBD报文的工作)。
- 第四步:主从关系建立,开始交换LSDB的摘要信息(也是DBD报文的工作)。
- 第五步:加载,开始把双方详细的LSDB信息进行交换,这一阶段报文基本有(LSR–>LSU–>LSACK)反复的进行。
- 第六步:OSPF的邻接关系建立。
五.OSPF协议中的一些问题及解决措施
①:LSDB过于庞大的问题
我们知道LSDB中存储的LSA是关于整个网络所有接口链路的信息,因此如果网络如果过于庞大,那么LSDB必然会自然而然的变大,这样维护该LSDB时Router付出的资源也就会越多,设备性能下降,就会导致数据转发收到影响。并且当网络拓扑发生变化时,LSA会泛洪严重。区域内部的动荡会引起全网路由器的SPF计算。另外,路由表也会过于庞大而不便于维护。
解决办法:区域划分
如下图:
- OSPF多区域设计减小LSA泛洪的范围,有效地将拓扑变化的影响控制在区域内,达到了网络优化的目的。
- 边界可以做路由汇总,减小路由表规模。
- 多区域的设计提高了网络的扩展性,有利于组建大规模的网络。
②:LSA泛洪问题
在MA网络中(当一网络中路由器互联现象比较严重的时候),显然,每台OSPF机器都需要与其他所有路由器建立OSPF邻居关系,这样某一台路由器拓扑发生变更时,网络中的LSA泛洪可能会造成带宽的浪费和设备资源的损耗。
解决方法:DR和BDR的使用
如下图:
六.OSPF的配置
请参考OSPF实验。
以上是关于OSPF协议的主要内容,如果未能解决你的问题,请参考以下文章