www.eprace.edu.pl » sieci-p2p » Technologia programów P2P » Charakterystyka programów P2P

Charakterystyka programów P2P

Rozdział ten ma na celu przedstawienie charakterystyki technologii P2P. Poprzez przedstawienie rozwiązań takich zagadnień jak skalowalność, decentralizacja czy samoorganizacja. Zostanie omówiona różnica miedzy tradycyjnym modelem komunikacji klient-serwer i sposób, w jaki technologia P2P wpływa na rozwiązanie problemów, z którymi spotykają się na co dzień programiści, projektujący nowe systemy i aplikacje.

Decentralizacja

W tradycyjnym modelu klient-serwer, będącym w pełni scentralizowanym, wszelkiego rodzaju zasoby były gromadzone na centralnym serwerze, a stąd były pobierane przez podłączonych do niego klientów (rys.1).

Rysunek 1 Przykład architektury sieciowej klient-serwer

Taki model pozwala na pełna kontrolę dostępu i zawartości udostępnianych zasobów, ale jest to okupione niemałymi kosztami. Po pierwsze serwer centralny musi dysponować odpowiednio wydajnym sprzętem, będącym w stanie sprostać obsłudze nierzadko wielu tysięcy użytkowników i musi również dysponować odpowiednio szybkim łączem. Pojawia się też problem skalowalności (opisany dokładniej w rozdziale 1.1.2). Istnieją jednak zastosowania, w których przytoczona powyżej kontrola nad zasobami, szczególnie z punktu widzenia klienta, nie jest konieczna. Takim zastosowaniem stała się wymiana plików, głównie multimedialnych. Pierwszy model sieci, wprowadzający technologię P2P na szeroką skalę, nie rezygnował z funkcji węzła pełniącego rolę serwera, ale ograniczył jego funkcje do gromadzenia informacji o plikach udostępnianych przez klientów nowej sieci. Klient chcąc wyszukać interesujący go plik, wysyłał zapytanie do serwera, a ten odsyłał mu informacje, który z klientów go posiada. Operacja pobierania pliku odbywała się już bezpośrednio między zainteresowanymi klientami (rys.2). Ta koncepcja jest jedną z podstawowych i charakteryzujących technologie P2P.

Rysunek 2 Przykład pierwszego modelu architektury P2P opartej o centralny serwer

1.1.1.1. Struktury sieci

Możemy wyróżnić dwa podstawowe modele sieci P2P:

Topologia typu pure jest klasycznym modelem sieci P2P. Wszystkie węzły w sieci mają tą samą funkcjonalność i żaden z nich nie jest wyróżniony. Przykładami takiej sieci są programy Freenet i opisana w rozdziale 2.1 Gnutella w swojej podstawowej formie (rys. 3).

Rysunek 3 Topologia sieci typu pure, na przykładzie sieci Gnutella

Sieć hybrydowa wprowadza węzły o wyróżnionej pozycji. Mogą one pełnić rolę serwera autoryzacji bądź zbierania danych specyficznych dla roli, jaką pełnią. Elementami wyróżnionymi mogą być również tzw. supernodes (superwęzły), które poza funkcjami węzłów zwykłych mogą spełniać inne role, np. odciążenia węzłów o słabszych parametrach sprzętowych bądź kiepskim łączu. Przykładów sieci z wyróżnionymi węzłami jest wiele, gdyż taki model sieci jest wydajniejszy i bardziej skalowalny (rys. 4).

Rysunek 4 Topologia sieci typu hybryd, na przykładzie sieci ed2k

Skalowalność

Odwołując się do modelu klient-serwer, opisanego w poprzednim rozdziale, łatwo zauważyć, że w miarę wzrostu liczby użytkowników, maszyna centralna jest coraz bardziej obciążona i dodatkowo wymaga coraz szybszego łącza. Skalowalność takiego rozwiązania jest oczywiście ograniczona, gdyż zwiększania parametrów maszyny serwerowej i szybkości łącza nie da się przeprowadzać w nieskończoność. W sieciach P2P, jak widać to na rysunku 2, ruch generowany w sieci rozkłada się między wszystkich użytkowników, dodatkowo serwer otrzymuje znacznie mniejszą liczbę zapytań i znacznie krócej trwają połączenia z klientami, przez co jego obciążenie jest mniejsze.

Inną dziedziną, w której decentralizacja i skalowalność sieci P2P przyniosła wymierne korzyści, były badania naukowe, wymagające znacznej mocy obliczeniowej. Przykładem jest tutaj projekt SETI (Search for Extraterrestrial Intelligence), czyli Poszukiwanie Inteligencji Pozaziemskiej. Program kliencki łączy się przez Internet z serwerem SETI, na którym zapisywane są dane, pochodzące z nasłuchu kosmosu, a następnie przelicza je i odsyła wynik do serwera. W ten sposób, niskim kosztem, uzyskano bardzo wysoką moc obliczeniową. Klienci, którzy udostępniają swoje komputery, nagradzani są poprzez system kredytów, przyznający im punkty, których liczba uzależniona jest od ilości danych, jaką przeliczyli.

Anonimowość

Jednym z celów, jakie postawili sobie twórcy programów P2P, jest anonimowość. Możemy rozumieć ją w dwojaki sposób. W scentralizowanym modelu sieci komputerowej w prosty sposób możemy być zidentyfikowani, gdyż łącząc się z centralnym serwerem, zostawiamy informacje o naszym połączeniu (np. w logach systemu), często też w takich przypadkach dostęp do serwera wymaga autoryzacji i autentykacji, by potwierdzić, że jesteśmy tą osobą, za którą się podajemy. W przypadku sieci P2P, szczególnie tych typu pure, bardzo trudno jest zebrać informacje o wszystkich użytkownikach sieci i np. sprawdzić, jakie pliki pobrali w zadanym okresie czasu, gdyż użytkownicy tworzą tysiące bezpośrednich połączeń między sobą, więc ich kontrola staje się praktycznie niemożliwa.

W sieciach hybrydowych, a więc wykorzystujących serwer, służący zazwyczaj do odnalezienia lokalizacji, interesującego klienta zasobu, kwestia tak pojętej anonimowości jest mniej pewna. Komputer, pełniący rolę serwera, w przypadku odebrania zapytania o dany plik, odsyła listę klientów spełniających kryteria danego zapytania. Klient taki identyfikowany jest na podstawie adresu IP komputera, więc istnieje w takim wypadku sposób na jego zlokalizowanie. Ta właśnie kwestia sprawiła, że na rynku pojawił się nowy technologiczny pomysł, a mianowicie sieci anonimowe.

W przypadku sieci anonimowych połączenie między hostem udostępniającym a odbierającym nigdy nie następuje bezpośrednio. Hosty nie są identyfikowane na podstawie adresu IP, a na podstawie specjalnego identyfikatora. Adresy IP przekazywane są tylko bezpośrednim sąsiadom, a dalej dany host identyfikowany jest na podstawie swojego losowo generowanego numeru. Zapytanie o plik przekazywane jest podobnie, jak w opisanej w rozdziale 2.1 Gnutelli, z węzła do węzła, aż dotrze do hosta, który go posiada. Informacja zwrotna przekazywana jest również nie bezpośrednio i również z wykorzystaniem identyfikatora.

Aby zoptymalizować przekazywanie pakietów, każdy host takiej sieci buduje tablicę routingu wirtualnych adresów innych hostów. Dodatkowo komunikaty są szyfrowane. Minusem takiego rozwiązania jest spowolnienie transmisji i znaczny wzrost obciążenia sieci, gdyż każdy pakiet musi przechodzić między odbiorcą a nadawcą pośrednio, z minimum jednym pośredniczącym węzłem.

Samoorganizacja sieci

Ważną i charakterystyczną cechą sieci, wykorzystującej technologię P2P, jest tzw. samoorganizacja. Ideą sieci P2P jest jej ciągła zmiana i uniezależnienie od stałych elementów. Ich obecność mogłaby powodować łatwość wyłączenia całej sieci bądź jakiejś jej części. Programiści wprowadzają różnego rodzaju algorytmy, pozwalające węzłom zmieniać swoje funkcje (np. stać się superwęzłem), w zależności od aktualnych potrzeb sieci. Można powiedzieć, że sieć P2P jest jak żywy organizm. Zmienia się jej obciążenie, dołączają i wyłączają się klienci, sieć ciągle się przeorganizowuje. Wszystko dzieje się automatycznie i bez ingerencji użytkownika.

Odporność na awarie

To kolejna kluczowa i charakterystyczna cecha technologii P2P. Decentralizacja i samoorganizacja, a także traktowanie każdego węzła jako równy decyduje o tym, że sieci P2P w zasadzie nie można wyłączyć, jest to tym trudniejsze, im bardziej sieć jest zdecentralizowana. W przypadku systemów wymiany plików, opisanych w rozdziale 2 (Gnutella i ed2k), wyłączenie sieci jest wręcz niemożliwe. Sprowadzałoby się w zasadzie do jednoczesnego wykasowania wszystkich instancji programów, skopiowanych miliony razy przez użytkowników.

W przypadku takich programów, jak opisany w rozdziale 2.3 Skype czy wcześniej SETI, sieć da się wyłączyć poprzez wyłączenie głównych serwerów, ale awarie pozostałych węzłów sieci nie wpływają na jej działanie. Skype jest programem komercyjnym i w zasadzie producent poprzez zastosowanie stałych elementów sieci zapewnił sobie kontrolę nad własnym produktem. W przypadku SETI mamy do czynienia z ośrodkiem naukowym, udostępniającym swoje zasoby użytkownikom, więc i w tym przypadku zasadność działania sieci bez tego elementu, staje się nie tyle niemożliwa, co mało sensowna.

NAT i zapory sieciowe

Bezpieczeństwo to ważna kwestia wielu systemów sieciowych i komputerowych. Jedną z nich jest anonimowość, opisana w rozdziale 1.1.3. Z drugiej strony technologia P2P umożliwia dwustronną komunikację użytkownikom sieci, znajdującym się za zaporą sieciową bądź nie posiadającym publicznego adresu IP (jedynie prywatny tłumaczony poprzez NAT1). Istnieje kilka sposobów na umożliwienie takiemu użytkownikowi dostępu do sieci P2P. Host z publicznym adresem IP, chcąc pobrać dane od użytkownika znajdującego się za zaporą sieciową (bądź posiadającego prywatny adres IP), może wykorzystać do tego celu inny host, który ma aktualnie nawiązane połączenia z tym użytkownikiem. Host ten (oznaczony na rysunku 5 jako Serwer) przekazuje informacje o adresie IP i numerze portu hosta z publicznym adresem użytkownikowi za zaporą. W tym momencie host z prywatnym IP może nawiązać połączenie, więc transmisja danych może się odbyć (rys. 5).

Rysunek 5 Proces pobierania danych w przypadku, gdy strona udostępniająca jest za zaporą sieciową

W przypadku, gdy żadna z zainteresowanych stron nie może przyjmować połączeń przychodzących, przesyłanie danych może odbyć się z wykorzystaniem hosta pośredniczącego, tak jak na rysunku 6.

Rysunek 6 Proces pobierania danych w przypadku, gdy obie strony są za zaporą sieciową

Większość programów P2P może również pracować na niestandardowych portach, które czasami mogą być blokowane przez administratorów sieci, dodatkowe niektóre programy jak np. Skype potrafią komunikować się poprzez porty przeznaczone dla innych aplikacji, jak choćby port 80, czy nawet wykorzystywać w tym celu serwer proxy http.

Koszty

Pierwszy ogólnodostępny projekt P2P, czyli Napster powstał jako produkt darmowy. Kolejne, jak Gnutella też poszły tą drogą. Dodatkowo wiele projektów ma status open-source, jak wspomniana już Gnutella, ed2k czy platforma JXTA. Otwarte protokoły sprawiają, że sami użytkownicy często wspomagają rozwój danego programu. Również potężne korporacje, takie jak HP, Sun czy Microsoft, zainteresowały się tą technologią, wspierając i wykorzystując ją w niektórych swych produktach.

Rynek P2P to obecnie bardzo rozwojowa i dochodowa działalność, wzbudzająca też wiele kontrowersji. Łatwo zauważyć, że przytaczany projekt naukowy SETI bez wsparcia użytkowników byłby niesamowicie kosztownym przedsięwzięciem, wymagałby zakupu wielu bardzo szybkich i bardzo drogich maszyn obliczeniowych. Zysk mają też zwykli użytkownicy, wystarczy wspomnieć opisany w rozdziale 2.3 Skype i jego darmowe rozmowy. Są i środowiska, które tracą, jak np. producenci muzyczni, ale to już nie kwestia technologii, a kwestia przestrzegania prawa.



komentarze

ale jestes szaaaaaaaaaaaalona kiciu

skomentowano: 2013-05-27 12:05:06 przez: bóg mnie opuscil

Copyright © 2008-2010 EPrace oraz autorzy prac.