超级干货,OSPF协议无敌详解

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

下午好,我的网工朋友。

大家都知道,为了实现高效的数据传输和网络资源利用,路由协议的选择可以说是非常重要的。

开放最短路径优先协议(Open Shortest Path First,简称OSPF)作为一种内部网关协议(IGP),因其高度的灵活性、可扩展性和可靠性,在现代网络架构中占据了重要的位置。

OSPF通过使用链路状态算法(基于Dijkstra的SPF算法),能够快速地在大型网络环境中实现路由信息的交换和路由表的更新,从而确保数据包能够沿最优路径转发。

关于OSPF的各种内容在前面给大家盘了不少,今天就来总体的精讲一下OSPF协议,先码再看

今日文章阅读福利:《 OSPF经典学习笔记(62页) 

说到OSPF,给你分享一份超经典的学习笔记,私信我,发送暗号“学习笔记”,即可获得老网工珍藏的OSPF经典学习笔记一份。

01 OSPF概述

OSPF协议自1980年代末期发展至今,已经成为一种广泛采用的动态路由协议。

最初的设计目的是解决传统距离矢量路由协议(如RIP)在大规模网络环境下存在的问题,比如慢收敛速度、路由环路等。OSPF协议采用了链路状态路由算法,这使得它能够更快地响应网络变化并维持一致的路由信息。

目前,OSPF有两个主要版本:

  • OSPFv2:主要用于IPv4网络,定义在RFC 2328中。它是OSPF的第一个广泛部署版本,支持单播和多播流量。

  • OSPFv3:随着IPv6的出现而发展起来,定义在RFC 5340中。OSPFv3不仅支持IPv6地址族,还引入了一些改进,如更灵活的多播支持和更好的安全性。

a81ab48b0d7a640a4c6e82556b510ceb.jpeg

01 OSPF与其他路由协议的对比

相比于其他动态路由协议,OSPF具有以下特点:

  • 无环路由:由于采用了链路状态算法,OSPF能够有效地避免路由环路的问题。

  • 快速收敛:当网络发生改变时,OSPF能够迅速更新路由信息,保证网络服务的连续性。

  • 层次化设计:通过划分不同的区域(Area),OSPF能够减少路由表的大小,简化路由计算,并提高网络的可管理性。

  • 灵活的度量标准:OSPF允许管理员根据网络需求配置不同的度量标准,如带宽、延迟等,以实现更加智能的路由选择。

02 OSPF的基本概念

01 区域(Area)

OSPF通过将网络划分为多个逻辑上的区域(Area)来组织和管理网络。

区域是OSPF网络的一个重要组成部分,用于将网络分割成多个逻辑组,以简化路由管理和减少LSA的数量。

主要区域类型包括:

  • 骨干区域(Area 0):这是所有其他非骨干区域必须连接的中心区域。所有区域必须直接或间接地与骨干区域相连,以确保路由信息能够在整个OSPF域内传播。

  • 普通区域:这些区域直接连接到骨干区域,可以包含路由器、网络接口和子网。

  • 末节区域(Stub Area):这种区域不接收自治系统外部的路由更新,可以减少路由表的大小。通常用于网络边缘,以减少对核心网络的影响。

  • 完全末节区域(Totally Stubby Area):除了默认路由之外,不接受任何自治系统外部的路由更新。

  • NSSA(Not-So-Stubby Area):类似于末节区域,但是允许注入自治系统外部的路由信息,同时也可以阻止某些类型的LSA进入该区域。

02 链路状态数据库(LSDB)

每个运行OSPF协议的路由器都会维护一个本地的链路状态数据库(LSDB)。

LSDB包含了路由器所知道的所有网络链接的状态信息,包括邻接关系、网络状态和度量值等。LSDB是通过路由器之间交换链路状态通告(LSA)来填充的。所有路由器最终会拥有相同的LSDB,这保证了路由的一致性。

03 路由选择表(Routing Table)

基于LSDB中的信息,每台路由器会独立运行最短路径优先(SPF)算法来计算到达每个目的网络的最佳路径,并将这些信息存储在路由选择表中。

路由选择表决定了路由器如何转发数据包到目标网络。

03 OSPF网络类型

OSPF协议支持多种网络类型,不同的网络类型影响着OSPF邻居关系的形成以及链路状态信息的传播方式。

主要的OSPF网络类型包括:

01 广播多路访问(Broadcast Multi-Access)

在广播多路访问网络中,所有设备共享同一个广播域。这类网络中,OSPF通过选举产生一个指定路由器(DR)和一个备份指定路由器(BDR)。

DR负责收集来自区域内其他路由器的信息,并将这些信息扩散给其他路由器。BDR作为DR的备份,在DR失效时接管其职责。

02 非广播多路访问(Non-Broadcast Multi-Access)

非广播多路访问网络同样支持多个设备之间的通信,但它不具备广播能力。

在NBMA网络中,OSPF同样需要选举DR和BDR。不同于广播网络的是,NBMA网络中的设备需要手动配置邻接关系,而不是自动形成。

03 点对点(Point-to-Point,如PPP链路)

点对点网络是指两个设备之间直接通信的网络,没有其他设备介入。在这种网络类型中,不需要选举DR或BDR,因为只有两个节点,它们之间可以直接形成邻接关系。

04 点到多点(Point-to-Multipoint)

点到多点网络是一种特殊类型的网络,其中有一个中心节点与多个末端节点通信。末端节点之间不直接通信。

在这种网络中,中心节点负责与末端节点建立邻接关系,并维护LSDB。点到多点网络可以配置为普通模式或完全模式(Full Point-to-Multipoint),后者意味着所有末端节点之间也会形成邻接关系。

05 网络类型对OSPF运作的影响

不同的网络类型影响着OSPF邻居发现机制和链路状态信息的传播效率。

例如,在广播网络中,通过DR和BDR的选举减少了全网范围内的LSA泛洪;而在点对点网络中,由于不存在DR/BDR选举过程,所以邻接关系的建立更为简单和快速。

04 DR&BDR选举

在OSPF协议中,为了提高网络效率并减少链路状态信息的传播次数,广播多路访问和非广播多路访问网络中需要选举产生指定路由器(DR)和备份指定路由器(BDR)。

db99f7be44470d5ce1d02bb361b10979.jpeg

01 DR的角色

指定路由器(DR)的主要职责包括:

  • 收集来自同一网络段内其他路由器的链路状态信息。

  • 将收集到的信息封装成链路状态通告(LSA)并泛洪给其他路由器。

  • 减少网络中的LSA泛洪次数,从而减轻网络负载。

02 BDR的角色

备份指定路由器(BDR)作为DR的备份,它与DR保持相同的链路状态信息。一旦DR失效,BDR可以立即接管DR的职责,从而保证网络的高可用性。

03 选举过程

DR和BDR的选举是通过发送Hello报文来进行的,这个过程遵循以下步骤:

  1. 初始阶段:所有路由器启动时,默认认为自己是DR和BDR,并开始发送Hello报文。

  2. Router ID比较:路由器通过Hello报文中携带的信息来确定彼此的存在,并基于Router ID(一个唯一的标识符,通常是路由器上最高的IP地址)来决定哪个路由器将成为DR和BDR。

  3. 最高Router ID:具有最高Router ID的路由器将成为DR,而次高的则成为BDR。

  4. 优先级设置:管理员可以通过配置路由器的优先级来影响选举结果。先级为0的路由器不会成为DR或BDR

  5. 选举稳定:一旦选举完成,DR和BDR就不再改变,除非网络状况发生变化(如DR或BDR失效)。

04 DR/BDR的重要性

DR和BDR机制提高了网络的稳定性与效率,主要体现在:

  • 减少了LSA的传播次数,因为DR充当了信息汇总和分发的角色。

  • 增加了系统的可靠性,通过BDR作为DR的备份,可以在DR故障时无缝切换。

  • 降低了网络维护成本,因为减少了不必要的LSA交换。

05 OSPF协议报文类型

OSPF协议通过五种类型的报文来实现邻居发现、链路状态信息的交换和确认等功能。

01 Hello报文

Hello报文主要用于发现邻居并维护邻居关系。它包含了发送者的一些基本信息,如Router ID、优先级等。

触发条件:定期发送(间隔时间由Hello间隔参数决定)。

内容:

  • Router ID

  • Hello/Dead间隔

  • Options字段(指示支持的功能)

  • 邻居列表(已知邻居的Router ID列表)

作用:帮助路由器发现邻居并维持邻居关系,是DR/BDR选举的基础。

02 数据库描述(Database Description, DD)报文

DD报文用于描述发送者的链路状态数据库(LSDB)的内容,以协商双方的LSDB同步。

触发条件:在两台路由器建立邻接关系的过程中发送。

内容:

  • 最近发送的LSA序列号

  • LSDB中LSA的摘要信息

作用:帮助路由器识别对方拥有的链路状态信息,并决定哪些LSA需要同步。

03 链路状态请求(Link State Request, LSR)报文

当路由器缺少某些LSA时,它会发送LSR报文请求缺失的LSA。

触发条件:在发现LSDB不同步时发送。

内容:

  • 缺失的LSA的LSID列表

作用:请求缺失的链路状态信息,以实现LSDB的同步。

04 链路状态更新(Link State Update, LSU)报文

LSU报文包含了完整的LSA信息,用于响应LSR报文或主动更新链路状态信息。

触发条件:在收到LSR报文时或当链路状态发生变化时发送。

内容:

  • 一个或多个完整的LSA

作用:发送完整LSA以更新接收方的LSDB。

05 链路状态确认(Link State Acknowledgment, LSAck)报文

LSAck报文用于确认接收到的LSU报文,确保链路状态信息的可靠传输。

触发条件:接收到LSU报文后发送。

内容:

  • 已经接收的LSA的LSID列表

作用:确认LSU报文的接收情况,确保链路状态信息的准确同步。

06 OSPF协议状态机

OSPF协议使用了一种状态机模型来管理邻居关系的不同阶段。

状态机模型描述了路由器如何通过一系列的状态转换来建立和维护与邻居路由器的关系。以下是OSPF邻居状态机的各个状态及其转换过程:

01 Down状态

这是邻居关系的初始状,表示当前路由器尚未检测到邻居的存在。

转换条件:当路由器接收到第一个Hello报文时,状态将转变为Init状态。

02 Init状态

在此状态下,路由器已经接收到邻居的Hello报文,并记录下了邻居的存在。但是,邻居尚未在其Hello报文中列出当前路由器作为邻居。

转换条件:当邻居路由器的Hello报文中包含当前路由器的Router ID时,状态将转变为Two-Way状态。

03 Two-Way状态

此状态表明双向通信已经建立,即两台路由器都在各自的Hello报文中列出了对方作为邻居。此时,双方可以进一步协商是否建立邻接关系。

转换条件:如果双方都同意建立邻接关系,则状态将转变为ExStart状态。

04 ExStart状态

在此状态下,路由器开始协商DD报文的格式,以确定双方将如何交换链路状态数据库(LSDB)的内容。这一步骤是为了确定谁先发送DD报文。

转换条件:当协商完成后,状态将转变为Exchange状态。

05 Exchange状态

在这一阶段,路由器开始交换DD报文,以共享各自LSDB的内容摘要。这一过程是为了确定哪一方的LSDB更完整或更新。

转换条件:当DD报文交换完成后,状态将转变为Loading状态。

06 Loading状态

此状态下,路由器根据之前的DD报文交换结果,发送LSR报文请求缺失的LSA,并通过LSU报文发送完整的LSA信息。

转换条件:当所有缺失的LSA都已交换完毕,并且双方的LSDB达到同步后,状态将转变为Full状态。

07 Full状态

这是邻居关系的最终状态,表示两台路由器已经建立了完全的邻接关系,双方的LSDB已经同步,并准备好了共同维护网络的路由信息。

08 状态机的作用

OSPF状态机通过有序的状态转换确保了邻居关系的建立和维护,从而实现了高效和可靠的链路状态信息交换。

每个状态都有明确的含义和转换条件,帮助路由器在复杂的网络环境中保持良好的邻居关系,并确保路由信息的一致性。

原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值