OSPF(开放路径最短优先)
ospf优先级:内部优先级默认为10,外部优先级默认为150
1.ospf的三张表
(1)邻居表 <记录邻居状态和关系>
(2)拓扑表 <链路状态数据库>
(3)路由表 <对链路状态数据库进行SPF计算得出的OSPF路由表>
2.ospf路由器的类型
(1)IR,interior router区域内部路由器 <所有接口都在同一区域>
(2)BR,backbone router骨干路由器 <有接口在骨干区域>
(3)ABR,area border router区域边界路由器 <连接骨干区域和非骨干区域>
(4)ASBR,autonomous system boundary router自治系统边界路由器 <连接外部自治系统,并引入外部路由>
3.Router ID
Router-ID 是非抢占的,若出现一个更大的IP,仍保持原来的router-id。只有手动配置或router-id对应的接口IP地址消失,重启ospf进程后router-id发生改变。
4.ospf的网络类型
(1)广播多路访问型:
以太网默认的网络类型、需要选举DR/BDR、hello-time为10秒、dead-time为40秒、组播发送协议报文。
(2)非广播多路访问型
帧中继接口的默认网络类型、需要选举DR/BDR、hello-time为30秒,dead-time为120秒、单播发送协议报文需要手动指定邻居。
(3)点到点网络
ppp默认的网络类型、不选举DR/BDR、hello-time为10秒、dead-time为40秒、组播发送协议报文。
(4)点到多点网络
由其他网络类型修改、不选举DR/BDR、hello-time为30秒、dead-time为120秒、模拟组播发送协议报文,可以自动发现邻居。
在设置网络类型,要注意以下几个方面:
P2MP类型必须是由其他的网络类型强制更改
一般情况下,链路两端ospf接口的网络类型必须一致,否则不可用建立邻居关系
5.ospf五种报文
Hello:建立和维护ospf邻居关系。
DBD:链路状态数据库描述。OSPF 路由器通过交换 DBD 报文,来统计自己缺少的 LSA 并向对端发送 LSR 报文进行请求。
LSR:链路状态请求报文。用于向邻居请求自己 LSDB 中没有的 LSA。
LSU:将邻居需要的LSA打包成LSU发给邻居,只有 LSU 报文中会包含完整的 LSA。
LSAck:LSAck 用于向邻居确认收到的 LSU,如果没收到 LSAck 的话,邻居会不断的重传LSU。
6.ospf的邻居状态机
(1)Down:表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
(2)Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔向对端发送Hello报文。
(3) Init:本状态表示已经收到了邻居的HELLO报文,但对方并没有收到我发的HELLO报文。
(4)2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
(5)ExStart:路由器和它的邻居之间通过互相交换DD报文来决定发送时的主/从关系。
(6) Exchange:路由器将本地的LSDB用DD报文来描述,并发给邻居。
(7) Loading:路由器发送LSR报文向邻居请求对方的DD报文。
(8)Full:在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了。即,本路由器和邻居建立了 邻接 状态。
7.LSA类型
(1)LSA type1(Router LSA)
传播范围:仅在区域内传播
产生者:每台路由器都会产生
(2)LSA type2(network LSA)
传播范围:仅在区域内传播
产生者:由DR产生
(3)LSA type3(Network Summriy-LSA)
传播范围:传递至除Totally stub和Totally NSSA区域之外的所有区域
产生者:由ABR产生
(4)LSA type4(ASBR summary-LSA)
传播范围:在除ASBR本区域之外的其他普通区域传递
产生者:由ABR产生
(5)LSA type5(External-LSA)
传播范围:传递至除特殊区域外的所有其他普通区域
产生者:由ASBR产生
(7)LSA type7(NSSA-LSA)
传播范围:只在NSSA本区域传递
产生者:由NSSA区域ASBR产生
8.特殊区域
(1)stub区域:不接收4 5类LSA,由ABR自动产生一条缺省路由的Type3 LSA下发至该区域,骨干区域不能被配置为特殊区域,如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置成Stub路由器,Stub区域内不能存在ASBR,虚连接不能穿越Stub区域建立。
(2)totally stub区域:不接收3 4 5类LSA,由ABR自动产生一条缺省路由的Type3 LSA下发至该区域,骨干区域不允许设置为特殊区域,Stub区域不允许存在ASBR。
(3)nssa区域:不接收4 5类LSA,但本区域存在ASBR;本区域引入的外部路由以Type7 LSA传递,当该外部路由传递至其他普通区域时,由Router-id最大的ABR进行7转5;手动配置ABR下发一条Tyep7的缺省路由LSA。
(4)totally nssa区域:不接收3 4 5类LSA,但本区域存在ASBR;本区域引入的外部路由以Type7 LSA传递,当该外部路由传递至其他普通区域时,由Router-id最大的ABR进行7转5;由ABR自动产生一条缺省路由的Type3 LSA下发至该区域
NSSA区域和Stub区域的区别:
两者的差别在于,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其它区域的外部路由
9.OSPF选路原则:
1.区域内路由>区域间路由>1类外部路由>2类外部路由
2.类型一致,对比Cost
10.虚连接
通过在一个中间区域的2个ABR上配置虚连接来使两端的区域实现逻辑上的连接,解决非骨干区域不能和骨干区域相连。
11.ospf路由聚合
(1)ABR聚合:把一个区域的LSA聚合后发布到相邻区域;只能对Type 3类的LSA进行聚合;ABR的聚合不会影响本机的路由,只会影响下游路由器的路由;ABR聚合后会在ABR本机上产生一条该聚合路由的黑洞路由来防止环路出现。
(2)ASBR聚合:只能对Type 5、7类Lsa进行聚合;ASBR的聚合不会影响本机的路由,只会影响OSPF内部其他路由器的路由;ASBR聚合后会在ABR本机上产生一条该聚合路由的黑洞路由来防止环路出现。
12.ospf安全验证
(1)接口验证:链路两端的接口必须配置一致的密码才能建立邻居关系
(2)区域验证:在区域下配置一致的密码才能加入同一个区域
注意:接口验证高于区域验证,只要接口验证通过,哪怕区域验证挂了也能通过
13.2-way的前提
(1)Router-id无冲突 <修改Router-id需要重置OSPF进程使生效>
(2)区域id一致
(3)掩码长度一致
(4)验证密码一致
(5)hello-time一致
(6)dead-time一致
14.ospf的优点
(1)仅传播对端设备不具备的路由信息,避免网络资源浪费
(2)网络收敛速度快
(3)扩展性好
(4)支持认证(安全性好)
15.影响OSPF邻居关系的因素:
(1)双方Router-id冲突
(2)双方Area-id不一致
(3)广播网络中掩码不一致
(4)网络类型不一致(如果一端是NBMA,另一端不是,则无法建立邻居;其他的情况都是邻接关系可以FULL,但是无法计算路由)
(5)双方接口的MTU不一致(导致邻接状态卡在Exstart或Exchange)
(6)验证未通过
(7)特殊区域类型不一致
(8)Hello-time和Dead-time不一致
DR,BDR选举规则总结:
1.看接口优先级,优先级越大越优先,被选DR,优先级第二,被选BDR.
2.如果优先级一样,选route-id,越大优先.
3.如果路由器没有设置route-id,那么选接口的ip地址,越大越优先。
邻居和邻接:
1.在OSPF中路由器与路由器之间有两种关系分别是邻居和邻接。
2.收到hello报文的路由器检查报文中的参数,如果双方一致就形成邻居关系。
3.当双方成功交换DD报文,交换LSA达到LSDB同步后,建立邻接关系。
邻居与邻接详解(了解)
OSPF 邻居关系,分为邻接和邻居两种。LSA 只在邻接关系的邻居之间同步,普通邻居关系之间不同步 LSA 信息。
邻居关系:路由器之间仅通过 Hello 报文,知道目前处于同一区域。
邻接关系:在邻居关系的基础上,DR 和 BDR 之间互相发送 LSA。
我们知道,在运行着多台 OSPF 的路由器中,为了让对方能够发现自己,需要互相发送 HELLO 消息,建立邻居关系。接着发送在路由器之间传送 LSA 碎片。但这就有一个问题,由于每台路由都需要知道完整的拓扑信息,所以所有路由器都需要广播和接受 LSA 的碎片,假设有 n 个路由器之间连接邻接关系,那么将需要建立 n(n-1)/2 个邻接关系。这无疑是对网络资源的很大损耗。
为了解决这个问题就提出了一个 DR 和 BDR 的概念,将路由器的角色分为三种:
DR: 选举成功的指定路由器 - 理解成班长
BDR:作为backup的指定路由器 - 理解成副班长,时刻监听班长状态,班长一死,副班长直接转正。
DROther:未选举成功的其他路由器。
接着在一个多路访问链路上,所有的路由器都需要与 DR 路由器建立邻接关系,同时也要与 BDR 路由器建立邻接关系,DR Other 之间,只建立邻居关系,不会同步数据库信息。换句话说,区域中的普通路由器只和老大和老二建立关系。进而依靠这种方式降低 OSPF 进程对路由器资源占用的。
相关文章:
OSPF(开放路径最短优先)
ospf优先级:内部优先级默认为10,外部优先级默认为150 1.ospf的三张表 (1)邻居表 <记录邻居状态和关系> (2)拓扑表 <链路状态数据库> (3)路由表 <对链路状态数据库进…...
JAVA EE初阶 - 预备知识(四)
一、API API 即应用程序编程接口(Application Programming Interface),是一组定义、协议和工具,用于不同软件组件、应用程序或系统之间进行交互和通信。以下从多个方面详细介绍 API: 基本概念 接口规范:A…...
如何解决服务器端口被攻击:全面防护与快速响应
服务器端口被攻击是网络安全中常见的问题之一,尤其是当服务器暴露在公共网络上时,容易成为黑客的目标。攻击者可能通过扫描开放端口、利用漏洞或发动拒绝服务(DoS/DDoS)攻击来破坏服务器的正常运行。本文将详细介绍如何检测、防御…...
golang panic原理
数据结构与底层实现 Goroutine结构体 stack(栈内存范围) 结构体类型,包含 lo(低地址)和 hi(高地址)两个 uintptr 字段,描述 Goroutine 的栈内存区间 [lo, hi)。初始栈大小为 2KB&a…...

scratch猜年龄互动小游戏 2024年12月scratch四级真题 中国电子学会 图形化编程 scratch四级真题和答案解析
scratch猜年龄互动小游戏 2024年12月电子学会图形化编程Scratch等级考试四级真题 一、题目要求 老爷爷的年龄是1-100的随机数,老爷爷询问“请猜猜我的年龄是多少?”,输入年龄,老爷爷会回答"大了"或者"小了,直到最后成功猜出年龄。 1、准备工作 (1)删…...
【Elasticsearch】查询规则_query_rules
1.Query Rules 的定义与作用 Query Rules 是 Elasticsearch 提供的一种功能,允许用户根据预定义的规则动态调整搜索结果。它通过匹配查询的元数据(如用户输入、地理位置、用户兴趣等),对搜索结果进行定制化调整,例如固…...

Git备忘录(三)
设置用户信息: git config --global user.name “itcast” git config --global user.email “ helloitcast.cn” 查看配置信息 git config --global user.name git config --global user.email $ git init $ git remote add origin gitgitee.com:XXX/avas.git $ git pull or…...

用户的声音 | 文档结构化信息提取方案测评:LLM、开源模型部署与云端API,谁是合适选择?
文档预处理之文本化 近日,我们收到来自专业用户的使用心得,浅析结构化信息提取技术、技术选型及一些个人测试。 结构化信息提取的重要性 数据作为大模型时代的核心生产资料,其结构化处理能力直接影响AI系统的实用价值。尽管知识图谱、RAG等…...

vite调试node_modules下面插件
在使用vite进行开发的时候,我们可能想要修改node_modules中插件的源码.特别是集成一个SDK,需要调试去判断问题时,或者研究第三方源码时后; vite默认是走缓存的,所以当修改后不会看到你打印的日志,这个时候有几种方法可以选择; 方式…...
ES12 weakRefs的用法和使用场景
ES12 (ECMAScript 2021) 特性总结:WeakRef 1. WeakRef 概述 描述 WeakRef 是 ES12 引入的一个新特性,用于创建对对象的弱引用。弱引用不会阻止垃圾回收器回收对象,即使该对象仍然被弱引用持有。WeakRef 通常与 FinalizationRegistry 结合使…...

【Python】集合set详细讲解(语法、操作、集合运算、性能、使用场景)
文章目录 1. 语法1.1 使用 {} 定义1.2 使用 set() 定义 2. 特点3. 常用操作3.1 访问元素3.2 查找数据3.3 添加元素3.3.1 add() 方法3.3.2 update()方法 3.4 删除元素3.4.1 remove()方法3.4.2 discard()方法3.4.3 pop()方法3.4.4 clear()方法 3.5 集合运算3.5.1 并集:…...

网络安全大数据架构 网络安全之数据安全
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络安全和数据安全 从狭义来说,网络安全指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或恶意的原因遭到破坏、更改、泄露&…...

(前端基础)CSS(一)
了解 Cascading Style Sheet:层叠级联样式表 CSS:表现层(美化网页)如:字体、颜色、边框、高度、宽度、背景图片、网页定位、网页浮动 css优势: 内容和表现分离网页结构表现统一,可以实现复用…...
Redis数据类型全景解析:从底层编码到应用反模式
一、核心数据类型矩阵 1.1 基础类型对比表 类型底层结构最大容量时间复杂度典型场景StringSDS/Embstr/Raw512MBO(1)读写缓存/计数器ListQuickList(ziplist)2^32-1元素头尾操作O(1)消息队列Hashziplist/hashtable2^32-1键值对O(1)平均对象存储Setintset/hashtable2^32-1成员O(…...

(蓝桥杯——10. 小郑做志愿者)洛斯里克城志愿者问题详解
题目背景 小郑是一名大学生,她决定通过做志愿者来增加自己的综合分。她的任务是帮助游客解决交通困难的问题。洛斯里克城是一个六朝古都,拥有 N 个区域和古老的地铁系统。地铁线路覆盖了树形结构上的某些路径,游客会询问两个区域是否可以通过某条地铁线路直达,以及有多少条…...
TypeScript跟js,es6这些的区别
TypeScript 一、TypeScript 是什么 想象 JavaScript 是一个自由奔放的艺术家,它在创作(编写代码)时不受太多约束,非常灵活,但有时也容易犯错且难以调试。而 TypeScript 就像是给这位艺术家配备了一套精确的工具和规范…...

flink-cdc同步数据到doris中
1 创建数据库和表 1.1 数据库脚本 这样直接创建数据库是有问题,因为后面发现superset连接使用doris://root:12345610.101.12.82:9030/internal.eayc?charsetutf8mb4 -- 创建数据库eayc create database if not exists ods_eayc; -- 创建数据表2 数据同步 2.1 f…...

Kubernetes:EKS 中 Istio Ingress Gateway 负载均衡器配置及常见问题解析
引言 在云原生时代,Kubernetes 已经成为容器编排的事实标准。AWS EKS (Elastic Kubernetes Service) 作为一项完全托管的 Kubernetes 服务,简化了在 AWS 上运行 Kubernetes 的复杂性。Istio 作为服务网格领域的佼佼者,为微服务提供了流量管理…...
Golang教程
1. go 环境与命令 1.1 go 环境搭建 SDK 安装 Go 官网:golang.orgGo 中文社区:https://studygolang.com/dlGo API文档:https/golang.org 或 https://studygolang.com/pkgdoc 目录 api :api 存放bin:go命令src&#…...
AI 百炼成神:线性回归,预测房价
我们开始第一个项目——线性回归:预测房价。这是一个经典的机器学习入门项目,可以帮助你理解如何使用线性回归模型来预测连续的数值。 第一个项目:线性回归预测房价 项目目标 学习线性回归的基本概念。使用历史房价数据建立一个预测模型。理解如何评估模型的性能。项目步骤…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...