Per VLAN-Failover ausprobiert
Es ist nun anderthalb Jahre her, seit ich nach Failover per VLAN gesucht habe. Die entscheidende Frage war aber immer, ob es auch tatsächlich funktioniert. Ein entsprechender Test wurde damals nicht dokumentiert. Also soll es nun mit einem neuen Kernel nachgeholt werden.
Ausgangslage
Ein Server an zwei Switchen. Einige VLANs liegen auf beiden Switchen an, andere sind nur pro Switch vorhanden.
Die Aufgabe besteht darin, die übergreifend vorhandenen VLANs nicht zu verlieren, auch wenn ein Switch ausfällt. Ein typisches übergreifenden VLAN ist das Management-Netz. Naturgemäß hat jeder Server eine IP in dem Netz und sollte diese Verbindung niemals verlieren.
Nicht übergreifende VLANs sind i.d.R. lokale Versorgungsnetze, die am anderen Standort keine Bedeutung haben.
Wie man das macht, ist in dem alten Artikel beschrieben.
Test
Neuer Kernel, neues Glück. Diesmal mit Doku:
$ uname -a ... FreeBSD 10.3-PRERELEASE #1 r294196M ...
Und gleich das Einrichten der VLANs
# ifconfig vlan3140 create # ifconfig vlan3140 vlan 140 vlandev igb0 up # ifconfig vlan4140 create # ifconfig vlan4140 vlan 140 vlandev igb1 up # ifconfig lagg140 create laggport vlan3140 laggport vlan4140 # ifconfig lagg140 up
Das schaut dann so aus:
# ifconfig | egrep 'igb0|140|status' | uniq igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: active vlan3140: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: active vlan: 140 parent interface: igb0 vlan4140: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: active vlan: 140 parent interface: igb1 lagg140: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: active laggport: vlan4140 flags=0<> laggport: vlan3140 flags=5<MASTER,ACTIVE>
Also schalten wir einen Port mal aus.
# ifconfig | egrep 'igb0|140|status' | uniq igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: no carrier vlan3140: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: no carrier vlan: 140 parent interface: igb0 vlan4140: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: active vlan: 140 parent interface: igb1 lagg140: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 status: active laggport: vlan4140 flags=4<ACTIVE> laggport: vlan3140 flags=1<MASTER>
Ein tcpdump am lagg-Interface zeigt während der Umschaltung keinerlei Zuckungen. Er läuft einfach weiter.
Problem gelöst?
Es fehlt noch der Test mit dem Aussenden von Daten. Schließlich könnte sich ja spontan die MAC des Interfaces ändern.
16 bytes from fe80::204:23ff:...%lagg140, icmp_seq=26 hlim=64 time=0.240 ms 16 bytes from fe80::204:23ff:...%lagg140, icmp_seq=27 hlim=64 time=0.469 ms 16 bytes from fe80::204:23ff:...%lagg140, icmp_seq=28 hlim=64 time=0.216 ms [... Abschalten des Ports ...]
Timeout. Der Datenfluss kommt zum Stillstand. Erst nach einigen langen Minuten geht es weiter.
Ein erneuter Test zeigt dieses Verhalten nicht mehr. Nun gehen nur noch einige Pakte des Pings verloren.
Die Umschaltzeit wird maßgeblich von der Geschwindigkeit bestimmt, mit der die Switch-Wolke die gewanderte MAC Adresse bemerken.
y 41:37.153: %LINK-5-CHANGED: Interface Gi5/41, changed state to administratively down x 41:46.132: %C4K_EBM-4-HOSTFLAPPING: 00:1E:67:... in vlan 140 is moving from port Po32 to port Gi5/25 y 47:38.833: %LINEPROTO-5-UPDOWN: Line protocol on Interface Gi5/41, changed state to up y 47:53.842: %C4K_EBM-4-HOSTFLAPPING: 00:1E:67:... in vlan 140 is moving from port Po32 to port Gi5/41 y 48:13.370: %LINK-5-CHANGED: Interface Gi5/41, changed state to administratively down x 48:22.726: %C4K_EBM-4-HOSTFLAPPING: 00:1E:67:...in vlan 140 is moving from port Po32 to port Gi5/25 y 48:47.879: %LINEPROTO-5-UPDOWN: Line protocol on Interface Gi5/41, changed state to up x 49:17.275: %C4K_EBM-4-HOSTFLAPPING: 00:1E:67:... in vlan 140 is moving from port Gi5/25 to port Po32 y 49:49.925: %LINK-5-CHANGED: Interface Gi5/41, changed state to administratively down x 49:59.624: %C4K_EBM-4-HOSTFLAPPING: 00:1E:67:... in vlan 140 is moving from port Po32 to port Gi5/25 y 50:16.845: %LINEPROTO-5-UPDOWN: Line protocol on Interface Gi5/41, changed state to up x 50:45.969: %C4K_EBM-4-HOSTFLAPPING: 00:1E:67:... in vlan 140 is moving from port Gi5/25 to port Po32
Man sieht schön, wie die erste Umschaltung etwas länger gebraucht hat und dass da ein zweiter Switch mit im Spiel ist.
Nachdem sich aber die Switch-Wolke an die neue MAC gewöhnt hatte, klappt die Umschaltung zügig.
Die typische Umschaltzeit liegt im Bereich einiger zig Sekunden. Das ist sehr zufrieden stellend.
https://github.com/freebsd/freebsd/commit/a23a95f981ff4d4789caf8a8349c8b017b1ac351
Total 3 comments