Qubes-mirage-firewall RC-like update with (partial) GSO support

Dear community,

I am happy to announce that work on supporting Generic Segmentation Offload has been partially completed for the Mirage ecosystem. Generic Segmentation Offload allows up to 64 KB of packets to be written at a time with Xen, resulting in increased bandwidth. This was not possible with Mirage until the recent release of mirage-net-xen, and yet this feature is still only partially implemented (hopefully the path done is the download path and is the one benefiting to most users from GSO. There is still work to be done on the upload path).

So here’s the current status:

  • I’ve opened a pull request ( Update ecosystem with GSO :) by palainp · Pull Request #231 · mirage/qubes-mirage-firewall · GitHub ) which is currently pending testing (although I’ve carried out some tests and use it as a firewall on a daily basis, it’s possible I’ve missed things); so please compile and test [1].
  • You should see improvement when testing with iperf locally and a slight improvement when testing with remote servers (for my part, my network outside my home remains the bottleneck, and naturally, packets must be sent at the MTU size rather than 64 KB outside the Qubes machine).

[1]: compilation is reproducible with the following:

git clone https://github.com/palainp/qubes-mirage-firewall
cd qubes-mirage-firewall
git checkout update-mirage-net-xen
sudo dnf install podman -y
./build-with.sh podman

And the hashsum should be the same with your build and the current head.

7 Likes

Sounds great, thanks for the amazing work, as always! What percentage performance difference are we talking about here?

2 Likes

It’s around 2 times for upload and 6 times for download with local (in the laptop) iperf tests. It’ll less with tests on remote servers (but haven’t compared).

2 Likes

Sounds great! Thanks for the continued maintenance of this useful project.

3 Likes