February 26, 20251 yr Hello Unraid Community, This is my first post to the community, so apologies ahead of time if this seems disorganized or amateur-ish. I have an Unraid server that has a motherboard with two NICs. One 10GB NIC and one 2.5GB NIC. I only have an ethernet cable plugged into my 10GB NIC, so the 2.5GB NIC is not in use. My end goal with the information provided here is to passthrough one of these NICs (the 2.5 GB to start) to a soon to be gaming VM, so I can separate traffic from my container and media services from my gaming VM's traffic. I noticed while doing some research for this endeavor I am about to take on, that my two NICs are bonded, so passthrough is currently not attainable. After further research I see that this is a default setting with Unraid. So here come the questions.. 1) Being that this is a default setting in Unraid... Will unbonding the NICs (the 10GB and 2.5GB NIC) effect any throughput I am currently receiving and providing? My thought is no, being that the 10GB NIC is the only NIC physically in use, so therefore there should be no change unless I decide to utilize the 2.5GB NIC for the container services I am currently inquiring about. 2) Am I able to passthrough a NIC on my motherboard that is unbonded, therefore not in use by Unraid, to a VM of my choosing, or will I need a NIC controller using a PCIe slot? 3) If this is all possible, can someone provide some instructions on how to do so? I am seeing online to do this: Plug Monitor, Keyboard into server and access GUI after a reboot instead of accessing over network Stop Docker and VM service (which also stops any running VM's / containers) Stop Array Remove 2.5GB NIC from bond (which should keep my management IP the same on the already in use 10GB NIC, therefore not losing connectivity for other services after applying these settings) Add an IP config to the 2.5GB NIC, after plugging in an ethernet cable to an active port of course Save settings Reboot and boom? Passthrough should now be achievable? Or am I missing a few steps? Please advise with any information at all, I am a sponge. I think I saw a few things about swapping MAC addresses to reflect the change? I don't know if this reflects my situation or not. Thank you for reading, and thank you for any help you can provide.
February 27, 20251 yr Community Expert there are 2 ways to go about this. 1 VFIO device pass. 2. XML edit. Ill share what i can here soon. I have some things on this a bit scattered on the forum with other posts. as it sounds like your trying to do a "forbidden" router. Depending on your devices and what nic you want where, How unraid networking configured for you and how you want to interact with it. as we may want to turn off bonding, and turn off bridging and use the unraid terminal to make our own bond/bridge interfaces for networking control... Unraid is not a networking device and shouldn't be used as one. That said alot of things require special network setups. vpns, vlans... Someone elses is welcome to jump in in the mean time. as i have other priorities atm before i can further asiist, just letting you know that I will grab things and i will get back to you on this... in the mean time review: Edited February 27, 20251 yr by bmartino1 typo - Data
February 27, 20251 yr Community Expert 3 hours ago, propaganda_710 said: Hello Unraid Community, This is my first post to the community, so apologies ahead of time if this seems disorganized or amateur-ish. I have an Unraid server that has a motherboard with two NICs. One 10GB NIC and one 2.5GB NIC. I only have an ethernet cable plugged into my 10GB NIC, so the 2.5GB NIC is not in use. My end goal with the information provided here is to passthrough one of these NICs (the 2.5 GB to start) to a soon to be gaming VM, so I can separate traffic from my container and media services from my gaming VM's traffic. I noticed while doing some research for this endeavor I am about to take on, that my two NICs are bonded, so passthrough is currently not attainable. After further research I see that this is a default setting with Unraid. So here come the questions.. 1) Being that this is a default setting in Unraid... Will unbonding the NICs (the 10GB and 2.5GB NIC) effect any throughput I am currently receiving and providing? My thought is no, being that the 10GB NIC is the only NIC physically in use, so therefore there should be no change unless I decide to utilize the 2.5GB NIC for the container services I am currently inquiring about. 2) Am I able to passthrough a NIC on my motherboard that is unbonded, therefore not in use by Unraid, to a VM of my choosing, or will I need a NIC controller using a PCIe slot? 3) If this is all possible, can someone provide some instructions on how to do so? I am seeing online to do this: Plug Monitor, Keyboard into server and access GUI after a reboot instead of accessing over network Stop Docker and VM service (which also stops any running VM's / containers) Stop Array Remove 2.5GB NIC from bond (which should keep my management IP the same on the already in use 10GB NIC, therefore not losing connectivity for other services after applying these settings) Add an IP config to the 2.5GB NIC, after plugging in an ethernet cable to an active port of course Save settings Reboot and boom? Passthrough should now be achievable? Or am I missing a few steps? Please advise with any information at all, I am a sponge. I think I saw a few things about swapping MAC addresses to reflect the change? I don't know if this reflects my situation or not. Thank you for reading, and thank you for any help you can provide. OK, Lets review: 1) Unbonding NICs: Unbonding the NICs should not affect the throughput of your 10GB NIC since it's the only one in use. The bond typically provides redundancy or load balancing across NICs, but if only one NIC is active (your 10GB NIC), unbonding shouldn't impact your performance. 2) Passthrough Setup: You can passthrough an unbonded NIC to a VM, provided it's not being used by the host (Unraid in your case). Here's how you can do it: Unbond NICs: Go to Network Settings in the Unraid GUI. Under NIC Settings, unbond the two NICs by separating them. Apply and reboot. VFIO (Passthrough): You will need to bind the 2.5GB NIC to VFIO to make it available for passthrough. You can use the vfio-pci driver for binding. Add the NIC's PCI device ID to the VFIO configuration. (Unriad Web UI is better based on ther bind using simalr ways to grab a defice and mark the kerneal driver is in use..) *Binding the device to vfio will complete remove any nic interaction with the unraid host. the vm should have full contorl on the nic at that point. 3) Bridge Adapter Setup: You will need to adjust the network settings in your VM. Here’s how to assign the 2.5GB NIC to your VM: In VM Manager, edit the VM settings. Set the Network Bridge to the NIC you want to passthrough (your unbonded 2.5GB NIC). If you are using a virtio network adapter, ensure the VM's configuration reflects this. 4) Editing the XML for the VM: You may need to edit the VM's XML configuration to specify the passthrough device. Look for the section related to the network interface and modify it to use the unbonded NIC. For example, the XML might look like this: <interface type='pci'> <mac address='52:54:00:dc:78:ab'/> <source dev='eth1'/> <model type='virtio'/> </interface> Make sure the <source dev='eth1'/> refers to the correct NIC (in your case, the 2.5GB NIC). *If you reviewed the other post, you can make additional bridges and specific a bridge interface... --There are other xml examples of this. The above xml code is if you DO NOT bind the nic via VFIO! 5) MAC Address: You typically need to swap the MAC address for the NIC in your VM configuration, especially if it's conflicting with the existing network adapter. I will glady help where I can when I can.
February 27, 20251 yr Community Expert in truth, there is no need to isolate or vfio bind the 2.5 nic. In your use case, its just a matter of editing the Unriad VM xml nic interface to use the 2.5 GB interface for its networking. So I would have you make a gaming VM first and double check some unraid VM settings. *WIth unraid v7 you may not see vhost0 the internal codes and clearing of configs have made it be br0 you don't want to use virbr0 as this will use a hyperv dhcp server and not grant lan access through the interface: --Unless your passing a Graphics card to the VM. I would not recommend enabling the bottom options for PCIe ACS override nor VFIO allow unsafe interrupts. with the vm up and running, you will need to edit the vm and use the advance toggle at the top right to go to xml view. Here you willl need to scroll down to the interface type and replace it with the example below. <interface type='direct' trustGuestRxFilters='yes'> <mac address='52:54:00:89:1f:91'/> <source dev='vhost0' mode='bridge'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> Note the source dev. vhost0 change vhost0 to your 2.5 nic interface. this will tell unraids hyper V virtual network to use that interface for the VM connection.
February 28, 20251 yr Author @bmartino1 This is all great information and I will for sure need sometime to unpack it. Thank you for providing insight on how I can accomplish this task. Whenever I have all my parts come in for my gaming VM (the next few weeks), I will attempt the XML configuration route first, without touching any bond settings. If that doesn't work, I will attempt the steps you have laid out for me regarding separating the NICs in the bond settings. Going off your latest comment: I am currently using Unraid 6.12.13 (haven't moved to Unraid7 just yet). I am noting to NOT select virbr0 for Network Bridge settings.. select br0. The reconfiguring of the XML file will point to the 2.5 GB NIC for this gaming VM.. so unbonding the NICs to allow the 2.5 GB NIC for passthrough wouldn't be necessary.. is this correct? if this is not correct, please correct me if this is correct, when you mention to change the source dev. from vhost0 to my 2.5GB NIC interface in the XML file, what exactly am I putting in as a replacement (the MAC address, interface id)? Making this change, will it effect already in place network settings for already existing containers? Or being that this NIC is not currently in use, I should see no change in network performance for other containers/services? Regarding the passed through GPU. I am going to passthrough an Asus TUF 3080 to this soon to be gaming VM. Going off of that information, what settings do you recommend changing to reflect the best performance from this GPU to the gaming VM? I really appreciate all the help I can get here, so again... thank you. Edited February 28, 20251 yr by propaganda_710
March 1, 20251 yr Community Expert FOr gpu passthorugh Review: I would recommend the following vm settings: and binding/pass all parts for the G-Card... Tools > System Devices > IOMMU Group: Asus TUF 3080 check all of the 3080 and its parts! Video, audio, mby additional parts... Bind button: reboot, and check log to confirm it bound If adding moving or removing pcie cards / nvme. the iommu group and pcie irq may differ changing the iommu group that is bound... so you may need to stop vm auto start, unbind when making changes to the hardware... The 3080 would strictly belong to the VM. Unraid will not be able to use it for dockers. if you want the g card for more than just a single VM. Look into dockers like steamOS docker and steam headless. where the unraid docker loads the stem game and you remotely stream / play it via ?steam link/PC/NvidiaShield/etc... 7 has some nicer VM features. It is recommend to sty with the latest current release of Unriad. these things should work on v6 ... I wanted to split my 2080 into mutiple G cards. so i went VGPU and host Proxmox. Unraid doent' have support and is werid on VGPU. In your case, I would advise against a proxmox system. (more configuration need along the way)... Proxmox is a better VM hyperV. It is possible to run unraid as a VM and pass your disk to use unraid as a nas and docker only... Just thorwing that out there... Unriad doesn't need the ich777 plugin if you vfio bind to pass the full gcard into a VM. as this will require some xml edits. as chagnes may revert your changes. SO use the WebUI Graphical as much as possible to setup and make the VM you want. then go to xml and do code change moving forwarded... copy paste compare etc...
March 1, 20251 yr Community Expert Ignore the mac adress stuff for the time being, that pre generated with the the VMs XML... You are correct on change to the vm settings for defualt network source off vmbir and to br0 / vhost... with mutiple interfaces... you have to watch iproutes... Web UI > Settings > Network found at the bottom... note br0 is unraids default bridging on grabbing eth0 by default. (my setup has 1 nic, in theory i don't need bridging on, but as this is my testing machine and the default unraid data is posted via default info...) I'm not sure why you have bonding on. Depending on how your bond is setup. as bond is more for redundancy. I don't believe you need to reconfigure or remove the bond. It is recommend too to guarantee unriad networking ip routes and cross talk traffic. If both the 1GB and 2.5GB are plugged into the same switch and are getting a ip of 192.168.1.x then they are on the same subnet and a iprouter will most likely be on the 1 GB network due to the gateway being defined on that gateway. so in this case the iprouter for br0 is for 192.168.2.0/24 so subnet data for cross traffic will go to interface br0 when you have multiple interfaces, the interface may be listed but no gateway is defined. traffic will traverse the one with a defined gateway.... Going back to my br0 and having eth0 connected. I can still call and define thing to eth0, but anythign traversing it will need to know the info on the otherside to crosstalk. the VM will need static assign data, or the router DHCP may or may not be able to cross unraid networig if misconfigured. ########################### regarding the xml example I want eth0: <interface type='direct' trustGuestRxFilters='yes'> <mac address='52:54:00:89:1f:91'/> <source dev='eth0' mode='bridge'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> i want bond0: <interface type='direct' trustGuestRxFilters='yes'> <mac address='52:54:00:89:1f:91'/> <source dev='bond0' mode='bridge'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> the mac should pre generate for you, in theory you should already see a source dev that just needs chagned in your XML. when editing the xml we only care about the unraid host interface name. the other data is for teh libvrt software to emualte in the VM and how it talks to the host hardware. so the qemu/kvm VM via xml will read a direct hardware using libvirt guest filters. tellin ghte VM the 52:54 mac address is the VM interface to use... using the host source interface br0 tellin the VM to emulate the nic via pci irq memory map pluged into bus 1 Review: https://docs.unraid.net/unraid-os/manual/vm/vm-support/ https://docs.unraid.net/unraid-os/manual/vm/vm-management/ unraid uses domain xml formated libvirt for qemu/kvm vm: https://libvirt.org/formatdomain.html more info on xml formated networks: https://libvirt.org/formatdomain.html#network-interfaces I will be MIA tomorrow and the week of march 9-15th.
March 1, 20251 yr Community Expert While sporadic on the forum I have gone over some other networking stuff in the unifi support: this one may be worth a read and review: I will gladly help where I can.
April 9, 20251 yr Author @bmartino1 I finally have all of the pieces to tackle my gaming VM project. This is what I have done so far: I went ahead and created a VM by first only passing through my NVME to use as the Windows 11 VM's primary disk for the OS. This is a 4TB drive so I plan on also using this for my primary game storage. Install went great, drive is recognizable in Windows / Steam / etc. Simply bound the NVME to vfio in Tools>System Devices. Rebooted the computer. Built the VM by setting the primary vdisk location to 'None' and selecting the NVME drive at the bottom under, 'Other PCI Devices.' After that I went ahead and booted into Windows via VNC, setup remote desktop. Shutdown. Proceeded to then bind to vfio my Asus TUF 3080 via Tools>System devices. Rebooted the computer. Edited the vm (GUI method) by switching Graphics Card to my 3080, added the VBIOS ROM file I extracted earlier via GPUZ on another Windows machine, and then added the correlated GPU sound card. Booted the VM, downloaded the drivers and BOOM. Success. So now that I have my GPU and NVME handled. It is time to handle passing through my 2.5 GB NIC to the VM to separate traffic from Unraid containers and Gaming VM. I am going to post my network settings below, as I still need some clarification. Going off the information above. I have now added an ethernet cable in my 2.5 GB NIC. So full picture, I have a 10GB NIC (eth0) and 2.5 GB NIC (eth1) currently hooked up to the same unmanaged switch. My question is: If I break the bond by changing 'bonding mode' to disabled.. will the 2.5 GB NIC be put on the same subnet as my 10GB NIC? Or different subnets? My concern is that if my 2.5 GB NIC is put on a different subnet, it won't be able to communicate with my gateway which is under the 192.168.1.x subnet. My end goal is to get my VM on the same subnet as everything else on my network (as I don't want to battle VLANs, especially since I am currently using an unmanaged switch which doesn't support VLAN configurations). Will the change to the bonding mode, put my 2.5 GB NIC (eth1) on a different subnet than my current 10GB NIC (eth0)? I am afraid to make changes to this without asking as I am reading online that people were unable to access the WebGUI after making these changes. My next question is would passing this through to my VM be as easy as binding the NIC (which is in a separate IOMMU group than my 10GB NIC) to vfio... and then editing the GUI form of the VM configuration to choose eth1 (2.5GB NIC) instead of br0? You had mentioned to use br0 instead of vmbri. But I guess I am not following on how eth1 (2.5 GB NIC) is tied to br0. Or I guess whatever br0 even is... Overall two questions: If I break the bond by changing 'bonding mode' to disabled.. will the 2.5 GB NIC be put on the same subnet as my 10GB NIC? Or different subnets? Would passing this through to my VM be as easy as binding the NIC (which is in a separate IOMMU group than my 10GB NIC) to vfio... and then editing the GUI form of the VM configuration to choose eth1 (2.5GB NIC) instead of br0?
April 9, 20251 yr Community Expert awesome, congrats so far that amazing progress. @SimonF may be of better assistance here. I'm not aware if stable v7 has made ui changes and tested them... Since the early v7 beta and testing I jumped off unraids hyperv for vm and use proxmox. I have done what you are doing in testing under unriad v6 Unraidv7 has some nice improvements but not sure if a unriad gui option exisit for the network stuff here... So I can only go off of what I have done in the From my testing in unraid when i want to call a port I have to leave the gui mode and use the XML. some data I have explaind in mutiple post thorugh out the forum example Some settings are dictated by other settings... -You don't want to use virbr0 as that will connect it to a hyperv virtual interanl swtich with a different dchp -it may say vhost or bond... The other option will grant vms access and use your lan subnet to grab a ip as if a was pluged into your unmanged switch... In the VM note your xml code... a Default example: <interface type='bridge'> <mac address='ac:87:a3:5b:17:2f'/> <source bridge='br0'/> <model type='virtio-net'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> A passthrough unraid interface xml code example: <interface type='direct' trustGuestRxFilters='yes'> <mac address='52:54:00:89:1f:91'/> <source dev='vhost0' mode='bridge'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> Note the differences in the code... Specfical the interface type, source dev, and model type.... To tell the VM to use xys interface we need to change the interface type to direct. We need to set the source dev (this would be your eth1 the 2.5 interface) or a bridge/bond0 depending on how your unriad networking is currently configured... and sets the model type to xyz which dedicates how the vm interfaces will interact other setting to emulate being read as a different nic typ... more info on that here: https://libvirt.org/formatnetwork.html so to answer your question. Quote Going off the information above. I have now added an ethernet cable in my 2.5 GB NIC. So full picture, I have a 10GB NIC (eth0) and 2.5 GB NIC (eth1) currently hooked up to the same unmanaged switch. My question is: If I break the bond by changing 'bonding mode' to disabled.. will the 2.5 GB NIC be put on the same subnet as my 10GB NIC? Or different subnets? My concern is that if my 2.5 GB NIC is put on a different subnet, it won't be able to communicate with my gateway which is under the 192.168.1.x subnet. My end goal is to get my VM on the same subnet as everything else on my network (as I don't want to battle VLANs, especially since I am currently using an unmanaged switch which doesn't support VLAN configurations). Will the change to the bonding mode, put my 2.5 GB NIC (eth1) on a different subnet than my current 10GB NIC (eth0)? I am afraid to make changes to this without asking as I am reading online that people were unable to access the WebGUI after making these changes. My next question is would passing this through to my VM be as easy as binding the NIC (which is in a separate IOMMU group than my 10GB NIC) to vfio... and then editing the GUI form of the VM configuration to choose eth1 (2.5GB NIC) instead of br0? You had mentioned to use br0 instead of vmbri. But I guess I am not following on how eth1 (2.5 GB NIC) is tied to br0. Or I guess whatever br0 even is... Overall two questions: If I break the bond by changing 'bonding mode' to disabled.. will the 2.5 GB NIC be put on the same subnet as my 10GB NIC? Or different subnets? Would passing this through to my VM be as easy as binding the NIC (which is in a separate IOMMU group than my 10GB NIC) to vfio... and then editing the GUI form of the VM configuration to choose eth1 (2.5GB NIC) instead of br0? I would need the xml file for your VM to point and show to assist... I don't see the need to break your bond0 but I also don't see the need to have them bonded to begin with. (Its something I wouldn't do personally) --Usualy bonds are with same interface types a 10gb network with a 10GB network in a active backup connection... --With unraid and my testing its issues with ip routes when multiple interfaces share a nic access to a switch... -- I usualy have to make a custom br1 tied to the interface and tell dockers networks / vm via xml to use that interface... As mentinoend and stated. I would remove the bond0 and make a custom network bridge... I would use the user script plugin to run at frist array start to make the interface. #!/bin/bash # Script to create br1 bridge, attach eth1, and assign static IP to br1 BRIDGE="br1" IFACE="eth1" IPADDR="192.168.1.254/24" GATEWAY="192.168.1.1" echo "[+] Creating bridge: $BRIDGE" ip link add name $BRIDGE type bridge echo "[+] Bringing down $IFACE" ip link set $IFACE down echo "[+] Attaching $IFACE to $BRIDGE" ip link set $IFACE master $BRIDGE echo "[+] Bringing up $IFACE and $BRIDGE" ip link set $IFACE up ip link set $BRIDGE up echo "[+] Assigning static IP $IPADDR to $BRIDGE" ip addr add $IPADDR dev $BRIDGE echo "[+] Setting default gateway to $GATEWAY" ip route add default via $GATEWAY dev $BRIDGE echo "[✔] Bridge $BRIDGE configured successfully!" This way we can use source dev br1.10 to target the vlan and target the interface eth1 in the xml choosing the dev you can set a vlan... so to chose vlan 10 example <source dev='eth1.10' mode='bridge'/> @SimonF would be better explaining the best practice here on targeting a interface on unraid host. as a vm web ui option may exist for this without needing to edit the xml directly. Also please watch and make backups of your xml file (copy paste in notpad) as changes made vai webui and via xml don't always carry over and you can break your graphics card configurations noted in the advance gpu passthorugh vide via space invader... @SimonF Thoughts?
April 9, 20251 yr Author Here is my XML, I hope this helps (I have bolded and underlined the network part of the XML): <?xml version='1.0' encoding='UTF-8'?> <domain type='kvm' id='1'> <name>VM-Win11-Gaming</name> <uuid>bd4fa862-79f7-25c9-88b0-07838f087536</uuid> <description>Windows 11 Gaming Virtual Machine</description> <metadata> <vmtemplate xmlns="unraid" name="Windows 11" icon="windows11.png" os="windowstpm"/> </metadata> <memory unit='KiB'>25165824</memory> <currentMemory unit='KiB'>25165824</currentMemory> <memoryBacking> <nosharepages/> </memoryBacking> <vcpu placement='static'>12</vcpu> <cputune> <vcpupin vcpu='0' cpuset='4'/> <vcpupin vcpu='1' cpuset='5'/> <vcpupin vcpu='2' cpuset='6'/> <vcpupin vcpu='3' cpuset='7'/> <vcpupin vcpu='4' cpuset='8'/> <vcpupin vcpu='5' cpuset='9'/> <vcpupin vcpu='6' cpuset='10'/> <vcpupin vcpu='7' cpuset='11'/> <vcpupin vcpu='8' cpuset='12'/> <vcpupin vcpu='9' cpuset='13'/> <vcpupin vcpu='10' cpuset='14'/> <vcpupin vcpu='11' cpuset='15'/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-q35-7.2'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi-tpm.fd</loader> <nvram>/etc/libvirt/qemu/nvram/bd4fa862-79f7-25c9-88b0-07838f087536_VARS-pure-efi-tpm.fd</nvram> <smbios mode='host'/> </os> <features> <acpi/> <apic/> <hyperv mode='custom'> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> <vendor_id state='on' value='none'/> </hyperv> </features> <cpu mode='host-passthrough' check='none' migratable='on'> <topology sockets='1' dies='1' cores='6' threads='2'/> <cache mode='passthrough'/> </cpu> <clock offset='localtime'> <timer name='hypervclock' present='yes'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/local/sbin/qemu</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/cache_vms/isos/virtio-win-0.1.266-1.iso' index='1'/> <backingStore/> <target dev='hdb' bus='sata'/> <readonly/> <alias name='sata0-0-1'/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> <controller type='usb' index='0' model='qemu-xhci' ports='15'> <alias name='usb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </controller> <controller type='pci' index='0' model='pcie-root'> <alias name='pcie.0'/> </controller> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='1' port='0x8'/> <alias name='pci.1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/> </controller> <controller type='pci' index='2' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='2' port='0x9'/> <alias name='pci.2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0xa'/> <alias name='pci.3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0xb'/> <alias name='pci.4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0xc'/> <alias name='pci.5'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> <controller type='sata' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <interface type='bridge'> <mac address='52:54:00:dd:eb:2d'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio-net'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-VM-Win11-Gaming/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='tablet' bus='usb'> <alias name='input0'/> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'> <alias name='input1'/> </input> <input type='keyboard' bus='ps2'> <alias name='input2'/> </input> <tpm model='tpm-tis'> <backend type='emulator' version='2.0' persistent_state='yes'/> <alias name='tpm0'/> </tpm> <audio id='1' type='none'/> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <rom file='/mnt/cache_vms/isos/GA102_1.rom'/> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x73' slot='0x00' function='0x0'/> </source> <boot order='1'/> <alias name='hostdev2'/> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </hostdev> <memballoon model='none'/> </devices> <seclabel type='dynamic' model='dac' relabel='yes'> <label>+0:+100</label> <imagelabel>+0:+100</imagelabel> </seclabel> </domain>
April 9, 20251 yr Community Expert 4 hours ago, propaganda_710 said: If I break the bond by changing 'bonding mode' to disabled.. will the 2.5 GB NIC be put on the same subnet as my 10GB NIC? Or different subnets? Yes you can do that and assign a different IP. But not normally advised. 4 hours ago, propaganda_710 said: Would passing this through to my VM be as easy as binding the NIC (which is in a separate IOMMU group than my 10GB NIC) to vfio... and then editing the GUI form of the VM configuration to choose eth1 (2.5GB NIC) instead of br0? If you bond to vfio it will show in other PCI which you can attach to the VM if required.
April 9, 20251 yr Author @SimonF thank you for chiming in sir. Understood on your second point. But on the first, what would be the more recommended setup for what I am trying to do? Or what is normally advised? If you need any further information from me to give you more insight, please let me know. I am really trying to go by the book here on this project. I appreciate you in advance Simon. Edited April 9, 20251 yr by propaganda_710
April 9, 20251 yr Community Expert 7 minutes ago, propaganda_710 said: @SimonF thank you for chiming in sir. Understood on your second point. But on the first, what would be the more recommended setup for what I am trying to do? Or what is normally advised? If you need any further information from me to give you more insight, please let me know. I am really trying to go by the book here on this project. I appreciate you in advance Simon. I have not tried, but you may be able to not add an IP address to 2nd NIC and create a new bridge so would be br1. You would then be able to use for VMs. But I would keep them bonded is there a reason why you dont want to bond?
April 9, 20251 yr Author @SimonF I am unable to bind the 2.5 GB NIC (eth1) to vfio without doing so to my knowledge. Both NICs are currently in use by Unraid being that they are both bonded. Which in turn wouldn't allow me to passthrough the NIC to the VM in the VM configuration. Unless I am missing something from the previous research/explanations. Apologies if this is frustrating with the back and forth, I really appreciate everyone's help here.
April 9, 20251 yr Community Expert 9 minutes ago, propaganda_710 said: @SimonF I am unable to bind the 2.5 GB NIC (eth1) to vfio without doing so to my knowledge. Both NICs are currently in use by Unraid being that they are both bonded. Which in turn wouldn't allow me to passthrough the NIC to the VM in the VM configuration. Unless I am missing something from the previous research/explanations. Apologies if this is frustrating with the back and forth, I really appreciate everyone's help here. You would need to unbond eth1 to allow it to be added to vfio.
April 9, 20251 yr Author @SimonF Right. Which is what you are saying 'isn't normally advised'. I am wondering what the normally advised method is since that isn't it. Thank you for the quick responses sir. This community is freaking awesome!
April 9, 20251 yr Community Expert 28 minutes ago, propaganda_710 said: @SimonF Right. Which is what you are saying 'isn't normally advised'. I am wondering what the normally advised method is since that isn't it. Thank you for the quick responses sir. This community is freaking awesome! Having two nics with different IPs in the same subnet.
April 9, 20251 yr Author Solution @SimonF Okay. Going off of that. My overall plan is: Disable bonding in Unraid's Network Settings. Which from what I am gathering will split both eth0 and eth1 into their own IP configuration templates. I will then configure eth1 with a different IP address but within the same subnet as eth0 (192.168.1.x). Eth0's IP configuration I am leaving the same an not reconfiguring. So essentially both NICs will have a 192.168.1.x IP address. Both being able to communicate with my default gateway in the 192.168.1.x subnet as well. After this is done and bonding of both eth0 and eth1 are now separate, and they both have valid IP configurations within the 192.168.1.x subnet. I would then go ahead and navigate to Tools>System Devices to bind eth1 to vfio. Which in turn would make it appear under the VM configuration template category 'other PCI devices.' After checking the checkbox for the newly vfio bound NIC (2.5GB interface) under 'Other PCI Devices,' in the VM configuration. Boot the VM and I am good? Am I following that correctly? Edited April 9, 20251 yr by propaganda_710
April 9, 20251 yr Community Expert Correct: Quote So essentially both NICs will have a 192.168.1.x IP address. Both being able to communicate with my default gateway in the 192.168.1.x subnet as well. kinda... So Simon is referring to using vfio to iommu separate and vfio bind to remove the 2.5 nic interface from unriad. To do this, you will need to break the bon0 removing interface eth1. Similar to what you did to passing the nvme into the VM... You will use the iommu group and pass the 2.5 nic as if it were a pcie addon card. This will remove the eth1 interface from unriad. While they both will be connected to the same unmanned switch, unriad will never see and use the eth1 interface again. Only the vm will have access to eth1. Edited April 9, 20251 yr by bmartino1 Data - Typo
April 9, 20251 yr Author @bmartino1 @SimonF Beautiful. Will be trying this when I get home from work this evening or tomorrow afternoon. I really appreciate both you guys with this endeavor. By Friday, a solution should be marked regarding the completion of my Gaming VM Project. Thank you again.
April 10, 20251 yr Author Alright. So here's the update. I went ahead and followed these steps and made these discoveries: I disabled bonding on br0, which in turn removed eth1 from br0. After this I tried a few things. First, I tried configuring the eth1 interface with a valid IP configuration within the 192.168.1.x subnet in Network Settings (in the Unraid OS). After doing so, I was unable to bind the NIC (eth1) to vfio in Tools>System Devices for my VM. I assume after I had configured the IP address, gateway, etc.. Unraid essentially owned the interface. With this I was unable to pass the NIC to the VM. So... I back tracked. I then went ahead and removed the IP configuration from eth1. Afterwards, I was able to bind the NIC in Tools>System Devices to vfio. After the interface was bound to vfio, I rebooted the server. I then proceeded to go into the VM config (gui version) after boot and checked the checkbox next to the NIC I just passed through (this checkbox is located under 'Other PCI Devices.') Booted the VM and still using the previous network interface to RDP into the server. When remoted into the server I installed the Intel Ethernet Controller drivers found on Intel's website. I now have two active ethernet adapters within my VM. I configured the Intel Ethernet Adapter I just passed through, with a valid IP configuration within the 192.168.1.x subnet. Then I proceeded to disable the previous ethernet adapter I was using prior to passing through this Intel Ethernet Controller. After the previous Network Adapter was disabled, I was booted out of RDP. I then RDP'd into the VM using the new IP config I just assigned to the newly passed through NIC. I was able to connect successfully. I ran a few speed tests and have convinced myself I have successfully passed through my 2.5GB NIC to my gaming VM. My VM now has a NVME, GPU, and NIC passed through for near bare metal performance. Although, I had one setback I wasn't expecting. After I had set all of this up, a few hours later I noticed that my Plex was no longer accessible outside my network. It was locally, but was not accessible via the internet. I went ahead and undid all of the changes I had made, and Plex was still not accessible outside my network. With an elevated heart rate, I set my VM back up with the passed through NIC to get that fully functional again.. then I focused on Plex. To make this long story shorter.... I basically had to undo all remote access configurations (within plex settings, and port forwarding within my firewall) to get Plex accessible outside the internet again. Why this happened.... no clue.. Happy it's working again though. Hopefully it stays that way. Any idea @bmartino1 @SimonF on why my Plex crapped out? And why it took me un applying the remote access settings, and basically re applying the SAME settings (literally no configuration changes but unapplied and reapplied). Two Final Questions before I Mark this as resolved: Any idea why I experienced the issue with Plex? From your perspectives, is this a valid way in settings up this passed through NIC? Thank you for your time.
April 10, 20251 yr Community Expert Most likely the docker networks changed and the templates need updated to the correct network... Quote configuring the eth1 interface with a valid IP configuration within the 192.168.1.x subnet in Network Settings (in the Unraid OS). IF you had plex on eth1 and vfio bound the nic eth1 is gone there is no set ip on eth1 it not in use by unraid... ... This is why I mentioned the br1 create method. as it would allow you to make a docker network targeting br1 and then set plex to the docker network you could created that would use br1 .... Quote I was unable to bind the NIC (eth1) to vfio in Tools>System Devices for my VM If having issues with the vm iommu groups, you may need to edit vm settings: You may want these vm option to help separate and use the iommu groups to target the nic Also If you edit device Binds, IOMMU, or VFIO or any of these VM setting YOU MUST REBOOT UNRAID! Not sure what would have happened to plex... what are your docker settings? as Preserver user defined network would keep any custom docker networks... I assume somehow your bond0 or br0 broke the initial unriad docker networks. as editing the docker settings can make large changes that can cascade latter... if you have mutiple interface. when you vfio bind and remove a device such as a nic. that nic is no longer used given an ip or seen by the host... Unraid will not be able to asigne any nic data to the interface you bind... Default unraid network settings:
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.