4 ms·
> this is the way the internet works Eh, gotta call this out. The Internet is designed on an end-to-end principle, and at each layer the endpoints are expected
by inopinatus 5y ago
> this is the way the internet works
Eh, gotta call this out. The Internet is designed on an end-to-end principle, and at each layer the endpoints are expected to mediate behaviour via protocols.
By this architectural standard, middleboxes (including all HTTP proxies and CDNs and what have you) are kludges. They are not "how the internet works", they are the antithesis, they are symptoms of emergent pathology. These are barriers to federation and distributed systems, both enabling and enabled by centralizing forces that divert individual autonomy & value to institutional & commercial interest. They are evidence for Further Research & Development Required, and my belief is we'll eventually solve these problems at the end-to-end protocol level.
As for Cloudflare, particularly, their business strategy is to drive down the marginal cost of their own bandwidth, for use in revenue-bearing services such as DDoS mitigation. Every service provided for "free" (some of which, at the free tier, will increase your site latency and lower your visitor count, by the way) works to increase their volumes for use as leverage in peering negotiations. As ever, "free" = "you are the product".
- tshaddox 5y agoHow else might you attempt to prevent or mitigate a DDoS attack on your server without using things which you consider to be kludges?
- uluyol 5y ago> The Internet is designed on an end-to-end principle Yes, this is true, and the end-to-end principle is great. But it's not always straightforward to follow, and certainly is not a religion. In the end, no one cares about the end-to-end principle. They want systems that are flexible, robust, and high performance. In some sense, it's a lot like simplicity. You try to and make your design as simple as possible, but sometimes, you have to have complexity. It's not ideal, but it's not a deal breaker either. Additionally, you have to ask the question: what is an endpoint? "A" server, or can a distributed system be seen as an endpoint? After all, a single server is a bunch of independent components communicating with one another (via infinity fabric, PCIe, etc), so why would it matter if we spread those components across machines (and spoke RPCs, RDMA, whatever)? To me, a service running in a data center with a load balancer in front is "an endpoint" and no real violation of the end-to-end principle is taking place. I think extending the definition of "endpoint" to everything behind a CDN is a stretch too far, but ultimately, I think "endpoint" isn't really defined well-enough to be the unit we talk about.
- inopinatus 5y agoOn the contrary, these are not muddy grey area topics that are open to barnum statements, gaslighting, and misrepresentation, such as: > In the end, no one cares about the end-to-end principle This assertion couldn't be more wrong. I care; many others care; caring about the architecture of the Internet did not die with John Postel. > you have to ask the question: what is an endpoint? No, we don't: it's covered in networking 101. Any party in a layered protocol whose interactions are opaque to the layers below and transparent to the layers above. And they're defined by those interactions, not by their implementation. A CDN is a forward caching proxy for content layered over HTTP, and that's all that matters when it comes to realising their emergent properties. Don't be hypnotized by the shiny dangly extras that the providers wave around hoping to distract attention from what they actually offer, or why they do it, or the consequences.
- uluyol 5y agoI didn't mean to offend, sorry if my statement rubbed you the wrong way. All I'm saying is that users of a system don't think about design principles, they are there for the developers and operators to manage complexity and meet higher-level objectives. They can do this even if they are not followed 100% perfectly.
- meowface 5y agoSort of, but nature / decentralization / emergence is messy. The internet still works pretty well without rigid intermediaries (besides unavoidable core routing paths and root DNS), but that open property is also what enables people to easily disrupt things, like with DDoS attacks. In a hypothetical distant-future anarchistic society, it's very likely you're still going to have private security forces, analogous to Cloudflare's security offerings, and some of them will probably grow to be quite big. Attackers have an asymmetric advantage. One person with a gun can quickly terrorize or kill a lot of people, and one kid with $10 on their parents' credit card or access to a botnet can instantly bring an organization's web presence to its knees at the click of a button or input of a command. I definitely agree that any one entity controlling too much of the access route is a concern and a risk, but before Cloudflare it was Akamai. If they never existed, Akamai and CloudFront would be the de facto oligopoly. If Cloudflare dies, someone else will probably gain a similar market share. You can try to make security enforcement as decentralized as possible, like Bitcoin tries to. But, it was probably inevitable that a few huge mining pools would come to dominate, just like a few big security/CDN companies have. It's plausible that there could be future solutions that will offer similar security and performance and resource-conserving benefits for free without requiring any private intermediates, and I'd happily recommend them over Cloudflare/Akamai/etc. if they existed and were as good or better. They just don't seem to be here right now.