Ns2 i Ns3

Ostatnio przypomniały mi się moje laboratoria z sieci komputerowych i telefonii IP. Polegały głównie na łączeniu komputerów, konfigurowania routingów, translacji adresów, podsłuchiwanie sieci. Czasem dostaliśmy również jakiś ciekawszy sprzęt do zabawy (w stylu router Cisco), ale teraz muszę przyznać, że to były straszne nudy.

Obecnie zostałem poniekąd "zmuszony" do zapoznania się z symulatorami sieci i ocenienia, które z nich spełnią odpowiednie wymagania. Kilka takowych się znalazło (m.in. opnet, omnet++),  ale ich wadami są jak zwykle albo trudnodostępność, albo fakt, że nie są już rozwijane od dłuższego czasu. W momencie, gdy dotarłem do ns2 (w sumie to od niego zacząłem tę przygodę:) ) muszę przyznać, że ktoś odwalił kawał dobrej roboty.

ns2 jest to projekt open-source stworzony przez badaczy dla badaczy. Rdzeń symulatora jest napisany w pełni obiektowo w C++, a skrypty eksperymentów (i nie tylko) można pisać w obiektowej wersji Tcl - OTcl. ns2 umożliwa symulowanie praktycznie każdej warstwy modelu OSI/ISO, począwszy od warstwy fizycznej, poprzez sieciową (wraz z włączeniem różnych protokołów routingu), aż po zachowanie się protokołów warstwy transportowej i aplikacji.

W celu przetestowania własnego protokołu (którejkolwiek z warstw) "wystarczy" go tylko zaimplementować w symulatorze. Ostatecznie nie jest to dosyć trudne, gdyż można wzorować się na już napisanych algorytmów.

Efektem działania symulatora jest plik tekstowy w którym zawarte są wszystkie niezbędne informacje na temat każdego z pakietów jaki w naszej wirtualnej sieci podróżował. Wystarczy teraz zaprząc jakiś parser (np. awk), coś do rysowania wykresów (np. gnuplot) i już możemy się cieszyć naszymi wynikami :)

Dodatkowo jeżeli chcielibyśmy wizualnie zobaczyć co się w naszej sieci dzieje można skorzystać z programu NAM (Network Animator) towarzyszącego ns2. Który na podstawie odpowiedniego pliku wynikowego z ns2 stworzy ładną animacje ruchu na poszczególnych połączeniach węzłów.

To tyle jeżeli chodzi o ns2. Chciałbym jeszcze wspomnieć o kolejnej wersji symulatora ns3, która jest w trakcie powstawiania. W przeciwieństwie do ns2, ns3 jest w całości napisana w C++ (ns2 korzysta również z OTcl) i jak na razie skrypty eksperymentów to są programy napisane w C++ (aktualnie powstają bindingi do pythona). Ciekawostką jeżeli chodzi o ns3 jest to, że wspiera on format plików pcap, dzięki czemu możemy bezproblemowo odczytać wyniki naszej symulacji albo poprzez tcpdump, albo wireshark <-- czyż to nie jest dużo wygodniejsze niż pliki tekstowe? :P

Więcej informacji można znaleźć na stronie symulatora:

  1. ns2 i nam
  2. ns3

5 Responses to “Ns2 i Ns3”

  1. witam,

    Chciałbym się dowiedzieć z jakich źródeł(www, literatura) korzystałeś symulując protokoły w ns2. Jakie informacje o protokole są potrzebne do symulacji, od czego najlepiej zacząć poznawanie ns2. Może posiadasz jakieś cenne rady dla początkującego użytkownika ns2. Z góry dzięki,

    pozdrawiam

  2. Na początek najlepiej przejrzeć dokumentację zawartą na stronach ns2 (link jest podany w artykule). Znajdziesz tam dużo materiałów zarówno o podstawowej składni OTcl, a także o wykorzystania tego języka do pisania eksperymentów.
    Jeżeli chcesz się bawić gotowymi protokołami to w katalogu ze źródłami NS2 znajduje się dużo przykładowych eksperymentów i nikt nie zabrania ich modyfikowania, aby poznać różne aspekty działania protokołu ;)

    PS. Komentarze przeniosłem do odpowiedniego postu.

  3. czy moduly do gprs, edge i hsdpa sa napisane pod ns2?

  4. hej, moze bawiles sie sieciami mobilnymi ad-hoc. Potrzebuje zmodyfikowac ktorys z juz zaimplementowanych protokolow tak zeby obslugiwal klasteryzacje. Jezeli mialbys jakiekolwiek materialy albo punkty startowe to z gory dziekuje.

  5. Hmm.. Przeze klasteryzację rozumiem, że planujesz dokonywać podziału całej sieci MANET na kilka stref i routing zachodzi w obrębie jednej strefy oraz w razie konieczności pomiędzy strefami?

    Jeśli tak, to warto się zainteresować protokołem ZRP (Zone Routing Protocol). Dzieli się on na dwa protokoły: wewnątrz-strefowy i między-strefowy. Plus algorytmy wyznaczania stref.

    Z tego co widzę to Twoim zadaniem jest bodajże zmodyfikowanie jakiegoś protokołu to w pierwszej kolejności polecam zaznajomienie się na jakiej zasadzie działa ZRP (jaka jest sygnalizacja, jak wyznaczane są strefy). A następnie zainteresowanie się jednym z protokołów AODV, DSR lub OLSR.

    W Internecie powininieneś znaleźć trochę materiałów na temat idei działania ZRP, kod do NS2 również powinien się znaleźć.

Leave a Reply