交换机如何知道数据包需要第 2 层交换还是第 3 层路由?

网络工程 转变 交换 ARP
2022-02-04 01:41:40

我有一个网络拓扑如下

    A  ---------  B  ---------   C
   /|\           /|\            /|\
  / | \         / | \          / | \
 A1 A2 A3      B1 B2 B3       C1 C2 C3

A、B、C 是三层交换机,它们有自己的子网。每台交换机有 3 台服务器 A1~A3、B1~B3、C1~C3 连接它们,因此 A1~A3 在子网 A 中,B1~B3 在子网 B 中,C1~C3 在子网 C 中。

存在交换机内业务,例如从A1到A3,以及交换机间业务,例如从A1到C1。显然,交换机内的流量将被交换(第 2 层),而交换机间的流量将被路由(第 3 层)。

我想知道交换机(例如 A)如何确定数据包是否需要交换或路由?

我的理解是基于ARP协议,因为它决定了数据包的目的MAC地址。

如果 A1 要发送一个数据包,它会在其本地 ARP 表中查找目标 IP 地址或通过网络查询。如果 dst IP 与 A1 位于同一子网内,例如 A3,则 A3 的 MAC 地址将被返回,并封装在传出数据包的 dst MAC 字段中。如果 dst IP 在另一个子网,比如 C3,那么交换机 A 连接 A1 的接口(假设是接口 1)的 MAC 地址将被返回,然后放入传出数据包的 dst MAC 字段。

当此数据包到达交换机 A 时,交换机 A 将检查目标 MAC 地址。如果这个 MAC 地址与交换机 A 的接口 1 的 MAC 地址不匹配,则会在 MAC 表中查找出端口。然后这个数据包被切换到那个端口,它的 src 和 dst MAC 地址保持不变。否则,该MAC地址与交换机A的接口1的MAC地址匹配,交换机A继续在路由表中查找数据包的dst IP地址以查找出端口。那么这个数据包的 src 和 dst MAC 地址都会被 A 的出口 MAC 地址和交换机 B 的入口 MAC 地址替换(也是通过 ARP 协议获得的)。

我的理解是否正确,我错过了什么吗?

1个回答

不要想太多,其实很简单。

当一个帧到达 L3 交换机时,它会根据其目标 MAC 地址进行转发。在正常的 L2 交换中,目的地是交换机端口之一的节点。

如果该目标 MAC 是L3 交换机本身(更准确地说,是其 L3/路由/SVI 接口之一),则封装的 IP 数据包将传递到 L3 引擎,并在该引擎中根据其目标 IP 地址进行路由。本质上,路由是在 VLAN 或 L3 接口之间转发 IP 数据包。

当然,路由的数据包根据其目标段被封装在一个新的以太网帧中。