Ist Bonding Mode = 5 eine Lösung gegen MAC-Flattern?

7

Es gibt zwei miteinander verbundene Cisco WS-2950T.

Über den einen GBIC-Port am ersten Switch ist eine erste NIC der Bonding-Schnittstelle und über den einen GBIC-Port am zweiten Switch eine zweite NIC der Bonding-Schnittstelle verbunden.

Natürlich sehen beide Switches die Bonding-MAC-Adresse nur auf einer Schnittstelle (z. B. GBIC auf dem ersten Switch), und der gesamte eingehende Datenverkehr für die Bonding-Schnittstelle wird über diesen GBIC geleitet.

Aber in "mode = 5" wird der gesamte ausgehende Verkehr auf alle Schnittstellen verteilt, die eine Verbindung herstellen. In diesem Fall werden die Pakete vom zweiten Switch verworfen und durchlaufen trotzdem den ersten Switch? Oder wird die Abteilung arbeiten?

jurijcz
quelle

Antworten:

5

Im Modus 5 oder im Balance-tlb-Modus verwendet der ausgehende Verkehr die MAC-Adresse der Slave-Schnittstelle, die er verlässt, anstatt die Adresse der Bond-Schnittstelle zu verwenden.

In der Regel wird der MAC der Anleihe für den gesamten Datenverkehr verwendet, was zu einem MAC-Flattern zwischen zwei Ports eines bestimmten Switches führen kann. Jeder Ihrer Switches sieht eingehenden Datenverkehr mit dem MAC der Anleihe als Quelle, beide von der direkten Verbindung zum Gerät und von der Querverbindung zum anderen Schalter.

Der Übertragungslastausgleichsmodus umgeht dieses Problem, indem er ausgehenden Datenverkehr zwischen Schnittstellen ausgleicht, aber die MAC-Adresse der Schnittstelle als Quelle für ausgehenden Datenverkehr verwendet. Wenn Ihre anderen Knoten im Subnetz (insbesondere der Router) dieses Verhalten nicht stören, funktioniert es einwandfrei - normalerweise gibt es kein Problem, aber ich kann mir vorstellen, dass einige restriktive Einstellungen für die Routersicherheit beleidigend sind.

Die Bond-Schnittstelle nimmt die MAC-Adresse einer ihrer Slave-Schnittstellen an:

root@test1:~# ifconfig
bond1     Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35
          inet addr:192.168.100.25  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe3d:f735/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

eth2      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:3f
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1

Der MAC von eth1 passt zur Bond-Schnittstelle, er ist der "primäre", sodass er den eingehenden Datenverkehr erhält.

Und nur zur Bestätigung:

root@test1:~# cat /sys/class/net/bond1/bonding/mode
balance-tlb 5

root@test1:~# cat /sys/class/net/bond1/bonding/active_slave
eth1

Ok, also ... ist es ein Lastausgleich? So sieht es von einem anderen Knoten aus, der konstante Pings sendet:

root@test2:~# tcpdump -e -n -i eth0 proto 1
20:33:08.094078 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 38, length 64
20:33:08.094549 00:0c:29:3d:f7:35 > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 38, length 64
20:33:09.094052 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 39, length 64
20:33:09.094520 00:0c:29:3d:f7:35 > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 39, length 64
20:33:10.094078 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 40, length 64
20:33:10.094540 00:0c:29:3d:f7:35 > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 40, length 64

Das sieht alles normal aus - eth1 reagiert. Dann gibt es unaufgefordert einen Schalter. Beachten Sie, dass der Ziel-MAC der Anforderung und der Quell-MAC der Antwort nicht mehr übereinstimmen.

20:33:11.094084 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 41, length 64
20:33:11.094614 00:0c:29:3d:f7:3f > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 41, length 64
20:33:12.094059 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 42, length 64
20:33:12.094531 00:0c:29:3d:f7:3f > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 42, length 64
20:33:13.094086 00:0c:29:46:4f:c6 > 00:0c:29:3d:f7:35, ethertype IPv4 (0x0800), length 98: 192.168.100.40 > 192.168.100.25: ICMP echo request, id 5810, seq 43, length 64
20:33:13.094581 00:0c:29:3d:f7:3f > 00:0c:29:46:4f:c6, ethertype IPv4 (0x0800), length 98: 192.168.100.25 > 192.168.100.40: ICMP echo reply, id 5810, seq 43, length 64

Bei einem konstanten Ping werden die Wechsel zwischen den Quellen willkürlich fortgesetzt, basierend auf der Bewertung der Last durch die Bond-Schnittstelle - sie scheint alle 10 Sekunden neu zu bewerten.


Das Failover für eingehenden Datenverkehr in Modus 5 ist wesentlich einfacher. Wenn die Schnittstelle als ausgefallen erkannt wird, wird der MAC der Bond-Schnittstelle einfach auf die Live-Schnittstelle verschoben. Dies löst häufig eine MAC-Flattern-Warnung in Ihren Switch-Protokollen aus, aber das ist zu erwarten. Nichts, über das man sich sorgen sollte.

Die Schnittstellen-MACs ändern sich daraus:

eth1      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35
eth2      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:3f

..zu, nachdem eth1 entfernt wurde, dies:

eth1      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:3f
eth2      Link encap:Ethernet  HWaddr 00:0c:29:3d:f7:35

Und alle Verkehrsquellen von eth2 mit einem MAC von :35.


Also, ja - vorausgesetzt, Sie kümmern sich nicht um den Lastausgleich des eingehenden Datenverkehrs, scheint der Balance-TLB-Modus einen hervorragenden Job für den schaltersicheren Lastausgleich des ausgehenden Datenverkehrs und das Failover des eingehenden Datenverkehrs zu leisten.

Wenn Ihr Router sich nicht um mehrere Quell-MACs kümmert, die Datenverkehr für eine einzelne IP senden, und nicht durch kostenlose ARP-Failover beleidigt wird, sollten Sie bereit sein!

Shane Madden
quelle