Kod för miljarder

Y2K. Inför millennieskiftet var man orolig för millenniebuggen och mycket arbete lades på att försöka lösa den. Ett annat problem som dök upp i internets ungdom var hur man skulle lösa problemet med den ökade trafiken och hur det skulle hanteras smidigt. Det var när forskarna Gunnar Karlsson och Stefan Nilsson träffades på Tekniska högskolan i Helsingfors 1997 som arbetet med den kod som senare skulle hamna i var mans mobil påbörjades. Koden de skrivit används i samtliga Linuxbaserade (t ex Android) mobiler och datorer som säljs idag. Vilket är omkring 1 – 2 miljarder mobiltelefoner. Vi fick oss en pratstund med Gunnar Karlsson som numera finns på Kungliga Tekniska Högskolan (KTH). Han berättar dels om den algoritm som kommit att bli en del av Linux och ett spännande projekt som de nu håller på med.

Det här är en gammal kod som hängt med ett tag?

Ja, fast den har uppdaterats på vägen. Men forskningsarbetet är femton år. Till och med lite över det . Det var färdigt kring millennieskiftet. Några år senare så tog kollegorna Robert Olsson, Jens Låås och Hans Liss upp det här och implementerade det i Linux. Så det är egentligen deras bidrag som är det stora i det hela. Forskningsbidrag publiceras som bulkvara, även om mycket är bra så kommer det inte till någon användning. Det var för vår del väldigt lyckosamt att de fångade
upp vår lösning. Först blev den en valbar möjlighet i Linux. Det fanns en standard kod för att slå upp IP-adresser. Sen har den kod som Robert, Jens och Hans skrivit blivit den nya standardkoden. Då erfarenheterna visade att den var så mycket bättre än den ursprungliga koden. Det är ett kollektivt arbete och några provade vår lösning och så växte det fram ur deras erfarenheter att den fungerade mycket bättre och då bytte man ut den mot den gamla koden. Sedan är Android en variant av Linux. Då det bygger väldigt mycket på Linux så blev det naturligt att ta med sig en fungerande lösning. Så utan att Stefan och jag har bidragit så mycket mer än med att ha gjort det ursprungliga jobbet så har vi hamnat i ¾ delar av alla mobiler som säljs i världen.

Så egentligen borde det vara ni som är på bild istället för den gröna Android gubben?

Ha, ha. Nej, man får vara glad med det man lyckats med.

Foto: Peter Larsson.

Detta är så kallad open source?

Ja, det var ett val som Stefan och jag gjorde som blev lyckosamt. Det var ett otroligt stort intresse för frågan hur man hanterade IP adresser i växlarna på internet. Då internet började växa rejält fick man problem med att hantera alla datapaket som skickas. Från varje enskilt paket måste man ta ut adressen och sen slå upp den i en tabell, om man uttrycker det enkelt, och sen veta vart paketet ska sändas. T ex ska detta paket till Sverige då ska den gå via utgång två, nästa paket ska mot Asien så det ska gå via utgång sjutton. Och detta sker för varje paket, så när då volymen ökar, trafiken blir snabbare så måste uppslagningen ske snabbare och snabbare. Vad som även hände när internet växte var att de här tabellerna blev större och större. Man blev rädd att man inte skulle kunna hantera dem. Då var det ett praktiskt område att försöka hitta lösningar inom. Många försökte patentera sina lösningar och en del lyckades patentera sina lösningar, men vi valde att släppa allting helt öppet, inga licenser eller någonting. Det är en förutsättning för att kunna gå in i Linux som i sig är open source. Vi hade inget intresse kring att göra något kommersiellt ändå. Jag tror det skedde något forskningsarbete under den där tiden som jämförde olika lösningar. Och när de jämförde de olika lösningarna visade sig vår lösning vara den bästa gentemot de patenterade. Och vår lösning lever kvar vilket den inte hade gjort om den inte presterat.

Det är intressant med tanke på att det är så snabb utveckling inom IT / teknik.

Ja den hänger ju med då det är en mjukvarulösning. Jag kan tänka mig att själva implementeringen av den har förändrats så den kan dra fördel av olika minnesstrukturer som kan finnas i de olika enheter som används. Då man gör viss hårdvarunära programmering för att utnyttja hårdvaran optimalt. Men som algoritm så är det nog samma …

Vad får man ut av att göra något open source? Det blir ju inga pengar.

Både jag och Stefan är på KTH, så vårat belöningssystem är att vi kan visa att vår forskning kommer till användning. Vi bygger upp ett renommé. Jag kan tänka mig att de som jobbar i Linux gör det arbetet för sin arbetsgivare. Det är faktiskt många företag som bidrar till Linux och använder systemet. Det är ett ekosystem. Man bygger även då upp ett renommé, fast i den kommersiella världen, man får ett erkännande vilket kanske går att omsätta i pengar. Om man jobbar som mjukvaruutvecklare relativt självständigt så kan man använda den typen av resultat och säga att man är duktig på det här och sen tar man kommersiella uppdrag. Kanske kan få bättre uppdrag och bättre villkor då man har bättre trovärdighet. Men det är en annan värld än den jag befinner mig i. Det är inte de belöningar som när man bygger ett framgångsrikt företag naturligtvis. Man bygger inte upp ett värde på samma sätt. Och kanske delvis för att vi släppte vår kod öppen, så har det väl inte blivit någon som blivit jätterik på den här typen av arbeten. Vilket kan bero på att vi underminerat den marknaden.

Ni har slagit undan benen för dem som tagit patent på sina lösningar?

Precis.

I den här koden, finns det någon typ av signatur så man kan se vem som är kodens upphovsman?

Jag har aldrig jobbat i det på det sättet. Det skulle du prata med Robert och hans kollegor om. Men jag tror att det finns en spårbarhet i den som visar vem som är upphovsperson, till de bidrag som kommit in koden. Man måste kunna gå bakåt för att kunna se vad som lagts till, ifall det visar sig att något gått fel, då måste det gå att spåra. Man kan behöva gå ganska långt bak i tiden och då måste man ha hela den dokumentationen så man kan se vem som gjort vad. Inte för att nödvändigtvis peka ut nån skuld utan bara för att gå tillbaka och se vad som hände. Då är det viktigt att man kan få kontakt med den som jobbat med det. Det är nog relativt enkelt att få fram.

Värt att notera: Internet baseras idag på version fyra av internetprotokollet (IP). IPv4 innehåller en begränsning i antalet möjliga enheter som kan vara uppkopplade samtidigt. I IPv4 är den siffran drygt 4 miljarder tillgängliga adresser. När IPv6 - med sina 340 sextiljoner möjliga adresser - slår igenom på bred front så finns det stöd för KTH-forskarnas kod även i denna version.

Jobbar du med något liknande projekt nu?

Nu forskar jag om att få mobiltelefonerna att kommunicera direkt emellan varandra utan ett nät.

Något liknande det som man provat i Afrikas fattigare länder?

Det är en förutsättning då näten inte finns. I en del fall så har de telefoner och så finns det inte nät överallt. Om de till exempel åker från en by in till en marknad så kan de väl använda telefonen när de kommer in till staden , men hemma kanske det inte finns något nät. Då skulle man kunna använda den här direktkommunikationen för att sprida nån form av innehåll. Säg att nån får en väderprognos, med det här systemet som vi byggt skulle den då kunna spridas till alla. Vi har tittat mycket på spridning i mycket täta miljöer inledningsvis, stadsmiljöer. Modellen är den samma som spridningen av en epidemi. Har du nåt innehåll som många skulle vilja ha och så är man i tex Stockholm och varje gång som man går förbi nån så ”skakar telefonerna hand med varandra” och frågar har du något som jag är intresserad av? Det här är vad min användare är intresserad av. Finns det då något innehåll så får man det. Allt är öppna data, som broadcasting, sånt som ändå publiceras på webbsidor och liknande. Så det man själv har fått en gång det kan man också dela vidare. Mobilen delar allt som finns lagrat i den vidare. Det kan vara nyhetsuppdateringar, väder, uppdateringar om trafiksituationen, underhållning osv. En kanal med de mest sedda you tube klippen de sista 24 timmarna. Man lastar inte ner nätet genom att ladda ner samma videor. Man behöver inte veta vem man får det ifrån utan det enda man är intresserad av är att man får rätt innehåll. Söker jag upp senaste väderuppdateringen spelar det ju ingen roll vems telefon som levererar den. Bara jag vet att det är en auktoriserad väderrapport.

Så man vet vad man får..

Ja precis. Så där håller vi på att undersöka vilka användningsområden som det passar för. Vi har kommit ganska långt med själva forskningsdelen hur det ska fungera och hur det ska byggas. Så det är en kombination av dels teoretisk forskning och sen en tillämpad forskning i hur det ska byggas och lösas i själva telefonen.

Blir det nåt system typ NFC eller Bluetooth?

Vi använder wifi då vi får en bättre räckvidd. Nfc är väldigt begränsande så man behöver hålla mobilerna i stort sett mot varandra, det kräver en handling. Blåtand skulle fungera i princip, men där måste man aktivt godkänna när man kopplar sig till någon annan. Så valet föll på wifi. Där finns det en mode som heter ad hoc mode. Där kan man koppla ihop enheter utan att användaren behöver bekräfta det. Den är kopplad till den tjänsten, så det är inte så att man kopplar ihop sig och kommer åt allt som finns i den andra telefonen. Det man kommer åt är det som ändå är offentligt.

Det blir en egen kanal på den mobilen?

Ja, det är det ordet vi använder. Så då är väder en kanal, nyheter en eller flera kanaler kanske en per tidning. Vem som helst skulle kunna publicera en kanal. Finns det sen intresse för den och folk skulle prenumerera på den, då sprids den datan. Lägger man upp en kanal som ingen är intresserad av så sprids det inte. Då får man sitta där med sin kanal. Inget trycks aktivt ut i nätet utan allt sprids för att någon prenumererar på kanalen. Så mobilen efterfrågar data från den kanalen.

Kommer ni återigen slå undan benen på andra, i detta fall operatörerna?

Nej, nu är det ganska intressant för just som du säger vi har inte haft nåt intresse från operatörerna för den här idén under lång tid därför att detta ses som ett hot och de vill ha kontroll över alla sina användare. Det finns ingen affärsmodell. Nu har de problem att skala upp sina infrastrukturer med de trafikökningar som hela tiden sker. Så vad som händer nu är att det finns motsvarande arbetet som häller på att tas fram inom det som standardiserar mobiltelefonvärlden. Det finns en organisation som heter 3GPP, som är en industristandardorganisation. De håller på att standardisera just sån här kommunikation mellan mobiltelefoner. Inte direkt vår lösning, men en som är väldigt snarlik. De har haft ett öga på vad vi och våra kollegor jobbat med. Skillnaden är att i deras lösning så ska operatören kontrollera den här kopplingen. Om du och jag skulle passera varandra, vi har aldrig tidigare träffats, då skulle inte vårt datautbyte ske om operatörens system inte är inkopplat och meddelar våra två mobiler att de ska slå på radion för att kommunicera.

Så de sitter emellan skulle man kunna säga?

Ja, vilket jag inte tycker är så trevligt. En sak är att de genom sina master kan se vart jag befinner mig, men genom detta så kan de se precis vad jag prenumererar på, vilket innehåll jag söker efter. De kartlägger vårt användarmönster. Vilket jag tycker är olustigt. Vill de veta något om sina användare så är detta ytterligare en nivå i data om användarna. Vilket inte behövs då det fungerar utan operatör. Men det är de inte så intresserade av. Det är en lite intressant utveckling, vi får se vilken lösning som det blir. Vår eller deras.

För användaren är väl ert förslag det bättre då det andra låter lite storebror á la Orson Wells. Låter som man vill kunna förhindra en framtida Arabisk vår eller liknande.

Under den Arabiska våren skrevs det lite om vårt system för att det hade inte gått att stänga ner på Tahrirtorget. Vilket hände då man stängde ner internet. Men med lösningen som 3GPP håller på att ta fram går det att stänga ner.

Och sen kan du ur systemet plocka ut vilka de skyldiga var.

Ja precis.

Man skulle kunna sammanfatta det med att den kod som ni skrivit blev väldigt lyckad och nu kommer nästa våg av kod att svepa över jorden.

Om vi börjar med det här med IP koden är väldigt mycket Roberts, Jens och Hans förtjänst och de som skall ha all beröm för det de gjorde. Stefan och jag tog fram en lösning, men själva koden och implementeringen i Linux är deras förtjänst. Vi skulle bli jätteglada om vi fick ett liknande genomslag med det vi gör nu, men jag har ingen strategi för hur vi ska nå dit. Det är på sätt och vis en större sak. IP uppslagningen var en teknisk lösning i ett existerande kommunikationssystem, nu handlar det om ett nytt kommunikationsnät som är operatörsoberoende och nätoberoende. Det är större utmaningar att få genomslag för något sådant. Efter som det är en spridning mellan mobiler så innebär det att om vi inte får ett ganska stort genomslag på mobiltelefonerna så funkar inte vår lösning. Där har du ett uppslagsproblem, för när du har laddat ner koden i din mobil så har den ingen att kommunicera med. Så vi får se hur vi kan göra för att möjliggöra att man kan komma igång och fungera i något sammanhang trots att det inte är allmänt utbrett. Hitta vissa grupper, det kan vara några på ett företag där det finns tillräckligt många som träffas regelbundet, men inte en hel befolkning.

Svip.se tackar Gunnar Karlsson för att vi fått en intressant bild av vad som det bland annat forskas om på KTH.