计算机网络基础 (十一)--- 网络层 -OSPF 协议
文章内容概览
链路状态(LS)协议
链路状态协议特点
特点一:向所有的路由器发送消息(一传十,十传百,最终把消息传递到整个网络中去。在前边的文章中有说到rip协议,rip协议只和相邻的路由器交换信息)
特点二:这个消息描述该路由器与相邻路由器的链路状态(链路状态就包括与相邻路由器的距离、**时延**、带宽等,这些可以描述链路状态的一些指标,这些指标可以更加客观的描述该路由器和相邻路由器的链路状态)
特点三:只有链路状态发生变化时,才发送更新消息(这个也是和RIP协议是不一样的,RIP协议是每隔30s交换路由信息)
RIP协议缺点
前边文章中有提到RIP协议的缺点
随便相信“隔壁老王”(不管是B还是C,如果说B得到了C的路由信息,它将会无条件的相信C。同样,如果是C,他也会无条件相信B,因此就会导致循环,直到跳数为16,才发现不可达)
“自己不思考”、“视野不够”(对于RIP协议,每一个路由器只看到相邻路由的信息,看不到更远的信息)
对比上边介绍的链路状态协议,可以发现该协议没有RIP协议的这些缺点
OSPF协议过程
OSPF(Open Shortest Path First:开放最短路径优先)
OSPF协议的核心是Dijkstra算法
OSPF协议是链路状态协议的一种实现(也就是链路状态协议定义了一个规则,OSPF协议实现了这个规则)
既然OSPF协议是实现了链路状态协议的规则,那么逐一看一下每个规则的具体过程
(1)向所有的路由器发送消息
那么每个路由器就可以获取网络中的所有消息,通过这个所有的消息,那么每个路由器就可以得到网络的完整拓扑。因为每个路由器都能够得到网络的完整拓扑,因此每个路由器的消息都是完整的,对于网络的完整拓扑,有一个官方的称呼叫:链路状态数据库,它保存的就是网络中的每一跳的状态是什么样的。链路状态数据库是全网一致的,这个是因为每一个消息都会广播到网络中的每一个路由器。因为每一个路由器都有完整的网络拓扑,所以每一个路由器都可以运行迪杰斯特拉算法,通过该算法,每一个路由器自己就能够找到自身到某一个顶点的最短路径是什么。因此,链路状态协议的【向所有的路由器发送消息】这一特点,使得Dijkstra算法可以成功在每个路由器中运行起来
(2)消息描述该路由器与相邻路由器的链路状态
上边也提到了,链路状态包括:与相邻路由器的距离、时延、带宽等等,这就使得OSPF协议更加的客观、更加先进。RIP协议只能根据跳数这个指标去描述连接的质量
(3)只有链路状态发生变化时,才发送更新消息
这个也是使得OSPF协议可以比RIP更快的收敛,因为它减少了数据的交换,整个过程会更加通畅
OSPF协议的五种消息类型
(1)问候消息
问候消息的消息长度非常短,这个消息主要是维护该路由到相邻路由器的可达性。在实际的运行中,每一个路由器,都会给相邻的路由器发送问候消息,以此确认它与相邻路由器是否真正可达
(2)链路状态数据库描述信息
这个消息是用于向相邻路由器发送自己的链路状态数据库的所有链路状态的简单消息
(3)链路状态请求信息
该类型的消息是为了向相邻路由器请求链路状态数据库
(4)链路状态更新信息
这个消息是OSPF协议中非常频繁的一个消息,对于状态更新消息,每个路由器都会广播到整个网络中去
(5)链路状态确认消息
对链路状态更新的确认
OSPF协议的整个过程
首先路由器接入网络,接入网络之后,路由器向相邻路由器发出问候消息,以此确认可达性。确认之后,他们就可以相互的交流当前的链路状态信息,他们首先会发出数据库链路描述信息,向隔壁路由器介绍自己的链路状态的简要消息,然后对它们不同的链路状态进行同步,以此达到一致的状态。与相邻路由器达到一致的状态是不够的,它们还需要与网络中的其它路由器达到一致的状态。因此,此时路由器会广播更新的消息到网络中,以及接收更新,以此来更新本地的链路状态数据库,这个就是OSPF协议的整个过程
对比RIP协议和OSPF协议
版权声明: 本文为 InfoQ 作者【书旅】的原创文章。
原文链接:【http://xie.infoq.cn/article/39d580043421e8baa3d18b52e】。文章转载请联系作者。
评论