OSPF协议RIP协议+OSPF实验(eNSP)

news2024/10/6 10:35:11

本篇博客主要讲解单区域的ospf,多区域的仅作了解。

目录

一、OSPF路由协议概述

1.内部网关协议和外部网关协议

二、OSPF的应用环境

1.从以下几方面考虑OSPF的使用

2.OSPF的特点

三、OSPF重要基本概念

3.1,辨析邻居和邻接关系以及七种邻居状态

3.2,DR和BDR的选举

3.3,OSPF报文格式

三,OSPF工作流程

3.1,OSPF协议的工作过程

四,OSPF实验

4.1,实验要求:

4.2,第一部分

4.3,第二部分 

补充:为什么主从关系只在DR和BDR中有效?

​编辑

最后


一、OSPF路由协议概述

1.内部网关协议和外部网关协议

  • 自治系统(AS)
  • 内部网关协议(IGP) :rip(老掉牙,现在基本不用)、ospf、is-is等
  • 外部网关协议(EGP):bgp等

AS(自治系统): 网络系统 = 网络架构,统一的管理者 构建的网络的系统 相同的IGP协议 策略相对比较单一。
公有AS:一般如果该单位的网络规模比较大或者将来会发展成较大规模的网络,而且有多个出口,建议建立成一个自治系统,这样就需要AS号码用来标识这个自治系统,公有AS号是不可重复的。
私有AS:不需要申请的 ,是私人的。

内部网关协议:作用于一个AS之内的协议,比如接下来我们会讲到的OSPF。

外部网关协议:作用于两个AS之间的协议。如下图:

二、OSPF的应用环境

1.从以下几方面考虑OSPF的使用

  1. 网络规模
  2. 网络拓扑
  3. 其他特殊要求
  4. 路由器自身要求

2.OSPF的特点

  1. 可适应大规模网络
  2. 路由变化收敛速度快
  3. 无路由环
  4. 支持变长子网掩码VLSM
  5. 支持区域划分
  6. 支持以组播地址发送协议报

三、OSPF重要基本概念

1,OSPF区域:为了适应大型的网络,OSPF在AS内划分多个区域
每个OSPF路由器只维护所在区域的完整链路状态信息

2,区域ID:区域ID可以表示成一个十进制的数字
也可以表示成一个IP如:1.1.1.1,0.0.0.0
3,骨干区域Area 0(区域0是不可或缺的,其他的区域都可以没有):
负责区域间路由信息传播
4,非骨干区域:(仅作了解)
非晋干区域相互通信必须通过骨干区域
– 标准区域
– 末梢区域stub
– 完全末梢区域total stub
– 非纯末悄区域nssa

5,OSPF的process_ID:进程号 本设备标识OSPF进程的,进程号只在本地有意义,在路由器之间是没有意义的,比如说:R1路由器和R2路由器一个使用的是process_ID 10,一个使用的是process_ID 20,但是只要他们建立了邻接关系,他们还是会交换路由信息来完善自身的LASDB,但是在同一个设备的不同进程之间,他们的LSDB是不同的。

6,OSPF的router_ID : 路由器ID 设备的身份证 未来产生LSA信息会与Router-id关联。配置格式=IP格式-点分十进制//和本设备的IP地址没有关系。

router_ID两种生成方式=人为配置的优于自动产生的//配置协议时选择人为指定的方式。

  1. 选取路由器loopback接口上数值最高的IP地址
  2. 如果没有loopback接口,就选第一个UP的接口,该接口的地址成为Router-id。
    如果同时UP,优选IP地址最大的,形成全局的RID。
  3. 也可以使用router-id命令指定Router ID(人为指定)

7,LSA:link-state-advertise:链路状态通告,通俗点来讲就是本地的详细路由信息。

8,DBD:简化的路由信息,因为如果发完整的路由信息的话,链路负担较大,所以DBD只是用来告诉对方我身上有什么网段,看对方是否需要。

9,LSDB:database:链路状态数据库 //存LSA的地点 //存路由的路由表。

10,其它类型的包:

链路状态请求包(LSR):在路由器收到包含新信息的DBD后发送,用于请求更详细的信息

链路状态更新包(LsU):收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA

链路状态确认包(LSAck):确认已经收到DBD/LSU,每个LSA需要被分别确认

3.1,辨析邻居和邻接关系以及七种邻居状态

1,OSPF启动的第一个阶段是使用Hello报文建立邻居的过程,注意建立这三种状态只使用到了hello包。

其实,这张图是不对的(但是我找不到其他的图了),那么他不对在哪个地方呢?

首先,从单方面来讲,在R1收到了R2的第一个hello包之后,就会将对方R2由down置为init状态,然后R2也会将我置为init状态。、

之后,R1将R2放在邻居表里,发送第二个hello包,R2看见R1发来的hello包里面active neighbor是自己,所以就把R1置为2-way状态,同理R1对R2也是如此。

2,OSPF启动的第二个阶段是建立完全邻接关系 

补充: 

1,这七种状态是本路由器用来标识对方路由器的状态,而不是我自己的状态。

2,这里在建立完全邻接关系的时候涉及到了,一个主从关系的选举,但是其实主从关系其实只是为了解决双方谁先发DBD包的问题在后面我们会知道,主从关系只在DR和BDR之间有效。

3,Init和2-way最大的区别:
init:收到了对方的hello报文,但是没有在active-router看到自己的RID
2-way:收到了对方的hello报文,但是在active-router看到自己的RID,如下就是2-way的报文,我们可以看到,他发给对方的第二hello包中将对方放在了邻居表里。

3.2,DR和BDR的选举

我们带着问题来看。

3.2.1,首先,我们为什么要选举DR和BDR,他们可以解决什么问题呢?

先,假设有以下四台路由器在同一广播域下,他们都运行了OSPF,那么他们要如何拿到对方的路由信息呢?按照经验,要想得到对方的路由信息,那么就要建立完整的邻接关系,那么以下四台路由器两两之间都要建立邻接关系,而建立邻接关系就要发送五组报文,所以以下四台路由器一共要建立6种邻接关系,发30个包。假如同一个广播域下的路由器越来越多,建立的邻接关系就越来越多,发送的建立邻接关系的报文也越多,对链路的负载也越大,按照公式:n(n-1)/2,假如有五台路由器,就要建立10种邻接关系。所以在一个广播域下,要选举出一个DR和一个BDR,同步同一广播域下的所有路由器的路由信息,也就是说,只有DR和BDR要和同一广播域下的所有路由器建立邻接关系,而DR other(就是非DR和BDR路由器)也从DR那里拿到了路由信息。这样,DR other之间只需要发hello包即可保持2-way,DR other和DR,BDR之间才需要发5种包,因此减小了链路的浪费。

3.2.2,DR和BDR是如何选举的呢?

自动选举DR和BDR:网段上Router lID最大的路由器将被选举为DR,第二大的将被选举为BDR

手动选举DR和BDR:

  • 接口的优先级范围是0~255,数值越大,优先级越高,默认为1
  • 如果优先级相同,则需要比较Router ID
  • 如果路由器的优先级被设置为0,它将不参与DR和DBR的选举

选举时间:wait=40s 40s之内选举出一个DR/BDR ,接口运行OSPF开始 就开始进行DR/BDR角色的选举。

选举DR和BDR在2-WAY之后,exstart之前。
DR=指定路由器="大哥"
BDR=备份指定路由器="二哥" 为了保证DR的稳定,保证DR故障后网络不会出现过长的中断时间,此时会提前选举BDR。
DRother=非指定/备份指定路由器

选举特点:当网络中存在DR,但是不存在BDR时,此时会从网络中再选举出新的BDR,以此类推。DR和BDR不允许被抢占,即设备已经选举出DR和BDR的情况下,此时即便有新的设备加入,
为了保证稳定性,角色不会重新变化。
DR/BDR会与所有人建立FULL的邻接关系。
DRother之间只会建立2-WAY邻居关系。

区别及作用:
DR和BDR选举发生在2-WAY状态,作用:保证一个广播域中减少无用的泛洪的OSPF报文的流量。
主从关系选举发生在exstart状态,作用:保证数据库同步时的可靠及有序。

 具体选举流程如下(先当小弟再做大哥

3.3,OSPF报文格式

通用头部:

 hello包:

三,OSPF工作流程

3.1,OSPF协议的工作过程

①每台路由器学习激活的直接相连的网络,

②每台路由器和直接相连的路由器互交,发送Hello报文, 建立邻居关系。

③每台路由器构建包含直接相连的链路状态的LSA (链路状态通告),链路状态通告(LSA)中记录

了所有相关的路由器,包括邻路由器的标识、链路类型、带宽等。

④每台路由器泛洪链路状态通告(LSA) 给所有的邻路由器,并且自己也在本地储存邻路由发过来的LSA,然后再将收到的LSA泛洪给自己的所有邻居,直到在同区域中的所有路由器收到了所有的LSA,每台路由器在本地数据库中保存所有收到的LSA副本,这个数据库被称作“链路状动数据库”(LSDB)。

⑤每台路由器基于本地的“链路状态数据库(LSDB)“执行“最短路径优先(SPF) “算法,并以本路由器为根,生成一个SPF树,基于这个SPF树计算去往每个网络的最短路径,也就得到了最终的路由表。

四,OSPF实验

整体的网络拓扑图如下:

4.1,实验要求:

1,要求如下AR2要作为我们这个区域中的DR,而AR4作为我们这个区域中的BDR

2,左边的路由器想要访问R7,发过去的包走下面,但是从R7发回的包走上面。

4.2,第一部分

我们首先给我们的192.168.1.0/24网段用上我们的ospf路由协议

AR2配置如下:

1,首先为AR2设置名字R2(个人习惯)

2,为接口设置ip地址

3,设置ospf进程为100

4,指定router-id,现实生活中一般是要指定的,但是不指定的话在我们实验中问题也不大。

5,设置路由器所属区域

6,向外通告网段

之后我们来看一下我们的LSDB,可以看到现在R2的LSDB还没有任何东西,因为我们现在只有R2在区域0中。

但是,现在这个区域的DR已经确定,也就是R2,具体原因不做解释。

我们现在在网段中随意抓个包,看看,

可以看到,R2一直在往组播地址发送Holle报文,在hello报文中我们可以看到R2已经成为DR,BDR是0.0.0.0意味着还没有BDR。

之后我们在开启R4,让他成为BDR。

对R4做如下配置:

抓包后,我们看到,R2和R4都在向组播地址224.0.0.5发送Hello报文,并且我们可以观察到BDR已经是R4。实验到现在,区域0里面已经有了DR和BDR,我们现在要开始配置其他路由器R1和R3,让他们也加入区域0中。

在这里我只展现R3的配置,R1的配置和R3的差不多!

R3配置如下:

最后,我们可以查看R3中的邻居状态表

4.3,第二部分 

现在,我们的左边的实验目的已经达到,我们来开始右边的实验。

R4,R5,R6,R7的配置如下:

注意:R4和R7均有一个环回口用于测试,在上图可以看到。

然后,我们在去宣告一下R4567身上的网段。这里只展现R7的。

注意:路由器身上的环回口也需要宣告。其他的路由器如法炮制即可。注意上面的所有路由器都加了同一个域0。

之后,我们在R4身上看到了R4已经从其他的邻居那里学来了路由,连下一跳都给你了

从上面的路由表中我们可以看到,去往7.7.7.7的下一跳有两条,那么我们如何来控制只走下面的这一条呢?我们就需要修改接口的cost值。

那么我们需要了解cost值是如何计算的cost=100/接口带宽,由于我们这里用的是G口,带宽是1000,所以cost是1(不满1当作1)。而且计算一条链路的cost值,需要看这个目标路由器对于源路由去的收敛方向。R7对于R4来说其中一链路的收敛方向如下,那么接口也是按R5-g0/0/1和R4-g0/0/1接口计算。那么这里我们就可以修改R5-g0/0/1接口的cost值来抹除这条R4到R7的路径。

还有为什么要修改cost值呢?这就和路由的加表原则有关了,加表原则如下:

操作如下:

R5:

然后我们再在R4上查看去往R7的路由,我们发现只有我们想要的那一条了。

然后我们来修改R6,因为,对于R7到R4的路由也有两条,并且我们只想要上面的路由,所以我们修改R6-g0/0/0,步骤同上,我就不演示了。

最后我们来验证一下,使用R4测试,我们可以看到,包确实是从下面去的。如下图:

在使用R1,看可不可以ping 7.7.7.7,可以看到,ping通了,所以试验成功。

补充:为什么主从关系只在DR和BDR中有效?

我们看192.168.1.0/24网段。 由上面的实验可知,AR2是DR,AR4是BDR.

查看AR2,可以看到是是AR4的主人。

反看AR4 ,可以看到,AR4是AR2的从属。

我们再看看DR other R1的,我们可以看到,无论是对谁,他的状态都是Master。

所以, 主从关系只在DR和BDR中有效。

最后

本篇博客对OSPF的介绍和实验就到这里了,如果本篇博客对你有帮助的话请点赞收藏支持一下,谢谢!答应我!不要白嫖号吗?哈哈哈!咱们下篇博客见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/812525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BPMNJS插件使用及汉化(Activiti绘制流程图插件)

BPMNJS插件运行最重要的就是需要安装nodejs插件,这不一定要安装和测试好。 主要是使用npm命令 1、配置BPMNJS插件绘制activiti7工作流 1.1、安装和配置nodejs 插件 1.1.1、下载nodejs 下载地址:https://nodejs.org/en 1.1.2、安装nodejs,傻瓜式安装 安装之后在安装…

【etcd】docker 启动单点 etcd

etcd: v3.5.9 etcd-browser: rustyx/etcdv3-browser:latest 本文档主要描述用 docker 部署单点的 etcd, 用 etcd-browser 来查看注册到 etcd 的 key 默认配置启动 docker run -d --name ai-etcd --networkhost --restart always \-v $PWD/etcd.conf.yml:/opt/bitn…

一文搞懂mysql(安装、基础命令、存储文件)

1、安装 除此之外,windows在安装前需要额外补加两个东西 dxwebsetup.exe、 vcredist_x64.exe 这俩随便一搜就能找到 在安装前者时要注意取消勾选bing工具栏 mysql下载链接 2、初始化 管理员身份打开cmd >> "path_to_mysql/bin/msqld.exe" --initi…

Windows11+Opencv+Clion编译源码

Windows11OpencvClion编译源码 参考:https://www.robotsfan.com/posts/69395e08.html 注意事项 编译过程中使用的软件,开源码等所有工具的安装路径一定不要有中文和空格。cmake过程会下载一些文件,如果是局域网的话可能下载不下来&#xf…

力扣 70. 爬楼梯

题目来源:https://leetcode.cn/problems/climbing-stairs/description/ C题解(来源代码随想录): 本质上是一道斐波那契数题。 动规五部曲:定义一个一维数组来记录不同楼层的状态 确定dp数组以及下标的含义。dp[i]&am…

【Java】JDBC快速入门及详解(MySQL版)

文章目录 1. JDBC概述2. JDBC快速入门2.1 下载驱动jar包2.2 数据准备2.3 创建工程2.4 编写代码 3. JDBC API详解3.1 DriverManager3.2 Connection3.2.1 获取执行SQL对象3.2.1 管理事务 3.3 Statement3.3.1 执行DML语句3.3.2 执行DDL语句 3.4 ResultSet3.4.1 ResultSet对象方法3…

统信UOS V20桌面专业版(1060)

统信UOS V20桌面专业版(1060)也是发布许久我来发一下体验感受吧。 1.如果你是首次接触统信UOS,1060版本提供了快速上手指南,可以帮助你快速了解统信UOS的基础功能和办公实用小技巧,让你快速上手,降低使用门…

Dockerfile简介

1、什么是Dockerfile 要获得镜像,可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像,那该如何做呢?答案是:Dockerfile Dockerfile其实就是一个文本文件,由一系列命令和参数构成,Docker可以读取Do…

Pytest自动化测试 - 必知必会的一些插件

这可能是B站最详细的pytest自动化测试框架教程,整整100小时,全程实战!!! ​ Pytest拥有丰富的插件架构,超过800个以上的外部插件和活跃的社区,在PyPI项目中以“ pytest- *”为标识。 本篇将列举…

python——案例二 求两个数的和

#案例二 求两个数的和 num1input(请输入第一个数字:) num2input(请输入第二个数字:) sumfloat(num1)float(num2) #计算公式 print(sum) #显示结果 输入num11、num22得到结果sum3

从Vue2到Vue3【七】——Vue2中响应式原理的实现及其缺陷

系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API(第一章)从Vue2到Vue3【二】Composition API(第二章)从Vue2到Vue3【三】Composition API(第三章)从Vue2到Vue3【四】C…

JVM入门篇-JVM的概念与学习路线

JVM入门篇-JVM的概念与学习路线 什么是 JVM 定义 Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境) 好处 一次编写,到处运行自动内存管理,垃圾回收功能数组下标越界检查多态 比较 jvm jre jdk 常…

[golang gin框架] 44.Gin商城项目-微服务实战之后台Rbac微服务之权限的增删改查微服务

上一节讲解了[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联,这里讲解权限管理Rbac微服务权限的增删改查微服务 一.实现后台权限管理Rbac之权限增删改查微服务服务端功能 1.创建Access模型 要实现权限的增删改查,就需要…

c刷题(一)

目录 1.输出100以内3的倍数 2.将3个数从大到小输出 3.打印100~200素数 方法一 方法二 4.显示printf的返回值 最大公约数 试除法 辗转相除法 九九乘法表 求十个数的最大值 1.输出100以内3的倍数 法一&#xff1a; int n 0; while (n*3 < 100){printf("%d &q…

Vue-router多级路由

目录 直接通过案例的形式来演示多级路由的用法 文件结构 Banner.vue <template><div class"col-xs-offset-2 col-xs-8"><div class"page-header"><h2>Vue Router Demo</h2></div></div> </template><…

6.2.tensorRT高级(1)-第一个完整的分类器程序

目录 前言1. CNN分类器2. 补充知识2.1 知识点2.2 智能指针封装 总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT …

《MySQL45讲》笔记—索引

索引 索引是为了提高数据查询效率&#xff0c;就像书的目录一样。如下图&#xff0c;索引和数据就是位于存储引擎中&#xff1a; 索引常见模型 哈希表 以键值对存储的数据结构。适用于只有等值查询的场景。 有序数组 在等值查询和范围查询场景中性能都特别优秀。但是有…

Flowable-服务-Rest任务

目录 定义图形标记XML内容界面操作 定义 Rest 任务不是 BPMN 2.0 规范定义的官方任务&#xff0c;在 Flowable 中&#xff0c;Rest 任务是作为一种特殊的服务 任务来实现的&#xff0c;主要调用rest服务使用。 图形标记 由于 Rest 任务不是 BPMN 2.0 规范的“官方”任务&…

记ECC例题

文章目录 题一([HGAME 2022 week4]ECC)题目描述&#xff1a;题目分析&#xff08;概念题&#xff09;&#xff1a; 题二([watevrCTF 2019]ECC-RSA)题目描述&#xff1a;题目分析&#xff08;多项式求根&#xff09;&#xff1a; 题三(ECC)题目描述&#xff1a;题目分析&#xf…

SE11数据表外键应用-SM30 表维护

前言 外键作为数据库表的一个重要属性&#xff0c;但是在SAP中却很少使用&#xff0c;此处简单说明外键在表维护中起到的作用。 为数据库表字段设置外键&#xff0c;并生成表维护后&#xff0c;默认使用外键表作为搜索帮助&#xff0c;且可以校验字段有效值&#xff1b; 设置外…