Den populære internettelefonitjenesten Skype brøt sammen 22. desember, og var helt utilgjengelig i 24 timer før den gradvis ble gjenopprettet.
Da toppsjef Tony Bates forklarte seg i en video lagt ut lille julaften, lovte han en detaljert forklaring i løpet av romjula. Denne ble lagt ut i går kveld, i et blogginnlegg fra IT-sjef Lars Rabbe.
I motsetning til systemer der klientene utelukkende henter tjenester og servere sørger for ruting, adressekatalog og så videre, er Skype bygget opp etter et prinsipp kjent som «peer to peer», ofte forkortet til P2P.
Det innebærer at nodene ikke er enten bare klient eller bare server, men at typiske serveroppgaver fordeles på alle klientene. Klientene formidler ikke bare tale, tekstmeldinger og video, de deltar i ruting og prosessering, og de bidrar også med båndbredde.
Fordelen med dette er at man slipper å bygge ut sentrale ressurser i takt med økningen i antall brukere. Hver ny node bidrar med både prosessorkraft og båndbredde. Det er den vesentlige forklaringen på at Skype er så rimelig i drift: Hver for seg er klientene telefoner, men til sammen utgjør de både et globalt nettverk og et distribuert sentralbord.
Dette bildet er selvsagt forenklet. Det finnes noen sentrale servere også i Skype, fordi noen funksjoner ikke kan distribueres.
Skypes IT-sjef forklarer at hendelsesrekken som førte til havariet 22. desember ble utløst nettopp i noen av serverne, nærmere bestemt en serverklynge med et mellomlager for lynmeldinger adressert til mottakere som i øyeblikket ikke er pålogget.
Disse serverne ble overbelastet. Det førte til ytterligere forsinkelser overfor noen klienter. I Windows-pc-er med en bestemt utgave av versjon 5.0 av Skype-klienten, var det en programvarefeil som gjorde at denne forsinkelsen ikke ble håndtert på riktig vis. 50 prosent av alle Skype-brukere verden over hadde klienten med denne feilen, det vil si versjon 5.0.0.152. Anslagsvis krasjet 40 prosent av alle klientene med versjon 5.0.0.152.
Dermed var 20 prosent av alle Skype-klienter ute av drift. Det som ble kritisk for nettverket, var at 25 til 30 prosent av de såkalte «supernodene» plutselig krasjet omtrent i samme øyeblikk. En supernode er en Skype-klient som er utenfor en brannmur og som ikke får en IP-adresse fra en NAT-enhet, slik at den kan påta seg flere rutingoppgaver og fordele prosesseringsoppgaver på vanlige noder. Supernodene er kjernen i Skypes distribuerte telefonsentral. En supernode har typisk ansvar for flere hundre vanlige pc-er.
IT-sjef Rabbe forklarer at det tar en viss tid etter omstart før en supernode er fullt ut operativ igjen. Rett etter det øyeblikket da hver femte Skype klient hadde krasjet, og prøvde å komme seg på nettet igjen, var de operative supernodene utsatt for en enorm overbelastning, anslagsvis 100 ganger større enn normalt i den mest travle tiden i Skype-nettverket. Overbelastningen førte til at enda flere supernoder krasjet, som igjen førte til større overbelastning på de gjenværende. Etter kort tid var det ingen supernoder igjen, og nettverket lå dødt.
For å gjenopplive nettverket opprettet Skype først hundrevis, deretter tusenvis, av nye og dedikerte supernoder sentralt, med ytelse langt utover en vanlig supernode.
Disse ble døpt «megasupernoder». Oppgaven var midlertidig å tilby tilstrekkelig med supernodekraft for at de vanlige nodene og supernodene kunne komme på lufta igjen og ta på seg sine normale oppgaver. Skype-tjenesten kom i tilnærmet normal drift i løpet av lille julaften, og i løpet av julaften var det mulig å legge ned en stor del av megasupernodene.
Rabbe lover at Skype nå vil gå gjennom programvaren, oppdateringsordningen og programvaretestingen for å etablere bedre løsninger og bedre rutiner.
Han sier det ikke, men man kan også vente en forbedring av sentrale rutiner, for eksempel slik at megasupernoder kan legges ut i forkant av en mulig totalkrasj.
Les også:
- [27.12.2010] Venter spent på forklaring fra Skype