首页 > 其他分享 >OSPF理论基础

OSPF理论基础

时间:2024-01-13 17:36:23浏览次数:27  
标签:协议 理论 基础 链路 路由表 OSPF 路由 路由器

由于静态路由由网络管理员手工配置,因此当网络发生变化时,静态路由需要手动调整,这制约了静态路由在现网大规模的应用。
动态路由协议因其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议之中,OSPF(Open Shortest Path First,开放式最短路径优先)协议是使用场景非常广泛的动态路由协议之一。
OSPF在RFC2328中定义,是一种基于链路状态算法的路由协议

动态路由的作用

静态路由是由工程师手动配置和维护的路由条目,命令行简单明确,适用于小型或稳定的网络。静态路由有以下问题:
无法适应规模较大的网络:随着设备数量增加,配置量急剧增加。
无法动态响应网络变化:网络发生变化,无法自动收敛网络,需要工程师手动修改。
使用动态路由就可以解决拓扑变化带来的麻烦
image

动态路由协议的分类

image

距离矢量路由协议

image

运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中。
对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远。这即是距离矢量算法的本质。

链路状态路由协议 - LSA泛洪

image

与距离矢量路由协议不同,链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)。

链路状态路由协议 - LSDB组建

image

每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑。

链路状态路由协议 - SPF计算

image

每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。

链路状态路由协议 - 路由表生成

image

最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。

链路状态路由协议总结

image

OSPF简介

OSPF是典型的链路状态路由协议,是目前业内使用非常广泛的IGP协议之一。
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明本章后续所指的OSPF均为OSPF Version 2。
运行OSPF路由器之间交互的是LS(Link State,链路状态)信息,而不是直接交互路由。LS信息是OSPF能够正常进行拓扑及路由计算的关键信息。
OSPF路由器将网络中的LS信息收集起来,存储在LSDB中。路由器都清楚区域内的网络拓扑结构,这有助于路由器计算无环路径。
每台OSPF路由器都采用SPF算法计算达到目的地的最短路径。路由器依据这些路径形成路由加载到路由表中。
OSPF支持VLSM(Variable Length Subnet Mask,可变长子网掩码),支持手工路由汇总。
多区域的设计使得OSPF能够支持更大规模的网络。

OSPF基础术语:区域

image

OSPF Area用于标识一个OSPF的区域。
区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。

OSPF基础术语:Router-ID

image

Router-ID(Router Identifier,路由器标识符),用于在一个OSPF域中唯一地标识一台路由器。
Router-ID的设定可以通过手工配置的方式,或使用系统自动配置的方式。

OSPF的基础术语:度量值

image

OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost值 = 100 Mbit/s /接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
笼统地说,一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加。

OSPF协议报文类型

image

标签:协议,理论,基础,链路,路由表,OSPF,路由,路由器
From: https://www.cnblogs.com/s101/p/17962641

相关文章

  • (坚持每天写算法)基础算法复习与学习part1基础算法1-7——高精度减法(处理t=1和t>1代码的
    题目:思路:这一道题其实和高精度加法的思路是差不多的,都是使用算式进行模拟。重点:关于代码怎么写,在高精度加法那里还看不太出来(我也没有写),但是在高精度减法这里就完全可以看出来了。我们在加法算式里面,一般是A[i]+B[i]+t,但是也可以这么写:t+A[i]+B[i],我们可以先写进位......
  • 9-函数基础
    '''函数的作用:当有一段功能代码需要重复使用,就定义函数具备某个作用的代码函数的使用:自定义函数:定义方式:def函数名():函数代码调用函数:调用函数才会执行函数内的代码函数名()#函数名其实保存的是函数的地址,加()才会调用函数的参数:当函数内部有不确定的数据值,应该......
  • Shell编程自动化之Shell编程基础
    一、Shell可以用来做什么1.自动化批量系统初始化程序;2.自动化批量软件部署程序;3.应用程序管理;4.日志分析处理程序;5.自动化备份恢复程序;6.自动化信息采集及监控程序;7.自动化管理程序;二、Shell概述1.Shell是操作系统的外壳,是用户操作系统的命令接口,是一个介于用户和系统内核......
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了
    文编|JavaBuild哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光吧,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦!我们知道Java是面向对象的静态型编程语言,在Java的世界里万物皆对象。但我......
  • Servlet基础开发
      1publicclassSomeServlet01implementsServlet{2publicSomeServlet01(){3System.out.println("————————————执行了SomeServlet01的无参构造方法————————————");4System.out.println("");5}6p......
  • Linux基础命令 [补档-2023-06-28]
    Linux基础命令1-1.命令的基本格式​Linux系统命令的通用格式为:​command[-options][parameter]​其中​-command命令本身​-options可选,非必填,它是命令的一些选项,控制命令的细节。​-parameter可选,非必填,它是命令的参数,多用......
  • 微服务系列之分布式事务理论
    概述事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。分类大多数情况下,分类是没有意义的一件事。但是分类可以一定程度上,加深理解。实现从实现角度来看,Java事务的类型有三种:JDBC事务、JTA(JavaTransactionAPI)事务、容器事务。一......
  • 运动控制理论(2)——实践例子
     目的:要知道末端点的位置。直观的向量法最直接的办法,以向量相加的形式求。 *3个向量都是参考0系构建。坐标转换法 p1 是以1系下的局部坐标。R是旋转矩阵,各列是以0系为参考的正交基。v1是平移向量,也是以0系为参考的。合并起来变成了T。T=R3*3t3*3 ,将旋转和平......
  • PHP学习第一天:初识与基础
    今天,我开始了PHP的学习之旅。PHP是一种常用的服务器端脚本语言,广泛应用于Web开发。早上,我首先了解了PHP的基本语法和结构。我学习了如何编写一个简单的PHP脚本,包括开头和结束的标记,以及如何在HTML中嵌入PHP代码。通过编写一个简单的“Hello,World!”程序,我成功地在浏览器中输出了......
  • 学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程
    Python可以用于数据库应用程序。最流行的NoSQL数据库之一是MongoDBMongoDBMongoDB将数据存储在类似JSON的文档中,使数据库非常灵活和可扩展。您可以在MongoDB官网上下载免费的MongoDB数据库PyMongoPython需要一个MongoDB驱动程序来访问MongoDB数据库。我将......