Open vSwitch - Einrichtungsfragen zu bridge, trunk, vlan, bond, etc.

Madtrick

Active Member
Mar 17, 2019
43
3
28
54
Germany
Guten Abend zusammen,
das Heimnetz wurde überarbeitet und hat jetzt einige neue Komponenten. So auch den ersten Layer3Switch von Mikrotik.

Die Erfahrungen mit VLANs und allem drum herum sind bei mir gleich einer grünen Wiese. Aber ich lerne und arbeite dran.

Die pfSense stellt per PPPoE das Internet bereit. Über ein Koppelnetz in den Switch, der die einzelnen VLANs aufmacht.
Soweit steht die Konfiguration der VLANs, Routen, etc. und läuft.

Nun soll der PVE in dem Zuge neu aufgesetzt werden und die verschiedenen VMs sollen in die verschiedenen VLANs.
Dabei bräuchte ich dann doch eure Hilfe. So gut es geht habe ich mich eingelesen und versuche alles über Tabellen und Zeichnungen zu planen, damit es beim Einrichten dann vielleicht doch leichter geht.

Da diese Materie für mich komplett neu ist, klemmt es dann doch irgendwo und der gerade gewonne Durchblich ist wieder futsch.

Hier einmal der Versuch die VLANs und VMs im PVe zeichnerisch zu erfassen:

Proxmox - VMs, VLANs, bond, trunk, bridge.png
oder auch als PDF:
Proxmox - VMs, VLANs, bond, trunk, bridge.pdf

Die erste NIC des PVE (eno1) soll nur für die GUI und administrativer Zugang zum PVE sein.
Dafür bekommt er im L3-Switch den für Endgeräte ohne Tag eingerichten und im vlan1 (Adminnetz) befindlichen Port ether4.

Die zweite NIC des PVE (eno2) bekommt vom L3-Switch (ether7) das VLAN10 zugespielt.
Also nur VLAN10 getagged über eno2 für mehrere VMs.
Jetzt soll erst einmal nur die VM "asterisk" ins VLAN10. Weitere werden ggfs. folgen.

Restliche NICs sollen gebündelt (bond0) werden. Über jede NIC käme dann vom Switch der Trunk aller gewünschten VLANs.
Der L3 Switch schleust mehrere VLANs (Trunk) über jedes Kabel an die gebündelten NICs (bond0) in den PVE.

1. Wie geht es nun weiter?
Hier stecke ich mit meinen Überlegungen fest.
Aus meinem Gedanken heraus müssten dann aus dem Bond die VLANs einzelnen VLAN-Bridges zugewiesen oder herausgefiltert werden?
So dass eine Bridge ein VLAN mit entsprechendem IP-Bereich beherbergt und die einzelnen VMs auf diese Weise ihr VLAN mit entsprechender IP bekommen. Kann das sein?

Weiterhin könnten noch 2 weitere NICs eingebaut werden. Diese sollen ggfs. auch gebündelt werden und als weiteres bond1 meherere VMs aus dem ersten bond0 übernehmen. In wie weit das sinnhaft ist, weiß ich noch nicht.

2. Könnt ihr bitte einmal darüber schauen, ob ich die gesteckten Ziele damit so erreiche.

3. Wie findet ihr diese Aufteilung der VLANs auf die NICs?

4. Macht es Sinn mehrere Bonds zu bilden?

5. Oder ist es eher sinnvoll dem einen Bond eine weitere NIC zu spendieren? Die Frage kommt aus der Richtung "hoher Traffic in einem VLAN".

6. Was passiert dann in den anderen VLANs im gleichen Bond? Bremst dann das eine VLAN das andere? Etc...

Hier einmal der erste Versuch des Konfig-Files "interfaces", welches ich nach Recherche des Proxmox Wikis zu open vSwitch erstellt habe.
Im zweiten Abschnitt für das VLAN10 und die eno2 habe ich es denke ich komplett falsch angegangen.
Nicht über meine hilfsdürftigen Kommentare und Übersetzungen wundern. ;-)

Code:
# Loopback interface
auto lo
iface lo inet loopback


### L3 Switch ether4 (vlan1 untagged) <=> eno1 (vlan1 untagged)
### eno1 (vlan1 untagged) <=> Admin GUI PVE
##         pve01.admin.madban.de
##  IP     192.168.1.5
##  sub    192.168.1.0/24
##  GW     192.168.1.1

allow-ovs vmbr0
iface vmbr0 inet manual
  ovs_type OVSBridge
  ovs_ports eno1 vlan1
  ovs_mtu 9000

auto eno1
allow-vmbr0 eno1
iface eno1 inet manual
  ovs_bridge vmbr0
  ovs_type OVSPort
  ovs_options tag=1 vlan_mode=native-untagged
  ovs_mtu 9000

allow-vmbr0 vlan1
iface vlan1 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr0
  ovs_options tag=1
  address 192.168.1.5
  netmask 255.255.255.0
  gateway 192.168.1.1
  ovs_mtu 1500


### L3 Switch ether7 (vlan10 untagged) <=> eno2 (vlan10 untagged)
### eno2 (vlan10 untagged) <=> VM102 asterisk
##  VM102  asterisk.sip.madban.de
##  IP     192.168.10.3
##  sub    192.168.10.0/24
##  GW     192.168.10.1

allow-ovs vmbr1
iface vmbr1 inet manual
  ovs_type OVSBridge
  ovs_ports eno2 vlan10
  ovs_mtu 9000

auto eno2
allow-vmbr1 eno2
iface eno2 inet manual
  ovs_bridge vmbr1
  ovs_type OVSPort
  ovs_options tag=10 vlan_mode=native-untagged
  ovs_mtu 9000

allow-vmbr1 vlan10
iface vlan10 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr1
  ovs_options tag=10
  address 192.168.10.2
  netmask 255.255.255.0
  gateway 192.168.10.1
  ovs_mtu 1500


### Verbindet Interface enp4s0f0 und enp4s0f1 zu bond0
allow-vmbr2 enp4s0f0
iface enp4s0f0 inet manual
    ovs_mtu 9000

allow-vmbr2 enp4s0f1
iface enp4s0f1 inet manual
    ovs_mtu 9000

allow-vmbr2 bond0
iface bond0 inet manual
  ovs_bridge vmbr2
  ovs_type OVSBond
  ovs_bonds enp4s0f0 enp4s0f1
  ovs_options bond_mode=balance-tcp lacp=active other_config:lacp-time=fast
  ovs_mtu 9000


## Bridge für virtuelles Bond- und Vlan-Interface.
## VMs werden ebenfalls an diese Bridge angeschlossen.
allow-ovs vmbr2
iface vmbr2 inet manual
  ovs_type OVSBridge

    # NOTE: we MUST mention bond0, vlan50, and vlan55 even though each of them lists ovs_bridge vmbr2!
    # ANMERKUNG: wir MÜSSEN bond0, vlan50 und vlan55 erwähnen, auch wenn jeder von ihnen ovs_bridge vmbr2 aufführt!
    #       Not sure why it needs this kind of cross-referencing but it won't work without it!
    #       Ich bin nicht sicher, warum es diese Art von Querverweisen braucht, aber ohne sie wird es nicht funktionieren!

  ovs_ports bond0 vlan11 vlan12 vlan60 vlan61 vlan70 vlan71
  ovs_mtu 9000

allow-vmbr2 vlan11
iface vlan11 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr2
  ovs_options tag=11
  address 192.168.11.2
  netmask 255.255.255.0
  gateway 192.168.11.1
  ovs_mtu 1500

allow-vmbr2 vlan12
iface vlan12 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr2
  ovs_options tag=12
  address 192.168.12.2
  netmask 255.255.255.0
  gateway 192.168.12.1
  ovs_mtu 1500

allow-vmbr2 vlan60
iface vlan60 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr2
  ovs_options tag=60
  address 192.168.60.2
  netmask 255.255.255.0
  gateway 192.168.60.1
  ovs_mtu 1500

allow-vmbr2 vlan61
iface vlan61 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr2
  ovs_options tag=61
  address 192.168.61.2
  netmask 255.255.255.0
  gateway 192.168.61.1
  ovs_mtu 1500

allow-vmbr2 vlan70
iface vlan70 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr2
  ovs_options tag=70
  address 192.168.70.2
  netmask 255.255.255.0
  gateway 192.168.70.1
  ovs_mtu 1500

allow-vmbr2 vlan71
iface vlan71 inet static
  ovs_type OVSIntPort
  ovs_bridge vmbr2
  ovs_options tag=71
  address 192.168.71.2
  netmask 255.255.255.0
  gateway 192.168.71.1
  ovs_mtu 1500

Über eure Nachrichten, Anregungen, Tips und Hinweise würde ich mich freuen.
 
Hi,
Du kannst ein device (bond0) nur einer bridge zufügen. Ebenso machen in meinen Augen die vielen Bridges keinen Sinn.
Klar kannst Du mehrere bonds aus vlan-getaggten devices anlegen, aber da sehe ich keinen Vorteil bei der Konfiguration.

Keep it simple!
Darum einfach bond0 als device von vmbr0 nutzen und bei den VMs gibt's Du dann das vlan-tag an ( 4,5,60, was auch immer).

Neues Vlan einrichten ist dann ein Kinderspiel - am Mikrotik definieren, VMs in das Vlan stellen, fertig.

BTW. solange Du den Miktotek nicht für's routing zwischen den Vlans nutzt, ist das alles Layer2.


Viele Grüße

Udo
 
Hi,
dann müsste ich auf meine Konfig bezogen zwei bridges erstellen.

bridge0 für den PVE selber, weil der PVE ungetagged über eno1 an den Switch angeschlossen ist. Eben völlig separiert vom restlichen Netzwerk für administrativen Zugang zur GUI oder per SSH.

und

bridge1 für den bond0 für alle VLANs des Netzwerkes. Dort laufen dann alle VLANs auf, welche dann für die einzelnen VMs sind. Den VMs gebe ich dann bei der Erstellung das Tag des entsprechenden VLANs mit.

Ich haben nun 4 NICs zur Verfügung.
Die erste NIC (eno1) würde dann eine ganz normale Bridge bekommen, so wie Proxmox auch schon in der Grundinstallation eingerichtet hat. Halt ohne openvSwitch.
Also quasi so:

Code:
auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.1.5
        netmask 255.255.255.0
        gateway 192.168.1.1
        bridge_ports eno1
        bridge_stp off
        bridge_fd 0

iface enp4s0f0 inet manual

iface enp4s0f1 inet manual

iface eno2 inet manual

Wie würde das nun übertragen mit open vSwitch aussehen?
Und zusätzlich noch unter Berücksichtigung dessen, dass die anderen drei NICs zusammengefasst die VLANs zur Verfügung stellen sollen.

Ferner frage ich mich gerade, ob es wirklich nötig ist open vSwitch einzusetzen. Geht das nicht auch mit Linux-Bridge, -Bond, -VLAN?
Ich bin über einen Thread hier im Forum zu OVS gekommen.
 
Hi,
für eno1 brauchst Du keine Bridge - da hängen ja keine weiteren Interfaces (von VMs) mit drauf.
Hier reicht es eno1 ganz normal mit der IP und dem Gateway einzurichten.

Ob ein bond mit drei Interfaces jetzt sinnvoll ist, weiss ich nicht. Vielleicht ist da Dein Ansatz eine extra Bridge für Asterisk zu nutzen nicht verkehrt - je nach QoS/Traffic usw.

Wenn Du den Bond z.B. mit enp4s0f0 + eno2 machst, hast Du eine Ausfallsicherheit, egal welche Netzwerkkarte den Geist aufgibt (was zugegebenerweise recht selten ist). Zumal wenn alles auf ein Switch geht, ist dieser Aspekt eher nicht so wichtig.

Ich hatte vor langer Zeit mal ein Durchsatztest mit Linux-Bridges und OpenVSwitch-Bridgen gemacht und eine bessere Perfoirmance mit OpenVSwitch gehabt.


Udo
 
Hi Udo,
danke für deine Nachricht und Hilfe.

für eno1 brauchst Du keine Bridge - da hängen ja keine weiteren Interfaces (von VMs) mit drauf.
Hier reicht es eno1 ganz normal mit der IP und dem Gateway einzurichten.
Okay, das stimmt. Werde ich so einrichten.

Ob ein bond mit drei Interfaces jetzt sinnvoll ist, weiss ich nicht. Vielleicht ist da Dein Ansatz eine extra Bridge für Asterisk zu nutzen nicht verkehrt - je nach QoS/Traffic usw.
Jep, das weiß ich auch noch nicht. Deshalb wollte ich das SIP-Netz ankoppeln und um eben auf der sicheren Seite zu sein habe ich das so angedacht. Mir fehlt dafür einfach die Erfahrung.
Daher hatte ich vom Grundgedanken auch vor die Lasten von vorne herein auf mehrere Bonds zu verteilen. So ein wenig aus dem Bauch heraus, wo Lasten entstehen können und dazu dann eher unwichtige Netzbereiche. Aber es ist sicher auch richtig, dass ein Bond mit mehreren NICs auch mehr Last vertragen kann und es sich dann alles relativiert.
Bin halt unerfahren mit dieser Materie.

Wenn Du den Bond z.B. mit enp4s0f0 + eno2 machst, hast Du eine Ausfallsicherheit, egal welche Netzwerkkarte den Geist aufgibt (was zugegebenerweise recht selten ist). Zumal wenn alles auf ein Switch geht, ist dieser Aspekt eher nicht so wichtig.
Das stimmt. Aber es ist für unser Netz eher nebensächlich. Wenn ich darauf eingehen kann, werde ich das auch tun. Es ist halt ein privates Netzwerk und kein wirklicher Beinbruch, wenn das Netzwerk mal 5 Tage ausfällt.
In einem Büronetzwerk sieht das sicherlich anders aus und würde ich mit höherer Priorität behandeln.

Ich hatte vor langer Zeit mal ein Durchsatztest mit Linux-Bridges und OpenVSwitch-Bridgen gemacht und eine bessere Perfoirmance mit OpenVSwitch gehabt.
Ahhh, das wäre dann ja mal ein Pro-Punkt. Hatte OpenVSwitch quasi von vorne herein auf dem Schirm. Was momentan für mich dagegen spricht, ist die Syntax und was muss ich wie konfigurieren...
Ich versuche das Wiki über OpenVSwitch zu verstehen und das Netzwerk in der /etc/network/interfaces abzubilden.
Aber ich scheitere bisher... auch der einfachsten Konfiguration z. B. mit nur der ersten NIC (eno1) für den PVE Host selber.
So recht verstehe ich das Wiki an dieser Stelle noch nicht. Aber ich gebe nicht auf und versuche zu lernen.
Mein weniges Alltags-Englisch ist da auch nicht gerade hilfreich. Daher versuche ich die Texte im ganzen zu Übersetzen. So kommt es dann auch zu den "komischen" Übersetzungen als Kommentar in den Konfigs... ;-)

Wenn ich hier eine interfaces einstelle, kannst du dann sehen, ob die stimmt?
 
Hier einmal meine jetzige interfaces

Bitte schaut sie euch einmal an. Sind da noch Fehler? Gibt es Verbesserungen oder Tips?

Ich wäre euch für eure Hinweise dankbar.

Code:
auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
  address 192.168.1.5/24
  gateway 192.168.1.1

allow-vmbr0 eno2
iface eno2 inet manual
  ovs_type OVSPort
  ovs_bridge vmbr0

#allow-vmbr1 enp4s0f0
iface enp4s0f0 inet manual
  mtu 1500

#allow-vmbr1 enp4s0f1
iface enp4s0f1 inet manual
  mtu 1500

allow-vmbr1 bond0
iface bond0 inet manual
  ovs_bonds enp4s0f0 enp4s0f1
  ovs_type OVSBond
  ovs_bridge vmbr1
  ovs_options lacp=active bond_mode=balance-tcp
#  other_config:lacp-time=fast
#  ovs_mtu 9000

allow-ovs vmbr0
iface vmbr0 inet manual
  ovs_type OVSBridge
  ovs_ports eno2

allow-ovs vmbr1
iface vmbr1 inet manual
  ovs_type OVSBridge
  ovs_ports bond0 vlan11 vlan12 vlan60 vlan61 vlan70 vlan71
  ovs_mtu 9000

Laut der Wiki sollten eigentlich die auskommentierten Zeilen aktiviert sein.
Was gäbe es dazu zu sagen?

Mit dieser interfaces kann ich von verschiedenen Rechnern entsprechende Test-VMs in verschiedenen VLANs anpingen. Sowie umgedreht auch aus den VMs heraus die Rechner.

Also augenscheinlich erst mal alles okay. Aber mangels eigener Erfahrung bleibt schon noch Ungewissheit, ob alles wirklich so richtig ist.
 
Hallo,

Wir nutzen schon sehr lange openvswitch und hatten dmit noch nie Probleme:

Hier mal meine Konfiguration:

auto lo
iface lo inet loopback

allow-hotplug eno49
allow-hotplug eno50
allow-hotplug eno51
allow-hotplug eno52
allow-hotplug eno53
allow-hotplug eno54
allow-hotplug eno55
allow-hotplug eno56

iface eno49 inet manual
iface eno50 inet manual
iface eno51 inet manual
iface eno52 inet manual
iface eno53 inet manual
iface eno54 inet manual
iface eno55 inet manual
iface eno56 inet manual

# Cluster Kommunikation
auto bond0
iface bond0 inet static
address 10.6.9.211
netmask 255.255.255.0
gateway 10.6.9.1
bond-miimon 100
bond-lacp-rate 1
bond-mode 4
slaves eno49 eno50

# Storage
auto bond1
iface bond1 inet static
address 10.3.9.211
netmask 255.255.255.0
bond-miimon 100
bond-lacp-rate 1
bond-mode 4
slaves eno51 eno52

# Migration Ring 2
auto bond3
iface bond3 inet static
address 192.192.1.211
netmask 255.255.255.0
bond-miimon 100
bond-lacp-rate 1
bond-mode 4
slaves eno55 eno56

# VM
allow-vmbr0 bond2
iface bond2 inet manual
ovs_bonds eno53 eno54
ovs_type OVSBond
ovs_bridge vmbr0
ovs_options bond_mode=active-backup

auto vmbr0
iface vmbr0 inet manual
ovs_type OVSBridge
ovs_ports bond2


VLAN's setzen wir auf der vmbr0 keine, nur in der GUI.
MTU verändern wir auch nicht.
lacp muss vom Switch unterstützt werden. Schau mal im Kernellog ob beim starten des bond0 da irgendweclhe warnungen sind.


Peter


Peter
 
VLAN's setzen wir auf der vmbr0 keine, nur in der GUI.
MTU verändern wir auch nicht.
lacp muss vom Switch unterstützt werden. Schau mal im Kernellog ob beim starten des bond0 da irgendweclhe warnungen sind.



Peter
Hallo Peter,

so etwas ähnliches nur sehr "abgespecktes" versuche ich bei mir im homelab hinzubekommen. Nur leider komme ich nicht mehr auf das WebUI von Proxmox sobald ich ähnliches eingerichtet habe :(

Mein Ziel ist es, dass mein Host (6 NICs) 1 NIC für WAN hat (ich virtualisiere aktuell meine Sophos XG) und Rest als "Switch" fungiert.
Damit ich die 2 benötigten NICs der Sophos auch in der VM habe, sind 2 bridges vorhanden (Passthrough kann ich nicht anmachen, da bei eingeschalteten IOMMU SATA Fehler kommen :().

Also habe ich 2 Bridges gebaut und der einen eine static IP zugeordnet um auf das WebUI zu kommen.
Funktioniert dann leider nicht mehr. Die VLANs für meine einzelnen Netze sollen in der Sophos erst gemanaged werden oder alternativ dann einzelnen LXCs / VMs in der GUI mitgegeben werden.

Hier ist meine aktuelle config:

Bash:
auto lo
iface lo inet loopback

iface enp3s0 inet manual
iface enp5s0 inet manual
iface enp6s0 inet manual
iface enp7s0 inet manual
iface enp8s0 inet manual
iface enp9s0 inet manual

auto vmbr0
iface vmbr0 inet static
    address 10.0.4.11
    netmask 255.255.255.0
    gateway 10.0.4.1
    ovs_type OVSBridge
    ovs_ports enp3s0 enp5s0 enp6s0 enp7s0 enp8s0

auto vmbr1
iface vmbr1 inet manual
    ovs_type OVSBridge
    ovs_ports enp9s0

Ich hoffe hier kann mir irgendwer helfen.
Mit der Linux Bridge hat das zuvor alles funktioniert, dafür habe ich dann aber nur 70-120 Mbit auf WAN im DL und nur 8 im UL. Mit dem OpenVswitch hab ich dann die volle Bandbreite erreichen können (allerdings mit einer Config, wo die VLANs nicht funktionieren, da waren VLANs auf den Bridges etc dann schon mitgegeben worden).
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!