STP、距离向量、LS 和 ECMP 混淆

网络工程 路由 ospf ip 转发表
2022-02-16 01:46:06

我目前正在学习计算机网络课程,有些术语让我很困惑,我找不到它们之间的“联系”。

假设我有一个包含主机和路由器的网络,假设主机 A想要向主机 B发送一个数据包,并且它们之间有许多路由器和链接。

我认为首先网络做 STP 算法,找到最好的树在 LAN 之间发送数据包。

第二:

A中的路由进展如何?他如何知道将数据包发送给 B 的“最佳”路径是什么?

转发与此有何不同

我了解了解决路由器问题的距离向量链路状态,但是,如果A知道到B的路径,为什么路由器需要运行这个算法,而不仅仅是按照 A 告诉他们的方式发送数据包?

最后,如果有人详细说明 ECMP 以及这与我上面所问的内容之间的联系,我会很高兴,因为我很难弄清楚。

(对不起英语,不是我的母语)

3个回答

我认为首先网络做 STP 算法,找到最好的树在 LAN 之间发送数据包。

生成树不是路由协议,而是避免网络环路的协议。因此,每当网络拓扑发生变化(链路启动/关闭)时,生成树都会收集有关网络和所有相关交换机之间的链路的信息。然后它会确定一个根网桥(= 根交换机),并从该根网桥开始定义哪些链路将用于将数据从一个点分发到下一个点。生成树完成后,每个可能的连接都将使用一个链接,而其他链接将被阻止(禁用)。但是,这是在网络第 2 层上运行的协议,与 IP 或路由无关。

其次,A中的路由进展如何?他如何知道将数据包发送给 B 的“最佳”路径是什么?

在大多数情况下,通信发生在工作站和服务器之间,它们不参与任何路由协议,也不了解网络拓扑结构。

大多数房东只知道两件事:

  • 他们自己的 IP 地址和子网掩码。通常本地 IPv4 地址例如看起来像 192.168.0.42 和 255.255.255.0 子网 - 所以主机会知道它可以使用 192.168.0.x IP 地址直接与所有其他主机通信。
  • 默认网关要么通过 DHCP 获得,要么手动配置,负责本地网络之外的所有通信。例如,如果我们的主机 A 使用 192.168.0.42 想与主机 B 通信,使用 192.168.17.23,主机 A 将确定目标在他自己的网络之外,并将所有流量定向到它的默认网关。主机 A 不关心他的网关如何将流量发送到主机 B - 他只是将其发送到网关并完成。

默认网关,某种路由器,然后会查看他的本地路由表,并根据目标 IP 地址将数据包转发到下一个路由器。它不关心路由器如何将流量传送到主机 B,它只知道“这是通往目标网络的下一跳”。在某个时候,数据包将到达与主机 B 直接连接到同一网络的路由器。然后,该路由器会将数据包发送到主机 B。

该过程中的每个参与者仅决定数据包的下一跳在哪里,并将数据包发送到该站点。他们不会知道或考虑数据包必须采取的完整路线——只有下一步。

转发与此有何不同?

转发是指参与分发既不是源也不是目的地的数据包的任何站点所执行的操作的术语。主机 A 是源或发送者,主机 B 是目的地或接收者。它们之间的所有路由器只会转发数据包,因为它们既不是该通信的源也不是目标,而只是中继。

我必须在这一点上纠正自己。转发,在网络术语中,通常是指“在第 2 层中继您收到的其他人的数据”。交换机转发他们收到的帧,通过确定他们的转发表/CAM 表 (Cisco) 是否知道目标 MAC 地址在哪个端口上,然后将其发送到那里,或者如果他们不知道目的地在哪里,则将其泛洪到所有端口MAC 地址已定位。

路由器路由。(哈!)它们的作用与交换机相同,但在第 3 层 (IP) 上。他们查看他们的路由表,以确定在到达目标 IP 的过程中将特定数据包发送到哪里。

通常,转发和路由是混淆的(就像我一样),但在网络术语中,转发是第 2 层,路由是第 3 层。

我了解了解决路由器问题的距离向量和链路状态,但是,如果 A 知道到 B 的路径,为什么路由器需要运行这个算法,而不仅仅是按照 A 告诉他们的方式发送数据包?

您将路由协议与实际路由混淆了。一些路由协议实际上知道整个网络的拓扑结构,而另一些则只知道其邻居的路由表。所有这些协议共享它们用于填充路由器的路由表,因此它可以决定哪个是数据包到给定目的地的最佳路径。

为了做出这个决定,一些路由协议实际上收集了所有的网络拓扑信息,以便他们可能真正知道或至少猜测一个数据包可能采用的完整路由——但这不是他们的决定。每个路由器都会在数据包到达的那一刻决定以哪种方式转发数据包,具体取决于它的目的地。

最后,如果有人详细说明 ECMP 以及这与我上面提出的问题之间的联系,我会很高兴,因为我很难弄清楚。

等价多路径路由只是一种将具有相同源和目标的流量分配到多个链路上的方法,这些链路都具有相同的“成本”。

想象它是这样的:

你要从洛杉矶到纽约(开车)。查看谷歌地图,您会发现有两条可能的路线,一条经过丹佛,另一条经过阿尔伯克基。两条路线全长 2800 英里,时间完全相同。作为一名司机,您现在必须以同等成本的路线来选择一条路线。

但是,作为一个网络数据包,您不会做出这些决定,而是由路由器做出决定。洛杉矶的路由器现在可以选择通过丹佛发送第一个数据包,通过阿尔伯克基发送第二个数据包,通过丹佛发送第三个数据包,依此类推。这将导致两条链路/路线均等使用,而一条路线上没有交通拥堵,另一条路线上没有交通。简而言之 - 这只是一种将流量分配到相等链路以避免拥塞的方法。

您正在混合不同的概念,因此第一步是明确每个概念:

直通式

  • LAN 中的设备可以直接与同一 LAN 中的另一设备通信。当设备在 LAN 中时,它使用MAC 地址来识别其他设备。
  • 在 LAN 中意味着设备会定期发送单播(点对点)帧和广播(点对点)帧。
  • 一个局域网可以由一台或多交换机组成。
  • 为避免 LAN 因电缆或光纤问题而出现故障,网络管理员通常会进行冗余连接冗余连接会产生循环
  • STP是一种让交换机协商必须阻止哪些冗余路径以避免LAN 中出现环路的协议。每个接收到帧的交换机都会通过除阻塞端口之外的所有端口重复该帧。

路由

  • 路由器连接两个或多个 LAN。请记住,设备只能知道同一LAN的设备的 MAC 地址。为了克服这个问题,我们需要使用 3 级协议,例如 IP。

  • 路由器使用路由协议(基于距离矢量和链路状态)来找到不直接连接到它的 IP 网络的最佳路径。局域网中的设备知道有路由器,但不知道路由表。

  • 需要与其他 LAN 上的设备(主机 B )通信的设备(主机A)将数据包发送到路由器,路由器有责任根据路由协议的结果使用最佳路径将其转发到下一个路由器.

关于路径成本和距离矢量

正如 xpac 所说,不同的路由协议使用不同的方法来寻找到特定网络的最佳路由。路由协议的想法是,它允许路由器从其他路由器了解哪些网络连接到哪个路由器,而不是您手动将所有内容输入每个路由器。路由基本上是通向特定网络的“途径”。例如,您可以通过多种方式将您从新泽西州带到曼哈顿岛,因此您可以有多种路线通往网络。路由器向它的邻居广播它在本地连接的所有网络。下一个路由器接收此信息,并查看它是否已在内存中获取任何路由(称为路由表)。如果没有,它会添加它。如果有,它会检查这条路线是否比它已经拥有的路线更好,如果是,它在路由表中添加它比旧的更高。当它完成时,它会将它现在知道的所有路由发送给它的邻居(唯一的例外是它不会将路由发送回它从中获取它们的路由器)。这样,整个网络就可以了解连接到该网络中每个路由器的每个网络,以及从一个网络到另一个网络的所有可能路径。

问题的症结在于路由器如何确定哪种方式是“最佳”方式,这就是路由成本和距离向量发挥作用的地方。每个路由协议都采用不同的方法来计算路由的路由成本或度量。距离矢量协议,如 RIP,查看路由中有多少跳,并从中计算出一个度量,因为更少的跳意味着更快的处理,因为更少的路由器必须转发数据包。这是相当老派的想法,并且可以追溯到路由器速度很慢且带宽相当无关紧要的时候。这些天路由器非常快,并且跳数并不那么重要。已经开发了更新的协议,有些使用另一种称为链接状态的方法。OSPF 就是其中之一,它考虑了许多不同的指标,