I had three cameras attached to a PoE switch, which was plugged into a NIC on a qubes machine. They ran through an OpnSense hvm(standalone) and out through sys-net. Performance was fine but I wanted to move to a qubes template-based vm to control the NIC.
So I created a Debian-10-minimal template, installed qubes-core-agent-networking and qubes-core-agent-network-manager(the only non stock things installed), assigned the NIC to the AppVM(in HVM mode), and configured the camera facing NIC(ens7 in this case) as "Shared to Other Computers". I gave the debian vm the same ram(4gb) and vcpus(2) as the OpenSense hvm. Performance was terrible.
On an external wifi I could typically get a stream of 4000 kbps with the OpnSense hvm routing the cameras through Qubes.
Now, I am getting at best 100kbps and the connection drops off.
To test, I attached the NIC to a Fedora 30 vm running an apache server and was able to connect to the cameras at 4000kbps. In all cases, the cameras have been routed through the same sys-net and sys-firewall vms whether they are coming from OpnSense, debian, or fedora.
I have a similar setup connecting other computers to Qubes, where their NICS are run by a copy of the debian-minimal hvm and browsing and downloading is unaffected. I can usually get about 90% of my network connection speed, through a vpn, with it set up this way.
For my own education, what could be causing the differences in the connections with these cameras?
Are the cameras saturating a buffer I could tweak?