10.03.2015 Views

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

20 Rozdział 2. Architektury systemów <strong>peer</strong>-<strong>to</strong>-<strong>peer</strong><br />

2.1 Nieustrukturalizowane systemy <strong>peer</strong>-<strong>to</strong>-<strong>peer</strong><br />

Powstanie tego typu systemów wywodzi się od pierwszych sieci wymiany plików:<br />

Napster oraz Gnutella. Na bazie tych aplikacji powstało wiele unowocześnionych<br />

i zaprojek<strong>to</strong>wanych od początku systemów wymiany plików. Zainteresowanie<br />

świata <strong>na</strong>ukowego oraz komercyjnego tymi systemami pojawiło się ze względu<br />

<strong>na</strong> ich skalowalność, odporność <strong>na</strong> działania intruzów, a może również i rozgłos,<br />

który <strong>to</strong>warzyszył rozprawie przeciwko firmie NullSoft wy<strong>to</strong>czony przez<br />

agencję RIAA. Z czasem zaczęły pojawiać się tzw. szkielety (ang. <strong>peer</strong>-<strong>to</strong>-<strong>peer</strong><br />

frameworks), jako <strong>na</strong>rzędzia do budowy rozproszonych aplikacji przy użyciu<br />

sieci <strong>peer</strong>-<strong>to</strong>-<strong>peer</strong>. Wymienię tutaj dwa wiodące komercyjne projekty: Sun Microsystems<br />

JXTA 2 i Microsoft P2PSDK 3 .<br />

Schemat grafu nieustrukturalizowangeo systemu <strong>peer</strong>-<strong>to</strong>-<strong>peer</strong>, może wyglądać,<br />

tak jak przedstawiono <strong>na</strong> rysunku 2.2. Ilustracja pokazuje rejestrację zawar<strong>to</strong>ści<br />

z przez węzeł k oraz próbę jej lokalizacji przez węzeł a:<br />

1. Węzeł k rejestruje zawar<strong>to</strong>ść z w super węźle i.<br />

2. Węzeł a zadaje pytanie super węzłowi c ozawar<strong>to</strong>śćz z parametrem TTL 4<br />

równym 1.<br />

3. Super węzeł c stwierdza, że nie ma zawar<strong>to</strong>ści z i przesyła zapytanie do<br />

f i g z TTL równym 2.<br />

4. Węzły f i g również nie z<strong>na</strong>ją położenia z więc podbijają TTL i przesyłają<br />

zapytanie do i.<br />

5. Węzeł i odpowiada bezpośrednio do a lub przez super węzły, oz<strong>na</strong>jmujący,<br />

że zawar<strong>to</strong>ść z z<strong>na</strong>jduje się u k.<br />

Super węzły w celu zlokalizowania zawar<strong>to</strong>ści z rozsyłają między sobą zapytanie<br />

s<strong>to</strong>sując np. pro<strong>to</strong>kół plotkarski (ang. gossiping pro<strong>to</strong>col) [CRB01].<br />

Równie dobrze moż<strong>na</strong>by posłużyć się pro<strong>to</strong>kołem plotkarskim bezpośrednio, bez<br />

użycia super węzłów. Niestety takie postępowanie ograniczyłoby skalowalność<br />

sytemu. Na podobny problem <strong>na</strong>tknęli się twórcy Gnutelli, która przestała funkcjonować<br />

ze względu <strong>na</strong> problemy wydajnościowe.<br />

2 JXTA (http://www.jxta.org)<br />

3 P2PSDK (http://msdn.microsoft.com/library/en-us/p2psdk/p2p/<br />

portal.asp)<br />

4 Time To Leave - parametr oz<strong>na</strong>cza odległość od źródła w skokach. Przy pewnej war<strong>to</strong>ści<br />

progowej, zapytanie nie jest już dalej rozsyłane. Parametr TTL w podobnej postaci jest używany<br />

w s<strong>to</strong>sie pro<strong>to</strong>kołów TCP/IP.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!