You are on page 1of 13

Eksploracja technologii JXTA

Wojciech Jaworski Bartosz Miosierny

Wydzia Matematyki i Informatyki - czerwiec 2006

Wstp idee................................................................................................ 3 Czym jest JXTA?........................................................................................................................ 3 Architektura................................................................................................................................ 5 Komponenty JXTA..................................................................................................................... 6 Kluczowe aspekty architektury................................................................................................... 6 Terminologia i podstawowe koncepcje.......................................................................................6 Wzy...................................................................................................................................... 6 Grupy wzw......................................................................................................................... 7 Usugi...................................................................................................................................... 7 Moduy.................................................................................................................................... 7 Potoki ..................................................................................................................................... 7 Zaawansowane kanay komunikacji....................................................................................... 8 Komunikaty............................................................................................................................. 8 Anonse.................................................................................................................................... 8 Bezpieczestwo....................................................................................................................... 9 Architektura sieci........................................................................................................................ 9 Protokoy................................................................................................................................... 11 Przykady.................................................................................................................................. 12 Przykad 1 wykrywanie wzw sieci................................................................................ 12 Przykad 2 tworzenie grupy wzw.................................................................................. 13 Przykad 3 usuga potoku................................................................................................... 13

Wstp idee
JXTA jest zbiorem otwartych protokow, ktre pozwalaj dowolnym urzdzeniom podczonym do sieci (od telefonw komrkowych i PDA przez komputery biurkowe a do superserwerw) wystpowa w charakterze wza sieci peer-to-peer to znaczy komunikowa si i wsppracowa z innymi urzdzeniami na zasadzie rwny z rwnym. Wzy sieci korzystajce z technologii JXTA tworz wirtualn sie, w ktrej kady z wzw moe dokonywa interakcji z innymi wzami lub zasobami bezporednio, nawet w sytuacji, w ktrej niektre wzy znajduj si za zaporami lub NAT. Cele technologii JXTA to przede wszystkim: Interoperacyjno wsppraca w rnych take heterogenicznych systemach peer-topeer i spoecznociach sieciowych Niezaleno od platformy zrnicowane jzyki programowania, systemy operacyjne i sieci Wszechobecno moliwo stosowania na dowolnym urzdzeniu

JXTA daje uytkownikom i programistom wiele moliwoci, z ktrych najwaniejsze to: Znajdowanie wzw i zasobw w sieci bez wzgldu na zapory i NAT Dzielenie si plikami z kimkolwiek w sieci Tworzenie wasnych grup wzw nawet, jeli fizycznie znajduj si w rnych sieciach Zapewnienie bezpiecznej komunikacji midzy wzami w sieciach publicznych

Projekt JXTA zaczyna jako projekt badawczy zapocztkowany w Sun Microsystems pod kierownictwem Billa Joya i Mikea Claryego i mia na celu zaadresowanie sieci peer-topeer.

Czym jest JXTA?


JXTA jest zatem otwart platform suc do oblicze w sieciach zaprojektowan do pracy na zasadach peer-to-peer (P2P). Jej celem jest rozwinicie podstawowych moduw i usug umoliwiajcych tworzenie aplikacji dla grup P2P. Termin JXTA (czytamy: daksta) jest skrtem od angielskiego sowa juxtapose oznaczajcego zestawia obok siebie. JXTA

dostarcza wsplnego zbioru otwartych protokow i open-sourceowej implementacji umoliwiajcej rozwijanie aplikacji P2P. Protokoy JXTA standaryzuj sposb, w jaki wzy sieci P2P: Odkrywaj siebie nawzajem Samoorganizuj si w grupy Rozgaszaj i odkrywaj usugi sieciowe Komunikuj si ze sob Monitoruj nawzajem

Protokoy JXTA zostay zaprojektowane niezalenie od jzykw programowania i niezalenie od protokow transportowych. Protokoy JXTA mog by z powodzeniem zaimplementowane w takich jzykach jak: Java, C/C++, Perl i innych, ponad protokoami transportowymi takimi jak: TCP/IP, HTTP, Bluetooth, HomePNA i innymi.

Architektura

1. Warstwa Platformy (JXTA core) Warstwa platformy czyli rdze JXTA zawiera minimalny i niezbdny zbir funkcji, ktre s wsplne dla modelu P2P. Zawiera mechanizmy kluczowe dla P2P pozwalajce na odkrywanie wzw i grup, zapewniajce transport (take poprzez zapory), umoliwiajce tworzenie wzw i grup, a take funkcje realizujce bezpieczestwo transmisji. 2. Warstwa Usug Warstwa usug zawiera usugi sieciowe, ktre nie s cakowicie niezbdne do funkcjonowania sieci P2P, ale s czsto spotykana bd podane w rodowisku P2P. Przykady takich usug to: wyszukiwanie i indeksowanie, katalogowanie, systemy skadu, wspdzielenie plikw, rozproszone systemy plikw, agregacja i najmowanie zasobw, tumaczenie protokow, uwierzytelnianie i usugi PKI (Public Key Infrastructure) 3. Warstwa Aplikacji Warstwa aplikacji zawiera implementacje zintegrowanych aplikacji takich jak komunikatory P2P, wspdzielenie zasobw i dokumentw, systemy poczty elektronicznej P2P i tym podobne

Komponenty JXTA
Sie JXTA skada si z szeregu poczonych wzw (ang. peers). Wzy maj zdolno do samoorganizowania si w grupy, ktre dostarczaj podobnych usug. Wzy JXTA rozgaszaj swoje usugi w dokumentach XML zwanych anonsami (ang. advertisements). Anonse pozwalaj innym wzom w sieci zdoby wiedz niezbdn do poczenia si z usug i skorzystania z niej. Wzy JXTA uywaj potokw (ang. pipes) do przesyania komunikatw do siebie nawzajem. Potoki to asynchroniczny i niekierowany mechanizm transferu uywany do komunikacji midzy serwisami. Komunikaty to proste dokumenty XML, ktrych koperta zawieraj midzy innymi tras, streszczenie komunikatu i dane niezbdne do autoryzacji. Potoki s zwizane z tak zwanymi punktami terminalnymi (ang. endpoints), ktrymi mog by: port TCP i odpowiedni adres IP.

Kluczowe aspekty architektury


Trzy kluczowe cechy architektury JXTA odrniaj j od innych modeli rozproszonych: Uycie XML-owych dokumentw do anonsowania i opisywania usug sieciowych Abstrakcja pocze midzy wzami (zarwno w kontekcie potokw, jak i punktw terminalnych) niezalena od centralnego systemu adresowania takiego jak DNS Spjna koncepcja adresowania wzw (poprzez peer ID)

Terminologia i podstawowe koncepcje


Wzy Wze to dowolne urzdzenie w sieci implementujce jeden lub wicej protokow JXTA. Moe nim by zarwno superkomputer, terminal jak i urzdzenia przenone typu PDA, telefony komrkowe. Kady interfejs sieciowy takiego urzdzenia, rozgoszony i znany innym urzdzeniom staje si punktem terminalnym (endpoint) i moe zosta uyty do nawizania poczenia typu point-to-point z innym interfejsem. Grupy wzw Grup nazywamy kady zbir wzw wiadczcy okrelony zbir usug i posiadajcy niepowtarzalny identyfikator group ID. Wze moe nalee do dowolnej liczby grup. Domyln grup, do ktrej zostaje przyczony kady wze w czasie startu jest Net Peer Group. Grupowanie wzw pozwala na osignicie wyszego poziomu bezpieczestwa komunikacji i lepszej specjalizacji. Kada grupa wzw wiadczy pewien zestaw usug (group services). Istnieje podstawowy zestaw usug oferowanych przez wikszo grup, m.in. usuga odnajdywania wzw (discovery service), usuga pozwalajca na przyczanie nowych wzw do grupy (membership komunikatw. Usugi Usugi s podstawowym mechanizmem JXTA umoliwiajcym prac wzw i komunikacj midzy nimi, s implementacj protokow JXTA. Usugi dzielimy na te wiadczone przez pojedynczy wze (peer services) i usugi grupowe (group services). Usuga pojedynczego service), usuga potokw (pipe service), umoliwiajca przesyanie

wza staje si niedostpna w przypadku jego awarii, natomiast pracy usugi grupowej pojedyncze awarie nie zakc. Usugi mog by zainstalowane na danym wle i startowa razem z nim lub by dynamicznie adowane z sieci. Moduy Modu jest pojciem reprezentujcym dowolny wykonywalny kod, np. klasa Javy, biblioteka DLL, odpowiadajcy za implementacj pewnego zachowania systemu. Moduy mog np. reprezentowa implementacj pewnej usugi dla rnych systemw operacyjnych. Moduy s rozsyane i dynamicznie adowane podczas pracy wzw, co umoliwia np. automatyczn konfiguracj i zlecanie zada wzowi po przyczeniu si do grupy. Potoki Potoki s asynchronicznym i nieukierunkowanym kanaem przesyania komunikatw i danych (binarnych i tekstowych) pomidzy wzami. Interfejs wysyajcy dane okrelamy jako output pipe, odbierajcy to input pipe. Potoki s wirtualnym kanaem i w rzeczywistoci poczenie moe by realizowane przy pomocy kilku poredniczcych punktw terminalnych. Istnieje moliwo wysyania i odbierania danych przez kilka wzw za pomoc jednego potoku (unicast pipes jeden odbiorca, propagate pipes wielu odbiorcw). Aby mie pewno, e wysane dane zostan dostarczone nadawcy naley uy potokw bezpiecznych (secure pipes). Zaawansowane kanay komunikacji JxtaSocket i JxtaServerSocket zapewniaj komunikacj dwukierunkow i potwierdzanie odbioru, oparte na strumieniach Javy, dziedzicz z klas java.net.Socket i Java.net.ServerSocket JxtaBiDiPipe i JxtaServerPipe - zapewniaj komunikacj dwukierunkow i potwierdzanie odbioru, ale oparte o mechanizm potokw a nie strumieni Komunikaty Komunikat s obiektami wysyanymi pomidzy wzami, np. przy uyciu potokw. Mog mie reprezentacj XML-ow lub binarna. Kady komunikat jest cigiem elementw okrelonego typu (np. tekst, klasa Javy), identyfikowanych nazwami. Mechanizm platform binding odpowiada za skonwertowanie otrzymanego obiektu do formatu odpowiedniego dla danej platformy.

Anonse Wszystkie zasoby JXTA (wzy, grupy, potoki i usugi) s reprezentowane przez XML-owe dokumenty zwane anonsami (advertisements). S one uywane do dokadnego opisu zasobu i publikowane w sieci, dziki czemu inne wzy mog uzyska informacje o odlegych zasobach. Wze po odczytaniu anonsu moe go scachowa na lokalnej maszynie. Przykadowy anons:
<?xml version="1.0"?> <!DOCTYPE jxta:PipeAdvertisement> <jxta:PipeAdvertisement xmlns:jxta="http://jxta.org"> <Id> urn:jxta:uuid59616261646162614E504720503250338E3E786229EA460DADC1A176B69B731504 </Id> <Type> JxtaUnicast </Type> <Name> TestPipe.end1 </Name> </jxta:PipeAdvertisement>

Anons zawiera m.in. identyfikator zasobu. Standardowo jest on generowany w sposb losowy przez platform. Bezpieczestwo JXTA oferuje liczne mechanizmy bezpieczestwa. Kady wze podlega autentykacji i autoryzacji w trakcie logowania si do sieci. Komunikaty wysyane midzy wzami mog by szyfrowane i podpisane cyfrowo. JXTA bdzie te wspiera popularne protokoy IPSec i SSL.

Architektura sieci
Sie JXTA jest w budowana ad hoc z poczonych wzw. Poczenia w takiej sieci mog mie chwilowy, ulotny charakter, a trasa komunikatu nie jest z gry ustalona. Wzy w kadej chwili mog doczy do sieci lub odczy si od niej, zatem trasy mog ulega czstym zmianom. Wzy mog przybiera dowoln form, jeli tylko potrafi komunikowa si przy uyciu protokow JXTA. Struktura sieci nie jest narzucana odgrnie przez JXTA Framework, jednak zwykle w praktyce uywa si czterech rodzajw wzw: Podstawowy wze kracowy Ten typ wza potrafi wysya i odbiera komunikaty, ale nie dokonuje cacheowania anonsw ani nie przekazuje dalej (nie trasuje) komunikatw pochodzcych od innych wzw. Podstawowych wzw kracowych uywa si zwykle na urzdzeniach o ograniczonych zasobach (np. PDA albo telefony komrkowe).

Peny wze kracowy Peen wze kracowy wysya i odbiera komunikaty i domylnie dokonuje cacheowania anonsw. Ten typ wza odpowiada na dania wykrywania uywajc informacji pochodzcych z zachowanych w cacheu anonsw, ale nie przekazuje dalej adnych da wykrywania. W typowych sytuacjach wikszo wzw to wanie wzy kracowe.

Wze rendezvous Wze rendezvous (fr. rendezvous spotkanie) od penego wza kracowego rni tym, e przekazuje do innych wzw dania wykrywania, umoliwiajc innym wzom zorientowanie si, jakie usugi s udostpniane. Kiedy wze A docza do grupy automatycznie poszukuje wza rendezvous. Jeli aden taki wze nie zostanie znaleziony, wze A automatycznie staje si wzem rendezvous dla tej grupy. Kady wze rendezvous utrzymuje list innych znanych wzw rendezvous oraz list wzw, ktre uywaj tego wza jako swojego wza rendezvous. Kada grupa wzw utrzymuje wasn list wzw rendezvous i moe posiada tyle wzw RDV, ile potrzebuje. dania wyszukiwania w danej grupie s widoczne tylko przez te wzy RDV, ktre s czonkami tej grupy.

Wzy kracowe wysyaj dania do wzw RDV, ktre z kolei przekazuj do innych wzw RDV te dania, na ktre nie s w stanie same odpowiedzie. Proces ten jest kontynuowany dopki odpowied nie zostanie znaleziona albo danie umrze. Komunikaty maj domylnie ustawiony czas ycia (TTL) na siedem przeskokw. Przeskoki zwrotne s eliminowane dziki utrzymywaniu listy krawdzi znajdujcych si na trasie komunikatu. Wzy przekanikowe

Wzy tego typu posiadaj informacje dotyczce tras do innych wzw i przekazuj komunikaty. Wze najpierw zaglda do swojego lokalnego cacheu w poszukiwaniu informacji o trasie. Gdy takiej informacji nie znajdzie, wysya zapytanie do wza przekanikowego o tras. Wzy przekanikowe su take przekazywaniu komunikatw midzy wzami, ktre nie mog by bezporednio zaadresowane (np. w rodowiskach typu NAT), spinajc rne fizyczne i/lub logiczne sieci. Usugi charakterystyczne dla wzw przekanikowych czy RDV mog zosta zaimplementowane na dowolnym wle. Wze moe jednoczenie peni obie role.

Przykad rozpowszechniania komunikatw w sieci przez wzy RDV.

Komunikacja moe te odbywa si pomimo istnienia przeszkd takich jak sieci NAT czy zapory. Aby byo to moliwe musz by spenione nastpujce warunki: Przynajmniej jeden wze w grupie po wewntrznej stronie zapory musi by zna przynajmniej jeden wze poza zapor Wzy wewntrz i na zewntrz sieci chronionej przez zapor musz zna siebie nawzajem i musz obsugiwa protok HTTP Zapora musi pozwala na transfer przez protok http

Protokoy
Istnieje 6 protokow JXTA: Peer Discovery Protocol (PDP) uywany przez wzy do anonsowania ich wasnych zasobw i wykrywania zasobw innych wzw. Kady zasb jest opisywany i publikowany za pomoc anonsu. Peer Information Protocol (PIP) uywany do uzyskiwania informacji kontrolnych (np. czas dziaania, stan) od wzw Peer Resolver Protocol (PRP) umoliwia wzom wysyanie generycznych zapyta to jednego lubi wicej wzw i odbieranie odpowiedzi (jednej lub wielu). Zapytania mog zosta przekierowane do wszystkich wzw w grupie bd do okrelonego zbioru wzw grupy. W przeciwiestwie do PDP i PIP, ktre umoliwiaj wymian tylko z gry zdefiniowanych komunikatw, ten protok pozwala na zdefiniowanie i wymian dowolnej informacji Pipe Binding Protocol (PBP) uywany przez wzy do ustanowienia wirtualnego kanau komunikacji (czyli potoku). PBP jest uywany przez wze do zbindowania dwch lub wicej punktw terminalnych poczenia Endpoint Routing Protocol (ERP) suy do znajdowania tras prowadzcych do docelowych portw na innych wzach. Informacja o trasie zawiera sekwencj identyfikatorw wzw przekanikowych, ktre mog zosta uyte, aby przesa komunikat. (Na przykad, komunikat moe by wysany do wza A, nastpnie przesany do wza B, ktry ostatecznie skieruje go do docelowego wza.) Rendezvous Protocol (RVP) to mechanizm dziki, ktremu wzy mog by dostawcami lub odbiorcami usugi rozpowszechniania. Wzy zorganizowane w grup s albo wzami RDV albo nasuchuj tych wzw. Protok RVP pozwala wysya komunikaty do wszystkich nasuchujcych instancji serwisu. RVP jest uywany przez Peer Resolver Protocol oraz przez Pipe Binding Protocol do propagowania komunikatw w grupie. Wszystkie protokoy JXTA s asynchroniczne i oparte na modelu zapytanie/odpowied. Wze uywa ich do wysania zapytania do pewnej liczby wzw w grupie. W rezultacie moe uzyska zero, jedn lub wicej odpowiedzi. Na przykad, jaki wze uywajc protokou PDP zapytuje o wszystkie znane wzy w supergrupie Neet Peer Group. Typowa

sytuacja w tym przypadku to uzyskanie wielu odpowiedzi od rnych wzw. Inny przykad: wze w grupie poszukuje konkretnego potoku nazwanego GorskiPotok. Jeli potok o tej nazwie nie zostanie znaleziony, uzyskamy dokadnie zero odpowiedzi na to zapytanie. Wzy JXTA nie s zobowizane do implementowania wszystkich 6 protokow mog implementowa jedynie te, ktrych bd uywa. Konkretna implementacja technologii JXTA platforma JXTAJ2SE wspiera wszystkie sze. W tej platformie dostpne jest API napisane w jzyku Java, dziki ktremu mona skorzysta w peni z funkcjonalnoci protokow (np. mona wykrywa wzy sieci albo doczy do grupy).

Przykady
Przykad 1 wykrywanie wzw sieci
Najwaniejsze cechy programu: Dziaanie w domylnej grupie NetPeerGroup Implementacja interfejsu DiscoveryListener (model event-driven) Pobieranie anonsw od znalezionych wzw

Przykad 2 tworzenie grupy wzw


Najwaniejsze cechy programu: Tworzenie nowego anonsu dla nowo tworzonej grupy (w sposb programowalny, nie deklaratywny) z wykorzystaniem jednej z gotowych implementacji Publikowanie swojego anonsu Doczanie do nowopowstaej grupy

Przykad 3 usuga potoku


Najwaniejsze cechy programu: Architektura zbliona do architektury klient/serwer Dziaanie w domylnej grupie Korzystanie z deklaratywnie utworzonego anonsu potoku (plik XML)

Implementacja interfejsu PipeMsgListener w czci programu usugujcej jako serwer Implementacja interfejsu OutputPipeListener w czci programu wystpujcej w charakterze klienta

Klient korzysta z usug RDV

You might also like