OSPF协议——计算机网络笔记

OSPF协议——计算机网络笔记
OSPF的简单说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。 [3]
五种报文
Hello报文:建立并维护邻居关系。 [3]
DBD报文:发送链路状态头部信息。 [3]
LSR报文:把从DBD中找出需要的链路状态头部信息传给邻居,请求完整信息。 [3]
LSU报文:将LSR请求的头部信息对应的完整信息发给邻居。 [3]
LSACK:收到LSU报文后确认该报文。 [3]
三个阶段
邻居发现:通过发送Hello报文形成邻居关系。 [3]
路由通告:邻居间发送链路状态信息形成邻接关系。 [3]
路由计算:根据最短路径算法算出路由表。 [3]
四张表
邻居表:主要记录形成邻居关系路由器。 [3]
链路状态数据库:记录链路状态信息。 [3]
OSPF路由表:通过链路状态数据库得出。 [3]
全局路由表:OSPF路由与其他比较得出。 [3]

OSPF协议——计算机网络笔记
链路状态路由的核心算法是Dijkstra算法
1979年以前ARPANET(Advanced Research Project Agency)一直使用的是距离矢量路由算法,但是在此之后便改为使用链路状态路由算法。当今,链路状态路由算法的变种算法——IS-IS(Intermediate System-Intermediate System)还有OSPF成为了使用最为广泛的路由算法。

链路路由算法分为下列5步:

(1)每个路由器发现它的邻居节点,并了解邻居节点的网络地址

(2)设置到每个邻居节点的距离或者成本度量值

(3)构造一个包含所有获得的链路向信息包

(4)将这个链路信息包发送给网络中其他路由器,同时也接受其他路由器发送过来的链路信息包

(5)计算出到其他路由器的最短路径(这一步就会使用到核心算法Dijkstra算法)

下面将具体介绍每一步的细节:

1、发现邻居:

当一个路由器启动时,路由器会找出哪些路由器是它的邻居。实现这个的方法就是在每一条点到点线路上发送一个特殊的HELLO数据包。然后线路的另外一个路由器做出一个答复。

2、设置链路成本:

一种常用的方法就是使成本和链路带宽成反比,越高带宽的成本越低,这样可以使高容量的路径成为路由器更好的选择。如果网络是在地理上分散的,那么可以将延迟作为成本的组成部分,延迟高的成本也高,这样可以找出延迟最低的路径。

3、构造链路状态包:

状态包中包括了这些内容:发送方的标识符,序号,年龄,邻居列表。

4、分发链路状态包:

路由器将会进行记录,如果是个新的数据包,那么就转发它,如果是个重复的数据包,就丢弃,如果数据报的序号小于当前所看到的最大的序号,那么就当做过时的数据包而拒绝接受。

5、计算新路由:

每条链路可能被表示了两次,每个方向可能不同。也就是说实际情况中,A到B的和B到A的最短路径可能是不同的。这里将要详细介绍下当每个路由器收到了链路状态包之后怎么去计算到网络中其他路由器的最短路径(Dijkstra算法):

PSPF会划分区域
OSPF协议——计算机网络笔记
借助ip数据报发送

OSPF协议——计算机网络笔记

OSPF协议——计算机网络笔记