tl;dr: if you’re using libfwupd
to download firmware, nothing changes and everything continues as before. If you’re using something like wget
that doesn’t follow redirects by default you might need to add a command line argument to download firmware from the LVFS.
Just a quick note to explain something that some people might have noticed; if you’re using fwupd >= 1.6.1 or >= 1.5.10 when you connect to the LVFS to download a firmware file you actually get redirected to the same file on the CDN. e.g. downloading https://fwupd/download/foo.cab
gets a redirect to https://cdn.fwupd/download/foo.cab
which is then streamed to the user. Why this insanity?
As some of you know, egress charges from AWS are insanely high. The Linux Foundation are the kind people that kindly pay the LVFS bill every month, and a 4 years ago that was just a few hundred dollars and that was a rounding error to them. Last year we again grew at more than 100% and the projection for next year is going to surpass even that; the average size of firmware files has gone from ~30MB to ~50MB with much, much, larger server firmware in the pipeline. We certainly can’t watch the egress bill scale linearly with the LVFS popularity, else some accountant at the Linux Foundation is going to start asking questions – especially when Fastly provides the LF a geo-replicated CDN – which we’re not using.
So why don’t we put the CDN URL in the XML metadata directly, and then avoid all this redirect complexity altogether? This time the lawyers get us, as we’re required by US law to restrict distribution of some firmware to some countries on an embargo list. It’s very complicated, and it varies by vendor, but it’s not something we can avoid. So for this reason, the LVFS does a GeoIP lookup on the client IP, and if it’s all okay we then redirect the client to the CDN-cached version. It also lets us tell the vendor how many times the firmware has been downloaded without importing the CDN logs every 24 hours – which would be even harder as we only keep them for a short time for privacy reasons.
Just an FYI, but Fastly and really any reasonable CDN have all the same kinds of geo specific routing features. Maybe there’s a reason that needs to be done in fwupd, and duplicating the policy in Fastly may be non-trivial, but I suspect you could do all if this right at the edge in the CDN. Anyways, good for you for getting a real CDN involved. There’s a reason they exist.
It’s slightly more complicated in that each firmware can have it’s own embargo policy. It would also be another round of talking to lawyers, something I’m keen on avoiding if I can! :)