ospf笔记

OSPF路由协议综合笔记

:RIP存在的问题与OSPF的优势

OSPF作为一种链路状态路由协议,旨在解决RIP协议在大规模网络中的诸多限制:

  • 跳数限制: RIP最大跳数15,不适应大规模组网;OSPF无此限制。
  • 路由更新: RIP周期性发送全部路由信息,占用带宽,收敛慢;OSPF使用组播更新变化路由和网络信息,可触发更新,收敛快。
  • 度量值: RIP以跳数作为度量值;OSPF以COST作为度量值,更精细化。
  • 路由环路: RIP易发生路由环路;OSPF采用SPF算法有效避免环路。
  • 更新周期: RIP每30秒更新;OSPF LSA每30分钟周期性更新(但变化可触发)。
  • 信息传递: RIP传递路由表;OSPF传递拓扑信息路由信息

OSPF在互联网上被广泛使用,是运用最广泛的路由协议。

一、OSPF基础

1. OSPF三张表
  • 邻居表 : 记录邻居状态和关系。
  • 拓扑表 (LSDB): 存储链路状态数据库,包含区域内的所有LSA信息,反映区域拓扑。
  • 路由表 (Routing Table): 记录由SPF算法计算出的最佳路由,存放在OSPF路由表中(display ip routing-table protocol ospf)。
2. OSPF数据包

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

  • Hello (Type 1): 周期保活,发现和建立邻居关系。
    • 关键字段: 网络掩码、Hello间隔、路由器优先级(DR/BDR选举)、Dead间隔、DR/BDR IP地址、邻居Router-ID。
    • 注意事项: Hello间隔和Dead间隔必须匹配才能建立邻居;DR/BDR选举依据优先级和Router-ID。
  • DBD (Database Description, Type 2): 仅包含LSA摘要,用于LSDB同步前的协商。
    • 关键字段: 接口MTU、Options(特殊区域标记)、I/M/MS位(I:init,M:more,MS:master)、DD序列号。
    • 主从关系: Router-ID大的成为Master。
  • LSR (Link State Request, Type 3): 请求自己没有的或更新的LSA详细信息(通过"LSA三元组"标识)。
  • LSU (Link State Update, Type 4): 封装所请求的LSA详细信息,一个LSU可包含多个LSA。
    • 泛洪: MA网络中,DRother向224.0.0.6发送,DR向224.0.0.5发送。
    • 组播地址: 224.0.0.5 (所有OSPF接口监听),224.0.0.6 (所有DR/BDR监听)。
  • LSAck (Link State Acknowledgment, Type 5): 对LSU的确认。
3. OSPF工作过程
  1. 确认可达性,建立邻居关系:
    • 通过Hello报文周期性发送,发现邻居。
    • 选举DR/BDR(在广播网络中),减少邻接关系数量,优化LSA泛洪。
      • 选举原因: 广播网络中,DR/BDR负责LSA的泛洪和同步,降低CPU和带宽消耗。
      • 选举规则: 优先级(0-255,默认1)大的优先,然后Router-ID大的优先。
      • 无抢占性: DR/BDR一旦选定,除非失效或重置OSPF进程,否则不会改变。
    • Router-ID: 唯一标识路由器,可手工配置或自动选举(环回口IP大优先,物理口IP大优先)。
  2. 邻接路由器间交换链路状态信息,同步LSDB:
    • Exstart (交换开始): 协商主从关系(Router-ID大的为Master)。
    • Exchange (交换): Master和Slave使用DBD报文交换LSDB摘要。
    • Loading (加载): 根据DBD报文,使用LSR/LSU/LSAck报文请求和传输缺失或更新的LSA详细信息。
  3. 完整信息同步,建立完全邻接关系 (Full Adjacency):
    • Full (完全邻接): 两端LSDB完全同步,可独立计算路由。
    • 注意事项: 两端MTU一致是建立FULL的前提;网络类型一致是能够学习路由的前提。
4. OSPF状态机
  • Down: 初始或关闭状态。
  • Init: 收到对方Hello,但未收到自身Hello确认。
  • Attempt: NBMA网络中,发出Hello未收到回复。
  • 2-Way: 双方互相发现,邻居状态稳定,DR/BDR选举完成。DRother之间保持2-Way。
    • 前提: Router-ID无冲突、掩码一致、区域ID一致、认证密码一致、Hello/Dead Time一致、特殊区域类型一致。
  • Exstart: DD报文交换开始,协商主从。
  • Exchange: 交换DBD报文摘要。
  • Loading: 请求/传输详细LSA。
  • Full: 达到完全邻接,LSDB同步。
5. OSPF开销计算 (Cost)
  • 参考带宽 : 默认100Mbps。建议设置为网络中最高链路带宽,以区分不同速率链路的开销。
  • 计算方法:
    • 链路带宽 >= 参考带宽,Cost = 1
    • 反之,Cost = 参考带宽 / 链路带宽 (Mbps)
  • 默认开销: 千兆以太网、百兆以太网、十兆以太网默认OSPF链路开销分别为1、1、10(需注意参考带宽)。

二、OSPF的区域划分

1. 区域产生背景与分区好处

当OSPF域路由器数量多时,单一区域会导致LSDB庞大,LSA泛洪频繁,CPU和带宽消耗大。

分区的好处:

  • 减少LSA泛洪范围。
  • 提高网络扩展性,利于组建大规模网络。
  • 优化LSDB和路由表规模。
2. 区域类型
  • 骨干区域 (Area 0): OSPF网络的中心,所有非骨干区域必须直接或间接(通过虚连接)与骨干区域相连。
  • 非骨干区域: 普通区域。
  • 特殊区域: 用于优化路由表和LSDB表,将在后续详细说明。
3. 多区互连原则
  • 非骨干区域不能直接相连。
  • 所有非骨干区域必须与骨干区域相连。
  • 此设计旨在防止区域间环路。区域内依靠SPF算法防环。
4. OSPF路由器类型
  • 区域内路由器 (IR): 所有接口都在同一区域。
  • 骨干路由器 (BR): 接口都位于骨干区域。
  • 区域边界路由器 (ABR): 连接骨干区域和非骨干区域,负责区域间路由汇总和LSA转换。
  • 自治系统边界路由器 (ASBR): 连接外部自治系统,并将外部路由引入OSPF网络。ASBR上通常运行多种路由协议或同一路由协议的多个进程。

三、OSPF不规则区域类型及解决方案

产生原因: 区域划分不合理,导致非骨干区域无法与骨干区域连通,或骨干区域被分割。

后果: 非骨干区域无法与骨干区域连通时,ABR将不会转发区域间路由信息,导致网络不通。

1. 非骨干区域无法和骨干区域保持连通

问题: 非骨干区域(例如Area 2)不直接连接骨干区域(Area 0),而是通过另一个非骨干区域(例如Area 1)连接。

解决方案:

  • 虚连接 (Virtual Link):
    • 特点: 只能在两个ABR之间配置,穿越一个非骨干区域(该区域作为传输区域)。
    • 配置:中间区域 的区域视图下配置,例如:area 1 virtual-link R-ID
    • 限制: 不能穿越Stub区域、NSSA区域。
    • 注意: 虚连接会增加路由器负担,应尽量避免,在早期规划时合理划分区域。
  • 路由引入(重发布):
    • 在连接Area 2和Area 1的路由器(R4)上,将一个OSPF进程的路由重发布到另一个OSPF进程中。
    • 角色: R4充当ASBR。
    • 命令示例: [R4-ospf-1]import-route ospf 2[R4-ospf-2]import-route ospf 1
2. 骨干区域被分割

问题: Area 0被非骨干区域隔开,导致骨干区域不连续。

解决方案:

  • 虚连接 (Virtual Link): 同样可以在被分割的骨干区域段之间建立虚连接,使其在逻辑上连通。
    • 注意: 虚连接在两个ABR上配置,穿越一个非骨干区域。

四、OSPF LSA类型详解

LSA(Link State Advertisement)是OSPF的核心,描述网络拓扑和路由信息。

LSA头部 (20字节)
  • Link-State Age: LSA老化时间,最大3600秒(MAX age),达到则失效。
  • Options: OSPF支持的特性标记(如特殊区域)。
  • Link-State Type: LSA类型(1-5, 7)。
  • Link-State ID: LSA标识,不同类型LSA定义不同。
  • Advertising Router (Adv Rtr): 产生该LSA的路由器的Router-ID。
  • Link-State Sequence Number: 用于判断LSA新旧,序列号大的为新。
  • Link-State Checksum: 校验和,用于序列号相同时的LSA新旧比较(校验和大的为新)。
  • Length: LSA总长度。
6种LSA类型 (OSPFv2)
  1. Type 1 LSA (Router LSA):

    • 定义: 描述路由器在区域内部直连的链路信息(链路类型、开销值)。
    • 传输范围: 仅在区域内部传输。
    • 产生者: 每台路由器都会产生。
    • LS ID: 产生该LSA的路由器的Router-ID。
    • Adv Rtr: 产生该LSA的路由器的Router-ID。
    • 关键内容: Link-ID、Link Data、Link Type(transnet、P2P、stubnet、Virtual)。
    • VEB标志位: V(Virtual Link Endpoint)、E(ASBR)、B(ABR)。
  2. Type 2 LSA (Network LSA):

    • 定义: 描述区域内部MA网络(广播、NBMA)的路由器及掩码信息。
    • 传输范围: 仅在区域内部传输。
    • 产生者: 只有DR才会产生。
    • LS ID: 该网段DR的IP地址。
    • Adv Rtr: 该网段DR的Router-ID。
    • 关键内容: Network Mask。
  3. Type 3 LSA (Summary LSA):

    • 定义: 描述其他区域的链路信息,以子网形式传递(类似传递路由)。
    • 传输范围: 在整个OSPF区域(除特殊区域)传递。
    • 产生者: 只有ABR会产生,并进行LSA转换。
    • LS ID: 其他区域某个网段的网络地址。
    • Adv Rtr: 通告该LSA的ABR的Router-ID。
    • 关键内容: Net Mask。
    • 注意: 跨区域传递时,通告者会变为新的ABR,因此不是同一条LSA。
  4. Type 4 LSA (ASBR-Summary LSA):

    • 定义: 描述ASBR的信息,指示ASBR的位置。
    • 传输范围: 在整个OSPF区域(除特殊区域)传递。
    • 产生者: 只有ABR才会产生。
    • LS ID: ASBR的Router-ID。
    • Adv Rtr: 通告描述该ASBR的ABR的Router-ID。
    • 注意: ASBR本区域内部的路由器不会产生到达该ASBR的4类LSA,因为它们可以通过1类LSA找到ASBR。
  5. Type 5 LSA (AS_External LSA):

    • 定义: 传递域外路由信息(从其他路由协议或静态路由引入)。
    • 传输范围: 会传播到所有区域(特殊区域除外)。
    • 产生者: 只有ASBR才会产生。
    • LS ID: 外部路由的目的网络地址。
    • Adv Rtr: 引入该网络路由的ASBR的Router-ID。
    • 关键内容: Net Mask。
  6. Type 7 LSA (NSSA LSA):

    • 定义: 描述在NSSA区域引入的AS外部路由信息。
    • 传输范围: 仅在NSSA和Totally NSSA区域内部,不能进入Area 0。
    • 产生者: NSSA区域内的ASBR。
    • 转换: NSSA区域的ABR会将其转换为Type 5 LSA通告给其他区域。
    • LS ID: 外部某个网段的网络地址。
    • Adv Rtr: 引入该网络路由的ASBR的Router-ID。
    • 路由标记: O_NSSA,优先级150。

总结: 区域内传拓扑,区域间传路由。

五、OSPF网络类型

OSPF根据二层链路类型生成不同的网络类型,影响DR/BDR选举、LSA细节和报文发送形式。

  1. NBMA (Non-Broadcast Multi-Access):

    • 特点: 帧中继默认类型。单播发送报文,需手动指定邻居
    • DR/BDR: 选举DR/BDR。
    • Timer: Hello 30s, Dead 120s。
  2. P2MP (Point-to-Multipoint):

    • 特点: 由其他网络类型手动更改。模拟组播,需手动指定邻居
    • DR/BDR: 不选举DR/BDR。
    • Timer: Hello 30s, Dead 120s。
  3. Broadcast:

    • 特点: 以太网默认类型。组播发送报文。
    • DR/BDR: 选举DR/BDR。
    • Timer: Hello 10s, Dead 40s。
  4. P2P (Point-to-Point):

    • 特点: PPP默认类型。组播发送报文。
    • DR/BDR: 不选举DR/BDR。
    • Timer: Hello 10s, Dead 40s。
    • 环回接口: 华为设备定义为P2P,无数据收发,默认学习32位主机路由。
基于OSPF的MGRE实验问题与解决
  • 问题1: Tunnel接口类型为P2P,不选举DR/BDR,导致无法正常建立邻接关系。
    • 解决: 将Tunnel接口类型更改为broadcastP2MP
  • 问题2: DR/BDR选举混乱(中心站点和分支站点在同一个广播域,分支站点之间不认识)。
    • 解决:分支站点 的DR优先级设置为0,确保中心站点成为唯一的DR。

六、OSPF特殊区域

特殊区域位于OSPF区域边缘,通常只与骨干区域相连,旨在优化路由表和LSDB规模。
特殊区域条件: 不能是骨干区域;不能存在虚链路。

  1. STUB区域 (末梢区域):

    • 目的: 减少路由表规模,不接受大量AS外部路由(Type 4/5 LSA)。
    • 特征:
      • 不接受Type 4/5 LSA。
      • 不允许出现ASBR。
      • Area 0不能是Stub。
      • ABR自动下发一条指向骨干区域的Type 3缺省路由
    • 命令: [r-ospf-1-area-0.0.0.X]stub
  2. Totally STUB区域 (完全末梢区域):

    • 目的: 更进一步减少路由表规模,不接受任何外部和区域间路由。
    • 特征:
      • 不接受Type 3/4/5 LSA。
      • 不允许出现ASBR。
      • Area 0不能是Totally Stub。
      • ABR自动下发一条指向骨干区域的Type 3缺省路由
    • 命令: [r-ospf-1-area-0.0.0.X]stub no-summary
  3. NSSA区域 (Not-So-Stubby Area):

    • 目的: Stub区域的变体,允许引入AS外部路由,但仍不接收其他区域的Type 4/5 LSA。
    • 特征:
      • 不接受Type 4/5 LSA。
      • 允许存在ASBR。
      • 本区域引入的外部路由以Type 7 LSA存在。
      • 本区域的ABR会将Type 7 LSA转换为Type 5 LSA通告给其他区域。
      • 华为:自动生成一条指向骨干区域的Type 7缺省路由
      • Area 0不能是NSSA。
    • 命令: [r-ospf-1-area-0.0.0.X]nssa
  4. Totally NSSA区域 (完全非纯末梢区域):

    • 目的: NSSA的更严格变体,不接受任何外部和区域间路由,但允许本区域引入外部路由。
    • 特征:
      • 不接受Type 3/4/5 LSA。
      • 允许存在ASBR。
      • 本区域引入的外部路由以Type 7 LSA存在。
      • 本区域的ABR会将Type 7 LSA转换为Type 5 LSA通告给其他区域。
      • ABR发送Type 3缺省路由
      • Area 0不能是Totally NSSA。
    • 命令: [r-ospf-1-area-000.X]nssa no-summary

七、OSPF路由聚合

OSPF路由只能进行手动聚合

  1. 聚合条件:

    • 针对Type 3、5、7 LSA。
    • 要求路由地址段具有连续性。
  2. 聚合类型:

    • ABR聚合 (Type 3 LSA):

      • 作用: 将一个区域的LSA聚合后发布到相邻区域。影响ABR及其下游区域的LSDB。
      • 配置:传入区域 的区域视图下配置,例如:[r-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.252.0
      • 影响: 不影响ABR本机OSPF路由条目,但影响下游路由器的OSPF路由条目。
      • 黑洞路由: ABR聚合后,会在ABR本机上产生一条该聚合的黑洞路由,防止环路。
      • Cost: 可指定聚合路由的Cost值。
      • not-advertise参数: 用于实现路由过滤,聚合前的LSA和聚合后的LSA都不会在LSDB中出现,进而影响路由学习。
    • ASBR聚合 (Type 5/7 LSA):

      • 作用: 将引入的AS外部路由聚合后发布到OSPF内部。影响ASBR的LSDB(只学习到聚合后的LSA)和下游设备的LSDB。
      • 配置:协议视图 下配置,例如:[r-ospf-1]asbr-summary 172.16.0.0 255.255.252.0
      • 影响: 不影响ASBR本机路由,但影响下游设备的路由表(只学到聚合路由)。
      • 黑洞路由: ASBR聚合后,会在ASBR本机上产生一条该聚合的黑洞路由,防止环路。
      • not-advertise参数: 同ABR聚合,用于过滤。

八、OSPF安全特性

  1. OSPF报文验证:

    • 区域验证: 在区域视图下配置,区域内所有路由器需一致。
      • [r-ospf-1-area-0.0.0.0]authentication-mode md5 1 cipher 123456
    • 接口验证: 在接口视图下配置,链路两端接口需一致。优先级高于区域验证。
      • [r-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
    • 虚链路认证: 本质是接口认证。
      • [r-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 md5 1 cipher 123456
  2. 禁止端口发送OSPF报文 (Silent Interface):

    • 目的: 防止OSPF路由信息泄露,或节省资源。
    • 命令: [r-ospf-1]silent-interface GigabitEthernet 0/0/2
  3. 路由过滤:

    • 通过filter-policy结合ACL或IP前缀列表实现。
    • 在协议视图下配置[r-ospf-1]filter-policy 2000 import (影响本机及下游OSPF表的LSA)。
    • 在区域视图下配置[r-ospf-1-area-0.0.0.1]filter-policy 2000 export (影响本机OSPF表,不影响下游,过滤LSA)。
    • 过滤Type 3/5/7 LSA: 使用聚合命令的not-advertise参数。

九、OSPF加快收敛

  1. 修改Hello/Dead时间: 减小间隔,更快发现邻居失效。
    • [r-GigabitEthernet0/0/0]ospf timer hello 5
    • [r-GigabitEthernet0/0/0]ospf timer dead 20
  2. 修改重传时间: ospf timer retransmit
  3. 修改OSPF网络类型: 确保两端网络类型一致以建立邻居。

十、OSPF缺省路由

  1. Type 3缺省: 由ABR自动下发(针对Stub/Totally Stub区域),优先级10。
  2. Type 5缺省: 手工配置,优先级150。
    • [r-ospf-1]default-route-advertise:将本机学到的缺省路由重发布到OSPF。
  3. Type 7缺省:
    • 自动下发: 通过NSSA区域配置自动下发(华为),优先级150。
    • 手工下发: 优先级150。
      • [r-ospf-1]default-route-advertise always:强制下发Type 7缺省(即使本机无缺省路由)。

十一、OSPF路由控制

  1. 优先级:
    • [r-ospf-1]preference 50:修改OSPF路由默认优先级(只影响本机学习)。
    • [r-ospf-1]preference ase 100:修改域外导入路由的默认优先级。
  2. 开销值 (Cost):
    • [r-ospf-1]bandwidth-reference 1000:修改参考带宽(需全网一致)。
    • [r-GigabitEthernet0/0/0]ospf cost 1000:修改接口开销值。
    • undo negotiation autospeed 命令:可影响接口实际传输速率,进而影响自动计算的Cost。

十二、OSPF防环与选路原则

1. OSPF防环
  • 区域间防环: 严格遵循区域划分原则(所有非骨干区域必须与骨干区域相连),可避免环路。
  • 区域内防环: OSPF使用SPF(最短路径优先)算法,确保区域内部计算出的路由信息不会出现环路。
2. OSPF选路原则

OSPF路由选路时,会根据路由的类型和Cost进行优先选择:

  1. 区域内路由 (Intra-area): Type 1/2 LSA计算出的路由。
  2. 区域间路由 (Inter-area): Type 3 LSA计算出的路由。
  3. 外部Type 1路由 (E1): AS外部路由,Cost计算包含OSPF内部Cost和外部Cost。
  4. 外部Type 2路由 (E2): AS外部路由,Cost只包含外部Cost(默认为20),OSPF内部Cost不计入。

外部路由类型区分(E1 vs E2):

  • E2 (默认): Cost值为引入时指定的外部Cost,不会累加OSPF内部Cost。适用于外部Cost已经能充分反映链路质量的场景。
  • E1: Cost值为引入时指定的外部Cost与沿途OSPF内部Cost之和。适用于希望OSPF内部的链路质量也能影响外部路由选路的场景。

相关推荐
ReedFoley5 小时前
【笔记】动手学Ollama 第七章 应用案例1 搭建本地AI Copilot编程助手
人工智能·笔记·copilot
国科安芯5 小时前
高速CANFD收发器ASM1042在割草机器人轮毂电机通信系统中的适配性研究
网络·单片机·嵌入式硬件·性能优化·机器人·硬件工程
长安即是故里5 小时前
Maxwell学习笔记
笔记·学习
晓梦.6 小时前
IPSec 安全基础
服务器·网络·安全
btyzadt7 小时前
虚拟机蓝屏问题排查与解决
linux·运维·网络
咸甜适中7 小时前
rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十四)垂直滚动条
笔记·学习·rust·egui
努力敲代码的小盆友8 小时前
[自用笔记]上传本地项目至github
笔记·github
佩佩(@ 。 @)8 小时前
网络编程-创建TCP协议服务器
服务器·网络·tcp/ip
G_H_S_3_8 小时前
【网络运维】Shell 脚本编程:while 循环与 until 循环
linux·运维·网络·shell
It_张9 小时前
Building Systems with the ChatGPT API 使用 ChatGPT API 搭建系统(第五章学习笔记及总结)
笔记·学习·chatgpt