OPNsense PCI Passthrough NICs Proxmox v7.0-11

mle

Member
Aug 5, 2021
78
16
13
31
Austria
Hy Leute

Bin auf ein Problem gestoßen.

Erstmal gleich ein paar Infos am rande:
Ich weiß über die Funktionsweise von PCI Passthrough unter Proxmox bescheid.
Alle Parameter und Module die auf meiner Hardware benötigt werden sind gesetzt und eingeladen.
Gerät wird anhand eines Skripts und eines cronjob während dem start von Proxmox auch schon ausgehängt und an den VirtIO Treiber gebunden.
Die IOMMU gruppen passt auch.
Durchgereichte PCIe Geräte wurden in einer Win Server 2019 VM getestet.
Allgemein kann ich sagen das das durchreichen an die VM ohne Probleme funktioniert.
Auch nach einem neustart Hard Reset oder ähnliches der VM.
Auch die Treiber Installation und die allgemeine Funktion die ein NIC so leisten muss.

Aber da ich kein Win auf meinen Servern haben will bleibt das JA nicht so xD.

Also OPNsenes ISO besorgt und gestartet.
Alle VirtIO NICs sind sichtbar aber die PCIe durchgereichten NICs nicht.
Ich sehe aber am Switch dass die NICs starten.

So erst mal googlen und die Forum suche benutzen xD.

Dürfte also ein Problem von BSD 12 sein und unter BSD 13 nicht mehr auftreten. (OPNsense, PFsense, beide aktuell noch BSD 12.xx)

Lösung ist auf i440fx zu wechseln oder q35 v3.1 zu nutzen. (Nicht getestet)

Unter i440fx kann ich die PCIe Funktion nicht benutzen.
Bei q35 v3.1 bin ich nicht so bewandert ob das irgendwelche Performance, Stabilität und oder Sicherheitsbedenken mit sich bringt.

Beides ist irgendwie nicht so richtig zufriedenstellend.

So test weise mal zu pfsense gewechselt.

Nach einigen Tests sind mir keine Fehler aufgefallen. z.b NICs sind sichtbar bekommen einen DHCP lease usw.

Fehler tritt bei mir also nur unter OPNsense auf. (obwohl ich in den meisten Forums immer wieder mal gelesen habe das es unter pfsense das gleich Problem gibt)

Hadware:
Intel Corporation 82571EB/82571GB Gigabit Ethernet Controller (4x 1GB NIC)

Settings:
hostpci0:0000:10:00,pcie=1,rombar=0

Somit werden 2x NICs 10:00:00 und 10:00:01 von den 4x durchgereicht.
Jeweils 2x NICs sind in der gleichen IOMMU gruppe. Sollte aber auch so passen da ich ja 2x NICs durchreich will. (Multi-WAN)
Unter WIN Server sind so auch keine Fehler aufgetreten.

JA ich will meine WAN NICs nur in Verbindung von PCI Passthrough an die VM durcheinen und für das WAN keine Linux Bridge nutzen.

Sind euch diese Probleme bekannt und welche Lösungsansätze setzt ihr so ein.

Ich freue mich auf eure antworten und Lösungsvorschläge.
 
Lösung ist auf i440fx zu wechseln oder q35 v3.1 zu nutzen. (Nicht getestet)

Unter i440fx kann ich die PCIe Funktion nicht benutzen.
Das klingt doch schon mal vielversprechend ;)

PCIe muss nicht aktiviert sein, auch für PCIe Geräte. Es bringt in der Tat keinen performancemäßigen Vorteil "normales" PCI zu verwenden, da der Bus sowieso emuliert ist, und die einzige Beschränkung die physische Verbindung ist. Die Flag existiert weil manche Treiber (besonders unter Windows) spezielle checks haben und nur dann funktionieren, wenn dediziert PCIe als Bus angegeben ist.

Ich würde also vorschlagen einmal i440fx zu probieren, und die PCIe flag einfach wegzulassen.
 
  • Like
Reactions: mle
Hallo Stefan
Erstmal Danke für deine Antwort war sehr lehrreich.

Hab leider ein Verständnis Problem was das mit dem virtuellen Chipsatz so auf sich hat. (i440fx, q35)

Ich weiß zwar das i440fx eher bei Windows zu fernwenden ist und Q35 bei Linux basierenden Systemen.

Ich weiß aber nicht genau wo die unterscheide liegen außer halt das mit dem PCIe flag.

Allgemein kann ich nur sagen dass sich die allgemeine System Performance unter q35 auf meinen Systemen besser anfühlt.
Spiegeln auch die Benchmarks wieder ist aber schwer das zu behauten da die Unterschiede fast in der Messtoleranz liegen.

Mit Windows und Linux Systemen bin ich ja gut vertraut aber unter UNIX fühle ich mich einfach nicht heimisch und kann somit auch keine aussagekräftigen Benchmarks durchführen.

Wäre toll wenn jemand den unterschied von i440fx und q35 genauer erläutern kann. Hab zwar versucht mich schon online zu informieren aber finde nicht wirklich aussagekräftige Informationen dazu außer den Verwendungszweck.

Interessant wären auf alle fälle die vor und nachteile.
und wie sich UNIX so im allgemeinen mit den 2x verraten veraltet.

MFG. Mike
 
Last edited:
Hier noch ein Nachtrag.

So mal etwas herum getestet:

Software:
Proxmox v7.0.-11
OPNsense v21.7.1 x64

Tests:
q35 v3.0-2.10 PCIe ON OFF Not Tested
q35 v3.1 PCIe ON Working
q35 v3.1 PCIe OFF Not Tested
q35 v4.0 PCIe ON Non Working
q35 v4.0 PCIe OFF Not Tested
q35 v4.0.1 PCIe ON Non Working
q35 v4.0.1 PCIe OFF Not Tested
q35 v4.2 PCIe ON Non Working
q35 v4.2 PCIe OFF Not Tested
q35 v4.2 PCIe ON Non Working
q35 v4.2 PCIe OFF Not Tested
q35 v5.0 PCIe ON Non Working
q35 v5.0 PCIe OFF Not Tested
q35 v5.1 PCIe ON Non Working
q35 v5.1 PCIe OFF Not Tested
q35 v5.2 PCIe ON Non Working
q35 v5.2 PCIe OFF Not Tested
q35 v6.0 PCIe ON Non Working
q35 v6.0 PCIe OFF Working

i440fx v6.0 PCIe OFF Working

Soll hier nur um die Info der Sichtbarkeit der NICs gehen.
DHCP lease haben sie immer bekommen wenn sie sichtbar waren, habe aber keine weiteren test durchgeführt.
 
Vielleicht ist das hier aus der OPNsense Doku bezüglich Virtualisierungskompabilität nützlich:

KVM​

i440FX chipset OPNsense on KVM works with virtio disks and network devices (confirmed on QEMU 5.0).

Q35 chipset OPNsense on KVM currently does not work with the Q35 chipset. Virtio and other PCIe devices do not get detected properly. This is a FreeBSD/KVM related issue that is unspecific to OPNsense.
 
Hallo Dunui

Danke für den hinweis dürfte ich in der DOKU übersehen haben.

Habe gestern noch einige testet gemacht. (Win Server 2019)

Aktuell kann ich nur sagen das mit Proxmox v7.0-11 auch unter dem i440fx v6.0 Chipset sich die Benchmarks sehr gut verhalten.

Habe aber noch das Problem das der PCI Passthrough sich unter i440fx komisch verhält. Das durchreichen an sich ist kein Problem aber die Treiber Installation verwendet dann einen komplett anderen Treiber mit dem der NIC nicht arbeitet. Kann ich zwar von Hand änder ist aber irgenwie auch nicht das wahre da es vorkommt das nach einen neustart das gerät wider nicht mehr erkannt wird.

Hab jetzt beide NICs einzeln durchgereicht dann verhält sich das mit dem Treiber besser kommt aber trotzdem noch vor.

So gehen wir mal davon aus das dann beide NICs richtig erkannt werden dann passt irgendwas trotzdem noch nicht ganz einer funktioniert dann ganz normal und der andere bekommt keinen DHCP lease mehr und wenn ich dann eine IP von Hand vergebe verhält sich das auch irgenwie komisch z.b. RDP ist sehr langsam, unter q35 v6.0 auch ohne PCIe flag habe ich diese Probleme nicht.

Habe natürlich die MAC der 2x NICs kontrolliert und diese passen.

So wollte das nur mal als Info posten, werde noch einige test durchführen wenn ich wieder von der Arbeit zuhause bin.

Ich danke euch für euren Support und eure großartige Software.
 
Hallo Leute
Hier mal der Nachtrag zu meinem Finalen Setup.

Hadware:
Dell R320 Server (SR-IOV Aktiviert)
Intel Corporation 82571EB/82571GB 4x NIC (2x NICs PCI Passthrough für Multi-WAN)

Software:
Proxmox v7.0.-11 Qemu v6
OPNsense v21.7.1 x64

VM:
Chipset: q35 v6.0 (Laut OPNsense Doku gibt es nur Probleme unter Qemu v5 unter v6 treten bei mir keine Probleme mehr auf) (PCIe: flag=Disable)
CPU: Type Passend zu meinem System (z.b. SandyBridge-IBRS)
CPU-Flags:+md-clear;+pcid;+spec-ctrl;-ssbd;-ibpb;-virt-ssbd;-amd-ssbd;-amd-no-ssb;+pdpe1gb;-hv-tlbflush;-hv-evmcs;+aes (Kann bei anderen Systemen abweichen) (zumindest aes sollte aber unterstütz werden)
UEFI: Aktiviert
Storage: Virt-IO SCSI ink. SSD emulation
PCI-Passthrough: Alle Funktionen ohne ROM Bar und ohne PCI-E
NICs: 2x PCI-Passthrough, Alle anderen Virt-IO ohne FireWall Settings von Proxmox

Optionen:
Tablet eingabe: Disable
SPICE: Disable
OS-Type: Other
RTC: Aktiviert
Hotplug: keine
ACPI: Aktiviert
KVM: Aktiviert
Qemu Agent: Aktiviert (gibt ein Plugin unter OPNsense getestet und Funktioniert)

Hab jetzt sehr viele test durchgeführt.
Es treten keine Auffälligkeiten mehr auf.

Performance: OK
Datendurchsatz und Paket Zeit OK
Reset und Stoppen und neu starten der VM keine Probleme.

Das einzige was ich gefunden habe was nicht geht ist Snapshots ink. RAM Zurückspielen
Dann verhalten sich die PCI-Passthrough durchgereichten NICs komisch.

Neu Starten der VM behebt das Problem.

Snapshots ohne RAM oder Backups keinerlei Probleme.

Möchte mich noch bei Stefan_R Bedanken für das Verständnis über der Virtuellen PCI BUS
War mir da unschlüssig ob es ein Hard Coded Bandwidth Limit gibt.

i440fx kann ich leider nicht einsetzten da sich bei mir dann immer 1x von den 2x NICs komisch verhält, ohne PCI-Passthrough sollte es auch keine Probleme geben

Ich Danke für eure Hilfe und hoffe dass ich vielleicht auch anderen die Probleme mit OPNsense unter Proxomx haben weiterhelfen kann.

English Forum Post:
https://forum.proxmox.com/threads/opnsense-pci-passthrough-nics-proxmox-v7-0-11.94653/#post-411697
 
Last edited:

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!