网络通信——OSPF协议(基础篇)

embedded/2024/10/5 21:40:31/

这里基础是因为没有讲解OSPF中的具体算法过程,以及其中很多小细节。后续会更新。

目录

一.OSPF的基础信息

二.认识OSPF中的Router ID 

 三.OSPF中的三张表

四.OSPF中的度量方法(计算开销值)

五. OSPF选举DR和BDR(就是这个区域的老大和老二)

(1)首先我们需要知道在OSPF中为什么需要这个DR和BDR。

(2)如何选举DR和BDR 

(3) 区分选举Router ID和选举DR/BDR

六. OSPF邻接建立过程(五种数据包,七中状态过程)

(1)五种数据包

(2)OSPF的Hello包(这个hello包的作用)

(3)OSPF的建立过程 


一.OSPF的基础信息

OSPF的链路类型:链路状态路由协议

注意:距离矢量协议(如RIP)不同,OSPF使用链路状态算法,所有路由器都有相同的网络拓扑视图,从而计算出最短路径。可以说是RIP的超级升级版本。

OSPF是由IETF开发链路(邻居路由器的线路 )状态(ip地址,子网掩码) 路由协议

采用SPF算法(Dijkstra算法)计算到达目的地最短路径

链路(link)——路由器接口

状态(state)——描述接口及邻居路由器之间的关系

二.认识OSPF中的Router ID 

首先R1开始只知道直连的网段(10,20,30),相互交换,通过路由学习,放在链路状态数据库。当链路收敛时,每个路由器都对网络有个完整的认识。每个路由器都有一个编号,表示路由器本身,叫Router ID 

Router ID(RID):是OSPF区域内唯一标识一台路由器的IP地址

重点:Router ID 选取规制

1.手动自己用命令选定的Router ID,最优先

2.路由器上的回环地址(就是虚拟接口的ip    eg:-int  l0)

3.活动的物理接口最大的IP地址为Router ID

 三.OSPF中的三张表

1.邻居表

列出本地路由器全部的已经建立邻接关系的邻居路由器信息

2.链路状态数据库(LSDB)LSA:链路状态信息

列出网络中所有的路由器的信息,有一个完整的网络拓扑认识

3.路由表

通过SPF算法,计算出到达每个网络的最佳路径。

四.OSPF中的度量方法(计算开销值)

之前的RIP的开销值是通过条数决定,这其实是有局限性的,由于是根据条数,如果说这条链路的宽带一条是100M(条数为2),另外一条是200M(条数为3)。由于RIP根据条数决定优先路线,导致流量会走100M这条路线,但其实最优的应该是200M。这就是RIP其中的局限性。

为了解决这个问题,OSPF的度量值计算要更加科学合理。

Metric    Cost= 参考带宽(10^8b/s=100mb)/   接口带宽     (<1的Cost=1);

OSPF协议的最短路径就是基于路由器的每一个接口指定的开销(cost)置计算出来的;

一条路由的开销:是指沿着到达目的网络的路由路径上的所有出站接口的开销之和

五. OSPF选举DR和BDR(就是这个区域的老大和老二)

DR(Designated Router)指定路由器

BDR(Backup DR)备用指定路由器(当老大DR挂掉的时候,BDR就会接任DR的位置)

DRother(除了DR和BDR的其他路由器)

(1)首先我们需要知道在OSPF中为什么需要这个DR和BDR。

DR的作用:多路访问中减少邻接关系;

BDR其到备份的作用(备胎)

 上面是一个简单的网络拓扑,我前面也讲了由于OSPF协议最优路径是通过STP算法进行的计算,既然是计算,肯定是需要参数的,这里参数就是通过数据包进行传递,如果说没有DR和BDR,想要让这个区域的路由器知道整个的网络拓扑,意味着,一个路由器,会将自己的路由信息发送给除它外其他的路由器,这样意味着整个网络中会充斥这个数据包,影响网络效率。

为了解决这个问题,就在这个区域选举DR和BDR这两个话事人,DRother们只需要于DR和BDR说就行,再通过DR和BDR汇众之后,同一发给DRother们,这样大大减少了网络中的数据包。

(2)如何选举DR和BDR 

通过组播发送Hello包 

1.具有最高OSPF优先级(路由器的接口优先级(越大越优先)(默认情况下是1(范围0~255)))的路由器会选为DR

2.若最高OSPF优先级相同,那具有最高Router ID的路由器选为  DR

组播地址

224.0.0.5    DRother和DR,BDR之间通信(员工与管理员一起的群)

224.0.0.6    DR和BDR通信(管理员们的群)

(3) 区分选举Router ID和选举DR/BDR

Router ID:这个区域中,路由器的标识号ID,也就是你的身份证号。

DR和BDR:这个区域中,管理者,类似你工作的工位号。

所以说是两个不同的概念。

六. OSPF邻接建立过程(五种数据包,七中状态过程)

(1)五种数据包

Hello数据包:用于邻居或邻接之间建立和维护邻居关系,10秒周期  40(4倍关系)秒死亡 这里10秒可以更改

DBD-数据库描述包:(相当于书本目录) 每台OSPF路由器的LSDB的信息,写了每个网段。

LSR-数据链路请求:请求OSPF邻居的链路状态信息。比方说路由器A收到路由器B发送的DBD包,拆开发现没有10.0.0.0这个网段,路由器A就会发送LSR包 给路由器B。

LSU-链路状态更新包:传SA(包含一条或多条给邻居) 比方说路由器B收到LSR请求包,路由器B就会发送这个LSU包给路由器A,这个包就具体的网段内容。

LSAck-链路状态确认包:回应并确认收到对方的LSU包中的LSA。

(2)OSPF的Hello包(这个hello包的作用)

1.OSPF的邻接关系的建立和维护依赖于Hello包

2.Hello包的发送周期与OSPF类型有关

3.管理Hello包交换的规则是Hello协议

4.Hello用来确定DR,BDR路由器的选择

(3)OSPF的建立过程 

首先路由器A,和B启动,此时是第一个状态down state状态 。

接着路由器A发送Hello包给路由器B,告诉它路由器A的Router ID。此时是init state状态。

然后路由器B发送Hello包给路由器A,告诉它路由器B的Router ID。此时由init状态变成了Twoway state 状态。此时邻居关系建立(不是邻接关系)

接下来进入exstart state状态(涉及到DBD包,商量哪一个是老大,谁先发)

这里路由器A先发送一个没有具体信息的DBD包给路由器B,路由器B收到之后,返回一个DBD给路由器A,意思就是说我的优先级比你大,我先发,所以后面发送具体的DBD包由路由器B先发送。

紧接着来到exchange state 状态

这里有时交换详细的DBD包,只不过由优先级高的先发,比如这里路由器B先发,都收集到对方的链路数据状态后。

进入到loading state状态

比如说路由A发现这段链路信息没有,于是就发送LSR包给路由器B,请求此路由信息,路由器B接收到这条信息之后,发送LSU返还给路由器A,最后路由器A接收到后,返还Lsack包过去表示说我接收了。

最后进入Full state 状态

邻接建立成功,链路收敛,进行SPF算法,计算最优的路由。


http://www.ppmy.cn/embedded/123552.html

相关文章

scrapy快速上手

安装 除了scrapy本身还要安装两个库 pip install scrapy pip install pywin32 pip install wheel 创建项目 在要创建项目的地方打开powershell scrapy startproject 项目名 我们得到这样的项目结构&#xff0c;功能如下 scrapy.cfg 项目的主配置信息 …

温度转换-C语言

1.问题&#xff1a; 输入一个华氏温度&#xff0c;要求输出摄氏温度。公式为 c5(F-32)/9&#xff0c;取位2小数。 2.解答&#xff1a; scanf("%lf",&f);或者scanf("%f",&f);如果你前面定义的f是用double类型的话&#xff0c;就应该用%lf格式&…

MeterSphere压测配置说明

在MeterSphere中&#xff0c;执行性能测试时的配置参数对测试结果有重要影响。以下是对MeterSphere压测配置中几个关键参数的解释&#xff1a; 执行方式&#xff1a;决定了测试的执行模式&#xff0c;例如可以按照持续时间或迭代次数来执行测试。 按持续时间&#xff1a;在这种…

cloud-(Nacos)--注册中心原理-服务注册-服务发现

并且通过(RestTemplate)Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题 在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念。注册中心、服务提供者、服务消费者三者间关系如下: 流程如下: 服务启动…

CSS 实现楼梯与小球动画

CSS 实现楼梯与小球动画 效果展示 CSS 知识点 CSS动画使用transform属性使用 页面整体布局 <div class"window"><div class"stair"><span style"--i: 1"></span><span style"--i: 2"></span>…

PostgreSQL常用数值处理函数简介

PostgreSQL 提供了许多用于数值处理的函数&#xff0c;涵盖数学运算、取整、取余、随机数生成等操作。以下是一些常用的数值处理函数及其使用示例&#xff1a; 1. ABS() - 取绝对值 返回数字的绝对值。 SELECT ABS(-10); -- 返回 10 SELECT ABS(3.5); -- 返回 3.52. CEIL(…

【unity进阶知识6】Resources的使用,如何封装一个Resources资源管理器

文章目录 一、Unity资源加载的几种方式1、Inspector窗口拖拽2、Resources3、AssetBundle4、Addressables&#xff08;可寻址资源系统&#xff09;5、AssetDatabase 二、准备三、同步加载Resources资源1、Resources.Load同步加载单个资源1.1、基本加载1.2、加载指定类型的资源1.…

(9)MATLAB瑞利衰落信道仿真2

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、瑞利衰落信道二、瑞利衰落信道建模三、仿真结果二、高斯随机变量和瑞利随机变量后续 前言 本文首先给出瑞利衰落信道模型&#xff0c;并根据瑞利衰落变量估…