如何避免“子网的子网”中的路由循环?

网络工程 路由 路由器 子网 环形
2022-02-25 04:46:22

这个问题是由Cisco 关于子网零和 All-Ones 子网(来自标题为 All-Ones 子网的小节)文章末尾附近给出的示例引起的,但我在此处包含了所有必要的详细信息。

假设我们有一个路由器 A 连接到具有(任意)网络地址和掩码 195.1.2.0/24 的网络/互联网的其余部分,并且假设我们想要四个路由器连接到这一个路由器(而不是网络的其余部分),命名为 W、X、Y 和 Z,每一个都有四分之一的 IP 分配。这些将采用 195.1.2.{0,64,128,192}/26 的形式。

如果向路由器 A 发送一个目标为 195.1.2.255 的数据包,路由器 A 会将其转发到路由器 Z(因为它位于路由器 Z 的范围内),路由器 Z 的广播地址为 195.1.2.255,因此会将消息广播到路由器 A。然后将其发送回路由器 Z,从而导致路由循环?

Cisco 的文章建议使用正确的掩码(24 和 26)来避免这种情况,但如果所有掩码(错误地)都是 24,则会发生此路由循环。为什么?

下面是路由器组织的图像,由 Cisco 和上述链接提供。

路由器组织的图像,由 Cisco 提供,来自上面的链接

2个回答

首先,路由器不转发广播,而是假定它是发往不同单播地址的流量。路由器在网络之间路由流量,而不是从一个网络返回到同一个网络。

假设路由器 A 有四个接口,每个网络一个。从其中一个网络到其他三个网络中的任何一个的任何流量都将从其源网络进入路由器 A。然后,路由器 A 会将流量转发到目标网络的适当接口。这就是故事的结局。不需要涉及其他路由器,因为路由器 A 可以访问所有四个网络。

现在,假设路由器 A 仅连接到两个网络:195.1.2.0/26195.1.2.64/26路由器 A195.1.2.64/26与路由器 Z 共享,路由器 Z 也连接到195.1.2.192/26. 如果流量需要从195.1.2.23195.1.2.216195.1.2.23/26主机将知道目的地在不同的网络上,并将数据包发送到其网关(路由器 A)。

路由器 A 需要知道将发往其未直接连接的网络的流量转发到何处,否则它将简单地将流量丢弃到它不知道的任何网络。要么您手动为网络配置了通往路由器 Z 的静态路由195.1.2.192/64,要么路由器 A 和路由器 Z 共享一个公共路由协议,并且路由器 Z 告诉路由器 A 它知道如何到达该网络。

路由器 A 会将来自路由器 Z 的数据包转发195.1.2.23195.1.2.216路由器 Z。路由器 Z 将知道它直接连接到目标网络,并将数据包转发到目标网络所连接的接口。

IP 地址未分配给路由器。路由器有接口,这是分配IP地址的地方。

在图中,假设路由器 1 已195.1.1.1/24分配给它的向下接口。因此,路由器 2-5 将具有来自分配给每个向上接口的同一子网的 IP 地址。让我们假设这些是195.1.1.2, 195.1.1.3,195.1.1.4195.1.1.5实际上,您可以使用网络中其他任何地方未使用的任何网络地址,包括底部子网

现在您可以将四个子网之一连接到每个路由器的向下接口:195.1.2.1/26195.1.2.65/26195.1.2.129/26195.1.2.193/26