OSPF路由原理详解与关键点

2024-08-25 06:12

本文主要是介绍OSPF路由原理详解与关键点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.

 OSPF简介:

二.

 OSPF原理描述:

三. 

 OSPF的核心内容:

 四.

 OSPF的邻居关系和邻接

五.

LSA在各区域中传播的支持情况


一.

 OSPF简介:

开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。

目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。

OSPF协议是因为 Internet 社区中需要为TCP/IP协议族引入具备强大功能的非专有内部网关协议 (IGP)。关于创建Internet通用互操作IGP的讨论从1988年就开始了,但直到 1991年才正式成形。当时OSPF 工作组请求为了 Internet 草案标准的发展而考虑OSPF

OSPF 协议基于链路状态技术,不同于传统Internet 路由协议(如 RIP)中使用的基于距离矢量的算法。OSPF引入了一些新概念,如可变长度子网掩码(VLSM) 、路由汇总等。

二.

 OSPF原理描述:

Router ID

如果要运行OSPF协议,必须存在Router ID。Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。

Router ID的设定有两种方式:

  • 通过命令行手动配置,在实际网络部署中,建议手工配置OSPF的Router ID,因为这关系到协议的稳定。

  • 通过协议自动选取。

    如果没有手动配置Router ID,设备会从当前接口的IP地址中自动选取一个作为Router ID。其选取顺序是:

    1. 优先从Loopback地址中选择最大的IP地址作为Router ID。

    2. 如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为Router ID。

在路由器运行了OSPF并确定了Router ID后,如果该Router ID对应的接口Down或者接口消失(例如执行了undo interface loopback loopback-number)或者出现更大的IP地址,OSPF将仍然保持原Router ID。只有重新配置系统的Router ID或者OSPF的Router ID,并且重新启动OSPF进程后,才会进行Router ID的重新选取。

链路状态

OSPF是一种链路状态协议。可以将链路视为路由器的接口。链路状态是对接口及接口与相邻路由器的关系的描述。例如接口的信息包括接口的IP地址、掩码、所连接的网络的类型、连接的邻居等。所有这些链路状态的集合形成链路状态数据库。

COST
  • OSPF使用cost“开销”作为路由度量值。

  • 每一个激活OSPF的接口都有一个cost值。OSPF接口cost=100M/接口带宽,其中100M为OSPF的参考带宽(reference-bandwidth)。

  • 一条OSPF路由的cost由该路由从路由的起源一路到达本地的所有入接口cost值的总和。

三. 

 OSPF的核心内容:

二种认证方式:       

视图

作用

OSPF区域整个区域的在加入此区域时都需要进行认证
接口仅仅相邻的需要进行认证

 三张表:       

路由表

含义

OSPF路由表记录OSPF可达路由
OSPF邻居表记录OSPF的邻居关系等
OSPF LSDB表记录了OSPF相关的各类LSA

 四种网络类型  

网络类型

含义

广播类型(Broadcast)

当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。

在该类型的网络中:

  • 通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR( Backup Designated Router)的预留IP组播地址。
  • 以单播形式发送DD报文和LSR报文。

NBMA类型(Non-Broadcast Multi-Access)

当链路层协议是帧中继、X.25时,缺省情况下,OSPF认为网络类型是NBMA。

在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。

点到多点P2MP类型(Point-to-Multipoint)

没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。

在该类型的网络中:

  • 以组播形式(224.0.0.5)发送Hello报文。
  • 以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。

点到点P2P类型(point-to-point)

当链路层协议是PPP、HDLC和LAPB时,缺省情况下,OSPF认为网络类型是P2P。

在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。

五种报文

报文类型

报文作用

Hello报文

周期性发送,用来发现和维持OSPF邻居关系。

DD报文(Database Description packet)

描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。

LSR报文(Link State Request packet)

用于向对方请求所需的LSA。

设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。

LSU报文(Link State Update packet)

用于向对方发送其所需要的LSA。

LSAck报文(Link State Acknowledgment packet)

用来对收到的LSA进行确认。

六个区域:

区域类型

作用

普通区域

缺省情况下,OSPF区域被定义为普通区域。普通区域包括标准区域和骨干区域。

  • 标准区域是最通用的区域,它传输区域内路由,区域间路由和外部路由。
  • 骨干区域是连接所有其他OSPF区域的中央区域。骨干区域通常用Area 0表示。

STUB区域

不允许发布自治系统外部路由,只允许发布区域内路由和区域间的路由。

在STUB区域中,路由器的路由表规模和路由信息传递的数量都会大大减少。

为了保证到自治系统外的路由可达,由该区域的ABR发布Type3缺省路由传播到区域内,所有到自治系统外部的路由都必须通过ABR才能发布。

Totally STUB区域

不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。

在Totally STUB区域中,路由器的路由表规模和路由信息传递的数量都会大大减少。

为了保证到自治系统外和其他区域的路由可达,由该区域的ABR发布Type3缺省路由传播到区域内,所有到自治系统外部和其他区域的路由都必须通过ABR才能发布。

NSSA区域

NSSA区域允许引入自治系统外部路由,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中。

NSSA区域同时保留自治系统内的STUB区域的特征。

该区域的ABR发布Type7缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。

Totally NSSA区域

Totally NSSA区域允许引入自治系统外部路由,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中。

Totally NSSA区域同时保留自治系统内的Totally STUB Area区域的特征。

该区域的ABR发布Type3和Type7缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。

七类LSA(OSPFV2)

LSA类型

LSA作用

Router-LSA(Type1)

每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。

Network-LSA(Type2)

由DR(Designated Router)产生,描述本网段的链路状态,在所属的区域内传播。

Network-summary-LSA(Type3)

由ABR产生,描述区域内某个网段的路由,并通告给发布或接收此LSA的非Totally STUB或NSSA区域。例如:ABR同时属于Area0和Area1,Area0内存在网段10.1.1.0,Area1内存在网段11.1.1.0,ABR为Area0生成到网段11.1.1.0的Type3 LSA;ABR为Area1生成到网段10.1.1.0的Type3 LSA,并通告给发布或接收此LSA的非Totally Stub或NSSA区域。

ASBR-summary-LSA(Type4)

由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。

AS-external-LSA(Type5)

由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB区域和NSSA区域)。

NSSA LSA(Type7)

由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。

 四.

 OSPF的邻居关系和邻接

    在广播网和NBMA网络中,任意两台路由器之间都要传递路由信息。网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF定义了指定路由器DR和备份指定路由器BDR。通过选举产生DR(Designated Router)后,所有路由器都只将信息发送给DR,由DR将网络链路状态LSA广播出去。除DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。

简单来说就是OSPF中邻居关系是运行OSPF的路由器与被选出的DR和BDR建立邻接关系最后状态变为FULL,而非DR和BDR的邻居是只能停止在2-way关系

七种邻居关系的状态

当前状态

作用

Down
邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包
Init
从邻居收到了hello报文,但自己的router-id不在所收到的hello报文中。
2-way
从邻居收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不 需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
Exstart
开始协商主从关系,并确定DD的序列 号,此时状态为Exstart。
Exchange
主从关系协商完毕后开始发送包含摘要消息的DD报文,此时状态为Exchange
Loading
相互发送LSR、LSU、LSAck报文
Full
路由器已经完成了邻居的LSDB的同步

五.

LSA在各区域中传播的支持情况

区域类型

Router-LSA(Type1)

Network-LSA(Type2)

Network-summary-LSA(Type3)

ASBR-summary-LSA(Type4)

AS-external-LSA(Type5)

NSSA LSA(Type7)

普通区域(包括标准区域和骨干区域)

Stub区域

Totally Stub区域

NSSA区域

Totally NSSA区域


有想更深入了解的小伙伴可以在华为官网上进行学习

OSPF - 华为 (huawei.com)

有小伙伴想考数通的HCIP的和想获取相关内容文件的课件的可以进群讨论,找志同道合的人,一起讨论问题

这篇关于OSPF路由原理详解与关键点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104766

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达