OSPF 链路状态通告

网络工程 ospf
2021-07-13 05:47:12

如我所见,OSPF 中有不同的数据包。你好数据包

DBD数据包

LSR

路易斯安那州立大学

LSA(致谢)

DB包包含LS Advertisement,LSR包含LSA ID和Link State Type,LSU包含LS Advertisement,LSAck也包含LSA。

但据我所知,上述 5 个数据包在邻接形成期间使用,只有在形成之后,它们才会发送 LSA 以更新路由器有关网络变化或任何此类变化的信息。

我也无法区分形成邻接时使用的 LSA 和 LSA 类型,如路由器 lsas、网络 lsas 等。

如果 LSA 类型是在形成邻接后才发送的,那么在形成邻接时使用的不同数据包是如何知道 Link State Advertisements 的呢?

4个回答

关于您的最后一条评论,我将作为单独的答案发布,因为修改现有答案会稍微改变它。让我用以下方式打破它:

第一的:

所以让我清楚这一点。如果说,路由器 A 需要与路由器 B 形成邻接关系,那么它必须交换其包含在 DBD 数据包中的 LSDB 摘要。

我不确定这只是您的措辞“交换它的 LSDB 摘要”还是您的意思是类型 3 LSA,但是让我们回想一下,同一区域的 OSPF 路由器需要具有相同的 LSDB,我的意思是它们将共享他们知道的所有 LSA 以及根据区域类型允许的所有 LSA(即 Stub、Totally Stub、NSSA、Totally NSSA)。

第二:

并且 DBD 数据包包含 LSA 标头,而 LSA 标头又包含 LSA 类型(路由器 LSA 或网络 LSA 等)。

这个过程确实在使用 DBD 数据包以及类型 3、4 和 5 数据包时生效。让我们看看每一个都包含什么:

  • 数据库描述 - 类型 2

    • OSPF报头
    • 序列号
    • LSA 头
  • 链路状态请求 - 类型 3

    • OSPF报头
    • 链接状态类型
    • 链路状态 ID
    • 广告路由器
  • 链接状态更新 - 类型 4

    • OSPF报头
    • 广告数量
    • 链接状态广告
  • 链路状态确认 - 类型 5

    • OSPF报头
    • LSA 头列表

第三:

因此,如果 A 和 B 路由器正在交换 DBD,那么 LS 类型不总是类型 1 或类型 2,因为来自不同区域的 2 个路由器不能直接相互通信。

请记住,每个 LSA 都有一个泛洪范围,在路由器 LSA(类型 1)和网络 LSA(类型 2)的情况下,它们有一个区域范围,这意味着它们不会跨区域边界泛洪。为此,将使用汇总 LSA(类型 3)将这些 LSA 表示到其他区域。

从前面的回答中可以看到唯一标识DBD报文中携带的LSA Header的信息。

向前:

而且,当我们说路由器 A 将路由器 LSA 发送到路由器 B 时,这是否意味着仅路由器链路状态信息或它发送的是从其他路由器接收到的 LSA?

路由器 LSA 由标准 LSA 标头和以下内容组成(我将有意省略一些与关注无关的内容)

  • 链接数
  • 链接 ID
  • 链接数据
  • 链接类型
  • 公制

严格来说,LSA T1 只有区域范围,例如 A0 中的路由器最终都会收到路由器 LSA,现在要将这些信息传送到其他区域,如 A1,您将需要 T3。

交换数据库描述符 (DBD) 数据包处于 Exchange 状态。在两台路由器完全相邻之前,它们的 LSA 数据库需要完全同步。

因此,路由器 A 将通过 DBD 数据包向路由器 B 发送它之前从其他路由器接收到的所有 LSA 列表[并安装在其 LSDB 中]。现在路由器 B 发送 LSR 来请求它没有的 LSA。这些 LSA 与您所说的“LSA 类型”相同。LSA“类型”只是 LSA 标头中的一个字段。因此,从路由器 A 请求的几个 LSA 可能是路由器 LSA、网络 LSA 等。

现在在形成邻接之后(即在完全同步之后),路由器通告的任何 LSA 都将到达所有路由器(除非 LSA 类型阻止它)。

正确,OSPF 使用五种数据包类型:

  • 你好 - 类型 1
  • 数据库描述 - 类型 2
  • 链路状态请求 - 类型 3
  • 链接状态更新 - 类型 4
  • 链路状态确认 - 类型 5

需要七个邻接状态:

  1. 向下
  2. 在里面
  3. 2种方法

到这里你有双向通信: “Hello 协议负责建立和维护邻居关系。它还确保邻居之间的通信是双向的。”

  1. 启动
  2. 交换
  3. 加载中
  4. 满的

请记住,在 Exchange 步骤中,DBD 数据包具有 OSPF 标头和 LSA 标头,后者包含以下内容:

  • LS年龄
  • 选项
  • LS型
  • 身份证号
  • 广告路由器
  • LS序列号
  • LS 校验和
  • 长度

“我也无法区分形成邻接时使用的 LSA 和 LSA 类型,如路由器 lsas、网络 lsas 等。如果仅在形成邻接后发送 LSA 类型,那么形成邻接时使用的不同数据包怎么知道关于链接状态广告?”

A/ 基本上剖析标题。数据库描述通过来自 LSA 头的 LS 类型和 Link-State 请求包字段 LS 类型,都指定(例如:路由器 lsa、摘要 lsa、nssa)。

“如果路由器 A 在数据库中只有直接连接的网络,并且没有从其他路由器收到任何 LSA,那么它如何将收到的 LSA 发送到其他连接的路由器,比如路由器 B。”

A/ 我会详细说明我认为您的疑问,如果不是,请更正。

“然后路由器-LSA 描述路由器与该区域的工作连接(即接口或链路)。每条链路都根据所连接网络的类型进行分类。” pag127

基本上有 4 种链接类型:

  • 点对点
  • 过境
  • 存根
  • 虚拟链路

对于直接连接到路由器 (LAN) 而不是从邻居那里学习的网络,您需要在广告配置中将该网络的接口添加为被动接口,这通过 router-lsa 发生。

来自高级 Junos 服务提供商路由,第 2-19 章,“当子网未连接到任何 OSPF 邻居时,路由器会通告末节网络。为环回接口和任何被动接口通告末节网络。”

希望对您的评论有另一种理解方式:

所以让我清楚这一点。如果说,路由器 A 需要与路由器 B 形成邻接关系,那么它必须交换其包含在 DBD 数据包中的 LSDB 摘要。并且 DBD 数据包包含 LSA 标头,而 LSA 标头又包含 LSA 类型(路由器 LSA 或网络 LSA 等)。因此,如果 A 和 B 路由器正在交换 DBD,那么 LS 类型不总是类型 1 或类型 2,因为来自不同区域的 2 个路由器不能直接相互通信。而且,当我们说路由器 A 将路由器 LSA 发送到路由器 B 时,这是否意味着仅路由器链路状态信息或它发送的是从其他路由器接收到的 LSA?

请记住,OSPF 中有一个基本规则,即骨干区域 (A0) 中必须始终存在一条支路。连接到 BB 区域和不同区域的路由器被认为是 ABR(区域边界路由器)。取决于有多少区域,因此 ABR 的数量

您放置的场景需要在上下文中,例如您可以有R1-- a0 --R2 在这种情况下只有 T1 和 T2 就足够了。

如果您有R1-- a0 --R2-- a1 --R3 并且新的邻接位于区域 1 中的路由器 R2 和 R3 之间,则 R2 被视为 ABR,因为它在两个区域都有一条支路。现在,如果您还记得摘要 LSA(类型 3),它描述了该区域外部的网络,因此基本上来自不同区域的 T1 将被描述为 T3。

所以R2知道各自领域的R1&R3,但是R1和R3互不认识,所以T3。 “在链路状态路由协议中,每个路由器都维护一个描述自治系统拓扑的数据库。这个数据库被称为链路状态数据库。每个参与的路由器都有一个相同的数据库。”

HTH