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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.3 Algorytm BFT 45<br />

3.3.4 Proaktywne odzyskiwanie stanu w BFT<br />

Replika zapisuje do dziennika wszytkie operacje, które wykonuje. Zbiór potwierdzonych<br />

i wyko<strong>na</strong>nych zleceń stanowi o stanie usługi s. Stan s określany<br />

jest jako stabilny, jeżeli jest zatwierdzony. Replika chcąc zatwierdzić stan dla<br />

jakiegoś numeru sekwencji n wysyła komunikat postaci < CHECKPOINT, n,<br />

D(s), i> σi . Zatwierdzenie stanu powinno być przeprowadzane co pewną liczbę<br />

zleceń, w zależności od średniego obciążenia usługi, tak by nie występowało ono<br />

za częs<strong>to</strong>, ale też nie było za rzadkie, gdyż <strong>to</strong> może z<strong>na</strong>cznie wydłużyć operację<br />

zmiany widoku opisaną wcześniej. Jeżeli replika odbierze 2f +1 potwierdzeń, <strong>to</strong><br />

może zatwierdzić stan. Wszystkie wiadomości otrzymane dla niższych numerów<br />

sekwencji od n mogą zostać usunięte z dziennika repliki i.<br />

Proaktywne odzyskiwanie stanu jest procesem, który odświeża stan repliki.<br />

Twórcy algorytmu zakładają, że wszystkie repliki są uruchamiane i <strong>na</strong>dzorowane<br />

przez administra<strong>to</strong>ra systemu. Nie jest bra<strong>na</strong> pod uwagę sytuacja, gdy<br />

replika została uruchomio<strong>na</strong> przez atakującego. Jest <strong>to</strong> poprawne założenie dla<br />

tego przypadku, gdyż jedynie repliki <strong>na</strong>dzorowane mogą rozpocząć proces odzyskiwania<br />

stanu. Ta technika pozwala przywrócić uszkodzoną replikę, która<br />

zachowuje się w sposób bizantyjski, do poprawnego działania. Niestety trudno<br />

jest określić, czy replika działa poprawnie, czy też nie. W związku z powyższym<br />

każda z replik posiada proces <strong>na</strong>dzorujący (ang. watchdog), który co ustalony<br />

interwał rozpoczy<strong>na</strong> kontrolowany restart repliki.<br />

Pro<strong>to</strong>kół estymujący. Faza estymacji ma <strong>na</strong> celu ustalenie, który ostatni numer<br />

sekwencji zleceń repliki uz<strong>na</strong>ją za stabilny. Replika i rozgłasza komunikat <<br />

QUERY-STABLE, i, k> σi , gdzie k jest losową liczbą. Kiedy replika j odbierze<br />

komunikat wysyła odpowiedź < REPLY-STABLE, c, e, i, k> σj i, c jest ostatnim<br />

stabilnym numerem sekwencji, e jest ostatnim numerem sekwencji zlecenia<br />

przygo<strong>to</strong>wanym przez j. Replika i zachowuje <strong>na</strong>jmniejszą war<strong>to</strong>ść c oraz <strong>na</strong>jwiększą<br />

e oraz swoje własne. Następnie szacuje H M = L + c M , gdzie L jest<br />

rozmiarem dziennika, <strong>na</strong><strong>to</strong>miast c M musi być większe od jakiegokolwiek ostatniego<br />

z<strong>na</strong>cznika zatwierdzenia, c M jest taką war<strong>to</strong>ścią otrzymaną od repliki j,<br />

że przy<strong>na</strong>jmniej 2f replik podało c mniejsze bądź równe od c podanego przez<br />

j oraz f replik różnych od j podało war<strong>to</strong>ści e większe bądź równe c M .<br />

Zlecenie odzyskania stanu. Replika i wysyła zlecenie odzyskania stanu <<br />

REQUEST, < RECOVERY, H M >, t, i > σi . Parametr t w wywołaniu musi być<br />

losowym z<strong>na</strong>cznikiem większym od uprzednio wysłanego. Replika j odrzuci<br />

wiadomość z t mniejszym od uprzedniego, jak również taką wiadomość, która<br />

była <strong>na</strong>da<strong>na</strong> przez i w czasie nie większym niż połowa okresu odnowienia repliki.<br />

Takie postępowanie ma <strong>na</strong> celu wykluczenie ataków zablokowania usługi typu<br />

DoS (ang. denial-of-service), który byłby wynikiem całkowitego obciążenia

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

Saved successfully!

Ooh no, something went wrong!