我有一台带有 4 个 1Gb NIC、2 个板载和 2 个 PCI 的 Debian Linux 服务器。所有 NIC 都配置为单模式 4 LACP 绑定接口:bond0
我有两台交换机:Cisco SG300-28 和 Cisco SG300-10,分别称为 A 和 B。
两台交换机通过 2 个交换机端口上的 LACP LAG 相互连接,两条链路都列为活动链路。
两台交换机上的所有端口似乎都配置为中继端口。这似乎是默认设置,因为我在测试之前进行了出厂重置。那会有什么不同吗?在此阶段只有一个默认 VLAN。
服务器将 2 个 NIC 连接到交换机 A,将 2 个 NIC 连接到交换机 B(一个板载 NIC 和一个 PCI)。Linux 绑定驱动程序在这方面很聪明,因为它Aggregator ID
为每个接口计算出一个并通过交换机将它们配对,因此只有到一个交换机的链接是活动的,即使所有 4 个都可能已启动。
我有一个工作站,我正在测试它,当前连接到交换机 A。
----------------
===========| Server bond0 |===========
|| ---------------- ||
|| ||
|| ||
---------------- ----------------
| Switch A |=======LAG========| Switch B |
---------------- ----------------
|
|
|
workstation
最初,服务器报告它正在使用与交换机 A 关联的聚合器 ID。我从工作站收到了稳定的 ping。
我断开了从服务器到交换机 A 的 2 根电缆,Linux 将活动的聚合器切换到连接到交换机 B 的 NIC,ping 继续并保持稳定。此时的活动路径是workstation -> Switch A -> inter-switch LAG -> Switch B -> Server
当我将电缆从服务器重新连接到交换机 A 时,Linux 会保留聚合 ID,因为它仍在使用交换机 B。
来自工作站的 Ping 开始被丢弃,如下所示:
一旦我再次断开交换机 A 的连接,ping 就会恢复稳定。
因此,当 ping 从交换机 A 上的端口发起到服务器交换机 B 时,它会失败,但仅当服务器与交换机 A 的链接已启动但在操作系统中未处于活动状态时才会失败。
这是可重复的。
我已经tcpdump
在服务器和工作站上运行了。根据上面的跟踪,我可以看到从工作站传输的所有 ping,但只有其中一些得到答复。tcpdump
在服务器上运行 a ,看起来缺少的 ping 并没有那么远。所以他们被丢弃在切换的某个地方。
如果我将此损坏的设置反转到另一台交换机,将工作站插入交换机 B,那么流量路径是......workstation -> Swtich B -> inter-switch LAG -> Switch A -> Server
那么它工作正常。
我确实认为这可能是端口被阻塞的某种 STP 问题,但 ping 丢弃模式过于频繁,几乎所有其他 ping 对都被丢弃。检查交换机上的日志,看起来任一交换机上都没有阻止任何端口。
我还尝试用单连接、非 LAG/LACP 替换交换机间 LAG。
我已经确认 LACP 设置在所有方面都匹配。
作为全职系统管理员和网络兼职/业余爱好者,对我而言,这表明交换机之间的配置存在某种差异。但我不知道要检查哪些部分的配置差异。他们运行不同的固件版本,并注意这些是小型企业 SG300 系列,因此没有运行完整的 iOS,但确实具有看起来功能合理的 CLI。
我有限的网络知识告诉我这有点像 ARP 问题。服务器应该只向活动对/交换机提供 MAC 地址。丢弃的 ping 可能试图路由到非活动交换机/对。
但是我怎么能用这些开关来证明呢?
不过,我本来希望有更长的成功和失败的 ping 运行。
我的下一步是执行一些 tcpdump 以查看 ARP 和 LACPDU,以查看是否存在某种“风暴”导致流量每隔几秒钟在交换机之间切换。尽管从 Linux 的角度来看,Aggregator ID
与失败的 ping 相对应的活动没有变化。
有没有其他人对这里的其他内容有任何建议?
编辑:为端口通道添加 RSTP 状态...
SwitchA#sh spanning-tree
Spanning tree enabled mode RSTP
Default port cost method: long
Root ID Priority 32768
Address 0c:f5:a4:c2:0e:bf
This switch is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Number of topology changes 12 last change occurred 20:18:37 ago
Times: hold 1, topology change 35, notification 2
hello 2, max age 20, forward delay 15
Interfaces
Name State Prio.Nbr Cost Sts Role PortFast Type
--------- -------- --------- -------- ------ ---- -------- -----------------
...
Po1 enabled 128.1000 20000 Frw Desg Yes P2P (RSTP)
Po2 enabled 128.1001 20000 Dsbl Dsbl No -
Po3 enabled 128.1002 20000 Dsbl Dsbl No -
Po4 enabled 128.1003 20000 Dsbl Dsbl No -
Po5 enabled 128.1004 20000 Dsbl Dsbl No -
Po6 enabled 128.1005 20000 Dsbl Dsbl No -
Po7 enabled 128.1006 20000 Dsbl Dsbl No -
Po8 enabled 128.1007 20000 Frw Desg No P2P (RSTP)
SwitchB#sh spanning-tree
Spanning tree enabled mode RSTP
Default port cost method: long
Loopback guard: Disabled
Root ID Priority 32768
Address 0c:f5:a4:c2:0e:bf
Cost 20000
Port Po8
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32768
Address 1c:de:a7:75:1a:4b
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Number of topology changes 5 last change occurred 20:26:02 ago
Times: hold 1, topology change 35, notification 2
hello 2, max age 20, forward delay 15
Interfaces
Name State Prio.Nbr Cost Sts Role PortFast Type
--------- -------- --------- -------- ------ ---- -------- -----------------
...
Po1 enabled 128.1000 20000 Frw Desg Yes P2P (RSTP)
Po2 enabled 128.1001 20000 Dsbl Dsbl No -
Po3 enabled 128.1002 20000 Dsbl Dsbl No -
Po4 enabled 128.1003 20000 Dsbl Dsbl No -
Po5 enabled 128.1004 20000 Dsbl Dsbl No -
Po6 enabled 128.1005 20000 Dsbl Dsbl No -
Po7 enabled 128.1006 20000 Dsbl Dsbl No -
Po8 enabled 128.1007 20000 Frw Root No P2P (RSTP)
在这两种情况下,Po8 是交换机间 LAG,Po1 是服务器 LAG。
当我的设备处于损坏状态(ping 掉线)时,任一交换机上都没有记录拓扑更改。