Interestingly enough Van Jacobson has continued in this line of research, but the future of Internet networking looks radically different than what was proposed in these early days.
A pivotal recognition is that the Internet nowadays is dominated by content, not by endpoints. The modern CDN is really a very complex kludge in order to deal with what we now believe the Internet's primary purpose to be: content delivery. The Internet was originally designed in a TCP/IP point-to-point structure, with the most important aspects being the communication of two parties. Now the most important part is that a given party (or really many parties) receive a specific piece of content, regardless of where that content comes from. In this light, it is wise to redesign the Internet's infrastructure against standard TCP/IP and instead build knowledge of content and caching layers directly into the transport protocols.
The preliminary paper which deals with many of these issues is Jacobson's Networking Named Content[1]. The general idea is that one requests content instead of communication with a specific party. ISPs and other intermediate layers cache content blocks (because its in their own financial best interests by saving money in peering costs and pure networking hardware costs) and your request for content is delivered via the nearest available hot cache. Many other papers have been written with their own tweaks, but this is the general idea for what the next generation of the Internet should look like (from the distributed systems researcher perspective). In my Distributed Systems in Challenging Environments class one of the things my partners and I were working on was building a prototype of CCN (the protocol described in Jacobson's paper) on top of the current TCP/IP layer to examine its real-world characteristics and swarm behavior. We never completely finished the prototype for Contemplating Content Centric Protocols, but it was an interesting project nonetheless.
I've been hoping to see something tangible from VJ on this for awhile now. He was doing content-based networking even back when he was at Cisco.
To an extent I think recognized by a lot of networking researchers, including IIRC YC's Robert Morris at MIT, the future of the Internet is probably not IPv6 and a network consisting of operating systems addressed by scalar integers.
Instead, IP-type protocols are going to assume the same role that Ethernet and 802.11 (and ATM) play today, as a substrate for connectivity on top of which real applications will be built. The wide area discovery and "session" (OSI style) management roles played by IP and TCP will be played by overlay networks. We have primitive overlays now (DHTs, BitTorrent, Skype) and proprietary ones (CDNs like Akamai, whatever the cable content providers are using to push VOD to the edge), but eventually we'll get a general-purpose open one and the game will be on.
I think this follows straightforwardly from Reed's end-to-end argument. Intelligence belongs to the edges, not the core of the network; intelligence at the core is necessarily a lowest-common-denominator affair, and is hard to scale. That's a key reason why we don't have multicast today. Routers are so bad at scale that tier 1 NSPs filtered BGP announcements by prefix length, because they couldn't handle /32-granular routing for even the tiny subset of machines that actually wanted it (begging the question of how we ever expect IPv6 to do the things the typical HN reader hopes they'll do, like provide them with their own portable /16-equivalents). Multicast effectively asked those same overtaxed routers to address web pages, individually.
That's obviously not going to work when the service model involves random people demanding that AT&T and Level3 add routing table entries for their podcasts. But it scales just fine when the thousands of machines interested in those podcasts share a protocol and an infrastructure for arranging a fan-out overlay.
So many unsolved problems here, from "what is the most reasonable kernel of overlay assembly, group management, and routing to deploy to end-systems" to "how do we avoid congestion collapse in arbitrary group messaging protocols" (a study of multicast reliability algorithms --- at least, from the late 90s when I last did this stuff --- will probably horrify you). But the great thing about it is, nobody has to ask permission to make this stuff work; we can evolve to the real next Internet without getting Comcast's permission, or for that matter (more perniciously) the IETF's.
Yes, there are a huge number of advances to be made in this area. IP multicast was certainly the first draft in making this kind of networking possible but the fundamental problem is the incompatibility with the rest of the way the Internet is run.
The problem we were trying to address in the graduate class is that Jacobson's paper simply assumes that the Internet suddenly "switches," like a lightbulb, to this new method of routing. I think everyone agrees that something that looks like CCN will become the future, but we were interested in the road to get there. We were trying to examine the problems associated with porting to this kind of network without preexisting infrastructure in place.
One thing that you may find interesting is that the network tends to look more like a very layered Bittorrent network in current IP infrastructure, so it may end up that the most effective research ground for an intermediate protocol would be in adapting Bittorrent. The second area that I think is really interesting is secure and (perhaps more importantly) authenticated communication in this protocol. There's an entire other paper cited at the bottom of the CCN paper that I linked to that details the cryptographic authentication used in CCN but there are a number of things that I think either need more detail to be worked through or put me on the edge a little.
We got funded for this idea, by Sony, during the first bubble. Before BitTorrent, when FEC-based multicast file transfer was either FLID/DL (an IETF standard that never went anywhere) or the startup by the guy who invented Tornado codes.
We had a centralized tree-structured directory for discovery, and then (at first) deployable nodes running group messaging and running a weighted link-state routing protocol (more or less cribbed from OSPF), then later a small kernel message forwarding scheme with a programmable control plane so we could build arbitrary routing protocols in Tcl.
Our initial application was chat (we overengineered, like, a little) and we pivoted to streaming video.
We died in part because we hadn't the slightest clue what we were doing, and in part because the VCs replaced our management with a team that decided our best bet was to take our superior technology and go head-to-head with Akamai with our own streaming video CDN.
We'd have been better off just open-sourcing.
Anyhow: I'm obviously biased, but the way I think this is going to happen is, some open source project to build arbitrary overlays is going to catch on (the overlay will be a means-to-an-end for some killer app people actually care about; my bet is, telepresence).
Very interesting. The main difference in our work is that we really latched on to VJ's idea of breadcrumbs and caching blocks. When I alluded to Bittorrent I wasn't really referring to FEC-based distribution. The problem with FEC is as you said somewhere else -- it's not very efficient for small files and it currently isn't very location aware (aside from Ono, my professor's research lab's Bittorrent plugin) so you can end up going halfway around the world for relevant pieces of the file.
Instead, we were more interested with the robust swarm implementations that were already present in some Bittorrent clients, like fairly efficient DHTs. It is also an already existing protocol with millions of users so we could piggyback on Bittorrent clients with plugins to measure the real performance all over the world.
The key difference is the caching. Jacobson proposes that the caching would happen in the ISPs, but there's no reason peers couldn't take up the slack, only different monetary incentives. The protocol here becomes less like OSPF and more like distributed k-minimum spanning tree. If you can find the "supernodes" then you can implement caching on their front and prevent unnecessary communication.
Of course, if you think anything like me your first thought is, "do we actually know if data requests are reliably concentrated in a specific area such that local caching will actually provide much of a benefit?" My partners thought the same thing, which is why they ended up doing a Bittorrent traffic analysis to attempt to plot an AS distribution curve for data requests[1]. They found that there was huge redundancy in intra-AS requests, so there's at least potential here.
Of course there are still a number of problems to be worked out -- if the supernodes don't have an easy incentive to provide caching to other people in their AS, how do we develop such an incentive? But the overall protocol seems very interesting. Most notably it would not work like FEC and small files would probably benefit even more from the caching (which is why you'll also note that files are split into blocks or datagrams or whatever you wish to call them in the VJ protocol).
libswift.org is a nice place to start. It compacts and simplifies the tcp/bittorrent stack into 4k lines of cpp. I'm working through an educational port at the moment and will blog about it as I go.
I'm not as optimistic as 'Locke1689 is that BT is the best primitive for a general-purpose overlay, as FEC is less useful for small filesizes and discrete messages.
On the other hand, congestion control is easier to do for FEC-based protocols than it is for generic group messaging.
Yes. Simplified: you take a message and break it into n blocks such that any unique subset of k many of those blocks reconstitutes the message, even those k is less than n. Think RAID parity (though it's more complicated than that).
One thing that makes FEC attractive in wide-scale group messaging is that you have knobs to turn, in terms of how many simultaneous blocks you attempt to download to reconstitute the message.
As you can imagine, this is an idea that works really well for ISOs and DVDRips, but is clunky for emails.
Ah, ok. Swift uses merkle hash trees for error detection which scales down quite nicely. Packets which don't match the hash are just dropped. They seem to be trying to avoid long request-response chains - most messages just cause a state transition and don't require a direct response.
I've only just started working on understanding swift so I can't speak for its suitability for small content. It is much simpler than bittorrent at least.
A pivotal recognition is that the Internet nowadays is dominated by content, not by endpoints. The modern CDN is really a very complex kludge in order to deal with what we now believe the Internet's primary purpose to be: content delivery. The Internet was originally designed in a TCP/IP point-to-point structure, with the most important aspects being the communication of two parties. Now the most important part is that a given party (or really many parties) receive a specific piece of content, regardless of where that content comes from. In this light, it is wise to redesign the Internet's infrastructure against standard TCP/IP and instead build knowledge of content and caching layers directly into the transport protocols.
The preliminary paper which deals with many of these issues is Jacobson's Networking Named Content[1]. The general idea is that one requests content instead of communication with a specific party. ISPs and other intermediate layers cache content blocks (because its in their own financial best interests by saving money in peering costs and pure networking hardware costs) and your request for content is delivered via the nearest available hot cache. Many other papers have been written with their own tweaks, but this is the general idea for what the next generation of the Internet should look like (from the distributed systems researcher perspective). In my Distributed Systems in Challenging Environments class one of the things my partners and I were working on was building a prototype of CCN (the protocol described in Jacobson's paper) on top of the current TCP/IP layer to examine its real-world characteristics and swarm behavior. We never completely finished the prototype for Contemplating Content Centric Protocols, but it was an interesting project nonetheless.
[1] http://conferences.sigcomm.org/co-next/2009/papers/Jacobson....