[music]. We're having massive scaling problems
today. Trying to join together the very
information centric web model, with the very host centric TCP/IP model.
If you look at how the net has evolved it, It started as a telephone system for
computers. The, the model was, computers wanted to
exchange data people wanted their computers to be able to exchange data.
The model we had for communication for 140 years, years had been the phone system.
So he said, okay, they want to have a conversation, because communication is
conversation over long distances. And so, let's make protocols and
infrastructure that allows computers to have a conversation.
First cut of that, things like the ARPANET.
Networks that would handle different bandwidths they didn't require all of the
global clock distribution of a tel, telephony network.
Instead, they substituted buffering and one crucial thing coming out of Paul Baran
was unlike the phone system where communication was all about building a
wire. You know, hop by hop, link by link between
the two endpoints, basically instructing the switching system on how to make one
long wire. Paul said, don't do it that way.
Just identify the endpoints and let the network take care of getting the data
there. Okay, so, this is great.
It is, just completely changed the world. But the bulk of that change was, didn't
happen in the 70s, and 80s, and early 90s when the net was first growing out.
It happened in the late 90s and the 2000s, when the web took off, and it had nothing
whatsoever to do with computers having a conversation model.
It had to do with people creating and consuming content and it, the web sort of
showed us for the first time what happens if we leave behind this 18th century model
of telephony and instead we start to look at, not the wires, but the information in
the wires. And, and the web gave us this structure
where you could name information, not the process of getting it but the information
itself. Say I want this webpage, I want this
YouTube video, I want this Amazon personal page and you will get back a set of
content, somet hing that represented that name that you gave.
What if we recast the way we think about the low level infrastructure?
Not, don't say the web is an overlay on top of TCP/IP, which is the way it's
implemented today. But say, if 99% plus of what we do is
web-like stuff, is there a model that lets us do the same stuff at the packet level?
Could we make it the basis of our communication, rather than say it has to
be an overlay? See, you can create videos, you can put
them on your own website and you have to pray that they never get popular.
Because, if they get popular, your ISP is almost immediately going to shut you down,
because your link will be completely saturated.
You know, what we used to call a Slashdot effect.
That's intrinsic to the conversational model, right?
We don't do broadcast TV by making phone calls to a TV station.
If you want to put media distribution over TCP/IP you have to figure out some way to
lie to the network so that YouTube.com, which TCP thinks is a location is
identified by an IP address. You gotta make sure that it's not a
location, that it's spread across the entire planet.
So while we spent most of the 90s growing the Internet and having the protocols work
for us. Now, if you look at YouTube, Google,
Amazon, Facebook, Twitter, all of these very heavily-used services.
That manifest themselves to the net as an IP address, looks like a single location.
But if they're a single location with hundreds of millions of users, the traffic
in a conversational model always scales like the popularity.
It scales like the number of consumers and you're doing Twitter update or a video
that wants to be seen by millions. You, you can't deploy it in a
conversational model and we spend all our time fooling the net.
Information that's sort of qualitatively the same as all naming or identity
information, but it's spread randomly across the whole damn packet.
So we've got source and destination addresses that can eventually, we think of
as layer three, so it's up at front to be used as by the network layer.
Then we've got ports that are a layer four, and so, they're a little deeper in,
because they're supposed to be used by the end node [foreign] to a particular
application. Then, inside of that, we've got sequence
numbers which are being used when you get to the application for it to reassemble
the larger unit. And, inside of that, we've got URLs, which
are used by a entire level part of the application than on transport part of the
application. You've just got all of this information.
It's all fundamentally name information. It's, what do these bits mean?
Well, if you pull together the source addresses, the ports, the sequence
numbers, the URLs, the all give you context for the information, they're all
the name of the information. What if, rather than having, you know,
Amazons load balancer, which is trying to figure out, alright, which of my 50,000
unused machines is currently handling this customers request.
So I, I have to look at the addresses, I have to look at the ports, I have to look
at the sequence numbers, I have to look at the cookies, in order to dispatch this
sucker, to where it's going. What if I say packets have a name on the
front and all of that information just gets collected to the name.
And at any point in the network you look at as much of that name as you need to
look at to do your job. If just the front part will work, because
all you're doing is gross level stirring, just look at the front.
If you need to look at more of it, it, we don't have layers, what we have is a
center-structured information. There's, we know that we're going to be
looking at different parts of it for different reasons, so we put topologically
sensitive information like Amazon.com, stick that at the front cause you can use
that to make scalable writing tables. But when it gets there, we don't want to
say there's a transport protocol and, you know, various layers.
Just say, yeah, there's a job that I'm doing when I get to Amazon.com and it
requires me to look at this much. If you don't care where you're getting the
data, if all that matters to you is what the data is, not where it comes from.
Then all of this memory that has to be in the network as buffering in order to, to
manage the multiplexion of the network. Suddenly that becomes a viable source of
data. You know, the way it happens today is
you're watching a YouTube video, that means the bits leave some server at
YouTube. They go into the downstream gateway's
memory. They get pulled out of that memory, put
into a wire, go into the next hop gateway's memory, and they're going,
bouncing memory to memory through all these interconnecting wires till they get
to you. If the two of us are watching the same
video, then, the immediate upstream gateway gets one copy of the video going
to me, and another separate copy of exactly the same video going to you.
They both went through that gateway's memory.
It, because of this conversational extraction we're putting on because the
gateway doesn't know that we're consuming the same content, what it sees is two
different conversations. It can't look in its memory, and say, oh,
I've got that, I can give it to you. You have to fetch a new copy and you have
to fetch it all the way from YouTube. I mean, that's what giving us the abysmal
scaling is the, the, having the load scale like the popularity is strictly a function
of, the data can only originate at one place.
And if you just cared about the data, just start going towards that place.
And as soon as you run into the data, okay, now you've got a copy, you're done
with your distribution. [music]