Spis rzeczy
Dalej: Rozszerzenie
funkcjonalności programu
Wstecz: Wstęp
Rozdział 3
Opis programu
3.1 Przyjęty model symulacji
3.1.1 Model warstwy łącza
3.1.2 Model ARP
3.1.3 Model IP
3.1.4 Model ICMP
3.2 Implementacja
3.2.1 Konstrukcja programu
3.2.2 Symulacja
3.2.3 Interfejs użytkownika
3.3 Otoczenie dydaktyczne
Niniejszy rozdział opisuje model symulowanej sieci, funkcje realizowane
przez program oraz środowisko dydaktyczne z zestawem zadań, w którym jest
on wykorzystywany. Najważniejszym celem programu jest umożliwienie przyszłemu
użytkownikowi samodzielnej konfiguracji parametrów sztucznej intersieci
oraz sprawdzenia, czy wprowadzone ustawienia są prawidłowe. Dlatego największy
nacisk położono na symulowanie tych mechanizmów zestawu protokołów TCP/IP,
na które człowiek ma bezpośredni wpływ.
Z praktyki autora wynika, że parametrami, które każdy administrator
sieci musi umieć prawidłowo ustalać, są adres i maska IP oraz tablica tras.
Są to parametry IP odpowiadające za poprawne przekazywanie pakietów i wzajemną
osiągalność węzłów sieci. Pozostałe protokoły (TCP, UDP, ICMP, ARP), tworzące
zrąb TCP/IP są bezobsługowe i nie wymagają zazwyczaj ingerencji człowieka.
Postanowiono więc implementować tylko te z nich, które są niezbędne do
prawidłowego działania IP. Z tego względu zaimplementowano ICMP, który
jest blisko związany z IP, tym bardziej, że umożliwia on implementację
testu ping. Innym protokołem, całkowicie bezobsługowym, który został włączony
do symulacji, jest ARP. Decyzję taką podjęto, gdyż ARP jest niezbędny do
działania IP w sieciach lokalnych będących obecnie najpopularniejszą technologią
sieci komputerowych. Aby ułatwić konfigurację i diagnostykę sieci, program
umożliwia śledzenie działania elementów sieci oraz przepływu pakietu, a
także tworzenie zestawień: tabel adresów IP, tras i powiązań adresów (ARP).
Pominięto całkowicie urządzenia pracujące w warstwie łącza. Symulowanie
ich działania, a w konsekwencji umieszczenie ich na mapie, spowodowałoby
znaczną jej komplikację. Dlatego program modeluje działanie protokołów
łącza w możliwie prosty sposób.
Podczas projektowania starano się, by program był intuicyjny i łatwy
w obsłudze. Dlatego zdecydowano się na realizację graficznego interfejsu
użytkownika wraz z mapą przedstawiającą topologię sieci. Umożliwia ona
wybranie elementu sieci i skonfigurowanie go, a także animuje przepływ
pakietów. Obsługa interfejsu jest realizowana przez standardowe mechanizmy
Javy w wersji 1.0.2. Posiadają one pewne ograniczenia, szerzej omówione
wewnątrz rozdziału. Wybranie języka Java do implementacji programu było,
mimo pewnych problemów z interfejsem graficznym, właściwym krokiem. Dzięki
temu program nie jest dedykowany do konkretnej platformy sprzętowej. Zaletami
Javy ułatwiającymi implementację były obiektowy charakter języka oraz wbudowane
mechanizmy zarządzania i synchronizacji wątków. Należy pamiętać, że do
pracy z programem potrzebna jest przeglądarka obsługująca wirtualną maszynę
Javy. Wymaganie to spełnia MS Internet Explorer lub Netscape Navigator
w wersji 3.0 lub późniejszej oraz Sun HotJava.
Aby zapewnić użytkownikowi możliwość samokształcenia, stworzono scenariusz
pięciu ćwiczeń -- dokumentów HTML -- wprowadzający czytelnika w kolejne
zagadnienia związane z symulowanymi mechanizmami IP. Ćwiczenie składa się
z zadania praktycznego oraz informacji teoretycznych niezbędnych do jego
wykonania. Zadanie polega na skonfigurowaniu sieci symulowanej przez wbudowany
w stronę aplet. Kolejne zadania są coraz trudniejsze i posiadają coraz
bardziej rozbudowane mapy sieci, zaś ostatnie jest rodzajem egzaminu -
student musi wykryć kilka błędów w konfiguracji sieci i je naprawić.
Spis rzeczy Początek
rozdziału
3.1 Przyjęty model symulacji
Każda symulacja opiera się na określonym modelu upraszczającym rzeczywisty
świat. Uwzględnia on jedynie ważne dla danego zastosowania aspekty rzeczywistości,
pozostałe zaś pomija, by zredukować stopień skomplikowania zadania. Opisywany
program również opiera się na modelu upraszczającym rzeczywiste działanie
sieci komputerowej. Jak wspomniano powyżej, pominięto przede wszystkim
te cechy, na które administrator nie ma większego wpływu, i które nie są
kluczowe dla zapewnienia osiągalności, choć są ważne dla funkcjonowania
realnej sieci -- na przykład fragmentację, czy sposób przydziału prawa
do nadawania we współdzielonym medium sieci ethernet. Poniżej omówiono
dokładnie implementowany przez program model sieci.
Spis rzeczy Początek
rozdziału
3.1.1 Model warstwy łącza
Program modeluje dwa rodzaje sieci w warstwie łącza danych: linie szeregowe
i ethernet. Taka dualność mechanizmów warstwy łącza podkreśla elastyczność
IP i zaznajamia użytkownika z rzeczywistą strukturą intersieci. Z linii
szeregowych tworzone są sieci rozległe, umożliwiające łączenie oddalonych
od siebie sieci lokalnych, wśród których ethernet jest najbardziej popularną
technologią. Za wyborem ethernetu przemawiał także fakt, że jego działanie
jest łatwiejsze do wizualizacji niż sieci pierścieniowych, takich jak FDDI
czy Token Ring posługujących się znacznikiem.
W modelu linii szeregowych przyjęto następujące uproszczenia:
-
komunikacja odbywa sie w trybie połowicznie dwukierunkowym. Ograniczenie
to podjęto ze względu na animację pakietów poruszających się po sieci.
Trudno bowiem byłoby jednocześnie rysować na jednej linii dwa pakiety przemieszczające
się w przeciwnych kierunkach;
-
pakiety IP nie wymagają kapsułkowania -- są wprost przesyłane przez sieć.
W rzeczywistej linii szeregowej stosowane są protokoły warstwy łącza, których
podstawowym celem jest rozpoznanie początku ramki, wykrywanie błędów oraz
cykliczne wysyłanie specjalnych pakietów (ramek) świadczących o zdolności
do komunikacji (ang. keepalive frame). W programie funkcje takie
nie są potrzebne, gdyż linie szeregowe przesyłają obiekty -- pakiety, a
nie ciąg bitów.
Oczywiście model ethernetu także zawiera pewne uproszczenia:
-
nie uwzględnia się problemów rozproszonego zarządzania dostępem do medium.
Przesyłanie komunikatów następuje w kolejności ich zgłoszenia do wysłania.
Rozwiązanie takie podjęto w celu uproszczenia działania programu;
-
nagłówek ramki ethernetowej jest zredukowany do adresu nadawcy i odbiorcy
oraz długości. Spowodowane jest to brakiem kolizji, a więc i konieczności
ich wykrywania, a także tym, że symulacja zakłada przenoszenie przez ramki
tylko protokołu IP, w zwiazku z tym pomijany jest problem kapsułkowania
pakietów IP w ramkach.
Oprócz wymienionych powyżej, oba modele sieci warstwy łącza posiadają jeszcze
następujące cechy:
-
oba typy sieci mają taki sam maksymalny dopuszczalny rozmiar pakietu --
MTU (Maximum Transfer Unit): 1500 bajtów. Rozwiązanie takie zostało
wymuszone przez rezygnację z implementacji mechanizmów fragmentacji IP;
-
model zakłada całkowicie pewne i bezbłędne przesyłanie pakietów przez warstwę
łącza. Dlatego nie jest implementowane obliczanie i weryfikacja sum kontrolnych.
Spis rzeczy Początek
rozdziału
3.1.2 Model ARP
Program realizuje tłumaczenie adresów IP na adresy MAC za pomocą modelu
protokołu ARP. Jedynym wprowadzonym uproszczeniem w stosunku do rzeczywistego
protokołu była rezygnacja z pól określających długość i typ adresu w strukturze
pakietu, a przez to zawężenie protokołu do tłumaczenia jedynie symulowanych
typów adresów: IP i MAC. Z punktu widzenia symulacji IP uniwersalność ARP
jest całkowicie zbędna, gdyż nie obsługuje ona innych protokołów warstwy
łącza i sieci. Program realizuje następujące funkcje ARP wymagane przez
RFC 1122:
-
usuwanie przestarzałych rekordów ARP. Każda odnaleziona para adres IP --
adres MAC ma określony czas ważności, po upłynięciu którego musi być usunięta
z tablicy ARP;
-
zapobieganie lawinom zapytań ARP. Węzeł nie wysyła zapytań ARP oddzielnie
dla każdego pakietu, lecz sprawdza, czy czasem dany adres nie jest w danej
chwili poszukiwany;
-
buforowanie pakietów czekających na przetłumaczenie określonego adresu
IP na adres MAC.
Spis rzeczy Początek
rozdziału
3.1.3 Model IP
Model symuluje IP w wersji 4 z następującymi ograniczeniami:
-
nie implementuje fragmentacji i składania pakietów. Ograniczenie to przyjęto
ze względu na niewielkie -- w odczuciu autora -- znaczenie mechanizmów
fragmentacji dla osoby uczącej się konfiguracji protokołu IP. Fragmentacja
pakietów dokonuje się automatycznie i administrator sieci nie ma na nia
większego wpływu;
-
nie oblicza i nie sprawdza sum kontrolnych nagłówków. Sztuczne wprowadzanie
przekłamań byłoby kłopotliwe a uzyskane korzyści dydaktyczne -- wątpliwe.
IP bowiem samo w sobie po prostu ignoruje pakiety, jeśli stwierdzi niezgodność
sum kontrolnych;
-
nie obsługuje pól w nagłówku określających wersję protokołu, typ usługi,
związanych z fragmentacją oraz opcji. Spowodowane jest to tym, że symulowana
jest tylko jedna, czwarta wersja IP, typ usługi nawet w rzeczywistych urządzeniach
zazwyczaj nie jest interpretowany, zaś opcje nie są niezbędne do funkcjonowania
sieci;
-
nie obsługuje protokołu IGMP i adresów klasy D służących do komunikacji
grupowej, bo odbywa się ona automatycznie i nie ma wpływu na podstawowe
zadania IP.
Warto zauważyć, że oprogramowanie każdego węzła jest identyczne. Nie ma
zatem potrzeby obsługi błędnych, lub zawierających dodatkowe opcje pakietów,
gdyż symulator nie potrafi ich generować. Z tego względu nie odnosi się
do niego zdecydowana większość pozycji z długiej listy wymagań RFC 1122
dla warstwy intersieci. Te, które model spełnia to:
-
usuwanie pakietów z zerowym polem TTL,
-
zmniejszanie TTL przez każdy ruter,
-
interpretacja maski podsieci zgodnie z RFC 950,
-
wykorzystanie maski podsieci do określenia czy adres jest lokalny czy nie,
-
wyposażenie każdego węzła w tablicę tras,
-
umożliwienie dodania i usunięcia statycznej pozycji z tablicy tras,
-
użycie trasy domyślnej, jeśli tablica tras nie posiada dokładnej pozycji
dla danego pakietu,
-
poprawne funkcjonowanie węzła z pustą tablicą tras w sieci lokalnej, do
której jest włączony,
-
ustawienie adresu nadawcy w pakiecie -- jest to adres wysyłającego go węzła.
Spis rzeczy Początek
rozdziału
3.1.4 Model ICMP
Protokół ICMP został ograniczony do następujących typów komunikatów:
-
echo i odpowiedź na echo,
-
odbiorca nieosiągalny,
-
przekroczony czas,
-
przekierowanie.
Zaniechano implementacji - ze względu na rzadkie zastosowanie - pozostałych
typów komunikatów, nie są one zresztą obligatoryjne.
Zgodnie z RFC1122 nie jest wysyłany pakiet ICMP w przypadku błędu spowodowanego
przez komunikat ICMP o błędzie lub datagram rozgłoszeniowy. Węzły zawsze
odpowiadają na komunikat echo. Komunikat przekierowanie wysyłają
tylko rutery, a węzeł do którego został wysłany wprowadza odpowiednie zmiany
do swojej tablicy tras.
Spis rzeczy Początek
rozdziału
3.2 Implementacja
Projektowanie i wstępne prace nad programem rozpoczęły się latem 1997 roku.
Autor początkowo zamierzał nieco inaczej zaprojektować interfejs użytkownika,
w szczególności wywoływanie akcji. W założeniu mapa miała być integralną
częścią strony WWW, zaś akcje na obiektach mapy miały być wykonywane za
pomocą rozwijanego (ang. pop-up) menu pojawiającego się po naciśnięciu
klawisza myszy na wybranym obiekcie. Zawartość menu byłaby uzależniona
od rodzaju obiektu.
Niestety, rok temu w powszechnym użyciu był JDK (Java Development
Kit) w wersji 1.0.2, który nie obsługiwał rozwijanego menu. Autor musiał
więc zmienić koncepcję interfejsu użytkownika i zrealizował technikę ,,zaznacz
i wykonaj'': najpierw zaznacza się obiekt na mapie, a następnie wybiera
dla niego polecenia z menu. W tym celu został zaprojektowany uniwersalny
pasek menu, którego pozycje uaktywniają się w zależności od właściwości
zaznaczonego obiektu. Konsekwencją stosowania menu w formie paska było
stworzenie oddzielnego okna, gdyż w środowisku JDK 1.0.2 jedynie obiekty
klasy Frame, czyli samodzielne okna mogą posiadać menu. Aplet
widoczny jest więc na stronie HTML jako przycisk, naciśnięcie którego powoduje
otworzenie głównego okna symulatora.
Autor nie zdecydował sie na zmianę podejścia po udostępnieniu przez
Sun JDK 1.1.3 z powodu wprowadzonych w tej wersji licznych zmian w bibliotekach
obsługujących interfejs użytkownika. Poza tym realizacja symulatora w wersji
1.0.2 pozwala uruchamiać program za pomocą starszych przeglądarek.
Napisanie symulacji protokołu IP w języku obiektowym pozwoliło na uproszczenie
konstrukcji programu w porównaniu z kodem obsługującym rzeczywisty protokół.
Oto przykłady:
-
symulacja nie wymaga zajmowania się optymalizacją zarządzania buforami
pakietów;
-
symulowana sieć ma małe rozmiary, z tego względu np. do znalezienia pozycji
w tabeli tras wykorzystywany jest algorytm wyszukiwania liniowego, gdyż
tabele tras są bardzo krótkie;
-
kapsułkowanie pakietów zrealizowano przez dziedziczenie obiektów;
-
w obiektach reprezentujących pakiety znalazły się dodatkowe informacje
(dowiązania) ułatwiające konstrukcję symulacji;
-
wszystkie węzły symulacji wykonują ten sam kod. W związku z tym nie trzeba
obsługiwać sytuacji nietypowych, których symulacja nie potrafi stworzyć.
Spis rzeczy Początek
rozdziału
3.2.1 Konstrukcja programu
Program składa się z 48 klas zgrupowanych w pakiet o nazwie ips
oraz dodatkowej klasy definiującej wygląd mapy. Pakiet ips jest
uniwersalny -- pozwala na skonfigurowanie topologii symulowanej sieci przez
użytkownika za pomocą stworzonych w tym celu metod. Sposób konstrukcji
własnej mapy jest opisany w rozdz. 4.1.
Klasy należące do pakietu ips definiują następujące rodzaje
obiektów:
-
modele -- struktury niezbędne do działania protokołów, odwzorowujące byty
rzeczywistego świata: węzły, sieci, adresy, pakiety;
-
obiekty mapy -- obsługują graficzną reprezentację topologii symulowanej
sieci, umożliwiają selekcję elementów sieci oraz obsługują animację przepływu
pakietów;
-
pozostałe obiekty interfejsu użytkownika: główne okno wraz z menu, dialogi;
-
obiekty pomocnicze: wyjątki, obsługa raportów, śledzenie obiektów symulacji,
obsługa ikon węzłów.
Szkieletem, który integruje ze sobą całość programu jest obiekt klasy
Framework,
dziedziczący po klasie java.applet.Applet. To on tworzy okno symulacji,
mapę i elementy sieci, uruchamia wątki oraz realizuje funkcje demona zegarowego.
W jego klasie są też zdefiniowane metody służące do konstrukcji mapy.
Program jest napisany wielowątkowo. Poszczególne wątki realizują następujące
zadania:
-
przesyłanie pakietów (realizowane przez obiekty klas Host, SerialLine
i EtherNet);
-
cykliczne rysowanie mapy (klasa Map);
-
demon zegarowy (klasa Framework) służący do sterowania mechanizmami
protokołów zależnymi od upływu czasu.
Należy jeszcze wspomnieć o zdarzeniach generowanych przez użytkownika,
obsługiwanych przez oddzielny wątek. Dostęp do wspólnych struktur danych
(tablice tras, ARP, kolejki pakietów) jest synchronizowany za pomocą wbudowanych
mechanizmów maszyny wirtualnej Javy. Klasy RoutingTable, PacketBuffer,
EthernetPort
pełnią funkcję monitorów chroniących swoje zasoby za pomocą synchronizowanych
metod.
Spis rzeczy Początek
rozdziału
3.2.2 Symulacja
Istnieją trzy podstawowe rodzaje elementów, z których złożona jest sieć:
-
węzły -- nadają, przekazują i odbierają pakiety zgodnie z posiadaną tablicą
tras;
-
sieci -- przekazują pakiety miedzy portami i sterują animacją. Są dwa rodzaje
sieci: rozgłoszeniowe i punkt-punkt (linie szeregowe);
-
porty (interfejsy) -- sprzęgają węzły z sieciami. Działanie portu zależy
od rodzaju sieci, do której jest dołączony. Porty ethernetowe obsługują
ARP.
Podczas projektowania przyjęto rozwiązanie naśladujące rzeczywisty świat:
każdy węzeł jest niezależnym wątkiem mogącym generować, przesyłać i odbierać
pakiety. Z uwagi na potrzebę wizualizacji przepływu pakietów przez sieć,
konieczne było również stworzenie wątków sterujących poruszaniem się pakietów
po poszczególnych łączach. Wątki działają więc w kontekście każdego węzła
i każdej sieci. Oba rodzaje obiektów posiadają kolejkę wejściową. Pobierają
z niej kolejno pakiety, wykonują pewne czynności (węzeł znajduje drogę
w tablicy tras, sieć steruje przebiegiem animacji) i przesyłają pakiet
do określonego portu. Za jego pośrednictwem pakiet jest wstawiany do kolejki
wejściowej innego wątku. Kolejki są realizowane jako bufory cykliczne (klasa
PacketBuffer).
Wykorzystują one mechanizmy synchronizacji procesów dostarczane przez Javę.
W przypadku przepełnienia bufora jest generowany wyjątek klasy NoSpaceException,
którego obsługa polega na zignorowaniu danego pakietu. Układ pracuje w
schemacie producent-konsument z wieloma producentami i jednym konsumentem.
Przekazywanie pakietów w programie zostało przedstawione na rys. 3.1.
Odcień szarości strzałek zależy on od wątku, który steruje danym przepływem
(przepływy inicjowane przez węzeł są jasno szare, sieć -- ciemno szare,
a przez demona zegarowego -- czarne).
|
Rysunek 3.1: Przepływ pakietów między
wątkami programu
Z uwagi na to, że działanie sieci szeregowych i rozgłoszeniowych znacznie
się różni, konieczne stało się rozdzielenie portów i sieci na dwa rodzaje:
linie szeregowe (klasa SerialLine) posiadają dowiązania do dwu
portów -- końców łącza. Po pobraniu pakietu z kolejki sprawdzają z którego
portu został wysłany, by określić kierunek przepływu na mapie. Po zakończeniu
,,przesyłania'' czyli obsługi wizualizacji przekazują pakiet do drugiego
portu. Inaczej działają sieci rozgłoszeniowe (klasa EtherNet).
Z założenia można do nich dołączyć wiele interfejsów. Po pobraniu pakietu
z kolejki jest identyfikowany jego nadawca, aby określić, z którego punktu
na szynie ma się ,,rozchodzić'' pakiet. Gdy pakiet już ,,zniknie'' z sieci,
każdy port, włącznie z nadawcą, otrzymuje jego duplikat.
Podobnie interfejsy -- dołączone do linii szeregowych (klasa SerialPort)
mają bardzo prostą konstrukcję. Jedynym ich zadaniem jest wstawienie pakietu
do odpowiedniej kolejki i w razie potrzeby wstawienie własnego adresu w
pole nadawcy. Zupełnie inaczej jest z portami klasy EthernetPort.
Obsługują one protokół ARP. Poza tą klasą żaden obiekt nie ma bezpośredniego
dostępu do struktur danych związanych z tłumaczeniem adresów. W większości
implementacji tablica ARP jest wspólna dla wszystkich portów systemu, a
każdy jej wiersz posiada kolumnę wskazującą, którego portu dotyczy [#!COMER2!#].
Ze względu na obiektowy język autor przyjął inne rozwiązanie: każdy port
ethernetowy posiada własną tablicę bez wspomnianej kolumny. Dzięki temu
można było ograniczyć dostęp do tablicy i zmniejszyć liczbę wątków sięgającą
do danej instancji. Ostatnim rodzajem interfejsu jest port lokalny (klasa
LocalPort)
mający za zadanie obsługę pakietów zaadresowanych do węzła, z którym jest
związany.
Działanie wątku węzła nie zależy od rodzaju posiadanych portów i podłączonych
do nich sieci. Obsługuje on bowiem tylko pakiety IP i ICMP. Każdy węzeł
po pobraniu pakietu z kolejki analizuje jego zawartość, szuka odpowiedniej
pozycji w tablicy tras i przesyła pakiet zgodnie ze znalezioną drogą do
jednego ze swoich portów.
Wszystkie omawiane klasy mają jedną nadklasę
NetEntity, która
realizuje zadania wspólne dla wszystkich elementów sieci: komunikację z
interfejsem użytkownika, a dokładniej -- obsługę tworzenia raportów i zgłaszania
komunikatów.
Spis rzeczy Początek
rozdziału
3.2.3 Interfejs użytkownika
Interfejs użytkownika to przede wszystkim okno główne (klasa MainWindow)
zawierające mapę -- graficzną reprezentację topologii sieci, menu ze wszystkimi
dostępnymi użytkownikowi funkcjami programu oraz pasek przy swojej dolnej
krawędzi, na którym ukazuje się opis aktywnego w danej chwili elementu
mapy. Metody głównego okna determinują reakcję na wybranie przez użytkownika
pozycji z menu.
Menu
Menu jest podzielone na następujące sekcje:
-
Plik posiada jedną pozycję: Wyjście służącą do zamknięcia
okna,
-
Edycja służy do zmiany konfiguracji obiektów sieci: adresów interfejsów
(pozycja Adres IP), dodawania (Dodaj trasę) i usuwania (Usuń
trasę) wierszy z tablic tras węzłów,
-
Widok zawiera akcje służące do śledzenia aktywności obiektów oraz
oglądania ich konfiguracji,
-
Akcje zawiera jedną pozycję: Ping przeznaczony do testowania
osiągalności węzłów,
-
Pomoc zawiera informacje o układzie i funkcji menu, mapy oraz informację
o autorze.
Pozycje w sekcjach Edycja, Widok i Akcje są uaktywniane
w zależności od rodzaju aktywnego obiektu. Jeśli zaznaczony jest węzeł
sieci, to można dodać pozycję do jego tablicy tras, otworzyć bądź zamknąć
okno podglądu (pozycja Podgląd), obejrzeć tablicę tras i adresy
wszystkich portów oraz wysłać pakiet ICMP echo pod wskazany adres.
Jeśli zaznaczony został port, to można nadać lub zmienić jego adres IP,
otworzyć bądź zamknąć okno podglądu, a także, jeśli jest to port dołączony
do ethernetu, obejrzeć jego tablicę ARP. W przypadku zaznaczenia sieci
jest również dostępna pozycja okna śledzenia, a także można -- co jest
dużym ułatwieniem przy diagnozowaniu problemów -- obejrzeć wszystkie adresy
portów dołączonych do sieci zestawione w jednej tabeli.
Spis rzeczy Początek
rozdziału
Mapa
Mapa jest najbardziej skomplikowanym elementem interfejsu graficznego.
Pokazuje ona topologię symulowanej sieci, przedstawia poruszające się po
sieci pakiety, a przede wszystkim umożliwia wybór elementów symulacji przez
użytkownika. Mapa odzwierciedla symulowane obiekty i ich powiązania. Z
uwagi na specyficzny charakter stworzono hierarchię obiektów -- elementów
mapy. Są to:
-
Node -- symbolizujący węzeł,
-
Connector -- symbolizujący port,
-
Link -- symbolizujący sieć.
Ostatnia klasa ma wiele podklas z uwagi na skomplikowanie i duże różnice
w realizacji wizualizacji przepływu pakietów.
Elementy mapy mogą być w jednym z następujących stanów:
-
wolny
-
-- element jest płaski i szary,
-
aktywny
-
-- element jest wypukły, jego opis pojawia się pod mapą,
-
aktywny i wybrany
-
-- element zmienia kolor na czerwony,
-
wybrany
-
-- element pozostaje czerwony, lecz staje się płaski.
Bycie aktywnym jest związane z położeniem wskaźnika względem elementu i
symbolizowane ,,wypukłością'' elementu, który sygnalizuje w ten sposób,
że jest samodzielną częścią mapy i może być wykonana na nim pewna akcja.
Bycie wybranym związane jest ze zdarzeniem zwolnienia klawisza myszy w
obrębie elementu podczas gdy jest aktywny i symbolizowane zmianą barwy.
W tym stanie może być wybrana dla elementu akcja z menu. Jeśli żaden inny
element nie jest w danej chwili aktywny, to pod mapą znajduje się opis
elementu wybranego. Diagram zmiany stanów jest pokazany na rys. 3.2.
Umieszczono na nim tylko te zdarzenia, które są istotne dla zmiany stanu
elementu (naciśnięcie klawisza myszy nie zmienia go).
|
Rysunek 3.2: Diagram zmiany stanów elementów mapy
Realizacja animacji wymaga cyklicznego odrysowywania mapy. Należy zauważyć,
że w danej chwili może przepływać przez symulowana intersieć wiele pakietów,
a przepływ każdego z nich będzie kontrolowany przez inny wątek sieci. W
związku z tym zdecydowano się na rozdzielenie funkcji animacji (a dokładniej
modyfikacji położenia pakietów) od rysowania. Zadanie odświeżania mapy
powierzono wątkowi działającemu w kontekście obiektu klasy Map,
który posiada dowiązania do wszystkich elementów mapy. Wątek bada co kilkadziesiąt
milisekund, czy zmienił się chociaż jeden element mapy. Jeśli tak -- to
odrysowuje poprzez bufor nowy obraz i wyświetla go na ekranie.
Spis rzeczy Początek
rozdziału
Okna dialogowe
Konfiguracja symulacji odbywa się za pomocą okien dialogowych. Każdy dialog
jest zdefiniowany w osobnej klasie:
-
DialogSetAddress służy do przypisania i zmiany adresu IP i maski
dla danego portu;
-
DialogAddRoute umożliwia zdefiniowanie pozycji w tablicy tras.
Może być to domyślna brama albo trasa do sieci lub podsieci;
-
DialogDeleteRoute usuwa trasę identyfikowaną przez adres i maskę
sieci;
-
DialogPing umożliwia wprowadzenie parametrów do testu ping. Użytkownik
może określić liczbę wysyłanych pakietów, ich długość, czas oczekiwania
na odpowiedź oraz wartość pola TTL w nagłówku IP.
Klasy weryfikują poprawność parametrów wprowadzonych przez użytkownika
oraz wywołują odpowiednią metodę wybranego obiektu symulacji. Oprócz wymienionych
dialogów istnieją jeszcze dwa rodzaje okien służące do prezentacji konfiguracji
i działania symulowanej sieci. Ukazują się one po wybraniu jednej z pozycji
menu Widok.
Okna podglądu powstały by możliwić śledzenie zdarzeń generowanych przez
obiekty symulacji. Zbieranie komunikatów realizują obiekty klasy Audit.
Każdy obiekt dziedziczący po klasie NetEntity przesyła komunikaty
własnemu obiektowi śledzącemu. Komunikaty są wypisywane do okna dialogowego
zdefiniowanego w klasie AuditWindow. Posiada ono przycisk Wstrzymaj
pozwalający zatrzymać wypisywanie komunikatów na ekran. Dzięki temu można
je przeanalizować w sytuacji, gdy program szybko generuje dużą ich ilość.
Klasy służące do wypisywania zdarzeń wykorzystywane są także do obsługi
komunikatów testu ping.
Program umożliwia obejrzenie następujących raportów:
-
tablicy adresów,
-
tablicy ARP,
-
tablicy tras.
Zaprojektowano osobną klasę obiektów Report służących do reprezentacji
raportów i zawierającą dwuwymiarową tablicę napisów oraz klasę DialogReport
obsługującą okienko dialogowe. Aby umożliwić odświeżanie wyświetlanych
raportów przyjęto, że obiekt klasy DialogReport przechowuje dowiązanie
do obiektu NetEntity, którego raport dotyczy, ten zaś posiada
uniwersalną metodę getReport() do tworzenia raportów określonego
typu.
Podsystem pomocy
Wiadomości o funkcjach programu można uzyskać za pomocą podsystemu pomocy.
Ma on charakter kontekstowy: każde okno dialogowe jest zaopatrzone w przycisk
Help
umożliwiający uzyskanie informacji dotyczących pól okna. Po naciśnięciu
przycisku pojawia się nowe okno przeglądarki WWW z odpowiednią sekcją strony
HTML. Wszystkie informacje podsystemu pomocy są bowiem umieszczone w jednym
dokumencie o domyślnej nazwie help.html.
Spis rzeczy Początek
rozdziału
3.3 Otoczenie dydaktyczne
Jednym z celów niniejszej pracy było stworzenie studentom warunków
do samodzielnej nauki zasad działania sieci IP. W tym celu został przygotowany
program szkolenia składający się z pięciu części -- dokumentów napisanych
w HTML. Każdy z nich zawiera program (aplet Javy) z określoną topologią
i konfiguracją sieci, opis zadania do przeprowadzenia z programem oraz
podstawowe informacje niezbędne do wykonania zadania.
Część 1 -- zapoznanie z programem
Program pierwszej części ma na celu nauczenie użytkownika korzystania z
programu. Wszystkie węzły wchodzące w skład sieci są poprawnie skonfigurowane,
a zadaniem studenta jest:
-
zapoznanie się z adresacją węzłów w sieci,
-
nauczenie się posługiwania testem ping,
-
nauczenie się posługiwania oknami śledzenia.
Mapa sieci dołączona do tej części pokazuje dwie sieci lokalne połączone
ruterem.
Część 2 -- podstawy IP, ICMP i ARP
Druga część scenariusza zawiera podstawowe informacje na temat protokołów
IP, ICMP i ARP. W tej części student:
-
poznaje zasady adresacji IP oraz klasy adresów,
-
poznaje strukturę nagłówka IP i znaczenie jego pól,
-
zaznajamia się ze sposobem działania ARP,
-
adresuje sieć lokalną oraz analizuje wymianę pakietów związaną z testem
ping.
Mapa w tej części pokazuje pojedynczą sieć lokalną. Student musi wybrać
zestaw zawierający poprawne adresy IP, przypisać je węzłom i sprawdzić
pingiem osiągalność. Jednocześnie sprawdzane jest działanie protokołu ARP
i zawartość jego tablic.
Część 3 -- konfiguracja tablicy tras
Trzecia część jest poświęcona jest problematyce trasowania. Omawia się
rolę i budowę tablicy tras. Poruszone są przyczyny powstawania komunikatów
ICMP odbiorca nieosiągalny, przekroczony czas i przekierowanie
oraz ich skutki. Mapa zadania przedstawia typową sieć komputerową organizacji
posiadającej odległe oddziały. Węzły sieci mają nadane adresy, a zadaniem
studenta jest konfiguracja ich tablic tras oraz wykonanie testów ping w
różnych relacjach. Testy pozwalają sprawdzić poprawność dokonanych ustawień
oraz zobrazować pewne sytuacje typowe dla działania IP.
Część 4 -- podsieci IP
Część czwarta omawia dzielenie przestrzeni adresowej na podsieci. Przedstawione
są zasady stosowania masek adresowych. Zadanie wymaga przydziału adresów
należących do jednej sieci klasy C węzłom należącym do sześciu różnej wielkości
sieci lokalnych. Ponieważ intersieć tworzy pętlę, więc dodatkowo należy
tak skonfigurować tablice tras ruterów, by pakiety podążały zawsze najkrótszą
drogą.
Część 5 -- sprawdzian
Ostatnia, piąta część jest pewnego rodzaju egzaminem sprawdzającym nabytą
wiedzę. Sprawdzian wymaga znalezienia błędów w konfiguracji pewnej sieci,
a także zaprojektowania dla niej własnej adresacji i trasowania.
Zagadnienia omówione w poszczególnych częściach nie wyczerpują oczywiście
całości problematyki związanej z sieciami IP. Zawierają jedynie podstawowe
informacje, niebędne do pracy z symulatora i pomocne w zrozumieniu działania
IP.
Spis rzeczy
Wstecz: Początek rozdziału
Dalej: Rozszerzenie funkcjonalności
programu