OSPF 开放式最短路径优先

Routing 路由

路由就是通过互联的网络把信息从源地址传输到目的地址的活动。在路由表中优先级越小越优先

各厂商路由协议默认优先级有差异,文中优先级均来自华为设备

Routing Table 路由表

路由表或称路由择域信息库,是一个存储在路由器或者联网计算机中的电子表格 (文件) 或类数据库。路由表存储着指向特定网络地址的路径,包含网络周边的拓扑信息

  • destination : 目的地址,用来标识IP包的目的地址或者目的网络
  • mask : 网络掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址
  • pre : 标识路由加入IP路由表的优先级。可能到达一个目的地有多条路由,但是优先级的存在让他们先选择优先级高的路由进行利用
  • cost : 路由开销,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由
  • nexthop : 下一跳IP地址,说明IP包所经过的下一个路由器
  • interface : 输出接口,说明IP包将从该路由器哪个接口转发

选路规则默认为最长掩码匹配原则

路由表中有多条条目可以匹配目的 IP 时,采用掩码最精确的一条作为匹配项并确定下一跳

直连路由 (Direct)

直接连接网段的路由,连接在各个路由器接口网段的路由,路由器启动时可以直接得到的路由网段

默认优先级为 0

静态路由 (Static)

由网络管理员配置,而非动态决定的路由项,当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。通过调整参数可以实现默认路由、负载分担、路由备份等功能

默认优先级为 60

默认路由 (缺省路由)

目的地址为 0.0.0.0 且子网掩码为 0.0.0.0 的静态路由。当目的网段不在路由表中时,路由器会匹配该路由项进行数据转发

负载分担

当两条路由项的目的地址、掩码、优先级、度量值相同并且下一跳地址不同时,则为等价路由。等价路由可以提供流量分担

路由备份

当两条路由项仅优先级不同时,则为浮动路由。优先级高的路由为主路由,其次为备路由。在正常情况下数据会从主路由进行转发,当主路由发生故障时,则会切换到备路由进行数据转发

动态路由

通过路由协议生成路由的条目,并且能根据网络拓扑进行调整

OSPF

开放式最短路径优先 (Open Shortest Path First) 协议使用 “代价 (Cost) ” 作为路由度量。链路状态数据库 (LSDB) 用来保存当前网络拓扑结构,路由器上属于同一区域的链路状态数据库是相同的 (属于多个区域的路由器会为每个区域维护一份链路状态数据库)

OSPF 提出了 “区域 (Area) ” 的概念,一个网络可以由单一区域或者多个区域组成。其中,骨干区域 (Backbone Area) 区域是整个 OSPF 网络的核心区域,并且所有其他的区域都与之直接连接。所有的内部路由都通过骨干区域传递到其他非骨干区域。所有的区域都必须直接连接到骨干区域,如果不能创建直接连接,那么可以通过虚链路 (virtual link) 和骨干区域创建虚拟连接。默认优先级为 10

Cost 计算公式

带宽参考值 / 带宽

OSPF 报文

W_OSPF

Header 格式

  • Version : 版本号
  • Type : 类型
    • 1 : Hello 报文
    • 2 : DD 报文
    • 3 : LSR 报文
    • 4 : LSU 报文
    • 5 : LSAck 报文
  • Packet length : 总长度
  • Router ID : 路由器标识
  • Area ID : 区域标识
  • Checksum : 校验和,除认证字段的整个报文的校验和
  • Au Type : 认证类型
    • 0 : 不认证
    • 1 : simple
    • 2 : MD5
  • Authentication : 认证字段

Hello 报文格式

  • Network Mask : 网络掩码,发送Hello报文的接口所在网络的掩码
  • Hello Interval : 间隔,发送Hello报文的接口所在网络的掩码
  • Options : 选项
    • E : 允许 Flood AS-External-LSAs
    • MC : 转发 IP 组播报文
    • N/P : 处理 Type-7 LSAs
    • DC : 处理按需链路
  • Rtr Pri DR : 优先级
  • Router Dead Interval : 失效时间
  • Designated Router : DR 接口地址
  • Backup Designated Router : BDR 接口地址
  • Neighbor : 邻居

DD 报文格式

  • Interface MTU : 接口 MTU,接口最大可发出的 IP 报文长度
  • Options : 选项
    • E : 允许 Flood AS-External-LSAs
    • MC : 转发 IP 组播报文
    • N/P : 处理 Type-7 LSAs
    • DC : 处理按需链路
  • Init : 连续发送多个 DD 报文时,若是第一个 DD 报文则为 1,否则为 0
  • More : 连续发送多个 DD 报文时,是否为最后一个 DD 报文
  • Master / Slave : 主/从标识,当值为 1 时表示发送方为 Master
  • DD Sequence Number : DD 报文序列号,主从双方根据序列号来保证传输的可靠性和完整性
  • LSA Headers : LSA 头部信息

LSR 报文格式

  • LS type : LSA 类型
  • Link State ID : 链路状态 ID,根据 LSA 中的 LS Type 和 LSA Description 在路由域中描述一个 LSA
  • Advertising Router : 发起广播的路由,产生次 LSA 的路由器的 Router ID

LSU 报文格式

  • Number of LSAs : LSA 数量
  • LSA : LSA 报文

LSAck 报文格式

  • LSA Headers : LSA 头部信息,通过 LSA 头部信息确认接收到该 LSA

OSPF 邻接建立过程

  • Down : 初始状态,未收到任何 OSPF 报文。当邻居失效后会进入此状态
  • Attempt : 该状态仅发生在 NBMA 网络中,表明对端在邻居失效时间间隔 (dead interval) 超时前仍然没有回复 Hello 报文。此时路由器依然每发送轮询 Hello 报文的时间间隔 (poll interval) 向对端发送 Hello 报文
  • Init : 收到邻居发的 Hello 报文,但自身的 Router ID 不在对方的邻居列表内
  • 2-way : 收到邻居发的 Hello 报文,并且自身的 Router ID 在对方邻居列表内。如果不需要形成邻接关系则邻居状态机会停留在此状态
  • Exstart : 路由器与邻居互相发送 DD 报文,协商主从关系并确定初始 DD 报文序列号。此状态下的 DD 报文不包含任何链路状态信息摘要
  • Exchange : 确定主从关系后,路由器与邻居互相发送包含链路状态信息摘要的 DD 报文
  • Loading : DD 报文交换完成后,路由器与邻居之间互相发送 LSR、LSU、LSAck 报文,完善自身的 LSDB
  • Full : LSDB 同步完成 (LSR 重传列表为空),形成邻接关系

主从选举: 根据 Route ID 大小判断,较大方为主设备 (Master),较小方则为从设备 (Slave)

从设备需要对主设备的每个报文进行回复确认

若设备的 LSDB 不需要更新,则直接进入 Full 状态


邻居关系: OSPF 设备启动后,会通过 OSPF 接口向外发送 Hello 报文,收到 Hello 报文的 OSPF 设备会检查报文参数,如果双方一致就会形成邻居关系,两端设备互为邻居

2-way

邻接关系: 形成邻居关系后,如果两端设备交换 DD 报文和 LSA 成功后则建立起邻接关系

Full

OSPF 支持的网络类型

网络类型含义
Broadcast
(广播)
当链路层协议是 Ethernet、FDDI 时,缺省情况下,OSPF 认为网络类型是 Broadcast。在该类型的网络中 : 通常以组播形式发送 Hello 报文LSU 报文LSAck 报文。其中,224.0.0.5 的组播地址为 OSPF 设备的预留IP组播地址;224.0.0.6 的组播地址为OSPF DR/BDR 的预留 IP 组播地址。单播形式发送 DD 报文LSR 报文
Non-Broadcast Multi-Access
(NBMA)
当链路层协议是帧中继、X.25 时,缺省情况下,OSPF 认为网络类型是 NBMA。在该类型的网络中,以单播形式发送协议报文 (Hello报文、DD报文、LSR报文、LSU报文、LSAck 报文)
Point-to-Multipoint
(点到多点)
当没有链路层协议时会被视为是 Point-to-Multipoint 类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的 NBMA 改为点到多点的网络。在该类型的网络中 : 以组播形式 (224.0.0.5) 发送 Hello 报文。以单播形式发送其他协议报文 (DD 报文、LSR 报文、LSU 报文、LSAck 报文)
Point-to-Point
(点到点)
当链路层协议是 PPP、HDLC 和 LAPB 时,缺省情况下,OSPF 认为网络类型是 P2P。在该类型的网络中,以组播形式 (224.0.0.5) 发送协议报文 (Hello 报文、DD 报文、LSR 报文、LSU 报文、LSAck 报文)

DR 与 BDR

Designate router (DR、指定路由器)
Backup Disignate router (BDR、备用指定路由器)

选举条件 :

  1. 比较路由器接口优先级,越大越优先,默认值 : 1
  2. 若优先级一致,则比较 Router ID
  3. 优先级第二大则为 BDR
优先级为 0 时,设备为 DR Other,不参与选举且不抢占 DR 与 BDR

OSPF 区域

通过区域 (Area) 的概念将 OSPF 域划分成多个区域,减小 LSA 泛洪的范围,有效的把拓扑变化的影响控制在区域内,三层设备在区域边界可以做路由汇总,可以使 OSPF 支撑更大规模的组网

Area 0 为骨干区域,其他区域必须直接连接骨干区域

  • IR : Internal Router (区域内路由器)
  • ABR : Area Border Router (区域边界路由器)
  • BR : Backbone Router (骨干路由器)
  • ASBR : AS Boundary Router (自治系统边界路由器)

相关文档

rfc2328

Huawei-OSPF

上一篇
下一篇