交换机上的主机之间的单播流量通过其上行链路离开交换机。为什么?

交换机上的主机之间的单播流量通过其上行链路离开交换机。为什么?

我办公室的网络出现了一个奇怪的问题,我搞不清楚。特别是我不知道这是交换机的问题还是配置的问题。

我们的服务器机房机架顶部有一台 Cisco SG300-52 交换机 (sw01),连接到另一台用作核心交换机 (core01) 的 SG300-28。两者都只运行第 2 层,我们的防火墙在 VLAN 之间进行路由。它们之间有十几个 VLAN。sw01 上的 Gi1 是一个中继端口,连接到 core01 上的 gi1。

(披露:我们的环境中还有其他交换机,但我很确定我已将问题归结为这两个。如有必要,很乐意提供更多信息。)

我看到的行为仅限于一个 VLAN,即 vlan 12 - 或者,至少在我检查过的其他 VLAN 上没有发生这种情况(很难保证没有数据包),并且它是:sw01 正在将两个都插入 sw01 的主机之间的流量转发到 core01(我之所以注意到这一点,是因为我们防火​​墙中的 IDS 对流量给出了误报,而这应该不是到达防火墙。)

我们主要在我们的两个 dhcp/dns 服务器 net01(10.12.0.10)和 net02(10.12.0.11)之间注意到了这一点。net01 是物理硬件,而 net02 在 VMware ESX 服务器上。net01 连接到 sw01 上的 gi44,而 net02 的 ESX 服务器连接到 gi11。

[net01]----gi44-[sw01]-gi1----gi1-[core01]
[net02]----gi11/

让我们看看一些接口!请记住,vlan 12 是问题 vlan。对于其他 vlan,我明确验证了 vlan 27 是不是做作的。

这是两个主机的端口:esx01 包含 net02。

sw01#sh run int gi11
interface gigabitethernet11
 description esx01
 lldp med disable
 switchport trunk allowed vlan add 5-7,11-13,100
 switchport trunk native vlan 27
!
sw01#sh run int gi44
interface gigabitethernet44
 description net01-1
 lldp med disable
 switchport mode access
 switchport access vlan 12
!

这是 sw01 上的主干。

sw01#sh run int gi1 
interface gigabitethernet1
 description "trunk to core01"
 lldp med disable
 switchport trunk allowed vlan add 4-7,11-13,27,100
!

以及 core01 上的中继的另一端。

interface gigabitethernet1
 description sw01
 macro description switch
 switchport trunk allowed vlan add 2-7,11-16,27,100
!

我在 core01 上有一个监视端口,因此:

core01#sh run int gi12
 interface gigabitethernet12
 description "monitor port"
 port monitor GigabitEthernet 1
!

core01 上的监控端口看到 net01 和 net02 之间的单播流量,两者都在 sw01 上!我已经用 sw01 上的监控端口验证了这一点,该端口也看到 net01-net02 的单播流量通过 gi1 离开。

sw01 知道这两个主机均位于非其中继端口上:

:) ratchet$ arp -a | grep net
net02.2ndsiteinc.com (10.12.0.11) at 00:0C:29:1A:66:15 [ether] on eth0
net01.2ndsiteinc.com (10.12.0.10) at 00:11:43:D8:9F:94 [ether] on eth0

sw01#sh mac addr addr 00:0C:29:1A:66:15
Aging time is 300 sec

  Vlan        Mac Address         Port       Type    
-------- --------------------- ---------- ---------- 
   12      00:0c:29:1a:66:15      gi11     dynamic   

sw01#sh mac addr addr 00:11:43:D8:9F:94
Aging time is 300 sec

  Vlan        Mac Address         Port       Type    
-------- --------------------- ---------- ---------- 
   12      00:11:43:d8:9f:94      gi44     dynamic   

我还在 sw01 上的 vlan 12 上启用了一个未使用的端口,但单播流量(据我所知)不是从该端口输出。因此,sw01 似乎并未将其从所有端口输出,只是从正确的端口输出还有 gi1

我已经验证 sw01 没有填满其地址表:

sw01#sh mac addr count
This may take some time.
Capacity : 8192 
Free     : 7983 
Used     : 208 

core01 和 sw01 的完整配置均可用:core01sw01

最后,版本:

sw01#sh ver
SW version    1.1.2.0 ( date  12-Nov-2011 time  23:34:26 )
Boot version    1.0.0.4 ( date  08-Apr-2010 time  16:37:57 )
HW version    V01

core01#sh ver
SW version    1.1.2.0 ( date  12-Nov-2011 time  23:34:26 )
Boot version    1.1.0.6 ( date  11-May-2011 time  18:31:00 )
HW version    V01

所以我的理解是这样的:sw01 应该接收 net01 的单播流量,并只将其从 net02 的端口发送出去,反之亦然;任何流量都不应该从 sw01 的上行链路发出。但是 core01 在 gi1 上接收它所知道的主机的流量在 gi1 上,将其所有端口发送出去是正确的。(也就是说:sw01 行为不当,但 core01 正在根据具体情况做它应该做的事情。)

我的问题是:为什么 sw01 要从其上行链路 gi1 发送单播流量?

(并且先发制人:是的,我知道 SG300 还有很多不足之处,是的,我们应该启用生成树,但这就是我现在的情况。)

答案1

我会查看捕获的数据包中的 mac 地址。如果某个主机上的掩码、arp 表或网关错误,则可能设置了错误的目标 mac 地址。

相关内容