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内部的链路质量也能影响外部路由选路的场景。

相关推荐
lingggggaaaa25 分钟前
小迪安全v2023学习笔记(五十讲)—— 持续更新中
笔记·学习·安全·web安全·网络安全
jxy pro max1 小时前
Corrosion2靶机练习笔记
服务器·网络·笔记
Antonio9151 小时前
【网络编程】WebSocket 实现简易Web多人聊天室
前端·网络·c++·websocket
全是操作2 小时前
如何调试coze-studio
笔记·ai
Yueeyuee_2 小时前
【C#学习Day14笔记】泛型、集合(数组列表Arraylist、列表list)与字典
笔记·学习·c#
wdfk_prog3 小时前
实战指南:如何将Git仓库中的特定文件夹及其历史完整迁移到另一个仓库
大数据·linux·运维·笔记·git·学习·elasticsearch
火车叨位去19494 小时前
IM即时通讯系统面试准备(一)——websocket
网络·websocket·网络协议
ThreeYear_s5 小时前
电力电子技术知识总结-----PWM知识点
笔记
她说人狗殊途5 小时前
Ajax笔记
前端·笔记·ajax