Debunking Cloudflare’s recent performance tests (2021)
fastly.com
fastly.com
In the immediate finds I'm seeing, these two matter most to me:
>Cloudflare used a free Fastly trial account to conduct their tests. Free trial accounts are designed for limited use compared to paid accounts, and performance under load is not comparable between the two.
>Cloudflare conducted their tests in a single hour, on a single day. This fails to normalize for daily traffic patterns or abnormal events and is susceptible to random distortion effects. If you ran several sets of tests at different times of day, it’s likely that at some point, you’d achieve your desired outcome.
Neither of these are good. For one, paid uninhibited account would cost little to do this test properly. You don't know if you hit their rate limits, are de-prioritized over paid users etc. There are lots of reasons why this is could cause the metrics to be skewed.
The second one is an even bigger deal. Sample size matters, as does variance of inputs. This is just sloppy all around. 1 hour on 1 day will tell little of performance. Ideally, this should be done quite randomly, with a bunch of different random workload variances, and sampled over weeks, and from different locations (east coast, west coast, midwest, Canada, Europe etc). This would give a real sense of the overall network, and leave a lot less room for Fastly to hit back if the benchmarks are accurate.
Overall I think Fastly may have caught Cloudflare red handed in sloppiness of comparision. For Cloudflare, this is pretty poor execution. Unfortunately, if or when Cloudflare does a response piece and still backs their claim, they're going to look more suspect if they aren't more thorough with their methodology and reproducibility
From my limited research in the past for web servers JS is not that far behind Rust. In fact they often rank better. For this "single query" JS (just-js) ranks 1st with a rust one at 3rd:
https://www.techempower.com/benchmarks/#section=data-r21&tes...
for "fortunes" requests JS is 5th place with Rust at 2nd and 4th:
https://www.techempower.com/benchmarks/#section=data-r21
etc, but again not sure how relevant this is
Fastly's complaint is "we don't offer the fast runtime so its unfair that you point out that you have a faster option while claiming you have a faster option."
Cloudflare used JS for edge workers as their launch choice, and Fastly used Rust as their launch choice so of course it makes sense to compare the two most mature techs in their stacks
The funny side point here is this is two unprofitable CDNs squabbling while the unfashionable Akamai just keeps making money — an interesting case of first mover advantage
Akamai's advantage is probably it's sales business and existing contracts. Workers is just business #1383 for Cloudflare which can take advantage of their freemium scaling model
What is dishonest, as a sibling pointed out, is compiling rust to WASM and pretending it is a more fair comparison.
Reading through both posts, I'm not exactly finding fastly's defense to be meaningful.
Well, except Liberia
I added more details here, with what I remember from those days: https://news.ycombinator.com/item?id=36733580
( Then noticed your post)
Why should I, as a customer of a hosted, managed, SaaS product, need to ever care or think about the time of day as a factor for the performance of my product? If Fastly, as a hosted SaaS, isn't managing its own capacity well enough to deliver consistent performance at all times, that's on them.
Additionally, provisioning hidden limits between different types of accounts, especially limits that affect performance for a CDN whose objective should be delivering consistent performance, is deceptive at best, and malicious and false advertising at worst.
There’s a reason that many sites that require efficient content delivery have many different CDNs and optimize between them. Well, there are many reasons. But one of them is QoS.
- Cloudflare doesn't strictly allow benchmarking - Thus fastly compared against Cloudflare's own metric and numbers
Fastly would do better to go on the offensive and prove their worth rather than complain about everything a competitor says.
But I think they're also probably the users most likely to drive performance variations too
If someone ran a performance benchmark of your SaaS product many times over a few days until they got a result that looked bad in comparison to their own product, then proceeded to use that one sample in their post, you'd be pissed too.
Performance isn't constant, and especially for a (presumably low-priority) free offering, it's beyond sketchy.
The question is: how many times did Cloudflare test before finding the worst hour? I rather doubt they registered their trials!
(But it could also be “just the one time” because they are that much better… who can say?)
And that happened to be 1am NZ time.
And it made cloudflare look good but vastly look bad.
But you run the same test at 1pm NZ time and fastly is faster cos cloudflare can’t handle the load.
Obviously it does matter to you as a sad providers because time of day does matter for when the tests are conducted.
So for Cloudflare's tests, I can see why they wouldn't want to directly say "we're benchmarking you, can we have an account", since that would require an entire contract to be set up and approved by the purchasing department, and it could give Fastly the time to flag their account to "over" prioritize it, potentially affecting benchmark results.
https://twitter.com/eastdakota/status/1671896844513734656?t=...
> Love that the only country where Fastly is fastest is now Liberia.
> We use Real User Measurements (RUM) and fetch a small file from Cloudflare, Akamai, CloudFront, Fastly and Google Cloud CDN. Browsers around the world report the performance of those providers from the perspective of the end-user network they are on
Even the blog post they reference doesn’t cover much more detail
Key thing is to be measuring via RUM they must be injecting the script into sites they serve (and presumably the free ones) so there may already be bias introduced here, also why choose a 100kb file, how does the data differ if say a 10kb or 200kb is used etc.
Lots of questions about the methodology remain
To counterpoint, I always found it interesting that cloudflare talks about population density ( big cities) on where to perform faster. Since that's where most of the population lives.
I haven't seen any other companies talk about that outside of cloudflare.
And it seems a more important real-life benchmark than deciding the difference between 10 kb, 100 kb or 200 kb...
Tbh, I think 100 kb. Is just the smallest relevant size which they thought, looking at their speedtest file sizes of 100 kb, 1 mb and 10 mb - https://speed.cloudflare.com/
Cloudflare are making the claim that they’re faster than others, and they collected the data they’re basing their claim on
They’re always going to try to present themselves favourably so that means we should be skeptical and ask questions about the gaps in the data and the methodology
Questioning 10, 100 vs 200 kb. seemed nitting to me, if I may say that.
I've seen a lot of bias against cloudflare since fastly's blaming and a lot seems exaggerated to me.
It's like they have to hold standards 20 x higher than the rest to make the same point. And tbh. They actually didn't earn the blame that happened then ( if I remember it correctly)
I'm sure fastly would be quick to point out any errors ( relevant or not) in benchmarking. And considering they didn't for a month and considering history, that also bears meaning.
Since they are the obvious losers here ( only faster in Liberia... ).
Additionally, I'm pretty sure eastdakota's statement "game on" and their unfortunate PR disaster ( they have gone much more silent since then), would mean they are double checking any benchmarking for errors.
At least, if I can guess cloudflare 's management correctly.
Note: fan of the firm + management. Got shares.
If I wouldn't think they are acting in good faith, I'd probably sell my shares.
https://news.ycombinator.com/item?id=29465729
…in which Cloudflare's CEO directly address the first point (having a legacy clause in their Terms that used to prohibit benchmarking, clause they removed quickly after), and in which one of the main engineer behind Cloudflare Workers underline that there is "apple vs oranges" comparisons for a while from Fastly before that blogpost.
I really recommand reading those previous discussions, you'll learn a lot about the context of this blogpost and what Cloudflare think of it!
It turned out that Fastly ignores/blocks ICMP unreachable messages, which breaks Path MTU discovery[0]. The host was behind a VPN and I verified using Wireshark that it was asking Fastly to lower its MTU to accomodate the VPN packet overhead, but Fastly was ignoring the messages.
Setting MSS on the host's default route (`ip route change default advmss 1380`) fixed it, but it seems basic networking tips like "don't block all ICMP" should be table stakes for a CDN. I nicely emailed Fastly about this, figuring they might appreciate knowing they had something misconfigured, but never heard back.
Ironically, Cloudflare has a really good blog post about this issue[1], which I used when explaining the problem and solution to my client.
[0]: https://en.wikipedia.org/wiki/Path_MTU_Discovery
[1]: https://blog.cloudflare.com/path-mtu-discovery-in-practice/
It could also have been a middlebox somewhere between the vpn egress and fastly causing issues.
20:55:33.402893 IP 23.141.40.254.43004 > 151.101.10.132.443: Flags [.], ack 1, win 504, options [nop,nop,TS val 4088102127 ecr 3823759533,nop,nop,sack 1 {2889:3881}], length 0
20:55:33.580057 IP 151.101.10.132.443 > 23.141.40.254.43004: Flags [.], seq 1:1445, ack 397, win 285, options [nop,nop,TS val 3823759807 ecr 4088102127], length 1444
20:55:33.580314 IP 23.141.40.254 > 151.101.10.132: ICMP 23.141.40.254 unreachable - need to frag (mtu 1420), length 556
20:55:34.155995 IP 151.101.10.132.443 > 23.141.40.254.43004: Flags [.], seq 1:1445, ack 397, win 285, options [nop,nop,TS val 3823760383 ecr 4088102127], length 1444
20:55:34.156214 IP 23.141.40.254 > 151.101.10.132: ICMP 23.141.40.254 unreachable - need to frag (mtu 1420), length 556
20:55:35.308019 IP 151.101.10.132.443 > 23.141.40.254.43004: Flags [.], seq 1:1445, ack 397, win 285, options [nop,nop,TS val 3823761535 ecr 4088102127], length 1444
20:55:35.308275 IP 23.141.40.254 > 151.101.10.132: ICMP 23.141.40.254 unreachable - need to frag (mtu 1420), length 556
20:55:37.739916 IP 151.101.10.132.443 > 23.141.40.254.43004: Flags [.], seq 1:1445, ack 397, win 285, options [nop,nop,TS val 3823763967 ecr 4088102127], length 1444
20:55:37.740191 IP 23.141.40.254 > 151.101.10.132: ICMP 23.141.40.254 unreachable - need to frag (mtu 1420), length 556
20:55:42.347790 IP 151.101.10.132.443 > 23.141.40.254.43004: Flags [.], seq 1:1445, ack 397, win 285, options [nop,nop,TS val 3823768575 ecr 4088102127], length 1444
20:55:42.348049 IP 23.141.40.254 > 151.101.10.132: ICMP 23.141.40.254 unreachable - need to frag (mtu 1420), length 556
20:55:49.539608 IP 23.141.40.254.43004 > 151.101.10.132.443: Flags [F.], seq 397, ack 1, win 504, options [nop,nop,TS val 4088118265 ecr 3823759533,nop,nop,sack 1 {2889:3881}], length 0
20:55:49.659124 IP 151.101.10.132.443 > 23.141.40.254.43004: Flags [.], ack 398, win 285, options [nop,nop,TS val 3823775887 ecr 4088118265], length 0
20:55:49.659189 IP 151.101.10.132.443 > 23.141.40.254.43004: Flags [F.], seq 3881, ack 398, win 285, options [nop,nop,TS val 3823775887 ecr 4088118265], length 0
20:55:49.715144 IP 23.141.40.254.43004 > 151.101.10.132.443: Flags [R], seq 829588935, win 0, length 0
(FWIW, this thread nudged me to email noc@fastly.com again.)All the article does (which they even admit, blaming it on "beta" status) is that, if you want to run javascript on an edge server, cloudflare is faster. On top of that, you can do it in a free tier, whereas fastly says their free offering is only meant for a short trial.
And they decided to compare Rust against JS because that somehow makes more sense? That’s bizarre.
Not sure how many nodes Catchpoint have so 675 might be the natural limit
It's not recent any more. This blog post is a year and a half old.
Its not just these mentioned, many corporate ToS give them too much power and it's insurmountable for individuals or small business to fight back.