18 comments

[ 3.3 ms ] story [ 52.1 ms ] thread
Awesome dumbed-down explanation and visualization!
That Skype uses supernodes is interesting, but makes some sense since it was developed by the same people who developed Kazaa (a P2P filesharing service), which as I recall has a similar architecture.
In other words, supernodes are nodes connected behind a routable IP with a minimum of bandwidth. They are used to provide NAT traversal for unroutable clients.

I can imagine ipv6 would greatly benefit Skype.

It's not just to solve the NAT problem. There are no servers in the traditional sense, it's a "cloud" of peer-to-peer clients (that are also, strictly speaking, servers), and you need some way of "bootstrapping" yourself into that cloud when you sign in. Supernodes fix this problem easily, but I have to wonder why it was a relatively short list hardcoded into the client... it wouldn't be hard to make it a bit more adaptable.
Perhaps the problem is that it was, in fact, adaptable, meaning that if all the supernodes your client knows about go down you're no longer able to bootstrap.

In fact, I found I was able to reconnect faster after the outage by deleting the shared.xml file that stores known supernodes - presumably connecting back to Skype-operated bootstrap servers.

My theory: Tons of supernodes (static ip with no NAT, broadband, constantly on) are in the 20s-30s age group and are on holiday. Plus office and university machines that are normally left on have been turned off. The people I know in universities across Europe normally have skype on at work constantly, or at least during the day, and most have static ips on their uni networks so I imagine they get selected as supernodes quite often. I know many uni network admins have complained about skype using bandwidth. All those people just went on holiday over the last week or so along with all the people in uni dormitories. I'd expect that would have lost Skype thousands upon thousands of supernodes. Add to that an increase in calls due to the approach of Christmas; calls that are personal and use video and audio rather than just audio (which is more common in business usage patterns during the rest of the year). Holiday gamers turning off skype to stop lag would factor as well (doesn't matter if it's true or not, gamers blame everything but themselves during losses and would no doubt turn off skype). So a 20% or more drop in supernodes, 20% or more increase in calls and bandwidth, plus holiday torrents/youtube/hulu on the remaining nodes slowing them down and you have the perfect situation for this.
That could very well be the case, but if that were really the cause you'd expect to see this pattern every year. However, it apparently didn't happen for at least two years in a row[1]. Also, I would have expected Skype engineers to have wised up to the situation by now if it were really a seasonal thing.

[1] Since the last outage was 3 years ago. I can't find a source for that right now -- would be interesting to see if the outage was also around Christmas time.

It could be that growth in Skype usage/userbase has reached a point where this sort of outage is more likely to occur as a result of slight fluctuations in supernode availability.
As they mention on their blog, they botched a significant percentage of their supernodes because of a faulty update they pushed to these clients.

If it was just a side-effect of holiday season, it should happen every year. Also it's likely something like this would maybe cause deterioration of service but not complete disruption for almost the entire user base.

That is basically why it's free to use Skype. It's free as many of their infrastructure is provided by users.
OT, is there an equivalent semi-technical analysis of the Tumblr outage? I've been searching through their status blog and all I can find is “we accidentally brought the db cluster down.” Does anyone know how this happened?
Is it just me, or does the Skype setup sound an awful lot like Gnutella and it's Ultrapeers back in the day?
It not just you. Skype was founded by the people that also founded KaZaA and they (obviously) took the technology/knowledge they already had, modified it and applied to a different purpose.
I was wondering if Skype couldn't benefit from a product that is essentially a limited, local supernode.

In my job we try to use Skype video-calls, but the quality is very flaky, which I think is because we rely on someone else relaying us (since both ends are NAT'ed and likely also firewalled). Individually port-forwarding for everybody is unfeasible, but running a single service on a server, and telling everyone to use that as their super-node/proxy would be fine.

Today's? Like it used work perfectly otherwise? Huh!