当前位置: 首页 > 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…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...