说明:本文仅供学习交流,转载请标明出处,欢迎转载!
本文是如下文献相关内容的总结:
1.《TCP/IP详解 卷1》
2.《TCP/IP协议族》
3.《计算机网络第5版》
OSPF(Open Shortest Path First开放最短路径优先 )是一种IGP(内部网关协议)协议,主要用于AS(自治系统内部)。该协议是一种基于链路状态的协议,而RIP则是基于距离向量的协议,在两者的底层实现算法中,RIP采用的是Bellman-Ford算法(贝尔曼福特算法),而OSPF采用的是Dijkstra算法(迪杰斯特拉算法)。RIP通过将某个路由器的部分或全部路由表传递给相邻的路由器,而OSPF采用洪泛法将其LSP(Link
State Packet 链路状态包)传递给同一区域内的所有路由器。
在上面的描述中,我首先解释下两个名词:链路状态、洪泛法。
链路状态:用于说明本路由器都和哪些路由器相邻,以及该路由器的“度量”。度量可以表示费用,距离,实验,带宽等。
注意:OSPF协议发送的消息是与本路由器相邻的所有路由器的链路状态,而RIP协议发送的消息是到所有网络的距离以及下一跳路由器。
洪泛法指的是路由器通过所有输出端口向所有相邻的路由器发送消息。而每一个相邻路由器又再将此消息发往其所有的相邻路由器(但不再发送给刚刚发来消息的那个路由器)。这样,最终整个区域中所有的路由器都得到这个消息的一个副本,所以OSPF总是比RIP收敛更快。
注意:对于OSPF协议只有当链路状态发生变化时,该路由器才想所有其他路由器用洪泛法发送此消息,而对于RIP协议,不管网络拓扑是否发生变化,路由器之间都会定期地交换路由信息。
OSPF的数据包主要包括:问候包HELLO、数据库描述包DBD、链路状态请求包LSR、链路状态更新包LSU和链路状态确认包LSACK五种类型。
这五类数据包含有相同OSPF首部,具体如下:
版本:占8位,OSPF协议的版本;
类型:占8位,OSPF的类型,1~5;
报文长度:占16位,总OSPF报文长度(包括首部);
源IP:占32位,发送该数据包的路由器的IP地址;
区域标识:占32位,由于OSPF将一个AS划分为若干个更小的区域,每个区域对应一个ID称为区域标示符,用点分十进制表示,主干区域的ID是0.0.0.0;
检验和:占16位,用于差错检验;
鉴别类型:占16位,该区域内使用的鉴别类型,0表示无鉴别,1表示口令。
鉴别:占64位,存放鉴别数据。若鉴别类型为0,则填入0;若鉴别类型为1,则该字段填入含8个字符的
口令。
划分区域的好处是:把利用洪泛发交换链路信息的范围局限于每一个区域二不是整个AS,这样就减少了整个网络上的通信量。
下面详细介绍下这5种类型的数据包。
I.问候包HELLO
OSPF使用HELLO包建立邻站关系,并测试邻站的可达性。在路由器能够把关于它的邻站信息向其他路由器进行洪泛之前,必须先和它的邻站打招呼。从而能够确定这些邻站是否都在工作,是否可以到达。OSPF规定,每两个相邻路由器每隔10s要交换一次问候分组,以便知道对方是否可达,因为只有可达邻站的链路状态信息才存入链路状态数据库。
下面的那几种数据包都是用来进行链路状态数据库的同步。同步指的是不同路由器的链路状态数据库的内容是一样的。
II.数据库描述包DBD
当路由器连接到系统后,它会发送HELLO包,向其邻站打招呼。若这些邻站是第一次收到该路由器的信息,它们会发送数据库描述报文,这些DBD并不包含完整的数据库信息,只是给出了概要(对应数据库每一行的标题)。新连上的路由器检查这些标题,并找出哪些行的信息它还没有,然后再发送一个或多个链路状态请求报文,以便得到这个特定链路的完整信息。
注意:链路状态数据库实际上就是全网的拓扑结构图。这个拓扑结构图在全网范围内是一致的(称为链路状态数据库的同步)。每一个路由器使用链路状态数据库中的数据,构造出自己的路由表(通过使用Dijstra算法)。而RIP协议的每一个路由器只知道到所有网络的距离以及下一个路由器,但却不知道全网的拓扑结构,只知道距离是多少,但是具体怎么走的就不知道了,因为它知道相邻路由器的信息,只有到了下一跳才知道下一步该怎么走。
III.链路状态请求分组LSR
向对方请求发送某些链路状态项目的详细信息。
IV.链路状态确认分组LSACK
OSPF强制路由器对所收到的每一个链路状态更新分组进行确认,使得路由选择更加可靠。
V.链路状态更新分组LSU
LSU是整个OSPF运行的核心,路由器用它向邻站通告自己的链路状态信息。在网络运行的过程中,只有一个路由的链路状态发生变化,该路由器就使用链路状态更新分组LSU,用洪泛法向全网更新链路状态。OSPF采用的是可靠的洪泛法,这里可靠指的是路由器在收到更新分组LSU后要发送确认,当然重复的更新分组值需发送一次确认。
OSPF的点点滴滴:
1.OSPF直接使用IP数据报传送,对应IP数据报首部协议字段为89,而RIP采用的是UDP,对应的端口号为520。
2.所有在OSPF路由器直接交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息。
3.OSPF支持子网。
4.由于OSPF收敛速度快,所以不存在“坏消息传得慢”的问题,这点正好与RIP相反。
5.对于规模较大的网络,OSPF协议用的比较多;对于规模较小的网络,RIP目前用得更多。
OSPF协议总结,码迷,mamicode.com