引言
上一篇我们学习了RIP:RIP基础知识与配置,可是通过学习,我们发现RIP似乎只能运用在中小型网络中,那么中大型网络应该怎么做呢?这一篇博客我们就来学习OSPF
OSPF--- 开放式最短路径优先协议
动态路由优势评价维度:选路佳,收敛快,占用资源少
RIP与OSPF比较
1.OSPF本身是链路状态型协议,所以计算出的路径不会存在环路,并且使用带宽作为选路依据,所以,OSPF在选路的角度上优于RIP;
2.OSPF的计时器时间也短于RIP,所以OSPF收敛速度会快于RIP;
3.因为OSPF协议传递的是LSA信息,所以单个数据包的资源占用远大于RIP;但因为RIP存在30S一次的周期更新,而OSPF并没有如此高频率的周期更新,并且OSPF协议存在许多针对资源占用的优化措施。所以从整体的角度看,OSPF资源占用上应该小优于RIP。
RIP存在3个版本
- RIPV1
- RIPV2 : IPV4
- RIPNG:IPV6
OSPF也存在3个版本
- OSPFV1(实验室阶段就夭折了)
- OSPFV2: IPV4
- OSPFV3 :IPV6
RIPV2和OSPFV2
相同点:
1.OSPFV2和RIPV2一样,都是无类别的路由协议,都支持VLSM和CIDR;
2.OSPFV2和RIPV2一样,都是使用组播发送数据
RIPV2:224.0.0.9
OSPFV2:224.0.0.5 & 224.0.0.6
3.OSPFV2和RIPV2都支持等开销负载均衡
不同点:
RIP协议只能适用于小型网络环境中,而OSPF协议可以应用在中大型网络环境中 —— OSPF协议可以实现结构化部署(划分区域)
OSPF的结构化部署 --- 区域划分
区域划分的主要目的 : 区域内部传递拓扑信息,区域之间传递路由信息 ——链路状态型协议的距离矢量特征
如果一个OSPF网络只存在一个区域,这个网络称为单区域OSPF网络;
如果一个OSPF网络存在多个区域,这样的网络称为多区域OSPF网络。
区域边界路由器 (ABR)
同时属于多个区域,一个接口对应一个区域,必须有一个接口在区域0中,将区域内的拓扑信息收集计算成路由信息,之后进行传递。区域之间可以存在多个ABR设备,一个ABR设备可以处于多个区域。
区域划分的要求:
- 区域之间必须存在ABR设备;
- 区域划分必须按照星型拓扑结构进行划分(星型拓扑的中间区域—骨干区域)。
为了方便区分和标识不同的区域,所以我们给每一个区域都定义一个区域ID:area id,是32位二进制构成的,有两种表示方法:
- 直接使用十进制进行表示;
- 使用点分十进制进行表示: 骨干区域的区域ID定义为区域0
OSPF的数据包
hello包:周期性的发现,建立和保活邻居关系。
- hello包的发送周期(hello时间 ):10S(以太网)/30S
- 死亡时间(dead time):4倍的hello时间(40S/120S)
DBD包: 数据库描述报文( LSDB — 链路状态数据库 ——LSA — “菜单”)
LSR包: 链路状态请求报文( 基于DBD包,请求未知的LSA信息——“点菜”)
LSU包:链路状态更新报文 (真正携带LSA的数据包—— “上菜”)
LSACK包:链路状态确认报文 (确认包)
OSPF协议具有周期更新机制,每个30MIN发送一次。
Router ID——RID (区分和标识不同的路由器 —本质由32位二进制构成)
- 格式统一
- 全网唯一
RID的生成方式:
- 手工配置
- 自动生成 (首先,设备将优先选择环回接口的IP地址作为RID,如果存在多个环回接口,则将选择所有环回接口中IP地址最大的作为RID;如果没有配置环回接口,则将使用设备的物理接口的IP地址作为RID,如果物理接口存在多个,则选择IP地址最大的作为RID)
OSPF的状态机
我们通过思科的几张图片来看看到底有几种状态机:
1.down状态:启动ospf之后,发出hello包进入下一个状态
2.init(初始化)状态 :收到对方的hello包中包含自己本地的RID,则进入到下一个状态Two-way(双向通信),标志着邻居关系的建立(条件匹配)匹配成功,则进入到下一个状态;失败则停留在邻居状态,仅使用hello包进行周期保活
T3.wo - Way(双向通信)状态 :标志着邻居关系的建立。
(条件匹配)条件匹配成功则可以进入到下一个状态;如果条件匹配失败,则将停留在邻居关系,则仅周期性的发送hello包进行保活
4.exstart(预启动)状态 :通过发送没有携带数据的DBD包来进行主从关系选举,比较RID来进行选举,RID大的为主,为主可以优先进入后面的exchange(准交换)状态
- 主从关系选举 :通过发送没有携带数据的DBD包来进行主从关系选举,比较RID来进行选举,RID大的为主,为主可以优先进入后面的状态。
- 之所以使用DBD包主要是为了和之前的邻居关系进行区分。
5.exchange(准交换)状态:交换携带数据(摘要信息)的DBD包进行LSDB数据库目录共享
6.loading(加载)状态 : 基于对端发送的DBD包,使用LSR/LSU/LSACK交换未知的LSA信息
7.FULL状态:标志着邻接关系的建立 ——主要目的是为了和之前的邻居关系进行区分,邻居只能通过hello包进行保活,而邻接之间,可以交换LSA信息。
OSPF的工作过程
启动配置完成,ospf协议向本地所有运行协议的接口以组播的形式(224.0.0.5)发送hello包;hello包中携带自己本地RID,以及本地已知的邻居的RID。之后,将收集到的邻居关系记录在一张表中 :邻居表;
邻居关系建立完成后,进行条件匹配。失败则停留在邻居关系,仅hello包进行保活。
匹配成功,则开始建立邻接关系。首先,使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包共享目录信息,之后,基于DBD包,通过LSR/LSU/LSACK获取未知的LSA信息。将所有的LSA信息保存本地的LSDB数据库: 数据库表;
最后,基于LSDB,使用SPF算法进行计算,得到未知网段的路由信息,将其加载到路由表。收敛完成后,周期性的发送hello包进行保活,每30min一次周期更新。
结构突变:
- 突然新增一个网段:触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK确认
- 突然断开一个网段:触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK确认
- 无法联系 ——dead time:40s
OSPF的基础理论我们就到这里结束了,下一篇博客:ospf(2)我会对OSPF的基础配置与综合实验进行分解,想要继续了解的小伙伴可以关注或者订阅,以便查看后续博客。
标签:数据包,DBD,RIP,状态机,区域,RID,OSPF,hello From: https://blog.csdn.net/2401_86511216/article/details/145161965