IP路由基础+OSPF 基础
IP路由
RIB与FIB
RIB:Routing Information Base,路由信息库 ,路由器的控制平面
FIB:Forwarding Information Base,转发信息库,路由器的数据平面
路由信息库主要是记录直连路由以及协议宣告的路由信息,转发信息库主要是记录路由转发信息,记录可以通过那条路由进行转发的路由信息。
路由表参数
路由表中有很多参数,例如nexthop为下一跳,protocol为路由协议;其中Preference用于不同路由协议间路由优先级的比较,Cost用于同一种路由协议内部不同路由的优先级的比较。
FIB表信息查看命令:display fib [ slot-id ]
slot-id:显示指定槽位号的FIB表信息。整数形式,取值范围请根据设备实际配置选取。Flag:当前标志,G、H、U、S、D、B的组合。
G(Gateway):网关路由,表示下一跳是网关。
H(Host):主机路由,表示该路由为主机路由。
U(Up):可用路由,表示该路由状态是Up。
S(Static):静态路由。
D(Dynamic):动态路由。
B(Black Hole):黑洞路由,表示下一跳是空接口。TunnelID:表示转发表项索引。该值不为0时,表示匹配该项的报文通过隧道转发(如:MPLS隧道转发)。该值为0时,表示报文不通过隧道转发。
数据转发流程

路由的三种来源
⦁ 直连路由:直连接口所在网段的路由,由设备自动生成。
⦁ 静态路由:由网络管理员手工配置的路由条目。
⦁ 动态路由:路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由。
⦁ BGP(Border Gateway Protocol,边界网关协议)是一种实现AS(Autonomous System,自 治系统)之间的路由可达,并选择最佳路由的距离矢量路由协议。
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。
路由引入
指的是路由信息从一种路由协议发布到另一种路由协议的操作
作用:
通过路由引入,可以实现路由信息在不同协议之间进行传递
执行路由引入时,还可以部署路由控制,从而实现对业务流量的灵活把控
配置(路由引入)
配置往往是在引入的路由器上进行配置,而不是引出的路由器(路由引入是具有方向性的)

路由引入的参数
路由优先级:路由器在进行路由选择时,根据不同的路由协议和配置参数,为每个路由设置一个优先级。优先级越高的路由,其路径将被优先选择作为数据包的传输路径。
路由回灌:路由回灌是一种优化技术,用于在网络中将动态学习或静态配置的路由信息重新注入到路由协议中。当网络拓扑发生变化时,路由器可以通过回灌操作更新路由表,从而适应新的网络情况。
路由度量值:路由度量值是用来衡量路由的选择优劣的指标。它可以基于各种因素进行计算,如跳数、带宽、延迟、可靠性等。路由器根据路由度量值来评估可选路由的优劣,并选择度量值最低的路由作为最佳路径。
常见路由的优先级
OSPF
DR与BDR
DR与BDR类似于选举老大,等老大不在的时候备用管事儿,其中DR为老大BDR为备用。DR和BDR的选举是为了选择一个具有较高优先级的路由器。
选举过程:
- 首先,每个OSPF路由器都会发送Hello消息来宣告自己的存在,并与相邻的路由器建立邻居关系。
- 每个路由器在Hello消息中包含自己的路由器优先级(Router Priority)值。默认情况下,路由器优先级为1。
- 当路由器收到Hello消息后,会比较对方发送的路由器优先级和自己当前的DR和BDR的优先级。
- 如果对方发送的路由器优先级大于自己当前的DR和BDR的优先级,那么当前路由器会更新自己的DR和BDR,并将对方设置为BDR。
- 如果对方发送的路由器优先级等于自己当前的DR和BDR的优先级,并且对方的路由器ID(Router ID)比自己大,则当前路由器会更新自己的DR和BDR,并将对方设置为BDR。
- 如果对方发送的路由器优先级等于自己当前的DR和BDR的优先级,并且对方的路由器ID比自己小,则当前路由器不会更新DR和BDR的角色。
不同网络类型中DR与BDR的选举
动态路由协议分类
⦁ BGP使用一种基于距离矢量算法修改后的算法,该算法被称为路径矢量(Path Vector)算法。因此在某些场合下,BGP也被称为路径矢量路由协议。
⦁ IGP(内部网关协议)在同一个自治系统内交换路由信息,IGP的主要目的是发现和计算自治域内的路由信息。
⦁ EGP(外部网关协议)主要用于AS(自治系统)之间的互联。
链路状态路由协议
基本原理:
每个路由器都会获取网络拓扑信息,并计算出到达其他路由器的最佳路径。它通过交换链路状态信息来维护网络的拓扑状态,各个路由器根据收到的信息构建一个全局的网络拓扑图,然后使用某种算法计算最短路径。
在链路状态路由协议中,每个路由器都会周期性地广播它的链路状态信息,或者通过多播方式发送给周围的邻居路由器。当一条链路发生故障或者网络拓扑发生变化时,路由器会更新自己的链路状态信息,并重新计算最佳路径。
链路状态路由协议有四个步骤:
⦁ 第一步是建立相邻路由器之间的邻居关系。
⦁ 第二步是邻居之间交互链路状态信息和同步LSDB。
⦁ 第三步是进行优选路径计算。
⦁ 第四步是根据最短路径树生成路由表项加载到路由表。
Router ID

Router ID一旦选定,之后如果要更改的话就需要重启OSPF进程。
区域

度量值
ospf三大表
邻居表
lsdb表

路由表
报文格式以及类型
OSPF Hello(Hello报文):
- 用途:邻居发现和建立邻居关系。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和邻居列表。
OSPF Database Description(DD报文):
- 用途:用于同步链路状态数据库(LSDB)。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)、参数字段(MTU、Options等)和LSA描述符(包括LSA类型、LSA序列号、LSA长度等)。
OSPF Link State Request(LSR报文):
- 用途:请求指定的LSA(Link State Advertisement)。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和请求的LSA列表。
OSPF Link State Update(LSU报文):
- 用途:传输LSA。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和LSA列表。
OSPF Link State Acknowledgement(LSAck报文):
- 用途:确认收到的LSU报文。
- 报文格式:报文头部信息(Version、Router ID、Area ID等)和确认的LSA列表。
重要字段解释
⦁ Version :对于当前所使用的OSPFv2,该字段的值为2。
⦁ Router ID:表示生成此报文的路由器的Router ID。
⦁ Area ID:表示此报文需要被通告到的区域。
⦁ Type:类型字段。
⦁ Packet length:表示整个OSPF报文的长度,单位是字节。
⦁ Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
⦁ Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。
ospf工作过程
-
邻居发现和建立邻居关系:
- 路由器启动时发送Hello报文,用于邻居发现。
- 路由器之间通过比较Hello报文中的参数建立邻居关系。
-
链路状态数据库(LSDB)同步:
- 路由器发出Database Description(DD)报文,携带自己所知道的LSA序列号列表,以与邻居交换信息。
- 路由器收到DD报文后,比较自己的LSA序列号列表,并发送Link State Request(LSR)报文请求缺失的LSA。
- 路由器根据收到的LSR报文,发送Link State Update(LSU)报文携带请求的LSA。
-
最短路径计算:
- 每个路由器收集到足够的LSA后,构建链路状态数据库(LSDB)。
- 使用Dijkstra算法基于链路状态信息计算最短路径树(Shortest Path Tree),确定到达目标网络的最短路径。
-
路由更新和转发:
- 路由器使用最短路径树计算出的路由表更新自己的路由表。
- 路由器使用已更新的路由表将数据包转发到最佳路径上的下一跳路由器。
-
监听和更新:
- 路由器周期性地发送Hello报文以保持邻居关系,并检测邻居失效。
- 当链路状态信息发生变化时,路由器会向邻居发送新的LSA,并更新链路状态数据库。
配置
调整设备接口的网络类型![]()

LSA类型
常见的OSPF LSA类型:
Type 1 LSA(Router LSA):由每个OSPF路由器生成,用于描述路由器的直连连接和邻居信息。它被分发到本地区域的所有其他路由器,帮助构建链路状态数据库(LSDB)。
Type 2 LSA(Network LSA):由DR(Designated Router)创建,用于描述多点链路的网络段。它提供了该网络上的所有路由器的信息,并分发给本地区域中的其他路由器。
Type 3 LSA(Summary LSA):由ABR(Area Border Router)在不同区域之间传播,用于汇总本地区域内的网络信息,向其他区域的路由器提供达到本地区域内部目标网络的路径信息。
Type 4 LSA(ASBR Summary LSA):由ASBR(AS Boundary Router)创建,用于向本地区域中的其他路由器提供到达外部AS(Autonomous System)的路径信息。
Type 5 LSA(External LSA):由ASBR生成,用于表示外部AS中的目标网络。它被分发到所有的区域中,并包含了到达外部目标网络的路径信息。
Type 7 LSA(NSSA External LSA):在NSSA(Not-So-Stubby Area)中使用,类似于Type 5 LSA,但用于表示从NSSA区域到外部网络的路径信息。
相关文章:
IP路由基础+OSPF 基础
IP路由 RIB与FIB RIB:Routing Information Base,路由信息库 ,路由器的控制平面 FIB:Forwarding Information Base,转发信息库,路由器的数据平面 路由信息库主要是记录直连路由以及协议宣告的路由信息&am…...
window远程连接Linux
Linux启用ssh服务 管理员权限进入root 安装 OpenSSH 服务器软件包 对于 Debian、Ubuntu 或基于这些发行版的系统,可以运行以下命令安装: sudo apt update sudo apt install openssh-server对于基于 Red Hat、CentOS 或 Fedora 的系统,可以…...
MyBatis 查询数据库之二(增、删、改、查操作)
目录 1. 配置打印 MyBatis 执行的SQL 2. 查询操作 2.1 通过用户 ID 查询用户信息、查询所有用户信息 (1) Mapper 接口 (2)UserMapper.xml 查询所有用户的具体实现 SQL (3)进行单元测试 3. 增加操作 3.1 在 mapper(interface)里面添加增加方法的声…...
unraid docker桥接模式打不开页面,主机模式正常
unraid 80x86版filebrowser,一次掉电后,重启出现权限问题,而且filebrowser的核显驱动不支持amd的VA-API 因为用不上核显驱动,解压缩功能也用不上,官方版本的filebrowser还小巧一些,18m左右 安装的时候总是…...
第七章:进程间通信(IPC)——构成进程间通信的信道方案
系列文章目录 文章目录 系列文章目录前言进程间通信介绍进程间通信目的进程间通信发展进程间通信分类进程通信的原理 管道什么是管道pipe管道通信特点简单设计 命名管道什么是命名管道mkfifostrcmp/strncasecmpunlinkgetch简单设计 共享内存什么是共享内存shmget/ftokipcsshmct…...
部分常用CSS样式
目录 1.字体样式 2.文本样式 3.鼠标样式 cursor 4.背景样式 5.列表样式 6.CSS伪类 7.盒子模型 1.字体样式 font-family 字体类型:隶书” “楷体” font-size 字体大小:像素px font-weight 字体粗细:bold 定义粗体字…...
思科单臂路由、lacp链路聚合、NAT实验
实验拓扑图: 实验目的: 如图所示配置相应IP地址和VLAN,并通过在AR1上配置单臂路由,实现VLAN10和VLAN20的主机能够在VLAN间通信;在SW1和SW2的三条链路实施链路聚合,使用静态LACP模式,使一条链…...
【力扣每日一题】2023.8.5 合并两个有序链表
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们两个有序的链表,要我们保持升序的状态合并它们。 我们可以马上想要把两个链表都遍历一遍,把所有节点的…...
QT 驱动条码打印机(没有验证过)
这里的打印机是条码打印机,因为第一次接触这种设备,所以买了斑马的GK888t型条码打印机,据说ZPL语言就是斑马的杰作想必支持会好点。实际是,除了ZPL本身外,没有SDK,也没有DDK,所以,一…...
Kafka介绍
目录 1,kafka简单介绍 2,kafka使用场景 3,kafka基本概念 kafka集群 数据冗余 分区的写入 读取分区数据 顺序消费 顺序消费典型的应用场景: 批量消费 提交策略 kafka如何保证高并发 零拷贝技术(netty&#…...
Django使用uwsgi+nginx部署,admin没有样式解决办法
Django使用uwsginginx部署,admin没有样式解决办法 如果使用了虚拟环境则修改nginx.conf文件中的/static/路径为你虚拟环境的路径,没有使用虚拟环境则改为你python安装路径下的static server {listen 8008;server_name location; #改为自己的域名,没域名…...
穷举深搜暴搜回溯剪枝(3)
一)字母大小写全排列 784. 字母大小写全排列 - 力扣(LeetCode) 1)从每一个字符开始进行枚举,如果枚举的是一个数字字符,直接忽视 如果是字母的话,进行选择是变还是不变 2)当进行遍历到叶子结点的时候,直接将…...
Bash 脚本的参数等
bash 的 $值 $0 : 表示当前脚本的名称${BASH_SOURCE[0]} : 表示当前 Bash 脚本文件的路径,可以理解为 $0 的安全版本,防止被修改。$1 : 表示第一个参数,以此类推$ : 表示所有传入脚本的参数$UID : 表示当前用户的 ID 号。如果当前用户是 roo…...
从哪些方面学HTML技术? - 易智编译EaseEditing
学习HTML技术是前端开发的基础,它用于定义网页的结构和内容。以下是学习HTML技术时可以关注的方面: HTML基本语法: 了解HTML标签的基本语法和用法,学习如何创建HTML文档和元素。 常用HTML标签: 学习常用的HTML标签&…...
非阻塞IO
非阻塞IO fcntl 一个文件描述符, 默认都是阻塞IO。fcntl可以将某个文件描述符设置为非阻塞IO,先看一下文档介绍。 传入的cmd的值不同,后面追加的参数也不相同。 fcntl函数有5种功能: 复制一个现有的描述符(cmd F_DUPFD)。获得…...
Debian如何让multilib和交叉编译工具链共存
Debian一个槽点是gcc/g/gfortran-multilib和交叉编译工具链如gcc/g/gfortran-riscv64-linux-gnu会互相卸载,解决办法如下: 1、安装build-essential(gcc/g/libc6-dev/make/dpkg-dev)和gfortran,记下被安装的gcc版本&am…...
Flink之JDBC Sink
这里介绍一下Flink Sink中jdbc sink的使用方法,以mysql为例,这里代码分为两种,事务和非事务 非事务代码 import org.apache.flink.connector.jdbc.JdbcConnectionOptions; import org.apache.flink.connector.jdbc.JdbcExecutionOptions; import org.apache.flink.connector.…...
lifecycleScope Unresolved reference
描述 导入了lifecycle.lifecycleScope,但是在activity中使用lifecycleScope报错出现Unresolved reference找不到引用。 导包 import androidx.lifecycle.lifecycleScope使用 lifecycleScope.launch(Dispatchers.IO) {...}错误 方案 代码中的activity继承Activ…...
P5960 【模板】差分约束算法
【模板】差分约束算法 题目描述 给出一组包含 m m m 个不等式,有 n n n 个未知数的形如: { x c 1 − x c 1 ′ ≤ y 1 x c 2 − x c 2 ′ ≤ y 2 ⋯ x c m − x c m ′ ≤ y m \begin{cases} x_{c_1}-x_{c_1}\leq y_1 \\x_{c_2}-x_{c_2} \leq y_2 \\…...
VSCode---通过ctrl+鼠标滚动改变字体大小
打开设置然后在右边输editor.mouseWheelZoo勾选即可实现鼠标滚动改变字体大小 4.这种设置的字体大小是固定的...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

