OSPF协议详解(一)

本文主要介绍OSPF的基础知识,主要从OSPF报文,OSPF原理、OSPF基本工作过程来介绍OSPF协议。

OSPF简述

OSPF(开放式最短路径优先)是广泛运用的一种动态路由协议。相比于静态路由协议,动态路由协议能够自适应网络环境的变化,比较灵活。OSPF最主要的特征是使用链路状态协议,而不是像Rip一样使用距离矢量协议。

使用OSPF后,每个路由器都会将其已知的链路状态信息告诉给邻居路由器,然后路由器之间进行交换链路信息。此后,网络上的每台路由器对全网的链路状态都有一样的认识,路由器在根据了解到的全网链路状态进行计算路由。

OSPF报文

OSPF协议依靠五种不同的报文来维护、发现和建立邻接关系,即问候报文、数据库描述报文、链路状态请求报文、链路状态更新报文和链路状态确认报文。

1.问候(Hello)报文

Hello报文用来发现,建立和维护OSPF邻居关系。周期性发送,10秒发送一次,发送4次,若4次内没收到回复,则邻居状态失效。

2.数据库描述(Database Description,DD)报文

DD报文用于向邻居路由器给出自己链路状态数据库中的所有链路状态信息的摘要信息。

3.链路状态请求(Link State Request,LSR)报文

LSR报文用于向邻居路由器请求发送某些链路状态项目的详细信息,当一个路由器与邻居交换了DD报文后,如果发现他的链路状态数据库缺少某些条目,就使用LSR报文来请求获取缺失的部分。

4.链路状态更新(Link State Update,LSU)报文

LSU报文用于应答链路状态请求分组(LSR报文),也可以使用这种报文在其链路状态发生变化时,进行泛洪发送。

5.链路状态确认(Link State Acknoeledgment,LSAck)报文

LSAck报文被用来应答链路状态更新(LSU)报文,对其进行确认。

OSPF原理介绍

每个使用OSPF的路由器都会产生链路状态通告LSA,LSA中包括路由器的链路状态(接口开销、接口速度等)和相邻路由器的连接状态。这些使用OSPF的路由器中都有一个链路状态数据库LSDB,用于来存储LSA,各个路由器通过不停地交换LSU报文更新自己的链路状态数据库LSDB,最终使得每个路由器的链路状态数据库LSDB都一样。然后链路状态数据库LSDB根据存储的LSA得到一张有向带权图,对这张带权图使用Dijkstra的SPF算法得到以每个路由器为根节点的最短路径即最优路径,然后将这条最优路径放进路由表中。

OSPF基本工作过程

(1)使用OSPF的路由器通过互相发送Hello报文建立邻居关系

(2)成功建立邻居关系后,路由器之间会发送数据库描述(DD)报文,DD报文中包含着路由器的链路状态信息摘要;

(3)路由器在收到对方发送的数据库描述报文后,会查看对方的信息摘要和自己已知的链路状态信息进行对比,如果发现本端缺少链路状态信息的话,会对对方路由器发送一个链路状态请求(LSR)报文,请求对方发送自己缺少的链路状态信息’

(4)对方在收到后,会在链路状态更新(LSU)报文中放入所请求的链路状态信息,将其发送;

(5)缺少信息的路由器在收到后则更新自己的链路状态数据库,更新完成后,发送链路状态确认(LSAck)报文。

相关推荐

  1. OSPF协议详解

    2024-06-16 22:34:01       7 阅读
  2. 每日练 - OSPF协议验证机制

    2024-06-16 22:34:01       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 22:34:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 22:34:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 22:34:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 22:34:01       20 阅读

热门阅读

  1. Web前端开发PPT:深入探索与实战应用

    2024-06-16 22:34:01       9 阅读
  2. Mysql的事务

    2024-06-16 22:34:01       6 阅读
  3. web前端筛选器:深度解析与高效应用

    2024-06-16 22:34:01       7 阅读
  4. 什么是中断?STM32F407中断处理

    2024-06-16 22:34:01       7 阅读
  5. 2024年,计算机相关专业还值得选择吗?

    2024-06-16 22:34:01       8 阅读
  6. 复合语句、数值交换、三个数的最值与排序

    2024-06-16 22:34:01       8 阅读
  7. IP路由的原理

    2024-06-16 22:34:01       9 阅读
  8. 实现一个简单的mybatis:SimpleMyBatis

    2024-06-16 22:34:01       8 阅读
  9. 程序员应该具备哪些良好的习惯

    2024-06-16 22:34:01       6 阅读
  10. 【洛谷题解】P5704 【入门1】顺序结构 字母转换

    2024-06-16 22:34:01       8 阅读
  11. Web前端中表示上标:深度解析与实战技巧

    2024-06-16 22:34:01       7 阅读
  12. 设计模式之享元模式

    2024-06-16 22:34:01       6 阅读
  13. carbondata连接数优化

    2024-06-16 22:34:01       8 阅读
  14. 【C++】计算代码中程序的时间差

    2024-06-16 22:34:01       7 阅读
  15. 10:Hello, World!的大小

    2024-06-16 22:34:01       8 阅读
  16. Shell 学习笔记 - 变量的类型 + 变量的赋值

    2024-06-16 22:34:01       5 阅读