> If you start with the problem of how to create a reliable stream of data on top of an unreliable datagram layer, then the solution that comes out will look virtually identical to TCP.
I'll add that at the time of TCP's writing, the telephone people far outnumbered everyone else in the packet switching vs circuit switching debate. TCP gives you a virtual circuit over a packet switched network as a pair of reliable-enough independent byte streams over IP. This idea, that the endpoints could implement reliability through retransmission came from an earlier French network, Cylades, and ends up being a core principle of IP networks.
The telephone people were basically right with their criticisms of TCP/IP such as:
What about QoS? Jitter, bandwidth, latency, fairness guarantees? What about queuing delay? What about multiplexing and tunneling? Traffic shaping and engineering? What about long-haul performance? Easy integration with optical circuit networks? etc. ATM addressed these issues, but TCP/IP did not.
All of these things showed up again once you tried to do VOIP and video conferencing, and in core ISPs as well as access networks, and they weren't (and in many cases still aren't) easy to solve.
Outside of VOIP & live video, most applications today don't have such tight requirements for QoS/Jitter/Latency/QueueingDelay/..., but oh man back then the top applications were all either telephone calls or signals run over telephone lines.
If that is true, then why did the telcos rapidly move the entire backbone of the telephone network to IP in the 1990s?
And why are they trying to persuade regulators to let them get rid of the remaining (peripheral) part of the old circuit-switched network, i.e., to phase out old-school telephone hardware, requiring all customers to have IP phone hardware?
They moved to IP because it was improving faster in speed and commoditization vs. ATM. But in order to make it work, they had to figure out how to make QoS work on IP networks, which wasn't easy. It still isn't easy (see: crappy zoom calls.)
Modern circuit switched networks use optics rather than the legacy copper circuits which date back to telegraphy.
You can criticize something and still select it as the best option. I do this daily with Apple. If you can’t find a flaw in a technical solution you probably aren’t looking close enough.
Packet switching is cheaper; even though it can't make any guarantees about latency and bandwidth the way circuit switching could, it uses scarce long-haul bandwidth more efficiently. I regularly see people falling off video calls, like, multiple times a week. So, in some ways, it's a worse product, but costs much less.
We're still "suffering" from the latency and jitter effects of the packet switching victory. (The debate happened before my time and I don't know if I would have really agreed with circuit switching.) Latency and jitter on the modern Internet are very best effort emphasis on "effort".
True, but with circuit switching, we'd probably still be paying by the minute, so most of these jittery/bufferbloated connections would not exist in the first place.
Also, circuit switching is harder (well, more expensive) to do at scale, especially with different providers (probably a reason the traditional telecoms pushed it so hard - to protect their traditional positions). Even modern circuit technologies like MPLS are mostly contained to within a network (though there can be and is cross-networking peering) and aren't as connection oriented as previous circuits like ATM or Frame Relay.
Circuit switching is not harder to do, it's simply less efficient. In the PSTN and ISDN world, circuits consumed bandwidth regardless of whether it was actively in use or not. There was no statistical multiplexing as a result.
Circuit switching packets means carrying metadata about the circuit rather than simply using the destination MAC or IP address to figure out routing along the way. ATM took this to an extreme with nearly 10% protocol overhead (48 bytes of payload in a 53 byte cell) and 22 bytes of wasted space in the last ATM cell for a 1500 byte ethernet packet. That inefficiency is what really hurt. Sadly the ATM legacy lives on in GPON and XGSPON -- EPON / 10GEPON are far better protocols. As a result, GPON and XGSPON require gobs of memory per port for frame reassembly (128 ONUs x 8 priorities x 9KB for jumbo frames = 9MB per port worst case), whereas EPON / 10GEPON do not.
MPLS also has certain issues that are solved by using the IPv6 next header feature which avoids having to push / pop headers (modifying the size of the packet which has implications for buffering and the associated QoS issues making the hardware more complex) in the transport network. MPLS labels made sense at the time of introduction in the early 2000s when transport network hardware was able to utilize a small table to look up the next hop of a frame instead of doing a full route lookup. The hardware constraints of those early days requiring small SRAMs have effectively gone away since modern ASICs have billions of transistors which make on chip route tables sufficient for many use-cases.
> Circuit switching is not harder to do, it's simply less efficient
I did specify more expensive. Even with ASICs it’s more expensive to scale up.
> ATM took this to an extreme with nearly 10% protocol overhead (48 bytes of payload in a 53 byte cell) and 22 bytes of wasted space in the last ATM cell for a 1500 byte ethernet packet. That inefficiency is what really hurt. Sadly the ATM legacy lives on in GPON and XGSPON -- EPON / 10GEPON are far better protocols. As a result, GPON and XGSPON require gobs of memory per port for frame reassembly (128 ONUs x 8 priorities x 9KB for jumbo frames = 9MB per port worst case), whereas EPON / 10GEPON do not.
ATM was a technology designed and pushed by the traditional voice telecoms long before everything converged on IP. The smaller byte sizes were designed to have less jitter/latency for voice, QoS (also to prioritize voice), and more fine-grained multiplexing for voice traffic, where other data was secondary. ATM was originally designed in the late 1980s before Ethernet won out and bulk data transfer was a novelty; the traditional telecoms wanted something that mapped into their current circuits.
ATM’s overhead for IP was arguably too much, but it wasn’t what killed ATM. It was the fact that speeding the sending of such small packets up to and past gigabit speeds was too expensive, which was made worse by the fact that Ethernet became a commodity due to scale.
> Sadly the ATM legacy lives on in GPON and XGSPON -- EPON / 10GEPON are far better protocols. As a result, GPON and XGSPON require gobs of memory per port for frame reassembly (128 ONUs x 8 priorities x 9KB for jumbo frames = 9MB per port worst case), whereas EPON / 10GEPON do not.
This isn’t quite the same argument. I agree that 10GEPON is “better” and I wish it was THE standard (especially for pure ISPs), but it ignores that most ISPs using XGSPON are multiplexing voip, TV, emergency, and other traditional networks. If anything, it’s what ATM should have been, where they could have had a different priority for small celled VOIP and larger packets for other services. I say this as a person who thinks all this is dumb and consumers should just be given an internet connection at this point - I hope 10GEPON wins out in the end - it is certainly already cheaper. I much more hate the fact that I have to use PPPoE than some memory overhead for the ports reassembling GEM packets, though.
As for MPLS, well yeah it was certainly faster than IP lookups, but the circuits also often result in sub-optimal routing as the MPLS “tunnels” don’t always reflect otherwise ideal physical paths. IIRC, about half of the IPv6 internet’s core is actually routed over MPLS tunnels and it can be a large reason IPv6 routing can often have higher TTLs than IPv4 (because the paths often aren’t as efficient). That being said, we’ll have to see if segment routing takes off, and what approaches stick.
I'll add that at the time of TCP's writing, the telephone people far outnumbered everyone else in the packet switching vs circuit switching debate. TCP gives you a virtual circuit over a packet switched network as a pair of reliable-enough independent byte streams over IP. This idea, that the endpoints could implement reliability through retransmission came from an earlier French network, Cylades, and ends up being a core principle of IP networks.