MAC 学习提供与部署的网络连接,其中从一个 vNIC 使用多个 MAC 地址。

例如,在嵌套 Hypervisor 部署中,ESXi 虚拟机在 ESXi 主机上运行,多个虚拟机在 ESXi 虚拟机内运行。如果未使用 MAC 学习,则在 ESXi 虚拟机的 vNIC 连接到交换机端口时,它仅包含静态 MAC 地址。在 ESXi 虚拟机中运行的虚拟机没有网络连接,因为其数据包具有不同的源 MAC 地址。通过使用 MAC 学习,vSwitch 将检查来自 vNIC 的每个数据包的源 MAC 地址,学习其 MAC 表中的 MAC 地址并允许数据包通过。如果在特定时间段内未使用发现的 MAC 地址,则会将其移除。

MAC 学习还支持未知单播泛洪。通常,当端口收到的数据包具有未知目标 MAC 地址时,将丢弃该数据包。在启用未知单播泛洪的情况下,端口将未知单播流量泛洪到交换机上启用了 MAC 学习和未知单播泛洪的每个端口。默认情况下启用该属性,但仅在启用 MAC 学习时才会这样。

可以配置可学习 MAC 地址的数量。最大值为每端口 4096,这是默认值。您还可以设置达到限制设置时实施的策略。选项包括:
  • 丢弃 - 来自未知源 MAC 地址的数据包被丢弃。此 MAC 地址的入站数据包将被视为未知单播。仅当端口启用了未知单播泛洪时,端口才会接收数据包。
  • 允许 - 尽管不会学习未知源 MAC 地址,但会转发来自该地址的数据包。此 MAC 地址的入站数据包将被视为未知单播。仅当端口启用了未知单播泛洪时,端口才会接收数据包。

在 vSphere 6.7 及更高版本中,可以使用 vSphere API 在分布式虚拟端口组上启用 MAC 学习。您可以在 vSphere Distributed Switch、分布式虚拟端口组和分布式虚拟端口上配置 MAC 学习策略。如果未在分布式虚拟端口组上设置 MAC 学习策略,则会从 vSphere Distributed Switch 继承该策略,如果未在 DVport 上启用该策略,则会从分布式虚拟端口组继承该策略。有关详细信息,请参见《vSphere Web Services API 参考》