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的选举是为了选择一个具有较高优先级的路由器。

选举过程:

  1. 首先,每个OSPF路由器都会发送Hello消息来宣告自己的存在,并与相邻的路由器建立邻居关系。
  2. 每个路由器在Hello消息中包含自己的路由器优先级(Router Priority)值。默认情况下,路由器优先级为1。
  3. 当路由器收到Hello消息后,会比较对方发送的路由器优先级和自己当前的DR和BDR的优先级。
  4. 如果对方发送的路由器优先级大于自己当前的DR和BDR的优先级,那么当前路由器会更新自己的DR和BDR,并将对方设置为BDR。
  5. 如果对方发送的路由器优先级等于自己当前的DR和BDR的优先级,并且对方的路由器ID(Router ID)比自己大,则当前路由器会更新自己的DR和BDR,并将对方设置为BDR。
  6. 如果对方发送的路由器优先级等于自己当前的DR和BDR的优先级,并且对方的路由器ID比自己小,则当前路由器不会更新DR和BDR的角色。

不同网络类型中DR与BDR的选举

 

动态路由协议分类

 

⦁    BGP使用一种基于距离矢量算法修改后的算法,该算法被称为路径矢量(Path Vector)算法。因此在某些场合下,BGP也被称为路径矢量路由协议。
⦁    IGP(内部网关协议)在同一个自治系统内交换路由信息,IGP的主要目的是发现和计算自治域内的路由信息。
⦁    EGP(外部网关协议)主要用于AS(自治系统)之间的互联。

链路状态路由协议 

基本原理:

每个路由器都会获取网络拓扑信息,并计算出到达其他路由器的最佳路径。它通过交换链路状态信息来维护网络的拓扑状态,各个路由器根据收到的信息构建一个全局的网络拓扑图,然后使用某种算法计算最短路径。

在链路状态路由协议中,每个路由器都会周期性地广播它的链路状态信息,或者通过多播方式发送给周围的邻居路由器。当一条链路发生故障或者网络拓扑发生变化时,路由器会更新自己的链路状态信息,并重新计算最佳路径。

 

链路状态路由协议有四个步骤:
⦁    第一步是建立相邻路由器之间的邻居关系。
⦁    第二步是邻居之间交互链路状态信息和同步LSDB。
⦁    第三步是进行优选路径计算。
⦁    第四步是根据最短路径树生成路由表项加载到路由表。

 

Router ID

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

区域

度量值

ospf三大表

邻居表

 lsdb表

路由表

报文格式以及类型

 

  1. OSPF Hello(Hello报文):

    • 用途:邻居发现和建立邻居关系。
    • 报文格式:报文头部信息(Version、Router ID、Area ID等)和邻居列表。
  2. OSPF Database Description(DD报文):

    • 用途:用于同步链路状态数据库(LSDB)。
    • 报文格式:报文头部信息(Version、Router ID、Area ID等)、参数字段(MTU、Options等)和LSA描述符(包括LSA类型、LSA序列号、LSA长度等)。
  3. OSPF Link State Request(LSR报文):

    • 用途:请求指定的LSA(Link State Advertisement)。
    • 报文格式:报文头部信息(Version、Router ID、Area ID等)和请求的LSA列表。
  4. OSPF Link State Update(LSU报文):

    • 用途:传输LSA。
    • 报文格式:报文头部信息(Version、Router ID、Area ID等)和LSA列表。
  5. 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工作过程

  1. 邻居发现和建立邻居关系:

    • 路由器启动时发送Hello报文,用于邻居发现。
    • 路由器之间通过比较Hello报文中的参数建立邻居关系。
  2. 链路状态数据库(LSDB)同步:

    • 路由器发出Database Description(DD)报文,携带自己所知道的LSA序列号列表,以与邻居交换信息。
    • 路由器收到DD报文后,比较自己的LSA序列号列表,并发送Link State Request(LSR)报文请求缺失的LSA。
    • 路由器根据收到的LSR报文,发送Link State Update(LSU)报文携带请求的LSA。
  3. 最短路径计算:

    • 每个路由器收集到足够的LSA后,构建链路状态数据库(LSDB)。
    • 使用Dijkstra算法基于链路状态信息计算最短路径树(Shortest Path Tree),确定到达目标网络的最短路径。
  4. 路由更新和转发:

    • 路由器使用最短路径树计算出的路由表更新自己的路由表。
    • 路由器使用已更新的路由表将数据包转发到最佳路径上的下一跳路由器。
  5. 监听和更新:

    • 路由器周期性地发送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区域到外部网络的路径信息。

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

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

相关文章

如何给a-table增加列宽拖动功能

对于table的列宽设置 相信用过的人都知道,想要设置得很完美,几乎是不现实的,因为总有数据或长或短,那我们应该如何优化它呢?那便是让用户自行拖动列宽,从而能看全table的数据,但是对于antd-vue …

恒运资本:股票印花税下降有什么影响?什么原因导致下降?

在进行股票教育过程中是需求收取必定的手续费的,比如说买卖佣钱、印花税、过户费等等。那么股票印花税下降有什么影响?什么原因导致下降?下面就由恒运资本为大家剖析: 股票印花税下降有什么影响? 1、对于企业&#xf…

vscode运行python报错:ModuleNotFoundError:No module named ‘xxx‘

在乌班图上使用pycharm的时候,pycharm总是莫名其妙卡死,又说是搜狗输入法的锅,又说别的原因,一气之下不用pycharm,转到vscode上,没想到出现了如下报错。 就是vscode在运行python的时候,自定义模块的调用无…

【C语言】经典题目(四)

HI,大家好~😝😝这是一篇C语言经典题目的博客。 更多C语言经典题目及刷题篇,可以参考: 🌸 【C语言】经典题目(一) 🌸 【C语言】经典题目(二) 🌸 【C语言】经典题目(三) 🌸…

vue3中的自定义指令用法

我们都知道vue2中自定义指令全局和局部是这样写的 局部: 全局: 可vue3写法发生改变,如下: 全局: 局部:

音视频 FFmpeg命令行搭建

文章目录 一、配置二、测试 一、配置 以FFmpeg4.2.1 win32为例 解压ffmpeg-4.2.1-win32-shared.zip 拷⻉可执⾏⽂件到C:\Windows拷⻉动态链接库到C:\Windows\SysWOW64 注:WoW64 (Windows On Windows64)是⼀个Windows操作系统的⼦系统,被设计⽤来处理许…

【网络】自定义协议 | 序列化和反序列化 | Jsoncpp

本文首发于 慕雪的寒舍 以tcpServer的计算器服务为例,实现用jsoncpp来进行序列化和反序列化 阅读本文之前,请先阅读 自定义协议 | 序列化和反序列化 | 以tcpServer为例 1.安装jsoncpp 我所用的系统是centos7.6,先用下面的命令查找相关的包 …

图的遍历之 深度优先搜索和广度优先搜索

深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各…

Element组件浅尝辄止2:Card卡片组件

根据官方说法: 将信息聚合在卡片容器中展示。 1.啥时候使用?When? 既然是信息聚合的容器,那场景就好说了 新建页面时可以用来当做页面容器页面的某一部分,可以用来当做子容器 2.怎样使用?How? //Card …

分布式应用:Zabbix代理服务器与SNMP监控

目录 一、理论 1.分布式监控 2.Zabbix代理服务器部署 3.配置 agent 使用 proxy 4.设置 Zabbix-SNMP 监控 二、实验 1.Zabbix代理服务器部署 2.配置 agent 使用 proxy 3.设置 Zabbix-SNMP 监控 三、总结 一、理论 1.分布式监控 (1)作用&#x…

Docker安装Mysql、Redis、nginx、nacos等环境

相关系列文章: 1、DockerHarbor私有仓库快速搭建 2、DockerJenkinsHarbor 1、服务器 Ip部署内容说明192.168.88.7Docker、Mysql、redis、nacosnode1192.168.88.8Docker、Mysql、redis、nacosnode2192.168.88.9Docker、redis、nacos、nginxnode3 2、安装PXC8.0 Mys…

PHP实现在线进制转换器,10进制,2、4、8、16、32进制转换

1.接口文档 2.laravel实现代码 /*** 进制转换计算器* return \Illuminate\Http\JsonResponse*/public function binaryConvertCal(){$ten $this->request(ten);$two $this->request(two);$four $this->request(four);$eight $this->request(eight);$sixteen …

echarts 横向柱状图

<template><div ref"chart" style"height: 100%"></div> </template><script> import * as echarts from "echarts"; var cate ["质量通病1", "质量通病2", "质量通病3", "质…

“可一学院”区块链学习平台正式启动,助力BSV技术普及与传播

2023年8月8日&#xff0c;上海可一澈科技有限公司&#xff08;以下简称“可一科技”&#xff09; 正式发布区块链学习平台“可一学院”。“可一学院” 立足于BSV区块链技术本源&#xff0c;汇集了多层次的专业课程和学习资源&#xff0c;致力于打造一个适合各类人群使用的一站式…

数据结构——双向链表

双向链表实质上是在单向链表的基础上加上了一个指针指向后面地址 单向链表请参考http://t.csdn.cn/3Gxk9 物理结构 首先我们看一下两种链表的物理结构 我们可以看到&#xff1a;双向在单向基础上加入了一个指向上一个地址的指针&#xff0c;如此操作我们便可以向数组一样操作…

基于Crow的C++的WebSocket服务器

基于Crow的C的WebSocket服务器 一、WebSocket 1.1 什么是WebSocket WebSocket 是一种持久化的通讯协议。 很多网站为了实现推送技术&#xff0c;所用的技术都是轮询&#xff0c;这种解决方案是指由浏览器每隔一段时间向服务器发出 HTTP 请求&#xff0c;然后服务器返回最新的…

Qt自定义对话框

介绍 自定义框主要通过对现有对话框QDialog类的派生&#xff0c;根据需求编写成员函数、重载信号函数、槽函数&#xff0c;进而实现在主QWidget中点击某个按钮后&#xff0c;一个对话框的弹出 流程 简化创建派生类 最后点击完成即可。 自定义ui界面&#xff0c;编写成员函数…

产品体系架构202308版

1.前言 当我们不断向前奔跑时&#xff0c;需要回头压实走过的路。不断扩张的同时把相应的内容沉淀下来&#xff0c;为后续的发展铺垫基石。 不知从何时起&#xff0c;产品的架构就面向了微服务/中台化/前后端分离/低代码化/分布式/智能化/运行可观测化的综合体&#xff0c;让…

Git与Github常用方法

目录 1. Github基本使用方法2. Git使用方法3. git、VS code、Github联合使用方法4. Git配置Github远程仓库SSH密钥5. 常见问题 1. Github基本使用方法 仓库&#xff08;Repository&#xff09;&#xff1a;Github上用来存放代码的空间&#xff0c;包含代码、文档和其他文件。提…

逆向破解学习-经典贪吃蛇大作战_1.00

试玩游戏 有支付取消关键字 找静态代码 找到关键字 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5d9f3cc57d18477794197ea5fae8c5ba.png Hook代码 import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodReplacement; import de.r…