在我的工作场所,我们使用cisco交换机在第2层实现自定义stream量交付机制。自定义软件在以太网帧上放置特定的目的地mac,vlans将stream量分隔到不同的位置,同时将静态mac-address表项指向特定端口。 整个交付系统是相当静态的,所以对我们来说相当合适。 我没有创造它,但我理解得很好。
现在我试图理解这一点,因为我看到开关的一些奇怪的行为。 我有两个端口:
gi1/10 switchport mode access vlan 10 gi1/20 switchport mode trunk switchport trunk allowed vlan 10-13
和两个用户input的mac地址表行:
mac-address-table static 0101.0000.0101 vlan 10 interface gi1/10 mac-address-table static 0101.0000.0000 vlan 13 interface gi1/20
端口configuration不同,以评估技术的差异。
我有两个Linux主机,每个连接到上述端口。 每个configuration与四个子接口相同:
eth1.10, eth1.11, eth1.12, and eth1.13.
主接口或子接口上没有IP地址。 我有两个stream量来源发送stream量。 每个都发送带有两个目标MAC地址的以太网帧,但一个stream量源在vlan 10上,另一个在vlan 13上。
在主机1上,连接到端口1/10的主机,当我嗅探eth1.10,11,12或13时,看不到stream量,但在运行“tcpdump -i eth1”时看到stream量。 这对我来说是有意义的,因为那些子接口只会期望标记有VLAN相应VLAN ID(10,11,12或13)的stream量,并且该交换机端口被configuration为访问。 我有正确的解释吗?
好奇的是,主机1的tcpdump输出ALSO显示了另一个mac,即使静态条目清楚地表明只发送一种types的stream量出端口。 这怎么可能?
主机2(连接到中继端口的情况)同样奇怪。 他只看到一个mac地址(正确的),但他在eth1.10和eth1.13上看到它。 现在我只是困惑。 尽pipe两个vlan都有目标mac,但这怎么可能呢? MAC地址表不应该限制在那里input什么?
我确定了那些感兴趣的问题。 第三个stream量来源被错误地configuration为发送到0101.0000.0000,但在vlan 10上。由于那个mac不知道vlan 10,它被广播到属于那个vlan的所有接口,这就是为什么我看到linux上的mac主机连接到该接口。
这也解释了为什么我看到另一台主机上的vlan 10和13上的mac。 它被分成了两个vlans,并被每个linux主机看到。
你对g1 / 10的解释是正确的。 “模式访问”端口不会发送任何包含vlan标签的数据包。
这些mac地址实际上是你正在使用的? 多播位被设置(第一个(最左边的)01是多播位),这可能解释了为什么你在多个端口上看到这些数据包。