带你了解动态路由协议OSPF基础

OSPF是一种基于链路状态的内部网关协议,适用于各种规模的网络,支持快速收敛、无自环路由、区域划分等功能。本文详细介绍了OSPF的特点、报文类型、LSA类型及其在网络中的应用。
导读OSPF IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的内部网关协议。目前针对 IPv4 协议使用的是OSPF Version 2。

OSPF简介

OSPF(Open Shortest Path First,开放最短路径优先)是 IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的内部网关协议。目前针对 IPv4 协议使用的是OSPF Version 2。
带你了解动态路由协议OSPF基础带你了解动态路由协议OSPF基础

OSPF的特点

OSPF 具有如下特点:
(1)适应范围广:支持各种规模的网络,最多可支持几百台路由器。
(2)快速收敛:在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
(3)无自环:由于 OSPF 根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
(4)区域划分:允许自治系统的网络被划分成区域来管理。路由器链路状态数据库的减小降低了内存的消耗和 CPU 的负担;区域间传送路由信息的减少降低了网络带宽的占用。
(5)等价路由:支持到同一目的地址的多条等价路由。
(6)路由分级:使用 4 类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
(7)支持验证:支持基于区域和接口的报文验证,以保证报文交互和路由计算的安全性。
(8)组播发送:在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。

OSPF报文类型

OSPF 协议报文直接封装为 IP 报文,协议号为 89。
OSPF 有五种类型的协议报文:
(1)Hello 报文:周期性发送,用来发现和维持 OSPF 邻居关系,以及进行 DR(DesignatedRouter,指定路由器)/BDR(Backup Designated Router,备份指定路由器)的选举。
(2)DD(Database Description,数据库描述)报文:描述了本地 LSDB(Link State DataBase,链路状态数据库)中每一条 LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。
(3)LSR(Link State Request,链路状态请求)报文:向对方请求所需的 LSA。两台路由器互相交换 DD 报文之后,得知对端的路由器有哪些 LSA 是本地的 LSDB 所缺少的,这时需要发送LSR 报文向对方请求所需的 LSA。
(4)LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的 LSA。
(5)LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的 LSA 进行确认。

LSA类型

OSPF 中对链路状态信息的描述都是封装在 LSA 中发布出去,常用的 LSA 有以下几种类型:
(1)Router LSA(Type-1):由每个路由器产生,描述路由器的链路状态和开销,在其始发的区域内传播。
(2)Network LSA(Type-2):由 DR 产生,描述本网段所有路由器的链路状态,在其始发的区域内传播。
(3)Network Summary LSA(Type-3):由 ABR(Area Border Router,区域边界路由器)产生,描述区域内某个网段的路由,并通告给其他区域。
(4)ASBR Summary LSA(Type-4):由 ABR 产生,描述到 ASBR(Autonomous SystemBoundary Router,自治系统边界路由器)的路由,通告给相关区域。
(5)AS External LSA(Type-5):由 ASBR 产生,描述到 AS(Autonomous System,自治系统)外部的路由,通告到所有的区域(除了 Stub 区域和 NSSA 区域)。
(6)NSSA External LSA(Type-7):由 NSSA(Not-So-Stubby Area)区域内的 ASBR 产生,描述到 AS 外部的路由,仅在 NSSA 区域内传播。
(7)Opaque LSA:用于 OSPF 的扩展通用机制,目前有 Type-9、Type-10 和 Type-11 三种。其中,Type-9 LSA 仅在本地链路范围进行泛洪,用于支持 GR(Graceful Restart,平滑重启)的 Grace LSA 就是 Type-9 的一种类型;Type-10 LSA 仅在区域范围进行泛洪,用于支持MPLS TE 的 LSA 就是 Type-10 的一种类型;Type-11 LSA 可以在一个自治系统范围进行泛洪。

原文来自:https://www.linuxprobe.com/ospf-basic-knowlege.html

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 QueueForMcu 基于单片机实现的队列功能模块,主要用于8位、16位、32位非运行RTOS的单片机应用,兼容大多数单片机平台。 开源代码:https://.com/xiaoxinpro/QueueForMcu 一、特性 动态创建队列对象 动态设置队列数据缓冲区 静态指定队列元素数据长度 采用值传递的方式保存队列数据 二、快速使用 三、配置说明 目前QueueForMcu只有一个静态配置项,具体如下: 在文件 中有一个宏定义 用于指定队列元素的数据长度,默认是 ,可以根据需要更改为其他数据类型。 四、数据结构 队列的数据结构为 用于保存队列的状态,源码如下: 其中 为配置项中自定义的数据类型。 五、创建队列 1、创建队列缓存 由于我们采用值传递的方式保存队列数据,因此我们在创建队列前要手动创建一个队列缓存区,用于存放队列数据。 以上代码即创建一个大小为 的队列缓存区。 2、创建队列结构 接下来使用 创建队列结构,用于保存队列的状态: 3、初始化队列 准备好队列缓存和队列结构后调用 函数来创建队列,该函数原型如下: 参数说明: 参考代码: 六、压入队列 1、单数据压入 将数据压入队列尾部使用 函数,该函数原型如下: 参数说明: 返回值说明: 该函数会返回一个 枚举数据类型,返回值会根据队列状态返回以下几个值: 参考代码: 2、多数据压入 若需要将多个数据(数组)压入队列可以使用 函数,原理上循环调用 函数来实现的,函数原型如下: 参数说明: 当数组长度大于队列剩余长度时,数组多余的数据将被忽略。 返回值说明: 该函数将返回实际被压入到队列中的数据长度。 当队列中的剩余长度富余...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值