VM PCI durchreichen

mericon

New Member
Feb 1, 2021
5
0
1
37
Hallo zusammen,

ich hänge gerade etwas an der konfiguration meiner VM für pfSense.
Da ich mit den virtio netzwerkkarten seltsamerweise nur ca 80-100mbit von 500mbit bekomme wollte ich nun eine NIC per PCIe durchreichen aber irgendwie reicht proxmox direkt beide Interfaces durch.
Ich bin damit auch noch ganz am anfang meines wissens vielleicht geht es ja auch garnicht.

Hardware: HP microserver GEN10

lspci:

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Root Complex

00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) I/O Memory Management Unit

00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Carrizo (rev 84)

00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Kabini HDMI/DP Audio

00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Host Bridge

00:02.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Root Port

00:02.5 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Root Port

00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Host Bridge

00:08.0 Encryption controller: Advanced Micro Devices, Inc. [AMD] Carrizo Platform Security Processor

00:09.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Carrizo Audio Dummy Host Bridge

00:10.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller (rev 20)

00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 49)

00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 49)

00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 4a)

00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 11)

00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 0

00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 1

00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 2

00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 3

00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 4

00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) Processor Function 5

01:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9230 PCIe SATA 6Gb/s Controller (rev 11)

02:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe

02:00.1 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe

Ich habe versucht das gerät 02:00.1 durchzureichen. Aber es wird immer das gesammte gerät durchgereicht (also 02:00).

Kann man dieses irgendwie lösen oder muss ich nach einer anderen lösung suchen?

gruß

Mericon
 
Nicht jeder Rechner kann einzelne Funktionen eines Geräts druchreichen. Dazu musst du "x2apic" im BIOS aktiviert haben. Und hängt auch immer etwas davon ab, wie gut da CPU/Chipsatz/Mainboard Virtualisierung unterstützen. Bin nicht sicher wie genau das bei AMD ist, aber bei Intel hat man z.B. ein Problem wenn der Rechner nur VT-d und kein VT-x kann, weil man bei VT-d die PCI Gruppen nicht ändern kann.

Und die NIC muss das selbst auch unterstützen. Nicht jedes Gerät kann einzelne Funktionen an verschiedene VMs durchreichen. Nehmen wir z.B. mal Grafikkarten. Eine Funktion ist da die Grafik und eine andere Funktion der Sound. Die beiden Funktionen sind gekoppelt und können nicht einzeln benutzt werden. Da muss man dann immer beides durchreichen.

Bist du das Tutorial im Wiki mal durchgegangen? Was hat denn da dein Rechner als Info zurückgegeben? Also z.B. für dmesg | grep -e DMAR -e IOMMU und dmesg | grep 'remapping'
 
Last edited:
Hier sind die beiden ausgaben:

root@pve:~# dmesg | grep -e DMAR -e IOMMU
[ 1.950144] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[ 1.952117] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[ 1.952973] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[ 6.483910] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>

root@pve:~# dmesg | grep 'remapping'
[ 1.952127] AMD-Vi: Interrupt remapping enabled
 
Was sagt find /sys/kernel/iommu_groups/ -type l | grep 02:00?
"02:00.0" und "02:00.1" müssen in unterschiedlichen IOMMU Gruppen sein, sonst kannst du die nicht einzeln durchreichen sondern nur zusammen.

Bei einem anderen User hier im Forum waren die beiden Funktionen in der gleichen IOMMU Gruppe und daher ging es dort auch nicht. Der hatte auch eine NIC mit dem "BCM5720" Chip. Falls das bei dir auch der Fall ist, dann unterstütz die NIC das wohl einfach nicht.
 
Last edited:
Schade beide in der gleichen Gruppe. Das heißt dann für mich entweder weiter suchen warum der Durchsatz der pfsense VM so schlecht ist oder eine weitere Netzwerkkarte kaufen.

Ich danke dir für die superschnelle hilfe
 
Schade beide in der gleichen Gruppe. Das heißt dann für mich entweder weiter suchen warum der Durchsatz der pfsense VM so schlecht ist oder eine weitere Netzwerkkarte kaufen.

Ich danke dir für die superschnelle hilfe
Was hast du denn da als virtuelle NIC für die VM genommen? VirtIO ist ja normalerweise am performantesten aber OPNsense ist ja Unix und kein Linux und hat daher leider nicht die beste VirtIO-Unterstützung.

Du kannst mal versuchen "hardware checksum offloading" und "hardware TCP segmentation offloading" zu deaktivieren, falls deine NIC so etwas besitzt.
 
Last edited:
Offloading ist pfsense seitig vollkommen deaktiviert und als vnic ist virtio genutzt.

Eigendlich hab ich alles aus der pfsense Anleitung eingestellt nutzt nur leider nicht viel.

Kann man ggf das proxmox Webinterface so umbiegen das dieses eine vmbr also nic nutzt? Dann könnte ich testen ob ich den nic an die pfsense weiterreichen kann und zusätzlich die vmbr um weiter auf proxmox zu kommen
 
Offloading ist pfsense seitig vollkommen deaktiviert und als vnic ist virtio genutzt.

Eigendlich hab ich alles aus der pfsense Anleitung eingestellt nutzt nur leider nicht viel.

Kann man ggf das proxmox Webinterface so umbiegen das dieses eine vmbr also nic nutzt? Dann könnte ich testen ob ich den nic an die pfsense weiterreichen kann und zusätzlich die vmbr um weiter auf proxmox zu kommen
Wenn die Bridge irgendwie mit der Außenwelt kommunizieren soll, dann muss die schon mit einer physischen NIC verbunden sein. Also VMs können auch einfach so mit einer Bridge verbunden sein, aber dann kommen die halt nicht mehr ins Internet etc und du nicht mehr auf die Proxmox WebGUI.

Bei vielen Leuten (z.B. hier und hier) mit Intel NIC und schlechter Peformance musste auch das Hardware Offloading auf dem Proxmox Host selbst deaktiviert werden. Nicht nur in der OPNSense-VM selbst, welche ja eh kein Offloading kann, weil die ohne Passthrough keinen physischen Zugang zur echten NIC hat.
 
Last edited:
Hallo,

ich habe nun nochmal einige Tests durchgeführt.

Grundbedingungen:
Auf der pfSense VM Hardware und TCP offload deaktiviert.
WAN = vmbr0 = eth0
LAN = vmbr2

VM mit debian + iperf3 = vmbr2

Ich habe jeweils für die verschiedenen interfaces tso und gso abgeschaltet. und dann mit der test VM einen iperf3 -R laufen lassen.
Leider bei allen versuchen nur ca 250mBit von 500 erreicht.

Aktuell muss ich wohl damit leben meine Firewall über die Fritzbox zu nutzen aber noch gebe ich nicht auf :)