So even if you're too young to have used Napster,
I'm pretty sure that most of you know and use Skype,
a Voice Over IP and instant messaging service. Many of
you, however, probably don't know how Skype works. To understand that,
let's have a look at Skype's architecture, which I'm sketching
here, and which is a peer-to-peer architecture with a small twist.
So first of all, by looking at the architecture we can
see that whereas Napster was a client-server system with an element
of peer-to-peer, Skype is a much more decentralized system. Why
is that? Well, if we look here, we can see
that there is a login server -- this node over
here -- and that means that every Skype user has to register
with this centralized service. But that's the only interaction of
this kind within Skype. After you log in, all you
get is a connection through a super node like this
one. So, what are super nodes? Super nodes are highly reliable
nodes with high bandwidth that are not behind a firewall
and that runs Skype regularly, which means that nodes that shut
down Skype occasionally will not qualify as super nodes. And one
interesting thing about super nodes is that they're not owned by
Skype. They're just regular nodes that get promoted by Skype to
super nodes, and that know about each other. So basically Skype
has an algorithm that looks at the nodes in the system
and decides whether a node can be a super node or
not based on its characteristics. So now that we've discussed
super nodes, let's see what will happen if peer two wanted
to communicate with peer three. So let's represent this by
creating a dashed line between peer two and peer three. In
this case, peer two will contact this super node, which
is super node A. And super node A, based on its
knowledge of the Skype network and the position of the super
nodes, will contact and route the communication through super node C,
which will in turn route the communication to peer three.
And in that way peer two and peer three will be
able to communicate with each other. And this will happen just
as if peer two and peer three were connected directly, as
peers, even though the communication goes through two super nodes. Another
thing that is important to know about the behavior of Skype
is that, if the link between super nodes A and C
were to go down. So let's assume that there is a
problem with this link, then Skype will automatically, or automagically
reroute the communication through super node B, which will in
turn reroute it super node C, which will again reroute
to peer three. So peer two and three will still
be connected, but this time they will be going through
three super nodes. And just in case you wondered, this
is exactly what happens when you are talking over Skype.
The quality of the communication degrades, and you are reconnected.
So there is this rerouting going on through different nodes. So
although this architecture is more effective than the Napster's one, it
is not without problems. For example, you might remember that a
few years ago, Skype went down for about 36 hours. And
later on it was discovered that the cause was the algorithm
used by Skype to determine which nodes could be super nodes.
And remember, as I said, that one requirement for these nodes
is that have to up all the time. So what happened
is most of the super nodes were running on Windows machines,
and Microsoft pushed a critical patch that required a reboot to
be installed. So a large number of machines, and therefore a
large number of super nodes were down roughly at the same
time throughout the globe. And Skype's algorithm for determining super nodes
didn't have enough nodes to work with. So the whole system
crashed and burned. So the message I want to give here,
is that when you have a large peer to peer distributed
system, such as this one, such as Skype,
these kind of perfect storms can happen. Because you
are not really in control. Because the control
is distributed. So the algorithms become more complex. So
to wrap up our Skype example, in case
you are interested, Skype then fixed the issue by
changing the algorithm for identifying super nodes. And
more recently actually, Skype ditched peer-to-peer super nodes altogether.