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

学习笔记——动态路由协议——OSPF(OSPF基本术语)

OSPF基本术语

1、链路状态(LS)链路状态通告(LSA)

链路(LINK):路由器上的一个接口。 状态(State):描述接口以及其与邻居路由器之间的关系。

(1)链路状态(LS)

OSPF是一种链路状态协议,所谓的链路状态,其实就是路由器的接口状态。有关各条链路的状态的信息,用来描述路由器接口以及与邻居路由器的关系

在OSPF中路由器的某一接口的链路状态包含了如下信息:

① 该接口的链路的类型、IP地址及掩码

② 该接口的带宽(开销)

③ 该接口所连接的邻居

OSPF核心思想是每台路由器都将自己的各个接口的接口状态(即链路状态)共享给其他路由器

路由器接口状态

该接口的IP地址及掩码

该接口所属区域的Area-ID

该接口所属路由器的Router-ID

该接口的接口类型(也就是该接口的网络类型,如P2P,广播型)

该接口的接口开销(通常以接口带宽来定义接口开销,带宽越大,开销越小)

该接口所属的路由器的Router Priority(这个参数是用来选举DR与BDR的)

该接口所在二层网络中的DR、BDR

该接口的Hello Dead Interval(接口发送Hello报文的间隔时间)

该接口的Router Dead Interval(实效时间)

该接口所有邻居路由器

该接口认证类型

该接口秘钥等等

(2)链路状态通告(LSA)

LSA(Link State Advertisement)是路由器之间链路状态信息的载体。LSA用来描述路由器和链路的状态。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的

LSA(链路状态通告)包含:链路上的网络类型、接口IP地址及子网掩码、链路上所连接的邻居以及链路开销。

链路状态通告同步前提条件:相同区域中,如果相同区域中设备数量过多,导致设备负担加大,可以不同的区域进行区分,从而减少不同区域中LSDB的大小,优化设备的性能。

2、最短路径算法(SPF)

SPF算法是OSPF路由协议的基础。SPF算法也称为Dijkstra算法。OSPF路由器利用SPF独立地计算出到达目标网络的最佳路由;

3路由器ID(Router-ID)

(1)概念

路由器ID(Router-ID RID,路由器标识符)OSPF每个路由器都有一个唯一的路由器ID,用于标识自己路由器ID可以是一个IPv4地址通常是路由器的一个接口IP地址。如果没有明确配置路由器ID,OSPF会根据一组规则自动选择一个

例如,假设我们有三个路由器,它们的接口IP地址分别是192.168.1.1、192.168.1.2和192.168.1.3。在这种情况下,路由器ID可以是其中任意一个IP地址。

注意:设备缺省会用使用最大IP地址的环回口地址为RID(Router ID),如果没有环回口启用最大IP地址物理口作为Router ID。

注意1:第一个UP的接口,该接口的地址成为Router-ID,如果同时UP,优选IP地址最大的,形成全局的RID。

注意2:在一个OSPF网络里面,每台路由器的Router ID都必须是独一无二没有Router-ID是无法工作的。

作用: 1.在网络中标识自己 2.虚连接会用router-id。

(2)Router-ID的选举规则

配置协议时选择人为指定的方式,默认是自动生成,人为配置的优于自动产生的。

1.手动配置OSPF路由器的Router ID:1.1.1.1 手动指定最优先。(首选)

2.如果没有手动配置Router ID, 那么将使用全局Router ID作为,OSPF的Router ID。

设备第一个配置的IP地址为全局Router ID。只有当前被选举为Router ID的接口地址发生了变化,或者说接口地址被删除,全局Router ID才会改变。

如果重启设备后,最先UP的接口地址作为全局的Router ID

如果全局RouterID发生了变化,OSPF的RouterID不会变化,再重启了OSPF的进程后,才会改变。

3.若有loopback则选最大的loopbackIP地址

若无则选活跃的物理接口中IP地址最大的作为Router ID(Router-ID不具有抢占性)(物理接口必须是活动状态)

(3)全局RouterID和OSPF协议的RouterID

容易混淆的概念:全局Router ID和OSPF协议的Router ID

如果在OSPF协议里面没有手工配置Router ID,那么就会选择使用全局的Router ID作为OSPF的Router ID。

1)全局Router ID

默认华为的路由器启动后,会自动生成一个全局的Router-id。

全局的router-id默认使用的是设备上配置的第一个IP地址。

通过display router id可以查看设备的全局router-id:

2)OSPF的router-id

默认情况下,使用ospf 1创建的OSPF默认使用的router-id为全局router-id。

当然手动指定ospf的router-id也是可以的:ospf 1 router-id 1.1.1.1

同时也是建议使用手动指定的方式配置OSPF的router-id。

全局的Router IDOSPF手工配置的Router ID是不同的概念,也可以是不同的数值。

第一种情况:我们在OSPF的协议配置的时候,不手动配置Router ID。(如下左图)

1、首先我们并没有配置全局的Router ID,现在是0.0.0.0,表示的是现在没有Router ID。

2、开启OSPF的一个进程,没有配置Router ID,我们查看ospf bri,现在的Router ID是没有的。

3、随便配置一个接口的IP地址,这里配置的是环回口loo0的ip地址,然后我们再次查看OSPF的进程配置,Router ID使用了全局的Router ID

第二种情况:(如上右图)

我们不配置全局的Router ID,在开始ospf进程的时候手工配置一个Router ID,之后我们再配置一个全局的Router ID。然后重启ospf进程,看下Router ID是否会发生改变。

我们得出结论:手工配置的ospf-router-id并不会改变。

注意1:RouterID是在OSPF进程刚启动时开始选举,如果有必要更改RouterID,则需要重启OSPF进程。

注意2:由于接口的IP地址变动,可能引发OSPF Router ID的变动,进而对网络产生影响,建议给OSPF手动指定固定的Router ID。

注意4:Router ID并不一定是路由器接口的IP地址。

(4)手动配置Router-ID

手工配置的Router ID命令后面的 P地址可以随意不需要必须是存在的地址

Router ID一旦定下来以后,即使重新修改了接口地址也不会使其变更,必须通过clear ip ospf process的方式或者reload的方式来改变。

配置格式:Router-ID以IP地址的格式(点分十进制)来定义的,和本设备的IP地址没有关系,只是一个名字。

通常的做法是将Router-ID配置为与该设备某个接口(通常为Loopback接口)IP地址一致。

手工指定命令:

(1)全局下指定 

[AR1] router id  1.1.1.1   //指定OSPF进程中的router-id。如果没有手工指定router-id,该路由器中所有的动态路由协议都使用该地址作为协议的router-id

(2)进程下指定 

[AR1]  ospf  10  router-id  1.1.1.1  //指定OSPF进程中的router-id

注意:如果重新配置了Router ID,不会立刻生效 ,可以重置进程 (重启设备 )

    <AR1>  reset ospf process     //重置ospf进程

<R3>  dis ospf  peer  brief  //查看邻居表

特点:一经确定,除非设备重置或者OSPF协议重置,否则不会改变。

4度量值Cost

OSPF使用Cost(开销)作为路由的度量值。OSPF默认情况以太网链路开销值为1

在每一个激活了OSPF的接口上,都会维护一个接口COST,接口COST=100M/接口带宽,其中100M为OSPF的参考带宽。

    一条路由的COST由该路由从来路由的起源一路过来的所有入接口cost值的总和。

 P2P网络带宽越大开销越小越优先。

以太网链路开销:100/1000M= 0.1约等于1 真机串行链路开销:100/1.544=64

ensp串行链路开销:100/2.048 =48

(2)度量值修改

在规划流量路径时,推荐将汇聚层直连链路Cost值>接入所有链路Cost值之和,这样可以保证从接入层访问R1或R2时,流量可通过接入层路由器直达R1或R2。

以(上图)为例。R1和R2位于企业网中的汇聚层,R1和R2的直连链路属于区域0,R1有一个直连网段10.0.1.1/32通过在区域0。

缺省情况下R4到达10.0.1.1/32的路由存在两个下一跳修改Cost之后,R4到达10.0.1.1的路由仅存在一个下一跳

两种方式:

1、接口修改开销                ospf cost 50                     //优先选举接口

2、根据参考带宽修改开销        bandwidth-reference 10000

[RTC] ospf

[RTC-ospf-1]bandwidth-reference 500  //修改开销计算的参考值,默认为100M。修改最好在整个OSPF网络中统一修改

Info:OSPF i Reference bandwidth is changed

Please ensure reference bandidth is consistent across all routers

[RTC-ospf-1]quit

[RTB]interface Ethernet 0/0

[RTB-Etherneto/0]ospf cost 5  //修改开销,范围1~65532

[RTB-Etherneto/0]quit

(3)度量值计算的方向

到一个目标网络的度量值  =  从源到目标的所有出站接口的Cost值累加(数据方向)

                            从目标到源沿途所有的入站接口的Cost值累计(路由方向)

如(上右图):

按路由方向:

  路由器A保存了1.1.1.0/24网段的路由,B从A学习该条路由时,从路由的入接口累计cost值;

B学习A的路由的入接口是B左边的接口,B左接口的cost是64,cost=原来的cost+64=1+64=65;

同理,C学习A的路由时,cost在前面的基础上,加上C路由方向入接口的cost;cost=65+1=66;

按数据方向:

  C要向1.1.1.0/24发送数据,数据方向向左;

  需要经过三个路由器,数据的出接口为路由器左边的接口,cost = 1 + 64 + 1 = 66;

(4)计算cost的实例

Router C上路由表存放的192.168.100.0的路由,COST是多少?

从C到192.168.100.0,有两条路:C-A和C-B-A;C向A学习路由,看得是路由方向的入接口;

   C-A: ->1 + 64 =65 C-B-A: ->1 + 64 +64 = 129   选cost小的那条路由,因此cost = 65

5network 宣告

如何将接口"放"到OSPF中,宣告方式:

(1)区域下宣告 

宣告(Network)格式: 接口信息 及 反掩码信息

反掩码:255.255.255.255 - 255.255.255.0 = 0.0.0.255       //接口所属网络的反掩码

192.168.1.1 某一个接口 /32=255.255.255.255

255.255.255.255--255.255.255.255=0.0.0.0

Network 0.0.0.0 代表将本设备的所有接口都宣告进入OSPF中 

命令: Network 192.168.1.1 0.0.0.0

192.168.1.1/24 =>255.255.255.0[正掩码] ==>192.168.1.0

(2)接口下宣告 

命令:进入接口下     ospf enable  area 0 

前题:请首先保证全局的OSPF协议,建立了该进程,以及创建了该区域0。


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】

相关文章:

学习笔记——动态路由协议——OSPF(OSPF基本术语)

OSPF基本术语 1、链路状态(LS)与链路状态通告(LSA) 链路(LINK)&#xff1a;路由器上的一个接口。 状态(State)&#xff1a;描述接口以及其与邻居路由器之间的关系。 (1)链路状态(LS) OSPF是一种链路状态协议&#xff0c;所谓的链路状态&#xff0c;其实就是路由器的接口状态…...

子集和问题(回溯法)

目录 ​​​​ 前言 一、算法思路 二、分析过程 三、代码实现 伪代码&#xff1a; C&#xff1a; 总结 前言 【问题描述】考虑定义如下的PARTITION问题中的一个变型。给定一个n个整数的集合X{x1,x2,…,xn}和整数y&#xff0c;找出和等于y的X的子集Y。 一、算法思路 基本思想&am…...

【NumPy】全面解析arange函数:高效创建数值范围数组

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…...

[ C++ ] 深入理解模板( 初 阶 )

函数模板 函数模板格式 template <typename T1, typename T2,......,typename Tn> 返回值类型 函数名(参数列表){} 注意&#xff1a; typename是用来定义模板参数关键字&#xff0c;也可以使用class(切记&#xff1a;不能使用struct代替class) 函数模板的实例化 模板参数…...

UI自动化测试最佳设计模式POM

当使用Selenium进行UI自动化测试时&#xff0c;Page Object Model&#xff08;POM&#xff09;是一种最佳实践的设计模式。POM的核心思想是通过将页面封装成对象&#xff0c;使得测试代码更加清晰、可维护和可重用。 POM的主要组成部分包括页面对象类、元素定位方式和操作方法…...

朋友圈定时发送设置

人日常中不可缺少的一件事&#xff0c;同时也是企业用来触达客户的重要渠道&#xff0c;下面一起来了解下微信朋友圈怎么定时发送呢&#xff1f;...

Spark SQL 中DataFrame DSL的使用

在上一篇文章中已经大致说明了DataFrame APi,下面我们具体介绍DataFrame DSL的使用。DataFrame DSL是一种命令式编写Spark SQL的方式&#xff0c;使用的是一种类sql的风格语法。 文章链接&#xff1a; 一、单词统计案例引入 import org.apache.spark.sql.{DataFrame, SaveMod…...

qt 布局学习笔记

目录 qt下载地址&#xff1a; widget 宽高 管理信息列表源码 c版&#xff1a; pro文件&#xff1a; qt 设置水平布局&#xff0c;里面有两个按钮&#xff0c;每个按钮就变的很宽&#xff0c;怎么设置按钮的精确位置 设置固定大小&#xff1a; 使用弹性空间&#xff08;…...

设计模式复习

一、模式所采用的关系&#xff08;e.g.继承…&#xff09; UML图例 二、各模式的特点、优缺点 1.创建型&#xff08;5种创建型口诀: 抽象工厂 按照 工厂方法&#xff0c;建造 单例 原型&#xff09; 将对象的使用和创建分离&#xff0c;使用对象时无需知道对象的创建细节&a…...

前后端开发入门全攻略:零基础学起

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、前后端开发概览 二、后端开发基础&#xff1a;Flask框架入门 代码案例&#xff1a;Hel…...

Android Studio无法改变Button背景颜色解决办法

大家好&#xff0c;我是咕噜铁蛋&#xff01;今天我来和大家探讨一个在Android开发中常见但可能让初学者感到困惑的问题——如何在Android Studio中改变Button的背景颜色。这个问题看似简单&#xff0c;但实际操作中可能会遇到一些意想不到的挑战。接下来&#xff0c;我将从多个…...

元宇宙三维互动展厅让体验者进入一个充满奇幻与创意的数字世界

元宇宙数字产品展厅搭建编辑器凭借强大的三维可视化互动功能&#xff0c;为用户带来前所未有的沉浸式数字展览体验。 在元宇宙数字产品展厅搭建编辑器中&#xff0c;用户可以轻松打造逼真的三维展览环境&#xff0c;通过VR虚拟现实技术&#xff0c;仿佛置身于一个充满奇幻与创意…...

java高级——Collection集合之List探索(包含ArrayList、LinkedList、Vector底层实现及区别,非常详细哦)

java高级——Collection集合之List探索 前情提要文章介绍提前了解的知识点1. 数组2. 单向链表3. 双向链表4. 为什么单向链表使用的较多5. 线程安全和线程不安全的概念 ArrayList介绍1. 继承结构解析1.1 三个标志性接口1.2 AbstractList和AbstractCollection 2. ArrayList底层代…...

JAVA-->方法的使用详解

JAVA–>方法的使用详解 1.方法的概念及使用 1.1 什么是方法 : 方法就是一个代码片段. 类似于 C 语言中的 “函数”。 1.2 方法定义 / 方法定义 修饰符 返回值类型 方法名称([参数类型 形参 ...]){方法体代码;[return 返回值]; }判断是否为闰年 public class Method{ //…...

基于 vLLM 搭建 DeepSeek-V2 Chat 服务

直奔主题。 安装vLLM 官方实现的代码还没有 merge 到 vLLM 主分支&#xff0c;所以直接 git clone DeepSeek 的分支。 git clone https://github.com/zwd003/vllm.git cd vllm pip install -e .源码安装大概耗时 10 分钟。 OpenAI 接口规范启动 官方 Github 放的是单条推理…...

Kafka 安装教程和基本操作

一、简介 Kafka 是最初由 Linkedin 公司开发&#xff0c;是一个分布式、分区的、多副本的、多订阅者&#xff0c;基于 zookeeper 协调的分布式日志系统&#xff08;也可以当做 MQ 系统&#xff09;&#xff0c;常见可以用于 web/nginx 日志、访问日志&#xff0c;消息服务等等…...

Java 五种内部类演示及底层原理详解

内部类 什么是内部类 在A类的内部定义B类&#xff0c;B类就被称为内部类 发动机类单独存在没有意义 发动机为独立个体 可以在外部其他类里创建内部类的对象去调用方法 类的五大成员 属性 方法 构造方法 代码块 内部类 内部类的访问特点 内部类可以直接访问外部类的成员&a…...

【UnityShader入门精要学习笔记】第十五章 使用噪声

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 使用噪声上…...

C++ ─── string的完整模拟实现

本博客实现了string的常见接口实现 下面是用到的一些函数&#xff0c;供大家回顾复习 string.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include<iostream> #include<assert.h> using namespace std;namespace bit {class string{public:typedef char*…...

安卓中的图片压缩

安卓中如何进行图片压缩&#xff1f; 在安卓中进行图片压缩通常有以下几种方法&#xff1a; 质量压缩: 通过降低图片的质量来减小文件大小。这可以通过Bitmap的compress()方法实现&#xff0c;其中可以设置压缩质量&#xff08;0-100&#xff09;。 ByteArrayOutputStream baos…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...