OSPF(Open Shortest Pass First 开放最短路径优先),一个链路状态协议。

区别于距离矢量路由协议,OSPF 每个路由器都掌握所在区域上所有路由器的链路状态信息,了解整个网络的拓扑情况,因此可以独立的计算出到达任意目的地的路由。

另外介绍一下 RIP 的缺点:RIP 是一步一步和邻居问路,走一步看一步,并且 RIP 以跳数为计算方式,不科学。

OSPF 特点


  1. OSPF 是无类路由协议,支持 VLSM。(可变长度子网掩码)

  2. 组播地址 224.0.0.5 代表所有 OSPF 路由器的组,224.0.0.6 代表 DR(指定路由器 DesignatedRouter) /BDR(备份指定路由器 BackupDesignatedRouter)

    可以把组播地址看成一个微信群号,任何成员(组播源)往微信群(组播IP)里发送消息(组播数据),这个群里的成员(组播接收者)都会接收到此消息。
  3. SPF(最短路径优先算法)

    SPF算法也被称为Dijkstra算法,这是因为最短路径优先算法SPF是由荷兰计算机科学家狄克斯特拉于1959年提出的。 
    SPF算法将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。
  4. OSPF 支持认证。

    OSPF支持报文验证功能,只有通过验证的报文才能接收,否则将不能正常建立邻居关系。
    OSPF协议支持两种认证方式——区域认证和链路认证。
    使用区域认证时,一个区域中所有的路由器在该区域下的认证模式和口令必须一致;
    OSPF链路认证相比于区域认证更加灵活,可专门针对某个邻居设置单独的认证模式和密码。
    如果同时配置了接口认证和区域认证时,优先使用接口建立OSPF邻居。
    
    每种认证方式又分为简单验证方式、MD5验证模式和Key chain验证模式。
    简单验证模式在数据传递过程中,认证密钥和密钥ID都是明文传输,很容易被截获;
    MD5验证模式下的密钥是经过MD5加密传输,相当于简单验证模式更为安全;
    Key chain验证模式可以同时配置多个密钥,不同密钥可单独设置生效周期等。
    
    # 原文链接:https://blog.csdn.net/weixin_57636278/article/details/121036855

OSPF 区域及其作用


OSPF 协议中的区域(Area)概念用于优化大型网络的路由管理。通过将网络划分为多个区域,OSPF 减少了路由器的负载,提高了网络的扩展性和稳定性。每个区域内的路由器只维护本区域的链路状态信息(LSDB),避免链路状态数据库过大,有助于 OSPF 在大型网络中的高效应用,并通过骨干区域(Area 0)与其他区域交换路由信息。

一、OSPF 区域的两大分类:

  1. 骨干区域(Area 0):

    • 必须有且唯一:每个 OSPF 网络中必须有一个骨干区域,且只能有一个。

    • 连接其他非骨干区域:骨干区域必须连接所有非骨干区域,负责区域间的路由信息传递。

    • 一般无终端用户:骨干区域通常不包含终端用户。

  2. 非骨干区域:

    • 根据实际需求划分:这些区域根据网络拓扑和终端用户分布进行划分。

    • 必须连接 Area 0:所有非骨干区域必须直接或间接与 Area 0 相连,用来连接终端用户和资源。

二、OSPF 区域的详细分类(基于外部路由关系):

  1. 标准区域(Standard Area):

    • 可以接收完整的链路状态更新和路由汇总信息,具备基本的区域特性。

  2. 骨干区域(Area 0):

    • 除了承担标准区域的功能外,还负责在不同区域间传递路由信息。

  3. 存根区域(Stub Area):

    • 不接收来自自治系统(AS)外部的路由信息,仅依赖默认路由访问外部网络,减少路由表大小。

  4. 完全存根区域(Totally Stub Area, TStub):

    • 不接收外部 AS 路由信息及其他区域的路由信息,仅依赖默认路由,这进一步减少了路由表中的信息量。

  5. 不完全存根区域(Not-So-Stubby Area, NSSA):

    • 类似于存根区域,但允许接收通过 LSA Type 7 发送的外部路由信息,并将其转换为 LSA Type 5,以便在其他区域中传播。

路由器身份


一、从整体网络视角

  • ABR(区域边界路由器):
    作用:连接不同 OSPF 区域,通常在骨干区域(Area 0)与其他区域间传播路由信息。
    职责:将本区域路由摘要发送至 Area 0,Area 0 的 ABR 再将其传播至其他区域,确保区域间的路由可达性。

  • ASBR(自治系统边界路由器):
    作用:连接 OSPF 网络与非 OSPF 网络。
    职责:将非 OSPF 网络的路由信息引入 OSPF 网络,通过生成 Type 5 或 Type 7 LSA 来传播外部路由。

二、从单一区域的视角

  • 内部路由器:
    定义:所有接口位于同一区域内的路由器。
    职责:维护所在区域的链路状态数据库(LSDB),参与路由计算与信息传播。

  • 主干路由器:
    定义:连接骨干区域(Area 0)的路由器。
    职责:在 Area 0 内传递和处理路由信息,确保非骨干区域互通。

三、从单个网段的视角

  • DR(指定路由器):
    定义:在多访问网络中负责收集与传播 LSA 的路由器。
    职责:集中处理 LSA 交换,减少泛洪流量,维护网段内路由信息。

  • BDR(备份指定路由器):
    定义:DR 的备份,DR 失效时接替其工作。
    职责:在 DR 不可用时接替其职责。

  • DRothers:
    定义:非 DR 和 BDR 的路由器。
    职责:通过 DR 和 BDR 间接交换 LSA,不直接参与路由转发。

DR/BDR 的选举


选举 DR/BDR 的目的与作用

在一个区域中,只需要DR作为区域中心与区域外路由器建立邻居关系,并收集所有链路状态信息,这样可以减少大量开销,节省带宽,降低路由器压力。
(这里的区域指同一网段的路由器,区分area几区域)

在广播网络上,DR和BDR都使用组播地址224.0.0.6来接收链路状态更新报文。

在下面这个图中,RTA 与 RTB 只需要与 DR/BDR 建立邻接关系,而 RTA 与 RTB 之间只是邻居关系即可,可以发现,DR 可以减少广播型网络中邻接关系的数量。

选举 DR/BDR 的规则与过程

选举环境

  • OSPF 在多访问网络(如广播和 NBMA 网络)中进行 DR/BDR 的选举,而在点对点网络中不需要选举。

几种OSPF网络类型

1.广播多路访问型(如以太网)
2.非广播多路访问型NBMA(如Frame Relay帧中继,X.25广域网,ATM)
3.点到点型(如PPP,HDLC)
4.点到多点型
  • 每个多访问网络中的路由器都会参与选举,以确定一个 DR 和一个 BDR。

选举规则

  • 每个路由器都有一个 OSPF 接口的优先级值(默认是 1,范围是 0 到 255),可以通过配置更改。如果优先级为 0,该路由器不参与 DR/BDR 选举。

  • 在选举过程中,优先级最高的路由器被选为 DR,第二高的被选为 BDR。如果有多个路由器的优先级相同,则比较路由器的 Router ID(RID),RID 较高的被选为 DR/BDR。

选举过程

  1. DR 的选举:所有参与选举的路由器根据优先级比较,优先级最高的成为 DR。如果有多个优先级相同,则 Router ID 较高者当选。

  2. BDR 的选举:在选出 DR 后,优先级次高(或 Router ID 次高)的路由器会被选为 BDR。

  3. 没有重新选举的条件:

    • 当 DR 或 BDR 已经选举完成后,即使有新的路由器加入,它们不会自动抢占现有的 DR 和 BDR,除非现有的 DR 或 BDR 失效或者被移除。

  4. DR/BDR 的职责:

    • DR 负责在网络中作为路由更新的转发者,减少网络中的 LSA(链路状态通告)泛洪。

    • BDR 在 DR 失效时立即接管 DR 的职责,避免选举的延迟。

选举示例

假设有三个路由器 R1、R2 和 R3,配置如下:

  • R1:优先级 2,Router ID 为 192.168.1.1

  • R2:优先级 1,Router ID 为 192.168.1.2

  • R3:优先级 1,Router ID 为 192.168.1.3

在这种情况下:

  • R1 的优先级最高,因此它会被选为 DR。

  • R3 和 R2 优先级相同,比较 Router ID,R3 的 Router ID 较高,因此它会被选为 BDR。

最后是 DR/BDR 选举的几个小注意点:

1.只要是多路访问型网络(广播和NBMA),就会选举DR,BDR。

2.不同网段间选DR,BDR,而不是每个OSPF区域为单位选举。

3.DR,BDR,DRothers 说的都是接口,不是设备。

4.设备优先级设置为0不参与选举;DR,BDR不可以抢占;DR down掉后,BDR直升DR,重新选举BDR。

5.OSPF系统启动后,若40s内没有新设备接入就会开始选举,所以为保证DR与BDR的选举不发生意外,建议优先配置想成为DR与BDR的设备。

OSPF 工作过程概述


  1. 邻居关系的建立:OSPF 使用组播地址在所有启用 OSPF 协议的接口上发送 Hello 包,建立邻居关系并形成邻居表。

  2. 交换链路状态信息(LSA):建立邻居关系后,路由器互相发送 LSA(链路状态信息),共享路由信息。

  3. 形成链路状态数据库(LSDB):每台路由器通过接收并存储 LSA,形成其所在区域的 LSDB。

  4. SPF 算法计算最佳路径:路由器通过无环的 SPF 算法计算从源到目的的最佳路径,将结果放入路由表中。

这与 EIGRP 类似,不同的是 OSPF 不是直接交换路由表,而是交换 LSA 来逐步建立完整的拓扑信息。

一、OSPF 邻居关系的建立过程

OSPF 的邻居关系有两个层次:

  • 邻居(Neighbor):路由器之间交换了 Hello 包,但尚未交换 LSA。

  • 邻接(Adjacency):在邻居基础上,路由器间交换了 LSA 并同步了 LSDB。

邻居关系的状态变化:

  1. Down:邻居的初始状态,表示路由器未收到任何 Hello 包。

  2. Attempt(NBMA 网络特有):表示没有收到 Hello 包,但路由器在周期性发送 Hello 包。如果在 RouterDeadInterval 内没有收到 Hello 包,状态回到 Down。

  3. Init:路由器已收到来自邻居的 Hello 包,但自己尚未被邻居识别,还未建立双向通信。

  4. 2-Way:双向通信已经建立,路由器彼此在对方的 Hello 包中。到达 2-Way 状态意味着成功建立了邻居关系,但尚未建立邻接关系。

  5. ExStart:邻接关系建立的第一步,路由器开始互相发送 DD(Database Description)报文以商定主从关系,确认初始 DD 序列号。

  6. Exchange:路由器通过 DD 报文互相交换 LSDB 的摘要信息。

  7. Loading:路由器通过 LSR(链路状态请求)请求缺失的 LSA,并通过 LSU(链路状态更新)报文发送 LSA。

  8. Full:LSDB 完全同步,邻接关系正式建立。

二、OSPF 的路由更新过程

  1. 触发更新:OSPF 支持拓扑变化时的触发更新,一旦检测到链路变化或新增链路,立即发送更新报文。

  2. 周期性更新:即使没有拓扑变化,OSPF 每 30 分钟会进行一次更新,确保路由信息的一致性。

  3. LSA 处理过程:

    • 当路由器收到新的 LSA 时,首先检查该 LSA 是否已存在于本地 LSDB 中。

      • 如果该 LSA 是新的,路由器会将其加入 LSDB,回复 LSAck 确认,并继续将该 LSA 泛洪至其他邻居。同时通过 SPF 算法重新计算路由并更新路由表。

      • 如果收到的 LSA 已存在,则根据序列号判断是否较新。序列号较大的 LSA 为较新版本:

        • 如果本地 LSA 较旧,则更新本地 LSDB 并继续泛洪该 LSA,同时通过 SPF 算法重新计算最佳路径。

        • 如果本地 LSA 较新,则将本地较新的 LSA 泛洪给邻居。

泛洪机制

泛洪是 OSPF 更新 LSA 的重要机制。路由器收到 LSA 后会将其从除接收接口外的所有接口发送出去,确保 LSA 在网络中快速传播并保持同步。

这一过程确保了网络中的所有路由器可以通过互相交换信息,快速获得最新的路由信息并更新其路由表。

报文封装和 5 种报文类型


OSPF 报文封装

OSPF 报文封装在 IP 报文中,协议号为 89。

OSPF 报文类型

  1. Hello 报文:

    • 作用:最常用的 OSPF 报文,用于发现并维护邻居关系。在广播网络(如以太网)和 NBMA 网络中,还用于选举 DR(指定路由器)和 BDR(备份指定路由器)。

    • 主要内容:Router ID、邻居列表、Hello 间隔、RouterDeadInterval 等参数。

  2. DD 报文(Database Description,数据库描述报文):

    • 作用:在两台 OSPF 路由器进行 LSDB(链路状态数据库)同步时,使用 DD 报文描述各自的 LSDB 内容。DD 报文类似一个目录清单,包含 LSA(链路状态广告)条目的头部信息。

    • 主要内容:LSA 头部信息,如 LSA 类型、链路状态 ID、序列号等,用于快速比较 LSA 的新旧。

  3. LSR 报文(Link State Request,链路状态请求报文):

    • 作用:当两台路由器交换完 DD 报文后,如果一台路由器发现对方的 LSDB 中有自己缺少的 LSA,会发送 LSR 报文,明确请求对方发送这些缺失的 LSA。

    • 主要内容:请求的 LSA ID、LSA 类型等,用于指定需要的 LSA。

  4. LSU 报文(Link State Update,链路状态更新报文):

    • 作用:回应 LSR 报文,发送所请求的 LSA 给邻居,以便对方更新其 LSDB。LSU 报文也可用来主动通告网络拓扑变化。

    • 主要内容:具体的 LSA 数据,包含链路状态信息、序列号、老化时间等。

  5. LSAck 报文(Link State Acknowledgment,链路状态确认报文):

    • 作用:当路由器收到 LSU 报文后,必须发送 LSAck 报文来确认接收到的 LSA。这确保 LSA 更新过程中的可靠性,防止信息丢失。

    • 主要内容:确认的 LSA 头部信息,用于确保对方收到更新。

这五种报文通过相互协作,完成 OSPF 的邻居发现、链路状态同步和路由信息传播,确保网络中的路由器能持续更新并同步最新的网络拓扑信息。

OSPF 的 6 种常用 OSPF LSA 类型


  1. LSA Type 1:Router LSA:

    • 由谁产生:每台路由器为所属区域生成。

    • 作用:描述该区域内路由器链路的状态和代价信息。一个边界路由器(ABR)可能为每个连接的区域生成多个 Type 1 LSA。

    • 传播范围:仅限于其所在的 OSPF 区域,不跨区域传播。

  2. LSA Type 2:Network LSA:

    • 由谁产生:由指定路由器(DR)生成。

    • 作用:包含该网络中所有连接路由器的链路状态和代价信息。只有 DR 能够监测和生成此类信息。

    • 适用范围:广播网络或 NBMA 网络中,表示连接在同一网段的所有路由器。

  3. LSA Type 3:Summary LSA:

    • 由谁产生:由区域边界路由器(ABR)生成。

    • 作用:汇总并通告从 ABR 到其他区域(尤其是主干区域 area 0)的路由信息。它通常会汇总区域内的路由信息并通告给其他区域,而不是传递详细的路由信息。

    • 适用范围:跨区域传播,主要用于连接区域到 area 0 的链路信息。

  4. LSA Type 4:ASBR Summary LSA:

    • 由谁产生:由 ABR 生成。

    • 作用:通告 ASBR(自治系统边界路由器)的路由信息。与 LSA Type 3 不同,Type 4 LSA 用于描述从区域到 ASBR 的路由,而不是区域内部的路由。

    • 适用范围:用于其他区域了解如何到达 ASBR。

  5. LSA Type 5:External LSA:

    • 由谁产生:由 ASBR 生成。

    • 作用:通告自治系统外部的路由信息。Type 5 LSA 会在整个 OSPF 域中传播(除了 Stub 和完全 Stub 区域)。

    • 适用范围:用于通告从 OSPF 域外引入的外部路由(如 BGP 引入的路由)。

  6. LSA Type 7:NSSA LSA:

    • 由谁产生:由 ASBR 在 NSSA(不完全存根区域)生成。

    • 作用:通告 NSSA 区域内的外部路由信息。Type 7 LSA 在 NSSA 区域内部生成,但可通过 ABR 转换为 Type 5 LSA,以便传播到其他区域。

    • 适用范围:仅用于 NSSA 区域,允许外部路由信息的有限传播。

这些 LSA 类型通过不同的路由器和区域之间的协作,确保 OSPF 网络中路由信息的精确传播和同步,优化整个网络的路由选择。

配置命令


1. OSPF 基础配置

配置 OSPF 并启用区域

# 进入OSPF配置模式
[Huawei] ospf 1 router-id 1.1.1.1

# 在指定接口上启用OSPF(假设接口为GigabitEthernet0/0/0)
[Huawei-ospf-1] area 0
[Huawei-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

# 退出到全局模式
[Huawei-ospf-1] quit

2. 配置 OSPF 的认证

配置简单认证

# 进入接口模式(假设接口为GigabitEthernet0/0/0)
[Huawei] interface GigabitEthernet0/0/0

# 启用OSPF的简单密码认证
[Huawei-GigabitEthernet0/0/0] ospf authentication-mode simple huawei123

配置 MD5 认证

# 进入接口模式
[Huawei] interface GigabitEthernet0/0/0

# 启用OSPF的MD5认证
[Huawei-GigabitEthernet0/0/0] ospf authentication-mode md5 1 huawei123

3. 查看 OSPF 状态

查看 OSPF 基本信息

# 查看OSPF进程、Router ID、区域等信息
[Huawei] display ospf

查看邻居状态

# 查看与OSPF邻居的邻接关系状态
[Huawei] display ospf peer

查看 LSA 信息

# 查看OSPF的LSA信息
[Huawei] display ospf lsdb

4. 配置 OSPF 的 DR/BDR 优先级

配置接口优先级来影响 DR/BDR 选举

# 进入接口模式(假设接口为GigabitEthernet0/0/0)
[Huawei] interface GigabitEthernet0/0/0

# 设置OSPF接口优先级
[Huawei-GigabitEthernet0/0/0] ospf dr-priority 100

5. 配置 OSPF 的区域类型

配置 OSPF 存根区域(Stub Area)

# 进入OSPF进程配置模式
[Huawei] ospf 1

# 将area 1配置为存根区域
[Huawei-ospf-1] area 1
[Huawei-ospf-1-area-0.0.0.1] stub

配置 OSPF 完全存根区域(Totally Stub Area)

# 配置完全存根区域
[Huawei-ospf-1-area-0.0.0.1] stub no-summary

6. 配置 OSPF 静态路由重分发

在 OSPF 中重分发静态路由

# 进入OSPF进程配置模式
[Huawei] ospf 1

# 重分发静态路由到OSPF
[Huawei-ospf-1] import-route static

完。