OSPF | 3 张表 | 4 种网络 | 5 种报文 | 7 种状态 | 8 种条件

注:本文为 “OSPF | 表 | 网络类型 | 报文 | 状态 | 建立条件“ 相关文章合辑。

未整理去重。


【OSPF】OSPF 的 4 种网络类型

派大星的好朋友叮当猫已于 2022-02-17 12:33:24 修改

  • OSPF 网络类型是一个非常重要的接口变量,这个变量将影响 OSPF 在接口上的操作,例如采用什么方式发送 OSPF 协议报文,以及是否需要选举 DR、BDR 等。

  • OSPF 有 4 种网络类型,分别是 P2P、P2MP、BMA (Broadcast)、NBMA。

  • OSPF 网络类型的影响:一般情况下,链路两端的 OSPF 接口网络类型必须一致,否则双方无法建立邻居关系。

P2P (Point-to-Point 点对点)

在这里插入图片描述

  • P2P 指的是在一段链路上只能连接两台网络设备的环境,一根网线,一左一右。

  • 该环境下只有 2 台设备,也只能是 2 台设备,链路中间不能加入其他设备。如,一条链路上不能加入交换机设备。

  • 典型的例子是 PPP 链路。当接口采用 PPP 封装时,OSPF 在该接口上采用缺省网络类型是 P2P。

P2MP (Point ti Multi-Point 点到多点)

在这里插入图片描述

  • P2MP 相当于将多条 P2P 链路的一段进行捆绑得到的网络。

  • 没有一种链路层协议会被缺省的认为是 P2MP 网络类型。该类型必须由其他网络类型手动更改。

  • 常用的做法是将非全连通的 NBMA 改为点到多点的网络。

P2MP 示例图

在这里插入图片描述

MA,Multi-Access, 多路访问网络有 2 种类型:广播型多路访问网络(BMA)和非广播型多路访问(NBMA)

BMA (Broadcast Multiple Access 广播多路访问)

在这里插入图片描述

  • BMA 也被称为 Broadcast,指的是一个允许多台设备接入的、支持广播的环境。

  • 典型的例子是 Ethernet 以太网。当接口采用 Ethernet 封装时,OSPF 在该接口上采用的缺省网络类型为 BMA。

NBMA (Non-Broadcast Multiple Access 非广播多路访问)

在这里插入图片描述

  • NBMA 指的是一个允许多台网络设备接入且不支持广播的环境。

  • 典型的例子是帧中继(Frame-Relay)网络。

OSPF 网络类型可以在接口下通过命令手动修改以适应不同网络场景,如可以将 BMA 网络类型修改为 P2P。

示例:

在这里插入图片描述

配置完接口,默认是 BMA

[AR1-GigabitEthernet0/0/0] dis this
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 10.1.12.1 255.255.255.0
#
return

查看可以修改的网络类型

[AR1-GigabitEthernet0/0/0] ospf network-type ?
  broadcast  Specify OSPF broadcast network
  nbma       Specify OSPF NBMA network
  p2mp       Specify OSPF point-to-multipoint network
  p2p        Specify OSPF point-to-point network

修改为 P2P,重新建立邻居关系

[AR1-GigabitEthernet0/0/0] ospf network-type p2p

Feb 16 2022 21:54:50-08:00 AR1 %%01OSPF/3/NBR_CHG_DOWN (l)[8]:Neighbor event:neighbor state changed to Down. (ProcessId=256, NeighborAddress=2.2.2.2, NeighborEvent=KillNbr, NeighborPreviousState=Full, NeighborCurrentState=Down)

[AR1-GigabitEthernet0/0/0]

[AR1-GigabitEthernet0/0/0]

Feb 16 2022 21:54:50-08:00 AR1 %%01OSPF/3/NBR_DOWN_REASON (l)[9]:Neighbor state leaves full or changed to Down. (ProcessId=256, NeighborRouterId=2.2.2.2, NeighborAreaId=0, NeighborInterface=GigabitEthernet0/0/0,NeighborDownImmediate reason=Neighbor Down Due to Kill Neighbor, NeighborDownPrimeReason=Interface Parameter Mismatch, NeighborChangeTime=2022-02-16 21:54:50-08:00)

[AR1-GigabitEthernet0/0/0]

Feb 16 2022 21:54:56-08:00 AR1 %%01OSPF/4/NBR_CHANGE_E (l)[10]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.12.1.10, NeighborEvent=HelloReceived, NeighborPreviousState=Down, NeighborCurrentState=Init)

[AR1-GigabitEthernet0/0/0]

Feb 16 2022 21:54:56-08:00 AR1 %%01OSPF/4/NBR_CHANGE_E (l)[11]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.12.1.10, NeighborEvent=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=ExStart)

[AR1-GigabitEthernet0/0/0]

Feb 16 2022 21:54:56-08:00 AR1 %%01OSPF/4/NBR_CHANGE_E (l)[12]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.12.1.10, Neighb

orEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Exchange)

[AR1-GigabitEthernet0/0/0]

Feb 16 2022 21:54:56-08:00 AR1 %%01OSPF/4/NBR_CHANGE_E (l)[13]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.12.1.10, NeighborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loading)

[AR1-GigabitEthernet0/0/0]

Feb 16 2022 21:54:56-08:00 AR1 %%01OSPF/4/NBR_CHANGE_E (l)[14]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.12.1.10, NeighborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)


OSPF 的五种报文、七种状态、七种 LSA 类型和三张表

乐悲蔚蓝湖已于 2025-02-24 11:17:32 修改

一、OSPF 的七种 LSA 类型

  1. 路由器 LSA (Router LSA)
    • 产生者:区域内所有路由器。
    • 传播范围:仅在本区域内泛洪。
    • LS ID:始发该 LSA 的路由器 Router ID。
    • Adv Rtr:始发该 LSA 的路由器 Router ID。
    • 内容
      • TransNet 型:Link ID 为该网段 DR 的 IP 地址,Data 为本路由器在该网段的 IP 地址。
      • StubNet 型:Link ID 为该网段的网络地址,Data 为该网段的子网掩码(32 位子网掩码表示环回接口,非 32 位表示 P2P 接口)。
  2. 网络 LSA (Network LSA)
    • 产生者:区域内 DR 或 BDR 路由器。
    • 传播范围:仅在本区域内泛洪。
    • LS ID:该网段 DR 的 IP 地址。
    • Adv Rtr:始发该 LSA 的路由器(DR)的 Router ID。
    • 内容:Netmask 和 Attached Router(该网段的所有路由器的 Router-ID)。
  3. 网络汇总 LSA (Network Summary LSA)
    • 产生者:ABR 路由器。
    • 传播范围:域间路由,可泛洪到整个 AS,但始发路由器除外。
    • LS ID:自治系统区域外的某个网段的网络地址。
    • Adv Rtr:始发该 LSA 的路由器的 Router ID。
    • 内容:通告本区域内的路由器通往区域外的路由信息。如果 ABR 收到多条网络汇总 LSA,则选择代价最低的 LSA 进行通告。
  4. ASBR 汇总 LSA (ASBR Summary LSA)
    • 产生者:ABR 路由器。
    • 传播范围:泛洪到整个 AS。
    • LS ID:ASBR 的 Router ID。
    • Adv Rtr:始发该 LSA 的 ABR 的 Router ID。
    • 内容:无。用于将 ASBR 的 Router ID 传播到其他区域,告知其位置。
    • 注意:在 ASBR 直连的区域内,不会产生 4 类 LSA,因为 ASBR 会发出 1 类 LSA 指明自身为 ASBR。
  5. 自治系统外部 LSA (Autonomous System External LSA)
    • 产生者:ASBR 路由器。
    • 传播范围:域外路由,不属于某个区域,一个 LSA 即一条路由信息。
    • LS ID:外部某个网段的网络地址。
    • Adv Rtr:引入该网段的 ASBR 的 Router ID。
    • 内容:外部路由的子网掩码。
    • 特点:唯一不与具体区域相关联的 LSA,将在整个自治系统中泛洪。
  6. 组成员 LSA (Group Membership LSA)
    • 说明:目前不支持组播 OSPF (MOSPF 协议)。
  7. NSSA 外部 LSA (NSSA External LSA)
    • 产生者:ASBR 路由器。
    • 传播范围:仅在始发该 NSSA 外部 LSA 的非纯末梢区域内部泛洪。
    • 内容:与 LSA 5 类似,但在 NSSA 区域中不能有 LSA 5 报文,因此 ASBR 产生 LSA 7 报文发给本区域路由器。

二、OSPF 的七种状态

  1. Down:刚开机时,随即发送第一个 Hello 报文的状态。
  2. Init:发送第一个 Hello 报文后,等待收到对方发来的 Hello 报文的状态。
    Attempt:与 Init 状态类似,但仅用于 NBMA 接口网络类型。
  3. 2-Way:双向连接,收到邻居发来的 Hello 报文,完成 DR 和 BDR 的选举。
  4. ExStart:双方开始交换“空”的 DD 报文,通过 DD 报文中序号等摘要信息协商并选举出主从设备。
    • 目的:选举主从设备用于确定由哪台路由器开始发送 DBD 包,保证 DBD 数据库描述信息可靠交互。
    • 选举依据:与 Router-ID 有关,Router ID 较大的设备为主设备。
  5. Exchange:双方交换携带 LSA 摘要的 DD 报文,用于同步 LSDB。
  6. Loading:加载 Exchange 交换之后各自缺少的 LSA 报文(此过程会发送 LSR、LSU、LSAck 报文)。
  7. Full:同步 LSDB 完成。拓扑链路发生变化时,会发送 Hello、DD、LSR、LSU、LSAck 报文以动态刷新 LSDB。

注意事项

  1. 邻居关系与邻接关系
    • 邻居关系:仅能发送 Hello 报文
    • 邻接关系:可以发送 OSPF 的五种报文
  2. DR、BDR 和 DR Other
    • DR:指定路由器
    • BDR:备份指定路由器
    • DR Other:除 DR 和 BDR 之外的其他路由器。
  3. 关系区别
    • DR/BDR 与 DR Other 之间是邻接关系
    • BDR 与 DR 之间是邻接关系
    • DR Other 与 DR Other 之间是邻居关系

三、OSPF 的五种报文

  1. Hello 报文
    • 功能:发现、协商、维护 OSPF 邻居(周期性发送)。
    • 发现方式
      • 自动发现:发送目的 IP 地址为 224.0.0.5。
      • 手工指定(NBMA)。
    • 邻居建立条件
      • ① version 版本一致
      • ② Router ID 不一致
      • ③ Area ID 一致。
      • ④ authentication-mode 认证方式和 password 密码一致
      • ⑤ 子网掩码一致(广播、NBMA 网络要求)
      • ⑥ Hello/Dead 时间一致
      • ⑦ Option 字段的 N 位和 E 位一致
    • N 位/E 位功能
      • N=0,E=0:Stub 区域(末节区域)
      • N=0,E=1:普通区域
      • N=1,E=0:NSSA 区域(Not so 末节区域)
      • N=1:支持 7 类 LSA
      • E=1:支持 5 类 LSA
  2. DD(Database Description)报文
    • 功能:携带 LSA 的摘要信息。
    • 摘要字段:Link State Type、Link State ID、Advertiser (ADV)。
  3. LSR(Link State Request)报文
    • 功能:请求本设备缺少的 LSA 信息,通过携带 LSA 的摘要信息实现请求。
  4. LSU(Link State Update)报文
    • 功能:携带 LSA 信息的报文。
    • 特点
      • ① 收到 LSR 请求后回复。
      • ② 默认周期为 1800 秒,Dead Time 为 3600 秒。
      • ③ 网络变化时会触发更新。
  5. LSAck(Link State Acknowledgment)报文
    • 功能:确认收到 LSU 报文,携带 LSA 的摘要信息。
    • 特点:类似于快递员验收确认,仅携带 LSA 摘要,不携带完整 LSA。

四、OSPF 的三张表

  1. 邻居表
    • 命令display ospf peer
    • 功能:显示 OSPF 邻居信息。
  2. LSDB 表
    • 命令display ospf lsdb
    • 功能:存放 LSA 的数据库,用于存储链路状态信息。
  3. 路由表
    • 命令display ip routing-table
    • 功能:显示 OSPF 计算后的路由信息。

OSPF 的三张表(邻居表、LSDB 表、路由表)、LSA、LSDB、SPF 与路由表之间的关联、OSPF 建立的 8 种必要条件

Hades_Ling 于 2023-01-03 15:21:34 发布

OSPF 的三张表(邻居表、链路状态数据库表、路由表)

邻居表

记录 ospf 路由器之间的邻居状态。

<AR4>display ospf peer brief
	 OSPF Process 1 with Router ID 4.4.4.4
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State
 0.0.0.0          GigabitEthernet0/0/0             5.5.5.5          Full
 ----------------------------------------------------------------------------

LSDB 表

存在着 OSPF 的 LSA 详细信息,通过命令 display ospf lsdb 查看时为首要信息,需要查看详细的 LSA 信息需要通过 display ospf lsdb router 或 network… 等进行查看。
同一个 OSPF 网络维护着一张 LSDB 表,所有同一网络的 OSPF 路由器,其 LSDB 表都是相同的。

<AR4>display ospf lsdb
	 OSPF Process 1 with Router ID 4.4.4.4
		 Link State Database
		         Area: 0.0.0.0
 Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric
 Router    4.4.4.4         4.4.4.4            660  48    8000000C       1
 Router    5.5.5.5         5.5.5.5            660  48    8000000C       1
 Network   10.1.45.5       5.5.5.5            660  32    80000009       0

路由表

对于 OSPF 来说,存在于路由表中的 OSPF 路由,都是通过 SPF 算法计算出来的最优路由。

<AR4>display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 9        Routes : 9
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface
        4.4.4.4/32  Direct  0    0           D   127.0.0.1       LoopBack0
        5.5.5.5/32  OSPF    10   1           D   10.1.45.5       GigabitEthernet0/0/0
      10.1.45.0/24  Direct  0    0           D   10.1.45.4       GigabitEthernet0/0/0
      10.1.45.4/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
    10.1.45.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

LSA、LSDB、SPF 与路由表的关联

相互交换自己的 LSA 从而组成 LSDB。【LSDB 的形成】

通过 SPF 算法对 LSDB 中的路径信息进行一个计算,得出最优的 OSPF 路由。【路由的产生】

最优的 OSPF 路由放置在路由表中。如果存在其它路由协议的最优路由与 OSPF 的最优路由相同,将进行比较路由优先级,优先级小的信任度更高,将成为最优路由放置在路由表中。

OSPF 邻居与邻接关系建立的 8 种必要条件

先从外部出发(协议上)

  1. Version 版本(OSPFv2、OSPFv3)

  2. 区域要一致(两端链路配置的区域不一致将无法建立邻居)

  3. Router-id 不能冲突

再到内部(链路上)

  1. 认证类型 auth type/Data 要相同

  2. Netmask 掩码要求一致(两端配置的接口地址掩码要一致)

  3. Hello 时间要一致

  4. Dead 时间要一致

  5. option 中(E、N)区域类型要一致(OSPF 的是否为特殊区域)

  6. 【非必要】对于华为设备来说,并不会在意链路的 MTU 值是否一致。

在 OSPF 邻居与邻接关系建立的过程中,通常有以下必要条件:

外部:协议层面

  1. 版本一致:OSPFv2 和 OSPFv3 不能直接兼容,因此版本必须一致。
  2. 区域一致:两端设备必须配置在同一个 OSPF 区域(Area ID)中。
  3. Router-ID 唯一:Router-ID 必须在 OSPF 网络中唯一,不能冲突。

内部:链路层面

  1. 认证类型一致:认证方法(如 MD5 或明文)和认证数据必须匹配。

  2. Hello 和 Dead 时间间隔一致:Hello 时间间隔和 Dead 时间间隔必须相同。

  3. 网络掩码一致:在广播型网络(Broadcast)中,接口的网络掩码必须一致。

  4. Options 字段一致:Options 字段中的 E-bit 和 N-bit 必须一致,这决定了区域的类型(如是否为末梢区域)。

  5. 网络类型一致:链路的 OSPF 网络类型(如广播型、点到点等)必须匹配。

  6. 【非必要】对于华为设备来说,并不会在意链路的 MTU 值是否一致。

    对于华为设备,默认情况下,DD 报文携带的 IP MTU 值为 0,且不对 MTU 值进行一致性检测。只有在启用 ospf mtu-enable 命令后,才会检查 MTU 值是否一致。因此,MTU 值在默认情况下不是必要条件,但在某些配置下可能需要一致。在上述条件中,前 8 条是 OSPF 邻居关系建立的通用必要条件,而 MTU 值的检查则取决于设备的具体配置。


via:

### OSPF协议中涉及的三及其功能 #### 1. 邻接 (Neighbor Table) 邻接记录了当前路由器与其邻居之间的关系。它主要用于维护OSPF协议运行过程中形成的邻居列,这些邻居通过定期发送Hello报文保持联系[^2]。 - **作用**: 邻接帮助路由器识别哪些设备在其直连范围内,并建立稳定的邻居关系。只有建立了邻居关系后,才能进一步交换链路状态信息。 - **内容**: 中通常包含邻居的Router ID、接口地址、优先级以及其他与邻居交互的状态参数。 #### 2. 拓扑 (Link-State Database, LSDB) 拓扑也称为链路状态数据库(LSDB),它是OSPF的核心数据结构之一。每台路由器都会构建一份完整的网络拓扑图,这图基于收到的所有链路状态通告(LSA)。 - **作用**: 拓扑存储整个区域内所有路由器的链路状态信息,使每台路由器都能掌握网络的整体布局。通过分析LSDB,路由器可以利用Dijkstra算法计算到达各个目标的最佳路径[^1]。 - **内容**: 数据库中的每一项都是一条LSA,描述了一种特定类型的链路状态更新消息。例如Type-1 LSA示单个路由器的信息,而Type-5 LSA则代外部路由[^3]。 #### 3. 路由 (Routing Table) 路由最终决定了如何转发数据包到目的地。虽然它不是直接由OSPF生成的,而是通过对LSDB进行处理得出的结果,但它却是实际指导流量走向的关键工具。 - **作用**: 提供精确的目的地IP地址对应的下一跳地址或者出口接口信息,从而完成高效的数据传输任务。 - **内容**: 包括但不限于目的网络、子网掩码、度量值(metric),以及相应的出站接口和下一跳节点等字段。 以上三种格各司其职,在OSPF的工作流程里紧密配合,共同保障了复杂环境下动态寻径的需求得以满足。 ```python # 示例代码展示如何模拟简单的OSPF结构 class OspfTables: def __init__(self): self.neighbor_table = {} self.lsdb = [] self.routing_table = {} def add_neighbor(self, router_id, state="Down"): self.neighbor_table[router_id] = {"state": state} def update_lsdb(self, lsa_entry): self.lsdb.append(lsa_entry) def calculate_routing_table(self): # 这是一个简化版的伪逻辑演示 for entry in self.lsdb: destination_network = entry[&#39;destination&#39;] metric = entry[&#39;metric&#39;] next_hop = entry.get(&#39;next_hop&#39;, None) self.routing_table[destination_network] = { &#39;metric&#39;: metric, &#39;next_hop&#39;: next_hop } ospf_instance = OspfTables() ospf_instance.add_neighbor("R2", "Full") ospf_instance.update_lsdb({"destination": "192.168.1.0/24", "metric": 1}) ospf_instance.calculate_routing_table() print(ospf_instance.routing_table) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值