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