Der Netzwerkverkehr scheint den Trunk nicht zu verlassen

8

Ich bin gerade dabei, einige neue Virtualisierungsserver bereitzustellen, und ein Teil davon besteht darin, einige Pipes mit höherer Bandbreite in sie zu integrieren. Das ultimative Ziel besteht darin, 4 GigE-Ports in einen einzigen Trunk zu binden, der 802.1q-Tagged-Verkehr transportiert. Ich kann so weit kommen, aber ich bin auf ein seltsames Problem gestoßen. Aber zuerst ein Diagramm.

----------       ----------  1GbE trunks 
|        | 10GbE |        | ------------- --------
|  SW1   |-------|   SW2  | ------------- | VM1  |
|        |       |        | ------------- --------
----------       ----------
     |                |  1GbE  -----------
     | 1GbE           |--------| client2 |
     |                         -----------
----------
|        | 1GbE -----------
|  SW3   |------| client1 |
|        |      -----------
----------

Alle Switches sind HP ProCurve 2910al-Switches und nicht gestapelt. Client2 im obigen Diagramm befindet sich im selben VLAN wie VM1. Client1 befindet sich in einem anderen VLAN. Für den VM-Computer (CentOS 6) wurden sowohl iptables als auch SELinux deaktiviert.

Mein Problem ist, dass bei Trunking kein bidirektionaler Netzwerkverkehr möglich ist, wenn mit einem der Client-Computer gesprochen wird. TCPDUMP zeigt an, dass Pings von ihnen empfangen und ECHO REPLY-Pakete gesendet werden, der VM-Host sie jedoch nie sieht. Wenn ich gleichzeitig versuche, die VM von einem Client-Computer aus zu pingen, funktioniert dies nicht. Die Tatsache, dass ich client2, das sich im selben Subnetz befindet, nicht anpingen kann, deutet darauf hin, dass irgendwo in der Netzwerkschicht etwas schief läuft.

Seltsamerweise kann ich vom VM-Host aus die Gateway-IPs auf jedem der Switches anpingen. Wenn ich eine einzelne Schnittstelle verwende, funktioniert alles mit und ohne VLAN-Tagging einwandfrei. Wenn ich nur eine einzelne Schnittstelle binde und das VLAN-Tagging auf dieser Schnittstelle aktiviere, kann ich überall hingehen. Baue einen Kofferraum, und ich beschränke mich auf die Switch-Fabric.

Die Art des Kofferraums scheint keine Rolle zu spielen. Im Moment sind sie mit Amtsleitungen des Modus 0 (balance-rr) konfiguriert, obwohl sich die Verwendung von LACP / 802.1qa genauso verhält.

vlan 70 
   name "Virtualization Subnet" 
   untagged 35,36,38,40 
   tagged Trk1-Trk2,Trk5,Trk8 
   no ip address 
   jumbo 
   exit 

Das ist die VLAN-Konfiguration auf SW2 dort oben. In der VLAN 70-Definition von SW1 ist die "IP-Adresse" definiert. Das obige Snippet befindet sich im vollständig nicht überlasteten Modus. Wenn ich gestaut bin:

trunk 35-36,38,40 Trk16 trunk
vlan 70 
   name "Virtualization Subnet" 
   tagged Trk1-Trk2,Trk5,Trk8,Trk16
   no ip address 
   jumbo 
   exit 

Die 802.1qa / LACP-Version tauscht die Trunk-Definition gegen trunk 35-36,38,40 Trk16 lacpaus, ändert aber, wie gesagt, nichts an der Problemdarstellung.

Client2 ist tatsächlich mit SW1 verbunden, aber das Einfügen in das Diagramm hätte die Formatierung schwieriger gemacht. In jedem Fall ist das einzige, was in der Zeilengruppe Interface steht, eine nameDirektive. Es ist als untaggedPort in der Zeilengruppe vlan 70 für SW1 aufgeführt.

Was vermisse ich?

sysadmin1138
quelle
Können Sie die VLAN-Zeilengruppen Ihrer Procurve-Switches veröffentlichen? Und welche Ports verwendet der Hypervisor (auch bekannt als VM) 1, die Clients 1 und 2?
Jftuga
@jftuga Die Strophen wurden eingegeben.
sysadmin1138
Sind für Switches sw1,2,3 alle Uplink-Trunk-Ports (zu anderen Switches) in VLAN 70 markiert? Was zeigt Ihnen Tracert?
Jftuga
@jftuga Ja, alle Inter-Switch-Links sind Trunked und Tagged. SW3 hat KEIN VLAN 70. Traceroute zeigt wenig Interesse, der Trace stirbt am Hop, wenn er zum VM-Host gelangt. Außerdem kann ich innerhalb des Switches selbst die IP-Adresse des VM-Hosts nicht pingen, wenn er über einen Trunk verfügt. Ich werde sehen, ob ich etwas an Ort und Stelle bekommen kann, um an diesen Bündelanschlüssen zu riechen.
sysadmin1138
Sie sagen, dass dies eine VM ist, wie in Virtual Machine? Führen Sie dies unter ESX (i) aus?
Pause

Antworten:

7

Nach einer langen Debatte im Chat beteiligt MikeyB , Pauska und ChrisS endete das Problem bis zu sein zweifach:

  1. Ein möglicher Fehler in CentOS 6 bestand darin, dass die Moduloptionen für das bondingModul nicht als Teil von service network restartgeändert wurden, sodass meine Änderungen zwischen LACP-Modus (4) und Roundrobin (0) nicht verfolgt wurden.
  2. Der Round-Robin-Modus funktioniert nicht gerne mit ProCurve-Switches.

Nachdem ich die verbundene Schnittstelle über diesen Befehl in den LACP / 802.1qa-Modus versetzt hatte:

ifconfig bond0 down
echo "4" > /sys/class/net/bond0/bonding/mode
ifconfig bond0 up

Sowohl der Server als auch der Switch sprachen. Ab diesem Zeitpunkt funktionierte der Datenverkehr normal, beginnend mit nur einer auf dem Switch aktivierten Schnittstelle. Durch Aktivieren einer zweiten, dritten und schließlich der vierten Schnittstelle funktionierte der Datenverkehr weiter.

Letztendlich hat der LACP-Modus die Dinge zum Laufen gebracht. Der Hinweis war, dass der Round-Robin-Modus funktionierte, wenn nur ein aktivierter Switch-Port im Trunk vorhanden war. Der Server überlebt einen Neustart und wird im richtigen Modus gestartet. A service network restartbewirkt jedoch nicht, dass der MODE="4"Teil der ifcfg-bond0Datei in /etc/sysconfig/network-scripts/wirksam wird. Wenn sich dieser Modus ändert, bleibt er beim Booten eingestellt (oder wahrscheinlicher beim Laden des bondingModuls des Moduls).

sysadmin1138
quelle
Freut mich
Ich bin froh zu sehen, dass du das behoben hast.
Jftuga
Eine sehr professionelle Frage und Antwort. Gebunden, um jemandem zu helfen.
Artifex
0

Sie haben in Ihrer Konfiguration:

trunk 35-36,38,40 Trk16 trunk
vlan 70 
   name "Virtualization Subnet" 
   tagged Trk1-Trk2,Trk5,Trk8,Trk16
   no ip address 
   jumbo 
   exit 

Sollte das nicht sein:

   untagged Trk16
   tagged Trk1-Trk2,Trk5,Trk8
MikeyB
quelle
Nun, es gibt einen Fehler im ursprünglichen Beitrag, aber nicht das, was Sie vorschlagen. Unter der nicht getrunked Konfiguration sollte es ein "nicht getaggtes Trk16" auf vlan 70 geben.
pauska
Ich habe diese Variante auch ausprobiert. Beide Varianten arbeiten gleich, funktionieren nicht. Die Verwendung von untagged 35-36,38,40und tagged 35-36,38,40...beide funktionieren, solange ich nicht versuche, Schnittstellen auf dem Linux-Server zusammenzufassen. untagged Trk16und tagged Trk16...beide funktionieren nicht.
sysadmin1138
Xen ausführen? Hat Centos 6 immer noch Probleme mit den Schnittstellendefinitionen? Ich erinnere mich an ein Problem, bei dem die vlan-Schnittstellen von der falschen Schnittstelle aus erstellt wurden (der phys anstelle der Brücke oder umgekehrt) und seltsame Dinge passiert sind.
MikeyB