RINA

RINA (lyhenne sanoista Recursive InterNetwork Architecture eli rekursiivinen internet-arkkitehtuuri) on kehitteillä oleva uusi tietoverkkojen arkkitehtuuri. Se on radikaalisti erilainen kuin Internetin tiedonsiirrossa nykyisin käytettävä TCP/IP-arkkitehtuuri. RINA pohjautuu ajatusmalliin, että kaikki tiedonsiirto tietoverkoissa on pohjimmiltaan ohjelmaprosessien välistä kommunikaatiota ("Inter-Process Communication", IPC).
Perinteisestä, eri tehtäviin erikoistuneisiin kerroksiin (siirtokerros, verkkokerros, kuljetuskerros jne.) pohjautuvasta verkkomallista poiketen RINA lähtee ajatuksesta, että tarvitaan vain yksi toiminnallinen kerros, joka sisältää kaikki verkossa tarvittavat protokollat. Tätä yhtä "rakennuspalikkaa", josta käytetään nimitystä DIF ("Distributed IPC Facility"), päällekkäin pinoamalla rakennetaan verkkoon niin monta kerrosta, kuin ylläpidollisesti katsotaan tarpeelliseksi. Kaikki kerrokset sisältävät periaatteessa saman toiminnallisuuden, vain niiden näkyvyysalue (scope) on erilainen. Alimpana oleva kerros voi hoitaa esimerkiksi kahden reitittimen välistä fyysistä linkkiä, kun taas ylin kerros voi olla vaikka maailmanlaajuinen ("Public Internet DIF"). Kutakin kerrosta voidaan säätää erikseen erilaisten käytäntöjen (policy) avulla. Käytännöillä säädellään esimerkiksi käytettävää tiedon salausta, laatuasetuksia (QoS) ja kerroksen käyttöön vaadittavaa autentikointia.
Historia ja motivaatio.
RINA-arkkitehtuurin idean kehitti alun perin Bostonin yliopistolla työskentelevä John Day, joka on toiminut tietoliikenneprotokollien kehityksessä 1970-luvulta lähtien ja oli mukana muun muassa ARPANETin ja OSI-viitemallin kehitystyössä. Dayn mukaan tarve täysin uudelle verkkoarkkitehtuurille johtuu TCP/IP-arkkitehtuurin perustavanlaatuisista vioista ja puutteista, joiden korjaaminen lisäominaisuuksien ja uusien protokollien avulla on vaikeaa tai jopa mahdotonta. Näitä ovat esimerkiksi:
Alun perin 1970-luvulla kehitettyä TCP/IP-arkkitehtuuria on kuluneiden vuosikymmenten aikana paranneltu ja korjailtu eri tavoin, kehittämällä uusia protokollia ja uudistamalla vanhoja sen verran kuin on ollut mahdollista. Se käsittää nykyään useita kymmeniä protokollia (vaikka sovelluskerroksen protokollia ei lasketa mukaan), joista kaikki eivät asetu kunnolla mihinkään tiettyyn TCP/IP-mallin kerrokseen (kuten esim. ARP tai MPLS). Täysin "puhtaalta pöydältä" kehitetty RINA taas lupaa suoriutua kaikista nykyisen TCP/IP-arkkitehtuurin tehtävistä, sekä myös tulevaisuuden tarpeista, käyttäen ainoastaan kahta protokollaa.
Käsitteitä.
Seuraavassa esitellään joitakin RINA-arkkitehtuurin keskeisiä käsitteitä.
Toimintaperiaate.
RINA pohjautuu periaatteeseen, että kaikki tietokoneiden tiedonsiirto on pohjimmiltaan aina ohjelmaprosessien välistä kommunikointia. Tämän IPC-mallin perusrakenne on hajautettu ohjelmapalvelu ("Distributed Application Facility" eli DAF), jonka rakenne esitetään kuvassa 1. Se koostuu kahdesta tai useammasta ohjelmaprosessista ("Distributed Application Process", DAP) jotka yhteistyössä suorittavat jotakin tehtävää. Nämä prosessit kommunikoivat käyttäen sovellusprotokollaa ("Common Distributed Application Protocol", CDAP), joka mahdollistaa kahden prosessin vaihtaa keskenään rakenteellista tietoa olioiden muodossa. CDAP tarjoaa prosesseille kuusi eri toimintoa etäprosessin olioiden käsittelemiseen (create, delete, read, write, start ja stop).
Voidakseen kommunikoida, DAF tarvitsee alleen kommunikaatiopalvelua tarjoavan ohjelmiston. Tämän palvelun tarjoaa toinen DAF, joka on erikoistunut IPC-palvelujen tarjoamiseen; siksi tätä erikoistunutta DAFiä kutsutaan nimellä DIF ("Distributed IPC Facility", hajautettu IPC-palvelu). DIFin avulla DAP voi avata tietovirran (flow) toiseen DAPiin.
DIF voi kommunikoida suoraan laitteiston kautta, tai se voi käyttää siirtotienä toista, alemman tason DIFiä. Koska jokainen DIF sisältää saman toiminnallisuuden, ei arkkitehtuuri sanele sitä, montako kerrosta verkossa on. Kerrosten määrän valitsee verkon rakentaja, joka voi pinota päällekkäin niin monta kerrosta kuin tarvitsee. Tästä saman kerroksen käyttämisestä useampaan kertaan johtuu termi "rekursiivinen arkkitehtuuri". Alimman kerroksen DIFit kommunikoivat suoraan fyysisen laitteiston kautta, kaikki niiden yläpuolella olevat kerrokset käyttävät siirtotienä allaan olevia DIFejä. Yksi mahdollinen esimerkki RINA-verkon kerrosrakenteesta esitetään kuvassa 2, jossa näkyvät myös IPC-prosessin eri toiminnallisuudet.
Koska jokainen kerros liittyy ylä- ja alapuolellaan oleviin kerroksiin identtisten rajapintojen kautta, ei minkään kerroksen tarvitse olla tietoinen verkon koko rakenteesta. Yksi kerros näkee vain suoraan ylä- ja alapuolellaan olevat kerrokset. RINA-arkkitehtuurissa käytetään kolmenlaisia osoitteita: sovellusnimiä (Application Name), solmuosoitteita (Node Address) ja liityntäosoitteita (Point of Attachment Address). Kukin kerros osoittaa yläpuolellaan olevaa kerrosta sovellusnimellä, toisia saman kerroksen jäseniä solmuosoitteella ja alapuolella olevaa kerrosta liityntäosoitteella. Tietylle kerrokselle sen yläpuolella oleva kerros on siis aina sovellus, riippumatta siitä onko kyseessä käyttäjäsovellus vai toinen DIF. Alapuolella oleva kerros taas on aina liityntäpiste verkkoon, oli kyseessä sitten fyysinen liityntä tai alemman kerroksen DIF.
Käyttäjäsovelluksen pyytäessä tietovirtaa toiseen sovellukseen, kohde valitaan käyttämällä halutun kohdeprosessin sovellusnimeä, ei osoitetta kuten TCP/IP-verkossa. Osoitteet ja portit ovat DIFin sisäistä tietoa, jotka eivät näy sovellusohjelmalle. Uuden IPC-prosessin liittyessä DIFin jäseneksi, sille allokoidaan yleensä dynaaminen osoite. Myös staattisten osoitteiden käyttäminen on mahdollista, mutta se ei ole välttämätöntä edes palvelinkoneiden kohdalla. Portit puolestaan allokoidaan dynaamisesti tietovirran alustuksen yhteydessä. RINA-arkkitehtuurissa ei siis ole globaaleja osoitteita, eikä niin kutsuttuja "hyvin tunnettuja portteja". Ainoa tarvittava tieto yhteyden saamiseen on sovellusnimi, eikä senkään tarvitse olla globaali. Sovellusnimi voidaan julkaista rajoitetulla näkyvyysalueella, jos sovellus ei ole tarkoitettu kaikkien verkon käyttäjien käyttöön.
Voidakseen kommunikoida keskenään, sovellusten on oltava liittyneenä samaan DIFiin. Tietovirran avaavan sovelluksen on joko liityttävä johonkin DIFiin jossa kohdesovellus on rekisteröityneenä, tai muodostettava uusi DIF johon kohdesovellus myös suostuu liittymään.
Hyötyjä.
RINA lupaa monia etuja verrattuna TCP/IP-arkkitehtuuriin. Näitä ovat muun muassa:
Käyttöönotto.
Vaikka RINA on hyvin erilainen arkkitehtuuri nykyisin käytettyyn TCP/IP-arkkitehtuuriin verrattuna, sen käyttöönotto voidaan suorittaa pala palalta vähän kerrallaan. Niin sanotut shim-DIFit tarjoavat mahdollisuuden olemassa olevien verkkotekniikoiden (esim. Ethernet, TCP, UDP, WiFi) käyttöön siirtotienä EFCP-liikenteelle. Näiden avulla RINA-verkkoja on mahdollista rakentaa jo ennen kuin RINA-tekniikkaa tukevia laitteita (kytkimiä, reitittimiä yms.) on saatavilla. Toisaalta myös muita verkkoprotokollia on mahdollista tunneloida RINA-verkon läpi. Lopullisessa muodossaan RINA voisi korvata kaikki muut verkkoprotokollat, eli koko protokollapinon linkkikerroksesta aina sovellusprotokolliin asti.
Kehitystyö.
RINA-arkkitehtuurin kehitys voidaan katsoa alkaneeksi vuonna 2008, jolloin julkaistussa kirjassaan "Patterns in Network Architecture: A return to Fundamentals" John Day esitti RINAn perusajatukset. Nykyään RINAn kehitystyötä koordinoi epävirallinen ryhmä nimeltä Pouzin Society (PSOC), joka on nimetty datagrammin keksijän ja CYCLADES-verkon kehittäjän Louis Pouzinin mukaan. 
Bostonin yliopiston RINA-kehitystiimi.
Bostonin yliopistolla RINA-arkkitehtuurin kehitystä johtavat John Dayn lisäksi professorit Ibrahim Matta ja Lou Chitkushev. Tiimi on saanut rahoitusta tutkimukseen Yhdysvaltain kansalliselta tiedesäätiöltä.
FP7 IRATI ja PRISTINE.
Euroopan komission Tutkimuksen puiteohjelma FP7 on rahoittanut IRATI-nimeä kantavaa projektia, jonka päätarkoitus oli kehittää avoimen lähdekoodin RINA-toteutus Ethernet-alustalle Linux-ympäristöön. Projektissa partnereina toimivat i2CAT Foundation, Nextworks, iMinds, Interoute ja Bostonin yliopisto.
IRATI-projektin jatko-ohjelmassa nimeltä PRISTINE on jatkokehitetty IRATI-projektin tuottamaa RINA-toteutusta. Tarkoituksena on ollut kehittää käytäntöjä mm. verkon tukkeutumisen estoon, resurssien varaukseen, reititykseen, tietoturvaan ja verkonhallintaan. Partnereina projektissa ovat toimineet WIT-TSSG, i2CAT, Telefónica I+D, Ericsson, Nextworks, Thales, Nexedi, BISDN, Atos, Juniper Networks, Oslon ja Brnon yliopistot, Telecom SudParis, CREATE-NET, iMinds sekä PNSol.
GÉANT3+ IRINA.
Yleiseurooppalainen kansallisten tutkimusverkkojen kattojärjestö GÉANT rahoitti IRINA-projektia, jossa tutkittiin RINA-arkkitehtuurin soveltuvuutta tutkimus- ja opetusverkkojen käyttöön. Projektin loppuraportin mukaan ainakin virtuaaliverkoissa RINA tarjoaa selkeästi paremman suorituskyvyn kuin TCP/IP.
UiO OCARINA.
Oslon yliopiston OCARINA-projektin tarkoituksena on optimoida RINA-arkkitehtuuria kehittämällä siihen uusia käytäntöjä tukkeutumisen estoon ja reititykseen. Reititystä on tarkoitus kehittää dynaamisempaan suuntaan, kun nykyisin Internetin reititys on hyvin staattista.
H2020 ARCFIRE.
Euroopan komission Horisontti 2020-ohjelman rahoittamassa ARCFIRE-projektissa RINA-arkkitehtuuria testataan suuremmassa mittakaavassa, ja optimoidaan IRATI-projektin RINA-toteutusta niin, että verkko-operaattorit voivat alkaa testata sitä omissa verkoissaan. Projektissa tutkitaan myös mm. miten hyvin RINA-verkko kestää erilaisia palvelunestohyökkäyksiä nykyisin käytössä oleviin tekniikoihin verrattuna.
Toteutukset.
RINA-arkkitehtuurin toteutuksia on olemassa useita erilaisille alustoille. Näitä ovat ainakin:
Linkit yllä olevien toteutuksien lähdekoodeihin löytyvät Pouzin Societyn www-sivuilta.