Verständnisfrage zu virtIO-Devices und iperf3 (Speedtests)

Dec 19, 2012
494
14
83
Hallo.
Ich habe ein paar Speedtests über div. VMs und bare-metal-Maschinen laufen lassen und wundere mich über ein paar Dinge ... vielleicht kann jemand Licht ins Dunkel bringen:

1. Szenario:
Promox-Host mit 10GBit Intel-NIC läuft als iperf3-Server.
Eine VM im gleichen VLAN.0 (vmbr0) bekommt volle Geschwindigkeit mit ~20GBit/s
Lege ich aber die VM auf ein anderes VLAN (z.B. VLAN.1, das tagged mit in bond0 ist), geht die Geschwindigkeit auf 1GBit/s runter. Das verstehe ich nicht.

2. Szenario:
Ein Kali-Linux läuft in VLAN.13 und eine andere VM auf dem gleichen Proxmox-Host läuft in VLAN.11 (beide Netzwerkkarten wieder virtIO).
Wenn ich nun den Speedtest mache, erhalte ich nur 1Gbit/s. Sind beide im gleichen VLAN geht's wieder mit ~20 GBit/s

3. Szenario:
Eine VM läuft in VLAN.11 (wieder: virtIO) und ist über ein 2x 10GBit LAG mit einer OPNSense verbunden. Ein Speedtest von dieser VM zur OPNSense liefert über das LAG weder 1 Gbit/s noch 10GBit/s sondern Werte wie z.B 1.32 Gbits/sec -- wenn ich den Schalter -P4 verwende, geht das hoch bis auf knapp 3.5 Gbit/sec ... aber niemals 10 GBit/s.

Die Frage ist: warum ist das so? Vor allem wundert mich, dass die Geschwindigkeit von 10 auf 1 runtergeht, wenn man nur das VLAN wechselt. Alle Switche sind mit 2x 10GBit/s LAGs untereinander verbunden, so dass es eigentlich schneller sein sollte?!?

Danke für einen guten Tipp.
 
Last edited:
was routet denn zwischen den vlans?

ich würde drauf tippen, dass der router nur 1 gbit macht.
wenn die opnsense routet, dann würde ich darauf tippen.
ein speedtest zwischen host und opnsense von 1.32 gbit deutet jedenfalls drauf hin.
 
wie soll das denn proxmox selbst machen?
das ist ein hypervisor, kein router.
und das die opnsense mit 2x 10gbit angebunden ist heisst noch nichts.
du hast ja selbst geschrieben, dass eine speedtest zwischen host und opnsense nur 1.32 gbit hergibt.
da ist also entweder irgendwo ein device, das bremst.
das ist entweder die opnsense selbst (gib uns am besten mal die specs von der hardware auf der opensense läuft), oder etwas im netzwerk, dass bremst.

wir brauchen hier definitiv mehr infos.
 
Ok ...
Der Aufbau ist so:

VM (z.B Kali) auf
dell-R730xd (Proxmox)
<==o==> Cisco SG350X
<==o==> Unifi 16XG
<==o==> OPNSense (bare metal auf einer Deciso DEC3850)

Die 1.3GBit/s sind ja schon mal etwas mehr als 1GBit/s -- wenn ich den o.b. Speedtest mache, kommen in den genannten Fällen aber nur ~980MBit/s über -- niemals über 1GBit/s ... zudem kommen wie gesagt mit dem Schalter -P mehr als 1 GBit/s über.

Übrigens: <==o==> sind jeweils 2x 10 Gbit-LAGs mit LACP
 
ok. an der vm kanns schonmal nicht liegen, da die ja, im gleichen vlan wie der host, volle geschwindigkeit bekommt (da verlassen die pakete den host nicht).
somit muss es zwingend entweder an der netzwerkkarte des hosts oder den anderen netzwerkkomponenten liegen.
kannst du überprüfen, ob wirklich überall entsprechende 10G links angezeigt werden (speziell in den switchen)?

was zeigt dir denn ethtool <interfacename> auf dem host an?
für den befehl bitte das physische interface verwenden und nicht die bridge.

da müsste dann sowas wie das hier rauskommen (nur halt mit 10 gbit):

Code:
root@pve:~# ethtool enp3s0
Settings for enp3s0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        MDI-X: off (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes
 
Auf der OPNSense habe ich kein "ethtool" aber immerhin "ifconfig":
Code:
ax0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=48500b8<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWFILTER,VLAN_HWTSO,NOMAP>
        ether f4:90:ea:00:82:cd
        media: Ethernet autoselect (10GBase-SFI <full-duplex,rxpause,txpause>)
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
ax1: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=48500b8<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWFILTER,VLAN_HWTSO,NOMAP>
        ether f4:90:ea:00:83:ce
        hwaddr f4:90:ea:00:83:bb
        media: Ethernet autoselect (10GBase-SFI <full-duplex,rxpause,txpause>)
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Diese beiden bilden auf der OPNSense das lagg0

Auf dem Proxmox-Host sieht das ganze so aus:
Im bond0 sind die beiden devices eno1 und eno2 -- wenn ich ethtool für eno1 nachsehe, erhalte ich:
Code:
Settings for eno1:
        Supported ports: [ FIBRE ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseT/Full   <<< Drängelt sich das evtl vor?
                                10000baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 10000Mb/s
        Duplex: Full
        Auto-negotiation: on
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: umbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes
Das gleiche für eno2. Und bei "ethtool bond0" erscheint: Speed: 20000Mb/s
Sieht richtig aus.

Der Cisco-Switch zeigt:

10G-FiberOpticsUp

und der Unifi-Switch sowieso ... von daher steht einer Verbindung mit 10G doch eigentlich nichts im Wege, oder??
 
Last edited:
sieht eigentlich alles so aus, wie man es erwarten würde.
die von dir markierten 1gbit heissen nur, dass die karte auch 1gbit könnte, wenn der switch keine 10gbit mag.

ausgehandelt ist 10g, wie du weiter unten siehst.

was bekommst du denn für einen speedtest zwischen proxmox-host und opnsense?

ist das auch so lahm, oder nur zwischen vm und opnsense?

könntest du für uns auch mal die /etc/network/interfaces config vom proxmox-host posten, sowie die config deiner vm?
 
was bekommst du denn für einen speedtest zwischen proxmox-host und opnsense?
Da bekomme ich nur 1Gbit -- das ist aber auch klar. Wenn ich per ssh auf den Proxmox-Host über sein Management-Interface gehe, bin ich in VLAN.0. Diese Netzwerkkarte ist im Proxmox-Host onboard und kann nur 1GBit/s. Zusätzlich steckt da aber eine intel X520 mit 2x SFP+ Ports.

Die Verbindung aller anderen VLANs läuft darüber, also als LAG (alle VLANs tagged) und die müsste dann auch 10GBit können.

Code:
cat /etc/network/interfaces

auto lo
iface lo inet loopback

allow-hotplug eno1
iface eno1 inet manual
allow-hotplug eno2
iface eno2 inet manual
allow-hotplug eno3
iface eno3 inet manual
allow-hotplug eno4
iface eno4 inet manual

auto bond0
iface bond0 inet manual
        slaves eno1 eno2
        bond_miimon 100
        bond_mode 802.3ad
        bond_xmit_hash_policy layer2+3
#2-fach-bond0 / LAG1

auto vmbr0
iface vmbr0 inet static
        address 192.168.1.10
        netmask 255.255.255.0
        gateway 192.168.1.1
        bridge_ports eno3
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

auto vmbr1
iface vmbr1 inet manual
        bridge_ports bond0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

auto vmbr2
iface vmbr2 inet manual
        bridge_ports bond0.2
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0


auto vmbr10
iface vmbr10 inet manual
        bridge_ports bond0.10
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0


auto vmbr11
iface vmbr11 inet manual
        bridge_ports bond0.11
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

auto vmbr13
iface vmbr13 inet manual
        bridge_ports bond0.13
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

Code:
#VM: KALI
bootdisk: scsi0
cores: 4
ide2: local:iso/kali-linux-2023.3-live-amd64.iso,media=cdrom,size=4388012K
memory: 4096
name: Kali-Linux
net0: virtio=16:E0:22:D9:2E:E8,bridge=vmbr11
numa: 0
ostype: l26
scsi0: zfs-pool-2:vm-800-disk-0,size=32G
scsihw: virtio-scsi-pci
smbios1: uuid=43e58e43-8ba0-42f1-a27d-98faef87cf36
sockets: 1
 
irgendwas ist an der netzwerkkonfig komisch.

du definierst für jedes vlan eine eigene bridge, mit einem slave-interface, dass selbst nicht definiert ist.

ich kann nicht genau sagen warum, aber ich hab das gefühl, dass hier der haste begraben liegt.

du könntest die netzwerkkonfig so umbauen, dass du nur eine vlan-bridge verwendest, diese aber als vlan-aware definierst und dann der vm einfach nur das entsprechende vlan tag in der konfig mitgibst.

Ich meine in etwa sowas hier:

Code:
auto lo
iface lo inet loopback

allow-hotplug eno1
iface eno1 inet manual
allow-hotplug eno2
iface eno2 inet manual
allow-hotplug eno3
iface eno3 inet manual
allow-hotplug eno4
iface eno4 inet manual

auto bond0
iface bond0 inet manual
        slaves eno1 eno2
        bond_miimon 100
        bond_mode 802.3ad
        bond_xmit_hash_policy layer2+3
#2-fach-bond0 / LAG1

auto vmbr0
iface vmbr0 inet static
        address 192.168.1.10
        netmask 255.255.255.0
        gateway 192.168.1.1
        bridge_ports eno3
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
        

auto vmbr1
iface vmbr1 inet manual
        bridge_ports bond0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
        bridge-vlan-aware yes
        bridge-vids 2-4094

Dann gibst du in der GUI der entsprechenden VM nur noch das jeweilige gewünschte VLAN-Tag mit, nachdem du sie mit vmbr1 verbunden hast.
könntest du das zumindest mal versuchen?
einfach vorher deine konfig sichern.
ich kann leider nicht genau sagen, was mich an deiner konfig stört, aber sie sieht für mich nicht korrekt aus.
 
Kann ich testen -- nur nicht im Moment. Aber die config ist auch nicht auf meinem Mist gewachsen sondern die habe ich aus einer Doku übernommen und entsprechend erweitert. Ich meine, dass bei älteren Proxmox-Versionen der Eintrag "vlan aware" noch nicht da war und erst später kam ... die config ist auf jeden Fall schon älter und ist von Version zu Version seit V5.3 (?) mit umgezogen.

Ich habe in der Zwischenzeit andere Beiträge dieser Art entdeckt:
https://forum.proxmox.com/threads/v...-370mbps-with-proxmox-host-10gbps-nic.132157/
oder auch:
https://binaryimpulse.com/2022/11/opnsense-performance-tuning-for-multi-gigabit-internet/
Bisher habe ich es aber vermieden, irgendwelche Tunables auf der OPNSense einzustellen. Die DEC38050 wurde so wie sie ist geliefert ... da würde ich erwarten, dass die dann auch 10GBit kann?!?
 
Last edited:
Wie hast du das LAG auf der Sense konfiguriert?
Ich habe da auch schon mal richtig Stress gehabt, mit LACP L3+4. Nachdem ich das auf L2+3 geändert hatte, habe ich bei einer DEC2700 tatsächlich 9,2 GBit im Routing geschafft.
 
Auf der OPNSense-Seite steht:
Hash Layers: L3: Quelle/Ziel-Adresse für IPv4 oder IPv6
und auf der Proxmox-Seite steht:
bond_xmit_hash_policy layer2+3

Passt das nicht zusammen?
 
Das passt.
Bekommst du von einem anderen Gerät mehr Durchsatz zur Sense?
Du kannst auch mal testen wie es aussieht, wenn du einen Link vom LACP abziehst.
 
Kann ich leider im Moment nicht testen aber ich überlege wirklich schon, ob ich die LAGs zurückbaue und auf Redundanz zugunsten von Durchsatz verzichte. Kann ja auch immernoch sein, dass der dazwischen liegende Unifi-Billigheimer-Switch nicht ganz mitmacht
 
Ich würde nur ungern auf Redundanz verzichten. Active Backup geht mit jeder Hardware und schafft wenigstens etwas Redundanz beim Ausfall einer Leitung.
 
Kann ich leider im Moment nicht testen aber ich überlege wirklich schon, ob ich die LAGs zurückbaue und auf Redundanz zugunsten von Durchsatz verzichte. Kann ja auch immernoch sein, dass der dazwischen liegende Unifi-Billigheimer-Switch nicht ganz mitmacht
Wie @Falk R. schon schrieb: überprüfe mal die Layer settings in den LAGGs. Ggf. läuft da zwischen der Unifi und der Cisco was schief. Cisco kann m. W. nach 9 verschiedene Frame Distribution Types. Wie das auf der Unifi aussieht, weiß ich nicht. Bin mit deren Produkten nie warm geworden.
 
IPS oder IDS sind nicht aktiviert.

Was die LAG Settings angeht: meines Wissens kann man da bei unifi überhaupt nichts einstellen, nur „Aggregate“ und dann die Ports angeben, die zusammengefasst werden sollen. Wenn ich richtig informiert bin, geht auch nur LACP und nichts anderes. Wenn es da auf der Cisco Seite so viele verschiedene Möglichkeiten gibt, wäre es interessant zu wissen, wo die zu finden sind bzw welche zu UniFi Switches passen?
 

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!