当前位置: 首页 > news >正文

OSPF在广播类型的网络拓扑中DR和BDR的选举

指定路由器(DR):

一个网段上的其他路由器都和指定路由器(DR)构成邻接关系,而不是它们互相之间构成邻接关系。

备份指定路由器(BDR):

当DR出现问题,由BDR接手DR的工作,同时会在选举出一个BDR。

其他路由器我们叫做DR Other。

BDR首先会和DR形成邻接关系;

其它的路由器(DR Other)也要和BDR形成邻接关系。

这样做是有原因的,当DR出故障以后,BDR会成为新的DR。如果DR other不和BDR形成邻接关系,网络的流量就会中断时间很长,因为建立邻居关系是要花一定时间的,在这段时间内,网络的流量是不通的!

DR other和BDR形成邻接关系,当BDR切换为DR时,只需要发送LSA,向DR other告知新的DR即可,LSDB的内容基本上不变!所以能够节省时间,让BDR真正的起到备份的作用!

DR和BDR的选举规则:

具有最高OSPF优先级的路由器会被选为DR,优先级默认为1。

如果OSPF优先级相同,则具有最高Router ID的路由器会被选为DR。

Route-id选举规则:

  1. 手工配置最优先

  2. 当设备有loopback口时,路由器选取它所有loopback接口上数值最高的IP地址

  3. 如果没有loopback接口,就在所有物理端口中选取一个数值最高的IP地址

需求:(描述实验的要求)

  1. R1 R2 R3属于OSPF 的骨干区域,R1 R2 R3位于10.1.1.0/24 网段.

  2. R2 R3 R4 位于OSPF 的40.1.1.0/24 网段.

  3. 希望R2 作为 10.1.1.0 网段的DR, R3作为BDR;R3 作为40.1.1.0 网段的DR,R2 作为BDR.

拓扑:

 

分析难点以及完成的思路

按照要求配置,首先正常配置OSPF的基础命令,保证在修改DR和 BDR之前全网互通,配置完成之后再去测试连通性,全部测试完毕之后,修改我们的DR和BDR,查看我们修改之后的DR和BDR设备是否成功达到我们的要求

配置命令

R1 配置:

R1(config)#line console 0

R1(config-line)#exec-timeout 0 0

R1(config-line)#logging synchronous

R1(config-line)#exit

R1(config)#no ip do lo

R1(config)#interface loopback 0

R1(config-if)#ip address 1.1.1.1 255.255.255.255

R1(config-if)#no shutdown

R1(config-if)#exit

R1(config)#interface f0/0

R1(config-if)#ip address 10.1.1.1 255.255.255.0

R1(config-if)#no shutdown

R1(config-if)#exit

R2配置:

R2(config)#line console 0

R2(config-line)#exec-timeout 0 0

R2(config-line)#logging synchronous

R2(config-line)#exit

R2(config)#no ip do lo

R2(config)#ho R2

R2(config)#interface loopback 0

R2(config-if)#ip address 2.2.2.2 255.255.255.255

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#interface f0/0

R2(config-if)#ip address 10.1.1.2 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#interface f0/1

R2(config-if)#ip address 40.1.1.2 255.255.255.0

R2(config-if)#no shutdown

R2(config-if)#exit

R3配置:

R3(config)#line console 0

R3(config-line)#exec-timeout 0 0

R3(config-line)#logging synchronous

R3(config-line)#exit

R3(config)#no ip do lo

R3(config)#ho R3

R3(config)#interface loopback 0

R3(config-if)#ip address 3.3.3.3 255.255.255.255

R3(config-if)#no shutdown

R3(config-if)#exit

R3(config)#interface f0/0

R3(config-if)#ip address 10.1.1.3 255.255.255.0

R3(config-if)#no shutdown

R3(config-if)#exit

R3(config)#interface f0/1

R3(config-if)#ip address 40.1.1.3 255.255.255.0

R3(config-if)#no shutdown

R3(config-if)#exit

R4配置:

R4(config)#line console 0

R4(config-line)#exec-timeout 0 0

R4(config-line)#logging synchronous

R4(config-line)#exit

R4(config)#no ip do lo

R4(config)#ho R4

R4(config)#interface loopback 0

R4(config-if)#ip address 4.4.4.4 255.255.255.255

R4(config-if)#no shutdown

R4(config-if)#exit

R4(config)#interface f0/1

R4(config-if)#ip address 40.1.1.4 255.255.255.0

R4(config-if)#no shutdown

R4(config-if)#exit

启用OSPF,默认情况下,OSPF进行DR选举时的优先级 默认为1,比较规则是 优先级越大越优先,优先级相同, router-id越大越优先。因此干预选举可以通过设置router-id和修改接口的优先级进行。在10.1.1.0 网段上,由于R1 R2 R3的优先级为默认的1 ,因此 优先级大的 R3(3.3.3.3),就成为DR,R2(2.2.2.2)成为BDR.但是要考虑,如果R1 R2率先接入网络,当DR BDR选举完成之后再接入R3的话,R3错过选举之后,就不能抢占DR BDR了。

R2 R3 R4也一样,因此正常情况下R4为DR,R3为BDR

R1配置:

R1(config)#router ospf 1

R1(config-router)#router-id 1.1.1.1 //手工指定router-id

R1(config-router)#network 1.1.1.1 0.0.0.0 area 0 --------采取反子网掩码的方式进行通告,类似于通告了一个1.1.1.1 255.255.255.255 的路由信息,采用反子网掩码,是为了区别配置IP地址是的子网掩码

R1(config-router)#network 10.1.1.0 0.0.0.255 area 0

R1(config-router)#exit

R1(config)#end

R2配置:

R2(config)#router ospf 1

R2(config-router)#router-id 2.2.2.2

R2(config-router)#network 2.2.2.2 0.0.0.0 area 0

R2(config-router)#network 10.1.1.0 0.0.0.255 area 0

R2(config-router)#network 40.1.1.0 0.0.0.255 area 0

R2(config-router)#end

R3配置:

R3(config)#router ospf 1

R3(config-router)#router-id 3.3.3.3

R3(config-router)#network 3.3.3.3 0.0.0.0 area 0

R3(config-router)#network 10.1.1.0 0.0.0.255 area 0

R3(config-router)#network 40.1.1.0 0.0.0.255 area 0

R3(config-router)#exit

R4 配置:

R4(config)#router ospf 1

R4(config-router)#router-id 4.4.4.4

R4(config-router)#network 4.4.4.4 0.0.0.0 area 0

R4(config-router)#network 40.1.1.0 0.0.0.255 area 0

R4(config-router)#end

这时,为了满足要求,让R2成为10.1.1.0 网段的DR,可以修改R2的router-id,改为22.22.22.22

,只要比R3的3.3.3.3 大就可以;为了是R3成为40.1.1.0 网段的DR,可以修改R3的f0/1

的接口优先级。

R2配置:

R2(config)#router ospf 1

R2(config-router)#ro

R2(config-router)#router-id 22.22.22.22

Reload or use "clear ip ospf process" command, for this to take effect //系统提示,要想新的router-id生效,要重启OSPF进程

R2(config-router)#end

R3 配置:

R3(config)#interface f0/1

R3(config-if)#ip ospf priority 5

R3(config-if)#end

这个时候,将R1 R2 R3 R4的OSPF进程重启,然后再观察。

R1配置:

R1#clear ip ospf process

Reset ALL OSPF processes? [no]: y //重启OSPF进程,这个要在四个路由器上同时敲下去

这时可以看到10.1.1.0网段,R2的router-id最大成为DR,R3的router-id次之,成为BDR;

40.1.1.0 网段,R3的优先级最大成为DR,R2的router-id最大,成为BDR.

按照正常配置完成之后,全网互通,在修改DR和BDR之后需要清一下OSPF的进程,让他们重新选举DR和BDR,如果不重启进程会发现DR和 BDR没有变化

当DR优先级为0时,通过这个配置,也可以控制DR、BDR的选取!如果想让某台路由器永远都是一个LAN上的DR,则可以将其它的路由器的DR优先级都配置为0。

DR、BDR是终身制,不能被抢占的,这一知识点也是比较奇怪的,我们上面说了DR/BDR是选取出来的,理论上在一个LAN上,应该是优先级最大的路由器被选取为DR的。

但在很多场景中,小伙伴看到的并不是优先级最大的路由器作为DR!因为DR/BDR的选取是不能被抢占的!

只要某台路由器在一个LAN上,已经被选取为DR,则它会一直是DR!只有等它重启或者关机了,才会重新选取,也就是说DR/BDR是终身制的!

这样做主要是为了网络的稳定,在真实网络中,稳定是压倒一切的!即使某种技术最新,某个设备性能最强,但是如果影响到稳定,就不会被优先选择!

所以想要让某个路由器永远作为DR,则只能其它路由器的优先级修改为0!

 

相关文章:

OSPF在广播类型的网络拓扑中DR和BDR的选举

指定路由器(DR): 一个网段上的其他路由器都和指定路由器(DR)构成邻接关系,而不是它们互相之间构成邻接关系。 备份指定路由器(BDR): 当DR出现问题,由BDR接…...

系统学习Linux-Mariadb高可用MHA

概念 MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中最大程度上…...

慢SQL的原因

如何排查慢SQL问题 识别慢SQL:使用数据库性能监控工具,如慢SQL日志,识别耗时较长的查询。执行计划分析:使用数据库提供的分析工具,例如EXPLAIN来查看查询的执行计划,判断是否存在全表扫描,索引…...

php正则替换文章的图片

要使用正则表达式替换文章中的图片链接,可以按照以下步骤进行操作: 1. 获取文章内容:首先,你需要获取包含图片链接的文章内容。你可以从文件中读取文章,或者从数据库中检索文章内容。 2. 使用正则表达式匹配图片链接…...

57 | TAPTAP客户端分析

TAPTAP客户端分析 一、用户群分析 首先,TapTap用户群可分为三大类: 游戏爱好者游戏发烧者游戏开发者(次要用户,有开发者后台,可以显示数据,不重点分析)注:爱好者与发烧者区别在于,前者是用空余时间来玩游戏,时间不如后者充足,且后者更执着于游戏,游戏种类更多。 …...

开源了一套基于springboot+vue+uniapp的商城,包含分类、sku、商户管理、分销、会员、适合企业或个人二次开发

RuoYi-Mall-JAVA商城-电商系统简介 开源了一套基于若依框架,SringBoot2MybatisPlusSpringSecurityjwtredisVueUniapp的前后端分离的商城系统, 包含分类、sku、商户管理、分销、会员、适合企业或个人二次开发。 前端采用Vue、Element UI(ant…...

Android进阶之多级列表

遇到一个需求需要显示多级列表,因为界面是在平板上的,所以层级是从左向右往下排的,类似于 我当时的写法是在xml布局里一个个RecyclerView往下排的 当然前提是已经规定好最大的层级我才敢如此去写界面,如果已经明确规定只有两级或…...

Stochastic: Distribution-Expectation-Inequalities

见:https://www.math.hkust.edu.hk/~makchen/MATH5411/Chap1Sec2.pdf...

Java算法_ 二叉树的最大深度(LeetCode_Hot100)

题目描述:给定一个二叉树 ,返回其最大深度。root 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 获得更多?算法思路:代码文档,算法解析的私得。 运行效果 完整代码 /*** 2 * Author: LJJ* 3 * Date: 2023/…...

行业追踪,2023-08-18

自动复盘 2023-08-18 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...

js将项目中的图片上传到服务器

项目上有时候会有奇怪的需求,比如前端有一些示例,想点击按钮就能上传图片,而这个图片是在前端的项目中的,如果不上传吧,又获取不到一些业务数据的id,但后端又不想为这块功能做特殊的处理,这时想通过前端直接上传到后端,需要file对象才可以。 这个时候我们需要将img转换…...

【C语言】指针的进阶

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.&数组名和数组名区别 3.数组指针的使用 四、数组参数与指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 六、函数指针数组 七、指向函数指针数组的指针…...

【Windows系统编程】03.远线程注入ShellCode

shellcode&#xff1a;本质上也是一段普通的代码&#xff0c;只不过特殊的编程手法&#xff0c;可以在任意环境下&#xff0c;不依赖于原有的依赖库执行。 远程线程 #include <iostream> #include <windows.h> #include <TlHelp32.h>int main(){HANDLE hPr…...

第1天----验证一个字符串是否是另一个字符串的子串

本文我们将学习如何去验证一个字符串是否是另一个字符串的子串。 一、小试牛刀&#xff1a; 题目描述 输入两个字符串&#xff0c;验证其中一个串是否为另一个串的子串。 输入格式 两行&#xff0c;每行一个字符串。 输出格式 若第一个串 s 1 是第二个串 s 2 的子串&#xff0c…...

项目实战第四十三讲:使用模版模式优雅实现财务编辑费用

项目实战第四十三讲:财务编辑费用 本文是项目实战第43讲:使用模版模式优雅实现财务编辑费用。支持查看司机填写费用信息,并且附件管理支持展示司机上传费用照片。 文章目录 项目实战第四十三讲:财务编辑费用1、项目背景2、主要技术3、项目职责4、项目实现4.1、表结构4.2、流…...

[JavaWeb]【六】web后端开发-请求响应

前言&#xff1a;请求响应 目录 一 引子 二 请求 2.1 Postman 2.1.1 安装 2.1.2 创建工作空间 2.1.3 添加接口 2.2 简单参数 2.2.1 原始方式&#xff08;不推荐&#xff09; 2.2.2 SpringBoot方式-GET(参数名与形参变量名相同) 2.2.3 SpringBoot方式-POST(参数名与形参…...

uniapp websocket机制 心跳 重连

在开发程序过程中通信功能还是比较常用到的&#xff0c;本文主要介绍的是uniapp中websocket的使用 websocket建立连接后&#xff0c;断开、心跳机制重新链接的一个过程。 关于uni.connectSocket可仔细阅读uniapp官网中的uni.connetSocket以及连接socket创建的实例SocketTask …...

labelme安装以及标注自己的目标检测数据集

目录 一、labelme安装指令 二、使用教程 三、 快捷键 一、labelme安装指令 winR之后在弹出的对话框中输入cmd按回车进入终端 conda activate 虚拟环境名称 pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple/ 二、使用教程 安装成功之后在终端输入label…...

归并排序JS

当然&#xff0c;下面是使用JavaScript编写的归并排序的示例代码。归并排序是一种分治算法&#xff0c;其基本思想是将数组分成两半进行排序&#xff0c;然后将排序后的结果合并在一起。 function mergeSort(arr) {if (arr.length < 1) {return arr;}const middle Math.fl…...

matlab 计算点云平均密度

目录 一、算法原理二、代码实现三、结果展示四、C++版计算结果本文由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 采样设备不同、设备距离场景远近不同,会使点云密度产生差异。现有的对点云密度的估算方法有基…...

c++ | uint8_t、uint16_t、unint32_t 和size_t

头文件 #include <stdint.h> // for C #include <cstdint> // for Cuint8_t、uint16_t、unint32_t 这三个分别是表示无符号整型&#xff0c;不同点是他们的长度不同&#xff0c;分别是8位机器位、16、32&#xff0c;也就是一个字节、两个字节、四个字节 注意在…...

mysql 超大 sql 文件导入过程

问题 最近遇到 2 个超大 sql 文件导入&#xff0c;好一通折腾 文档在哪里 调优参数太多&#xff0c;文档都看不过来 找到这些参数也费劲, ubuntu 在 /etc/mysql/mysql.conf.d/mysqld.cnf 中找到这个链接 ...... # # The MySQL Server configuration file. # # For explanat…...

【悬挂绝缘子的串效模型】测量每个绝缘子盘之间的电压并测量串效研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

P3957 [NOIP2017 普及组] 跳房子

题目背景 NOIP2017 普及组 T4 题目描述 跳房子&#xff0c;也叫跳飞机&#xff0c;是一种世界性的儿童游戏&#xff0c;也是中国民间传统的体育游戏之一。 跳房子的游戏规则如下&#xff1a; 在地面上确定一个起点&#xff0c;然后在起点右侧画 nn 个格子&#xff0c;这些…...

VR数字工厂多元化展现,打造数字企业工厂名片

5G时代&#xff0c;各种营销都在走数字化的路子&#xff0c;VR数字工厂用VR赋能工厂数字升级&#xff0c;将企业环境、工厂生产、产品研发、质检运输等流程&#xff0c;无死角720度的展示在客户面前&#xff0c;不仅可以提升自身企业的实力&#xff0c;还可以提高客户的信任感。…...

uniapp封装组件,选中后右上角显示对号√样式(通过css实现)

效果&#xff1a; 一、组件封装 1、在项目根目录下创建components文件夹&#xff0c;自定义组件名称&#xff0c;我定义的是xc-button 2、封装组件代码 <template><view class"handle-btn"><view :class"handleIdCode 1 ? select : unSelec…...

华为OD面试(部分)

笔试与性格测验 一面 问题和算法题都挺简单的 二面 Java内存泄漏 算法题思路不对&#xff0c;没写完只说了下思路&#xff1a;Leetcode516. Longest Palindromic Subsequence hr面&#xff08;资面&#xff09; 最后告诉我hr面挂了。其实这不是最重要的&#xff0c;因为还…...

从零做软件开发项目系列之一综论软件项目开发

1 引言 有一个三个泥瓦匠的故事。 三个泥瓦匠在砌墙&#xff0c;一个人走过来&#xff0c;问他们在干什么。   第一个泥瓦匠没好气地说&#xff0c;你没看见吗&#xff1f;我在辛苦地砌墙呢。   第二个回答&#xff0c;我们正在建一座高楼。   第三个则洋溢着喜悦说&…...

msvcp110.dll是什么意思,msvcp110.dll丢失的解决方法

装好软件或游戏之后&#xff0c;一打开就跳出各种报错信息的情况小伙伴一定见过&#xff0c;其中缺少各种msvcp110.dll文件最常见。小伙伴们一定奇怪&#xff0c;用得好好的电脑&#xff0c;怎么会缺文件呢&#xff1f;为啥其他游戏/应用就没事呢&#xff1f;其实这些“丢失”的…...

【报错】git push --set-upstream origin XXXX重名

您在尝试将分支推送到远程仓库时遇到了错误。错误信息表明&#xff0c;由于已经存在名为 refs/heads/xingfan/demo 的文件夹&#xff0c;Git 无法创建分支 refs/heads/xingfan。 要解决此问题&#xff0c;您可以尝试重命名本地分支&#xff0c;然后将其推送到远程仓库。以下是…...