假设我们有以下配置。
WAN - Router -------------------- Switch --------- Client
| |
Multiple switches connected to router |
Multiple Clients connected to each switch
当路由器接收到数据包时,路由器必须查找其 ARP 表以找到与 IP 地址相对应的适当 MAC,以创建要发送到交换机的帧。
但是,我们假设在众多交换机中,有一个交换机,我们称之为S1
,它只连接到 IP 在 123.123.123.0/24 范围内的客户端。这意味着我们可以在路由器上设置路由规则,将 123.123.123.0/24 范围内的所有流量路由到通向 的接口S1
。
我们可以看到,在路由时,路由器不需要每个客户端的路由表。但是,ARP 表需要每个客户端的表。这对我来说似乎非常低效。这真的是这样工作的吗?如果交换机能够拥有自己的 ARP 表,这样您只需要查找一部分客户端,这不是更有意义吗?
对我来说,这里的路由器不构建帧并将缺少 L2 信息的数据包发送到交换机,然后交换机在帧不完整时构建帧会更有意义。我知道在 L2 中运行的交换机不想查看 IP 地址,但我不明白为什么要这样设计。
答案1
只要客户端都适合每个交换机的 MAC 表,它就不会特别低效 - CAM“内容寻址内存”非常擅长高效地查找 MAC 表条目。
如果交换机能够拥有自己的 ARP 表,以便您只需要查找一部分客户端,这不是更有意义吗?
那么它就是一个路由器,字面意思。你建议是通常只需使用实际的 IP 路由即可完成 - 第一个路由器将数据包定向到第二个路由器的 MAC 地址,因为它知道 /24 在那里。
您的示例效率低下,因为您是这样设计的。网络本身并不局限于一个路由器,路由器也不限于一个内部网络,因此如果可以避免,您不必拥有一个庞大的子网 - 您可以将 /24 作为完全独立的子网放在自己的路由器后面(如果您愿意),或者由同一路由器管理但使用 802.1Q 标签在 L2 上分隔的 VLAN。
(“家用”路由器有一个 LAN 接口接入集成交换机,而企业路由器有许多独立的接口之间进行路由。
另一方面,当您真正需要效率时,还有第三种转发数据包的方法:标签交换,例如 MPLS。它允许入口路由器预先选择通过网络的 L2 路径,而内部路由器/交换机只需在小型标签表中进行查找。