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网络中路由信息的精确传播和同步,优化整个网络的路由选择。

如果有小伙伴想详细了解下OSPF中不同类型LSA的内容,可以点击这里看这个博主写的文章

配置命令


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

完。

graph LR; A(OSPF)-->B(OSPF特点) A-->C(OSPF区域及其作用) C-->C1(OSPF区域的两大分类) C-->C2(OSPF区域的详细分类) A-->D(路由器身份) D-->D1(从整体网络视角) D-->D2(从区域的视角) D-->D3(从网段的视角) A-->E(DR/BDR的选举) E-->E1(选举的目的与作用) E-->E2(选举的规则与过程) A-->F(OSPF工作过程概述) F-->F1(邻接关系的建立过程) F-->F2(路由更新过程) F-->F3(泛洪机制) A-->G(报文封装和5种报文类型) G-->G1(报文封装) G-->G2(报文类型) A-->H(OSPF的6种常用OSPF LSA类型) A-->I(配置命令) I-->I1(基础配置) I-->I2(认证) I-->I3(查看状态) I-->I4(配置DR/BDR优先级) I-->I5(配置OSPF区域类型) I-->I6(配置OSPF静态路由重分发)