expensive bandwidth for this really cheap—and getting
cheaper—disk storage by pulling this stuff off the disk.
So, the first part is there are lots of opportunities for
carriers to have storage somehow be part of the communication model, and if you go to this “exchange-named
content” view of the world, bits in a wire, bits on a disk,
and bits in a memory are indistinguishable; they’re all
just storage. You get them all the same way: you give a
name, you get back bits, and carriers can leverage that.
The second part is, because in the current conversational model the network is blind to the bits, we take
this richly connected fabric of the world with multiple
links going everywhere and put a spanning tree on it, so
“For content networking, a guy on
a bicycle with a phone in his pocket
is a networking element. He’s
doing a great job of moving bits.”
—Van Jacobson
between any source and destination, there’s exactly one
path. We have to do that because we have to prevent
loops, and we can’t prevent loops at the content level
because we don’t see the content. But this is a global
ordering on the network. It says no matter how rich your
connectivity is, there’s only one way to get to a particular source, and if some party in that one way decides to
play games with you—if they decide not to carry your
bits—then you’re hosed. It’s now a black hole: you can’t
get there; they can’t get to you.
If you go to a content model, you completely stop caring about loops because when a piece of content shows
up, you say, “Do I already have that? OK, duplicate, toss
it.” That means you can take this nice, rich network
graph and use the whole thing, from anywhere.
CP The caching gives you a suppression mechanism that
lets you actually deal with the fact that, if there’s a loop,
it’s going to go away.
VJ Right.
CP Because you’re using the LRU instead of the MRU, it
creates an interesting model of how you would attack it.
An attack would involve a really complex hammering of a
cache whose size you probably don’t know.
VJ And you don’t know its replacement policy. Typi-
cally when you design these things, you put in enough
randomness so that adjacent nodes keep different things.
Even if you can hammer one guy, the guy upstream, or
immediately downstream, has a different policy and has
still got it, so it’s a local repair action. You make a robust
fabric where bad actors can have very little effect because
it’s possible from the end nodes to route around them.
Our first application was doing voice-over CCN. We
did IP telephony but over CCN rather than IP. We basically took the linphone client, whacked out the UDP
stack, and replaced it with our CCN stack. The little
laptops that we first ran it on had Ethernet, 802.11, and
Bluetooth interfaces. If you’re doing voice-over IP, the call
is bound to a particular interface address, so it starts up
and you bind it to the Ethernet. If you unplug the Ethernet, you’ve hung up the call.
In CCN, the call is bound to the user who’s making
the call. It’s bound to a name, and we made our names
include the user identity, so when you’re trying to make
a call, you broadcast out to all your interfaces, “Does the
identity of the party that I’m trying to call exist? Is there
a CCN phone that handles this identity?”
You spread your traffic over all the ways that you have
to communicate. In the initial implementation the callee
replied to those three. You take the first reply and say,
“OK, I can talk to him and, since this reply got to me
first, the interface it arrived on is the fastest way to talk
to him.” With all three interfaces, it would start on the
Ethernet, adaptively figuring out what worked best.
If you unplugged the Ethernet, it would detect the link
loss and go back to broadcasting, “OK, I want the next
packet of the call,” to the remaining two interfaces, then
unicast to the interface that answered first. If you turned
off the access points so it couldn’t get Wi-Fi connectivity,
it would move over to the Bluetooth.
If you plugged the Ethernet back in, it would go back
to the Ethernet—it would just adapt to whatever it had.
Bluetooth has no IP address, so it was just using the
link-level broadcast for the rendezvous there because at
the CCN level, you don’t care; it’s whatever works. That
applies to your getting any kind of content. Your phone
has got something like nine radios in it.
CP Yes, it’s terrible. I give a flaming talk about the state
of wireless in which I have four chipsets, all of which are
operating in the same band and each of which has its
own antenna—and they’re all in my phone.
VJ They all have different ways of communicating, different cost profiles, and different distance profiles. In CCN
the waist of our layering is these little chunks of content,
so right above that waist is the thing that secures the