我们有一组设备以环路连接,它们使用 stp(使用https://github.com/mstpd/mstpd目前)以避免出现环路问题。我们看到,虽然 stp 可以在链路完全断开时调整网络,但它会忽略其中一条链路出现大量数据包丢失的情况。
这是 stp 支持的功能吗?也就是说,将网络链路中的数据包丢失考虑在与给定接口相关的成本中,并据此调整网络?如果没有,还有其他好的替代方案吗?
我们遇到这种情况是因为有些 USB 转 ETH 适配器在重新启动或手动重新连接 ETH 电缆后有时会发生故障。虽然问题可能是某些驱动程序/操作系统相关的问题,但它很好地表明 stp 仍然选择部分故障的链路,导致永久性 50% 的数据包丢失,而不是 0% 的避免该链路。
答案1
我们看到,虽然 stp 可以在链路完全断开时调整网络,但它会忽略其中一条链路出现大量数据包丢失的情况。stp 支持此功能吗?
STP 并不关心链路质量,而且其设计目的也不是处理链路质量。
STP 在交换机之间运行。如果丢失的数据包不止很少,则表明链路有问题,需要修复。
避免这些不良链接的唯一方法是监控并在一定错误率时关闭端口。由于链接通常几乎没有错误,因此在交换机中通常不会出现这种情况。
作为一种解决方法,您可以使用端口优先级让 STP 避开已知的坏链路,同时仍将其保持为故障转移。