XPC-NG Network Stack

xposity

New member
Hallo

steh hier vor einem Rätsel und komm nicht drauf woran das liegt.
Eventuell seh ich den Wald vor Bäumen nicht.


lshw -c network -businfo
Bus info Device Class Description
======================================================
pci@0000:00:03.0 enp0s3 network 82540EM Gigabit Ethernet Controller
veth16d3d97 network Ethernet interface
vethdb6275d network Ethernet interface


auf XEN mit XPC-NG : Fehlanzeige. (hier eine VM)
Bus info Device Class Description
========================================================
eth1 network Ethernet interface
kni254 network Ethernet interface
eth0 network Ethernet interface


... die Businfo fehlt. Wie kann ich die generieren oder durchreichen ?
brauch das für DPDK.

hab hier XPC-NG mit XEN Orchestra am Start und bin sehr zufrieden.
 
Zuletzt bearbeitet:

xposity

New member
Nachtrag:
Ist wohl bei jeder phys. HW und auch bei Virtualbox definitiv anders...
da bekomm ichs immer durchgereicht.
 

xposity

New member
Hallo

Erst mal danke für Deine schnelle Nachricht Blurrr;
;-)

aber leider bringt mir das nix ich kann es nicht zurordnen.

Virtualbox:
lshw -c network -businfo
Bus info Device Class Description
======================================================
pci@0000:00:03.0 enp0s3 network 82540EM Gigabit Ethernet Controller
lspci
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)


...s.o. alles fein ;-)

XEN:
lshw -c network -businfo
Bus info Device Class Description
========================================================
eth1 network Ethernet interface
eth0 network Ethernet interface
root@mk:~# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:02.0 VGA compatible controller: Device 1234:1111
00:03.0 SCSI storage controller: XenSource, Inc. Xen Platform Device (rev 02)

...Leider nix. Woher soll ich wissen wo welche Nic virtuell draufhängt ?
--> Hab hier keine Anhaltspunkte.

:)

*ich brauch das für DPDK und da steh ich momentan wohl grad auf der Leitung?
 

blurrrr

Well-known member
Ich vermute, das was Dir fehlt sind bei Xen die "PIF"s. Beim Node, Tab "Network", da sind die Interfaces gelistet und dort steht auch, welcher NIC sie zugeordnet sind.
"lspci |grep Ethernet" bringt bei mir übrigens folgende Ausgabe:
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (Lewisville) (rev 05)
02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

Die Info merkst Du Dir und dann schaust Du einfach mal via:
ls -l /sys/class/net/

Das sieht hier dann z.B. so aus:
lrwxrwxrwx 1 root root 0 Feb 1 23:51 eth0 -> ../../devices/pci0000:00/0000:00:19.0/net/eth0
lrwxrwxrwx 1 root root 0 Feb 1 23:51 eth1 -> ../../devices/pci0000:00/0000:00:1c.4/0000:02:00.0/net/eth1
lrwxrwxrwx 1 root root 0 Feb 1 23:51 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Feb 1 23:51 ovs-system -> ../../devices/virtual/net/ovs-system
lrwxrwxrwx 1 root root 0 Feb 1 23:51 xenbr0 -> ../../devices/virtual/net/xenbr0
lrwxrwxrwx 1 root root 0 Feb 1 23:51 xenbr1 -> ../../devices/virtual/net/xenbr1

Zu dem Thema:
Woher soll ich wissen wo welche Nic virtuell draufhängt ?
--> Hab hier keine Anhaltspunkte.

Naja, eigentlich schon, denn Du hast Netze bzw. virtuelle Switche definiert, an welche die virtuellen NICs gehängt werden. Schau bei XenOrchestra einfach mal auf den gewünschten Host bzw. dort den Reiter "Network". Dort findest Du die PIFs, vllt hilft das auch noch ein wenig weiter... :)

EDIT: Vielleicht hilft das hier bei Deinem Vorhaben ja auch noch weiter: https://wiki.xenproject.org/wiki/Xen_PCI_Passthrough
EDIT2: Oder noch besser, dieser hier: https://xcp-ng.org/docs/compute.html#pci-passthrough ☺️
 

xposity

New member
Danke für den Tipp! :)

Allerdings seh ich hier nur die VIF (was wohl heisst Virtuelles Interface..)

Meine Umgebung sieht so aus:

---> XenOrchestra ist eigene VM die als Docker in Virtualbox auf einem Desktop Rechner läuft.
Sollte nicht das Problem sein oder?
.. greift hier dann im LAN auf einen Pool mit physikalischen XPC-NG Servern zu.

---> Der eigentliche XPC XenServer ist ein 2 HE Xeon der die VMs beherbergt.
Der soll ja die Nics auf die dortigen VMs durchreichen und in der VM verfügbar stellen ?

*oder hab ich nen Denkfehler?



hello.png
 

xposity

New member
root@toolbox:~ $ lshw -c network -businfo
Bus info Device Class Description
====================================================
eth1 network Ethernet interface
eth0 network Ethernet interface
root@toolbox:~ $

..leider noch keine besserung.
ich glaub ich suche weiterhin falsch ;-)



Edit: XenOrchestra mal lokal nativ auf Desktop installiert.
Leider auch nicht anders, dachte ich mir schon.
Ist ja eigentlich nur ein Frontend. *grummel ;-)
 
Zuletzt bearbeitet:

xposity

New member
Direkt auf dem XPC NG Server:


Hmmm.. wenn ich mit dmesg schaue... :)

17.029269] ipmi_si IPI0001:00: IPMI kcs interface initialized
[ 21.275023] i40e 0000:19:00.0 eth0: renamed from side-2682-eth0
[ 21.326269] i40e 0000:19:00.1 eth1: renamed from side-6437-eth1
[ 21.362527] ixgbe 0000:65:00.0 eth2: renamed from side-8943-eth6
[ 21.414504] ixgbe 0000:65:00.1 eth3: renamed from side-5092-eth7
[ 21.446311] e1000e 0000:b5:00.0 eth4: renamed from side-3887-eth2
[ 21.498306] e1000e 0000:b5:00.1 eth5: renamed from side-3694-eth3
[ 21.550383] e1000e 0000:b6:00.0 eth6: renamed from side-6852-eth4
[ 21.602630] e1000e 0000:b6:00.1 eth7: renamed from side-149-eth5
[ 21.665625] 8021q: 802.1Q VLAN Support v1.8
[ 21.943462] openvswitch: Open vSwitch switching datapath
[ 22.382594] device ovs-system entered promiscuous mode
[ 22.439341] device xenbr2 entered promiscuous mode
[ 22.530297] ixgbe 0000:65:00.0: registered PHC device on eth2
[ 22.635845] 8021q: adding VLAN 0 to HW filter on device eth2
[ 22.648136] device eth2 entered promiscuous mode
[ 22.702112] device xenbr3 entered promiscuous mode
[ 22.794347] ixgbe 0000:65:00.1: registered PHC device on eth3
[ 22.899946] 8021q: adding VLAN 0 to HW filter on device eth3
[ 22.912468] device eth3 entered promiscuous mode
....
[ 4769.121606] vif vif-1-1 vif1.1: Guest Rx ready
[ 4830.063458] vif vif-1-1 vif1.1: Guest Rx stalled
[ 4840.072420] vif vif-1-1 vif1.1: Guest Rx ready
[ 4900.098581] vif vif-1-1 vif1.1: Guest Rx stalled
[ 4909.067063] vif vif-1-1 vif1.1: Guest Rx ready
[ 4971.277381] vif vif-1-1 vif1.1: Guest Rx stalled



sieht der Kernel zwar die Nic s.o. und
benennt die dann wohl um...


lshw -c network -businfo

Bus info Device Class Description
========================================================
pci@0000:19:00.0 eth0 network Ethernet Connection X722 for 10GBASE-T
pci@0000:19:00.1 eth1 network Ethernet Connection X722 for 10GBASE-T
pci@0000:65:00.0 eth2 network 82599ES 10-Gigabit SFI/SFP+ Network Connection
pci@0000:65:00.1 eth3 network 82599ES 10-Gigabit SFI/SFP+ Network Connection
pci@0000:b5:00.0 eth4 network 82571EB/82571GB Gigabit Ethernet Controller (Copper)
pci@0000:b5:00.1 eth5 network 82571EB/82571GB Gigabit Ethernet Controller (Copper)
pci@0000:b6:00.0 eth6 network 82571EB/82571GB Gigabit Ethernet Controller (Copper)
pci@0000:b6:00.1 eth7 network 82571EB/82571GB Gigabit Ethernet Controller (Copper)
xenbr6 network Ethernet interface
xenbr4 network Ethernet interface
ovs-system network Ethernet interface
xapi0 network Ethernet interface
vif1.1 network Ethernet interface
xenbr2 network Ethernet interface
xenbr0 network Ethernet interface
xenbr7 network Ethernet interface
xenbr5 network Ethernet interface
xenbr3 network Ethernet interface
vif1.0 network Ethernet interface
xenbr1 network Ethernet interface


habe ich obige Ausgabe...




...aber leider in keiner VM.
 
Zuletzt bearbeitet:

blurrrr

Well-known member
Also nach all dem, was ich bisher gepostet habe (in der "Vermutung", dass Du eine physikalische NIC an eine VM durchreichen willst), hat Dir "nichts" davon geholfen? Auch nicht die beiden letzten Links? Schwer vorstellbar... aber jut... An dieser Stelle noch der Vermerk, dass die Bridges (xenbrX) auf die NICs gesetzt werden. Jenen hier noch als letzte Anlaufstelle für das NIC-Management: https://xcp-ng.org/docs/networking.html#manage-physical-nics

Und unter'm Strich, versteh ich Dein Problem irgendwie in keinster Weise... ich hab keinen schimmer, was Dir da wo genau fehlen soll... Bus-Info haste, Device-Namen auch (die beim durchreichen an eine VM aber mal so gar keine Rolle spielen eigentlich)... keine Ahnung. Als letzte Instanz kannst Du auf einer gesonderten NIC noch immer ein neues Netz erstellen (Bridge) und da als einzigstes Deine gewünschte VM dran hängen. Ist dann zwar nicht durchgereicht, aber nach wie vor exklusiv für die VM 🙃
 

xposity

New member
Danke für Deine Hilfe :) Blurrrr!

BusInfo habe ich ja.. richtig
aber nur wenn ich DIREKT auf dem XPC-NG via SSH drauf bin... und mit lshw nachsehe

wenn auf diesem eine VM gestartet wird...und mich dort einbuche.. leere Ausgabe.
--> Muss aber in der VM die BusInfo sehen
da sich die Appilkation; die hier zum Einsatz kommt an der BUSInfo orientiert und nicht am Dev Namen (eth0/1 usw)...

Nicht einfach.
 

xposity

New member
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (Lewisville) (rev 05)
02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

haste die Ausgabe so direkt in einer VM oder auf dem XPC Host ?
:)


Vielleicht beschreibt das besser das Problem:


XPC-NG (auf der Shell)
# ethtool -i eth0
driver: i40e
version: 2.9.21
firmware-version: 3.31 0x80000c92 1.1747.0
expansion-rom-version:
bus-info: 0000:19:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes


VM (in der Shell)
ethtool -i eth0
driver: vif
version:
firmware-version:
expansion-rom-version:
bus-info: vif-0 <-------- sonst nix
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

:)
 

blurrrr

Well-known member
Muss aber in der VM die BusInfo sehen.
Danke, das war irgendwie die Info die mir fehlte... Hatte es so verstanden, als würdest Du die NIC nicht in die VM bekommen 😁

Hast Du denn jetzt die physkalische NIC "komplett" durchgereicht?

EDIT: Anscheinend ja nicht, denn die VIF ist nach wie vor ein virtuelles Interface...
 
Zuletzt bearbeitet:

xposity

New member
Du bist wohl auch so einer der nie schläft ;-)

Nein. Ich bin noch auf der Suche wo ich das; wie konfiguriert irgendwo hinbekomme.

Wie Du das geschafft hast
das bei Dir die Bus Adressen komplett in die VM durchgereicht bekommst

...ist mir (momentan) noch schleierhaft..

*kopfkratz
 

blurrrr

Well-known member
Nein, das war vom Hypervisor selbst. Da dachte ich noch, dass Du die Businfo brauchst, um die NIC in die VM durchzureichen.

Ich werf nochmal kurz mit 2 Links um mich:

1) https://www.citrix.com/blogs/2016/11/03/pci-pass-through-on-xenserver-7-0/
2) https://support.citrix.com/article/CTX126624

Sieh also erstmal zu, dass Du die NIC durchgereicht bekommst und schau dann nochmal... (kann es Dir aber grade auch nicht genau sagen).

Und so generell... So sehr ich die Virtualisierung auch mag... bei manchen Dingen lohnt es einfach nicht, sich da eine "irgendeine" Lösung aus der Mütze zu zaubern (Aufwand und/oder nachfolgende Probleme). Je nachdem, um was es konkret geht (hab ich vermutlich eh keine Ahnung von), tut es ggf. auch einfach ein kleiner Mini-Rechner für ein paar Euros und Ruhe ist.

Und weil ich es Dir irgendwo noch schuldig bin - hier die Ansicht aus einer VM (ohne durchgeschleifte NIC)...:
lspci

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 SCSI storage controller: XenSource, Inc. Xen Platform Device (rev 01)
+
lshw -c network

*-network
description: Ethernet interface
physical id: 1
logical name: eth0
serial: x:x:x:x:x:x
capabilities: ethernet physical
configuration: broadcast=yes driver=vif ip=X.X.X.X link=yes multicast=yes
+
lshw -c network -businfo

Bus info Device Class Description
====================================================
eth0 network Ethernet interface

Wie Du siehst, auch hier "nur" ein VIF... :)

EDIT: Ach, bzgl. dem 2. Link... ggf. musst da im BIOS/UEFI noch entsprechend was zu anpassen/aktivieren.
 

xposity

New member
Bin weiter ;-)

Hier der Lösungsweg der zum Erfolg führte:


Zuerst:
SR-IOV/iommu einschalten :

/opt/xensource/libexec/xen-cmdline --set-xen iommu=1

... Rebooten...
...nach dem Reboot auf XPC-NG schauen welche Devs nativ verbaut & verfügbar sind:

lshw -c network -businfo

1643885089569.png



möchte jetzt b6:00.1 (ETH7) nativ via PCIE pass-through an eine VM durchreichen...

Also...
Erst mal schauen welche Ziel VM hier am das Device verwenden wird...

xe vm-list

1643885194444.png



....und der VM jetzt die PCIe BUS Adresse zuweisen:

1643885234012.png


Jetzt die eigentliche VM starten und freuen ;-)

1643885268108.png



...wie man sieht wird
ab sofort das Dev komplett durchgereicht.


Um das Device wieder zu entfernen ist folgender Aufruf nötig:

1643928526566.png

...halt die richtige UUID von der VM eintragen... dann wird das Pass-through Device wieder gelöscht.


Danke für die Tips!
:)
 
Zuletzt bearbeitet:

xposity

New member
Danke... :)

weisste grad zufällig wie hier die korrekte Syntax lautet um das wieder rückgängig zu machen ?
vm-param-remove ist klar... allerdings werden die flags anders gesetzt. Such grad....
 

blurrrr

Well-known member
Sorry, keine Ahnung, ich bin eigentlich eher in der KVM-Welt unterwegs, Xen hatte ich nur zum testen kurzerhand mal 2 Server hingestellt (habe mich da aber nicht wirklich mit den Dingern beschäftigt, die durften einfach nur dumme Hypervisor für eine andere Management-Umgebung spielen). Was übrigens auch der Grund war, weswegen ich Dich so mit Links zugeschmissen habe 😁
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
969
Beiträge
14.049
Mitglieder
500
Neuestes Mitglied
McKay1408
Oben