OSI: The Internet That Wasn’t (2013)
spectrum.ieee.org
spectrum.ieee.org
Another problem that I read about at the time is that some of the ISO protocols didn't work. The "ISORMites" (http://www.amazon.com/Elements-Networking-Style-Animadversio...) were reported to be contemptuous of the Internet protocols, their origin from the "US Department of Death", etc. ... and didn't have a policy like the IETF's "running code wins" approach.
More generally, per http://www.ietf.org/tao.html "One of the 'founding beliefs' is embodied in an early quote about the IETF from David Clark: 'We reject kings, presidents and voting. We believe in rough consensus and running code'"
TP4 assumed a reasonably reliable data path, probably an X.25 virtual circuit, underneath. It didn't have all the timing, reordering, retransmit, and congestion control machinery that lets TCP work over bad links.
On the other hand, the OSI crowd had, at the time, more experience with scaling and routing. IP's class A, B and C networks, autonomous system numbers, and Border Gateway Protocol didn't scale well. Routing in the Internet is still something of a hack. Today's routers almost have to have an in-memory table mapping all 4 billion IPv4 addresses to Autonomous System Numbers. If memory wasn't so cheap, we'd be having real problems.
If they hadn't yielded on PIAS then every enterprise network engineer out there was just going to deploy in RFC 4193 ULA space, say screw you to the IETF and implement RFC 6296 - NPTv6 on their perimeter.
Net-Net - Once IPv6 starts to get traction, we're going to have routing tables of roughly the same size, but they'll just consist of /48s instead of /20s.
This turns out not to be the case.
IPv6 will not reduce the size of the routing tables. Anybody with prefixes, and PIAS right now, will likewise get a /48 of IPv6 space and start advertising it into BGP.
If anything the more easily available space may result in bigger routing tables as a result. (Not everyone was able to get a /20 - particularly outside of ARIN space. For example - IPv4 addresses come very dear in places like Dubai.)
And NAT doesn't go away with IPv6. That was another belief that did not survive its first encounter with reality. It's simply called "Network Prefix Translation" now (NAT by another name)
If it doesn't go away, it will be only because of ISP greed (i.e., charging customers for a larger number of publicly routable addresses). Otherwise, there simply is no reason not to give every customer a /56 or even a /48, given that routers won't be able to route prefixes longer than that anyway.
Fortunately, most ISPs offering native IPv6 so far have turned out not to be that greedy.
The reason NAT doesn't go away is that customers don't want to use their ISPs IPv6 space, they want their own provider independent space.
The easiest way to do that, is to address all your devices from RFC 4193 ULA space, and then, on your perimeter, do RFC 6296 Network Prefix Translation to the ISPs IPv6 space.
Then, when you change ISPs, you simply make a single change on your perimeter rather than having to renumber hundreds of internal devices, DNS, configurations, etc...
It's worth noting that NPTv6 is a lot better than NAT, though. For one thing, it operates strictly at the IP level and doesn't muck about with the transport layer. So, for instance, if you want to use a transport other than TCP or UDP, it should be possible - at least in principle - even if you are NPTing to and from ULA space. That's something you haven't been effectively able to do on the Internet for the past 20 years.
Other classes you could chose had varying degree of error detection and recovery. It also had a connectionless mode.
Any of these is less work and less bug-prone than "reinventing the wheel on top of UDP".
Using a large number of TCP connections breaks some of the assumptions behind TCP congestion control; this is one of the reasons why the SPDY/HTTP2 guys decided to layer a multi-stream protocol on top of a single TCP connection - and it still falls prey to head-of-line blocking.
Not sure what you mean by using an internal work queue - short of running a custom TCP/IP stack in kernel space or using some non-standard socket API, there's no way to work around TCP's ordered delivery.
Given these constraints, I can understand why designing a transport protocol on top of UDP might be reasonable. There probably is no need to roll your own, though - just use SCTP over UDP [1]. (Edit: I only noticed you did mention SCTP/UDP after I wrote my reply, sorry!)
Hence my suggestion of SCTP over UDP.
Using a large number of TCP connections breaks some of the assumptions behind TCP congestion control
Which assumptions? Using multiple connections is pretty standard in the enterprise storage world.
Not sure what you mean by using an internal work queue - short of running a custom TCP/IP stack in kernel space or using some non-standard socket API, there's no way to work around TCP's ordered delivery.
My bad, I missed that you were referring to lost packets blocking future packets (as opposed to slow-to-process work units blocking future work units). You're right that this is very much a problem with a single TCP stream. (Multiple TCP streams help with this.)
TCP congestion control is designed such that, under steady-state conditions, each TCP stream traversing a physical link gets an equal share of the available bandwidth. When an application that uses multiple TCP connections competes with another that uses a single one over the same link, the resulting bandwidth distribution is unfair to the latter. (Edit: there's also another problem, related to bufferbloat, but that one is a lot trickier to explain).
Of course, this may not be a problem when used on an internal network (which I assume is the scenario you are referring to). On the public Internet, however, HTTP is becoming increasingly disruptive to other kinds of traffic due to the increasing number of parallel connections used by web browsers.
I'd love to live to see the day that something actually better than TCP (that addresses these and other issues) dethrones it, but given how long IPv6 took to gain traction, I wouldn't be surprised if it didn't happen in my lifetime.
Unfortunately, reality has conspired against this possibility in two ways: NAT boxes, and the fact that transport protocols are implemented in the kernel on most operating systems (hence, an application cannot use its own transport protocol easily).
The deployment of IPv6 is a real chance to, at least, fix the first of these problems. Let's hope it does.
You specify a parameter when you start, telling which variant to use. It's really not that different sitting down before you start coding a program and deciding whether to use TCP, UDP, DCCP or similar.
Full BGP Table is around 500,000 entries, so you are off by several orders of magnitude there.
There are alternative congestion control algorithms that mitigate this somewhat; but the best solution (which AFAIK there is no widely-used standard for) is to use forward-error-correction. But since the Internet, for the most part, doesn't actually have "bad links", this is not generally necessary.
The next generation of digital air traffic control between aircraft and the ground towers is an OSI stack. Proprietary application in layer 7 and avionics-specific layers 2 and 1, but everything in between is bog-standard OSI (TP4 & IDRP, IS-IS & CLNP, 8208).
Interesting protocol suite, and it will be keeping aircraft going the right direction for the next 25+ years.
My boss once watched a trace I was running stoped it and pointed to a particular dword and said that's a Sprint ADMD you can tell as they don't to that part of the had shake properly
Hardly forgotten, I learned about OSI at the same time I studied TCP/IP back in college. And I'm hardly a veteran, since I graduated in '09.
Finally I began to understand: The standards meetings were in Paris, Rome, London, Munich, ...!
IS-IS is a internal routing protocol sometimes used instead of OSPF.
I'm old enough to remember back in the day when our customer (the biggest possible customer) allowed us to implement early versions using SMTP, but we had to design and plan to switch to X.400 since that was going to be the real standard. It was a strange era. We had things that worked, but everyone knew that the whole industry was going to switch to something completely different that solved all the same problems for a reason no one in the trenches really understood. Except the dates for switching kept moving and the software for the new way never really quite arrived in working order or with enough features to move.
[1] http://www.amazon.com/Patterns-Network-Architecture-Fundamen...
Devices that mix layers can do pretty interesting work, too (e.g., inspection of packets for security purposes, smart buffering for controlling host load, etc.). So the "every layer only talks to the layers immediately above and below" is kind of suspect, at least as dogma. There are probably other examples in very high bandwidth systems where you want to skip layers for performance reasons.