JXTA P2P arhitektura

 

Uvod

 

JXTA tehnologija je mrežna programska i računarska platforma koja je dizajnirana za rješavanje velikog broja problema u modernom distribuiranom računarstvu, pogotovo u području koje se naziva peer-to-peer komunikacija ili krače P2P.

 

Zašto Peer-To-Peer?

 

Općenito, internet ima tri važna svojstva: informacije, propustnost i računalna sredstva, od kojih su svi nedovoljno iskorišteni, djelomično zbog tradicionalnog klijent-server modela.

·      Kao prvo, niti jedna tražilica (search engine) ili portal ne može locirati i katologizirati stalno povečavajuču količinu informacija na webu u nekom razumnom vremenu. Pored toga, ogromna količina podataka ne može se dohvatiti trenutno korištenim metodama pretraživanja. Prema istraživanjima, na svijetu se proizvede oko 2x1018 byta informacija svake godine, ali se samo oko 3x1012 byta objavi. Drugim riječima, za svaki megabyte informacija samo se jedan byte objavi. Jedna od največih tražilica, Google, tvrdi da pretražuje samo oko 1.3x108 web stranica. Prema tome, traženje korisne informacije u realnom vremenu je sve teže.

 

·      Drugo, unatoč velikim količinama novih kablova koji se ugrađuju, nova propustnost ima malu korisnost od toga ako svi idu istovremeno na npr. Yahoo po neke sadržaje. Naprotiv, vruče točke postaju još toplije dok hladne linije ostaju hladne. To je razlog zašto korisnici još uvijek imaju osječaj zagušenosti na internetu dok se propustnost povečala za faktor 106 od 1975, udvostručujući svakih 16 mjeseci.

 

·      Treče, novi procesori i uređaji za pohranu podataka nastavljaju rušiti rekorde u brzini i kapacitetu, podupiruči sve snažnije konačne uređaje kroz cijelu mrežu. Međutim, obrada podataka se nastavlja akumulirati oko centara informacija, koja moraju povečati količinu posla u velikoj brzini, čime se povečava potreban prostor i potrošak energije.

 

Kako se ovaj seminar ne bavi općenito P2P-om, izraz peer-to-peer arhitektura će se odnosi na široki pojas tehnologije koja izrazito povečava iskoristivost informacija, propustnosti i računalnih sredstava na internetu. U večini slučajeva, te P2P tehnologije prihvačaju mrežno orjentirani model koji niti isključuje niti inherentno ovisi o centraliziranim kontrolnim točkama. Osim povečanja performansi u traženju informacija, njihovom dostavljanju i obradi, ovakav model može poboljšati i ukupnu pouzdanost računalnih sustava.

 

Projekt JXTA

 

Projekt JXTA je započet od strane Sun Microsistems i dizajniran je uz pomoć malog broja stručnjaka iz raznih akademskih institucija i industrije. Projekt ima nekoliko ciljeva koji su proizašli iz predviđanja budučnosti peer-to-peer sustava trenutno u razvoju.

 

·           Interoperabilnost: JXTA tehnologija je dizajnirana da bi omogučila interkonektiranim peer-ovima da se lako lociraju, međusobno komuniciraju, sudjeluju u zajedničkim aktivnostima i nesmetano pružaju usluge jedan drugome preko različitih P2P sustava i različitih zajednica.

Mnogi P2P sustavi su građeni za pružanje jedne vrste usluga. Na primjer, Napster omogučuje razmjenu muzike a Gnutella omogučuje razmjenu generičkih podataka. S obzirom na razlike ovih usluga i zbog nedostatka opće prihvačene P2P infrastrukture, svaki proizvođač P2P software-a stvara međusobno nekompatibilne sustave. To znači da svaki proizvođač stvara svoju P2P korisničku zajednicu. Da bi peer sudjelovao u različitim zajednicama organiziranim od drugih P2P implementacija, peer mora podržavati višestruke implementacije, od kojih je svaka za određeni P2P sustav.

 

·           Neovisnost platformi: JXTA tehnologija je dizajnirana da bude neovisna od programskih jezika (npr. C ili Java), sistemskih platformi (npr. Windows ili UNIX) i mrežnih platformi (npr. TCP/IP ili Bluetooth).

Mnogi P2P sustavi danas nude svoje usluge kroz niz API-a (Application Programming Interface) koji su dostavljeni na određenom operacijskom sustavu koristeči određeni mrežni protokol. Na primjer, jedan sustav može nuditi niz C++ API-a, sa sutavom koji inicijalno radi na Windows-ima preko TCP/IP protokola, dok drugi sustav nudi kombinaciju C i Java API-a koji rade na različitim UNIX sistemima preko TCP/IP  ali isto zahtjevajuči HTTP. P2P projektant je prema tome prisiljen birati koji niz API-a da koristi tj. prisiljen je odabrati koju grupu P2P kupaca želi privuči. Ako se žele ponuditi jednake usluge objema grupama, moraju se razviti jednake usluge za dvije platforme.

JXTA tehnologija je dizajnirana da bude prihvačena od svih razvojnih timova, neovisno o korištenom programskom jeziku, razvojnom okruženju ili sistemskoj platformi.

 

·           Sveprisutnost: JXTA tehnologija je dizajnirana na taj način da ju je moguče ugraditi u svaki digitalni uređaj uključujući senzore, potrošačku elektroniku, PDA-ove, mrežne routere, stolna računala, servere i uređaje za pohranjivanje podataka.

Mnogi P2P sustavi pretežno biraju Windows-e kao njihovu razvojnu platformu. Razlog za to je da se želi ciljati na najveću instaliranu bazu i najbrži put do zarade. Ovakav pristup je očigledno kratkovidan pošto P2P ne stoji za PC-To-PC. Najvjerojatnijje će se najveća raširenost P2P tehnologije javiti na dva kraja hardwear-skog spektra, veliki sustavi unutar kompanija i korisnički orijentirani mali sustavi.

 

Projekt JXTA ima viziju svijeta gdje svaki peer, neovisan o softwear-skoj ili hardwear-skoj platformi, može napredovati i profitirati samim time što je spojen sa milijunima drugih peer-ova.

 

JXTA tehnologija

 

JXTA tehnologija će uskoro postati "open source" tipa i biti će dalje razvijana od mnogih suradnika. Kao takva još uvijek se razvija.

Na početku razvoja analizirali su se različite P2P software-ske arhitekture i one su razlučene na slojnu strukturu prikazanu slikom.

 

 

P2P software se može u grubo podjeliti na tri sloja. Na dnu se nalazi središnji sloj koji se bavi uspostavom peer-ova i komunikacijskim upravljanjem kao na primjer routanjem. U sredini se nalazi uslužni sloj koji se bavi konceptima višeg ranga kao indeksiranje, traženje i izmjenom podataka. Na vrhu se nalazi sloj aplikacije kao što je e-mailanje i spremanje podataka. Neke osobine, kao što je sigurnost, nalaze se u sva tri sloja i svugdje unutar P2P sustava, iako u različitim oblicima ovisno o lokaciji u software-skoj arhitekturi.

JXTA tehnologija je dizajnirana da osigura sloj na vrhu na kojemu su građene usluge i aplikacije. Taj vršni sloj je napravljen da bude mali i tanak, ali da omogući aplikacijama i uslugama korištenje interesantnih i močnih primitiva.

 

Koncepti JXTA tehnologije

 

Najjednostavnije rečeno JXTA tehnologija je skup protokola. Svaki protokol je opisan jednom ili više poruka koje se razmjenjuju između korisnika protokola. Svaka poruka ima predefinirani oblik i može sadržavati različite podatke. U tom pogledu, postoji sličnost sa TCP/IP. Još jedna sličnost sa TCP/IP postoji što se tiče neovisnosti platformi. Međutim, JXTA tehnologija je neovisna o transportu i može koristiti TCP/IP kao i druge transportne standarde.

Trenutno su definirani slijedeći protokoli:

·           Peer Discovery Protocol

·           Peer Resolver Protocol

·           Peer Information Protocol

·           Randezvous Protocol

·           Pipe Binding Protocol

·           Endpoint Routing Protocol

 

Da bi se poduprijeli ovi protokoli, JXTA definira nekoliko pojmova uključujući peer, peer grupa, oglas (advertisement), poruka (message), kanal (pipe) i drugi. Slijedi kratko objašnjenje pojedinih izraza.

 

·           Identifikator: JXTA koristi UUID (Universal Unique IDentifier), 128-bitni podatak koji se odnosi na peer, oglas, uslugu itd. Relativno je jednostavno osigurati jedinstveni UUID unutar lokalnog okruženja, ali nemoguče je garantirati jedinstvenost kroz cijelu zajednicu koja se može sastojati od milijuna peerova. To nije veliki problem jer se UUID koristi kao unutarnji identifikator. On postaje važan nakon što je sigurno spojen sa drugim informacijama kao što su ime i mrežna adresa.

 

·           Oglas: Oglas je XML strukturirani dokument koji imenuje, opisuje i objavljuje postojanje sredstava kao što su peer, peer grupa, pipe ili usluga. JXTA tehnologija definira osnovni skup oglasa.

 

·           Peer: Peer je entitet koji "razgovara" protokolima koji su od njega traženi. Ovo je slično Internetu, gdje je Internet čvor entitet koji "razgovara" nizom IP protokola. Kao takav, peer može imati oblik procesora, procesa, uređaja ili korisnika. Peer ne mora razumjeti svih šest prije navedenih protokola.

 

·           Poruka: Poruka je dizajnirana na taj način da bi ju se moglo koristiti na vrhu asinhronog, nepouzdanog i jednosmjernog transporta. Prema tome, ima oblik datagrama koji sadrži paket i skup protokola. Paket sadrži zaglavlje, sadržaj poruke, polazište i odredište. Odredište je dano u obliku URI (Uniform Resource Identifier), na bilo kojem mrežnom transportu koji je sposoban slati i primati poruke u obliku datagrama.

 

·           Peer grupa: Peer grupa je virtualni entitet koji "razgovara" peer grupnim protokolima. Tipično, peer grupa je skup peerova koji omogučuju zajednički skup usluga. Specifikacija ne određuje kada, gdje ili zašto se stvaraju grupe, tip grupe ili članove grupe. JXTA ne odrđuje u koliko grupa se jedan peer može nalaziti, ali određuje kako se pronalaze peer grupe korištenjem Peer Discover Protocol-a.

Postoji i posebna grupa koja se naziva World Peer Group, koja sadrži sve JXTA peerove.

 

·           Pipes: Najjednostavnije rečeno to su asinhroni komunikacijski kanali za primanje i slanje poruka. Također su jednosmjerni, pa prema tome postoje ulazni i izlazni kanali. Takovi kanali su virtualni, pri čemu krajnja točka kanala može biti vezana sa jednim ili više peerova. Kanal je dinamički zauzet od strane peera preko Pipe Binding Protocol-a. To implicira da se kanal može kretati i zauzimati od različitih peerova u različitio vrijeme. To je korisno, na primjer, kada određeni broj peerova zajedno pružaju visoki prag tolerancije pogreške, gdje se srušeni peer zamjenjuje novim na drugoj lokaciji, pri čemu taj drugi uzima kanal da bi se omogučio nastavak komunikacije. "Point-to-point" kanal direktno spaja dva peera. "Propagate" kanal spaja više peerova zajedno, od jednog izlaznog do jednog ili više ulaznog kanala.

Kanali su osmišljeni da budu asinhroni, jednosmjerni i nepouzdani jer je to osnova svih oblika transporta.

 

Protokoli JXTA tehnologije

 

Projekt JXTA je inicijalno definirao šest protokola, ostavljajuči mogučnost razvitku dodatnih protokola nakon što postane open source tipa.

 

·           Peer Discovery Protocol: Ovaj protokol omogučava peer-u da pronalazi oglase drugih peer-ova, i može biti korišten za pronalazak peer-a, peer grupe ili oglasa. Ovaj protokol je default-ni pronalazeći protokol za sve peer grupe uključujući World Peer grupu. Razumljivo je da će netko htjeti razviti bolji protokol za pronalaženje koji će možda primjenjivati ovaj default-ni protokol, ali uključivanje ovog protokola znaći da će svi JXTA peerovi biti u mogučnosti međusobno se razumjeti na osnovnom nivou. Pronalaženje peera može se ostvariti sa ili bez specifikacije imena peera ili peer grupe kojoj peer pripada. Kada ime nije specificirano, svi oglasi se vračaju.

 

·           Peer Resolver Protocol: Ovaj protokol omogučava peeru slanje općih upita pri traženju peera, peer grupe, kanala i ostalih informacija. Tipično, ovaj protokol je implementiran samo od onih peerova koji pružaju napredne mogučnosti traženja.

 

·           Peer Information Protocol: Ovaj protokol omogučava peeru otkrivanje mogučnosti i statusa ostalih peerova. Na primjer, jedan peer može slati ping poruku da bi saznao dali je drugi peer "živ".

 

·           Randevous Protokol: Ovaj protokol omogučava peeru da raznosi poruku unutar područja peer grupe.

 

·           Pipe Binding Protocol: Ovaj protokol omogučava peeru povezivanje pipe oglasa sa krajnjom točkom pipa, čime se ukazuje kuda poruka stvarno ide kroz kanal.

 

·           Endpoint Routing Protocol: Ovaj protokol omogučava peeru postavljanje upita peer routeru za slobodne puteve za slanje poruka do odredišnog peera. Često, dva komunicirajuča peera nisu direktno spojena međusobno. Primjer ovakove veze su dva peera koja ne koriste isti mrežni transportni protokol ili peerovi odvojeni firewall-om. Peer routeri odgovaraju na upite šaljući liste gateway-a na putu do odredišta. Svaki peer može postati peer router implementirajuči ovaj protokol.

 

Sigurnost

 

Sigurnosni zahtjevi P2P sustava su jako slični zahtjevima većine računalnih sustava. Tri najvažnija zahtjeva su povjerljivost, integritet i korisnost. Ti zahtjevi se pretvaraju u funkcionalne zahtjeve koji uključuju izvornost, kontrolu pristupa, enkripciju, sigurnu komunikaciju, itd.

Takovi zahtjevi su obično zadovoljeni prikladnim sigurnosnim modelom, koji se obićno izražava u obliku subjekata, objekata i akcija koje subjekti mogu izvoditi nad objektima. Na primjer, UNIX operativni sustav ima jednostavan sigurnosni model. Korisnici su subjekti. Datoteke su objekti. Dali subjekt može čitati, pisati ili izvršavati objekt ovisi o tome dali subjekt ima dozvolu koja je specificirana od strane objekta. Međutim, na nižim razinama unutar sutava, sigurnosni model je izražen integerima u obliku UID, GID i moda dopustivosti. Ovdje, nižerazinski mehanizmi ne razumiju koncept korisnika i nisu uključeni u načine provjere izvornosti korisnika.

Pošto je JXTA organizirana na konceptu peerova i peer grupa, može se predvidjeti sigurnosna arhitektura u kojoj peerovi ID i grupni ID su tretirani kao nižerazinski objekti, podaci su tretirani kao objekti a akcije su operacije nad peerovima, peer grupama i podacima.

Projektiranje konkretnije i preciznije arhitekture sigurnosti još uvijek je u razvoju. Nakon opsežnijeg razvoja usluga i aplikacija na vrhu JXTA, biti će lakše odrediti koja arhitektura je najprikladnija.

U razmatranju sigurnosne arhitekture važno je napomenuti da su sigurnosni zahtjevi JXTA arhitekture dodatno utjecani nekim jedinstvenim značajkama.

 

·           JXTA tehnologija je platforma orijentiranana na mehanizme a ne na načine. Na primjer, UUID se koriste svugdje ali oni sami po sebi nemaju nikakvo vanjsko značenje. Bez dodatnih usluga imenovanja i spajanja, UUID su samo brojevi koji nisu u skladu sa ničim kao što je korisnik. Prema tome, za razliku od nekih drugih računalskih sustava, JXTA ne definira visokorazinski sigurnosni model.

Kada se UUID spaja sa vanjskim imenom ili entitetom da bi se stvorila sigurnosna glava, izvornost spajanja se može osigurati stavljanjem sigurnosnih atributa u podatkovno polje, kao na primjer, digitalnog potpisa.

 

·           JXTA tehnologija je neutralna prema kriptografskum shemama i sigurnosnim algoritmima. Kao takova, ne određuje nikakva sigurnosna rješenja.

Na primjer, svaka poruka ima sigurnosno dio koji se može koristiti za stavljanje sigurnosnih informacija. Međutim, kako se interpretiraju te informacije, je ostavljeno uslugama i aplikacijama.

 

 Da bi se malo bolje objasnila sigurnost obrađena su dva zahtjeva.

 

·           Komunikacijska sigurnost: Kao što je prije rečeno, peerovi komuniciraju preko kanala (pipes). Pretpostavimo da se traži povjerljivost i integritet u komunikacijskom kanalu. Jedno rješenje je korištenje VPNa za sav mrežni promet. Drugo rješenje je formiranje sigurnosnog kanala, poput zaštičenog tunela, čime je poruka poslana takovim kanalom automatski sigurna. Treče rješenje je korištenje standardnih komunikacijskih mehanizama uz korištenje enkripcijskih metoda i digitalnih potpisa. JXTA tehnologija može koristiti bilo koje od navedenih rješenja.

 

·           Anonimnost: Anonimnost ovdje ne znaći nepostojanost identiteta. Naprotiv, često je određena razina identiteta neizbježna. Na primjer, broj telefona ili broj SIM kartice ne mogu biti anonimni jer su oni potrebni telefonskoj centrali da autorizira i uspostavi poziv. Još jedan primjer bi bio IP broj PC-a koji ne može biti sakriven od najbližeg routera ili gatewaya ako PC želi slati i primati podatke.

Anonimnost može biti nadograđena na identitet ali ne i obrnuto. Često postoji više načina da se osigura anonimnost. U prijašnjim primjerima, puno je teže povezati pre-paid SIM karticu prodanu u dučanu za gotovinu sa pravim korisnikom telefona. Slično, kooperativni gatewayi i routeri mogu pomoči u sakrivanju IP adrese PC-a od vanjskog svijeta koristeči na primjer NAT (Network Address Translation).

Zamislimo JXTA tehnološki baziranu uslugu imenovanja koja može spajati peer sa korisnikom. Korisnička anonimnost može biti osigurana kroz uslugu imenovanja, uslugu izvornosti ili proxy usluge ili bilo koju kombinaciju ovdje navedenih. JXTA je neovisna o riješenju izabranom od određene aplikacije.

 

 

JXTA bazirane usluge i aplikacije

 

Ovo poglavlje ilustrira što sve mogu biti JXTA usluge i aplikacije, koristeć par primjera.

 

Usluge

 

Uslugu obilježava skup funkcija koje nudi provider. Peer može nuditi uslugu sam ili u suradnji sa drugim peerovima. Peer koji pruža uslugu objavljuje uslugu putem oglasa. Drugi peerovi zatim mogu pronalaziti tu uslugu i njome se koristiti. Svaka usluga ima jedinstveni ID i ime koje se sastoji od propisanog imena i niza opisnih stringova koji jedinstveno identificiraju uslugu.

Ponekad je usluga dobro definirana i širokodostupna tako da ju peer može jednostavno koristiti. U ostalim slučajevima potreban je poseban kôd da bi se pristupilo usluzi.

Kada se govori o usluzi koju pruža peer podrazumjeva se da ju izvršava samo jedan peer. Usluga koja je sastavljena od skupa usluga koje se odvijaju na više peerova naziva se usluga grupe peerova.

 

JXTA Ljuska: Primjer aplikacije

 

JXTA ljuska (shell) je važna aplikacija koja je sagrađena na JXTA platformi kao močna demonstracija JXTA-a i kao korisna razvojna okolina. JXTA ljuska pruža interaktivni pristup JXTA platformi preko komandne linije, kao što je u UNIX-u interaktivni pristup UNIX platformi preko ljuske komandno linijskog prevodioca koji omogučava korisniku manipulaciju nad podacima i procesima. Preko UNIX ljuske može se puno naučiti o internom radu UNIX-a i može se puno postiči pišuči shell skripte. To se jednako može reći i za JXTA. Međutim, dok se UNIX shell naredbe izvode lokalno, JXTA ljuska je dizajnirana da se izvodi u mrežnom okruženju. Ono što se događa je to da će korisnička naredba generirati niz razmjena poruka između peerova, sa određenim računanjem koje se izvršava na udaljenim peer točkama, nakon čega se odgovor vrača korisniku. Prevodioc u JXTA ljusci radi u jednostavnoj petlji: prima naredbu, prevodi ju, izvršava i čeka novu naredbu. Ljuska prikazuje "JXTA>"  prompt da bi obavjestila korisnika kako je spremna prihvatiti novu naredbu. Jednako kao što postoje različite verzije UNIX ljuske (Bourne Shell, C Shell, BASH, itd), očekuje se da će se jednako tako razviti različite verzije JXTA ljuske.

Opisivanje kako je sagrađena JXTA ljuska ili koje naredbe podržava bio bi preveliki zalogaj za ovaj seminar pa se ovdje navodi samo par točaka.

Prvo, koliko je bilo moguče, namjerno su korištena imena naredbi iz UNIX ljuske kao što su ls, cat, itd. Razlog je bio taj da se olakša korištenje JXTA ljuske korisnicima koji su naučeni na UNIX ljusku.

Drugo, u Java implementaciji, večina naredbi nije ugrađena sama po sebi. One su Java jezični programi i dinamički se učitavaju i pokreču od strane ljuske. Prema tome, dodavanje novih naredbi je jednostavno kao što je pisanje programa u Javi.

 

 

Sažetak i buduće odrednice

 

Ovdje je predstavljena mrežna programska platforma posebno dizajnirana da bude temelj za peer-to-peer sustave. Njezini ciljevi su:

 

·           Interoperabilnost – svaki P2P sustav građen na JXTA tehnologiji može međusobno razgovarati

·           Neovisnost platformi – JXTA može biti implementirana sa bilo kojim programskim jezikom i korištena na svakoj software-skoj i hardware-skoj platformi

·           Sveprisutnost – JXTA se može postaviti na svaki digitalni uređaj

 

JXTA je definirana kao skup protokola koji koriste XML kodirane poruke. Kao takova, ostaje udaljena od API-a i ostaje nezavisna od programskih jezika, tako da može biti implementirana u C/C++, Java i ostalim jezicima. To znači da raznovrsni uređaji sa kompletno različitim software-om mogu surađivati kroz JXTA protokole.

Također, JXTA tehnologija je dizajnirana tako da bude neovisna o transportnom protokolu. Može se implementirati na vrh TCP/IP, HTTP, Bluetooth i mnogih drugih protokola. To znači da sustav koji je napravljen na vrhu JXTA radi na jednak način kada se sustav proširi na novo mrežno okruženje ili na novu vrstu uređaja, tako dugo dok postoji upravljač transportnog protokola za novi protokol.

Prednosti projekta JXTA mogu se ilustrirati na par aplikacijskih i korisničkih primjera. Na primjer, pretpostavimo da postoji P2P zajednica koja nudi mogučnost traženja za svoje članove, gdje jedan član može poslati upit a drugi članovi mogu slušati i odgovarati na upit. Pretpostavimo da je jedan član zajednice istovremeno korisnik Napstera i da je implementirao uslugu da kad god upit sadrži pitanje za MP3 muziku, taj član pogleda Napsterove podatke i zatim odgovori na upit sa informacijom koju je vratio Napster. U ovom primjeru određeni član bez ikakvog znanja o Napsteru može profitirati jer je drugi član implementirao most koji spaja njihov P2P sustav sa Napsterom. Ovakav tip spajanja je jako koristan, ali kada je broj usluga velik, spajanje postaje sve teže i nepoželjno. JXTA pretendira ka tome da bude most koji spaja različite P2P sustave zajedno.

Kao drugi primjer, mnogi uređaji (kao što su mobiteli, pageri, PDA-ovi, PC, itd) sadrže kalendare. Trenutno, sinhronizacija između takovih uređaja je zamorna i teška. Često PC postaje centralna sinhronizacijska točka, gdje se svaki drugi uređaj mora spojiti na PC koristeči jedinstveni "device driver" za svaki uređaj. Sa JXTA tehnologijom, svi takovi uređaju mogu se napraviti da komuniciraju međusobno bez dodatnih mrežnih sučelja osim onih koji su potrebni samim uređajima.

Činjenica da je JXTA tehnologija "open source" tipa očekuje se da će raznorazni zainteresirani pojedinci doprinositi razvoju JXTA i srodnih tehnologija.

 


Using of this material is strictly for educational purposes. Copying or publishing is allowed only with a permission of the author and that is me

For any suggestions about the site please feel free to contact me at

 jura.ivanovic@fer.hr