Long's Blog

  • 首页
Long's Blog
记录生活的每一份热爱!
  1. 首页
  2. 技术
  3. HCIP
  4. 正文

OSPF - Part 5:OSPF 链路状态更新 (LSU) & 链路状态通告 (LSA) 详解

2024-08-06 163点热度 0人点赞 0条评论

本文解释了OSPF 链路状态更新( LSA )数据包,并展示了它们如何包含链路状态通告( LSA )。还分析了 OSPF LSU 和 LSA 数据包结构,并解释了 OSPF LSA 数据包中的每个字段。最后,我们讨论了最常见的LSA 类型、路由器来源类型(ABR、ASBR、DR等)、它们的功能和受影响的区域。

1. OSPF Packet & LSU & LSA

每个单独的链路状态更新( LSU ) 数据包可以包含一个或多个LSA,并且当在 OSPF 路由器之间发送LSU时,它会通过网络泛洪LSA 信息。

如下图示例,OSPF 路由器向OSPF 指定路由器( DR )发送一个LSU ,其中包含有关新网络的LSA 信息:

LSA包含在 LSU 内,而 LSU 都是封装在以太网帧内的OSPF 数据包的一部分(假设是以太网网络)

通过捕获下面的OSPF 以太网帧,我们可以确认 LSU/LSA 数据包结构图。我们使用相同的颜色突出显示每个部分(LSA、LSU、OSPF Header):

[!CAUTION]

请注意,目标 IP 地址是多播地址 224.0.0.6,这是意料之中的,因为路由器使用此多播地址向指定路由器( DR ) 发送更新。

1.1 OSPF数据包结构图:

1.2 OSPF的五种报文

OSPF数据包拥有共五种报文类型,主要根据OSPF Header的Message Type进行区分,以下就按照不同的报文类型,对OSPF的报文字段进行分析。

OSPF基本Header

  • version: OSPF版本
  • Message Type: 共有五种报文
  • Packet Length:包括 Header Ospf 总长度
  • Source OSPF Router:发送者的 Router-id
  • Area ID:发送接口表示所在区域
  • Checksum: 整个数据包的校验和
  • Auth Type:
    • 0:没有认证
    • 1:明文认证
    • 2:MD5 认证
  • Auth Data: 所需要的认证信息

① Hello Packet(Hello报文)

OSPF协议使用Hello报文来建立和维护相邻邻居路由器之间的邻居关系。仅用来向邻居路由器证明自己的存在。

Hello报文被周期性(Hello Interval,默认为10秒)地发向邻居路由器接口发送,如果在设定的死亡时间(Router Dead Interval,默认为40秒,通常至少是Hello包发送时间间隔的4倍)内没有收到对方OSPF路由器发送来的Hello报文,则本地路由器会认为该对方路由器无效。

报文内容包括一些定时器设置、DR、BDR以及本路由器已知的邻居路由器。整个Hello报文格式如下表所示。

字段 长度 功能
Network Mask 4字节 发送Hello报文接口所在的子网掩码。
HelloInterval 2字节 指定发送Hello报文的时间间隔,默认为10秒。
Options 1字节 可选项,包括:E:允许泛洪AS-external-LAS;MC:允许转发IP组播报文;N/P:允许处理Type 7 LSA;DC:允许处理按需链路。
Router Priority 1字节 指定DR优先级,默认为1。数值越大越优先。如果设为0,则表示本路由器不参与DR/BDR选举。
Router Dead Interval 4字节 指定路由器失效时间,默认为40秒。如果在此时间内没有收到邻居路由器发来的Hello报文,则认为该邻居路由器已失效。
Designated Router 4字节 指定DR的接口IP地址
Backup Designated Router 4字节 指定BDR的接口IP地址
Active Neighbor 4字节 指定邻居路由器的RID。可以指定多个邻居路由器RID

② Data Description(数据库描述报文)

DD报文是用来描述本地路由器的链路状态数据库(LSDB),在两个OSPF路由器初始化连接时要交换DD报文,进行LSDB数据库同步。

DD报文内容部分包括:DD报文序列号和LSDB中每一条LSA的头部等。对端路由器根据所收到的DD报文中的LSA头部,判断出自己的LSDB中是否已有这条LSA。

由于数据库的内容可能相当长,所以可能需要多个数据库描述报文来描述整个数据库。所以有三个专门用于标识数据库描述报文序列的比特位,即DD报文格式中的I、M和M/S这三位。接收方对报文的重新排序使其能够真实地复制数据库描述报文。

DD交换过程按询问/应答方式进行,在DD报文交换中,一台为Master(主)角色,另一台为Slave(从)角色。Master路由器向从路由器发送它的路由表内容,并规定起始序列号,每发送一个DD报文,序列号加1,Slave则使用Master的序列号进行确定应答。但是显然,主从之间的关系会因每个DD交换的不同而不同。网络中的所有路由器会在不同时刻作用,在这个过程中既可能是主路由器又可能是从路由器。

对于的各字段说明如下表所示。

字段 长度 功能
Interface MTU 2字节 指出发送DD报文的接口在不分段的情况下,可以发出的最大IP报文长度。
Options 1字节 可选项,包括:E:允许泛洪AS-external-LAS;MC:允许转发IP组播报文;N/P:允许处理Type 7 LSA;DC:允许处理按需链路。
I 1比特 指定在连续发送多个DD报文,如果是第一个DD报文则置1,其它的均置0。
M 1比特 指定在连续发送多个DD报文,如果后续还有报文需传达则置1,如果是最后一个DD报文则置0。
M/S 1比特 设置进行DD报文双方的主从关系,如果本端是Master角色,则置1,否则置0。
DD Sequence Number 4字节 指定所发送的DD报文序列号。主从双方利用序列号来确保DD报文传输的可靠性和完整性。
LSA Header 4字节 指定DD报文中所包括的LSA头部。可以指定多个LSA头部。

因为DD报文仅在两台OSPF路由器初始化连接时才进行DD交换,所以它没有发送周期。之后的数据库存同步是通过LSR、LSU和LSAck报文进行同步的。

③ Link State Request(链路状态请求报文)

LSR报文用于请求相邻路由器链路状态数据库中的一部分数据。当两台路由器互相交换完DD报文后,知道对端路由器有哪些LSA是本LSDB所没有的,以及哪些LSA是已经失效的,则需要发送一个LSR报文,向对方请求所需的LSA。

LSR报文内容包括所需的LSA摘要,主要包含三个字段:Link State Type,Link State ID,Advertising Router;具体格式如下图所示:

LSR报文内容部分各字段说明如下表所示:

字段 长度 功能
LS type 4字节 OSPF指定所请求的LSA类型,总共11类,其中主要常用的共7类,其余均为特殊场景下应用,以下仅列出常见的LSA类型:第一类:Router-LSA(路由器LSA);第二类:Network-LSA(网络LSA);第三类:Network-Summary-LSA(网络汇总LSA);第四类:ASBR-Summary-LSA(ASBR汇总LSA);第五类:AS-External-LSA(自治系统外部LSA);第七类:NSSA-External-LSA(NSSA外部LSA)。
Link State ID 4字节 用于指定ospf所描述的部分区域,该字段的使用方法根据不同的LSA类型而不同:当为一类LSA时,该字段值是产生LSA 1的路由器的Router-ID;当为二类LSA时,该字段值是DR的接口地址;当为三类LSA时,该字段值是目的网络的网络地址;当为四类LSA时,该字段值是ASBR的Router-ID;当为五类LSA时,该字段值是目的网络的网络地址。
Advertising Router 4字节 指定产生此所要请求的LSA的路由器ID

④ Link State Update(链路状态更新报文)

LSU报文是回应LSR报文的请求,用来向对端路由器发送所需的LSA,内容是多条LSA完整内容的集合。

LSU报文内容部分包括此次共发送的LSA数量(Number of LSAs字段)和每条LSA(LSAs字段)的完整内容,如下图所示。

LSU报文在支持组播和多路访问的链路上是以组播方式将LSA泛洪出去的,并且对没有收到对方确认应答(就是下面将要介绍的LSAck报文)的LSA进行重传,但重传时的LSA是直接送到没有收到确认应答的邻居路由器上,而不再是泛洪。报文内容部分字段如下表所示。

字段 长度 功能
Number of LSA 4字节 指定此报文中共发送的LSA数量。
LSAs 4字节 是一条条具体的LSA完整信息,后面的省略号表示可多条LSA。

⑤ Link State Acknowledge(链路状态确认报文)

LSAck报文是路由器在收到对端发来的LSU报文后所发出的确认应答报文,内容是需要确认的LSA头部(LSA Headers)。

LSAck报文根据不同链路以单播或组播形式发送。整个LSAck报文的格式如下图所示。

Q:在OSPF路由协议中,组播地址224.0.0.5和224.0.0.6分别代表什么,在什么情况下使用?

组播地址224.0.0.5代表所有运行OSPF的路由器,DR,BDR向DRother发送DD,LS Request,LS Update报文时,其发送的目的地址是224.0.0.5。可以理解为:DRother侦听224.0.0.5。

组播地址224.0.0.6代表所有角色为DR的路由器,DRother向DR,BDR发送DD,LS Request,LS Update报文时,其发送的目的地址是224.0.0.6。可以理解为:DR侦听224.0.0.6。

2. 链路状态通告 (LSA) 数据包结构

每个LSA数据包由一个报头和一个正文组成,其中包含在 OSPF 网络内交换网络信息所需的所有信息。下图显示了 OSPF LSA 数据包的结构:

20 字节的 LSA header部分包含以下字段:

  • LS Age :LSA 从创建到现在经过的秒数(单位为秒),表示第一个LSA id 何时创建,何时会被提升。
  • Options:指示 OSPF 功能,如表。
  • LS Type:定义 LSA 类型,例如在哪里使用哪个 LSA。
  • Link State ID:标识 OSPF 路由器之间的网络链路;大多数情况下,我们了解 OSPF 进程使用的 IP 标识。
  • Advertising Router:显示原始路由器的ID,通过它可以识别OSPF的哪个进程在哪个路由器上运行。
  • LS Sequence Number:一个唯一的数字,用于过滤每个 LSA 包中过时和冗余的 LS。
  • LS Checksum:提供给 LS 用于比较和错误检测的特定数字。
  • Length:表示 LSA 数据包的长度,这意味着该 LSA 的实际大小就是正在生成的 LSA。

分享到:

  • 点击分享到 Facebook (在新窗口中打开) Facebook
  • 点击以分享到 X(在新窗口中打开) X

赞过:

赞 正在加载……

发表评论取消回复

文章目录
  • 1. OSPF Packet & LSU & LSA
    • 1.1 OSPF数据包结构图:
    • 1.2 OSPF的五种报文
  • 2. 链路状态通告 (LSA) 数据包结构
    • 20 字节的 LSA header部分包含以下字段:
最新 热点 随机
最新 热点 随机
OSPF - Part 5:OSPF 链路状态更新 (LSU) & 链路状态通告 (LSA) 详解 OSPF - Part 4:OSPF 邻居状态及邻居关系的建立 OSPF - Part 3:OSPF 邻接和邻居的概念及过程 OSPF - Part 2:OSPF 协议的工作原理和基本概念 OSPF - Part 1:关于OSPF的基本内容 HCIP学习记录(一)[IS-IS协议详解]
HCIA学习记录(二)[动态路由协议] iOS底层高级面试题整理一(I) OSPF - Part 4:OSPF 邻居状态及邻居关系的建立 HCIA学习记录(一)[静态路由与路由器工作原理] OSPF - Part 1:关于OSPF的基本内容 OSPF - Part 3:OSPF 邻接和邻居的概念及过程
标签聚合
OSPF 底层原理 路由协议 HCIP 交换机 HCIA 面试题 路由

COPYRIGHT © 2024 Long's Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

%d