Nimeäminen Distributed systems - principles & paradigms kirjan luku 5 Kari Systä
Sisältö Käsitteitä Nimi, tunniste ja osoite Nimeäminen Lattea nimeäminen Rakenteinen nimeäminen Esimerkki: Domain Name System (DNS) Attribuuttiperustainen nimeäminen
Nimi Nimi on (bitti-) merkkijono, joka viittaa resurssiin Ihmisystävällinen nimi on yleensä merkkijono www.cs.tut.fi /home/systa/face.jpg Teemu Teekkari
Tunniste Ohjelmat käyttävät tunnisteita (identifier) viittaamaan olioihin (esim. etäolioviite) 1. Viittaa enintään yhteen olioon 2. Olioon viittaa enintään yksi tunniste 3. Tunniste viittaa aina samaan olioon Jos voidaan antaa jollekin muulle resurssille, se ei ole tunniste Ville Virtanen ei ole tunniste Entä henkilötunnus????
Osoite (address) Resurssia käsitellään liityntäpisteen (access point) kautta Liityntäpisteen nimi on osoite Liityntäpiste voi siirtyä paikasta toiseen Resurssi voi tarjota useampia liityntäpisteitä Esim. kotiosoite, puhelinnumero ja email Nimeämisjärjestelmä ylläpitää nimi osoite sidontaa yksinkertaisimmillaan taulu (nimi, osoite)-pareja nimen etsintä on usein lähellä reitittämistä
Lattea nimeäminen (Flat Naming) Nimessä ei ole rakennetta Esim. hash arvo tai vapaamuotoinen tekstipätkä tunniste osoite -muunnos Broadcast ja multicast Kysy kaikilta/joukolta tunnistetta, paluuviesti palauttaa osoitteen Ehkä joskus riittävän tehokasta Forwarding pointers Kotiperustainen nimeäminen Hajautettu hajautustaulu
Forwarding pointers Resurssi jättää stubin poistuessaan luo vastaavan skeletonin saapuessaan
Forwarding pointers Vastaus-sanoma tulee oikopolkua
Forwarding pointers Tämän jälkeen pyynnöt oikaisevat
Kotiperustainen nimeäminen Kotipaikassa pidetään tieto resurssin paikasta Esim. mobiili-ip Jokaisella on kiinteä IP-osoite Kommunikaatio ohjataan kotiagentille Mobiililaitteen muuttaessa verkkoa, se pyytää care-of-osoitteen, joka rekisteröidään kotiagentille
Kotiperustainen nimeäminen
Rakenteinen nimeäminen Ihmisille sopii paremmin rakenteiset nimet Koostuvat osista /home/systa/face.jpg www.cs.tut.fi Nimeämisgraafi on abstraktio, johon nimeäminen perustuu Graafi antaa rakenteen nimille Haku on polun löytämistä graafista
Nimiavaruudet Nimet organisoidaan nimiavaruuksiksi (name spaces) Voidaan esittää suunnattuna graafina Lehtisolmu sisältää tyypillisesti tietoa edustamastaan oliosta (esim. osoite) Puusolmut ovat hakemistoja Graafin polut voidaan esittää jonona kaarien nimiä: N:<l 1, l 2,, l n > N on alkusolmu (n 0 ) ja l i on kaaren nimi
Esimerkki Nimiavaruudet
Nimiavaruudet Jos first(n) = n 0, niin nimi on absoluuttinen Jos first(n) n 0, niin nimi on suhteellinen Monet tiedostojärjestelmät toimivat kuten nimeämisgraafi Absoluuttinen: /home/steen/mbox Suhteellinen steen/mbox Yleensä nimeämisgraafi on directed acyclic graph ja siinä on vain yksi juuri
Aliakset Toista nimeä samaan solmuun kutsutaan aliakseksi Esim. N0:<home,steen,keys> ja N0:<keys> UNIX-terminologiassa kova linkki (hard link) Toinen vaihtoehto: symbolinen linkki
Aliakset Esimerkki symbolisesta linkistä
Se kova linkki oli
Nimen etsintä (Name resolution) Prosessia, jossa nimeämisgraafista etsitään tietoa kutsutaan nimen etsimiseksi (name resolution) Etsitään polkua N 0 :< l 1, l 2, l 3 > Aluksi etsitään solmun N 0 hakemistotaulusta solmu N 1, johon l 1 viittaa Seuraavaksi etsitään polkua N 1 :<l 2, l 3 > Sitten N 2 :< l 3 > Etsintä loppuu kun on löydetty solmu N 3
Esim.: UNIXin tiedostojärjestelmä UNIXissa puusolmut (hakemistosolmut) ovat tiedostohakemistoja ja lehtisolmut tiedostoja Nimeämisgraafi toteutetaan vierekkäisinä blokkeina loogiselta levyltä Superblokissa on tietoa koko tiedostojärjestelmästä Inodessa on tieto missä tiedostodatablokeissa tiedosto on fyysisesti Tiedostodata-blokissa on tiedostodataa
Sulkeumamenetelmä (closure mechanism) Ongelma mistä saadaan juurisolmu (alkukonteksti), josta nimen etsintä aloitetaan Esim.: /home/tta/arwen.jpg: UNIXin inode #0 $HOME/arwen.jpg www.tut.fi: paikallinen nimipalvelin 112: lähin puhelin
Mounting Nimiä voidaan etsiä myös useamman kuin yhden nimiavaruuden sisällä Hakemistosolmussa on tunniste hakemistosolmuun toisessa nimiavaruudesta Hakemistosolmua, jossa tunniste on sanotaan mount point:iksi Hakemistosolmua, johon tunniste viittaa sanotaan mounting point:ksi
Esim. nfs mounting Nimiavaruuden mountaamiseen tarvitaan Käsittelyprotokollan nimi Palvelimen nimi Mounting point:n nimi Esim.: Sunin Network File System nfs://flits.cs.vu.nl/home/steen Ongelma: kolme ratkaistavaa nimeä Ratkaisu nfs on yleisesti tunnettu cs.tut.fi etsitään DNS:n avulla /home/steen etsitään toisessa nimiavaruudessa
Nimiavaruuden toteuttaminen Isot nimiavaruudet jaetaan loogisiin tasoihin (logical layers) Global layer Sisältää ylimmän tason solmut Erittäin stabiili Administrational layer Koostuu hakemistosolmuista, joita hallinnoi yksi organisaatio tai organisaation osa Melko stabiili Managerial layer Sisältää esimerkiksi loppukäyttäjien hakemistoja ja tiedostoja Solmut muuttuvat säännöllisesti
Nimien etsinnän toteuttaminen Nimiavaruus jaetaan zoneihin, jotka ovat toisensa poissulkevia Zone on nimiavaruuden alue, jonka toteuttaa erillinen nimipalvelin Nimiavaruuden hajauttaminen monelle palvelimelle vaikuttaa myös nimien etsintään Oletuksia Ei replikoita Ei kätköjä Asiakkailla pääsy paikalliseen nimien etsijään (name resolver)
Nimien etsinnän toteuttaminen Etsitään nimi root:<fi,tut,cs,ftp,pub,src,bar.txt> eli ftp://ftp.cs.tut.fi/pub/src/bar.txt Asiakas tietää, että 5 ensimmäistä osaa haetaan DNS:stä ja loput ovat managerial tasolla
Iteratiivinen nimipalvelu Nimi- palvelu <fi, tut, cs, ftp> #<fi> <tut, cs, ftp> #<tut> <cs, ftp> #<cs> <ftp> #<ftp> Root fi tut cs <fi, tut, cs, ftp> #<fi, tut, cs, ftp>
Rekursiivinen nimipalvelu <fi, tut, cs, ftp> #<fi, tut, cs, ftp> Root <tut, cs, ftp> Nimi- palvelu #<tut, cs, ftp> fi <cs, ftp> #<cs, ftp> tut #<ftp> cs <ftp> <fi, tut, cs, ftp> #<fi, tut, cs, ftp>
Ratkaisujen vertailu Rekursiivinen ratkaisu asettaa kovat suorituskykyvaatimukset palvelimille Siksi globaaleissa palvelimissa vain iteratiivinen ratkaisu Rekursiivisessa tiedon tallettaminen kätköihin tehokkaampaa Rekursiivisessa kommunikointi-kustannukset joskus pienempiä Keskeisin optimointi: pidä vanhat kysely muistissa (cache)
Vaatimukset nimipalvelimille Eri tasoilla oleville nimipalvelimille asetetaan erilaisia vaatimuksia Globaali taso Saatavuus tärkeää Asiakkaiden on helppo muistaa(cache) tuloksia suorituskyky ei kriittinen Hallinnollinen taso Palvelimet toimivat organisaatioiden sisällä sisäinen saatavuus tärkeää Myös hallinnollisella tasolla asiakkaiden kätköt vähentävät suorituskyvyn tarvetta
Nimiavaruuden toteuttaminen Vaatimuksia nimipalvelimille Managerial taso Hetkelliset palvelun kaatumiset eivät ole kriittisiä Saatavuus ei niin tärkeää Käyttäjät olettavat operaatioiden tapahtuvan nopeasti suorituskyky erittäin tärkeää
Domain Name System Linkittää puhelinluettelo tavoin internetin kaksi nimiavaruutta (myös olemassa käänteispalvelu) Verkkotunnus <-> IP-osoitteiksi Merkkijonoesitys nimestä aloitetaan oikeanpuoleisimmasta nimen osasta root:<fi,tut,cs,keltatikka> keltatikka.cs.tut.fi. Nimen maksimipituus on 255 Alipuuta kutsutaan domain:ksi Polkua domainiin kutsutaan domainin nimeksi
DNS Jokaisessa zone:ssa on yleensä vähintään kaksi nimipalvelinta (authoritative name server) Primääri- ja sekundääripalvelin Päivitykset tehdään primääripalvelimeen Zone transfer: sekundääripalvelimet pyytävät primääripalvelimelta sisällön Kyselyt ja vastaukset UDP:nä
DNS Resurssitietueet Yksi solmu esittää nimiavaruudessa useampaa asiaa: Domain on nimiavaruuden alipuu, johon kuuluvat kaikki sen alla olevat domainit Zone on yksittäisen nimipalvelimen hallinnoima solmujoukko tut.fi ja cs.tut.fi kuuluu samaan domainiin, mutta ei zoneen Zonen osa voidaan delegoida toisen hallinnoitavaksi Solmujen sisältö muodostetaan resurssitiedostolla
DNS resurssitietueet Tyyppi Liittyy Kuvaus SOA Zone Tietoa zonesta A Host Tämän solmun edustaman host:n IP osoite MX SRV Domain Viittaa postipalvelim., joka hoitaa tämän noden postin Domain Viittaa tietyn palvelun palvelimeen NS Zone Viittaa nimipalvelimeen joka toteuttaa zonen CNAME Node Symlink primäärisellä nimellä edustettuun nodeen PTR Host Kuvaa IP-osoitteen hostin kanoniseksi nimeksi HINFO Host Tietoa hostista, jota solmu esittää TXT Any Mitä tahansa tärkeätä tietoa
Esim: ns.cs.tut.fi $TTL 3600 @ IN SOA ns.cs.tut.fi. hostmaster.cs.tut.fi. ( 2008022212 28800 7200 604800 3600) IN NS ns.cs.tut.fi. IN NS ns2.cs.tut.fi. IN NS ns-secondary.funet.fi. cs.tut.fi. 60 IN MX 1 mail.cs.tut.fi. cs.tut.fi. 60 IN MX 10 mx.cs.tut.fi. cs.tut.fi. 60 IN MX 20 mx2.cs.tut.fi.
news.cs.tut.fi. IN CNAME news.cc.tut.fi. irc.cs.tut.fi. IN CNAME irc.cc.tut.fi. modeemi.cs.tut.fi. IN NS ns.modeemi.cs.tut.fi. modeemi.cs.tut.fi. IN NS ns.cs.tut.fi. modeemi.cs.tut.fi. IN NS ressu.cc.tut.fi. ns.modeemi.cs.tut.fi. IN A 130.230.72.134 kaarne.cs.tut.fi. 60 IN A 130.230.4.31 kaarne.cs.tut.fi. 60 IN AAAA 2001:708:310:4::31 kaarne.cs.tut.fi. 60 IN A 130.230.4.32 kaarne.cs.tut.fi. 60 IN AAAA 2001:708:310:4::32
in-addr.arpa $TTL 3600 @ IN SOA ns.cs.tut.fi. hostmaster.cs.tut.fi. ( 2008022212 28800 7200 604800 3600) IN NS IN NS IN NS ns.cs.tut.fi. ns2.cs.tut.fi. ns-secondary.funet.fi. 0 IN PTR net-4.cs.tut.fi. 1 IN PTR default-gw-vlan4.cs.tut.fi. 2 IN PTR ns.cs.tut.fi. 3 IN PTR ns2.cs.tut.fi. 4 IN PTR amurinsorsa.cs.tut.fi. 99 IN PTR olutkyyhky.cs.tut.fi.
Esim: ns.cs.tut.fi % host -t MX cs.tut.fi cs.tut.fi mail is handled by 1 mail.cs.tut.fi. cs.tut.fi mail is handled by 10 mx.cs.tut.fi. cs.tut.fi mail is handled by 20 mx2.cs.tut.fi. % host 130.230.4.99 99.4.230.130.in-addr.arpa domain name pointer olutkyyhky.cs.tut.fi.
Address resolution 1. Juuripalvelimen osoite root hints tiedostosta (.) 2. Joltain juuripalvelimista haetaan autoritäärinen nimipalvelin top level domainille (org) 3. tieto seuraavasta nimipalvelimesta (wikipedia.org) 4. Jatketaan kunnes lopulta löydetään hostin osoite Yleensä jotain löytyisi jo cachesta
DNS (iteratiivinen nimipalvelu)
Juuripalvelimet DNS:ssä on loogisesti 13 juuripalvelinta UDP asettaa rajan Osa hajautettu anycast:n avulla Nimetty A-M: esim. f.root-servers.net
DNS Internet Corporation for Assigned Names and Numbers päättää ylimmän tason nimistä http://www.iana.org fi-domainia hallinnoi Viestintävirasto www.ficora.fi
DNS toimii hyvin, mutta vaihtoehtoja tutkitaan Esimerkkinä CoDoNS http://www.cs.cornell.edu/people/egs/beehive/codons.php Perustuu hajautettuihin hajautustauluihin (DHT) Skaalautuva Vikasietoinen Tehokas
Hajautettu hajautustaulu Esimerkkinä P2P-järjestelmä Chord Solmuilla m-bittinen satunnaisesti valittu ID Resurssi avaimella k on pienimmän solmun vastuulla, jolle id k (succ(k)) Hakuja varten sormitaulu (finger table) Enintään m riviä FT p [i] = succ(p+2 i-1 ) p.lookup(k) lähettää edelleen kyselyn q:lle, jolla q=ft p [j] k < FT p [j+1]
Chord Selvitetään avainta 26 vastaava solmu alkaen solmusta 1, ja avainta12 vastaava solmu alkaen solmusta 28
Attribuuttiperustainen nimeäminen Latteat ja rakenteiset nimet paikkatuntumattomia ja ihmiselle sopivia Joskus tarve tehdä hakuja ominaisuuksien perusteella Resurssit kuvataan joukolla (attribuutti, arvo) - pareja
Esimerkki: LDAP Lightweight Directory Access Protocol Tarkoitettu löytämään resursseja kuvaavien hakujen perusteella Organisaatiot voivat julkaista tietoja Voidaan käyttää myös kuten perinteistä nimipalvelua Monenlaisia hakuja Analogia valkoisiin ja keltaisiin sivuihin
LDAP (Samoin kuin DNS) LDAP-palvelimet muodostavat puuhierarkian (Toisin kuin DNS:ssä) solmuissa nimiin on sidottu paljon attribuutteja ja hakuja voidaan tehdä attribuutteihin perustuen Puuta kutsutaan nimellä Directory Information Tree (DIT) Koko järjestelmä on nimeltään Directory Information Base (DIB)
LDAP Kuvitteellinen esim. hakemistoentrystä dn: uid=fsmith, ou=employees, objectclass: person uid: fsmith telephonenumber: 510-555-1234 roomnumber: 122G mailroutingaddress:fsmith@foobar.com mailhost: mail.foobar.com Osoite /ou=employees/uid=fsmith/
Etsintä LDAP Esimerkki hausta: answer = search( &(objectclass=person)(mailhost= mail.foobar.com) ) Meillä käytetään esim. (Windowspuolen) käyttäjähallintaan ja tulostintenjakoon.
Yhteenveto nimeämisestä Kolmen tyyppisiä nimiä: Osoite (address) Tunniste (identifier) Ihmisen luettava Litteä nimiavaruus hankala hajautetuissa järjestelmissä broadcasting, forward pointers, home Strukturoidut nimet Attribuuttipohjaiset nimet