我有一个系统,由一台控制 PC、两层交换机和 50 个自定义设备组成。PC 持续向设备传输总计 5.8MB/秒(6000 以太网帧/秒)的数据。
我发现每个设备端点都在看到全部的流量,而不仅仅是发往该设备的流量。这导致设备上的固件有点堵塞。
我对这种情况发生的原因的解释是:PC 设置了静态 ARP 表。设备发送数据的唯一时间是响应 ICMP 回显或 ARP 请求。由于我们在正常运行期间不会 ping 设备,并且由于 PC 的 ARP 表是静态的(因此不会发出 ARP 请求),因此设备永远不会发送任何数据,交换机也永远不会了解它们的 MAC 地址。
问题 1:这个分析对吗?
我必须解决这个问题。有四个选择:
- 手动配置所有交换机中的凸轮表。
- 更新设备固件以定期发送某些内容,从而更新交换机凸轮表。
- 让控制 PC 定期 ping 设备,从而使设备响应,从而导致交换机更新。
- 来自评论:在控制 PC 上启用动态 ARP,将 ttl 配置为小于交换机条目的 ttl。
所以,问题2:选项 1 是绝对正确的方法吗?
现在,选项 1 的问题是现有交换机不受管理,我无法配置它们。为了使用选项 1,我们需要用受管理的交换机替换交换机。我相信从长远来看这是值得的,但目前由于多种原因,这是不可行的。
我不想使用选项 3 或 4,因为我希望该问题的解决方案对于控制 PC 来说是透明的,并且出于各种其他原因(特别是,选项 4 在这个应用程序中存在微妙但明显的性能问题,如下面评论中所述)。
因此,我现在正在寻求选项 2。我选择修改每个设备上的固件,以便大约每 30 秒发送带有广播 MAC 目标的免费 ARP 请求。我选择 ARP 是因为从概念上讲它似乎是最合适的,尽管我也可以发送空白以太网帧。我选择广播目标,希望数据包能够通过 L2 交换机并到达 L1 交换机,并导致它们也更新其表。
问题 3:虽然这可能不是最正确的选择,但它能起作用吗?从所有 50 台设备定期发送免费 ARP 请求是否会导致任何意外的副作用?我不知道交换机的凸轮表条目的 ttl 是多少,我随意选择了 30 秒。
问题 4:还有其他我还没考虑到的选择吗?
答案1
问题:由于 MAC 表贫瘠,以太网交换机在所有端口上泛滥数据包,这种流量给某些设备带来了问题。
解决方案:正如您已经想到的:生成一些流量,以便构建 MAC 表。一种方法是让网络监控程序 ping 每个设备。这样既可以构建 MAC 表,又可以让您检查某些设备是否偶尔会脱离网络。
注意:删除了关于 ARP 的错误答案