Advertisement

OSPF协议基础(一)

阅读量:

OSPF是一种广泛使用的动态路由协议,基于链路状态协议,具有快速收敛、无路由环路、支持VLSM和汇总等功能。每个路由都有一个路由器ID,可以通过命令如ospf router-id手动指定或通过环回IP地址自动分配。OSPF开销基于接口带宽计算,公式为:接口开销=带宽参考值(默认100Mb/s)/带宽,最小开销为1。
OSPF通过发送链路状态公告(LSA)进行工作,LSA包含网络段、掩码、开销等信息。路由器通过发送DD、LSR、LSU、LSA等报文同步LSDB(链路状态数据库),并使用SPF算法计算最短路径。邻居关系建立于2-way状态,通过DD报文同步LSDB后进入FULL状态。DR(指定路由器)通过优先级选举和hello报文确定,BDR(次优路由器)在DR故障时进行同步。
OSPF支持的网络类型包括Point-to-Point、Broadcast、NBMA和P2MP。Point-to-Point和P2MP网络不支持DR,而Broadcast和NBMA网络支持DR和BDR。通过ospf network命令可以配置网络类型。

1.OSPF基本概念

1.1 什么是OSPF

ospf全称名称(Open Shortest Path First,OSPF)开放最短路径优先协议,是最为广泛应用的动态路由协议,属于链路状态协议。该协议具有路由变化收敛速度极快、无环路问题、支持变长子网掩码(VLSM)和网络汇总功能,同时能够实现层次区域划分等优点。

1.2路由器ID

每个路由都有一个标识码,也即路由器ID。路由器ID的格式与IP地址相同,用户可以自行设置路由器ID,具体操作如下:

复制代码
    [Huawei]ospf router-id 1.1.1.1

若未指定,OSPF进程启动后,则会自动地指定路由器ID,优先使用环回接口地址,若无环回接口地址,则会指定接口IP地址最大的。

1.3 OSPF开销

OSPF基于接口带宽计算开销,计算公式如下:

复制代码
    接口开销=带宽参考值/带宽

带宽参考值支持自定义,默认设置为100Mb/s。例如,一条10Mb/s的网络链路,其开销计算为100÷10=10,这表明带宽越大,开销越小。其最小开销值为1

2.OSPF基本工作原理

在该网络中,部署了三个路由器,如图1所示,这些路由器是如何自动学习路由信息的?这些路由器首先会发送链路状态信息(LSA),其中包含了路由器的详细配置信息,例如,以路由器1为例,其LSA内容如下:如图1所示,这些路由器的LSA信息用于构建网络拓扑图。

复制代码
    链路数量:2
    网段:192.168.1.0      掩码:255.255.255.0 网段开销:10
    网段:192.168.2.0      掩码:255.255.255.0 网段开销:10
    router id 信息
OSPF工作过程

类比说明:在路由器发送LSA信息时,可以将其类比为发送信息包到网络中的各个节点。这些信息包(LSA)类似于网络中的数据包,负责携带网络的拓扑信息和路由信息。路由器通过发送这些信息包,使得其他路由器能够了解当前网络的连接状态和路由信息,从而实现网络的高效通信。

请添加图片描述

链路状态公告(LSA):可以类比为马路信息,即上图中的A路,B路,C路,其中的

复制代码
    A路:6车道,限速80公里

这些内容属于LSA包含的信息。这些马路信息整合为地图文件(LSDB),通过地图来规划路径(路由表)。

3.OSPF基本工作流程

请添加图片描述
  • 启动:当路由器配置IP地址并启用OSPF协议后,该路由器会向配置该OSPF接口的相邻路由器发送hello报文以探测邻居。这些hello报文采用组播IP地址224.0.0.5作为目标地址,该报文仅被同一网段内的所有路由器接收。
  • 建立邻居关系:当路由器A和路由器B相互发送hello报文时,双方将交换各自的相关信息,从而建立互连关系。
    hello报文信息
信息内容 说明
版本号 本路由器使用的版本,两个路由器必须一致
优先级 本路由器的优先级,用于选举DR和BDR
路由器ID 用来标识本路由器
hello间隔 发送一个hello包的间隔
接口掩码 本接口使用的网络掩码
邻居列表 所用邻居的路由器ID,可能不止一个
请添加图片描述

第二个hello包交互完成后,成功建立邻居关系,此时处于2-way状态

完成相邻关系的建立。当相邻关系建立完成时,2-way状态下的路由器开始进行LSDB同步。在同步过程中,路由器采用DD、LSR、LSU、LSA等技术手段完成LSDB同步。具体步骤可通过图示进一步了解:

请添加图片描述

在步骤1和2中,路由器A和路由器B相互发送DD报文,并随机地赋予每个报文一个sequence编号,同时设置I、M和MS三个标志位。

复制代码
    步骤1的内容:
    DD(主)(Sequence=X)I=1 M=1 MS=1
    步骤2的内容:
    DD(主)(Sequence=Y)I=1 M=1 MS=1
复制代码
    - I表示Initiate,赋值1表示这个是第一个DD报文。
    - M表示More,赋值1表示后面还有DD报文。
    - MS表示Master,赋值1表示希望自己是主,两个路由器发送的第一个DD报文都希望自己是主。

路由器A和路由器B接收到对方的DD报文后,需要进行路由器ID的比对,其中ID较大的路由器将被指定为主路由器。在此情境中,我们假设路由器B的ID值较大。

复制代码
    DD,(从),(Sequence=Y)

在确定主从关系后,进行DD报文的交互过程。在进行DD报文交互时,主方首先发送报文,其Sequence值将按照首次发送的值进行递增处理,最终确定为Y+1。此时,步骤4和5的具体内容如下:

复制代码
    步骤4:
    DD,(主)(Sequence=Y+1)
    步骤5:
    DD(从)(Sequence=Y+1)

路由器A与路由器B接收到DD报文后,分别与各自维护的LSDB进行比较。发现缺少对应的LSA后,路由器A向路由器B发送请求,以获取相应的LSA。即为步骤6,步骤6的具体内容是

复制代码
    Link State Request
  1. 路由器B收到LSR后,将对应的LSA发送给路由器A,即步骤7:
复制代码
    Link state update
  1. 路由器A收到LSU后,回应一个ACK,以确认收到,即步骤8:
复制代码
    Link State Ack

完成路由器A和B的LSDB同步后,网络达到满状态。只有在达到全连接状态时,才被视为邻接关系。

维护关系:完成LSDB同步后,达到稳定状态后,通过定期发送hello报文来维持关系的稳定。

4.邻居与邻接的关系

4.1 邻居、邻接建立条件

  • 邻居关系:路由器达到2-Way状态
  • 邻接关系:数据库同步完成

4.2 邻居与邻接的关系

两个路由器节点之间存在邻居关系时,未必存在直接连接。然而,若两个路由器节点之间存在直接连接,则它们必定是邻居关系。

4.3 OSPF状态机

请添加图片描述

状态迁移图中,Down、2-Way、Full是稳定状态,可以长期保持此状态。

5.DR和BDR

在一个网络中存在多个路由器,若要实现任意两个路由器之间建立邻接关系并同步数据库,将会导致大量的同步操作,从而效率相对较低。因此,我们建议指定一个路由器作为同步中心,其余路由器仅与该中心路由器进行同步操作,这样可以显著减少总的同步次数。被指定为同步中心的路由器将被指定为指定路由器(DR)。

5.1 如何确定DR

该方法通过路由器优先级选举来确定主导路由器(DR),其中,数值越大,其优先级越高;默认情况下,该数值设定为1;当多个路由器具有相同优先级时,系统将通过比较路由器ID来决定最终的DR身份,ID值较大的路由器将被选为DR。优先级可进行自定义设置,若设置为0,则该路由器将被排除在选举之外;DR选举通常在邻居建立阶段完成;在hello报文中,当前路由器会发送其优先级数值和ID信息。

5.2 BDR

在DR出现故障时,应更换当前DR配置,同时将hello报文发送频率设置为10秒。为确保此类故障不导致网络性能下降,建议配置一个次优路由器作为BDR。当DR故障发生后,BDR将接替完成同步任务。

5.3OSPF支持的不同网络中DR和BDR选举

OSPF网络类型 常见链路协议 是否有DR 是否和邻居建立邻接关系
Point-to-Point PPP、HDLC链路

| DR/BDR/DRother | 以太网 | 是 | DR/BDR/DRotherBDR建立邻接关系
BDRDR/DRother建立邻接关系
DRother之间建立邻居关系 |
| NBMA | 帧中继 | 是 | DR/BDR/DRotherBDR建立邻接关系
BDRDR/DRother建立邻接关系
DRother之间建立邻居关系 |

P2MP 需手工指定
复制代码
    [huawei-gibabitethernet1/0/0]ospf network {p2p|p2mp|broadcast|nbma}

全部评论 (0)

还没有任何评论哟~