OSPF5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文

举报
wljslmz 发表于 2024/12/17 13:48:52 2024/12/17
【摘要】 OSPF(Open Shortest Path First)是一种用于在IP网络中计算最短路径的链路状态路由协议。OSPF使用IP报文直接封装协议报文,其协议号为89。在OSPF协议中,共定义了五种重要的报文类型,分别是Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。这些报文在OSPF路由器之间进行交换,以维护邻居关系、同步链路状态数据库以及计算最短路径。 OSPF 报文头...

OSPF(Open Shortest Path First)是一种用于在IP网络中计算最短路径的链路状态路由协议。OSPF使用IP报文直接封装协议报文,其协议号为89。在OSPF协议中,共定义了五种重要的报文类型,分别是Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。这些报文在OSPF路由器之间进行交换,以维护邻居关系、同步链路状态数据库以及计算最短路径。

OSPF 报文头格式

+----------------------------------------+
|      OSPF 报文头格式                    |
+----------------------------------------+
| Version     | Type      | Packet length|
|-------------|-----------|--------------|
| Router ID   | Area ID   | Checksum     |
| AuType      | Authentication             |
+----------------------------------------+

OSPF报文头格式字段解释:

  1. Version (8 bits): OSPF的版本号。对于OSPFv2,其值为2。

  2. Type (8 bits): OSPF报文的类型,用于区分不同种类的OSPF报文:

    • 1:Hello报文。
    • 2:DD报文。
    • 3:LSR报文。
    • 4:LSU报文。
    • 5:LSAck报文。
  3. Packet length (16 bits): OSPF报文的总长度,包括报文头在内,单位为字节。

  4. Router ID (32 bits): 发送该报文的路由器标识。

  5. Area ID (32 bits): 发送该报文的设备所属区域。

  6. Checksum (16 bits): 包含除了认证字段的整个报文的校验和。

  7. AuType (16 bits): 验证类型,用于指示报文的认证方式:

    • 0:不验证。
    • 1:简单认证。
    • 2:MD5认证。
  8. Authentication (64 bits): 根据认证类型的不同,此字段的含义也不同:

    • 对于AuType为0,此字段无定义。
    • 对于AuType为1,此字段为密码信息。
    • 对于AuType为2,此字段包括Key ID、MD5验证数据长度和序列号的信息。

Hello报文

Hello报文是OSPF协议中最常用的一种报文,其主要作用是建立和维护邻接关系。路由器周期性地在启用了OSPF的接口上发送Hello报文。该报文的内容包括一些定时器的数值、DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备份指定路由器)以及已知的邻居信息。

Hello报文的重要内容包括:

  • 路由器ID(Router ID):用于唯一标识发送该报文的路由器。
  • Area ID(区域标识符):标识发送该报文的路由器所在的区域。
  • Hello Interval(Hello间隔):两次发送Hello报文的时间间隔。
  • Dead Interval(死亡间隔):在这段时间内没有收到邻居的Hello报文则认为邻居失效。
  • DR(Designated Router):指定路由器,负责向本网络的其他路由器分发LSA(链路状态通告)。
  • BDR(Backup Designated Router):备份指定路由器,当DR失效时接替其功能。
  • 已知的邻居列表:记录与本路由器已经建立邻接关系的邻居路由器的信息。

通过定时发送Hello报文,路由器能够发现邻居路由器并建立邻接关系,同时也能够监测邻居路由器的存活状态。如果在Dead Interval内没有收到某个邻居路由器的Hello报文,就会将其认定为失效,从而触发相应的路由计算和更新操作。

Hello报文在不同类型的网络中具有不同的属性,主要包括发送地址类型、发送时间间隔类型和时间间隔缺省值。

  1. 广播网络

    • 发送地址类型:使用广播地址。
    • 发送时间间隔类型:采用固定的Hello间隔,即HelloInterval。
    • 时间间隔缺省值:缺省情况下,接口发送Hello报文的时间间隔的值为10秒。
  2. NBMA(非广播多点连接网络)

    • 发送地址类型:使用单播地址。
    • 发送时间间隔类型:根据不同情况可能变化。
    • 时间间隔缺省值
      • 当路由器担任DR(Designated Router)、BDR(Backup Designated Router)或者有能力成为DR的设备时,发送时间间隔为HelloInterval。
      • 当邻居的状态为Down时,发送时间间隔为Pollinterval;其他情况为HelloInterval。
      • Hello报文的时间间隔缺省值为30秒,Pollinterval的时间间隔缺省值为120秒。
  3. 点对点(P2P)网络

    • 发送地址类型:使用组播地址。
    • 发送时间间隔类型:采用固定的Hello间隔,即HelloInterval。
    • 时间间隔缺省值:缺省情况下,接口发送Hello报文的时间间隔的值为10秒。
  4. 点对多点(P2MP)网络

    • 发送地址类型:使用组播地址。
    • 发送时间间隔类型:采用固定的Hello间隔,即HelloInterval。
    • 时间间隔缺省值:缺省情况下,接口发送Hello报文的时间间隔的值为30秒。

DD报文

DD报文在OSPF邻接关系初始化时发挥着重要作用,主要用于描述本端设备的链路状态数据库(LSDB),以实现数据库的同步。

  1. 描述本端LSDB

    • DD报文用于描述本端设备的链路状态数据库(LSDB),即本设备所了解到的网络拓扑信息。
  2. 报文内容

    • 报文内容包括LSDB中每一条LSA的Header,而LSA的Header可以唯一标识一条LSA。
    • 由于LSA Header只占一条LSA的整个数据量的一小部分,因此可以减少设备之间的协议报文流量。
  3. Master-Slave架构

    • 在两台设备交换DD报文的过程中,一台设备充当Master,另一台充当Slave。
    • Master负责规定起始序列号,并在每发送一个DD报文时序列号加1。
    • Slave方使用Master的序列号作为确认,以实现报文的可靠传输。
  4. 同步LSDB

    • 通过交换DD报文,Master和Slave设备可以同步彼此的LSDB,确保两台设备了解到相同的网络拓扑信息。

通过DD报文的交换,OSPF协议可以实现快速而准确地同步邻居设备之间的链路状态数据库,从而保证路由表的一致性和网络拓扑的准确性。

LSR报文

LSR报文在OSPF邻接关系初始化后,设备之间交换了DD(Database Description)报文之后发挥着重要作用。主要用于向对方请求更新LSA(Link State Advertisement),以实现链路状态数据库的同步。

  1. 请求更新LSA

    • LSR报文用于向对方请求更新LSA,即请求对方发送具体的LSA信息以进行数据库的同步。
  2. 报文内容

    • 报文内容包括所需要的LSA的摘要信息,通常是LSA的Header,用于识别需要更新的具体LSA。
  3. 交换过程

    • 设备之间交换DD报文后,如果发现有需要更新的LSA,则会发送LSR报文向对方请求相应LSA的更新。
  4. LSA摘要信息

    • LSR报文中包含的LSA摘要信息可以帮助对方设备确定需要更新的具体LSA,从而实现链路状态数据库的同步。

LSA的唯一标识由三个字段组成:LS type、Link State ID 和 Advertising Router。

  1. LS type

    • 表示LSA的类型,用于指示LSA的功能和作用,例如Router LSA、Network LSA等。
  2. Link State ID

    • 标识LSA所描述的对象,具体取决于LSA的类型。例如,对于Router LSA,Link State ID通常是该路由器的ID;对于Network LSA,Link State ID通常是网络的ID。
  3. Advertising Router

    • 表示发送该LSA的路由器的ID。

这三个字段的组合可以唯一标识出一个LSA。

当两个LSA的LS type、Link State ID 和 Advertising Router都相同时,需要根据其他字段来判断所需LSA的新旧。这些字段包括:

  • LS sequence number:LSA的序列号,用于标识LSA的更新顺序。序列号较大的LSA通常是较新的。
  • LS checksum:LSA的校验和,用于检测LSA的完整性。
  • LS age:LSA的年龄,表示LSA自生成以来经过的时间。年龄较小的LSA通常是较新的。

通过比较LS sequence number、LS checksum 和 LS age,可以判断出所需LSA的新旧程度,从而确定是否需要更新本地的链路状态数据库。

通过LSR报文的交换,OSPF设备可以及时地获取所需的LSA信息,确保本地的链路状态数据库与邻居设备的数据库保持同步,从而保证路由表的准确性和网络拓扑的一致性。

LSU报文

LSU(Link State Update)报文在OSPF协议中扮演着重要的角色,用于向对端设备发送其所需要的LSA或者泛洪本端更新的LSA。

  1. 发送LSA集合

    • LSU报文的主要作用是向对端设备发送多条LSA的集合,其中可能包括对方需要的LSA以及本端的更新LSA。
  2. 泛洪机制

    • 在支持组播和广播的网络中,LSU报文以组播形式将LSA泛洪出去,以确保所有的OSPF设备都能够收到更新的LSA信息。
  3. LSAck报文确认

    • 为了实现Flooding的可靠性传输,LSU报文发送后需要等待LSAck(Link State Acknowledgment)报文的确认。
    • LSU报文中包含的LSA信息将会被对端设备确认接收。对没有收到确认报文的LSA进行重传。
  4. 直接发送到邻居

    • 对于需要重传的LSA,重传的LSA会直接发送到邻居设备,以确保LSA的可靠传输。

通过LSU报文的发送和LSAck报文的确认,OSPF协议能够实现LSA信息的可靠传输和链路状态数据库的同步,从而确保路由表的准确性和网络拓扑的一致性。

LSAck报文

LSAck(Link State Acknowledgment)报文在OSPF协议中起着重要的确认作用,主要用于对接收到的LSU(Link State Update)报文进行确认。以下是LSAck报文的主要特点:

  1. 确认LSA

    • LSAck报文用来确认接收到的LSU报文中包含的LSA信息,以确保LSA的可靠传输和数据库的同步。
  2. 报文内容

    • LSAck报文的内容是需要确认的LSA的Header,即LSA的摘要信息。
    • 一个LSAck报文可以对多个LSA进行确认,通过包含这些LSA的Header来实现。
  3. 发送形式

    • 根据不同的链路,LSAck报文可以以单播或组播的形式发送。
    • 如果LSU报文是通过单播方式发送的,则LSAck报文也会以单播方式发送;如果LSU报文是通过组播方式发送的,则LSAck报文也会以组播方式发送。

通过LSAck报文的发送,OSPF设备能够向对端设备确认已经成功接收到LSU报文中的LSA信息,从而实现LSA信息的可靠传输和链路状态数据库的同步。LSAck报文的确认机制能够有效地提高OSPF协议的可靠性和稳定性。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。