peerSim charakterystyka

Transkrypt

peerSim charakterystyka
peerSim
Jakub Aftowicz, Grzegorz Grzelachowski
Symulatory
● Język programowania : głównie JAVA, ale również C++
● Skala: od kilku do kilku milionów węzłóe
● Wsparcie: ustrukturyzowane i/lub nieustrukturyzowane
nakładki
● Status: Martwy/Aktywny
● Zalety
● Wady
peerSim charakterystyka
●
●
●
●
●
●
Język programowania: Java
Skala: 10^ 6 węzłów przy uzyciu mechanizmu cykli.
Wsparcie: ustrukturyzowane i nieustrukturyzowane nakładki
Status:
○ Aktywny
○ Ostatnia odsłona Peersim 1.0.5, 2009-09-29
○ Ciągły rozwój sekcji peersim-extras
Zalety:
○ Duża skalowalność.
○ Modele symulacyjne cycle-based oraz event-based
○ Wsparcie dla znanych modeli przetwarzania.
○ Wsparcie dla sieci dynamicznych.
Wady:
○ Brak detali dotyczących warstwy komunikacyjnej.
○ Brak wsparcia dla rozproszonych symulacji.
○ Only cycle based engine is documented.
peerSim historia
●
●
●
●
●
Alberto Montresor & Mark Jelasity
wersje 0.0 i 0.1 wydane w roku 2004
wersja 1.0 wydane w listopadzie 2005
otwarcie na community
140 publikacji, z czego 108 nie sygnowanych przez
autorów symulatora
Tryby cycle-based i event-based
PeerSim wspiera dwa modele symulacji: model cykliczny (cycle-based/cycle-driven) oraz tradycyjny model wydarzeń (eventbased/event-driven).
Model cykliczny
●
●
●
●
Uproszczony model, umożliwiający bardzo dużą skalowalność i wydajność kosztem utraty realizmu przetwarzania
Model zakłada całkowite wyeliminowanie warstwy transportowej
Model zakłada brak współbieżności
Węzły komunikują się bezpośrednio, okresowo według pewnego pożądku wykonują obliczenia i wywołują metody innych
obiektów.
Model wydarzeń
●
●
●
●
Model umożliwia obserwacje mechanizmów ukrytych w modelu cyklicznym
Ten modelu przetwarzanie jest podobny do modelu cycle-based poza zarządzaniem czasem i sposobem przekazywaniem
kontroli do protokołów.
Możliwe jest napisanie sterowania dla modelu wydarzeń które wysyła wydarzenia wiadomości (lub też generuje zdażenia)
do protokołów
W wielu przypadkach sterowanie bazuje na zewnętrznych wiadomościach (np. generowanych przez zapytania
użytkownika)
Byty w trybie cycle driven
● Node - podstawowy element sieci, jest kontenerem
protokołów, posiada unikalny ID
● CDProtocol - konkretny protokół dla modelu CD,
definiuje co ma się dziać w każdym kolejnym cyklu
● Control - interfejs, który umożliwia wykonywanie
pewnych czynności w różnych momentach symulacji,
zazwyczaj jest to jakaś obserwacja albo modyfikacja
symulacji
● Linkable - zarządza zbiorem sąsiadów (połączeń)
wierzchołka, tworzy graf węzłów
● Protocol służy często do przechowywania wartości
związanych z danym wierzchołkiem (stąd dziedziczenie
po SingleValueHolder w przykładach)
● Każdy Node ma swoją instancję każdego z protokołów
● Control może służyc również do inicjalizacji symulacji,
wymaga to odpowiedniego wpisu w konfiguracji
● Każdy Control i Protocol mają skojarzony ze sobą
Scheduler, który decyduje kiedy mają one zostać
wykonane (domyślnie następuje to co jeden cykl)
Konfiguracja w modelu CD
●
●
●
●
●
●
●
●
pary klucz - wartość
odczytywane w konstruktorach klas
<protocol|init|control>.string_id [full_path_]classname
<protocol|init|control>.string_id.parameter_name value
random.seed <wartosc>
// w kodzie CommonState.r
control.shf Shuffle
simulation.cycles 30
network.size 50000
protocol.lnk IdleProtocol
protocol.avg example.aggregation.AverageFunction
protocol.avg.linkable lnk
init.rnd WireKOut
init.rnd.protocol lnk
init.rnd.k 20
init.lin LinearDistribution
init.lin.protocol avg
init.lin.max 100
init.lin.min 1
include.init rnd lin
control.avgo example.aggregation.AverageObserver
control.avgo.protocol avg
Byty w trybie event driven
● EDProtocol - protokół definiujący działanie w momencie
nadejścia wiadomości
● CDProtocol - cykliczne wywoływany, potrzebne
zdefiniowanie dodatkowo CDScheduler
● Transport - abstrakcyjna warstwa transportowa,
możliwe budowanie hierarchii
-UniformRandomTransport
-UnreliableTransport
Konfiguracja event driven
SIZE 1000
CYCLES 100
CYCLE SIZE*10000
protocol.urt UniformRandomTransport
protocol.urt.mindelay (CYCLE*MINDELAY)/100
protocol.urt.maxdelay (CYCLE*MAXDELAY)/100
protocol.tr UnreliableTransport
protocol.tr.transport urt
protocol.tr.drop DROP
Przykład tworzenia topologii
●
●
●
●
x oraz y z przedziału [0;1]
w0=(0,5;0,5)
W(wj) oznacza liczbę hopów danego wierzchołka od w0
wierzchołki i = 1 .. n-1dołączamy do takiego, dla którego
wartość
jest najniższa
● w gnuplot:
set xrange [0:1]
set yrange [0:1]
plot 'graph.dat' u 1:2 with lines lc rgb "black" lw 2 notitle
Ciekawe linki
● Porównanie symulatorów: An Overview on Tools for
Peer to Peer Network Simulation (2010)
● Strona domowa peerSim: http://peersim.sourceforge.net
● Pobieranie: http://sourceforge.
net/projects/peersim/files/peersim-1.0.5.zip/download
● Paczka do zajęć: http://sirius.cs.put.poznan.
pl/~inf94258/srds/magisterka.zip

Podobne dokumenty