OSPF路由计算

news/2024/5/13 2:20:41
1.区域内路由计算

(1)LSA的基本概念

LS Age:当LSA被始发时,该字段为0,随着LSA在网络中被泛洪,该时间逐渐累加,当到达MaxAge(缺省值为3600s)时,LSA不再用于路由计算。
LS Sequence Number:该字段用于判断LSA的新旧或是否存在重复的实例。序列号范围是0x80000001-0x7FFFFFFF,路由器始发一个LSA,序列号为0x80000001,之后每次更新序列号加1,当LSA达到最大序列号时,重新产生该LSA,并且把序列号设置为0x80000001。

2.常见LSA的类型

区域内路由计算

 在许多场合中,我们习惯使用类型值来称呼对应的LSA,例如1类LSA等同于Router LSA,2类LSA等同于Network LSA,以此类推。
区域内:设备所属的OSPF Area id相同,那么这些设备是属于区域内的关系;
区域间:设备所属的OSPF Area id不同,那么这些设备是属于区域间的关系;
区域外:有设备属于OSPF区域,但是另外一些设备不属于OSPF协议的范围,区域外;

(1)Router LSA(1类LSA)每台OSPF路由器都会产生。它描述了该路由器直连接口的信息。
Router LSA只能在所属的区域内泛洪。

(2)Router LSA使用Link来承载路由器直连接口的信息。
每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息。
路由器可能会采用一个或者多个Link来描述某个接口。

(3)Network LSA(2类LSA) :由DR产生,描述本网段的链路状态,在所属的区域内传播。
Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码。

(4)SPF算法

思考:为什么路由器的OSPF路由表中的路由没有全部出现在全局路由表中?

ospf区域内可以做到100%没有环路,区域内的路由不是邻居告诉你的。而是设备本身通过收集自身和邻居的LSA,放进LSDB,通过SPF算法,得出最短路径树,下发最优路由到路由表,RIB下载相应路由到FIB。
LSA区域内使用就是router lsa和network lsa,不但可以算出路由,并且还清楚知道本区域拓扑是如何连接!

2.区域间路由计算

(1)区域划分

1类 2类被限制在区域内,区域间不能直接传递,将OSPF区域划分成多个区域,那么1、2类LSA对设备就会减小。
ABR:不同OSPF区域之间连接的路由器(必须其中有一个区域是骨干区域area 0)

(2)区域间路由信息传递

(3)Network Summary LSA详解

(4)域内路由环路的产生

防环:

注意:OSPF要求ABR设备至少有一个接口属于骨干区域。
骨干区域:指的是OSPF area 0 ; 除了OSPF Area 0之外都是非骨干区域;
非骨干区域:不是OSPF Area 0的OSPF区域;
区域间防止环路机制1:非骨干区域不能之间互相通信,必须经过骨干区域中转,否则无法进行交互!

(5)虚连接的作用以及配置

OSPF要求骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域在逻辑上连续。
虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。
注意:
虚连接的创建使OSPF协议可以通过非骨干区域通信,违背了OSPF区域间的防环规则,在某些场景下会导致路由环路的产生,因此不建议部署OSPF虚连接。

(6)外部路由计算

在OSPF进程下,通过如下命令引入外部路由。设备支持引入BGP、ISIS、OSPF、直连以及静态路由。
import-route { limit limit-number | { bgp [ permit-ibgp ] | direct | unr | rip [ process-id-rip ] | static | isis [ process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | type type | tag tag | route-policy route-policy-name ] * }
HCIP:处在OSPF区域AREA 0中设备一定不是ASBR;ABR ASBR;
OSPF 5类LSA本质还是路由,并且具有特点:不属于任何OSPF区域;

(7)AS-external LSA

Forwarding Address:当FA为0.0.0.0时,则到达该外部网段的流量会被发往引入这条外部路由的ASBR。而如果FA不为0.0.0.0,则流量会被发往这个转发地址。FA这一概念的引入,使得OSPF在某些特殊的场景中得以规避次优路径问题。
External Route Tag(外部路由标记):这是一个只有外部路由才能够携带的标记,常被用于部署路由策略。

(8)ASBR-Summary LSA

为什么需要4类LSA,因为5类传递时候通告adv保持不变,其他非骨干没法感知到ASBR位置的,需要设备所在的ABR产生一条4类LSA告诉本区域的设备如和到达ASBR位置!

示例:

(9)区分OSPF外部路由的2种度量值类型1

区分OSPF外部路由的2种度量值类型2

3.OSPF特性区域及其他特性

(1)传输区域和末端区域

(2)Stub区域

(3)Stub区域的路由表及3类LSA

(4)Totally Stub区域

(5)Stub区域和Totally Stub区域存在的问题

(6)NSSA区域和Totally NSSA区域

NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域的外部路由。
7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述NSSA区域引入的外部路由信息。NSSA区域的ASBR将外部路由引入该区域后,使用7类LSA描述这些路由。
7类LSA的扩散范围仅限于始发NSSA区域,7类LSA不会被注入到普通区域。
NSSA区域的ABR会将7类LSA转化为5类LSA,并将该LSA注入到骨干区域,从而在整个OSPF域内泛洪。

NSSA区域的ABR会阻挡其他区域引入的外部路由引入本区域,即NSSA区域内不会存在4类及5类LSA,为了让NSSA区域内的路由器能够通过骨干区域到达AS外部,NSSA区域的ABR会自动向该区域注入一条缺省路由,该路由采用7类LSA描述。

(7)NSSA区域与Totally NSSA区域的LSDB

场景1:
(将Area 2配置为NSSA区域):当R5将外部路由192.168.3.0/24引入NSSA区域时,R5作为ASBR生成7类LSA在Area 2内泛洪;R3生成使用7类LSA描述的缺省路由注入Area 2,Area 2内的路由器依然会收到R3注入的3类LSA,并计算出到达其他区域的区域间路由。
场景2:
(将Area2配置为Totally NSSA区域):Totally NSSA区域和NSSA区域类似,只是Totally NSSA区域的ABR会阻挡3类LSA进入该区域,因此在场景2中,R3不会将区域间路由注入Area 2,故而在R5的LSDB中,仅会看到一条描述缺省路由的3类LSA。

(8)OSPF LSA回顾

(9)路由器对LSA的处理原则

(10)在ABR执行路由汇总

(11)在ASBR执行路由汇总

R1、R3、R5分别对引入的外部路由执行路由汇总。

(12)Slient-Interface

(13)OSPF报文认证

区域视图下,配置OSPF区域的认证模式。
执行命令authentication-mode simple  [ plain plain-text | [ cipher ] cipher-text ],配置OSPF区域的认证模式。
plain表示明文口令类型。
cipher表示密文口令类型。对于MD5/HMAC-MD5认证模式,当此参数缺省时,默认为cipher类型。
配置接口认证方式。
执行命令ospf authentication-mode simple  [ plain plain-text | [ cipher ] cipher-text ],配置OSPF接口的认证模式。


http://www.mrgr.cn/p/82476377

相关文章

LeetCode 面试题 17.08 —— 马戏团人塔

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 首先,我们对人的身高按照从小到大排序,特别注意,对于身高相等的人,要按照体重从高到低排序。这时候,序列已经满足了在上面的人要比下面的人矮一点&#…

K8S上生产环境后,90%都会遇到这个故障

K8S上生产环境后,90%都会遇到这个故障 原创 didiplus 攻城狮成长日记 2024-03-26 21:30 广东 听全文在Kubernetes/K8s上生产环境中,90%的人都会遇到的一个故障,K8s集群突然有一天执行kubectl命令时,报错提示509证书过期。返回如下报错信息: Unable to connect to the serve…

Bayes判别示例数据:鸢尾花数据集

使用Bayes判别的R语言实例通常涉及使用朴素贝叶斯分类器。朴素贝叶斯分类器是一种简单的概率分类器,基于贝叶斯定理和特征之间的独立性假设。在R中,我们可以使用e1071包中的naiveBayes函数来实现这一算法。下面,我将通过一个简单的示例展示如…

二维数组打印菱形(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;char arr[5][5] { { , , *, , }, { , *, *, *, },{*, *, *, *, *}, { , *, *, *, …

Vue3+Vite开发的项目进行加密打包

本文主要介绍Vue3+Vite开发的项目如何进行加密打包。 目录 一、vite简介二、混淆工具三、使用方法1. 安装插件:2. 配置插件:3. 运行构建:4. 自定义混淆选项:5. 排除文件:下面是Vue 3+Vite开发的项目进行加密打包的方法。 一、vite简介 Vite 是一个由 Evan You 创造的现代…

2024 年最好的免费数据恢复软件,您可以尝试的几个数据恢复软件

由于系统崩溃而丢失数据可能会给用户带来麻烦。我们将重要的宝贵数据和个人数据保存在我们的 PC、笔记本电脑和其他数字设备上。您可能会因分区丢失、意外删除文件和文件夹、格式化硬盘驱动器而丢失数据。数据丢失是不幸的&#xff0c;如果您不小心从系统中删除了文件或数据&am…

Linux: Desktop Environment DE GUI

Check which desktop environment you are usingecho $XDG_CURRENT_DESKTOP FROM GUI gnome-shell --version gdm3 --version Display Manager VS Display Server Check whether Wayland or Xorg is in use(Display Server)必须使用GUI terminal, 必须是当前登录用户echo $XDG…

Thinkphp--in-sqlinjection

一、漏洞原理 在 Builder 类的 parseData 方法中&#xff0c;由于程序没有对数据进行很好的过滤&#xff0c;将数据拼接进 SQL 语句&#xff0c;导致 SQL注入漏洞 的产生。 影响版本 5.0.13<ThinkPHP<5.0.15 5.1.0<ThinkPHP<5.1.5 在相应的文件夹位置打开终端…

Util 应用框架 UI 全新升级

Util UI 已经开发多年, 并在多家公司的项目使用. 不过一直以来, Util UI 存在一些缺陷, 始终未能解决. 最近几个月, Util 团队下定决心, 终于彻底解决了所有已知缺陷. Util 应用框架 UI 介绍 Util 应用框架 UI 建立在 Angular , Ng-Zorro, Ng-Alain 基础之上, 用于开发企业中后…

ClubSphere项目主要风险和典型用户

一.项目风险分析 机会风险 一、市场风险: 1.市场接受度:市场对于我们软件的接受时间不确定,对我们的软件可能表现出较低的接受度。 2.市场发展趋势:市场未来发展不确定,对于社团软件需求可能下降。 3.市场知名度与拓展:软件前期在市场的知名度不高影响不大,极有可能被市…

RKNN Toolkit2 工具的使用

RKNN Toolkit2 是由瑞芯微电子 (Rockchip) 开发的一套用于深度学习模型优化和推理的工具。它主要面向在瑞芯微SoC上进行AI应用开发&#xff0c;但也可以用于PC平台进行模型的转换、量化、推理等操作。它支持将多种深度学习框架的模型&#xff08;如Caffe, TensorFlow, PyTorch等…

300kW直驱永磁同步电机(风力机组)的simulink模型仿真

搭建了300kW直驱永磁同步电机&#xff08;风力机组&#xff09;&#xff0c;simulink模型。该模型包括风机输入输出模型、机组与网侧控制模块、风机并网电路。采用双PWM变流器&#xff0c;基于转子磁场定向矢量控制&#xff0c;基于电网电压定向的矢量控制&#xff0c;最佳叶尖…

吾日三省吾身---对平常遇到的错误总结

✨个人主页&#xff1a; 不漫游-CSDN博客 前言 本篇文章是对平常练习遇到的问题总结&#xff0c;多吸取经验教训才能避免未来再犯~ Java语法部分 &#xff08;一&#xff09;多态 思考&#xff1a;这道题很明显考察的是多态的知识点&#xff0c;即一个对象可以被赋值给其父类…

【leetcode】快慢指针相关题目总结

141. 环形链表 判断链表是否有环&#xff1a;如果链表中存在环&#xff0c;则在链表上不断前进的指针会一直在环里绕圈子&#xff0c;且不能知道链表是否有环。使用快慢指针&#xff0c;当链表中存在环时&#xff0c;两个指针最终会在环中相遇。 /*** Definition for singly-…

MySQL/MariaDB 如何查看当前的用户

MySQL 的所有数据库用户信息是存储在 user 数据表中的。 可以在登录成功数据后运行 SQL&#xff1a; MariaDB [(none)]> select user,host from user;就可以查看到数据中的所有用户信息。 MariaDB [(none)]> select user,host from user; ERROR 1046 (3D000): No databa…

开源相机管理库Aravis例程学习(五)——camera-api

本文针对Aravis官方例程中的:03-camera-api做简单的讲解目录简介例程代码函数说明arv_camera_get_regionarv_camera_get_pixel_format_as_stringarv_camera_get_pixel_formatARV_PIXEL_FORMAT_BIT_PER_PIXEL 简介 本文针对官方例程中的:03-camera-api做简单的讲解。并介绍其中…

Java基础_集合类_List

List Collection、List接口1、继承结构2、方法 Collection实现类1、继承结构2、相关类&#xff08;1&#xff09;AbstractCollection&#xff08;2&#xff09;AbstractListAbstractSequentialList&#xff08;子类&#xff09; 其它接口RandomAccess【java.util】Cloneable【j…

MySQL三大日志(binlog,redolog,undolog)详解

转发https://segmentfault.com/a/1190000041758784 一、MySQL日志 MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中比较重要的就是二进制日志binlog(归档日志)、事务日志redo log(重做日志)和undo log(回滚日志)。 日志关系如下图:…

物联网实战--平台篇之(一)架构设计

本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 一、平台简介 物联网平台这个概念比较宽&#xff0c;大致可以分为两大类&#x…

macOS打开程序提示文件已损坏

macOS打开程序提示文件已损坏解决方案 因为macOS有一个校验机制,如果打开程序提示文件已损坏,你需要使用终端,输入codesign --force --deep --sign - "这里拖入程序" 如果遇到macOS已阻止XXXX程序打开,因为它来自未经验证的开发者,你需要进入设置,安全性和隐私…