“SCSA-T学习导图+”首发:路由技术之OSPF入门

news2024/11/15 22:55:00

本期引言:

路由技术是网络环境中,为不同的节点传输数据提供传输路径的技术,企业网络的拓扑一般会比较复杂,不同的部门或者总部和分支可能处于不同的网段中,此时就需要使用路由协议来连接不同的网段,实现数据的转发,所以路由协议为不同网段之间的互连起到了至关重要的作用,那本文主要讲解到的是路由协议中的OSPF路由协议。

01 什么是OSPF路由协议

OSPF(Open Shortest Path Fist)开放式最短路径优先是一种基于链路状态的路由协议,隶属于内部网关协议(IGP),其内部采用SPF算法来计算和收敛路由,OSPF一共分为两个版本:OSPFv2,主要适用于IPv4网络环境;OSPFV3,主要适用于IPV6网络环境。该协议主要用于中大型及大型网络环境中,其工作原理和配置过程比较复杂。

02 OSPF的基本知识 

2.1 OSPF区域化的结构

OSPF为了适应大型的网络环境,在自治系统AS内划分了多个区域,每个OSPF路由器维护所在区域内完整的链路状态信息,区域ID可以表示为一个十进制的数字也可以表示为一个IP。其区域分类可以分为骨干区域Area0以及非骨干区域,非骨干区域可以再次细分为正常非骨干区域,末节区域以及完全末节区域。在这里我们只关注骨干区域和正常非骨干区域即可。如下图2-1所示区域划概况:

2.2 OSPF的路由器类型
OSPF路由器的类型决定了什么样的数据流能够进入和离开区域,以上图2-1为例,我们可以将路由器的类型分为以下几类:

2.3 DR与BDR的概念及作用
在网络中我们选举DR和BDR的目的是为了让DR产生特定的链路状态信息以及简化网络结构,选举规则为:先比较接口优先级,越大越优先。优先级相同,比较RID,越大越优先。

注意:LSA即链路状态通告,是一种描述OSPF路由器或者网络状态的数据单元,由于在OSPF中有很多种类,比较复杂,本文中不会展开描述。

2.5 OSPF的五种协议报文
OSPF的协议报文封装在IP报文内部,协议号是89,以下是五种报文的名称及作用:

2.6 邻居和邻接关系
在OSPF中邻居关系就是在两台路由器中进行完两次Hello报文交互之后,建立起来的关系叫邻居关系。邻接关系是指在两台路由器中进行完链路状态数据库(LSDB)同步之后,建立起来的关系叫邻居关系。以下是网络类型与邻居/邻接关系的对应表:

03 OSPF多区域的常规配置

3.1 配置拓扑结构及IP地址(如下图3-1所示)

 3.2 网络地址及OSPF(进程号为10)区域规划

 注意:Route-id是OSPF区域内,唯一标示路由器的IP地址,Route-id的选举方法:选取路由器上Loopback数字最高的IP地址作为Route-id,如果没有Loopback,则选取在物理接口中地址数字最高的IP地址作为Route-id。

3.3 涉及配置命令

R1设备OSPF配置如下:

[R1]ospf 10 router-id 1.1.1.1

[R1-ospf-10]area 1

[R1-ospf-10-area-0.0.0.1]network 1.1.1.1 0.0.0.0

[R1-ospf-10-area-0.0.0.1]network 192.168.10.1 0.0.0.0

[R1-ospf-10-area-0.0.0.1]network 10.1.12.1 0.0.0.0

[R1-ospf-10-area-0.0.0.1]quit

R2设备OSPF配置如下:

[R2]ospf 10 router-id 2.2.2.2

[R2-ospf-10]area 1

[R2-ospf-10-area-0.0.0.1]network 10.1.12.2 0.0.0.0

[R2-ospf-10-area-0.0.0.1]area 0

[R2-ospf-10-area-0.0.0.0]network 2.2.2.2 0.0.0.0

[R2-ospf-10-area-0.0.0.0]network 10.1.23.1 0.0.0.0

[R2-ospf-10-area-0.0.0.0]quit

R3设备OSPF配置如下:

[R3]ospf 10 router-id 3.3.3.3

[R3-ospf-10]area 0

[R3-ospf-10-area-0.0.0.0]network 3.3.3.3 0.0.0.0

[R3-ospf-10-area-0.0.0.0]network 192.168.20.1 0.0.0.0

[R3-ospf-10-area-0.0.0.0]network 10.1.23.2 0.0.0.0

[R3-ospf-10-area-0.0.0.0]quit

3.4 检查配置结果

3.41 在R1设备上可以看到通过OSPF协议学来的不同网段的路由。

 3.42 在R1设备上使用Ping命令Ping通R3设备的业务网段。

 3.43 在R3设备上可以看到通过OSPF协议学来的不同网段的路由。

3.44 在R3设备上使用Ping命令Ping通R1设备的业务网段。

3.5 综上所述

我们已经通过OSPF路由协议互联了不同的网段,那假设我们R1与R3之间的网段如果ping无法通信的话,那我们也可以做一个简单的排查,我们要知道如果两个主机要通信则需要发送相应的数据包,所以相应节点的路由器就需要对应的路由,那么路由器之间就需要有邻居/邻接关系,那么影响OSPF建立邻居关系的因素有:

Router id冲突;

区域ID配置错误;

认证不一致;

MA网络环境中子网掩码需要一致;

hello/dead时间不一致;

接口网络类型不匹配等等因素。

当我们看到邻接关系已经建立,仍然还是无法学到对方的路由,我们可以从网段是否宣告正确,相应的IP地址是否配置错误等等。

04 OSPF邻居和邻接关系的分析过程

接下来我们将通过上面的实验案例,来分析R1和R2设备之间的邻居关系/邻接关系以及链路状态信息的传递过程。(因为报文是多次交互的过程,所以在分析时截图不一定全部完整)

4.1 Hello报文的交互

4.11 假设R1先向R2发送Hello报文建立邻居关系,Hello报文目的地址为组播地址:224.0.0.5,因为这个这是第一个报文,DR和BDR字段都为空,所以也没有任何邻居路由器的信息。

 4.12 路由器R2也会向R1发送Hello报文,由于R2的接口收到了R1发送的Hello报文,R2会将R1设置为它的邻居,故R1设备收到R2发送的Hello报文中,邻居列表为1.1.1.1。R2也是同理,则R1和R2设备都能在邻居列表中看到对方的Router id,邻居关系建立成功。

4.2 数据库描述报文的交互

4.21 假设R1设备发送了第一个DBD报文(I/M/MS位都置位),选举主从,其序列号为646。

 

4.22 R2也发送第一个DBD报文,选举主从,其序列号为:661。然后比较两个路由器的ID值,发现R2比较大,所以后续交互报文中使用主路由器R2的序列号。

 4.23 主从协商完毕后,开始发送DBD报文,并且携带LSA(链路状态通告)的摘要信息,并且使用R2主路由器的序列号,当M=0时,说明报文发送完成。

4.3 LSR请求报文的交互

4.31 以R1设备为例,在接收到R2设备的DBD报文之后,会发送LSR报文请求具体信息。

4.4 LSU更新报文的交互

4.41 当R2设备收到R1的LSR之后,将会发送LSU报文给R1,里面携带详细的链路信息。

 

4.5 LSACK确认报文的交互

4.51 最终路由器R1确认收到R2的LSU之后就会发出LSACK报文予以确认。

 

至此,简单的报文交互过程完毕,其他报文交互过程不再赘述。

总结

本文从路由技术的概念出发,以OSPF路由协议为主,简要介绍OSPF的基本知识和多区域互联案例,以Wireshark软件为基础抓取OSPF的交互报文,分析其交互过程,帮助我们更好地理解OSPF的工作原理。在实际工作中,OSPF常常也会被用在运营商侧的底层互联协议,上层可能还会运行BGP和MPLS协议来实现路由的传递和网络的通信,这些内容都是入门者需要掌握的。

练习题

【扩展】根据下图所示搭建OSPF的多区域环境,思考R1和R4之间之间能否传递相应的路由,如果不能,请说出原因并思考能够传递路由的解决方案。

 本期作者:

熊亮,深信服云计算认证专家

产业教育中心资深讲师,持有CCSSP、CCSK、HCIE-Cloud Computing、HCIE-Datacom等多项技能证书,擅长企业级网络规划、云计算解决方案规划、云计算架构设计、私有云部署与管理,云灾备、云安全等技术方向;曾负责并参与金融、医疗及政企行业企业级云网络架构设计、私有云架构设计、企业级云迁移、云灾备等方案的规划与实施;并且作为特聘讲师多次为中国商务部援外研修班、央企、大中型企业、高校进行授课,研究方向为云计算架构深度解析、私有云架构设计、分布式存储架构实践、MPLS VPN骨干网络架构设计等技术领域,具有丰富的云计算一线实战经验以及技术转化和输出能力。

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

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

相关文章

django channels(websocket)的使用,实现网页间实时聊天

目录 一、创建项目mysite和应用chat 1. 创建项目mysite 2. 创建应用chat并添加应用到settings.py的INSTALLED_APPS中 3. 添加模板文件 4. 添加视图及路由 5.配置根路由指定chat应用的路由 6. 集成channels 二、实现聊天服务器 1. 创建一个新文件chat/templates/chat/r…

响应式开发HTNL5CSS3视频播放器

目录 前言 一、本视频播放器需要实现的功能 ​二、代码分布结构 三、部分主要代码 1.index01.html 2.video1.css 3.video1.js 四、images图片资源及视频 五、运行效果 前言 1.本文讲解的响应式开发技术(HTML5CSS3Bootstrap)的HTML5视频播放器等…

TS-黑马(二)

目录: (1)ts-类型-字面量与nullish类型 (2)ts-类型-泛型 (3)ts-意义 (4)ts-class语法 (1)ts-类型-字面量与nullish类型 我们子啊传递参数的时…

以 100GB SSB 性能测试为例,通过 ByteHouse 云数仓开启你的数据分析之路

动手点关注 干货不迷路 I. 传统数仓的演进:云数仓 近年来,随着数据“爆炸式”的增长,越来越多的数据被产生、收集和存储。而挖掘海量数据中的真实价值,从其中提取商机并洞见未来,则成了现代企业和组织不可忽视的命题。…

总的所有的全部的完全的整个的整体的: all entire full gross whole total

all entire full gross whole total 所有的,完全的,完整的全部的,整个的,整体的,总的 all entire full gross whole total all entire full gross whole total一些词典的解释allentirefullgrosswholetotal 区别辨析entire、whole、complete、full、total、gross与alltotal&…

【JavaWeb】HTMLCSS

一:B/S 软件的结构 二:前端的开发流程 3、网页的组成部分 页面由三部分内容组成! 分别是内容(结构)、表现、行为。 内容(结构),是我们在页面中可以看到的数据。我们称之为内容。一般内容 我们…

【Linux】共享内存(shm)代码实现

文章目录 共享内存介绍最快的IPC形式共享内存示意图共享内存数据结构共享内存函数shmget函数shmfig shmat函数说明: shmdt函数shmctl函数 共享内存的原理小结 共享内存的特点生命周期共享内存的大小共享内存为什么快共享内存没有任何的保护机制即同步互斥扩展内容 代…

《软件开发本质论》读书笔记

目录 第一部分——价值的循环开发取向频繁交付小的,价值大,代价小的特性 测试同时要有业务测试和开发测试开发测试应在代码开发的同时完成甚至先于代码完成 重构第一部分总结 第二部分——说明与论述团队目的自主专精 五卡法预测软件计划控制好自己所参与…

二叉树一定是完全二叉树

一、树的概念及其结构 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 1、树的特点 ①有一个特殊的结点&…

ARM Coresight 及 DS-5 介绍 5 - ARM Cortex-M DS-5 加载 ELF 文件运行

文章目录 1.1.1 DS-5 工程创建1.1.2 DS-5 加载 ELF 脚本创建1.1.3 DS-5 脚本读写 Memory1.1.4 DS-5 扫描脚本 1.1.1 DS-5 工程创建 在使用ARM DS-5 连接 board(或者PFGA)之前首先需要能够扫描到相应的硬件信息,比如对应的cpu的相关信息:coresight 相关组…

【Zblog搭建博客网站】windows环境搭建属于自己的博客并发布上线 - cpolar内网穿透

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 转载自远程内网穿透的文章:【Zblog建站】搭建属于自己的博客网站&#…

【C++】初始化列表,explicit 关键字,静态成员

初始化列表 构造函数内可以对于成员的赋值,故不能称为是初始化,初始化只能初始化依次,C中类对象的初始化可由初始化列表完成 内置类型成员可以通过设置缺省值实现初始化,但对于const修饰的成员、引用成员、没有默认构造函数的自…

hive解析json

目录 一、背景 二、hive 解析 json 数据函数 1、get_json_object 2、json_tuple 3、使用嵌套子查询(exploderegexp_replacesplitjson_tuple)解析json数组 4、使用 lateral view 解析json数组 一、背景 我们进行ETL(Extract-Transfer-Load) 过程中,经常会遇到从不同数据…

编码拓展:链接库

一.认识链接库 1.1库 计算机中,有些文件专门用于存储可以重复使用的代码块,例如功能实用的函数或者类,我们通常将它们称为库文件,简称“库”(Library)。 以 C 语言为例,如下为大家展示的就是…

JUC高级十-并发加锁原理之AbstractQueuedSynchronizer(AQS)

1. 前置知识 公平锁和非公平锁可重入锁自旋锁LockSupport数据结构之双向链表设计模式之模板设计模式 AQS重要性 JAVA ------>JVM AQS ------>AQS 2. AQS入门级别理论知识 2.1 是什么? 2.1.1 字面意思 Abstract Queued Synchronizer----抽象的队列同步器 源码位置: …

【Microsoft Edge】如何彻底卸载 Edge

文章目录 一、问题描述二、卸载 Edge2.1 卸载正式版 Edge2.2 卸载非正式版 Edge2.2.1 卸载通用的 WebView22.2.2 卸载 Canary 版 Edge2.2.3 卸载其他版本2.3 卸载 Edge Update 2.4 卸载 Edge 的 Appx 额外安装残留2.5 删除日志文件2.6 我就是想全把 Edge 都删了 一、问题描述 …

预测模型的局部评价?

预测模型的局部评价 为什么要进行局部评价? 首先是临床决策曲线分析通常会给预测模型的使用规定一个阈值范围,相应地预测模型的评价也应该局限在这个范围之内才是合理的; 其次,全局性地评价往往不够敏感,即好的模型和坏…

本地搭建属于自己的ChatGPT:基于Python+ChatGLM-6b+Streamlit+QDrant+DuckDuckGo

本地部署chatglm及缓解时效性问题的思路: 模型使用chatglm-6b 4bit,推理使用hugging face,前端应用使用streamlit或者gradio。 微调对显存要求较高,还没试验。可以结合LoRA进行微调。 缓解时效性问题:通过本地数据库…

C语言实现银行家算法

一.银行家算法 1.由来 银行家算法最初是由荷兰计算机科学家艾兹赫尔迪杰斯特拉(Edsger W. Dijkstra)于1965年提出的。当时他正致力于解决多道程序设计中产生的死锁问题。在多道程序设计中,由于不同进程之间共享有限的系统资源,如…

【JavaEE初阶】多线程(一)认识线程 线程的创建 Thread的用法

摄影分享! 文章目录 认识线程(Thread)概念执行多线程编程创建线程的写法1.继承Thread,重写run2.实现Runnable接口3.使用匿名内部类,继承Thread4.使用匿名内部类,实现Runable5.使用Lambda表达式 Thread用法…