rozprawa doktorska-78 - Instytut Badań Systemowych PAN
Transkrypt
rozprawa doktorska-78 - Instytut Badań Systemowych PAN
Instytut Badań Systemowych Polskiej Akademii Nauk Robert Dekowski Zastosowanie zmodyfikowanej metody symulowanego wyżarzania do optymalizacji przepustowości sieci komputerowych Rozprawa doktorska napisana pod kierunkiem prof. nadzw. dr hab. inż. Jacka Malinowskiego. Warszawa 2010 Spis treści Wstęp.......................................................................................................................................... 7 Rozdział 1................................................................................................................................. 14 Protokół OSPF – zastosowanie i własności ............................................................................. 14 1.1 Skrócony opis protokołu OSPF...................................................................................... 15 1.2 Historia protokołu OSPF................................................................................................ 17 1.3 Podstawowe własności protokołu OSPF........................................................................ 18 1.3.1 Wsparcie protokołu OSPF dla różnych typów sieci................................................ 18 1.3.2 Obsługa masek IP o zmiennej długości................................................................... 23 1.3.3 Podział systemów autonomicznych na obszary ...................................................... 24 1.3.4 Budowa i wykorzystanie bazy stanów łączy........................................................... 29 1.3.5 Budowa i wykorzystanie drzewa najkrótszych ścieżek .......................................... 31 1.3.6 Typy komunikatów używanych przez OSPF .......................................................... 32 1.3.7 Rodzaje routerów .................................................................................................... 39 1.4 Dodatkowe własności protokołu OSPF.......................................................................... 40 1.5 Bezpieczeństwo w protokole OSPF ............................................................................... 42 1.6 Równoważenie obciążenia w protokole OSPF .............................................................. 44 1.6.1 Inne rozwiązania równoważenia obciążenia ........................................................... 46 1.7 Podsumowanie ............................................................................................................... 54 Rozdział 2................................................................................................................................. 55 Równoważenie obciążenia z wykorzystaniem tras o równym i nierównym koszcie .............. 55 2.1 Ogólny opis proponowanego rozwiązania ..................................................................... 55 2.2 Szczegółowy opis proponowanego rozwiązania............................................................ 56 2.2.1 Warunki niezbędne do włączenia (wyłączenia) równoważenia obciążenia typu NK .......................................................................................................................................... 56 2.2.2 Utworzenie tablicy routingu zawierającej odpowiednie wpisy .............................. 57 2.2.3 Rozdzielenie ruchu sieciowego na różne trasy według przyjętego algorytmu ....... 65 2.3 Przykłady działania protokołu OSPF ............................................................................. 67 2.4 Dodatkowe aspekty proponowanego rozwiązania ......................................................... 68 2.5 Sposób generowania i dystrybucji parametrów beta...................................................... 73 2.6 Spodziewane wyniki ...................................................................................................... 77 Rozdział 3................................................................................................................................. 79 Teoretyczne aspekty głównego zagadnienia badawczego ....................................................... 79 - 3 - 3.1. Graf dwudzielny jako model środowiska sieciowego................................................... 80 3.2 Sformułowanie zadań optymalizacji .............................................................................. 81 3.2.1 Sformułowanie zagadnienia optymalizacji jako zadania programowania liniowego .......................................................................................................................................... 81 3.2.2 Sformułowanie zagadnienia optymalizacji jako zadania programowania NCSP ... 84 3.3 Zasada działania metody dokładnej - Simplex............................................................... 85 3.4 Budowa algorytmu wyznaczania przepustowości środowiska sieciowego ................... 89 3.4.1 Ograniczenia algorytmu wyznaczania przepustowości środowiska sieciowego .... 97 3.4.2 Zmienne decyzyjne w metodzie SW wykorzystującej algorytm 3 ......................... 98 3.4.3 Zbiór rozwiązań dopuszczalnych dla metody SW wykorzystującej algorytmu wyznaczania przepustowości środowiska sieciowego ..................................................... 98 3.4.4 Analiza funkcji celu dla metody SW....................................................................... 99 3.5 Obliczenia i symulacja dla środowiska z rys. 3.2 ........................................................ 100 3.5.1 Opis przyjętych warunków początkowych ........................................................... 101 3.5.2 Obliczenia.............................................................................................................. 103 3.5.3 Symulacja .............................................................................................................. 107 3.6 Inne przykłady.............................................................................................................. 108 Rozdział 4............................................................................................................................... 115 Optymalizacja przepustowości środowiska sieciowego z zastosowaniem metody symulowanego wyżarzania .................................................................................................... 115 4.1 Szczegółowy opis metody badawczej .......................................................................... 116 4.2 Propozycja udoskonalenia algorytmu symulowanego wyżarzania .............................. 120 4.3 Zastosowanie symulowanego wyżarzania do optymalizacji przepustowości środowiska sieciowego .......................................................................................................................... 126 4.4 Scenariusze przeprowadzonych badań......................................................................... 129 4.5 Złożoność obliczeniowa zastosowanej metody............................................................ 135 4.6 Podsumowanie ............................................................................................................. 140 Rozdział 5............................................................................................................................... 141 Wyniki przeprowadzonych badań .......................................................................................... 141 5.1 Wyniki otrzymane metodą symulowanego wyżarzania............................................... 141 5.2 Wyniki badań przeprowadzonych z wykorzystaniem metody dokładnej .................... 149 5.3 Podsumowanie ............................................................................................................. 151 Rozdział 6............................................................................................................................... 152 Analiza uzyskanych wyników................................................................................................ 152 - 4 - 6.1 Analiza uzyskanych wyników przy braku równoważenia obciążenia, oraz z równoważeniem typu RK i NK . ........................................................................................ 152 6.2 Czasy pracy algorytmu SW oraz metody dokładnej. ................................................... 154 6.3 Złożoność metody Simplex.......................................................................................... 154 6.4 Porównanie złożoności innych wybranych metod heurystycznych i metody SW....... 160 6.5 Porównanie złożoności algorytmu symulowanego wyżarzania oraz metody Simplex. ............................................................................................................................................ 166 6.6 Ocena zasadności stosowania algorytmów heurystycznych do badanego zagadnienia w kontekście metod dokładnych. ........................................................................................... 172 6.7 Niezawodność proponowanego rozwiązania. .............................................................. 173 6.8 Omówienie algorytmu 3 tj. wyznaczania Ψ(b) oraz jego wad i zalet. ......................... 174 6.9 Podsumowanie ............................................................................................................. 178 Zakończenie ........................................................................................................................... 179 Bibliografia i odnośniki.......................................................................................................... 182 Spis ilustracji .......................................................................................................................... 191 Spis tabel ................................................................................................................................ 193 Spis wykresów........................................................................................................................ 194 Załącznik I.............................................................................................................................. 195 Kod oprogramowania użytego do przeprowadzenia optymalizacji przepustowości środowiska sieciowego.............................................................................................................................. 195 Załącznik II ............................................................................................................................ 195 Przykładowe zastosowanie równoważenia obciążenia typu NK – informacja wstępna. ....... 195 Załącznik III ........................................................................................................................... 196 Notacja, słowniczek oraz wykaz użytych terminów i oznaczeń ............................................ 196 Załącznik IV........................................................................................................................... 204 Analiza funkcji celu dla metody SW...................................................................................... 204 - 5 - - 6 - Wstęp Dynamiczny rozwój technologii informatycznych, jaki daje się zaobserwować w ciągu ostatnich kilkudziesięciu lat doprowadził do sytuacji, w której komputery przestały być dobrem ekskluzywnym, a stały się przedmiotem codziennego użytku. Wraz ze wzrostem dostępności oraz popularności komputerów zwiększa się potrzeba wymiany informacji pomiędzy ich użytkownikami. Z upływem czasu i rozwojem technologii informacja nabierała i ciągle nabiera coraz większej wartości, a od jej atrybutów takich jak dostępność, integralność czy poufność jest obecnie uzależniony byt niejednej organizacji. W związku z powyższym wyłania się coraz silniejsza potrzeba odpowiedniej wymiany wiarygodnych informacji pomiędzy zainteresowanymi stronami. Przesyłanie papierowych dokumentów czy transportowanie informacji za pomocą innych nośników takich jak np. płyty CD czy dyski przenośne jest w wielu sytuacjach nie do zaakceptowania i to z różnych powodów, np. opóźnień czasowych. Dlatego też coraz większego znaczenia nabiera szybka i niezawodna wymiana informacji z wykorzystaniem sieci komputerowych. Odkąd pojawiły się pierwsze próby łączenia ze sobą pojedynczych komputerów w celu współdzielenia zasobów takich jak drukarki czy pliki, pojawiła się możliwość znacznego przyspieszenia obiegu informacji. W konsekwencji doprowadziło to do poprawienia tego, co częstokroć jest nazywane „krwioobiegiem organizacji”, a w rzeczywistości stanowi wydajny system wymiany informacji. Tak jak komputery zmieniły wzorce społecznego zachowania, tak sieci komputerowe zrewolucjonizowały i zwielokrotniły sposoby zastosowania komputerów tworząc coś, co pod koniec lat sześćdziesiątych ubiegłego wieku w swojej książce pt. „Galaktyka Gutenberga” Marshall McLuhan nazwał „globalną wioską” [10]. W „wiosce” tej media elektroniczne obalają dotychczasowe bariery i to zarówno przestrzenne jak i czasowe, umożliwiając swobodną komunikację wszystkich zainteresowanych stron. W tym momencie należy zadać sobie pytanie, co leży u podstaw, a zarazem daje odpowiednie możliwości do wydajnej wymiany informacji, a w rezultacie powstania wspomnianej już wcześniej globalnej wioski. Na pierwszy rzut oka odpowiedź wydaje się banalna i brzmi: Internet. Najprawdopodobniej mało kto zaprzeczy takiemu stwierdzeniu, lecz spoglądając na problem w sposób bardziej techniczny, pod pojęciem Internet można dostrzec bardzo wiele różnych możliwości, a także i problemów. Możliwości, jakie niesie ze sobą „globalna sieć” są olbrzymie i ciągle rosną, zaliczyć do nich można takie usługi jak np.: bankowość elektroniczna, zamawianie filmów na żądanie czy rezerwacja biletów lotniczych lub do teatru. Z drugiej strony, istnienie Internetu stwarza problemy, jakie należy rozwiązać w celu - 7 - wykorzystania tychże możliwości. Jeśli przyjrzymy się tylko problemom technicznym, to można dokonać ich podziału na pewne grupy, a mianowicie: • wydajność; • skalowalność; • bezpieczeństwo; • koszt; • funkcjonalność. Moja praca skupia się na wydajności, a głównym jej zagadnieniem jest zadanie optymalizacji przepustowości sieci komputerowych. Przedstawione w niej rozwiązanie polega na zwiększaniu efektywnej przepustowości sieci w tych przypadkach, w których jest to możliwe. To, czy możliwość taka istnieje, okazuje się w wyniku porównania przepustowości osiąganych przy zastosowaniu dwóch typów równoważenia obciążenia tj.: z udziałem tras tylko o koszcie równym optymalnemu (równoważenie typu RK) i dodatkowo, pewnych tras o koszcie większym od optymalnego (równoważenie typu NK). Porównanie to jest dokonywane w czasie rzeczywistym, co umożliwiają odpowiednie (autorskie) algorytmy. Ponieważ „z góry” nie wiadomo czy należy włączyć równoważenie obciążenia typu NK, więc przeprowadza się symulację spodziewanych warunków pracy sieci. Na podstawie otrzymywanych wyników podejmowana jest decyzja o włączeniu tego typu równoważenia. Warto także dodać, że główną korzyścią z zastosowania przedstawionego w tej pracy rozwiązania jest uzyskanie w czasie rzeczywistym poprawy przepustowości sieci (w miarę możliwości), a w konsekwencji bardziej efektywne wykorzystanie posiadanych zasobów sieciowych i zwiększenie satysfakcji użytkowników. Poruszając tematykę wydajności sieci komputerowych, nie sposób pominąć problemów związanych z trasowaniem pakietów w sieciach komputerowych. Trasowanie, czyli kierowanie pakietów na odpowiednie trasy, opiera się na wykorzystaniu określonych protokołów takich jak np.: RIP, IGRP, IS-IS, EIGRP, OSPF, BGP [31][32]. Bez względu na to, czy dany protokół jest zaprojektowany do pracy wewnątrz systemu autonomicznego1 czy pomiędzy takimi systemami, albo wręcz w ogóle nie uwzględnia koncepcji hierarchicznej budowy sieci komputerowej, głównym jego zadaniem jest wyznaczanie tras pomiędzy różnymi sieciami (podsieciami). Znajomość tych tras jest niezbędna do uzyskania przepływu pakietów, a w konsekwencji do nawiązania wymiany informacji. Z każdą trasą nieodzownie związany jest jej koszt, częstokroć powiązany z szybkością przesyłania informacji po danej 1 Przez pojęcie system autonomiczny należy rozumieć sieć lub grupę sieci będących pod wspólną i spójną administracyjna kontrolą. - 8 - trasie (jak w protokole OSPF), dlatego wyznaczanie tras o jak najniższym koszcie jest bardzo istotne dla sprawnego, a przede wszystkim wydajnego funkcjonowania sieci komputerowej. Uzasadniając wybór protokołu OSPF jako obiektu podlegającego udoskonaleniom warto stwierdzić, że protokoły takie jak: IGRP czy EIGRP to własne protokoły producentów sprzętu, a ich implementacja oraz modyfikacja bez zgody właściciela2 jest prawnie zabroniona [13] [14] [31] [35]. Warto zauważyć, że protokół OSPF (ang. Open Shortest Path First) szeroko wykorzystywany w średnich i dużych sieciach komputerowych, opierający się na tzw. stanie łącza umożliwia tworzenie różnego rodzaju konfiguracji [1] [2] [3]. Przykładami takich konfiguracji mogą być np. jednoobszarowy OSPF, wieloobszarowy OSPF czy połączenie wirtualne (virtual link), co daje w konsekwencji możliwość budowy „płaskiej” lub zhierarchizowanej struktury sieci komputerowej. OSPF jest protokołem otwartym o dostępnym kodzie źródłowym, co wiąże się z możliwością przeprowadzania jego udoskonaleń, ale przede wszystkim oznacza możliwość tworzenia własnych implementacji, spełniających założenia standardu. OSPF w swojej oryginalnej wersji wspiera równoważenie obciążenia jedynie z udziałem tras o koszcie równym optymalnemu. Równoważenie to polega na wysyłaniu pakietów adresowanych do tej samej sieci różnymi trasami, o optymalnym koszcie, prowadzącymi przez jeden lub wiele interfejsów wyjściowych [43] [44] [45] [46] [47]. W dalszej części pracy równoważenie to będzie określane jako RK. Warunkiem koniecznym do przeprowadzenia tego typu równoważenia obciążenia jest, aby istniały przynajmniej dwie trasy prowadzące do danej sieci posiadające równy i optymalny koszt. W pewnych warunkach jest to rozwiązanie mało wydajne i dlatego dodanie dodatkowej funkcjonalności polegającej na równoważeniu obciążenia z udziałem tras o nierównym koszcie i wyższym od optymalnego (podobnie jak w protokole EIGRP) może w znaczny sposób zwiększyć wydajność sieci komputerowej wykorzystującej OSPF. W dalszej części pracy równoważenie takie będzie określane jako NK Sposobów, w jaki można równoważyć obciążenie jest wiele, w niniejszej pracy zostało przedstawione rozwiązanie hybrydowe (scentralizowano-rozproszone). W przedstawionym w tej pracy rozwiązaniu występuje centralna stacja zarządzająca oraz zarządzane przez nią routery. Na podstawie spodziewanej charakterystyki ruchu sieciowego, wspomniana stacja zarządzająca, wyznacza wartości pewnych współczynników (beta) i w określonych przedziałach czasowych dystrybuuje je do zarządzanych routerów. Istotnym jest, że całe rozwiązanie musi działać w czasie rzeczywistym, a wyznaczone wartości współczynników beta obowiązują tylko w krótkim 2 W tym przypadku firmy Cisco Systems. - 9 - przedziale czasu. Na podstawie wzmiankowanych współczynników routery budują swoje tablice routingu z uwzględnieniem tras o nierównych kosztach. Do wyznaczenia wartości wspomnianych współczynników stacja zarządzająca wykorzystuje algorytm heurystyczny – symulowanego wyżarzania. W tym miejscu warto dodać, że do optymalizacji przepustowości sieci komputerowych można także stosować metody dokładne np. Simplex, lecz jak zostało pokazane w rozdziale szóstym, jej złożoność jest znacznie większa od metody SW. W konsekwencji, zastosowanie metod dokładnych mogłoby skutkować tym, że rozwiązanie przestanie działać w czasie rzeczywistym. Natomiast odpowiednio zastosowana metoda SW takiego ryzyka jest pozbawiona. Przechodząc do idei działania routerów, trasowanie następuje według ścieżki optymalnej wyznaczonej przez protokół OSPF [1] [3], a w sytuacji, kiedy jeden z interfejsów routera zostaje przeciążony następuje włączenie równoważenia obciążenia z udziałem tras o kosztach wyższych od optymalnego. Decyzja o tym, jakie trasy alternatywne należy dodać do tablicy routingu jest zależna od wartości współczynnika beta otrzymanego od stacji zarządzającej. Decyzja o włączeniu równoważenia obciążenia typu NK jest podejmowana przez każdy router indywidualnie w zależności od tego, czy posiada on przeciążone interfejsy czy nie. Rozwiązanie to jest wydajną alternatywą dla stosowanego w protokole OSPF równoważenia obciążenia typu RK. Wychodząc naprzeciw ciągle rosnącym zapotrzebowaniom, jakie niesie ze sobą rozwój technologii informatycznych, sieci komputerowe stają się coraz bardziej złożone i zróżnicowane. W związku z tym prawdopodobieństwo wystąpienia dwóch lub więcej tras o identycznym koszcie3 z punktu A do punktu B jest niewielkie, z tego powodu równoważenie obciążenia typu RK stosunkowo rzadko występuje [47] [77]. W tym miejscu należy nadmienić, że niniejsza praca ma za zadanie przedstawienie nowatorskiego podejścia do problemów zastosowania zmodyfikowanej metody symulowanego wyżarzania do optymalizacji przepustowości sieci komputerowej. Teza mojej pracy składa się z dwóch części. Pierwsza część brzmi, odpowiednie zastosowanie równoważenia obciążenia typu NK może prowadzić do wzrostu przepustowości sieci komputerowej. Druga natomiast jest następująca, zasadnym jest stosowanie algorytmów heurystycznych do optymalizacji tejże przepustowości. Głównym zagadnieniem pracy jest zdanie optymalizacji przepustowości sieci komputerowych, sformułowane jako zadanie programowania liniowego (ang. Linear 3 Koszt w protokole OSPF liczony jest jako suma kosztów poszczególnych łączy (krawędzi grafu) na drodze od routera źródłowego do miejsca przeznaczenia. Koszt pojedynczego łącza obliczany jest ze wzoru koszt = (10E8 / szerokość pasma) tego łącza. - 10 - programming) i programowania niewypukłego rozdzielnego (ang. Non-convex Separable Programming). Pierwszoplanowym celem pracy jest wykazanie zasadności stosowania algorytmów heurystycznych (na przykładzie symulowanego wyżarzania) do optymalizacji przepustowości sieci komputerowej. Dalszym celem jest wykazanie słuszności stosowania równoważenia obciążenia typu NK w protokole OSPF w sytuacji, kiedy przeciążeniu ulega jeden z interfejsów routera, na którym działa ten protokół. Proponowane rozwiązanie zostało zaimplementowane w wirtualnej4 sieci komputerowej wykorzystującej przystosowany specjalnie do jej potrzeb protokół OSPF. Dla osiągnięcia wyżej wymienionych celów wykonano następujące zadania opisane w kolejnych rozdziałach pracy: • scharakteryzowano zastosowania oraz możliwości protokołu OSPF; • zaproponowano autorski sposób wyznaczania tras o nierównych kosztach oraz równoważenia obciążenia z udziałem tych tras; • przeprowadzono przegląd możliwości badania wpływu zastosowanego rozwiązania na wydajność sieci komputerowej; • zdefiniowano w sposób formalny problem optymalizacji przepustowości sieci komputerowej jako zadanie programowania liniowego i niewypukłego rozdzielnego; • wybrano zbiór parametrów, statystyk oraz narzędzi mający służyć wykazaniu słuszności postawionej tezy; • przeprowadzono odpowiednie badania; • przeanalizowano zebrane informacje oraz wyciągnięto odpowiednie wnioski; • dokonano porównania wydajności badanej metody z wydajnością metody dokładnej oraz z innymi wybranymi metodami heurystycznymi; • zaproponowano przykładowe zastosowanie badanego rozwiązania. Dalszą część wstępu można potraktować jako „przewodnik po pracy”, zawierający skrótowe opisy zawartości poszczególnych jej rozdziałów. Wspomniane opisy mają na celu ułatwienie lektury pracy oraz wyszukiwania konkretnych informacji w niej zawartych. Praca składa się z następujących części: Rozdział pierwszy – opisuje możliwości protokołu OSPF wraz z jego funkcjami oraz zastosowaniem. Dodatkowo informacje przedstawione w tym rozdziale skupiają się na 4 Poprzez określenie „wirtualna sieć komputerowa” należy rozumieć hipotetyczną sieć komputerową zaproponowaną przez autora na potrzeby niniejszej pracy. - 11 - obecnie stosowanych rozwiązaniach równoważenia obciążenia typu RK. Ze względu na zawartość, rozdział ten należy traktować jako zwięzły opis obecnego stanu wiedzy w badanej dziedzinie. Rozdział drugi – szczegółowo opisuje proponowane rozwiązanie problemu wyznaczania tras alternatywnych jako komplementarnych do tras optymalnych oraz równoważenia obciążenia w protokole OSPF z udziałem tych tras. Zostały tu także przedstawione spodziewane efekty zastosowania tego rozwiązania. Rozdział trzeci – zawiera opisy teoretycznych aspektów związanych z optymalizacją ruchu sieciowego tj.: • model środowiska sieciowego; • formalnie zdefiniowane zadania optymalizacji jako zadania programowania liniowego i programowania niewypukłego rozdzielnego; • opis zasady działania metody dokładnej (Simplex); • opis autorskiego algorytmu wyznaczania przepustowości środowiska sieciowego (Ψ(b)) wraz z jego zapisem w pseudokodzie; • informacje o ograniczeniach, zmiennych decyzyjnych oraz zbiorze rozwiązań dopuszczalnych dla wspomnianego algorytmu; • teoretyczne obliczenia obrazujące działanie algorytmu wyznaczania przepustowości środowiska sieciowego oraz wyniki jego symulacji; • rozważania na temat wybranych przykładów. Rozdział czwarty – zawiera informacje na temat optymalizacji przepustowości środowiska sieciowego z zastosowaniem metody SW, a także: • szczegółowy opis zastosowanej metody badawczej; • propozycje udoskonalenia zastosowanego algorytmu; • opis warunków pracy algorytmu SW; • logiczny schemat przepływu informacji pomiędzy algorytmami: SW, wyznaczania przepustowości sieci (Ψ(b)) i algorytmem tworzenia tablicy routingu, obrazujący zasadę działania proponowanego rozwiązania; • możliwości zastosowania przyjętej metody badawczej; • scenariusze przeprowadzonych badań; • wyznaczenie złożoności obliczeniowej algorytmu SW. - 12 - Rozdział piąty – zawiera wyniki badań przeprowadzonych według scenariuszy przyjętych w rozdziale 4. Ponadto rozdział ten stanowi materiał źródłowy dla wniosków stanowiących treść rozdziału 6. Rozdział szósty – w rozdziale przeprowadzony został proces wnioskowania na temat uzyskanych wyników, a także została przeprowadzona szczegółowa analiza badań nad optymalizacją przepustowości środowiska sieciowego z wykorzystaniem metody SW. Analiza ta obejmuje następujące aspekty: • Porównanie wyników uzyskanych za pomocą metody SW oraz programowania liniowego; • Porównanie czasów działania badanego algorytmu SW oraz metody dokładnej, czyli Simplex; • Oszacowanie oraz porównanie złożoności obliczeniowej algorytmu SW ze złożonością metody dokładnej (Simplex), oraz z innymi wybranymi metodami heurystycznymi; • Ocena zasadności stosowania algorytmów heurystycznych (na przykładzie algorytmu SW) w odniesieniu do badanego zagadnienia; • Krótkie omówienie niezawodności proponowanego rozwiązania. W rozdziale znajdują się także zwięzłe opisy wad i zalet autorskiego algorytmu służącego do wyliczania przepustowości sieci, wraz z prostym przykładem jego działania oraz krótką analizą matematyczną porównującą złożoność tego algorytmu oraz algorytmu dokładnego. Rozdział kończy krótkie podsumowanie zawierające najważniejsze wnioski oraz obserwacje powstałe po przeprowadzonych badaniach, w szczególności znajdują się tam odpowiedzi na pytania postawione w tezie pracy, poparte odpowiednimi wynikami badań. Zakończenie – zawiera następujące zagadnienia: • wykazanie słuszności przyjętej tezy badawczej; • opis trudności napotkanych przy realizacji postawionych w pracy zadań; • ocenę praktycznej przydatności przedstawionego rozwiązania; • propozycję kierunku kontynuacji tematyki pracy. - 13 - Rozdział 1. Protokół OSPF – zastosowanie i własności W celu nawiązania łączności pomiędzy komputerami znajdującymi się w różnych sieciach5 niezbędne jest właściwe wyznaczenie trasy przepływu pakietów ze źródła do miejsca przeznaczenia. Trasę tę można wyznaczać za pomocą dwóch metod: • routingu statycznego; • routingu dynamicznego. Routing statyczny polega na tym, że administrator routera manualnie dokonuje asocjacji adresu IP6 sieci docelowej z odpowiednim interfejsem wyjściowym konfigurowanego routera, ewentualnie też adresem IP następnego routera. O ile routing statyczny można uznać za dobrą metodę wyznaczania tras dla małych sieci7, o tyle skonfigurowanie routingu, a następnie administrowanie nim w dużych sieciach, jeśli w ogóle jest możliwe, to na pewno zdecydowanie nieopłacalne. Dlatego też powstały dynamiczne protokoły routingu mające za zadanie w sposób niemalże bezobsługowy wyznaczać optymalne (w sensie swojej metryki) trasy przepływu pakietów, a następnie kierować pakiety na właściwe dla nich trasy. Dynamiczne protokoły routingu można podzielić na trzy grupy: • wektora odległości; • stanów łączy; • hybrydowe. Protokoły działające w oparciu o wektor odległości jako metryki używają liczby routerów znajdujących się na trasie przepływu danego pakietu (tzw. hop counts)8. Ze względu na swoje ograniczenia, (sposób przesyłania aktualizacji tras, jak i metrykę pozostawiającą wiele do życzenia), protokoły te nie nadają się do zastosowania w dużych sieciach komputerowych. Natomiast do ich zalet można zaliczyć małe wymagania co do zasobów systemowych takich jak moc procesora czy rozmiar pamięci operacyjnej urządzenia, na którym pracują. Przykładami protokołów wykorzystujących wektor odległości są: RIP wersja 1, RIP wersja 2, IGRP. 5 Sieć komputerowa - grupa komputerów lub innych urządzeń sieciowych połączonych ze sobą w celu wymiany danych lub współdzielenia zasobów oraz komunikujących się z wykorzystaniem adresów sprzętowych [15]. 6 Adres IP (Internet Protocol address) - to unikatowy adres numeryczny przyporządkowany urządzeniom sieci komputerowych, funkcjonujących z wykorzystaniem protokół IP [15]. 7 W małych sieciach o stałej topologii preferowaną metodą jest routing statyczny ze względu na większą szybkość działania oraz brak wewnętrznego ruchu sieciowego. 8 RIP jako metryki używa liczba routerów występujących na trasie danego pakietu, IGRP używa bardziej złożonej metryki domyślnie uwzględniając szerokość pasma oraz opóźnienie. - 14 - Protokoły działające w oparciu o stan łącza są zaprojektowane w taki sposób, że każde urządzenie używające takiego protokołu i znajdujące się w odpowiednim obszarze posiada „wiedzę” o pełnej topologii sieciowej własnego obszaru. W tym miejscu należy dokładniej wyjaśnić dwa pojęcia: systemu autonomicznego i obszaru. System autonomiczny jest to grupa sieci komputerowych zarządzanych w spójny sposób wedle określonych reguł. Systemy te są następnie dzielone na obszary, działanie takie ma na celu agregację ruchu sieciowego, a także ułatwienie diagnozowania różnego rodzaju problemów oraz podniesienie poziomu bezpieczeństwa. Dokładniejszy opis idei systemów autonomicznych oraz obszarów znajduje się w podrozdziale 1.1. Routery wykorzystujące protokół OSPF na podstawie posiadanych informacji o danej sieci budują odwzorowanie jej topologii. Następnie z wykorzystaniem właściwych algorytmów (np. Dijkstry) wyznaczana jest optymalna trasa do sieci docelowej. Ze względu na przechowywanie dużej, w stosunku do protokołów opartych o wektor odległości, ilości informacji protokoły te wymagają znacznie większych zasobów systemowych niż RIP czy IGRP. W tym miejscu warto zaznaczyć, że protokół RIP przesyła całe tablice routingu, w konsekwencji bardziej obciąża sieć. Do wspomnianych wcześniej informacji można zaliczyć np. „wiedzę” o pełnej topologii sieci czy routerach sąsiednich. Używanie nietrywialnych metod wyszukiwania tras w grafie (np. wspomniany algorytm Dijkstry) także wymaga zapewnienia odpowiedniej ilości zasobów systemowych. Między innymi z tego powodu routery obsługujące protokoły wykorzystujące stan łącza są drogie. Rekompensatą za poniesione koszty jest to, że routery te z powodzeniem można stosować w rozbudowanych sieciach o skomplikowanej topologii. Przedstawicielami tej grupy protokołów są: OSPF oraz IS-IS. Protokoły hybrydowe wykorzystują własności zarówno protokołów opartych o wektor odległości jak i o stan łącza. Podejście takie umożliwia stworzenie elastycznego i łatwo skalowanego rozwiązania za cenę wysokiego kosztu urządzenia. Przedstawicielem tej grupy protokołów jest opracowany przez firmę Cisco protokół EIGRP. Ze względu na tematykę niniejszej pracy ograniczona do protokołu OSPF, dokładniejszy opis protokołów hybrydowych został pominięty. Szczegółowe informacje o protokole EIGRP są zawarte np. w [28][31][36][40][41]. 1.1 Skrócony opis protokołu OSPF Tak jak już zostało wcześniej powiedziane, OSPF jest protokołem działającym w oparciu o stan łącza. W swoim działaniu wykorzystuje ideę systemów autonomicznych, a w konsekwencji zhierarchizowane podejście do zagadnień routingu. Hierarchia w OSPF jest - 15 - dwupoziomowa, obszar centralny stanowi poziom pierwszy, a obszary położone wokół centralnego - poziom drugi. Wszystkie routery znajdujące się w jednym obszarze tworzą identyczne kopie bazy topologii danego obszaru. Tak jak sama nazwa sugeruje, baza ta zawiera informacje o topologii sieciowej danego obszaru OSPF, dodatkowo, jeśli router należy jednocześnie do dwóch obszarów to tworzy on dwie kopie baz topologii – po jednej dla każdego obszaru. Wykorzystując algorytm Dijkstry9 (o złożoności O(n*log(n)), na podstawie informacji zawartych we wspomnianej bazie topologii sieci każdy router indywidualnie buduje drzewo (z sobą jako korzeniem) najkrótszych ścieżek do poszczególnych sieci z danego obszaru w którym się znajduje. Informacje o trasach routingu dostarczone spoza systemu autonomicznego są liśćmi tego drzewa. Należy w tym miejscu zaznaczyć, że informacje o zewnętrznych trasach routingu dostarczone przez protokoły z typu EGP (takie jak np. BGP) są odseparowane od informacji dystrybuowanych wewnątrz systemu autonomicznego. W celu redukcji niepożądanego ruchu sieciowego, a także w innych celach jak np.: ukrywanie wewnętrznej topologii czy uproszczenie administrowania i zarządzania, protokół OSPF wykorzystuje wcześniej wzmiankowane, obszary. Obszar to grupa sieci zarządzana w sposób spójny, tj. zgodny z określonym zestawem przyjętych reguł. Każdy obszar bezpośrednio lub pośrednio (np. wykorzystując połączenie wirtualne) musi być podłączony do obszaru zero, obecność obszaru zerowego jest niezbędna do poprawnego funkcjonowania protokołu. Graficzne przedstawienie podziału systemu autonomicznego na obszary znajduje się na rys. 1.4 i 1.5 w dalszej części tego rozdziału. Należy zaznaczyć, że protokół OSPF wspiera maski sieciowe o zmiennej długości (VLSM), a także routing bezklasowy10. Dodatkową funkcjonalnością jest uwierzytelnianie routerów wymieniających między sobą aktualizacje tras routingu i tworzących jeden system autonomiczny. Uwierzytelnianie routerów, a także inne aspekty bezpieczeństwa związane z protokołem OSPF zostały dokładniej opisane w podrozdziale 1.5. Kolejnym aspektem zasługującym na uwagę jest fakt, że OSPF nie wysyła aktualizacji tras w sposób periodyczny z określonym interwałem czasowym, jak czyni to np. RIP (nawet w przypadku, kiedy zawartość tablicy routingu nie uległa zmianie). W związku z powyższym OSPF generuje mniejszy ruch sieciowy, co jest zawsze pożądane. Aktualizacje tras w OSPF są dokonywane za pomocą pakietów LSA (link state advertisement) [4] i pojawiają się tylko wtedy, gdy wystąpi zmiana w topologii sieci. Zmiany w topologii takie jak na przykład uszkodzenie routera, łącza czy 9 Algorytm Dijkstry służy do wyznaczania najkrótszych tras w grafach o nieujemnych wartościach (kosztach) ścieżek łączących poszczególne węzły. 10 Routing bezklasowy – typ routingu wykorzystujący agregację adresów sieciowych, mającą na celu zmniejszenie rozmiaru tablicy routingu. - 16 - interfejsu są wykrywane bardzo szybko, a służą temu pakiety Hello periodycznie wymieniane miedzy sąsiednimi routerami. W sytuacji, gdy następuje zmiana topologii sieci natychmiastowa wymiana pakietów LSA powoduje aktualizację baz topologii poszczególnych routerów należących do danego obszaru. Następnie każdy router indywidualnie wyznacza nowe trasy do poszczególnych sieci. Sieć jest w stanie konwergencji, jeśli wszystkie routery w danym obszarze posiadają spójną, czyli jednakową „wiedzę” o trasach routingu (jest to stan docelowy). Dobrze skonfigurowany protokół OSPF osiąga zbieżność w czasie około 10 sekund. Kolejną istotną cechą tego protokołu jest równoważenie obciążenia typu RK. Koszt końcowy jest wyznaczany jako suma kosztów poszczególnych łączy na trasie do danej sieci. Natomiast koszt łącza wyznaczany jest ze wzoru: koszt = 108 / przepustowość w bitach na sekundę. Należy zaznaczyć, że konfigurując konkretny router najczęściej jest możliwe dokonanie ręcznej modyfikacji kosztu danej trasy. Stosując odpowiednią manipulację kosztami poszczególnych tras można ukierunkować przepływ pakietów w danej sieci lub całym systemie autonomicznym. Działanie takie może być podyktowane wieloma względami, jednym z nich jest np. sposób rozliczania się z dostawcą usług internetowych za dzierżawione łącze. Więcej informacji na temat protokołu OSPF znajduje się np. w [5][7]. 1.2 Historia protokołu OSPF Dynamiczny wzrost liczby użytkowników Internetu, a w konsekwencji liczby sieci wchodzących w jego skład doprowadził do sytuacji, w której protokół taki jak RIP nie był w stanie w wydajny sposób sprostać ciągle rosnącym wymaganiom. W związku z pojawieniem się konieczności opracowania nowego, lepiej dopasowanego do istniejącej sytuacji protokołu routingu, IETF (Internet Engineering Task Force) w 1987 roku utworzyła grupę badawczą mającą za zadanie rozwiązać zaistniały problem. Po stosunkowo długim okresie prac w październiku 1989 roku w RFC 1131 opublikowana została pierwsza wersja protokołu nazwanego OSPF (Open Shortest Path First). Ze względu na wiele wad i niedociągnięć, jakie się ujawniły w trakcie przemysłowego stosowania tego protokołu pierwsza jego wersja została szybko zastąpiona drugą, opublikowaną w lipcu 1991 roku w RFC 1247. Ciągła ewolucja protokołu mająca na celu dostrajanie go do dynamicznie zmieniającego się otoczenia i warunków pracy zaowocowała wprowadzeniem licznych poprawek opisanych m.in. w dokumentach: RFC 1583, RFC 2178, RFC 2328. Dodatkowo OSPF wspiera wersję szóstą protokołu IP (Internet Protocol) przedstawioną w RFC 1883, 1884. Ponadto sama nazwa protokołu nie jest przypadkowa i łączy w sobie dwie jego podstawowe cechy. Pierwszą - 17 - z nich jest otwartość (Open) wskazująca, że nie jest to produkt własnościowy i nie jest wymagana żadna licencja do używania go. Druga cecha, czyli SPF (Shortest Path First) odnosi się do algorytmu użytego w tym protokole i stosowanego do wyznaczania najkrótszej trasy pomiędzy dwoma sieciami. Obecnie OSPF jest prawdopodobnie najczęściej stosowanym protokołem w średnich i dużych sieciach budowanych z wykorzystaniem urządzeń pochodzących od różnych producentów. 1.3 Podstawowe własności protokołu OSPF Tak jak już zostało wcześniej powiedziane, OSPF zalicza się do dynamicznych protokołów routingu, jest wydajny i posiada łatwość w przenoszeniu z niewielkich do rozbudowanych środowisk (skalowalność), a także posiada inne liczne własności, którym zawdzięcza swoje duże możliwości i popularność. W podrozdziale tym zostały opisane następujące cechy protokołu OSPF: • wsparcie dla różnych typów sieci; • obsługa masek IP o zmiennej długości; • podział systemów autonomicznych na obszary; • typy używanych pakietów. Ponadto opisano pojęcia: • baza stanów łączy; • drzewo najkrótszych ścieżek. Dodatkowo, niniejszy podrozdział zawiera skrótowe informacje o terminologii stosowanej w odniesieniu do protokołu OSPF. Pozostałe własności, które nie zostały tu przedstawione są opisane w podrozdziale 1.4. Kwestie związane z bezpieczeństwem, a także równoważeniem obciążenia w omawianym protokole zostały przedstawione w osobnych podrozdziałach tj. 1.5 oraz 1.6. 1.3.1 Wsparcie protokołu OSPF dla różnych typów sieci Na wszechstronność i elastyczność protokołu OSPF składa się miedzy innymi możliwość zastosowania go w sieciach następujących typów: • Point-to-Point; • Broadcast; • Non-broadcast multi-access (Point-to-Point oraz Point-to-Multipoint). - 18 - Każda inna sieć komputerowa (rozumiana jako niepodzielny komponent środowiska złożonego z wielu sieci) należy do jednego z wyżej wymienionych typów. Dla uściślenia terminologii, na potrzeby niniejszej pracy przez pojęcie Point-to-Point należy rozumieć sieć łączącą parę routerów. Reprezentantem tego typu sieci jest połączenie bezpośrednie zestawione pomiędzy dwoma routerami. Przykładowe połączenie typu Point-to-Point zostało przedstawione na rys. nr 1.1. Rys. 1.1. Przykład połączenia Point-to-Point. Połączenia typu Point-to-Point posiadają prostą topologię, a w związku z tym małą złożoność, natomiast inaczej wygląda sytuacja w sieciach broadcastowych (rozgłoszeniowych). Na potrzeby niniejszej pracy poprzez termin sieć broadcastowa należy rozumieć sieć komputerową posiadającą funkcjonalność polegającą na możliwości przesłania jednej jednostki informacji (pakietu) do wszystkich węzłów naraz. Przykładem takiej sieci jest Ethernet. Dodatkowo w Ethernecie zakłada się, że każda para węzłów11 jest w stanie komunikować się w sposób bezpośredni. Komunikacja ta jest niezbędna i służy wielu celom, do których zaliczyć można: wysyłanie informacji o zmianie topologii sieci (pakiety LSA) czy wykrywanie sąsiednich routerów (za pomocą protokołu „Hello”). W celu minimalizacji generowanego ruchu sieciowego, a także skrócenia czasu zbieżności sieci12, protokół OSPF przeprowadza elekcję routera desygnowanego (DR – designated router). Zadaniem tego routera jest odbieranie wspomnianych wcześniej pakietów, a następnie rozpropagowanie ich do pozostałych routerów wchodzących w skład danego segmentu sieci. Innymi słowy rolą routera desygnowanego jest zmniejszenie ruchu w sieci przy wymianie informacji między routerami sąsiednimi (mającymi interfejsy podłączone do jednej sieci), wówczas wymiana pakietów protokołu OSPF nie odbywa się w sposób „każdy z każdym” tylko „router desygnowany - każdy z pozostałych”. Na wypadek awarii routera desygnowanego wybierany jest także zapasowy router desygnowany (BDR – backup designated router). Funkcje routera desygnowanego zostały dokładniej opisane w dalszej części rozdziału. Elekcja routera desygnowanego odbywa się z uwzględnieniem takich czynników jak: priorytet OSPF oraz 11Przez pojęcie węzeł należy rozumieć urządzenie podłączone do sieci komputerowej takie jak np. router, komputer klasy PC, serwer, drukarka sieciowa itd. 12 Czas zbieżności sieci należy rozumieć jako czas potrzebny na uzyskanie przez wszystkie routery, pełnej informacji o bieżącej topologii sieci w której (których) routery te pracują. - 19 - „router ID”. Routerem desygnowanym zostaje router posiadający najwyższy priorytet. W sieciach rozgłoszeniowych domyślna wartość priorytetu wynosi jeden. Parametr ten jest konfigurowalny i przypisany do danego interfejsu nie zaś globalnie dla całego routera. Przypisanie priorytetowi wartości zero spowoduje, że dany router nigdy nie zostanie wybrany jako DR czy BDR (w sieci, do której należy dany interfejs). Jeśli występują przynajmniej dwa routery o najwyższym priorytecie w danej sieci, wówczas decyzja o wyborze routera desygnowanego podejmowana jest (wśród routerów o najwyższym priorytecie) na podstawie parametru „router ID”. Podobnie jak w przypadku priorytetu OSPF routerem desygnowanym zostaje ten o największym parametrze ID. Parametr ten także jest manualnie konfigurowalny. W przypadku braku konfiguracji domyślnie przyjmowana jest wartość adresu IP interfejsu zwrotnego (ang. loopback). W sytuacji, kiedy interfejs zwrotny nie jest aktywny, jako router ID przyjmowany jest największy adres IP przypisany do interfejsów routera. W przypadkach pozostałych router ID jest ustawiane na zero. Wybór zapasowego routera desygnowanego (BDR) odbywa się analogicznie jak podstawowego, lecz już z jego pominięciem. Raz wybrany DR lub BDR pełni swoją funkcję dopóki jest podłączony do sieci komputerowej, „pojawienie się” nowego routera o wyższym priorytecie nie powoduje zmiany ani podstawowego routera desygnowanego ani zapasowego. Zarówno DR jak i BDR nawiązują relacje sąsiedztwa (ang. adjacency) z wszystkimi pozostałymi routerami w danej sieci. Warto wspomnieć, że w protokole OSPF nawiązanie pomiędzy routerami relacji sąsiedztwa (przylegania) jest niezbędne do wymiany informacji pomiędzy tymi routerami (w tym informacji o trasach routingu). Ponadto do podstawowych funkcji routera desygnowanego należy odbieranie pakietów o aktualizacji topologii sieci (pakiety LSA) i rozesłanie ich do wszystkich routerów, z którymi nawiązane zostało sąsiedztwo. Idea tego podejścia polega na tym, że w momencie wykrycia zmiany w topologii router, który tę zmianę „zauważył” wysyła aktualizację tylko i wyłącznie do routera desygnowanego (nie zaś do wszystkich jak czyni to np. RIP) oraz do zapasowego routera desygnowanego. Następnie router desygnowany ma za zadanie rozpropagować otrzymaną informację, standardowo przy użyciu adresu typu multicast, co jest rozwiązaniem zalecanym. Zapasowy router desygnowany wybierany jest (także za pomocą protokołu Hello) w celu podwyższenia niezawodności tego rozwiązania. Należy zaznaczyć, że elekcje takie mają miejsce tylko w sieciach broadcastowych oraz NBMA przy oczywistym warunku występowania dwóch lub więcej routerów w danej sieci. Przykładowy schemat sieci broadcastowej budowanej z wykorzystaniem technologii Ethernet został przedstawiony na rys. 1.2. - 20 - Rys. 1.2. Schemat sieci broadcastowej na przykładzie Ethernetu. Trzecim typem sieci, w jakich protokół OSPF jest w stanie wydajnie funkcjonować jest typ nierozgłoszeniowy (non-broadcast). Na potrzeby niniejszej pracy przez pojęcie sieć nonbroadcast należy rozumieć sieć umożliwiającą podłączenie wielu routerów (przynajmniej trzech) i nie posiadającą możliwości rozsyłania informacji (pakietów) do wszystkich swoich węzłów na raz. Przykładem tego typu jest sieć wykonana w technologii Frame Relay (następca protokołu X.25). W sieci takiej OSPF utrzymuje relacje sąsiedztwa przy zastosowaniu protokołu Hello, lecz ze względu na brak możliwości wysyłania pakietów rozgłoszeniowych samo ustalenie sąsiedztwa może wymagać od administratora przeprowadzenia manualnej konfiguracji routera. Przeprowadzając taką konfigurację administrator podaje, które routery (a dokładniej adresy IP) dany router ma uznawać za „sąsiednie”. Należy zaznaczyć, że niektóre sieci typu non-broadcast jak na przykład Frame Relay mogą pracować w trybie Point-to-Multipoint i wykorzystywać protokół warstwy łącza danych w celu nawiązania relacji sąsiedztwa. Przykładem takiego protokołu jest Inverse ARP umożliwiający protokołowi OSPF automatyczne wykrywanie sąsiednich routerów pomimo braku możliwości rozsyłania pakietów rozgłoszeniowych. Wspomniana wcześniej konfiguracja routera jest zależna od trybu, w jakim działa sieć, do której router ten posiada podłączone interfejsy. Sieci non-broadcast dzielą się na: Non-broadcast Multi Access (NBMA) oraz Point-to-MultiPoint. W pierwszym z trybów komputer znajdujący się w takiej sieci ma bezpośredni dostęp do wielu innych komputerów z tej samej sieci. W trybie tym OSPF symuluje zachowanie podobne jak w sieci broadcastowej (rozgłoszeniowej) to znaczy, że przeprowadzana jest elekcja routera desygnowanego (a także zapasowego routera desygnowanego) pełniącego takie same funkcje jak w sieci broadcastowej, omówionej wcześniej w niniejszym - 21 - podrozdziale, schemat sieci NBMA jest identyczny jak sieci broadcastowej i jako przykładowy można potraktować przedstawiony na rys. nr 1.2. W drugim z trybów omawiany protokół traktuje sieć jako zbiór pojedynczych połączeń Pointto-Point. W trybie tym nie jest przeprowadzana elekcja routera desygnowanego, tzn. każdy router komunikuje każdemu informacje o stanach łączy. Brak routera desygnowanego determinuje brak zapasowego routera desygnowanego, zaś schematyczne przedstawienie takiej sieci (analogicznie jak w NBMA) jest identyczne jak dla sieci broadcastowej. Wybór typu sieci determinuje sposób, w jaki będzie działał protokół Hello oraz to jak sieć będzie reprezentowana w bazie stanów łączy. Dokładniejsze informacje o tej bazie zostały przedstawione w podrozdziale 1.3.4. Mając na uwadze rozmiar bazy stanów łączy jak i ilość generowanego ruchu sieciowego, większą efektywność protokół OSPF osiąga działając w sieci pracującej w trybie NBMA niż w Point-to-Point. Jednakże w trybie NBMA występuje pewne znaczące ograniczenie polegające na tym, że wszystkie routery danego obszaru muszą mieć możliwość bezpośredniej komunikacji ze sobą. Ograniczenie to dotyka niektórych sieci typu non-broadcast, a przykładem może być, ATM (Asynchronous Transfer Mode) wykorzystująca SVC (Switched Virtual Circuit). Należy wspomnieć, że ograniczenie to nie występuje w dość popularnych rozwiązaniach, do których należy na przykład Frame Relay PVC (Permanent Virtual Circuit). Główna różnica między obwodami rzeczywistymi, a wirtualnymi polega na tym, że obwód wirtualny tworzony jest na wirtualnych interfejsach. Jeden lub więcej interfejsów wirtualnych może być przypisanych do tego samego interfejsu fizycznego. W konsekwencji, jeden interfejs fizyczny może być „przypisany” do wielu logicznych obwodów, a nie tylko do jednego, co ma miejsce w przypadku obwodów rzeczywistych. Rozwiązaniem problemu związanego ze wspomnianym ograniczeniem komunikacji pomiędzy routerami jest podział sieci typu non-broadcast na logiczne podsieci (typu NBMA) tak, by w każdej z nich wszystkie routery mogły komunikować się ze sobą w sposób bezpośredni. Przykład podziału łącza rzeczywistego na obwody logiczne został przedstawiony na rys. 1.3. Choć działanie takie może wymagać znacznego nakładu pracy administratora i jest bardzo podatne na błędy w konfiguracji, to w pewnych przypadkach jest jedynym akceptowalnym rozwiązaniem. - 22 - Rys. 1.3. Schemat obwodów logicznych (podsieci wirtualnych). Pomimo pewnych (lecz zwykle dających się obejść) ograniczeń wszechstronność protokołu OSPF, w szczególności w zakresie typów obsługiwanych sieci jest imponująca, co czyni go rozwiązaniem bardzo popularnym i to bez względu na to czy wszystkie urządzenia sieciowe w danej organizacji pochodzą od jednego producenta czy też od wielu. 1.3.2 Obsługa masek IP o zmiennej długości Kolejną szeroko wykorzystywaną funkcjonalnością protokołu OSPF jest obsługa masek sieciowych o zmiennej długości (VLSM – variable-lenght subnet mask). Ze względu na „kurczącą” się liczbę publicznych adresów IP w wersji czwartej, obsługa VLSM staje się nie tylko użyteczna, ale w wielu przypadkach wręcz konieczna. Obecnie każdy szeroko stosowany protokół routingu posiada obsługę VLSM, a przykładami mogą być: OSPF, EIGRP, RIPv2 wśród protokołów działających wewnątrz systemów autonomicznych, czyli tzw. wewnętrznych protokołów routingu (Interior Gateway Protocol). Innym przykładem są BGPv4, IS-IS jako protokoły działające pomiędzy systemami autonomicznymi czyli tzw. protokoły zewnętrzne (Exterior Gateway Protocol). Idea VLSM polega na wprowadzeniu możliwości podziału sieci klasy A, B lub C na wiele podsieci o różnych rozmiarach. Ponieważ każda podsieć może, (choć nie musi) mieć inny rozmiar, dlatego pojawia się konieczność przesyłania wraz z rozgłaszanym adresem sieciowym odpowiedniej maski tejże podsieci, co także czyni OSPF. Maska ta wskazuje zakres adresów IP należących do rozgłaszanej sieci. Przykładowo sieć 10.1.1.0 można podzielić na trzy podsieci. Podsieć pierwsza 10.1.1.0 z maską 255.255.255.128, podsieć druga 10.1.1.128 z maską 255.255.255.192, a także podsieć trzecia 10.1.1.192 z maską 255.255.255.192. Dzięki zastosowaniu metody VLSM powstaje bardzo elastyczny mechanizm umożliwiający dopasowanie adresacji sieci do potrzeb poszczególnych organizacji, np. poprzez przypisanie - 23 - poszczególnych sieci do różnych działów takich jak: księgowość, administracja, IT itp. Rozmiary tych sieci mogą być dopasowane do wielkości odpowiednich działów (z uwzględnieniem koniecznego zapasu podyktowanego rozwojem organizacji). Bardzo dobrym przykładem korzyści płynących z VLSM są połączenia Point-to-Point z przypisanymi adresami poszczególnych routerów. W tej sytuacji, jeśli nie stosuje się VLSM, przypisanie dwóch adresów blokuje całą sieć klasy C, czyli 252 adresy pozostają niewykorzystane. Zastosowanie VLSM umożliwia podział jednej sieci na wiele podsieci o różnych rozmiarach, w wyniku czego uzyskuje się zdecydowanie wydajniejsze gospodarowanie adresami IP. Dodatkowo stosując VLSM można także uzyskać różnych rozmiarów bloki adresów sieciowych i wykorzystać je wedle potrzeb, co pozwala na znaczną ich oszczędność. Ponadto wsparcie dla CIDR (Classless Inter-Domain Routing) uzyskiwane poprzez dołączanie maski do rozgłaszanego adresu sieciowego, pozwalana na sumaryzację (supernetting), czyli rozgłaszanie kilku podsieci (powstałych na skutek podziału jednej większej) pod jednym zagregowanym adresem sieciowym. Przykładem może być rozgłaszanie czterech sieci o adresach: 192.168.1.0, 192.168.1.64, 192.168.1.128 i 192.168.1.192 każda z maską 26 bitową wchodzących w skład jednego obszaru OSPF jako jednej sieci 192.168.1.0 z maską 24 bitową – sumacyjny adres całego obszaru. W takim przypadku koszt trasy sumacyjnej jest obliczany jako maksimum z kosztów tras do podsieci wchodzących w skład tego obszaru. Ponieważ router rozgłasza tylko jedną sieć zamiast czterech, to zmniejsza się rozmiar tablicy routingu i ilość generowanego ruchu sieciowego, co jest zjawiskiem ze wszech miar pożądanym. Należy zauważyć, że VLSM, a także NAT13 (network address translation) zostały zaproponowanej jako rozwiązania mające spowolnić tempo „wyczerpywania” się publicznych adresów IP. 1.3.3 Podział systemów autonomicznych na obszary Ponieważ w dużych, rozbudowanych sieciach komputerowych obszary autonomiczne zawierają znaczną liczbę routerów, pojawia się potrzeba podziału takich systemów na mniejsze obszary (ang. area). Podział taki ma na celu: • zmniejszenie generowanego ruchu sieciowego; • zmniejszenie czasu zbieżności sieci; • podniesienie poziomu bezpieczeństwa; 13 NAT jest to technika translacji adresów sieciowych. Kiedy komputery z sieci lokalnej komunikują się z siecią zewnętrzną np. Internetem wówczas router z włączoną usługą NAT dynamicznie tłumaczy adresy prywatne na adresy zewnętrzne (publiczne), umożliwiając użytkowanie Internetu przez większą liczbę komputerów niż posiadana liczba adresów publicznych. Stosowanie NAT prowadzi do oszczędności publicznych adresów IP, a także dzięki „ukrywaniu” adresów wewnętrznych wpływa na poziom bezpieczeństwa sieci komputerowej. - 24 - • odseparowanie potencjalnych problemów, a także ułatwienie ich rozwiązania. Obszar jest zbiorem sieci o spójnej adresacji wraz z routerami posiadającymi interfejsy do tychże sieci – każda sieć (podsieć) w obszarze musi posiadać przypisany sobie przynajmniej jeden interfejs routera. Natomiast spójna adresacja jest to adresacja ciągła blokami (adresów IP) w rezultacie umożliwia ona sumaryzację adresów przy routingu międzyobszarowym. Standard protokołu OSPF nie narzuca, w jaki sposób poszczególne obszary powinny być adresowane. Dowolny obszar może stanowić jedną logiczną sieć (jak często jest z obszarem zero) lub być podzielony na podsieci, lecz w taki sposób żeby można było na routerach brzegowych danego obszaru (ang. Area Border Router), przeprowadzić wspomnianą sumaryzację. Routery tworzące dany obszar posiadają swoje własne bazy stanu łączy (w pamięci operacyjnej routera) odzwierciedlające topologię tego obszaru. Bazy te powinny być identyczne dla wszystkich routerów z danego obszaru. Wykorzystując informacje zawarte w bazie, algorytm Dijkstry tworzy drzewo najkrótszych ścieżek indywidualnie dla każdego obszaru na każdym z routerów. Topologia danego obszaru jest ukryta przed routerami zewnętrznymi, tzn. należącymi do innych obszarów. Izolacja taka pozwala znacząco ograniczyć ilość ruchu sieciowego generowanego przez protokół routingu, a także istotnie zmniejszyć rozmiar tablic routingu, w porównaniu do rozwiązania traktującego cały system autonomiczny jako jeden obszar. Kolejną zaletą wprowadzenia obszarów jest zwiększenie bezpieczeństwa. W przypadku, kiedy napastnik opanuje dany router, uzyskuje wiedzę tylko o danym obszarze, a nie o całym systemie autonomicznym. Wnioskiem z tego jest fakt, że wszystkie routery należące do danego obszaru posiadają identyczna bazę stanów łączy, lecz co ważniejsze, router należący do więcej niż jednego obszaru tzw. router graniczny (ABR – area border router) posiada oddzielne bazy stanów łączy dla każdego z obszarów. W związku z wprowadzeniem obszarów w OSPF występują dwa typy routingu. Pierwszy typ to tzw. routing wewnątrzobszarowy (intra-area routing) występujący w sytuacji, kiedy zarówno nadawca jak i odbiorca danego pakietu znajdują się w tym samym obszarze. W tym przypadku nie są potrzebne żadne informacje pochodzące z spoza danego obszaru, co nie jest bez znaczenia dla bezpieczeństwa. Analizując dokładniej to zagadnienie należy stwierdzić, że generując fałszywe, celowo spreparowane aktualizacje tras routingu wewnątrz obszarowego i „wstrzykując” je z zewnątrz obszaru napastnik nie osiągnie oczekiwanego rezultatu, ponieważ będą one ignorowane. Do typu drugiego, czyli routingu międzyobszarowego, (inter-area routing) zalicza się sytuację, w której nadawca i odbiorca danego pakietu znajdują się w różnych obszarach tego samego systemu autonomicznego. W sytuacji, kiedy nadawca i odbiorca znajdują się w - 25 - różnych systemach autonomicznych pojawia się tzw. routing międzysystemowy, a protokoły, które go obsługują, takie jak BGP czy IS-IS zaliczamy do tzw. protokołów zewnętrznych (Exterior Gateway Protocol). Ze względu na tematykę niniejszej pracy jak i naturę protokołu OSPF należącego do wewnątrzsystemowych protokołów routingu (Interior Gateway Protocol) zagadnienia związane z routingiem miedzysystemowym zostały pominięte. Routing międzyobszarowy w protokole OSPF jest realizowany zawsze poprzez obszar zero (backbone). Routing pomiędzy dwoma obszarami niezerowymi składa się z następujących etapów: 1. routing wewnątrz obszaru, do którego należy nadawca pakietu; 2. routing poprzez obszar zero; 3. routing poprzez obszar, do którego należy odbiorca pakietu. W przypadku, kiedy nadawca lub odbiorca pakietu należą do obszaru zero wówczas nie występują etapy 1 i 3. Przykładowe połączenie obszarów w protokole OSPF zostało przedstawione na rys. 1.4. Rys. 1.4. Połączenia obszarów w protokole OSPF. Topologia obszaru zero wymusza określone ścieżki routingu pomiędzy poszczególnymi obszarami. W przypadku braku możliwości bezpośredniego podłączenia kolejnego obszaru do obszaru zero protokół OSPF umożliwia dodanie nowego obszaru za pomocą łącza wirtualnego. Łącze takie podnosi poziom kontroli administratorskiej w zakresie routingu międzyobszarowego, a także posiada następujące własności: • może zostać skonfigurowane pomiędzy dowolnymi dwoma routerami posiadającymi interfejsy w obszarach innych niż zero; • łącze wirtualne należy do obszaru zero; - 26 - • OSPF traktuje oba routery tworzące łącze wirtualne tak jakby były połączone do nienumerowanej sieci szkieletowej typu Point-to-Point; • koszt łącza wirtualnego jest liczony tak jak pomiędzy routerami brzegowymi dwóch różnych obszarów; • przez łącze wirtualne przenoszony jest tylko ruch sieciowy przeznaczony poza obszar, który łącze to łączy z obszarem zero (inter-area routing). • adresacja łącza wirtualnego (dokładniej routerów brzegowych tworzących takie łącze) powinna być skonfigurowana w taki sposób żeby adresy źródłowy i docelowy były przypisane do interfejsu pętli zwrotnej (ang. loopback). Działanie takie ma na celu uniezależnienie stanu łącza wirtualnego od stanu interfejsów fizycznych routerów łącze to tworzących. Technika tworzenia łącza wirtualnego polega na odpowiednim skonfigurowaniu dwóch routerów brzegowych (ang. Area Border Router) znajdujących się na końcach łącza wirtualnego. Jeden router znajduje się pomiędzy obszarem zero, a obszarem, przez który łącze takie przechodzi („tranzytowym”). Drugi zaś pomiędzy obszarem dołączanym za pomocą łącza wirtualnego, a obszarem „tranzytowym”. Natomiast sama konfiguracja wspomnianych routerów sprowadza się do „poinformowania” każdego z routerów, do jakiego obszaru łącze prowadzi i jaka jest wartość parametru router id dla routera znajdującego się na drugim końcu łącza wirtualnego. Przykładowe zastosowanie łącza wirtualnego zostało zilustrowane na rys. 1.5. W przedstawionej topologii obszar czwarty (area 4) podłączony jest do obszaru zero (area 0) z wykorzystaniem łączą wirtualnego prowadzącego przez obszar pierwszy (area 1). Wszystkie przedstawione na rys. 1.5. routery są routerami brzegowymi (ABR) dla obszarów, do których posiadają podłączone interfejsy. Warto wspomnieć, że adresacja routerów brzegowych powinna być wykonana tak żeby każdy interfejs posiadał przypisany adres IP zgodny z adresacją obszaru, do którego należy. Dodatkowo identyfikator routera (ang. router id) powinien mieć przypisaną wartość odpowiadającą adresowi pętli zwrotnej (ang. loopback). Tak jak poprzednio, działanie takie ma na celu uniezależnienie wartości parametru router id od stanu interfejsów tego routera. Tak jak zostało to przedstawione na rys. 1.5, routery tworzące łącze wirtualne posiadają odpowiednio po jednym interfejsie podłączonym do obszaru czwartego (area 4) lub obszaru zero (area 0) oraz po jednym interfejsie podłączonym do obszaru pierwszego (area 1). - 27 - Rys. 1.5. Połączenie linku wirtualnego w protokole OSPF. Warto wspomnieć, że adresacja obszarów wykorzystujących łącze wirtualne powinna być taka, żeby w sytuacji awarii (np. łącza wirtualnego) nie spowodować nieciągłości w adresacji całej sieci. Jest to o tyle ważne, że spowodowanie wspomnianej nieciągłości może prowadzić do utraty komunikacji z innymi obszarami, a tym samym z innymi systemami autonomicznymi, co doprowadzi do izolacji takiego obszaru. Za wyjątkiem powyżej opisanego wymogu, adresacja obszarów wykorzystujących łącze wirtualne nie różni się od adresacji obszarów nie wykorzystujących takiego łącza. Przechodząc do kolejnego zagadnienia warto zauważyć, że pojawia się ono wraz z podziałem sieci komputerowej na systemy autonomiczne, a następnie na obszary. Mowa oczywiście o zagadnieniu obsługi tras routingu rozgłaszanych przez inne systemy autonomiczne. Trasy te mogą być rozgłaszane poprzez protokół taki jak BGP lub zostać skonfigurowane manualnie przez administratora (routing statyczny), dodatkowo rozgłaszana może także być trasa domyślna (ang. default route). W protokole OSPF trasy prowadzące na zewnątrz systemu autonomicznego są w niezmienionej formie propagowane po całym systemie. Koleją istotną cechą jest to, że OSPF wspiera dwa rodzaje metryk dla tras prowadzących na zewnątrz systemu autonomicznego. Metryki pierwszego rodzaju są wyrażane w takich samych wartościach jak metryki dla tras wewnętrznych, czyli jako sumacyjny koszt tras, z których jedna prowadzi do granicy systemu autonomicznego, a druga od granicy do miejsca docelowego. Translacja metryki używanej przez BGP na metrykę OSPF odbywa się w sposób predefiniowany przez administratora, co w konsekwencji prowadzi do „spłaszczenia” złożonej metryki BGP. Jeśli dwa lub więcej routerów rozgłasza „znajomość” określonej trasy (do konkretnej sieci) prowadzącej na zewnątrz systemu autonomicznego wybierany jest ten o mniejszym koszcie sumacyjnym, a - 28 - następnie wszystkie pakiety adresowane do tej sieci są trasowane do routera następnego skoku (ang. next hop) znajdującego się na najlepszej trasie do wybranego routera. W rodzaju drugim przyjmuje się założenie, że koszt trasy na zewnątrz systemu autonomicznego jest znacząco większy niż w jego wnętrzu, a w konsekwencji nie jest przeprowadzana konwersja kosztu trasy zewnętrznej na metrykę używaną wewnątrz systemu. Jeśli dwa lub więcej routerów rozgłasza „znajomość” określonej trasy (do konkretnej sieci) prowadzącej na zewnątrz systemu autonomicznego, wybierana jest trasa o mniejszej metryce zewnętrznej, bez względu na metryki wewnętrzne związane z osiągnięciem tegoż routera wewnątrz systemu autonomicznego. W sytuacji, kiedy więcej niż jeden router rozgłasza trasę do danej sieci o tej samej metryce zewnętrznej, wówczas mniejsza metryka wewnętrzna (osiągnięcia danego routera wewnątrz systemu autonomicznego) decyduje o wyborze najlepszej trasy. Protokół OSPF zezwala na jednoczesne używanie obydwu metryk, w takiej sytuacji metryka pierwszego rodzaju zawsze stosowana jest w pierwszej kolejności. Dodatkową funkcjonalnością OSPF jest tzw. adres przesyłania (forwarding address). Routery znajdujące się na granicach systemu autonomicznego (ASBR – Autonomous System Boundary Routers) można tak skonfigurować żeby rozgłaszały do wewnątrz tego systemu informację „do sieci o adresie X należy trasować na adres Y”. Działanie takie ma na celu eliminację wysyłania pakietów przez niewłaściwe routery (trasy nieoptymalne) i generowanie nadmiarowego ruchu w sieci. Routery rozsyłające informacje o „adresach przesyłania” określane są mianem serwerów tras (route servers). 1.3.4 Budowa i wykorzystanie bazy stanów łączy Tak jak sama nazwa wskazuje, protokoły wykorzystujące stan łącza (link state) budują bazę informacji o topologii sieci, w której pracują. Baza ta nosi nazwę „baza stanów łączy”, a jej zawartość zmienia się dynamicznie wraz ze zmianami w topologii sieci. Protokół OSPF do budowy bazy stanów łączy wykorzystuje pakiety LSA (Link State Advertisement) domyślnie kierowane na adres typu multicast 224.0.0.6 - routera desygnowanego, który następnie rozsyła otrzymany pakiet na adres typu multicast 224.0.0.5. Jeśli system autonomiczny składa się z jednego obszaru, wówczas każdy z routerów w tym systemie posiada (powinien posiadać) taką samą bazę stanów łączy. W sytuacji, kiedy system autonomiczny zostaje podzielony na obszary, każdy z „wewnętrznych” routerów danego obszaru posiada taką samą bazę stanów łączy, a router graniczny danego obszaru (Area Border Router) z racji swojej funkcji posiada informacje ze wszystkich obszarów, do których jest podłączony (dla każdego - 29 - obszaru ma oddzielną bazę). W tym miejscu należy zaznaczyć, że router graniczny dla całego systemu autonomicznego (Autonomous System Boundary Router) posiada także informacje (nie umieszczane w bazie stanów łączy) otrzymane z spoza danego systemu np. za pośrednictwem protokołu BGP. Informacje te tylko w ograniczony sposób odnoszą się do topologii sieci znajdującej się poza systemem autonomicznym i składają się z trzech elementów: adresu sieci zewnętrznej, wartości metryki do tejże sieci oraz adresu następnego routera na trasie. Ponieważ protokół OSPF jest protokołem „wyzwalanym zdarzeniami” (ang. event trigged), dlatego aktualizacje przedmiotowej bazy nie są generowane periodycznie, a jedynie w sytuacji, kiedy któryś z routerów danego obszaru albo systemu autonomicznego (w zależności od konfiguracji) wykryje zmianę w topologii sieci. W poprawnie funkcjonującym środowisku zmiany takie powinny należeć do rzadkości, a do podstawowych czynników generujących je zaliczyć należy: • reorganizację sieci; • dołączenie nowego routera do sieci (obszaru); • odłączenie routera od sieci (obszaru); • uszkodzenia takie jak np. uszkodzenie interfejsu, uszkodzenie całego routera, uszkodzenie medium transmisyjnego łączącego routery itp. Dzięki zastosowaniu mechanizmu aktualizacji wyzwalanej zdarzeniami, w poprawnie działającym środowisku protokół OSPF generuje znacznie mniej ruchu sieciowego niż np. RIP przesyłający całą swoją tablicę routingu do wszystkich routerów sąsiednich domyślnie, co 30 sekund. W silnie obciążonych sieciach (a współczesne potrzeby użytkowników korzystających np. z przesyłania plików wideo obciążenie takie częstokroć generują) nie jest bez znaczenia ilość ruchu sieciowego generowanego przez sam protokół routingu. Pomimo wielu zalet metoda „wyzwalania zdarzeniami” posiada też swoje wady, lecz należy zaznaczyć, że wady te uwypuklają się albo przez krótki okres czasu albo w sytuacjach patologicznych . Pierwszą z wad jest generowanie dużego ruchu sieciowego w przypadku włączenia wszystkich (albo dużej liczby) routerów na raz. Routery zaczynają wykrywać swoich sąsiadów, nawiązywać relacje sąsiedztwa oraz budować bazę stanów łączy, która w początkowej fazie jest często uaktualniana, a w związku z tym powstaje duży ruch sieciowy, który w ekstremalnych przypadkach może sparaliżować działania użytkowników końcowych. Na szczęście sytuacja taka nie trwa długo (dobrze skonfigurowany OSPF posiada czas - 30 - zbieżności około 10 sekund), a w normalnych środowiskach powinna się zdarzać niezwykle rzadko. Druga z wad dotyczy problemu zwanego łopoczący interfejs (ang. flapping interface), a polegającego na tym, że wskutek niewłaściwego działania routera jeden lub wiele jego interfejsów ciągle jest uruchamianych i zamykanych. W takiej sytuacji sąsiedni router połączony z takim interfejsem generuje znaczną liczbę pakietów LSA (aktualizacji topologii), co nie jest bez znaczenia dla wydajności sieci. Baza stanów łączy jest krytycznym elementem (zasobem) dla protokołu OSPF, ponieważ na podstawie informacji z niej pochodzących algorytm najkrótszych ścieżek (w omawianym protokole jest to algorytm Dijkstry) wyszukuje optymalne trasy. Trasy te są następnie umieszczane w tablicy routingu, bez której poprawne działanie routera jest niemożliwe. Z procesem tym związane jest tzw. drzewo najkrótszych ścieżek, którego budowa i wykorzystanie zostało opisane w podrozdziale 1.3.5. Podobnie jak tablica trasowania tak i baza stanów łączy jest przechowywana w pamięci RAM routera, a jej zawartość (tak samo jak zawartość tablicy trasowania) jest kasowana przy restarcie bądź wyłączeniu routera. W miejscu tym należy zauważyć, że trasy statyczne są zapamiętywane w pliku konfiguracyjnym routera w konsekwencji są one przepisywane do pamięci operacyjnej po jego restarcie. 1.3.5 Budowa i wykorzystanie drzewa najkrótszych ścieżek Kolejnym etapem będącym bezpośrednim następstwem budowy lub przebudowy bazy stanów łączy jest tworzenie drzewa najkrótszych ścieżek. Drzewo to jest budowane z wykorzystaniem informacji z bazy stanów łączy przy użyciu algorytmu Dijkstry14. Następnie każdy router buduje własne drzewo najkrótszych ścieżek z sobą samym jako korzeniem. W związku z tym, w odróżnieniu do bazy stanów łączy, drzewo to jest inne dla każdego z routerów, nawet w tym samym obszarze. Głównym celem budowy drzewa ścieżek jest wyznaczenie najkrótszych tras do wszystkich znanych sieci i routerów, a następnie na podstawie obliczonych wartości zbudowanie lub aktualizacja tablicy routingu. Wartym uwagi jest fakt, że drzewo to zawiera pełną ścieżkę do danej sieci bądź routera, zaś w tablicy routingu umieszczany jest tylko adres następnego routera na wyznaczonej ścieżce do konkretnej sieci, a także koszt osiągnięcia tejże sieci, nie zaś cała trasa. Konsekwencją z tej własności jest fakt, że każdy obszar OSPF jest siecią bezpołączeniową (amg. connectionless 14 Należy zaznaczyć, że istnieje uogólnienie tego algorytmu tzw. algorytm Bellmana-Forda służący do wyznaczania najkrótszych tras w grafach zawierających ścieżki także o ujemnych wartościach. Z racji nieujemnych wartości kosztów (koszty te są wyliczane na podstawie przepustowości, czyli wartości dodatniej) algorytm Bellmana-Forda nie jest szeroko stosowany w implementacjach protokołu OSPF. - 31 - network), czyli taką, w której routing nie jest predefiniowany na całej trasie, a każdy z routerów wyznacza indywidualnie kierunek trasowania danego pakietu. Jeśli router jest podłączony do kilku obszarów (Area Border Router), a w związku z tym posiada kilka baz stanów łączy, wówczas drzewo najkrótszych ścieżek jest budowane dla każdej z baz osobno. Następnie trasy do wyznaczonych sieci są umieszczane w jednej tablicy routingu. 1.3.6 Typy komunikatów używanych przez OSPF OSPF działa bezpośrednio w czwartej warstwie modelu OSI, czyli pakiety OSPF są przenoszone przez pakiety IP, a te z kolei są enkapsulowane w ramki. Typy ramek zależą bezpośrednio od stosowanej technologii np.: Ethernet, FDDI czy Token Ring. W OSPF-ie występuje pięć różnych typów komunikatów, każdy z nich rozpoczyna się standardowym 24 bitowym nagłówkiem. Nagłówek ten zawiera wszystkie niezbędne informacje potrzebne do podjęcia decyzji, czy dany komunikat powinien zostać przyjęty czy odrzucony przez dany router. Typy komunikatów używanych przez OSPF to: • Hello; • Database Description; • Link State Request; • Link State Update; • Link State Advertisement. Hello – komunikaty te są wysyłane periodycznie przez wszystkie interfejsy, na których działa OSPF i służą nawiązaniu oraz utrzymywaniu relacji sąsiedztwa między routerami. W sieciach rozgłoszeniowych są one kierowane na adresy multicast (224.0.0.5 – wszystkie routery, 224.0.0.6 – router desygnowany), co umożliwia dynamiczne wykrywanie nowych sąsiadów. Zawartość komunikatu stanowią między innymi takie pola jak: maska sieciowa, interwał „hello” i interwał “router dead”, parametry te muszą posiadać takie same wartości dla wszystkich routerów nawiązujących relacje sąsiedztwa. Dalsze elementy składowe komunikatu Hello to pola takie jak: opcje, priorytet routera, adres desygnowanego routera, adres zapasowego desygnowanego routera, adresy sąsiednich routerów. - 32 - 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 1 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Network Mask | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HelloInterval | Options | Rtr Pri | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RouterDeadInterval | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Designated Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Backup Designated Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Neighbor | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.6. Schemat budowy pakietu „Hello”. Database Description – komunikaty te są wymieniane pomiędzy routerami pozostającymi w relacji sąsiedztwa i zawierają opis zawartości bazy stanów łączy. Wymiana informacji odbywa się na zasadzie master-slave gdzie router master wysyła pakiety Database Description, a router slave potwierdza ich otrzymanie. W sytuacji, kiedy wymagana jest odwrotna wymiana informacji routery zamieniają się rolami. Format budowy komunikatów typu Database Description jest bardzo podobny do formatu komunikatów: Link State Request oraz Link State Acknowledgement i zawiera pola takie jak: MTU interfejsu, opcje, I-bit, Mbit, MS-bit, numer sekwencyjny. - 33 - 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 2 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Interface MTU | Options |0|0|0|0|0|I|M|MS| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DD sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +An LSA Header -+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.7. Schemat budowy pakietu „Database Description”. Link State Request – w sytuacji, kiedy całość lub część bazy stanów łączy staje się nieaktualna np. na skutek zmian w topologii sieci, router wysyła komunikat Link State Request do routerów sąsiednich żądając w ten sposób przesłania aktualnych wersji bazy stanów łączy. 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 3 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link State ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertising Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.8. Schemat budowy pakietu „Link State Request”. - 34 - Link State Update – komunikaty te są wysyłane w odpowiedzi na Link State Request i zawierają informacje uaktualniające (lub budujące) bazę stanów łączy. W sieciach rozgłoszeniowych są one wysyłane na adresy multicast 224.0.0.6 oraz 224.0.0.5. W sytuacji, kiedy wymagana jest retransmisja, wówczas adresem docelowym jest (wcześniej już poznany) konkretny adres typu unicast. Komunikaty Link State Update są przesyłane tylko pomiędzy routerami sąsiednimi. Powiadomienia te są wysyłane w sytuacji, kiedy pojawi się zmiana topologii sieci lub kosztów łączy, oraz także, co 30 minut bez względu na zaistnienie zmian bądź ich brak. 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | 4 | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | # LSAs | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ++-+ | LSAs | ++-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.9. Schemat budowy pakietu „Link State Update”. Link State Advertisement – komunikaty te są wysyłane jako potwierdzenia odebrania innych wymagających takiego potwierdzenia pakietów. Mechanizm ten działa w sposób podobny do potwierdzeń stosowanych w protokole TCP, gdzie także jest możliwym potwierdzanie jednym komunikatem otrzymania pewnej grupy innych komunikatów (mechanizm kumulacyjnych potwierdzeń). W zależności od przeznaczenia komunikaty te mogą być kierowane na adresy zarówno multicast (do desygnowanego routera i zapasowego routera desygnowanego), jak i adresy unicast (w przypadku, kiedy wymagana jest retransmisja). Specyfikacja protokołu OSPF definiuje pięć typów pakietów LSA, do których należą: • Router LSA; • Network-LSA; • Summary-LSA (sieć IP ); • Summary-LSA (ASBR); - 35 - • AS-external-LSA. Komunikaty te zawierają informacje opisujące obszar działania protokołu OSPF i są przesyłane do każdego routera tego obszaru. Dzięki zastosowaniu niezawodnej komunikacji każdy router w obszarze posiada taki sam zbiór informacji pochodzących z pakietów LSA. Zbiór ten nosi nazwę bazy stanów łączy (Link-state database). Wszelkie informacje niezbędne do zidentyfikowania komunikatu znajdują się w jego standardowym dwudziestobitowym nagłówku. Ponieważ wiele pakietów LSA może jednocześnie znajdować się we wspomnianej domenie niezbędnym jest ustalenie następstwa czasowego – komunikaty najmłodsze zawierają informacje najbardziej aktualne. Do tego celu służy pole „LS age”. Pozostałe pola nagłówka to: opcje, typ LS, identyfikator LS, adres rozgłaszającego routera, numer sekwencyjny, suma kontrolna oraz długość pakietu. Router-LSA – komunikaty te są wysyłane przez każdy router pracujący w domenie OSPF i opisują stan oraz koszt połączeń (interfejsów) do danego obszaru. Wszystkie połączenia danego routera muszą być zawarte w jednym pakiecie Router-LSA. 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS age | Options | 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link State ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertising Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS checksum | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0 |V|E|B| 0 | # links | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | # TOS | metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TOS | 0 | TOS metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.10. Schemat budowy pakietu „Router LSA”. Network-LSA – są generowane w sieciach rozgłoszeniowych oraz w sieciach typu NBMA posiadających przynajmniej dwa routery. Pakiety te są generowane przez router desygnowany - 36 - i opisują wszystkie routery podłączone do danej sieci (także router desygnowany oraz zapasowy router desygnowany). 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS age | Options | 2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link State ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertising Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS checksum | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Network Mask | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Attached Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.11. Schemat budowy pakietu „Network LSA”. Summary-LSA – są generowane przez routery graniczne poszczególnych obszarów (ABR) i zawierają informacje o wszystkich osiągalnych sieciach w danym obszarze. Oba rodzaje pakietów Summary-LSA (sieć IP, ASBR) są identyczne z jednym wyjątkiem. Summary-LSA (sieci IP) opisują poszczególne sieci danego obszaru, więc pole Link-State ID zawiera adres sieciowy, natomiast Summary-LSA (ASBR) we wspomnianym polu zawiera adres IP routera granicznego systemu autonomicznego. 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS age | Options | 3 or 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link State ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertising Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS checksum | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Network Mask | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0 | metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TOS | TOS metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.12. Schemat budowy pakietu „Summary LSA”. - 37 - Warto dodać, że w przypadku występowania obszarów posiadających tylko jeden router graniczny (ang. stub area15), możliwe jest użycie w pakietach Summary-LSA sumacyjnej trasy domyślnej dla danego obszaru, zamiast propagowania pakietów zawierających cały zbiór tras zewnętrznych. Zapobiega to generowaniu niepotrzebnego ruchu. Więcej informacji na temat pakietów LSA znajduje się np. w [4]. AS-external-LSA – komunikaty te są generowane przez router graniczny dla danego systemu autonomicznego i opisują poszczególne sieci znajdujące się zewnątrz tego systemu. W takiej sytuacji pole Link-State ID zawiera konkretne adresy IP. AS-external-LSA są używane także do opisu tras domyślnych prowadzących poza system autonomiczny i wówczas pola „LinkState ID” oraz „maska sieciowa” zawierają adres 0.0.0.0. 0 1 2 3 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS age | Options | 5 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Link State ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertising Router | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LS checksum | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Network Mask | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |E| 0 | metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Forwarding address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | External Route Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |E| TOS | TOS metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Forwarding address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | External Route Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Rys. 1.13. Schemat budowy pakietu „AS external LSA”. Dla przybliżenia sposobu działania protokołu OSPF, a w szczególności sposobu wykorzystania przedstawionych w tym podrozdziale komunikatów, warto przedstawić pewien przykład ich zastosowania. Przyjmijmy następującą sytuację, wszystkie routery danego obszaru są jednocześnie uruchamiane (np. po usunięciu awarii zasilania), a obszar ten jest 15 Sieć (obszar) typu stub jest to sieć posiadająca tylko jedną trasę do komunikacji z innymi sieciami. - 38 - zbudowany w technologii Ethernet. Wówczas komunikaty OSPF są wykorzystywane w sposób następujący. 1. Routery parami nawiązują relację sąsiedztwa (z zastosowaniem powiadomień Hello); 2. Dla każdej pary routerów sąsiadujących wybierany jest router master i slave (z zastosowaniem powiadomień Hello); 3. Dla każdej pary routerów sąsiadujących następuje uzgodnienie numerów sekwencyjnych (z zastosowaniem powiadomień Hello). Numery te są używane do wykrywania nieaktualnych lub zdublowanych powiadomień LSA. 4. Dla każdej z pary routerów sąsiednich router master inicjuję wymianę powiadomień Database Description, a router slave potwierdza otrzymanie powiadomienia wysyłając swoje powiadomienie Database Description do routera master. 5. Jeśli router „wykryje” zmiany w topologii sieci, o których jeszcze nie został powiadomiony, wówczas wysyła on do routerów sąsiednich powiadomienie Link State Request. 6. Po otrzymaniu powiadomienia Link State Request, routery sąsiednie odpowiadają powiadomieniem Link State Update, które jest traktowane jako potwierdzenie otrzymania powiadomienia Link State Request. Powiadomienia Link State Update są przesyłane pomiędzy wszystkimi routerami w danym obszarze (za pośrednictwem routera desygnowanego). Innym przykładem może być sytuacja, kiedy w działającej sieci pojawi się zmiana topologii (router lub interfejs przestaje funkcjonować), wówczas: 1. Routery rozwiązują relację sąsiedztwa z niedostępnym routerem (z zastosowaniem powiadomień Hello); 2. Router, który wykrył zmianę topologii (rozwiązał relację sąsiedztwa) wysyła do swoich sąsiadów powiadomienia Link State Update, które to powiadomienia są dalej dystrybuowane do wszystkich routerów z obszaru. 1.3.7 Rodzaje routerów Zostanie tu przedstawiona klasyfikacja routerów z perspektywy protokołu OSPF. Zgodnie z nią wyróżnia się następujące typy routerów: • router wewnętrzny; • router graniczny obszaru; • router szkieletowy; - 39 - • router graniczny systemu autonomicznego. Przejdę teraz do opisu każdego z wyżej wymienionych typów routerów. Router wewnętrzny (IR - Internal Router) – taki, którego wszystkie interfejsy są podłączone do sieci wchodzących w skład jednego obszaru. Posiada on jedną bazę stanów łączy oraz uruchamia tylko jeden algorytm SPF właściwy dla tej bazy. Router graniczny obszaru (ABR - Area Border Router) – jest podłączony do więcej niż jednego obszaru. Posiada on kilka baz stanów łączy (po jednej dla każdego z podłączonych obszarów) i dla każdej z baz uruchamia osobny algorytm SPF. Uzyskane w ten sposób informacje o trasach routingu są „kondensowane” poprzez zastosowanie agregowania adresów sieci do jednego bloku adresów (CIDR), a następnie propagowane do sieci szkieletowej (obszar zero). Przykładem może być agregowanie czterech sieci o adresach: 192.168.1.0, 192.168.1.64, 192.168.1.128 i 192.168.1.192 każda z maską 26 bitową wchodzących w skład jednego obszaru OSPF do jednej sieci 192.168.1.0 z maską 24 bitową Router szkieletowy (BR – Backbone Router) – taki, który posiada interfejs podłączony do obszaru zero. W szczególności jest to router należący do więcej niż jednego obszaru (router graniczny obszaru zero albo router wewnętrzny obszaru zero. Router graniczny systemu autonomicznego (ASBR – Autonomous System Boundary Router) – taki, który bezpośrednio wymienia informacje z routerami należącymi do innych systemów autonomicznych. Rozgłasza on wewnątrz swojego systemu trasy prowadzące poza system. W związku z powyższym, trasy do wszystkich routerów granicznych systemu autonomicznego znane są każdemu routerowi znajdującemu się w tym systemie. ASBR jest całkowicie niezależny od poprzednich klasyfikacji, więc może być także: routerem wewnętrznym lub routerem granicznym obszaru, ponadto może pełnić funkcję, (lecz nie jest to konieczne) routera szkieletowego. 1.4 Dodatkowe własności protokołu OSPF Protokół OSPF posiada kilka dodatkowych własności. Należy przez to rozumieć możliwość konfiguracji pewnych parametrów, która nie jest konieczna dla poprawnej pracy protokołu, a ma służyć dostrojeniu go do konkretnych warunków pracy. Każdy router indywidualnie wskazuje, jakie dodatkowe parametry jest w stanie obsługiwać, wskazania te są zawarte w pakietach: Hello, Database Description i LSA. Rozwiązanie takie pozwala na wspólną egzystencję i współpracę w obrębie jednego systemu autonomicznego routerów o rożnie skonfigurowanych parametrach dodatkowych. Należy zaznaczyć, że niektóre z tych parametrów muszą być obsługiwane i właściwie skonfigurowane dla wszystkich routerów w - 40 - danym obszarze, w przeciwnym przypadku nie nastąpi nawiązanie relacji sąsiedztwa. Przykładem takiego parametru jest opisany poniżej N/P-bit. Zarazem wartości innych parametrów mogą być dynamicznie negocjowane podczas procesu aktualizacji baz danych stanów łączy. W przypadku niepowodzenia negocjacji (brak uzgodnienia wspólnych wartości) routery sąsiednie najczęściej wymieniają się tylko pewnym podzbiorem informacji zawartych w bazie stanów łączy. W następstwie skutkuje to nieoptymalnymi wpisami w tablicy routingu. Do dodatkowych parametrów konfiguracyjnych zalicza się pola takie jak: Ebit, MC-bit, N/P-bit, EA-bit, DC-bit. Oto ich krótka charakteryzacja. E-bit – bit ten odnosi się do sposobu obsługi AS-External-LSA. Cały obszar OSPF może zostać skonfigurowany jako sieć typu stub. W sytuacji takiej AS-External-LSA nie będą kierowane do tejże sieci (obszaru), ponieważ z racji występowania tylko jednej trasy prowadzącej poza sieć (obszar) potrzeba taka nie występuje. W celu zapewnienia spójnej konfiguracji takiej sieci, wszystkie routery do niej podłączone muszą posiadać wyzerowany E-bit zawarty w pakietach Hello. MC-bit – informuje czy pakiety IP multicast są w danej sieci przesyłane zgodnie ze specyfikacją zawartą w dokumencie [118]. N/P-bit – informuje czy wspierana jest obsługa pakietów LSA typu siódmego zgodnie ze specyfikacja zawartą w dokumencie [119]. EA-bit – informuje czy dany router wspiera obsługę i przesyłanie pakietów ExternalAttributes-LSA zgodnie ze specyfikacją zawartą w dokumencie [120]. DC-bit – informuje czy router obsługuje tzw. (ang. demand circuits) zgodnie ze specyfikacją zawartą w dokumencie [121]. Kolejną dodatkową funkcjonalnością protokołu OSPF w sytuacji, kiedy występują dwa systemy autonomiczne, przy czym w jednym działa OSPF, a w drugim np. RIP, jest możliwość redystrybucji16 tras protokołu RIP. Ponieważ dla małych i niezbyt silnie obciążonych sieci komputerowych protokół RIP w zadowalający sposób spełnia swoje funkcje, a w dodatku jest implementowany na niedrogich routerach, więc jest w takich sieciach często stosowany. Dlatego funkcjonalność protokołu OSPF polegająca na możliwości połączenia dwóch różnych sieci, gdzie w jednej pracuje OSPF a w drugiej RIP jest ze wszech miar pożądana i pożyteczna. Sporo interesujących informacji na temat rozszerzeń oraz dodatkowych własności protokołu OSPF znajduje się w [61]. 16 Redystrybucja tras polega na wymianie informacji o trasach pomiędzy różnymi protokołami (np. RIP i OSPF). - 41 - 1.5 Bezpieczeństwo w protokole OSPF Na początku tego podrozdziału warto zaznaczyć, że tematyka bezpieczeństwa nie ma ścisłego związku z głównym zagadnieniem mojej pracy. Podrozdział ten został w niej zawarty dla jak najpełniejszego przedstawienia własności protokołu OSPF. Współczesne realia niejako wymuszają wprowadzenie mechanizmów zapewniających wysoki poziom bezpieczeństwa. Protokół OSPF posiada wbudowane rozwiązania zapewniające uwierzytelnianie źródła pochodzenia pakietów przezeń używanych, a także integralność ich zawartości. Za pewnego rodzaju wadę można uznać brak możliwości zapewnienia poufności dystrybuowanej informacji, co czyni ten protokół podatnym na pasywne ataki polegające na monitoringu ruchu sieciowego. Dzięki takiemu atakowi napastnik podłączony do danego obszaru jest w stanie, po przeprowadzeniu odpowiedniej analizy, wywnioskować, jaka jest topologia tego obszaru. W pewnych sytuacjach informacje takie mogą być bardzo przydatne np. do rozpoznania sieci poprzedzającego atak aktywny. Do zabezpieczenia integralności przesyłanych informacji protokół OSPF używa nadmiarowych sum kontrolnych. Sumy te stanowią tzw. kontrolę detekcyjną (detective control) pakietów na okoliczność ich modyfikacji. Należy zaznaczyć, że zabezpieczenie to nie działa ani zapobiegawczo (preventive control) ani korekcyjnie (corrective control) wobec modyfikacji (zamierzonej bądź wynikającej z różnego rodzaju zakłóceń) treści pakietu. Kontrola autentyczności źródła pochodzenia pakietów używanych przez protokół OSPF ma bardzo duże znaczenie dla bezpieczeństwa i stabilności sieci komputerowej (przede wszystkim dla danych poprzez nią przesyłanych). Nietrudno jest wymyślić scenariusz, w którym napastnik posiadając fizyczny dostęp do sieci danej organizacji i znając jej topologię (np. dzięki informacjom uzyskanym na drodze ataku pasywnego) wprowadza do niej dodatkowy router. Router ten może służyć dwóm celom. Po pierwsze, może generować niewłaściwe aktualizacje tras (np. poprzez rozgłaszanie celowo i niewłaściwie skonfigurowanej bramy domyślnej), w konsekwencji inne routery nie będą w stanie w sposób wydajny trasować ruchu sieciowego – w przypadku tym mamy do czynienia z formą ataku typu DoS (ang. Denial of Service). Drugim celem wprowadzenia nieautoryzowanego routera może być chęć przekierowania całego lub części ruchu sieciowego do sieci kontrolowanej przez napastnika, a następnie dalsze jego przekierowanie już do właściwego miejsca przeznaczenia. Ponieważ klienci nadal będą w stanie oglądać strony internetowe, korzystać z poczty elektronicznej czy innych usług internetowych, to pojawienie się takiego routera może nie zostać wykryte natychmiastowo. Zaś przez cały ten czas napastnik w kontrolowanej przez - 42 - siebie sieci może zbierać różnego rodzaju potrzebne mu informacje. Atak taki jest rodzajem szpiegostwa np. gospodarczego. W celu zapobieżenia tego typu atakom, protokół OSPF stosuje wspomniane już uwierzytelnianie źródła pochodzenia pakietów w sposób przedstawiony w dalszej części rozdziału. W protokole OSPF informacje niezbędne do przeprowadzenia procesu uwierzytelniania nadawcy pakietu są zawarte w jego nagłówku, a dokładniej w 64 bitowym polu o nazwie „authentication type”. Rodzaj uwierzytelniania jest konfigurowalny oddzielnie dla każdego interfejsu danego routera. Obecnie w protokole OSPF wyróżnia się trzy typy uwierzytelniania: • typ 0 – jego brak; • typ 1 – za pomocą jawnego hasła; • typ 2 – pomocą zaszyfrowanego hasła. Brak uwierzytelniania – jak sama nazwa wskazuje, wybór tego typu powoduje, że informacje wymieniane między routerami w żaden sposób nie są uwierzytelniane – router adresat nie sprawdza pola „AuType w nagłówkach pakietów przychodzących. Z punktu widzenia bezpieczeństwa rozwiązanie to nie jest zalecane. Wybierając je należy mieć na uwadze wszystkie zagrożenia z tym związane. O ile w warunkach produkcyjnych brak uwierzytelniania jest znacznym wyłomem w systemie bezpieczeństwa danej organizacji, o tyle w warunkach np. laboratoryjnych rozwiązanie takie może być całkowicie akceptowalne. Uwierzytelnianie za pomocą jawnego hasła – przy jego zastosowaniu routery wymieniające między sobą informację muszą mieć administracyjnie skonfigurowane takie samo hasło. Hasło to jest w postaci jawnej przesyłane w nagłówku (dokładnie w polu AuthenticationData) każdego pakietu. Po odebraniu pakietu router adresat sprawdza zgodność hasła ze wzorcem przypisanym do interfejsu, na którym odebrał dany pakiet. Należy zaznaczyć, że ten rodzaj uwierzytelniania, połączony z fizyczną ochroną danego obszaru, zabezpiecza przed dołączeniem nieautoryzowanego routera (router bez odpowiednio skonfigurowanego hasła będzie „ignorowany” przez pozostałe routery danego obszaru). Natomiast posiadając dostęp fizyczny napastnik może za pomocą ataków pasywnych przechwycić odpowiednie hasła, ponieważ są one przesyłane w postaci jawnej. Uwierzytelnianie za pomocą zaszyfrowanego hasła – w tym przypadku, podobnie jak dla typu 1, wszystkie routery wymieniające między sobą informacje muszą mieć administracyjnie skonfigurowane to samo hasło. Jednak sam sposób przeprowadzania uwierzytelniania jest zgoła odmienny i składa się z następujących etapów: - 43 - 1. router nadawca wypełnia pole AuType zerami, a w polu AuthenticationData umieszcza identyfikator hasła; 2. do tak powstałego pakietu (na jego końcu) dodawane jest hasło - przypisane do danego interfejsu, którym pakiet ma zostać wysłany; 3. z ciągu utworzonego w punkcie 2 obliczany jest skrót (hash) za pomocą funkcji MD5; 4. wartość skrótu dodawana jest na końcu pakietu. Utworzony w powyższy sposób pakiet jest wysyłany do routera adresata, który przeprowadza proces jego uwierzytelnienia w następujący sposób. 1. wartość skrótu jest „odcinana” od pakietu i zapamiętywana; 2. tak zmodyfikowany pakiet jest kojarzony z hasłem właściwym dla interfejsu odbierającego, przy wykorzystaniu do jego rozpoznania identyfikatora hasła z pola AuthenticationData; 3. z ciągu utworzonego w punkcie 2 obliczany jest skrót (hash) za pomocą funkcji MD5; 4. obliczony skrót jest porównywany z wartością zapamiętaną – pakiet jest akceptowany, gdy obie wartości są identyczne. Dodatkowo w celu eliminacji ataków przez powtórzenie17 (reply attack) każdy pakiet zawiera numer sekwencyjny umieszczany w polu „cryptographic sequence number”. Numery te są zwiększane począwszy od zera aż do wartości maksymalnej, po osiągnięciu której następuje ponowne generowanie numerów sekwencyjnych od zera. Ponieważ w takiej sytuacji routery sąsiednie „widzą” niezgodność numerów sekwencyjnych, zaczynają odrzucać otrzymywane pakiety. Odrzucanie to trwa przez okres definiowany jako „Router Dead Interval”, po czym następuje ponowne ustanowienie wszystkich relacji sąsiedztwa. W celu uniknięcia (a dokładniej zmniejszenia częstotliwości występowania) tego typu problemów niektóre implementacje protokołu OSPF jako 32 bitowy numer sekwencyjny obliczają liczbę sekund od początku 1960 roku. Warto wspomnieć, że rozwiązania zastosowane w protokole OSPF i mające na celu zapewnienie integralności oraz autentyczności pochodzenia pakietów są sprawdzone i szeroko stosowane także w innych protokołach routingu, jak np. RIPv2. 1.6 Równoważenie obciążenia w protokole OSPF Współczesny protokół routingu stosowany w średnich i dużych sieciach informatycznych powinien posiadać możliwość równoważenia obciążenia tras. Równoważenie to polega na kierowaniu ruchu sieciowego adresowanego do konkretnego hosta różnymi trasami 17 Atak przez powtórzenie (ang. reply attack) polega na przejęciu przez napastnika pewnej liczby pakietów, a następnie ponownym ich użyciu („wstrzyknięciu” do sieci komputerowej) w odpowiednim i zaplanowanym momencie. - 44 - jednocześnie. Jeśli trasy te posiadają równe koszty wówczas występuje tzw. równoważenie obciążenia typu RK, w przeciwnym przypadku mamy do czynienia z równoważeniem obciążenia z udziałem tras o różnym koszcie – typu NK. W swej oryginalnej postaci protokół OSPF nie wspiera równoważenia obciążenia typu NK. W niniejszej pracy został opisany autorski sposób równoważenia obciążenia typu NK w protokole OSPF. Ponadto zastosowanie takiego równoważenia ma za zadanie zwiększenie przepustowości, a w konsekwencji wydajności całej sieci. Najbardziej optymalnym rozwiązaniem jest włączenie obsługi równoważenia obciążenia na wszystkich routerach należących do danego obszaru, wymóg ten nie jest jednak konieczny i możliwe jest zastosowanie opcji kombinowanej, w której część „mocniejszych” routerów obsługuje równoważenie, a pozostałe (słabsze) nie robią tego. Zastosowanie takiej konfiguracji może być podyktowane także innymi czynnikami jak np.: przepustowość łącza, obciążenie interfejsu oraz jego stabilność. Przykładowo w sytuacji, kiedy dana sieć posiada tylko jedno silnie obciążone łącze prowadzące na zewnątrz niej, włączenie równoważenia obciążenia nie podniesie wydajności przesyłu informacji ze względu na ograniczenia pasma tego łącza. W odróżnieniu, od np. haseł autentykujących routery, które są przypisywane do poszczególnych interfejsów, równoważenie obciążenia (dla danego routera) jest włączane dla całego procesu OSPF. W konsekwencji nie występuje możliwość włączenia tego równoważenia wyłącznie na wybranych interfejsach danego routera. OSPF posiada wsparcie dla równoważenia obciążenia z udziałem tras o równym koszcie prowadzących do każdej ze znanych sieci. Należy zaznaczyć, że specyfikacja protokołu OSPF nie definiuje liczby tras wykorzystywanych do równoważenia obciążenia i pozostawia jej określenie producentowi sprzętu sieciowego. Twórcy protokołu nie określili też sposobu równoważenia obciążenia. Sposobów takich jest kilka, a do najpopularniejszych należą: • równomierne rozdzielenie pakietów adresowanych do danej sieci na poszczególne trasy; • kierowanie pakietów adresowanych do tej samej sieci różnymi trasami, w zależności od sieci źródłowej. Przy wyznaczaniu tras o równym koszcie w protokole OSPF nie jest brane pod uwagę to, czy początkiem różnych tras prowadzących do tej samej sieci docelowej jest ten sam interfejs wyjściowy danego routera czy też nie. Brak tego typu rozróżniania można uznać za pewnego rodzaju wadę. Jeśli trasa optymalna prowadzi przez silnie obciążony interfejs, to dodanie trasy alternatywnej prowadzącej przez ten sam interfejs nie przyniesie zamierzonych rezultatów. - 45 - 1.6.1 Inne rozwiązania równoważenia obciążenia Zgoła odmienne podejście do omawianego zagadnienia zostało przedstawione w [43], gdzie poruszany jest temat optymalizacji wydajności routingu, poprzez wprowadzenie wag dla poszczególnych łączy. Proponowane rozwiązanie odnosi się do równoważenia obciążenia jedynie z udziałem tras o równym koszcie i polega na wykorzystaniu współczynnika rozdzielania pakietów. Współczynnik ten wykorzystuje wspomniane wagi i na podstawie jego wartości pakiety adresowane do tej samej sieci, są rozdzielane pomiędzy różne trasy (w tym także prowadzące przez ten sam interfejs wyjściowy). Natomiast przedstawiony w omawianym opracowaniu sposób rozdzielania pakietów jest następujący. Wartość współczynnika przypisanego do danej trasy jest proporcjonalna do ilorazu liczby pakietów kierowanych na tę trasę i liczby wszystkich pakietów kierowanych do sieci, do której trasa ta prowadzi. Jeszcze inne podejście zostało przedstawione w [44], gdzie autorzy proponują inny (niż w protokole OSPF) sposób wyznaczania tras optymalnych. Innowacja polega na modyfikacji wyliczania metryki trasy. Podczas jej wyliczania oprócz kosztu trasy brana jest także pod uwagę jej bieżąca dostępna przepustowość. Warto zaznaczyć, że taki sposób wyliczania metryki wymaga wprowadzenia mechanizmu wymiany dodatkowych informacji pomiędzy routerami. Informacje te są wymieniane pomiędzy wszystkimi routerami występującymi na danej trasie i odnoszą się do jej bieżącej przepustowości (tj. niewykorzystywanego pasma łączy wchodzących w skład danej trasy). Mając na uwadze, że protokół OSPF najczęściej działa w średnich i dużych sieciach, a w konsekwencji tablice trasowania routerów zawierają znaczną liczbę tras, to wprowadzenie powyżej takiego mechanizmu wymiany informacji może mieć spory wpływ na wydajność tych routerów. Innymi słowy, routery zajęte przeglądaniem dużych tablic mogą nie mieć czasu na analizę informacji o bieżącej przepustowości. Jeszcze inna metoda wyznaczania metryki trasy została zaprezentowana w [45]. Autor proponuje wyliczanie jej nie tylko na podstawie kosztu, ale także i bieżącego obciążenia, przy czym informacje o obciążeniach są propagowane przez routery i to zarówno wewnątrz obszaru OSPF jak i całego systemu autonomicznego. Podobnie jak w poprzedniej metodzie, działanie takie może mieć spory wpływ na wydajność pracy routerów, tym bardziej, że informacje o obciążeniach rozchodzą się po całym systemie autonomicznym. Zgoła odmienne podejście do tematyki równoważenia obciążenia zostało przedstawione w [46]. W opracowaniu tym autorzy skoncentrowali się na agregacji ruchu sieciowego na podstawie jego miejsca przeznaczenia. Do przeprowadzania takiej agregacji wykorzystywana - 46 - jest minimalizacja obciążenia poszczególnych łączy sieciowych. Minimalizacja ta polega na odpowiednim wyborze podzbioru routerów następnego skoku spośród wszystkich dostępnych. Wybór ten jest podejmowany w oparciu o ilość danych przesyłanych do danej sieci oraz obciążenia łączy do niej prowadzących. Ponadto, zaproponowana w [46] metoda wykorzystuje algorytm Dijkstry ze zmodyfikowanymi wagami poszczególnych łączy. Podejście takie prowadzi do nierównomiernego rozdzielania pakietów adresowanych do danej sieci, pomiędzy odpowiednio wybrany podzbiór routerów następnego skoku – co też było zamysłem autorów. Warto zauważyć, że powyższe rozwiązanie wykorzystuje jedynie trasy o koszcie optymalnym, a także wymaga zbierania informacji o ilości ruchu sieciowego przesyłanego do każdej z sieci. Dodatkowo, jak zauważają sami autorzy, wymagana jest komunikacja pomiędzy routerami mająca na celu wymianę informacji o wyznaczonym podzbiorze routerów następnego skoku dla każdej z dostępnych sieci. Analogicznie jak w przypadkach poprzednich, nie jest to bez znaczenia dla wydajności routerów. Więcej informacji na temat samej implementacji rozwiązania przedstawionego w omawianym opracowaniu znajduje się w [47]. Autorzy opisują w nim, jak z wykorzystaniem ogólnie dostępnego oprogramowania do symulacji routingu można utworzyć sieć komputerową wspierającą modyfikacje przedstawione w [46]. Jeszcze inne podejście do problemu routingu zostało zaprezentowane w [48]. W opracowaniu tym autorzy proponują wykorzystanie algorytmu genetycznego wzbogaconego o procedurę lokalnego wyszukiwania wartości wag dla poszczególnych łączy. Odpowiedni dobór tych wag ma prowadzić do optymalizacji funkcji kosztu pokonania danej trasy, a w rezultacie do wydajniejszej komunikacji i efektywniejszego wykorzystania istniejących łączy. Warto zauważyć, iż autorzy przyjmują, że funkcja kosztu danego łącza zależy od jego prognozowanego obciążenia, nie zaś nominalnej przepustowości, jak jest to przyjmowane w protokole OSPF. Funkcja ta została już wcześniej zdefiniowana przez B. Fortz i M. Thorup [50]. Jednocześnie przyjmują założenie, że ruch sieciowy jest równomiernie rozdzielany pomiędzy wszystkie optymalne trasy prowadzące do danej sieci. W świetle tego opracowania, trasy optymalne należy rozumieć jako trasy o najniższej wartości optymalizowanej funkcji celu (powyżej wspomnianej funkcji kosztu), której argumentami są wyliczona waga danego łącza oraz przewidywany współczynnik jego obciążenia. Do minimalizowania funkcji celu autorzy proponują zastosowanie algorytmu genetycznego, co można potraktować jako podejście interesujące i dość oryginalne, jednak nie pozbawione pewnych wad. Po pierwsze, routery nie posiadają wiedzy o tym ile informacji będzie przesyłane i do którego odbiorcy (wiedza o charakterystyce ruchu sieciowego), co zakładają autorzy przy przeprowadzaniu - 47 - badań. Po drugie, uruchomienie algorytmu genetycznego na routerze może prowadzić do znacznego spadku jego wydajności, a w przypadku routerów o małej mocy obliczeniowej do ich czasowej dysfunkcji. Na podstawie przeprowadzonych badań oraz teoretycznych obliczeń, autorzy dochodzą do wniosku, że zaproponowane przez nich rozwiązanie daje wyniki suboptymalne, lecz jak najbardziej zadowalające. Z kolei w pracy [49] autor koncentruje się na problemie optymalizacji lokalnego rozdziału ruchu sieciowego w protokołach wykorzystujących routing z udziałem najkrótszych ścieżek. Dokładniej mówiąc, stara się tak wyznaczyć wagi każdego z łączy wchodzących w skład rozważanych topologii sieciowych, żeby minimalizować maksymalne obciążenie łączy – konsekwencją tego ma być zmniejszenie zatorów w sieciach. Ponieważ zadanie optymalizowania wzmiankowanych wag jest problemem NP-trudnym, (co zostało wykazane w [51]), dlatego do jego (przybliżonego) rozwiązania autor proponuje zastosowanie heurystyk lokalnego wyszukiwania. Warto zauważyć, że już we wstępie pracy pojawia się cenne spostrzeżenie, a mianowicie, że w celu lepszego (bardziej efektywnego) wykorzystania zasobów sieciowych protokoły routingu powinny być „czułe” na to, jaka jest charakterystyka ruchu sieciowego. Dodatkowo mając na uwadze to, że rozdział ruchu sieciowego pomiędzy dwie trasy jest rozwiązaniem efektywniejszym niż kierowanie go przez tylko jedną trasę, (co zostało analitycznie wykazane w [54]), efektywne protokoły routingu powinny wykorzystywać wiele tras o równym koszcie prowadzących do tej samej sieci. Przy czym autor zakłada równomierny rozkład pakietów pomiędzy wszystkie używane trasy. W celu realizacji postawionego sobie zadania w opracowaniu tym zastosowane zostały dwie heurystyki. Pierwsza to metoda zaproponowana przez B. Fortz i M. Thorup przedstawiona w [52], a druga to metoda K. G. Ramakrishnan i M. A. Rodrigues przedstawiona w [53]. Dodatkowo w celu zmniejszenia złożoności obliczeniowej drugiej metody autor proponuje wprowadzenie do niej pewnego udoskonalenia. Udoskonalenie to polega na dokonaniu trzech modyfikacji. Pierwsza z nich polega na rozszerzeniu funkcjonalności zastosowanej metody o wyznaczanie wielu tras o najmniejszym koszcie (zamiast tylko jednej). Druga wprowadza rozkład (balansowanie) ruchu sieciowego pomiędzy wyznaczone trasy. Trzecia zaś dodaje możliwość zmiany (w jednej iteracji) więcej niż jednej spośród wag przypisanych do poszczególnych łączy wchodzących w skład optymalizowanych tras, co ma prowadzić do efektywniejszego rozkładu obciążenia. W pracy tej jest także poruszone zagadnienie wyznaczania wag poszczególnych łączy w sytuacji, kiedy nie jest znana charakterystyka ruchu sieciowego. Niestety próby rozwiązania tego zagadnienia nie przynoszą zadowalających rezultatów. Należy jednak stwierdzić, że badania przeprowadzone w tej pracy - 48 - wykazują, iż zastosowanie udoskonalonej drugiej metody daje o 20% lepsze rezultaty w minimalizowaniu maksymalnego obciążenia łączy sieciowych niż metoda zwiększania wag silnie obciążonych łączy (stosowana częstokroć przez operatorów sieciowych). Dodatkowo zastosowana metoda daje aż o 40% lepsze rezultaty od tych, które można uzyskać stosując wagi odpowiadające nominalnym przepustowościom łączy, zgodnie z obecną specyfikacją protokołu OSPF. Ciekawe podejście do omawianego zagadnienia można znaleźć w [62]. W opracowaniu tym autor przedstawia adaptacyjne rozwiązanie z obszaru inżynierii ruchu sieciowego zwane MATE. Rozwiązanie to wykorzystuje równoważenie obciążenia przeprowadzane w krótkich przedziałach czasowych, a także aproksymację spodziewanego obciążenia łączy sieciowych. W MATE funkcja kosztów poszczególnych tras zależy od sumy średnich opóźnień występujących na łączach wchodzących w skład danej trasy. Proponowany algorytm działa w sposób rozproszony (nie występuje centralne zarządzanie), a ruch sieciowy jest dystrybuowany na różne trasy w oparciu o dobrze znaną funkcję skrótu CRC. W [63] został zaprezentowany stosunkowo podobny sposób równoważenia obciążenia polegający na tym, że pakiety adresowane do danej sieci są losowo dystrybuowane na „n” tras. W rozwiązaniu tym, każde łącze posiada dynamicznie przypisany i periodycznie aktualizowany koszt, który jest funkcją bieżącego obciążenia tego łącza. Koszt całej trasy liczony jest jako suma kosztów poszczególnych łączy wchodzących w jej skład. Natomiast ruch sieciowy rozdzielany jest pomiędzy poszczególne trasy w taki sposób żeby koszty wykorzystywanych tras (zależne od obciążenia łączy je stanowiących) były względem siebie zbliżone. W [68] autorzy przedstawiają nowatorski algorytm wyznaczania kosztów tras. Algorytm ten nosi nazwę najkrótsza-najszersza (ang. shortest-widest) i wyznacza trasy o minimalnej liczbie przeskoków (ang. hops) cechujące się największą przepustowością na najwolniejszych łączach (max-min) wchodzących w ich skład. Następnie odpowiednie zasoby są rezerwowane i modyfikowane w sposób odzwierciedlający bieżący stan sieci. W celu zapobieżenia nadmiernej generacji ruchu sieciowego, informacje o zaistniałych zmianach w stanie sieci (np. obciążenia i dostępność interfejsów oraz łączy itp.) są propagowane jedynie w sytuacjach, gdy zostają przekroczone odpowiednio ustawione wartości progowe. Inna ciekawa koncepcja została zaprezentowana w [71], gdzie autorzy proponują zastosowanie rozwiązania o nazwie PSR (ang. Proportional Sticky Routing) do celów wyznaczania optymalnego rozkładu ruchu sieciowego pomiędzy różne trasy. PSR wykorzystuje lokalne informacje o stanach łączy i nie wymaga centralizacji układu zarządzania trasami routingu. Mówiąc precyzyjniej, wykorzystując PSR każdy router - 49 - wyznacza „n” podstawowych i „m” alternatywnych tras do danej sieci. Metryką przy wyznaczaniu tras jest liczba routerów wchodzących w jej skład. Istota działania algorytmu polega na takim rozkładaniu ruchu sieciowego, aby wyrównywać na wszystkich używanych trasach współczynniki przepływu, czyli rozkładać ruch w sposób równomierny względem czasu. W celu realizacji takiego działania, algorytm „śledzi” i zapamiętuje historię blokad każdego łącza. Tylko trasy z najmniejszym prawdopodobieństwem wystąpienia blokad (na łączach wchodzących w ich skład) oraz najmniejszą liczbą routerów są brane pod uwagę przy tworzeniu tablic routingu. Innymi słowy, autorzy w swoim rozwiązaniu przedstawiają nowatorską, opartą na danych statystycznych, metrykę służącą do wyznaczania preferowanych tras routingu. W [72] ci sami autorzy sugerują, że rozważane trasy powinny być jak najkrótsze, co pozytywnie wpływa na ich złożoność oraz najwolniejsze łącze na trasie powinno być różne dla każdej z tras. W opracowaniu tym zaproponowano też sposób wyznaczania tras o powyżej opisanych własnościach. Dość odmienne rozwiązanie zostało przedstawione w [73]. Autorzy rozważają w sposób wysoce teoretyczny zastosowanie równoważenia obciążenia w celu optymalizacji funkcji użyteczności w odniesieniu do ograniczeń takich jak przepustowość łączy oraz natężenie ruchu sieciowego. Wspomniana funkcja użyteczności jest wyrażona jako suma funkcji wypukłych np. związanych z opóźnieniami poszczególnych łączy. W opracowaniu tym do rozdziału ruchu sieciowego zastosowano tzw. zdecentralizowane reguły adaptacyjne wywodzące się z metody zwanej „sliding mode control” – metoda nieliniowej kontroli przekształcania nieliniowych systemów dynamicznych przy użyciu kontroli przełączania o wysokiej częstotliwości [122]. Ponadto autorzy wykazują, że zastosowanie takiego podejścia oddzielnie dla każdej z pary komunikujących się węzłów prowadzi funkcję użyteczności zbieżnie do maksimum. W [76] przedstawione jest jeszcze inne podejście do badanego zagadnienia, a mianowicie każda trasa rozumiana jest jako zbiór niezależnych kolejek (po jednej dla każdego z łączy). Opóźnienie całej trasy wyznaczane jest jako suma średnich opóźnień po wszystkich kolejkach wchodzących w skład trasy. Omawiany algorytm wyznacza także rozkład ruchu sieciowego, który minimalizuje średnie opóźnienie każdej trasy, a także na bieżąco aktualizuje proporcje rozkładu ruchu sieciowego w sytuacji zmiany obciążenia sieci. Bardziej ogólne spojrzenie na omawianą kwestię wykorzystujące idee zastosowania scentralizowanego modelu zarządzania trasami routingu zostało przedstawione w [69]. Autorzy proponują zastosowanie scentralizowanego menadżera zasobów (ang. Centralized Resouce Manager) do wyznaczania tras i zbierania informacji o aktualizacjach stanów łączy. - 50 - „Zarządca” taki działa dla całego systemu autonomicznego i wyznacza trasy pomiędzy wszystkimi komunikującymi się węzłami. Innymi słowy, poszczególne routery zgłaszają zapotrzebowanie na ustalenie trasy routingu do danej sieci, zaś stacja zarządzająca wyznacza trasę spełniającą wymogi QoS, aktualizuje obciążenie poszczególnych łączy, a następnie zwraca informacje o ustalonej trasie do konkretnych routerów. Oczywistą wadą takiego rozwiązania jest wprowadzenie tzw. pojedynczego punktu awarii oraz możliwość zaistnienia znacznych opóźnień ze względu na przeciążenie stacji zarządzającej. Osobiście uważam, że pomysł z zastosowaniem scentralizowanego zarządzania trasami routingu jest jak najbardziej godny uwagi lecz należy dobrze się zastanowić nad tym jak szeroki zakres „kompetencji” należy przyznać takiemu „menadżerowi”, tzn. jaką liczbą routerów powinien on zarządzać. Odmienne podejście do zagadnień rozkładu ruchu sieciowego zostało przedstawione [83]. W opracowaniu tym autor koncentruje się na wykorzystaniu algorytmów sztucznej inteligencji takich jak algorytmy genetyczne oraz symulowane wyżarzanie, a także rozważa rozwiązania kombinowane i wprowadza pewne modyfikacje. Warto zauważyć, że w tym opracowaniu przy zastosowaniu algorytmu symulowanego wyżarzania kolejne rozwiązanie jest otrzymywane w wyniku losowych zamian (podmiany) łączy wchodzących w skład poszczególnych tras. Osobiście uważam, że jest to rozwiązanie, które należałoby udoskonalić np. poprzez wprowadzenie pewnej metody selekcji łączy spośród których następuje losowanie. Mając świadomość niedoskonałości istniejących rozwiązań autor proponuje wprowadzenie pewnych udoskonaleń. Modyfikacje polegają na połączeniu algorytmu genetycznego wraz z symulowanym wyżarzaniem, w efekcie czego powstaje algorytm hybrydowy nazwany przez autora HGSA (ang. Hybrid Genetic Simulated Annealing Algorithm). Dokładniej mówiąc, modyfikacji podlega część algorytmu genetycznego odpowiedzialna za proces selekcji. Symulowane wyżarzanie jest zastosowane do wyboru potomka spośród pary rodziców, oraz do wyboru najlepszego rozwiązania spośród całej populacji. Na podstawie przeprowadzonych symulacji, na dwóch przykładach środowisk sieciowych, autor wnioskuje, że algorytm hybrydowy działa wolniej, lecz generuje lepsze rozwiązania w porównaniu do zarówno algorytmu genetycznego jak i symulowanego wyżarzania. W [82] autorzy dokonują prezentacji oraz porównania różnych interaktywnych technik optymalizacji takich aspektów jak: niezawodność, tolerancja błędów, czy koszt w odniesieniu do zagadnienia projektowania sieci komputerowych. Pomimo przytoczenia różnych rozwiązań, popartych wieloma przykładami, autorzy niestety pozostawili czytelnikowi wyciągnięcie wniosków na temat efektywności działania poszczególnych rozwiązań. Natomiast w omawianym artykule zostały opisane dwa zastosowania - 51 - symulowanego wyżarzania do rozwiązania problemu optymalizacji topologii sieciowej. Pierwszy sposób odnosi się do opracowania [84], drugi zaś do [85]. Ze względu na poruszaną tematykę, a także zastosowaną metodę do rozwiązania badanego zagadnienia obydwa te opracowania zostały opisane poniżej w sposób nieco szerszy. Tak jak zostało już wcześniej powiedziane w [84] autorzy stosują algorytm symulowanego wyżarzania w którym rozwiązanie początkowe jest generowane losowo. Następnie łącza są losowo dodawane lub usuwane z danej trasy w rezultacie powstaje rozwiązanie wtórne. W przypadku usuwania łącza sprawdzane jest, czy dana sieć nadal jest osiągalna, co jest warunkiem koniecznym do wstępnej akceptacji wygenerowanej trasy. W rozwiązaniu tym zastosowano następujące wartości parametrów algorytmu: całkowity czas działania 4000 (autorzy nie określili jednostek) jest jednocześnie warunkiem zatrzymania algorytmu. Parametr alfa odnoszący się do szybkości, z jaką zmniejszana jest temperatura przyjęto równy 0.988. Natomiast czas, w jakim algorytm działa w danej temperaturze jest wydłużany wraz z jej spadkiem o wartość parametru beta = 1.005. Pomimo, że w [85] zastosowano to samo rozwiązanie do tego samego zagadnienia, to jednak przyjęto nieco inne podejście do warunków i parametrów pracy algorytmu. A mianowicie, warunkiem zatrzymania jest osiągnięcie przez algorytm określonej temperatury minimalnej. Temperatura początkowa jest wyznaczana w sposób bardziej złożony. Przyjmijmy, że „X” jest pewnym współczynnikiem akceptacji, np. stosunkiem liczby zaakceptowanych rozwiązań do liczby rozwiązań wygenerowanych. Wartość temperatury początkowej jest podwajana (w każdym kolejnym uruchomieniu algorytmu) poczynając od pewnej wartości wyjściowej, aż wspomniany współczynnik akceptacji osiągnie wartość większą od założonej. Uważam, że jest to bardzo interesujące podejście tym bardziej, że umożliwia osiągnięcie z góry założonej dokładności działania algorytmu. Szkoda tylko, że autorzy nie wspomnieli o tym jak wydłuża się czas pracy algorytmu oraz jakość wygenerowanych rozwiązań wraz ze wzrostem temperatury początkowej, co mogłoby stanowić bardzo interesującą informację. Inna próba porównania efektywności działania algorytmów genetycznych i symulowanego wyżarzania do planowania sieci telekomunikacyjnych została przedstawiona w [80]. Autor stawia pytanie, który z algorytmów może dać lepsze rozwiązania dla danego problemu i w jaki sposób powinny być dobierane parametry pracy algorytmu. Po przeprowadzeniu pewnego zestawu niezbyt skomplikowanych symulacji, autor wnioskuje, że lepsze rezultaty otrzymuje się przy zastosowaniu algorytmów genetycznych. Jednakże nie jest to zupełnie prawdziwe stwierdzenie. Główny wniosek przeprowadzonych porównań można sformułować w sposób następujący. Efektywność pracy omawianych algorytmów zależy od typu problemu, do - 52 - rozwiązania, którego zostały użyte oraz od przyjętych wartości początkowych parametrów. Przy wyszukiwaniu optymalnych lokalizacji dla koncentratorów sieciowych lepszy okazał się algorytm genetyczny, ale tylko wtedy, gdy rozpoczynał działanie z dobrze dobranymi parametrami startowymi. Niestety omawiane opracowanie nie odpowiada (nawet w przybliżeniu) na pytanie, w jaki sposób parametry takie dobierać. Osobiście uważam, że opracowanie metody ustalania parametrów startowych danego algorytmu w zastosowaniu do konkretnego zagadnienia nie jest zadaniem trywialnym, choć na pewno interesującym i bardzo praktycznym. Kolejny przykład zastosowania algorytmu symulowanego wyżarzania do optymalizacji sieci ATM został opisany w [79]. W opracowaniu tym autorzy porównują efektywność działania algorytmu Metropolisa [93][98][99] z algorytmem deterministycznym opracowanym przez Bereznera i Krzesińskiego [90]. Wspomniany algorytm, którego (jak można się domyślać) współautorem jest Polak z pochodzenia, nosi nazwę XFG i służy do rozwiązywania problemów optymalizacyjnych w sposób deterministyczny. Dokładniejsze informacje na temat tego algorytmu zostały przedstawione w [90]. Wracając do omawianego opracowania, do porównania efektywności działania algorytmów została wykorzystana 49-cio węzłowa topologia sieciowa typu grid (krata z routerami w miejscach węzłów) z równymi kosztami tras. Autorzy zauważają, że sieć o takich rozmiarach i złożoności jest zbyt duża żeby mogła być wydajnie analizowana przez standardowe nieliniowe oprogramowanie typu „solver”. W przeprowadzonych pomiarach zastosowano następujące ustawienia algorytmu symulowanego wyżarzania. Schemat chłodzenia jest oparty na wykorzystaniu funkcji o wzorze c = c0 (1 − k α ) , gdzie „K” jest maksymalną z góry założoną liczbą połączeń w analizowanej K sieci, „k” - liczbą połączeń przeanalizowanych przez algorytm w danej iteracji, zaś c0 jest parametrem inicjalizującym o wartości początkowej równej jeden. Tak jak zauważają autorzy prawidłowy dobór wartości parametru α wymaga przeprowadzenia wielu eksperymentów. Podczas porównań parametr ten przyjmował wartości 1,2,4. Podsumowując, należy wspomnieć, że rezultaty otrzymane podczas przeprowadzonych symulacji są niemalże takie same, lecz algorytm XFG działał w czasie około pięciu minut, podczas gdy symulowane wyżarzanie zajęło około pięciu godzin. Można stwierdzić, że otrzymane wyniki, głównie odnoszące się do różnicy czasów pracy algorytmów są dość niespodziewane, a nawet zaskakujące. Tym bardziej, że w [81] stosując algorytm symulowanego wyżarzania do zaprojektowania topologii sieci ATM, autorzy otrzymali odmienne czasy niż w [90]. W opracowaniu tym projektowanie topologii podzielono na dwie fazy. W pierwszej - 53 - projektowany jest szkielet sieci (główny pierścień) w drugiej zaś sposób podłączenia użytkowników końcowych do głównej części sieci. Należy tu wspomnieć, że celem optymalizacji było zminimalizowanie kosztu budowy sieci. Mówiąc dokładniej, w fazie pierwszej dla 50 routerów otrzymano czas pięciu minut, zaś w fazie drugiej niewiele ponad dziewięć minut, co znacznie różni się od czasów z [90]. Pozostając przy liczbach, warto wspomnieć, że w optymalizacji tej zastosowano sto sześćdziesiąt generacji algorytmu symulowanego wyżarzania, a koszt końcowy został obniżony o około 20% w stosunku do początkowego. Warto zauważyć, że znaczna większość powyższych rozwiązań odnosi się albo do optymalizacji rozdziału pakietów między trasy o najlepszym koszcie albo do modyfikacji sposobów wyznaczania metryk tychże tras. Należy także dodać, że niektóre z opracowań poruszają zagadnienie projektowania sieci komputerowych. W konsekwencji żadne z nich nie odnosi się do tematyki scentralizowano-rozproszonego modelu optymalizacji routingu w protokole OSPF z wykorzystaniem tras o nierównym koszcie. Więcej informacji na temat szeroko rozumianej tematyki routingu w sieciach komputerowych znajduje się np. w [18][19][30][34][37][42][55][60][67][70][74]. 1.7 Podsumowanie W niniejszym rozdziale został w skrócie przedstawiony obecny stan rozwoju protokołu OSPF. Należy zaznaczyć, że ze względu na dużą liczbę różnych rozwiązań oraz parametrów konfiguracyjnych, tak zawartych w specyfikacji protokołu, jak implementowanych samodzielnie przez poszczególnych producentów urządzeń sieciowych, dokonanie pełnego opisu tej tematyki na pewno jest bardzo pracochłonne (o ile w ogóle możliwe). W zaistniałej sytuacji ograniczyłem się do przedstawienia najważniejszych usprawnień protokołu wraz z ich przykładowymi zastosowaniami w różnego typu rozwiązaniach praktycznych. Szczegółowy opis budowy i konfiguracji przykładowej sieci informatycznej wykorzystującej protokół OSPF wraz z wyjaśnieniami zastosowanych rozwiązań znajduje się w załączniku II. - 54 - Rozdział 2. Równoważenie obciążenia z wykorzystaniem tras o równym i nierównym koszcie Nowoczesny protokół routingu przeznaczony do pracy w średnich i dużych sieciach komputerowych powinien obsługiwać równoważenie obciążenia zarówno z udziałem tras o równym jak i nierównym koszcie. Daje to administratorowi sieci komputerowej możliwość dokładniejszego dostrojenia go do potrzeb danej organizacji oraz innych istniejących uwarunkowań, takich jak np. topologia sieci czy istniejąca infrastruktura. W dalszej części tego rozdziału zostało w ogólny sposób przedstawione proponowane udoskonalenie, a następnie szczegółowe, poparte ilustrowanymi przykładami, wyjaśnienie istoty proponowanego rozwiązania wraz z przykładem działania. Zakończenie rozdziału stanowi opis spodziewanych wyników wdrożenia opracowanego rozwiązania. 2.1 Ogólny opis proponowanego rozwiązania W odpowiedzi na stale rosnące zapotrzebowanie użytkowników na szybkość przesyłania informacji powstają coraz nowsze technologie, wzrasta stopień złożoności sieci komputerowych, a także wydajność działających w nich protokołów. Równoważenie obciążenia typu RK zwiększa przepustowość sieci komputerowej, lecz w warunkach współczesnych rozwiązanie takie w wielu sytuacjach staje się niewystarczające. Dlatego należy rozważyć wprowadzenie udoskonalenia do powszechnie stosowanego protokołu, jakim jest OSPF. Warto tu zaznaczyć, że udoskonalenie takie można zastosować także w innych protokołach. Polega ono na możliwości równoważenia obciążenia z wykorzystaniem tras o nierównym koszcie (zwane dalej NK), co jest opisane w niniejszej pracy. Równoważenie to można przeprowadzać na wiele sposobów. Przykładem może być protokół EIGRP (Extended Interior Gateway Routing Protocol) stanowiący własność firmy Cisco Systems. W protokole tym wybór tras jest dokonywany na podstawie metryki, a dokładniej na podstawie ilorazu metryki danej trasy do metryki trasy najlepszej. Wartość tego ilorazu jest parametrem lokalnym, definiowanym przez administratora danego routera. Tak jak zostanie później wykazane, metoda taka nie jest optymalna. Innym sposobem równoważenia może być równoważenie na podstawie obciążenia interfejsu, przez który prowadzi wyznaczona trasa optymalna. Sposób ten stanowi przedmiot dalszych badań opisanych w niniejszej pracy. Warto przypomnieć, że przedstawione w pracy rozwiązanie polega na zwiększaniu efektywnej przepustowości sieci w tych przypadkach, w których jest to możliwe. Czy - 55 - możliwość taka istnieje, okazuje się w wyniku porównania przepustowości osiąganych przy zastosowaniu opisanych wcześniej dwóch typów równoważenia obciążenia tj. RK i NK. Porównanie to jest wykonywane w czasie rzeczywistym, co umożliwiają odpowiednie (autorskie) algorytmy. Ponieważ „z góry” nie wiadomo czy należy włączyć równoważenie obciążenia typu NK, dlatego przeprowadza się symulację spodziewanych warunków pracy sieci. Na podstawie otrzymywanych wyników podejmowana jest decyzja o włączeniu równoważenia typu NK. Warto także dodać, że główną korzyścią z zastosowania przedstawionego w tej pracy rozwiązania jest uzyskanie w czasie rzeczywistym poprawy przepustowości sieci (o ile to jest możliwe), a w konsekwencji bardziej efektywne wykorzystanie posiadanych zasobów sieciowych i zwiększenie satysfakcji użytkowników. 2.2 Szczegółowy opis proponowanego rozwiązania Opracowane rozwiązanie polega na dynamicznym włączaniu i wyłączaniu rozkładu obciążenia typu NK przy założeniu, że trasy po których odbywa się równoważenie obciążenia prowadzą przez różne interfejsy wyjściowe danego routera. Do przeprowadzenia takiego działania niezbędnym jest: • zdefiniowanie warunków koniecznych do włączenia (wyłączenia) równoważenia obciążenia typu NK; • utworzenie tablicy routingu zawierającej odpowiednie wpisy; • rozdzielenie ruchu sieciowego na różne trasy według przyjętego algorytmu. Każda z powyższych czynności została dokładnie opisana w dalszych częściach tego podrozdziału. 2.2.1 Warunki niezbędne do włączenia (wyłączenia) równoważenia obciążenia typu NK W zaproponowanym rozwiązaniu wprowadza się dwa parametry konfiguracyjne ustawiane przez administratora danego routera. Pierwszy z nich o nazwie lbstart (load balancing start) jest wartością z przedziału domkniętego <0,1> odpowiadającą obciążeniu interfejsu, przy przekroczeniu, którego następuje włączenie równoważenia obciążenia. Przykładowo dla lbstart=0.9 równoważenie obciążenia jest włączane po przekroczeniu obciążenia (któregokolwiek z interfejsów) równego 90%. Analogicznie, drugi parametr o nazwie lbstop służy do dynamicznego wyłączania równoważenia obciążenia w sytuacji, kiedy obciążenie interfejsu (interfejsów) osiągnie wartość niższą od przyjętej. Pomimo, że obydwa parametry mogą mieć tę samą wartość to w przedstawionym w tej pracy rozwiązaniu nie jest to konfiguracja zalecana. Duża zmienność ruchu sieciowego może skutkować zbyt częstymi - 56 - włączeniami i wyłączeniami równoważenia obciążenia, co nie jest zjawiskiem pożądanym. Dlatego właściwy dobór wspomnianych parametrów jest istotnym czynnikiem wpływającym na przepustowość danego routera, a także sieci komputerowej. Wartości wspomnianych parametrów powinny być ustalane indywidualnie dla danej sieci na podstawie odpowiedniej analizy ruchu sieciowego. W tym miejscu warto zaznaczyć, że im większa liczba interfejsów zostaje przeciążona tym router jest „bardziej skłonny” do akceptowania tras alternatywnych (o gorszych metrykach), lecz co istotne, prowadzących przez inne interfejsy wyjściowe niż prowadzą trasy optymalne. Skłonność do akceptowania tras o gorszych metrykach wraz ze wzrostem liczby przeciążonych interfejsów, wynika bezpośrednio z wzoru (2.2). 2.2.2 Utworzenie tablicy routingu zawierającej odpowiednie wpisy W opracowanym rozwiązaniu tablice routingu poszczególnych routerów powinny na stałe zawierać wpisy określające wszystkie trasy optymalne do każdej znanej sieci składowej środowiska – obszaru OSPF. Dodatkowo w sytuacji, kiedy pojawiają się przeciążone interfejsy, do tablicy tej powinny zostać dodane inne (o gorszej metryce) trasy prowadzące do tych sieci. W takiej sytuacji dla każdej ze znanych sieci w tablicy routingu występuje trasa optymalna i trasy pozostałe (o ile istnieją), gdzie każda z tras prowadzi przez inny interfejs wyjściowy. W tym miejscu warto zaznaczyć, że istnieje i jest praktycznie wykorzystywany inny lecz podobny sposób wyboru tras alternatywnych. Mowa tu o protokole EIGRP firmy Cisco. Protokół ten posiada możliwość równoważenia obciążenia z udziałem tras o nierównym koszcie. Trasa alternatywna zostaje dodana do tablicy routingu, jeśli jej koszt jest nie większy niż n razy koszt trasy optymalnej prowadzącej do danej sieci, czyli spełnia poniższą nierówność. c ≤ copt* γ (2.1) gdzie: c – koszt analizowanej trasy; copt – koszt trasy optymalnej; γ - współczynnik o nazwie „variance”, jest on statycznie konfigurowany przez administratora routera. Współczynnik ten jest liczbą całkowitą z przedziału <1,128>. W zaproponowanej przeze mnie metodzie trasa alternatywna prowadząca do danej sieci zostaje dodana do tablicy routingu, gdy spełnia warunek konieczny tj. przedstawiony poniższym wzorem. c ≤ copt* αi * βi (2.2) gdzie: - 57 - βi - współczynnik wyznaczany osobno dla każdego routera przez metodę symulowanego wyżarzania, dokładniej omówiony w dalszej części tego podrozdziału; αi – liczba przeciążonych interfejsów routera Ri przez które prowadzą trasy do sieci docelowej - pojęcie przeciążenia interfejsu zostało zdefiniowane w poprzednim podrozdziale. Zakładając, że sieć jest opisana grafem z routerami jako wierzchołkami, to αi dla routerów Ri przyjmują wartości całkowite z przedziału 1 ≤ αi ≤ deg(Ri)-1, gdzie deg(Ri) jest stopniem wierzchołka Ri, czyli liczbą interfejsów tego routera. Teraz podane zostanie uzasadnienie przyjętej postaci warunku. Zwarzywszy, że jeśli iloczyn αi * βi potraktować jako jeden parametr to powstaje rozwiązanie bliźniacze do wykorzystywanego w protokole EIGRP. Na tym jednak podobieństwa się kończą. Pragnąc utworzyć rozwiązanie bardziej elastyczne, należy zdynamizować współczynnik odpowiadający za to, jakie trasy będą dodawane do tablicy routingu, tak żeby jego wartość była na bieżąco dostosowywana do panujących (lub przewidywanych) warunków w sieci. Wspomniane uelastycznienie zostało osiągnięte dzięki „podzieleniu”18 tego współczynnika na dwie części, czyli αi i βi. Pierwsza część jest dynamicznie i okresowo wyznaczana przez dany router, tak żeby optymalizować jego przepustowość. Mamy tu do czynienia z czymś, co można nazwać optymalizacją rozproszoną, każdy router samodzielnie dostraja się do panujących warunków poprzez wyznaczanie liczby swoich przeciążonych interfejsów. Drugi zaś parametr, czyli βi (a dokładniej wektor parametrów βi - po jednym dla każdego routera Ri), jest wyznaczany centralnie przez stację zarządzającą danym obszarem OSPF i dystrybuowany do poszczególnych routerów. Należy podkreślić, że sytuacja taka dotyczy zarządzania wyłącznie w aspekcie metody NK, zaś sam OSPF jest protokołem rozproszonym bez centralnego zarządzania. Warto także zaznaczyć, że stacja zarządzająca na podstawie posiadanych informacji i przy zastosowaniu metody SW, wylicza wartości poszczególnych parametrów βi w taki sposób żeby maksymalizować przepustowość całego obszaru OSPF, przy czym wyznaczone rozwiązanie obowiązuje tylko w pewnym przedziale czasu. W tym przypadku mamy do czynienia z optymalizacją scentralizowaną. Ponadto, jeśli współczynnik βi zostanie wyznaczony w taki sposób, że wartość iloczynu αi * βi będzie mniejsza od 1, to żadna trasa alternatywna (o koszcie wyższym od optymalnego) nie zostanie dodana do tablicy routingu danego routera. Jednocześnie przyjmujemy, że αi ≥ 1, czyli równoważenie obciążenia typu NK działa tylko 18 W gwoli ścisłości należy zaznaczyć, że sposób podziału współczynnika variance na αi * βi został przyjęty arbitralnie, zaś inne sposoby podziału jak np. αi + βi czy αiβi mogą stanowić interesujący kierunek dalszego rozwoju poruszanej tematyki. - 58 - wówczas, gdy przynajmniej jeden interfejs jest przeciążony. Z punktu widzenia analizowanego zagadnienia sytuacja, w której żaden interfejs nie jest przeciążony, nie stanowi przedmiotu badań. Reasumując, chcąc tworzyć tablice routingu w sposób elastyczny, adaptacyjny oraz wykorzystujący istniejące i sprawdzone rozwiązanie, wzór do tworzenia tych tablic może być zapisany w postaci nierówności (2.2). Podczas wyznaczania wartości współczynników beta za pomocą metody SW współczynniki αi powinny zostać ustawione na swoje wartości maksymalne. Działanie takie ma na celu symulację maksymalnego obciążenia sieci przed rozpoczęciem optymalizacji jej przepustowości. W tym miejscu warto dodać, że praca niniejsza koncentruje się głównie na optymalizacji przepustowości sieci maksymalnie obciążonych. Powód przyjęcia powyższego założenia jest następujący: wyznaczając współczynnik beta przy innej wartości współczynnika αi niż maksymalna może dojść do sytuacji, w której na skutek zmiany warunków panujących w sieci ulegnie zmianie (wzrostowi) wartość parametru αi. Wzrost taki może prowadzić do kierowania ruchu sieciowego na zbyt wiele tras, a to z kolei do spadku przepustowości sieci – sytuacja taka została przedstawiona w rozdziale 3. Natomiast βi jest parametrem służącym do dostrojenia wyznaczonego rozwiązania do istniejącej topologii oraz charakterystyki ruchu sieciowego. Każdy router z danego obszaru posiada jeden przypisany do niego parametr beta. Wartości tych parametrów generowane są centralnie przez stację zarządzającą i co pewien czas dystrybuowane do wszystkich zarządzanych routerów. Sposób generowania wspomnianych parametrów jest tak dobrany żeby globalnie maksymalizować przepustowość całego obszaru (z uwzględnieniem spodziewanej charakterystyki ruchu sieciowego w danym interwale czasu) i stanowi główny przedmiot badań pracy. Wyznaczanie wartości parametrów beta jest realizowane z zastosowaniem metody symulowanego wyżarzania. Dodatkowo, βi zależy od maksymalnego kosztu trasy (cmax) z danego routera do dowolnej sieci docelowej znajdującej się w obrębie obszaru OSPF i przyjmuje wartości z przedziału 0 < βi ≤ βimax, gdzie βimax także zależy od maksymalnego kosztu osiągnięcia sieci docelowej i jest wyrażone poniższym wzorem. βimax = c max (n max − 1) c opt (2.3) przy czym nmax jest maksymalną liczbą interfejsów, przez które prowadzą trasy (optymalna i alternatywne) do sieci docelowej. Warto zauważyć, że nmax jest zawsze większe od jedności. Dla nmax=1 występuje tylko jedna trasa do sieci docelowej, czyli równoważenie obciążenia - 59 - typu NK jest wyłączone, a tym samym stosowanie w takiej sytuacji wzoru (2.3) staje się bezzasadne. Schemat blokowy algorytmu 1, służącego do budowy tablicy routingu został przedstawiony na rys. 2.1. W tym miejscu warto bardziej szczegółowo wyjaśnić, jaka jest jego rola oraz powiązanie z algorytmem SW. Mianowicie, algorytm 1 działa indywidualnie na każdym z routerów i jak zostało wspomniane służy on do budowy tablicy routingu routera, na którym jest wykorzystywany. Jednym z parametrów wejściowych omawianego algorytmu jest wartość współczynnika beta. Na podstawie tej wartości i z wykorzystaniem nierówności (2.2), algorytm podejmuje decyzję, które trasy powinny zostać dodane do tablicy routingu, a które nie. Natomiast wartość wspomnianego współczynnika beta, (który także występuje w nierówności (2.2)) jest wyznaczana i dostarczana przez centralną stację zarządzającą. Stacja ta wykorzystując algorytm SW wyznacza wartości współczynników beta (po jednym dla każdego z routerów) w taki sposób żeby maksymalizować przepustowość całego obszaru OSPF, przy czym wyznaczone rozwiązanie obowiązuje tylko w pewnym przedziale czasu. Przechodząc do omówienia algorytmu 1 warto zaznaczyć, że występuje w nim funkcja o nazwie ”Dijkstra”, której argumentami są baza topologii sieci (a dokładniej jej kopia) dla danego obszaru OSPF oraz adres IP sieci, do której poszukiwana jest najkrótsza trasa. Funkcja ta zwraca koszt osiągnięcia danej sieci oraz adres IP routera następnego skoku. Zwracane wartości są zapisywane w tablicy [koszt, trasa], przy czym jej rozmiar jest zmienny. Ponieważ funkcja „Dijkstra” zawsze wyznacza trasę o najmniejszym koszcie, dlatego tablica [koszt, trasa] zawiera wpisy posortowane pod względem kosztów tras w kolejności rosnącej. Natomiast zmienność jej rozmiaru jest spowodowana faktem, że funkcja „Dijkstra” wyznacza wszystkie ścieżki o najniższym koszcie do danej sieci – liczba tych ścieżek może być inna dla każdej z sieci. Danymi wejściowymi dla algorytmu są: • wartość zmiennej αi - liczba przeciążonych interfejsów; • wartość parametru X – maksymalna liczba tras, z uwzględnieniem których przeprowadzane jest równoważenie obciążenia. Parametr ten jest definiowany przez administratora routera i należy do przedziału od jeden do liczba interfejsów routera minus jeden (pakiety nie powinny być trasowane przez interfejs niż ten, którym przybyły) Dodatkowo w algorytmie tym definiowana jest zmienna it używana do oznaczania liczby tras (prowadzących do rozpatrywanej sieci) dodawanych do tablicy routingu. W chwili rozpoczęcia działania algorytmu jej wartość jest ustalana jako zero. - 60 - Rys. 2.1. Schemat blokowy algorytmu 1 służącego do budowy tablicy routingu z wykorzystaniem tras typu NK. Oto werbalny opis algorytmu 1: 1. Wyznaczenie wszystkich osiągalnych sieci (ich adresów IP) i umieszczenie ich w tablicy „sieci”, zdefiniowanej jako jednowymiarowy wektor adresów IP. Operacja ta ma na celu utworzenie dynamicznej listy wszystkich sieci, dla których będą wyznaczane koszty oraz trasy ich osiągnięcia. Termin „trasy” należy rozumieć jako interfejsy wyjściowe (danego routera) lub adresy IP routerów następnego skoku. 2. Sprawdzenie czy tablica „sieci” jest pusta. Jeśli tak, to trasy do wszystkich sieci zostały już wyznaczone, wówczas algorytm kończy działanie. 3. Utworzenie kopii bazy topologii sieci. Z bazy tej korzysta algorytm Dijkstry. W celu wyznaczenia trasy o nieoptymalnym koszcie prowadzącej przez inny interfejs wyjściowy należy z bazy topologii usunąć łącze do routera następnego skoku, przez które prowadzi trasa optymalna. Modyfikacja taka naruszyłaby integralność - 61 - wspomnianej bazy. W związku powyższym niezbędnym staje się utworzenie jej kopii (tablica T) – dalsze działanie algorytmu odbywa się z wykorzystaniem wspomnianej kopii bazy topologii. 4. Sprawdzenie czy w tablicy routingu istnieje wpis dla pierwszej sieci z tablicy T. Pierwszej - oznacza wpisanej do tablicy na pierwszej dostępnej pozycji. Jeśli wpis taki nie istnieje należy go dodać, po czym algorytm przechodzi do punktu szóstego. Jeśli wpis taki już istnieje należy sprawdzić, jaki jest związany z nim tzw. dystans administracyjny, po czym algorytm przechodzi do punktu piątego. 5. Sprawdzenie czy dystans administracyjny dla wpisu z tablicy routingu jest mniejszy niż przypisany do protokołu OSPF, czyli 110. Jeśli do analizowanej sieci ustawiony jest routing statyczny lub inny protokół jak np. EIGRP o mniejszym dystansie administracyjnym już umieścił wpis odnoszący się analizowanej sieci wówczas OSPF nie dodaje swojego wpisu. Algorytm przechodzi do punktu „Usunięcie analizowanej sieci z tablicy T. W przeciwnym przypadku algorytm wylicza koszt osiągnięcia analizowanej sieci. 6. Obliczenie kosztu osiągnięcia analizowanej sieci. Koszt ten jest obliczany przy użyciu funkcji „Dijkstra”. Funkcja ta jako argumenty pobiera kopię bazy topologii oraz adres IP. Wykorzystując algorytm Dijkstry funkcja zwraca minimalny koszt osiągnięcia analizowanej sieci oraz adres (adresy) routera następnego skoku. Należy zaznaczyć, że jeśli występuje więcej niż jedna trasa o koszcie optymalnym wówczas funkcja zwraca adresy IP routerów następnego skoku znajdujących się na wszystkich wyznaczonych trasach. Wyniki działania funkcji są umieszczane w tablicy [koszt, trasa]. 7. Sprawdzenie czy tablica [koszt, trasa] jest pusta. Jeśli tak, to, w kopii bazy topologii nie istnieje trasa prowadząca do analizowanej sieci. W sytuacji takiej algorytm zeruje licznik „i”, a następnie przechodzi do punktu drugiego rozpoczynając tym samym wyznaczanie trasy dla kolejnej sieci. W przypadku przeciwnym algorytm przechodzi do punktu ósmego. 8. Usunięcie łącza do routera następnego skoku na wyznaczonej trasie z kopii bazy topologii. Ponieważ algorytm Dijkstry wyznacza tylko najlepszą trasę do danej sieci, dlatego w celu wyznaczenia gorszej (kolejnej pod względem kosztu) należy z bazy tej usunąć łącze do routera następnego skoku znajdujące się na trasie optymalnej i jeszcze raz uruchomić wspomniany algorytm. Należy zauważyć, że trasa alternatywna (druga pod względem kosztu) może prowadzić przez ten sam interfejs wyjściowy. W przypadku przeciążenia interfejsu włączenie równoważenia obciążenia po takiej trasie - 62 - nie przyniesie pożądanego rezultatu. Z punktu widzenia omawianej metody trasa taka jest pomijana. Usunięcie łącza do routera następnego skoku znajdującego się na trasie optymalnej zapewnia, że trasa alternatywna będzie prowadziła (o ile istnieje) przez inny interfejs wyjściowy. 9. Zwiększenie „i” o jeden. Licznik „i” służy do sprawdzania liczby tras prowadzących do analizowanej sieci, które są dodawane do tablicy routingu. Ich liczba nie może być większa niż wartość ustalona przez administratora konkretnego routera. 10. Sprawdzenie wartości licznika „i”. Jeśli wartość ta wynosi jeden oznacza to, że analizowana trasa jest optymalna, algorytm przechodzi do punktu jedenastego. W przeciwnym przypadku mamy do czynienia z trasą alternatywną, algorytm przechodzi do punktu dwunastego. 11. Zapamiętanie kosztu trasy optymalnej w zmiennej „koszt_opt”. Koszt ten jest pobierany z tablicy [koszt, trasa]. Wartość kosztu optymalnego jest używana podczas dalszego działania algorytmu do podjęcia decyzji o dodaniu trasy alternatywnej do tablicy routingu. Przejście do punktu czternastego. 12. Zapamiętanie kosztu trasy alternatywnej w zmiennej „koszt”. Koszt ten jest pobierany z tablicy [koszt, trasa]. Wartość kosztu trasy jest używana podczas dalszego działania algorytmu do podjęcia decyzjo o dodaniu trasy alternatywnej do tablicy routingu. Następnie algorytm przechodzi do punktu trzynastego. 13. Sprawdzenie czy koszt <= koszt_opt * αi * βi (alternatywny zapis nierówności (2.2)), a więc czy analizowana trasa spełnia warunek konieczny dodania jej do tablicy routingu. Jeśli tak, to algorytm przechodzi do punktu czternastego. W przypadku przeciwnym przeprowadzane jest zerowanie licznika „i”, wyczyszczenie tablicy [koszt, trasa], oraz usunięcie analizowanej sieci z tablicy „sieci”, po czym następuje przejście do punktu siedemnastego. Jeśli analizowana trasa nie spełnia warunku koniecznego, to nie ma potrzeby dalszego wyznaczania innych tras alternatywnych, ponieważ każda kolejna będzie posiadała koszt wyższy lub równy i także nie spełni wspomnianego warunku. 14. Uaktualnienie tablicy routingu wpisami z tabeli [koszt, trasa]. W punkcie tym wykonywane jest dodanie analizowanej sieci do tablicy routingu. Dodawane są następujące elementy: adres IP sieci, koszt jej osiągnięcia - metryka, adres IP routera następnego skoku lub nazwa interfejsu wyjściowego, dystans administracyjny. 15. Sprawdzenie czy i=X, a więc czy należy wyszukiwać kolejne trasy, czy też dodana w punkcie czternastym trasa jest ostatnią z puli zdefiniowanej przez administratora - 63 - routera. Jeśli warunek jest spełniony, algorytm przeprowadza zerowanie licznika „i”, wyczyszczenie tablicy [koszt, trasa] oraz usunięcie analizowanej sieci z tablicy „sieci”, po czym następuje przejście do punktu siedemnastego. W przypadku przeciwnym algorytm przechodzi do punktu szesnastego. 16. Usunięcie zawartości tablicy [koszt, trasa] i przejście do punktu szóstego. 17. Usunięcie analizowanej sieci z tablicy „sieci”. Osiągnięcie tego punktu oznacza, że wszelkie trasy dostępne i spełniające warunek konieczny zostały już dodane do tablicy routingu. Algorytm rozpoczyna kolejny cykl działania, czyli przechodzi do punktu drugiego. Dla dokładniejszego zrozumienia idei powyższego algorytmu w dalszym ciągu zamieszczony został przykładowy schemat blokowy algorytmu budowy tablicy routingu z wykorzystaniem tras typu RK. Porównanie obydwu schematów w prosty sposób umożliwia wychwycenie różnic pomiędzy obecnie stosowanym rozwiązaniem (RK), a nową metodą (NK). W tym miejscu należy zaznaczyć, że schemat przedstawiony na rys. 2.2 przedstawia przykładowy sposób implementacji algorytmu służącego do budowy tablicy routingu w protokole OSPF. Przykładowy, ponieważ specyfikacja tego protokołu nie narzuca żadnego ze sposobów, pozostawiając wybór producentowi sprzętu sieciowego. Ponieważ wszystkie istotne bloki funkcjonalne algorytmu 2 tj. z rys. 2.2 zostały już omówione (podczas opisu działania algorytmu 1 tj. z rys. 2.1) więc jego opis werbalny został pominięty. - 64 - Rys. 2.2. Schemat blokowy algorytmu 2 służącego do budowy tablicy routingu z wykorzystaniem tras typu RK. 2.2.3 Rozdzielenie ruchu sieciowego na różne trasy według przyjętego algorytmu Kolejnym istotnym zagadnieniem jest sposób, w jaki powinno następować rozdzielanie pakietów pomiędzy różne trasy, także o innym koszcie, prowadzące do tej samej sieci docelowej. Przede wszystkim proces decyzyjny rozdziału pakietów powinien w jak najmniejszym stopniu wpływać na wydajność routera oraz jego zapotrzebowanie na zasoby systemowe. Należy w tym miejscu zaznaczyć, że obecna specyfikacja protokołu OSPF dopuszczając równoważenie obciążenia typu RK, nie definiuje sposobu w jaki pakiety powinny być rozdzielane pomiędzy poszczególne interfejsy. Specyfikacja postawia tę kwestię do rozstrzygnięcia producentom sprzętu sieciowego. Na potrzeby niniejszej pracy zostały wybrane dwa sposoby wraz z opisem zalet, a także i wad każdego z nich. Pierwszy sposób polega na zapamiętywaniu źródłowego adresu IP i kierowaniu pakietów cyklicznie na poszczególne trasy. Przykładowo, dla dostępnych trzech tras t1, t2, t3 prowadzących do danej sieci, pakiety z adresu „A” są kierowane trasą t1, z adresu „B” trasą t2, z adresu „C” trasą t3 z adresu „D” trasą t1 itd. Drugi sposób polega na cyklicznym podziale pakietów pomiędzy - 65 - wszystkie dostępne trasy prowadzące do danej sieci bez względu na ich adresy źródłowe, porty czy inne parametry. Przed omówieniem głównych cech każdego ze sposobów należy zaznaczyć, że w zmiennych warunkach, jakie panują w sieciach komputerowych nie istnieje idealne rozwiązanie tego problemu. Każde posiada swoje zarówno mocne jak i słabe strony, a wybór najlepszego jest kwestią pewnego kompromisu. Zaletą rozwiązania pierwszego jest to, że unika ono przesyłania pakietów pochodzących z jednego adresu IP różnymi trasami. W konsekwencji następuje redukcja prawdopodobieństwa zmiany kolejności pakietów wysłanych i odebranych (w ramach jednej sesji). Jest to pewien sposób na odciążenie mechanizmów warstwy czwartej modelu OSI służących do rekonstrukcji kolejności pakietów. Wadą natomiast jest konieczność utrzymywania i sprawdzania powiązania danego adresu IP z konkretnym interfejsem. Ponadto w obecnej sytuacji wiele organizacji stosuje rozwiązanie zwane PAT19 (Port Address Translation), co jest wskazane z kilku powodów chociażby takich jak bezpieczeństwo czy oszczędność adresów IP. Przy stosowaniu PAT pakiety pochodzące od grupy różnych komputerów po przeprowadzeniu translacji posiadają taki sam źródłowy adres IP. W konsekwencji, kiedy taki ruch generuje obciążenie przekraczające wartość lbstart, równoważenie obciążenia zostanie włączone. Natomiast nie będzie ono działać poprawnie obciążając ciągle tylko pierwszy interfejs, ponieważ wszystkie pakiety posiadają taki sam źródłowy adres IP. Przedstawiona sytuacja z oczywistych względów jest jak najbardziej niepożądana. Mając na uwadze wady tego sposobu rozdziału pakietów należy stwierdzić, że nie jest on rekomendowanym rozwiązaniem omawianego problemu. Sposób drugi cechuje się licznymi zaletami, do których zaliczyć można prostotę implementacji oraz szybkość działania, a także brak wad cechujących sposób pierwszy. Oczywiście, nie jest to rozwiązanie idealne, a jego główną wadą jest brak rozróżniania rozmiaru pakietów. Jako rozwiązanie można zaimplementować algorytm odpowiednio dobierający trasę pakietu pod względem jego rozmiaru. Jednak podejście takie najprawdopodobniej wprowadzi znaczne opóźnienia, co jest rozwiązaniem nie do zaakceptowania w świetle przyjętych założeń. Ponieważ różne pakiety mogą posiadać różne rozmiary, (np. małe pakiety aplikacji telnet bądź duże pakiety FTP) możliwym jest wystąpienie sytuacji, w której w krótkim przedziale czasu ilość danych przesyłanych przez jeden interfejs będzie się znacznie różnić od ilości przesyłanych przez inny (inne). Należy zaznaczyć, że przy długoterminowym zastosowaniu drugiego sposobu, 19 Urządzenie przeprowadzające translacje portu zamienia w otrzymanym pakiecie źródłowy adres IP oraz port podstawiając w ich miejsce swój publiczny (zewnętrzny) adres IP oraz losowy port źródłowy o numerze powyżej 1023. - 66 - statystycznie rzecz ujmując, ilość informacji wysyłanych przez poszczególne interfejsy zaangażowane w równoważenie obciążenia powinna rozkładać się niemalże po równo. Wartym uwagi jest fakt, że istnieje jeszcze przynajmniej jeden sposób rozdzielania pakietów (ang. Policy Base Routing) polegający na administracyjnym ustaleniu, że np. pakiety aplikacji telnet zawsze są kierowane na łącze o największym sumacyjnym koszcie, a pakiety HTTP lub FTP na łącza szybsze, (czyli o koszcie mniejszym). Taka „sztuczna” ingerencja w mechanizmy routingu najprawdopodobniej zmniejszy szybkość przesyłu informacji. W zamian natomiast daje administratorowi pewnego rodzaju narzędzie do wymuszania określonej polityki (policy) przepływu ruchu sieciowego lub nawet ustawiania jego priorytetów (Quality of Service). Przykładowo, jeśli dana organizacja używa telefonii internetowej (VoIP) to nie bez znaczenia (głównie dla jakości usługi) może okazać się wymuszenie przepływu pakietów UDP po łączach o najniższym koszcie. Na koniec warto zaznaczyć, że sposób rozdziału pakietów nie jest zagadnieniem trywialnym, więcej informacji o tym zagadnieniu znajduje się np. w [65] [66] [75] [91] [92]. 2.3 Przykłady działania protokołu OSPF W podrozdziale tym zostały przedstawione dwa przykłady działania algorytmu OSPF w sieci komputerowej o prostej strukturze. Pierwszy z przykładów ukazuje zasadę działania tego protokołu z równoważeniem obciążenia typu RK natomiast, drugi - bez równoważenia obciążenia. Bez względu na to, czy protokół przeprowadza równoważenie obciążenia czy nie, jego zasada działania jest następująca: • ustanowienie relacji sąsiedztwa (sieci typu multi-access) oraz wybór routera desygnowanego i jego zastępcy; • wymiana informacji o topologii sieci pomiędzy routerami – budowa bazy topologii; • wyznaczenie drzewa najkrótszych ścieżek przy użyciu algorytmu Dijkstry; • budowa tablicy routingu. Następnie w zależności od zaistniałej sytuacji protokół dokonuje wyzwalanej zdarzeniami rekalkulacji rozpoczynając od punktu pierwszego lub drugiego przedstawionego powyżej schematu. Z punktu widzenia tematyki niniejszej pracy najbardziej interesującym etapem jest budowa odpowiedniej tablicy routingu. Dlatego dalsza część tego podrozdziału została poświęcona wspomnianemu etapowi. Rozważając działanie algorytmu OSPF w prostej sieci komputerowej (przedstawionej na rys. 2.5 router R1 wykonuje następujące operacje: • ustala relacje sąsiedztwa z R2 i R5 (routery komunikują się z wykorzystaniem technologii Ethernet); - 67 - • wymienia się z routerami R2 i R5 swoją bazą topologii (wymiana pakietów LSA jest powtarzana kilkukrotnie – aż do momentu osiągnięcia pełnej „wiedzy” o topologii całej sieci); • wykorzystując algorytm Dijkstry, router R1 wyznacza drzewo najkrótszych ścieżek z sobą jako korzeniem; • na podstawie informacji zawartych w drzewie najkrótszych ścieżek router R1 wyznacza optymalne trasy do wszystkich znanych sieci. Przykładowo, trasa o najniższym koszcie (koszty tras zostały zaznaczone na ilustracji) prowadząca do sieci, w której znajduje się komputer 2 (umownie zaadresowanej 10.0.1.0/24) prowadzi z R1 przez routery R2, R4, R5. W tablicy routingu pojawia się wpis zawierający następujące informacje: sieć numer 10.0.1.0 osiągalna jest poprzez interfejs E1 z kosztem 3, gdzie E1 jest interfejsem routera R1 łączącym go z routerem R2. W sytuacji kiedy router R1 posiada włączone równoważenie obciążenia typu RK zasada działania protokołu OSPF ulega nieznacznej modyfikacji. Jeśli na podstawie informacji zawartych w drzewie najkrótszych ścieżek router „wykryje” więcej niż jedną trasę o koszcie optymalnym, wówczas wszystkie trasy optymalne (maksimum sześć - zgodnie ze specyfikacją ujętą w [7]) zostają dołączone do tablicy routingu. Należy zauważyć, że dla tej samej sieci docelowej warunkiem koniecznym dołączenia kolejnej trasy optymalnej do tablicy routingu jest to, że powinna ona prowadzić przez inny interfejs wyjściowy (posiadać inny adres routera następnego skoku). Ponieważ w tablicy tej nie są zapisywane pełne trasy, a tylko interfejsy wyjściowe lub adres routera następnego skoku, dlatego dodanie trasy o koszcie optymalnym i prowadzącej przez ten sam interfejs wyjściowy byłoby dublowaniem już istniejącego wpisu. 2.4 Dodatkowe aspekty proponowanego rozwiązania W sytuacji silnego obciążenia danego interfejsu równoważenie obciążenia typu RK czy też NK z udziałem tras prowadzących przez ten właśnie interfejs nie przynosi oczekiwanych rezultatów. Sytuacja taka została dokładniej opisana w dalszej części niniejszego podrozdziału, oraz dodatkowo przedstawiona na rys. 2.4. - 68 - Rys. 2.3. Przedstawia przykładową sieć o prostej strukturze złożonej z trzech routerów, przełącznika i czterech komputerów. Na rys. 2.3 koszty połączeń pomiędzy odpowiednimi routerami są przedstawione odpowiednio jako wartości: 1,1,3 i przypisane do poszczególnych łączy. Przyjęto, że koszty połączenia pomiędzy komputerami, a routerami są pomijalnie małe i nie zostały uwzględnione. W sytuacji, kiedy komputer H2 komunikując się z komputerem H3 zajmuje całe lub znaczną część pasma łącza R1 – R2, wówczas komunikacja komputera H1 z komputerem H4 odbywająca się na trasie o najniższym koszcie, czyli R1 – R2 – R3, działa w sposób niewydajny. W sytuacji takiej należałoby w sposób dynamiczny włączyć równoważenie obciążenia na trasie H1 – H4 z wykorzystaniem połączenia o koszcie 3, czyli R1 – R3. Mimo, że jest to trasa o wyższym koszcie, to jest ona w dużo mniejszym stopniu obciążona niż trasa o koszcie optymalnym. W konsekwencji skutkuje to zwiększoną przepustowością całej sieci. Problemem do rozwiązania jest to, w jakich warunkach router (routery) powinien dynamicznie włączać oraz wyłączać równoważenie obciążenia tak, aby uzyskać optymalną przepustowość całej sieci. Skuteczność zaprezentowanego w tej pracy rozwiązania jest uzależniona od topologii sieci, to znaczy w sytuacji, kiedy dana sieć posiada fizycznie tylko jedną trasę prowadzącą na zewnątrz (sieć typu stub), wówczas włączenie równoważenia obciążenia typu RK lub NK nie przyniesie korzyści. Sytuacja tak a została przedstawiona na rys. 2.4. - 69 - Rys. 2.4. Przykład sieci typu „stub”. Ponieważ z sieci, w której znajduje się komputer H1 prowadzi na zewnątrz tylko jedna trasa (poprzez łącze R1 – R2), więc w sytuacji silnego obciążenia interfejsu R1 (od strony R2) włączenie równoważenia obciążenia nie przyniesie poprawy przepustowości całej sieci. Włączanie równoważenia obciążenia w przypadku istnienia tylko jednej trasy do sieci docelowej jest bezzasadne. Natomiast działanie takie jak najbardziej ma sens w odniesieniu do R2, który posiada dwa interfejsy wyjściowe w kierunku komputera H2. Dla kierunku przeciwnego (H2 – H1) włączenie zaproponowanej formy równoważenia obciążenia na R5 jest jak najbardziej uzasadnione natomiast na R2 już nie, analogicznie na routerach R3 i R4. Ponieważ ruch sieciowy prawie zawsze jest dwukierunkowy, więc w omawianym rozwiązaniu sugeruje się włączanie równoważenia obciążenia z udziałem tras o nierównym koszcie w oparciu o obciążenie interfejsu w sytuacjach, kiedy: • router posiada przynajmniej dwa interfejsy podłączone bezpośrednio do innych routerów oraz przynajmniej jeden interfejs podłączony do komputera (przełącznika); • router posiada przynajmniej trzy interfejsy podłączone do innych routerów (lub routera). Dodatkowo automatyczne włączanie równoważenia obciążenia powinno mieć miejsce tylko w sytuacji, kiedy trasa alternatywna w stosunku do optymalnej wiedzie przez inny interfejs wyjściowy (występuje inny router następnego skoku). Sytuacja taka została przedstawiona na rys. 2.5. Rys. 2.5. Drugi przykład topologii sieci komputerowej. - 70 - Z R1 do sieci, w której znajduje się H2 prowadzą trzy następujące trasy: 1. bezpośrednio do R5, a następnie do H2; 2. poprzez routery R2, R3, R5, a następnie do H2; 3. poprzez routery R2, R4, R5, a następnie do H2. Poniższa tabela nr 2.1 przedstawia koszty tras oraz nazwy routerów następnego skoku, jakie „zna” R1 trasując pakiet od H1 do H2. Tabela 2.1. Koszt tras oraz nazwa routera następnego skoku do sieci z komputerem H2 z rys. 2.5. Koszt trasy Router następnego skoku 3 R2 4 R2 5 R5 Trasy o sumacyjnym koszcie 3 i 4 tj. odpowiednio poprzez routery R1, R2, R4, R5 oraz R1, R2, R3, R5, prowadzą przez ten sam router następnego skoku (R2), czyli z punktu widzenia równoważenia obciążenia typu NK w tablicy routingu powinna znaleźć się tylko jedna (z dwóch powyższych). Dokładniej rzecz ujmując jest to trasa o koszcie 3 i adresie routera następnego skoku wskazującym na R2. Drugą trasą wpisaną do tablicy routingu powinna być trasa o koszcie 5 prowadząca przez R5 (posiadająca inny router następnego skoku w stosunku do trasy już wpisanej). Należy zaznaczyć, że wdrożenie takiego rozwiązania nie wymaga przeprowadzania przez router niemalże żadnych dodatkowych obliczeń. Po zakończeniu działania algorytmu OSPF wyszukującego najkrótsze ścieżki do poszczególnych sieci, koszty wszystkich tras do tychże sieci są znane. W tablicy routingu umieszczana jest trasa (bądź trasy w przypadku równego kosztu) o najniższym sumacyjnym koszcie, a także adres IP routera następnego skoku. W omawianym rozwiązaniu w tablicy routingu powinny zostać umieszczone także trasy alternatywne prowadzące do danej sieci, lecz tylko takie, które prowadzą przez różne interfejsy, (czyli każda trasa powinna prowadzić przez inny IP adres routera następnego skoku). Liczba tras alternatywnych zależy oczywiście od topologii danej sieci natomiast w tablicy routingu powinno zostać umieszczonych tylko „X” najlepszych w sensie metryki. Tak jak już zostało wcześniej powiedziane, parametr „X” jest parametrem konfigurowalnym przez administratora danego routera. Maksymalna wartość „X” to liczba interfejsów routera minus jeden (pakiet może opuścić router wszystkimi interfejsami za wyjątkiem tego, na którym został odebrany). W sytuacji, kiedy obciążenie interfejsu, przez który prowadzi optymalna trasa do danej sieci przekroczy wartość lbstart wówczas router powinien automatycznie rozpocząć równoważenie obciążenia przesyłając pakiety także po - 71 - najlepszej (w sensie metryki) z dostępnych tras alternatywnych. W sytuacji, kiedy na obydwu trasach (interfejsach, przez które prowadzą dane trasy) obciążenie przekroczy wartość określoną przez lbstart, powinna zostać uaktywniona kolejna trasa, najlepsza z alternatywnych i tak dalej aż do osiągnięcia wartości „X”. W sytuacji odwrotnej, kiedy obciążenie danego interfejsu zmniejszy się poniżej wartości parametru lbstop wówczas trasa, która została dołączona jako ostatnia, czyli o najgorszej metryce z aktywnej puli tras, powinna zostać wyłączona. Następnie router powinien odczekać określony interwał czasowy w celu ustabilizowania się obciążeń innych interfejsów zanim ponownie zaczną one być sprawdzane. Kolejnym przykładem ukazującym pozytywny wpływ włączenia równoważenia obciążenia typu NK może być proces zachodzący w sieci zbudowanej według schematu przedstawionego na rys. 2.6. Rys. 2.6. Trzeci przykład topologii sieci komputerowej. W przykładzie tym komunikacja odbywa się w sposób następujący: H1 – H3 oraz H2 – H4. Koszty tras pomiędzy routerami zostały przedstawione w tabeli numer 2.2. Tabela 2.2. Koszty tras pomiędzy routerami przedstawionymi na rys. 2.6. Połączenie R1 – R2 R1 – R3 R2 – R4 R2 – R5 R3 – R5 R4 – R6 R5 – R6 Koszt trasy 1 1 10 100 1 10 1 W sytuacji kiedy równoważenie obciążenia typu NK jest wyłączone komunikacja H1 – H3 odbywa się tylko i wyłącznie na trasie R1 – R3, natomiast komunikacja H2 – H4 odpowiednio na trasie R1 – R3 – R5 – R6. Przy założeniu równego dostępu do medium transmisyjnego - 72 - wszystkich konkurujących komputerów, przepustowość komunikacji H1 – H3 będzie wynosiła 0.5 Gb/s, tak samo jak komunikacji H2 – H4 (obydwie trasy optymalne prowadzą przez ten sam interfejs łączący R1 z R3). W efekcie całkowita przepustowość sieci (przy tego typu komunikacji) wynosi 1Gb/s. W przykładzie tym włączenie równoważenia obciążenia typu NK spowoduje wzrost przepustowości sieci w sposób następujący. Komunikacja H1 – H3 będzie odbywała się po następujących trasach z odpowiednimi szybkościami: • R1 – R3 z 0.5 Gb/s; • R1 – R2 – R5 – R3 z 5 Mb/s; • R1 – R2 – R4 – R6 – R5 – R3 z 50 Mb/s. Sumacyjnie otrzymujemy szybkość komunikacji H1 – H3 równą 555Mb/s. Natomiast komunikacja H2 – H4 będzie odbywała się następującymi trasami: • R1 – R3 – R5 – R6 z 0.5 Gb/s; • R1 – R2 – R4 – R6 z 50 Mb/s; • R1 – R2 – R5 – R6 z 5 Mb/s. W rezultacie efektywna szybkość transmisji między komputerami H1 i H4 wyniesie 555 Mb/s, a całkowita przepustowość sieci - 1110 Mb/s i będzie o 110 Mb/s większa niż przy równoważeniu obciążenia typu RK. Tak jak zostało wcześniej powiedziane, routery budują tablice routingu wykorzystując nierówność (2.2). Parametr beta występujący w tej nierówności pełni we wspomnianym procesie kluczową rolę i sposób jego wyznaczania stanowi jeden z najważniejszych elementów tej pracy. Dokładniejszy opis sposobu generowania omawianego parametru (a dokładniej - całego wektora parametrów) znajdują się w następnym podrozdziale. 2.5 Sposób generowania i dystrybucji parametrów beta Omawiane rozwiązanie jest oparte na scentralizowano-rozproszonym modelu służącym do optymalizacji przepustowości obszaru sieci komputerowej, a dokładniej obszaru OSPF. Centralizacja polega na tym, że każdy obszar posiada stację zarządzającą, która wyznacza wartości parametrów beta dla zarządzanych przez nią routerów, a następnie, co pewien czas dystrybuuje je jednocześnie do nich wszystkich. Warto wspomnieć, że możliwym jest zastosowanie jednej stacji zarządzającej dla wielu obszarów OSPF. Jednak w takim przypadku należy liczyć się z jej ograniczeniami, głównie wydajnościowymi. Rozproszenie natomiast polega na tym, że pomimo istnienia centralnej stacji zarządzającej każdy router ma możliwość własnego „podejmowania decyzji”. Mianowicie, na podstawie obciążenia poszczególnych interfejsów i porównania tych wartości z parametrami lbstart i lbstop router - 73 - określa liczbę przeciążonych interfejsów. W następstwie tego zmienia się wartość αi (liczba przeciążonych interfejsów routera Ri), co w konsekwencji prowadzi do modyfikacji nierówności (2.2). Tak jak zostało wcześniej powiedziane, nierówność ta odgrywa kluczową rolę przy podejmowaniu decyzji o tym, które trasy powinny zostać dodane do tablicy routingu. Podsumowując, stacja zarządzająca wyznacza wartości parametrów beta i propaguje je do zarządzanych routerów. Wartości tych parametrów, powinny być takie, aby maksymalizować przepustowość danego obszaru, przy spodziewanej charakterystyce ruchu sieciowego w danym interwale czasu. Jeśli zdarzy się tak, że rzeczywiste obciążenie sieci będzie mniejsze niż spodziewane, to poszczególne routery samodzielnie mogą modyfikować swoje tablice routingu, czyli działać w sposób rozproszony. Przechodząc do szczegółów należy skoncentrować się na trzech kwestiach. Po pierwsze, jak długie powinny być wspomniane interwały, po drugie, w jaki sposób określać spodziewaną charakterystykę ruchu sieciowego w danym interwale i po trzecie, za pomocą, jakiego algorytmu wyznaczać wartości parametrów beta. W niniejszej pracy została podjęta próba odpowiedzi na wszystkie z powyższych pytań. Długość interwałów można wyznaczyć na wiele sposobów. Zanim niektóre z nich zostaną opisane warto odpowiedzieć na pewne pytania pomocnicze. Mianowicie czy interwały te powinny być równe? Jaki może być najdłuższy, a jaki najkrótszy z nich? Odnosząc się do równości, a także długości interwałów, wydaje się, że przede wszystkim powinny być one dopasowane do charakterystyki ruchu sieciowego przepływającego przez dany obszar OSPF. W sytuacji, kiedy np. pracownicy przychodzą do pracy w godzinach 8.00-9.00 należy się spodziewać, że w godzinach 8.00-10.00 charakterystyka ruchu będzie dość zmienna z zachowaniem trendu wzrostowego. Można oczywiście przyjąć, że interwały będą równe, lecz należy mieć na uwadze, że jest to dość szczególny przypadek i najprawdopodobniej najprostszy, choć nie najlepszy. Natomiast przy określaniu maksymalnej długości interwału, należy zwrócić uwagę na dynamikę zmian charakterystyki ruchu sieciowego. W praktyce jednak wydłużenie czasu trwania interwału w większości przypadków prowadzi do spadku dopasowania tras routingu do zmieniającego się zapotrzebowania na przepustowość. Natomiast minimalna długość interwału jest ograniczona wydajnością stacji zarządzającej, po prostu wartości parametrów beta muszą być wyznaczane w czasie rzeczywistym. Mówiąc wprost, stacja ta musi zdążyć wyznaczyć wartości wszystkich współczynników beta dla następnego interwału zanim skończy się obecny. Jednym z najprostszych sposobów wyznaczenia długości interwałów to przypisanie im stałych i równych wartości np. jedna godzina. Innym sposobem może być takie dobranie interwałów żeby przesyłana ilość ruchu sieciowego w każdym z nich była mniej więcej - 74 - jednakowa. Kolejnym sposobem jest wyznaczenie trendu dla ruchu sieciowego, a następnie ustalenie pewnych poziomów ograniczających od góry i od dołu. W sytuacji kiedy wartość trendu przekracza określoną granicę, następuje zmiana interwału. Można także zastosować rozwiązania z dziedziny sztucznej inteligencji, jak np. sieci Kohenena do podziału wykresu charakterystyki ruchu sieciowego na różniące się przedziały, gdzie każdy przedział odpowiada jednemu interwałowi. Reasumując każdy z wymienionych sposobów posiada swoje wady i zalety, a wybór konkretnego z nich (lub też innego nie opisanego w tej pracy) powinien być podejmowany w sposób racjonalny i efektywny kosztowo. Naturalnym jest, że na początku można przyjąć rozwiązanie najprostsze, czyli stałe równe interwały trwające np. godzinę, a następnie dostrajać istniejące rozwiązanie poprzez modyfikowanie ich długości. Podejście takie w prosty sposób daje punkt wyjściowy do dalszych bardziej zaawansowanych sposobów wyznaczania długości interwałów. Przechodząc do drugiego pytania, czyli w jaki sposób określić spodziewaną charakterystykę ruchu sieciowego warto zauważyć, że bez względu na zastosowaną metodę będzie to wartość przybliżona. Metod oraz rozwiązań służących do wyznaczania takich wartości jest wiele, w pracy tej zostały omówione trzy przykładowe. Pierwsza metoda polega na zastosowaniu określonych narzędzi do zbierania informacji o ilości danych przesyłanych przez routery brzegowe danego obszaru. Przykładowym narzędziem może być MRTG (ang. Multi Router Traffic Grapher) lub Net Flow Collector. Wszystkie wymienione narzędzia służą do zbierania oraz wizualizacji danych na temat charakterystyki analizowanego ruchu sieciowego. Mając informacje o tym, ile danych jest przesyłanych w poszczególnych interwałach, można zastosować prostą analizę statystyczną i określić np. wartość średnią. Wartość ta będzie oczywiście zależna od liczby wykonanych pomiarów, lecz pozwoli ona z zadowalającą dokładnością wyznaczyć omawianą charakterystykę w określonych interwałach. Inną metodą może być zastosowanie bardziej rozbudowanego aparatu matematycznego, w szczególności rozkładu Poissona do wyznaczenia charakterystyki ruchu dla danego obszaru. W miejscu tym warto zaznaczyć, że jest to podejście statystyczne i wartości rzeczywiste mogą znacznie różnić się od tak wyznaczonych. Kolejną metodą może być wykorzystanie sieci neuronowej, a dokładniej perceptronu, która na podstawie zebranych danych (np. za pomocą wspomnianego MRTG) posłuży do wyznaczenia spodziewanych ilości danych przesyłanych przez routery brzegowe. Bez względu na zastosowaną metodę warto wspomnieć, że w przedstawianym rozwiązaniu nie jest wymagane bardzo dokładne określenie wspominanej charakterystyki, a jedynie zgrubne jej oszacowanie. Przechodząc do następnego pytania, a mianowicie za pomocą, jakiego algorytmu wyznaczać wartości parametrów beta, na wstępie warto wspomnieć, że - 75 - dotyczy ono jednej z najważniejszych części tej pracy. Do wyznaczenia tych parametrów proponuję zastosowanie metody symulowanego wyżarzania, a dokładniej autorskiej modyfikacji tej metody z zastosowaniem reguły akceptacji Metropolisa. Zastosowanie wspomnianej metody do optymalizacji przepustowości sieci komputerowej z wykorzystaniem tras o nierównym koszcie stanowi główne zagadnienie badawcze i zostało dokładnie opisane w dalszym ciągu pracy. Wspomniana wcześniej modyfikacja ma na celu lepsze dostosowanie algorytmu do specyfiki problemu, a dokładny jej opis znajduje się w rozdziale trzecim. Przejdźmy teraz do bardziej szczegółowego omówienia sposobu generacji i dystrybucji parametrów beta. Stacja zarządzająca na podstawie spodziewanej charakterystyki ruchu sieciowego i z zastosowaniem metody symulowanego wyżarzania wyznacza zbiór parametrów beta dla całego obszaru OSPF. Wartości wspomnianych parametrów są tak wyznaczane, żeby maksymalizowały przepustowość całego obszaru dla spodziewanego (w następnym interwale) ruchu sieciowego, przy czym wyznaczone rozwiązanie obowiązuje tylko w danym przedziale czasu. W tym miejscu warto wspomnieć dwie kwestie, po pierwsze liczność zbioru parametrów beta jest równa liczbie zarządzanych routerów tj. dla każdego routera wyznaczana jest jedna wartość tego parametru. Po drugie, stacja zarządzająca wyznacza te parametry dla spodziewanej charakterystyki ruchu w następnym interwale czasu i w momencie rozpoczęcia tego interwału (np. o godzinie 8.00) dystrybuuje do każdego zarządzanego routera odpowiednią dla niego wartość parametru. Z technicznego punktu widzenia sugerowanym sposobem wysyłania informacji o wartościach wyznaczonych parametrów jest zastosowanie rozgłaszania typu multicast. Przechodząc do zagadnień bardziej ogólnych, do rozwiązania analizowanego problemu można zastosować również inne algorytmy, w tym także heurystyczne. W literaturze istnieje wiele przykładów ukazujących zastosowanie chociażby algorytmów genetycznych, a także mrówkowych lub metody zwanej „tabu search” do szeroko rozumianego zagadnienia optymalizacji sieci teleinformatycznych. Przykładami takich opracowań mogą być [52] [56] [58] [75] [77] [80] [82] [84]. Opisane w nich rozwiązania są czasami podobne, a innym razem zgoła odmienne, co ukazuje jak szeroki jest to obszar wiedzy i jak wiele daje możliwości do badań. W ogólności uważam, że algorytmy heurystyczne naśladujące zachowania natury stanowią bardzo interesującą i przyszłościową dziedzinę wiedzy. Natomiast sieci teleinformatyczne mają coraz większy wpływ na rozwój i kształtowanie społeczeństwa informacyjnego. Połączenie wspomnianych algorytmów z takimi właśnie sieciami może prowadzić w obszar zarówno interesujący jak i praktyczny, nie wspominając już o szerokim spektrum możliwości jakie przed nami otwiera. Przydatność wspomnianych wcześniej - 76 - algorytmów nie budzi wątpliwości, lecz to właśnie symulowane wyżarzanie jest rozwiązaniem uważanym za umożliwiające wyszukanie globalnego minimum (maksimum) i to w czasie rzeczywistym. Dodatkowo algorytm ten w pewien sposób naśladuje przebieg naturalnego procesu fizycznego, jakim jest stygnięcie, a następnie zestalanie cieczy. Właśnie ta dwie cechy w połączeniu ze sobą zadecydowały o wyborze algorytmu mającego posłużyć do rozwiązania badanego zagadnienia optymalizacji przepustowości sieci komputerowej. Podsumowując warto wspomnieć, że scentralizowany model zarządzania siecią komputerową nie jest rzeczą nową i wykorzystuje się go w produktach takich jak np. Cisco Works czy HP OpenView, przy użyciu, których administrator może w prosty sposób niemalże jednocześnie konfigurować wiele urządzeń sieciowych. Natomiast zaproponowany w tej pracy zautomatyzowany adaptacyjny i scentralizowano-rozproszony model wykorzystujący rozwiązania z obszaru sztucznej inteligencji do optymalizowania przepustowości obszaru OSPF stanowi własną koncepcję autora. 2.6 Spodziewane wyniki Omawiane udoskonalenie ma na celu zwiększenie przepustowości sieci komputerowej dzięki wprowadzeniu wydajniejszego mechanizmu routingu wewnątrz obszarów OSPF, a także całych systemów autonomicznych. W tym miejscu należy zaznaczyć, że zwiększenie przepustowości w jednym obszarze OSPF może przekładać się na zwiększenie wydajności całego systemu autonomicznego. Przez termin przepustowość na potrzeby niniejszej pracy należy rozumieć sumacyjną ilość informacji, jaką w określonym czasie sieć komputerowa jest w stanie przesłać od źródła (źródeł) do miejsca (miejsc) docelowego. Dokładne zdefiniowanie wzoru, według którego będzie wyznaczana przepustowość środowiska sieciowego, a także opis algorytmu służącego do jej wyznaczenia znajduje się w rozdziale trzecim. Opracowana przez mnie metoda równoważenia obciążenia typu NK posiada oczywiście pewne ograniczenia głównie natury fizycznej takie jak np.: • topologia konkretnej sieci; • liczba interfejsów routerów tworzących sieć; • przepustowość i niezawodność łączy; • całkowite obciążenie sieci; • niezawodność urządzeń sieciowych. Spodziewany wynik zwiększenia przepustowości sieci nie zostanie osiągnięty w sytuacji, kiedy: - 77 - • topologia sieci wymusza przesyłanie całego ruchu sieciowego poprzez jedno silnie obciążone połączenie; • wszystkie lub prawie wszystkie routery danej sieci posiadają tylko po dwa aktywne interfejsy; • sieć posiada wolne, a co się z tym na ogół wiąże silnie obciążone łącza; • urządzenia sieciowe działają zawodnie. Należy zaznaczyć, że w poprawnie zaplanowanej, właściwie administrowanej i odpowiednio do potrzeb zmodernizowanej sieci komputerowej powyższe ograniczenia nie powinny w ogóle wystąpić (pomijając chwilowe, sporadyczne incydenty). Głównym celem, a także spodziewanym wynikiem przedstawionej w pracy metody jest zwiększenie przepustowości sieci komputerowej. Zwiększenie to powinno występować w różnych typach sieci jak i topologiach, (choć nie wszystkich). Ponadto opracowane rozwiązanie nie powinno powodować w sposób znaczący dodatkowego obciążenia routerów, a także silnie wydłużać czasu zbieżności sieci. - 78 - Rozdział 3. Teoretyczne aspekty głównego zagadnienia badawczego Rozdział ten zawiera opis teoretycznych aspektów związanych z optymalizacją ruchu sieciowego. Przedstawiono w nim model środowiska sieciowego, sformułowano zadania optymalizacji z wykorzystaniem metody dokładnej (Simplex), oraz metody SW. Ponadto w rozdziale przedstawiono działanie metody Simplex dla badanego środowiska. Natomiast dokładny opis zasady działania metody SW znajduje się w rozdziale czwartym. Powracając do wspomnianych zadań optymalizacji należy wyjaśnić, że mają one na celu dokonanie maksymalizacji przepustowości sieci komputerowej. W przypadku metody dokładnej wspomniana optymalizacja jest wykonywana poprzez minimalizację wartości współczynników obciążania (wysycenia) poszczególnych łączy sieci. Warto podkreślić, że minimalizacja wartości tych współczynników w sposób jednoznaczny, przekłada się na maksymalizację przepustowości optymalizowanej sieci. Przechodząc do optymalizacji z zastosowaniem metody SW warto nadmienić, że jest ona przeprowadzana przez maksymalizowanie wartości przepustowości poszczególnych routerów wchodzących w skład optymalizowanej sieci. Maksymalizacja przepustowości routerów przekłada się na wzrost przepustowości całej sieci. Warto także dodać, że przepustowość całej sieci jest wyliczana za pomocą algorytmu 3 (tj. algorytmu Ψ(b)). Szczegółowy opis tego autorskiego algorytmu wraz z jego zapisem w pseudokodzie znajduje się w dalszej części rozdziału. Znajdują się tam także informacje o ograniczeniach, zmiennych decyzyjnych oraz zbiorze rozwiązań dopuszczalnych dla wspomnianego algorytmu. Teoretyczna analiza jego działania przeprowadzona na pewnych przykładach została przeniesiona do załącznika IV, zaś tutaj zostały przedstawione jej wyniki wraz z komentarzami. W rozdziale zostały też zamieszczone obliczenia obrazujące działanie algorytmu 3 oraz wyniki jego prostej symulacji z zastosowaniem arkusza kalkulacyjnego. Rozdział kończą rozważania na temat pewnych przykładów, rozważania te maja na celu wykazanie, że kierowanie ruchu sieciowego na zbyt wiele tras jednocześnie może prowadzić do spadku wartości przepustowości środowiska sieciowego. Więcej informacji na temat grafów znajduje się np. w [26][27][29]. - 79 - 3.1. Graf dwudzielny jako model środowiska sieciowego Dla dalszej analizy badanego zagadnienia, adekwatnym modelem środowiska sieciowego jest graf dwudzielny20. W grafie takim występują dwa rodzaje wierzchołków. Pierwszym rodzajem są wierzchołki, odpowiadające sieciom S1, S2, ..., Sy oraz wierzchołki odpowiadające routerom R1, R2, ..., Rm. W ogólnym przypadku może zachodzić y ≠ m , co jest dość oczywiste, bo liczba sieci nie musi być równa liczbie routerów. W przyjętym modelu, sieć komputerowa jest rozumiana jako domena rozgłoszeniowa (broadcastowa). Bezpośrednie połączenie dwóch routerów to sieć typu punkt-z-punktem (ang. Point-to-Point) tzn. do takiej sieci są podłączone dwa komputery – na końcach łączy. Krawędziami grafu są natomiast łącza łączące routery z sieciami, gdzie łącze łączące sieć Sa z routerem Rb oznaczane jest symbolem ei Rys. 3.1. Przykład grafu dwudzielnego. W celu jak najdokładniejszego odzwierciedlenia warunków rzeczywistych przyjęto, że dowolna sieć komputerowa może być połączona z jednym lub więcej routerami. Analogicznie, każdy router może posiadać interfejsy wpięte do wielu sieci. Przykład środowiska sieciowego rozumianego jako graf dwudzielny został przedstawiony na rys. 3.2. 20 Graf dwudzielny to graf w którym zbiór wierzchołków może zostać podzielony na dwa rozłączne podzbiory, w taki sposób, że nie istnieje krawędź łącząca dwa wierzchołki z tego samego podzbioru. - 80 - Rys. 3.2. Przykład środowiska sieciowego. 3.2 Sformułowanie zadań optymalizacji W niniejszym podrozdziale zadanie optymalizacji przepustowości sieci komputerowej jest sformułowane jako zadanie programowania liniowego oraz zadanie programowania NCSP. W dalszej części pracy zostanie przeprowadzona próba rozwiązania zadania programowania liniowego z wykorzystaniem metody dokładnej (Simplex), zaś zadania NCSP z zastosowaniem zmodyfikowanej metody SW. 3.2.1 Sformułowanie zagadnienia optymalizacji jako zadania programowania liniowego Na wstępie warto zauważyć, że zmodyfikowana metoda SW wykorzystująca algorytm obliczania Ψ(b) jest rozwiązaniem alternatywnym do zadania programowania liniowego wykorzystującego metodę Simplex, a porównanie ich wydajności oraz złożoności obliczeniowych (patrz rozdział 6) stanowi bardzo ważną część tej pracy. Ponadto w rozdziale 6 zostały przedstawione wady i zalety zadania programowania liniowego w porównaniu do wzmiankowanej metody SW. Przed formalnym zdefiniowaniem zadania optymalizacji przepustowości sieci jako zadania programowania liniowego warto przedstawić krótki opis do niego wprowadzający. Mianowicie, w przedstawionym modelu środowisko sieciowe rozumiane jest jako graf skierowany, w którym wierzchołki reprezentowane są przez routery, a krawędzie poprzez łącza sieci. Każde łącze posiada indywidualnie przypisany do niego współczynnik obciążenia - 81 - (wysycenia), który przyjmuje wartości nieujemne i niewiększe niż nominalna przepustowość tego łącza. W omawianym zadaniu optymalizacja jest przeprowadzana poprzez minimalizację wartości tych współczynników (zmienne decyzyjne). Wspomniana minimalizacja odbywa się dla każdego łącza i każdej komunikującej się pary routerów. Innymi słowy optymalizacja przepustowości jest wykonywana poprzez minimalizację wysycenia łączy wchodzących w skład danej sieci. Minimalizowana funkcja celu jest sumą wspomnianych współczynników. Warto zwrócić uwagę, że w tak zdefiniowanym zadaniu funkcja celu posiada zgoła odmienną budowę niż w zadaniu NCSP i nie występuje w niej ‘wprost” odniesienie do przepustowości sieci. W zadaniu tym maksymalną przepustowość sieci wylicza się w sposób następujący. Przyjmuje się pewną charakterystykę ruchu sieciowego (ilość danych do przesłania), po czym przeprowadza optymalizację. Jeśli optymalizacja zakończy się powodzeniem zwiększa się ilość danych do przesłania i tak aż do momentu, w którym nie ma już możliwości przeprowadzenia poprawnej optymalizacji. Następnie przepustowość sieci wylicza się jako sumę danych, dla których optymalizacja jest jeszcze możliwa do przeprowadzenia. Widać, że funkcja celu ukazuje wydajność komunikacji, lecz metoda jej wyliczani nie jest wydajna i choć jest ona skorelowana z czasem przepływu danych, to w obydwu przypadkach (zadanie PL i NCSP) występuje ich ujemna korelacja. Przechodząc do formalnego zdefiniowania zadania optymalizacji przepustowości sieci jako zadania programowania liniowego przyjmijmy następujące oznaczenia: m – liczba routerów – wierzchołków grafu. R – router {Ri: 1 ≤ i ≤ m } należący do zbioru routerów {R1, ...,Rm}. n – liczba łączy – krawędzi grafu. E – zbiór łączy, E={e1,...,en}oraz {ej: 1 ≤ j ≤ n }. πj – nominalna przepustowość łącza ej, 1 ≤ j ≤ n . r – liczba par komunikujących się routerów. ( R1k , R2k ) – k-ta para komunikujących się routerów, indeks górny oznacza numer pary, indeks dolny oznacza kolejność w parze, tzn. R1k jest routerem początkowych k-tej pary, a R2k jej routerem końcowym, 1 ≤ k ≤ r . - 82 - x kj – współczynnik obciążenia łącza ej przez parę routerów ( R1k , R2k ), ilość danych x kj ∈< 0, π j > , 1 ≤ k ≤ r , 1 ≤ j ≤ n . przesłanych między routerami tej pary, Zmienne decyzyjne w sformułowanym poniżej zadaniu optymalizacji. x k - wektor współczynników obciążenia łączy dla pary numer k, x k = [ x1k ,..., x nk ]T , 1 ≤ k ≤ r . dk – całkowita ilość danych do przesłania między routerami pary ( R1k , R2k ), 1 ≤ k ≤ r . D – macierz ruchu sieciowego o rozmiarach r * m i elementach δ ki zdefiniowanych następująco: δ ki = d k jeśli Ri = R2k (Ri jest węzłem początkowym pary k), δ ki = − d k jeśli Ri = R1k (vi jest węzłem końcowym pary k), w pozostałych przypadkach δ ki = 0 , 1 ≤ k ≤ r , 1 ≤ i ≤ m . δk – wektor złożony z elementów k-tego wiersza macierzy D, δ k = [δ k 1 ,..., δ km ]T , 1 ≤ k ≤ r . B – zmodyfikowana macierz incydencji grafu, o rozmiarach m * n i elementach bij zdefiniowanych następująco: bij = −1 jeśli łącze ej prowadzi do routera vi, bij = 1 jeśli łącze ej prowadzi od routera vi, w pozostałych przypadkach bij = 0 , 1 ≤ i ≤ m , 1 ≤ j ≤ n . Kierunkowość łączy wynika z wcześniejszych założeń. f – funkcja celu zadania optymalizacji określona na zmiennych decyzyjnych – współczynnikach x kj , 1 ≤ j ≤ n , 1 ≤ k ≤ r , następującym wzorem r n f = ∑∑ x kj (3.1) k =1 j =1 Zadanie optymalizacji polega na znalezieniu minimum funkcji f określonej wzorem (3.1) przy czym zmienne decyzyjne spełniają następujące ograniczenia ∀1 ≤ k ≤ r , ∀1 ≤ j ≤ n x kj ≥ 0 (3.2) r ∀1 ≤ j ≤ n ∑x k j ≤πj (3.3) k =1 ∀1 ≤ k ≤ r Bx k = δ k (3.4) Fizyczna interpretacja powyższych ograniczeń jest następująca. Dla (3.2) - współczynnik obciążenia łącza odnosi się do ilości danych przez to łącze przesyłanych, dlatego jego wartość nie może być ujemna. Dla (3.3) - wartość sumy współczynników obciążenia danego łącza nie może być większa niż nominalna przepustowość tego łącza. Dla (3.4) - ograniczenie to wynika bezpośrtednio z prawa zachowania przepływu, czyli z routera początkowego musi dokladnie wypływać założona ilość danych, ta sama ilość danych musi wpływać do routera - 83 - końcowego, a we wszystkich pozostałych routerach różnica ilości danych jakie wpływają do routera i wypływają z niego busi być dokładnie równa zero. W związku z powyższym ograniczenie to jest w formie równania nie zaś nierówności. Przedstawione powyżej zadanie optymalizacji pod względem swojej złożoności długi czas zaliczane było do klasy tzw. zadań NP-zupełnych (ang. NP-complete), jednakże prace Chaczijana [113] oraz później Karmarkara [115], wykazały przynależność tego problemu do klasy P (względem parametrów takich jak liczba łączy i liczba routerów). Chaczijan skonstruował algorytm rozwiązujący tego typu zadanie programowania liniowego, którego złożoność jest wielomianowa, jednak stopień tego wielomianu jest wysoki. Okazuje się, że w praktyce algorytm ten zazwyczaj wykonywany jest dłużej dla tych samych danych niż metoda Simplex, która w ekstremalnych przypadkach ma złożoność wykładniczą, lecz przeciętnie jej złożoność jest dużo niższa [117]. Dokładna analiza złożoności obliczeniowej metody Simplex zastosowanej dla zadania programowania liniowego znajduje się w dalszej części tego rozdziału. Warto także dodać, że istnieje wiele innych algorytmów dokładnych służących do rozwiązywania zadań programowania liniowego np. [116]. 3.2.2 Sformułowanie zagadnienia optymalizacji jako zadania programowania NCSP W przedstawionym zadaniu, optymalizacja jest przeprowadzana poprzez maksymalizację wartości funkcjonału wyrażonego wzorem (3.31). Funkcjonał ten dokładnie został zdefiniowany w dalszej części rozdziału. Przechodząc do formalnego zdefiniowania modelu optymalizacji przepustowości sieci jako zadania programowania NCSP przyjmijmy dodatkowe oznaczenia: b – wektor współczynników beta, b = [ β1 ,..., β m ]T . βi – wartość współczynnika beta dla routera Ri, 1 ≤ i ≤ m . Współczynniki te są zmiennymi decyzyjnymi w przedstawionym w dalszym ciągu zadaniu optymalizacji. βimax – maksymalna wartość współczynnika βi wyliczana ze wzoru (2.3), 1 ≤ i ≤ m . lk(b) – liczba tras komunikacji dla pary routerów ( R1k , R2k ), 1 ≤ k ≤ r . t qk (b) – trasa nr q dla pary routerów dla pary routerów ( R1k , R2k ), 1 ≤ q ≤ l k (b) , 1 ≤ k ≤ r . Ψ (k , q, b) – efektywna przepustowość trasy t qk (q) dla danego wektora b, 1 ≤ q ≤ l k (q ) , 1≤ k ≤ r. - 84 - Ψ nom (k , q, b) – nominalna przepustowość trasy t qk (b) . Ψ (b) – całkowita przepustowość środowiska sieciowego wyliczana ze wzoru (3.31) (według opisanego w dalszym ciągu autorskiego algorytmu 3. Jest to funkcja celu zadania optymalizacji, określona na zmiennych decyzyjnych – współczynnikach βi, 1 ≤ i ≤ m , następującym wzorem. r lk ( b ) Ψ (b) = ∑ ∑ Ψ (k , q, b) (3.5) k =1 q =1 Zadanie optymalizacji polega na znalezieniu maksimum funkcji Ψ (b) określonej wzorem (3.5), przy czym zmienne decyzyjne spełniają następujące ograniczenia: 1≤ k ≤ r ∀1 ≤ q ≤ l k (b) ∀1 ≤ i ≤ m 0 ≤ Ψ (k , q, b) ≤ Ψ nom (k , q, b) 0 ≤ β i ≤ β imax (3.6) (3.7) lk ( b ) ∀1 ≤ k ≤ r ∑ Ψ ( k , q, b ) ≥ d k (3.8) q =1 W ten sposób zdefiniowane zadanie optymalizacji będzie w dalszej części pracy rozwiązywane z zastosowaniem zmodyfikowanego algorytmu SW. Natomiast fizyczna interpretacja powyższych ograniczeń jest następująca. Dla (3.6) – ilośc danych przesyłanych z wykorzystaniem danej trasy nie może być ujemna ani większa niż nominalna jej przepustowość. Dla (3.7) – wartość współczynnika beta nie może być ujemna ponieważ koszt trasy jest wartością dodatnią. Przy ujemnej wartości współczynnika beta nierówność (2.2) nigdy nie byłaby spełniona, w konsekwencji tablica routingu zawierałaby jedynie trasy optymalne. Natomiast stosowanie większych wartości współczynnika beta niż wartość maksymalna jest bezzasadne, ponieważ niczego w zadaniu nie zmienia, a jedynie zwiększa przestrzeń poszukiwań rozwiązań optymalnych. Dla (3.8) – wyznaczona sumacyjna przepustowość wszystkich tras jakimi przepływają dane wymieniane przez każdą parę routerów, nie może być mniejsza niż założona ilości ruchu sieciowego jaki para ta powinna wymienić. 3.3 Zasada działania metody dokładnej - Simplex Metoda Simplex służy do rozwiązywania zadań programowania liniowego. Zadanie tego typu w postaci ogólnej formułuje się następująco. Zminimalizować poniższą funkcję celu: - 85 - n z = ∑cj xj (3.9) j =1 przy następujących ograniczeniach liniowych: n ∀1 ≤ i ≤ m ∑a ij x j ≤ bi (3.10) j =1 ∀1 ≤ j ≤ n xj ≥ 0 (3.11) gdzie: z – wartość funkcji celu. cj – współczynniki funkcji celu, znane stałe, gdzie 1 ≤ j ≤ n . xj – argumenty funkcji celu – zmienne decyzyjne zadania optymalizacji, gdzie 1 ≤ j ≤ n . n – liczba zmiennych decyzyjnych, liczba kolumn w macierzy współczynników nierówności ograniczeń. m – liczba nierówności ograniczeń, liczba wierszy w macierzy współczynników nierówności ograniczeń. aij – współczynniki nierówności ograniczeń – znane stałe, gdzie 1 ≤ i ≤ m , 1 ≤ j ≤ n , elementy macierzy A. A - macierz współczynników aij o rozmiarach mxn, gdzie i odpowiada numerowi wiersza macierzy, a j numerowi kolumny, oraz 1 ≤ i ≤ m , 1 ≤ j ≤ n . aj – wektor współczynników aij złożony z elementów j-tej kolumny macierzy A. bi – wartości ograniczeń – znane stałe, gdzie 1 ≤ i ≤ m . Opis działania metody Simplex rozpocznę od przedstawienia opisu jej poszczególnych etapów (kroków). Według [106] są one następujące: • krok 0 - sprowadzenie zadania do postaci kanonicznej – bazowej; • krok 1 - wyznaczenie pierwszego rozwiązania bazowego – dopuszczalnego; • krok 2 - sprawdzenie optymalności rozwiązania bazowego; • krok 3 – zastosowanie kryterium wejścia i wyjścia w celu poprawienia aktualnego rozwiązania bazowego; • krok 4 – utworzenie nowej bazy – powstaje nowe poprawione rozwiązanie bazowe (nowa postać tablicy simpleksowej); • powrót do kroku 2. Warto zaznaczyć, że zadanie optymalizacji przedstawione powyżej, jest zdefiniowane w sposób ogólny, natomiast zadanie zdefiniowane w podrozdziale 3.2.1 jest szczególnym - 86 - przypadkiem zadania ogólnego. Specyfika zadania z podrozdziału 3.2.1 wynika z konieczności dostosowania go do zagadnienia optymalizacji przepustowości sieci komputerowych. Przed przystąpieniem do dokładnego omówienia poszczególnych kroków metody Simplex przyjmijmy następujące oznaczenia i terminu: si – zmienna swobodna dodawana do nierówności ograniczeń, gdzie 1 ≤ i ≤ m . xib - zmienne bazowe, zmienne decyzyjne aktualnie znajdujące się w bazie tablicy Simplex, gdzie 1 ≤ i ≤ m . Rozwiązanie bazowe układu równań (3.10) jest to wektor utworzony ze zmiennych bazowych. Tablica simpleksowa jest to dwuwymiarowa tablica zawierająca następujące elementy: wartości zmiennych c1 c2 bazowych x1 x2 ....... ....... xib cn s1 s2 xn 0 0 ... sm wartości ograniczeń 0 bi aij Rys. 3.3. Przykład budowy tablicy Simplex. Więcej szczegółowych informacji na temat budowy tablicy Simplex oraz sposobów wyliczania jej współczynników znajduje się w [106] [107]. Krok 0 polega na przekształceniu ograniczeń z postaci nierówności do postaci równań, poprzez odjęcie lub dodanie po jednej zmiennej swobodnej si dla każdego ograniczenia. Możliwe są przy tym dwa przypadki: Przypadek pierwszy – ograniczenia w postaci „większościowej”.. a i1 x1 + a i 2 x 2 + ... + a in x n ≥ bi (3.12) Przypadek drugi – ograniczenia w postaci „mniejszościowej”. a i1 x1 + a i 2 x 2 + ... + a in x n ≤ bi (3.13) W pierwszym przypadku wyrażenie (3.13) jest przekształcane do następującej postaci: a i1 x1 + a i 2 x 2 + ... + a in x n − s i = bi (3.14) a i1 x1 + a i 2 x 2 + ... + a in x n + s i = bi (3.15) a w drugim do następującej: gdzie - 87 - ∀1 ≤ i ≤ m ∀1 ≤ j ≤ n bi ≥ 0 si ≥ 0 xj ≥ 0 (3.16) (3.17) Krok 1 - polega na wyznaczeniu pierwszego rozwiązania bazowego w taki sposób, że wartości wszystkich zmiennych bazowych są przyjmowane za zero, czyli xib =[x1,...xm]T=[0,...,0]T - zmiennych bazowych jest m (tyle co równań ograniczeń), w odróżnieniu od liczby zmiennych decyzyjnych, których jest n. W konsekwencji funkcja celu (3.9) także osiąga wartość zero. Krok 2 - sprawdzenie optymalności rozwiązania bazowego, polega na wyznaczeniu współczynników optymalności dla każdej zmiennej decyzyjnej, zgodnie z poniższym wzorem. ∀1 ≤ j ≤ n T χ j = c j − xib a j (3.18) gdzie χ j są współczynnikami optymalności. Współczynniki optymalności można rozumieć jako miary jednostkowego przyrostu wartości funkcji celu dla odpowiadających im zmiennych. Rozwiązanie jest optymalne (z chwilą jego znalezienia następuje zatrzymanie algorytmu), gdy wskaźniki optymalności dla wszystkich zmiennych niebazowych są: nieujemne ( ∀1 ≤ j ≤ n χ j ≥ 0 ) – dla zadania minimalizacji niedodatnie ( ∀1 ≤ j ≤ n χ j ≤ 0 ) – dla zadania maksymalizacji. Jeśli choć jeden ze wskaźników optymalności jest: • ujemny dla zadania minimalizacji; • dodatni dla zadania maksymalizacji; wówczas istnieje możliwość poprawy rozwiązania poprzez zmianę bazy – przejście do następnego kroku. Krok 3 - zastosowanie kryterium wejścia i wyjścia w celu poprawienia aktualnego rozwiązania bazowego. Kryterium wejścia: • w przypadku zadania maksymalizacji do bazy jest wstawiana zmienna decyzyjna xk, gdzie indeksowi k odpowiada największa wartość wskaźnika optymalności, czyli - 88 - x k : max( χ j : 1 ≤ j ≤ n) • (3.19) w przypadku zadania minimalizacji do bazy jest wstawiana ta zmienna decyzyjna xk, gdzie indeksowi k odpowiada najmniejsza wartość wskaźnika optymalności, czyli x k : min( χ j : 1 ≤ j ≤ n) (3.20) Kryterium wyjścia – z bazy usuwamy zmienną xlb , gdzie indeksowi l odpowiada najmniejsza wartość ilorazu bi/aik, gdzie k jest wyznaczone z (3.19) albo (3.20), a 1 ≤ i ≤ m, czyli bl b b b = min( 1 , 2 ,..., m ) alk a1k a 2 k a mk (3.21) Krok 4 - utworzenie nowego poprawionego rozwiązania bazowego w następujący sposób. Elementy wiersza l (zmiennej wychodzącej z bazy) są tworzone zgodnie z poniższym wzorem. a lj* = a lj a lk (3.22) gdzie: aij* - nowe elementy macierzy A. Natomiast elementy pozostałych wierszy w sposób przedstawiony następującym wzorem aij* = aij − alj* * aik (3.23) W sposób analogiczny należy postąpić wyznaczając nowe wartości elementów bi. Dalej następuje powrót do kroku drugiego. Dokładny opis złożoności obliczeniowej przedstawionego zadania znajdują się w rozdziale 6. Fragmenty tego podrozdziału zostały zaczerpnięte z [43][46][104][105]. 3.4 Budowa algorytmu wyznaczania przepustowości środowiska sieciowego Podrozdział zawiera opis autorskiego algorytmu służącego do wyznaczania przepustowości sieci komputerowych oraz czasów transmisji danych, a także krótkie wzmianki na temat alternatywnych metod wyznaczania przepustowości. Wspomniany algorytm jest zbudowany na bazie funkcjonału (3.31) i należy go traktować jako „narzędzie” służące do mierzenia wydajności (efektywności) działania głównego algorytmu (tj. zmodyfikowanego algorytmu SW). Natomiast sam funkcjonał (3.31) umożliwia wyznaczenie przepustowości środowiska sieciowego w sposób analityczny. - 89 - Dla potrzeb algorytmu służącego do wyznaczania przepustowości wykorzystano oznaczenia wcześniej użyte w tym rozdziale oraz dodatkowo przyjęto następujące: λ j (b) – liczba tras, które prowadzą przez łącze ej (dla wszystkich komunikujących się par routerów ( R1k , R2k )). Q j (b) – efektywna przepustowość łącza ej (wyliczana z uwzględnieniem liczby tras wykorzystujących to łącze i mierzona w Mb/s) i wyznaczana ze wzoru (3.27). ^ Ψ (k , q, b) - efektywna przepustowość najwolniejszego łącza wchodzącego w skład trasy t qk (b) (mierzona w MB/s) i wyznaczana ze wzoru (3.28). Ψk* (b) – efektywna przepustowość komunikacji dla k-tej pary routerów (mierzona w Mb/s) i wyznaczana ze wzoru (3.29), T k (b) - trasy t qk (b) dla każdej komunikującej się pary routerów k. trasy(k,b) - funkcja która z uwzględnieniem wartości parametrów beta i zastosowaniem algorytmu 1, wyznacza wszystkie acykliczne i rozłączne u źródła trasy pomiędzy routerami ( R1k , R2k ). Przez sformułowanie rozłączne u źródła należy rozumieć takie trasy, z których każda prowadzi przez inny interfejs wyjściowy danego routera. Należy zwrócić uwagę, że w warunkach rzeczywistych funkcjonalność tę powinien realizować zmodyfikowany (o równoważenie obciążenia typu NK) protokół OSPF pracujący na poszczególnych routerach. Warto nadmienić, że można dodatkowo wprowadzić współczynnik wykorzystania (obciążenia) łącza przez daną parę sieci, co także wpłynie na jej efektywną przepustowość. Wprowadzenie takiego współczynnika daje pewną elastyczność przy dzieleniu dostępnego pasma na poszczególne trasy. Natomiast w niniejszym opracowaniu, (dla uproszczenia) zakłada się jednakowe wykorzystanie dostępnego pasma (nominalnej przepustowości łącza) przez wszystkie trasy z niego korzystające. W tym miejscu warto wspomnieć, że tego typu podejście do wyznaczania efektywnej przepustowości łącza posiada pewną wadę. Jeśli przez dane łącze prowadzą np. dwie trasy, a przepustowość jednej z tras jest mniejsza niż połowa przepustowości tego łącza (np. na skutek występowania innego łącza na tej trasie o mniejszej efektywnej przepustowości), to dla drugiej trasy „pozostanie” więcej niż połowa - 90 - przepustowości tego łącza. Dokładniejsze omówienie przedstawionej powyżej wady wraz z propozycją jej eliminacji znajduje się w podrozdziale 6.8. Do obliczenia powyższych przepustowości został użyty następujący algorytm 3. Algorytm 3 1. Wyznaczyć wszystkie dopuszczalne trasy routingu dla każdej z komunikujących się pary routerów, tj. ∀1 ≤ k ≤ r , T k (b) = trasy(k,b) (3.24) W następstwie powyższych operacji otrzymujemy przykładową drugą trasę dla pierwszej pary routerów np. t 12 (b)=(e4, e2, ... ,e8) gdzie t qk (b) ∈ T k (b) (3.25) 2. Obliczenie dla każdego łącza, w ilu trasach ono występuje. r lk ( b ) ∀1 ≤ j ≤ n λ j (b) = ∑ ∑ γ j (t qk (b)) (3.26) k =1 q =1 1 e j ∈ t gdzie γ j (t qk (b)) = , a t jest pewną trasą. 0 e j ∉ t 3. Obliczenie dla każdego łącza sieci jego efektywnej przepustowości. ∀1 ≤ j ≤ n Q j (b) = πj λ j (b) (3.27) 4. Wyznaczenie dla każdej z trasy z T k (b) jej przepustowości efektywnej. ^ ∀1 ≤ k ≤ r , ∀1 ≤ q ≤ l k (b) Ψ (k , q, b) = min(Q j (b) : e j ∈ t qk (b)) (3.28) 5. Wyznaczenie przepustowości komunikacji pomiędzy k-tą parą routerów. lk ( b ) ^ * k ∀1 ≤ k ≤ r Ψ (b) = ∑ Ψ ( k , q, b) (3.29) q =1 6. Wyznaczenie przepustowości środowiska sieciowego jako sumę przepustowości wszystkich komunikujących się z sobą par sieci. r Ψ (b) = ∑ Ψk* (b) (3.30) k =1 W efekcie wzór na przepustowość środowiska sieciowego (Ψ(b)) przyjmuje poniższą postać. r lk ( b ) ^ Ψ (b) = ∑ ∑ Ψ (k , q, b) (3.31) k =1 q =1 - 91 - Kiedy sieci dowolnej z komunikujących się par zakończą (lub rozpoczną) wymianę informacji, wtedy warunki panujące w analizowanym środowisku ulegną zmianie i każde z łączy może zostać odciążone lub dociążone. W takiej sytuacji należy ponownie uruchomić cały proces wyznaczania przepustowości, lecz już z nowymi warunkami początkowymi. Przykłady sposobów określania nowych warunków początkowych tj. spodziewanej charakterystyki ruchu sieciowego zostały przedstawione w podrozdziale 2.5. Powyższy werbalny opis algorytmu 3 przekłada się na zapis w formie następującego pseudokodu: procedura WyznaczΨ(b)) Ψ (b) ← 0; forall 1 ≤ k ≤ r do forall 1 ≤ q ≤ l k (b) do T k (b) ←trasy(k,b); end forall end forall forall 1 ≤ j ≤ n do λ j (b) ← 0; end forall forall 1 ≤ k ≤ r do forall 1 ≤ q ≤ l k (b) do if ej ∈ t qk (b) then λ j (b) ← λ j (b) + 1; end if end forall end forall forall 1 ≤ j ≤ n do Q j (b) ← πj ; λ j (b) end forall forall 1 ≤ k ≤ r do forall 1 ≤ q ≤ l k (b) do - 92 - ^ Ψ ( k , q , b) ← ∞ ; end forall forall 1 ≤ k ≤ r do forall 1 ≤ q ≤ l k (b) do ^ if ej ∈ t qk (b) and Ψ (k , q, b) > Q j (b) then ^ Ψ (k , q, b) ← Q j (b) ; end if end forall end forall Ψ (b) ← 0 ; forall 1 ≤ k ≤ r do Ψk* ← 0 ; forall 1 ≤ q ≤ l k (b) do ^ Ψk* ← Ψ (k , q, b) + Ψk* ; end forall Ψ (b) ← Ψk* + Ψ (b) ; end forall return Ψ (b) ; end WyznaczΨ(b). Dodatkowo można wyliczyć czasy komunikacji dla poszczególnych par routerów k. tk = ilosc _ wymienianych _ danych Ψk* (3.32) Funkcjonał określony wzorem (3.31) jest funkcją celu zagadnienia optymalizacji i w dalszej części pracy rozważane będzie zagadnienie maksymalizacji tego funkcjonału za pomocą metody symulowanego wyżarzania. Będzie także rozważane alternatywne zagadnienie maksymalizowania przepustowości z użyciem metody dokładnej tj. Simplex (patrz. podrozdział 3.2). Dodatkowo warto wspomnieć, że funkcjonał (3.31) jest tzw. funkcją niewypukłą, kawałkami liniową (ang. non-convex piecewise linear function), czyli składającą się w obrębie swojej dziedziny z połączonych pod różnym kątem prostych (funkcji afinicznych - y=ax+b). W - 93 - aspekcie teorii optymalizacji maksymalizacja funkcji celu (3.31) jest zadaniem tzw. NCSP (ang. Non-Convex Separable Programing) [125], jest tak ponieważ funkcjonał (3.31) stanowi sumę optymalizowanych przepustowości poszczególnych tras dla wszystkich komunikujących się par routerów. Innymi słowy omawiany funkcjonał daje się przedstawić jako suma funkcji celu poszczególnych zmiennych decyzyjnych. Zadanie optymalizacji funkcjonału (3.31) zostało przedstawione w podrozdziale 3.2.2. Warto także zaznaczyć, że istnieją inne powszechnie znane algorytmy wyznaczania w grafach maksymalnej przepustowości (przepływu) pomiędzy źródłem „s”, a miejscem przeznaczenia „d”. Przykładami mogą być algorytmy Forda-Fulkersona, Edmonsa-Karpa lub Dinica [94][95][96][97]. Niestety wszystkie te algorytmy posiadają pewną wadę, działają przy założeniu, że ruch odbywa się tylko między dwoma węzłami sieci, co w rzeczywistych sieciach komputerowych występuje niezwykle rzadko. Wadę tę można w pewien sposób „obejść”, a mianowicie, jeśli występuje wiele węzłów źródłowych (nadawców) i wiele docelowych (odbiorców) wówczas należy wprowadzić dwa dodatkowe węzły - wirtualne źródło i wirtualne ujście. Dodatkowo zakłada się, że krawędzie łączące wirtualne źródło z węzłami początkowymi, oraz węzły końcowe z wirtualnym ujściem mają nieograniczoną przepustowość. Przy zastosowaniu takiego rozwiązania nasuwa się pytanie: jak postąpić, kiedy dany węzeł jest jednocześnie nadawcą i odbiorcą? Naturalnym rozwiązaniem jest podzielenie go na dwa węzły – jeden odpowiadający za nadawanie, drugi za odbieranie danych, analogicznie należałby podzielić krawędzie wychodzące z tego węzła. Przy podziale krawędzi należy wprowadzić pewne ograniczenie, mianowicie sumacyjny przepływ wirtualnych krawędzi odpowiadających za odbieranie i nadawanie danych nie może być większy niż nominalna przepustowość rzeczywistego łącza, które to krawędzie symbolizują, zgodnie z (5.1). Innym problemem jest zapewnienie przepływu przez konkretnego nadawcę określonej ilości danych, czyli zapewnienie prawidłowego rozkładu ilości informacji wypływających z wirtualnego źródła do poszczególnych rzeczywistych węzłów. Rozwiązaniem tego problemu może być np. zastosowanie dodatkowych ograniczeń na ilości przepływów przez poszczególne łącza wirtualne. Wprowadzanie tego typu modyfikacji jest dość dużą ingerencją w strukturę algorytmu, a także wymaga dokonania pewnych podziałów i dodania ograniczeń, co w sposób naturalny wpływa na złożoność obliczeniową algorytmu. Zaproponowany algorytm wyznaczania Ψ(b) tego typu wad nie posiada, choć zapewne nie jest on pozbawiony innych niedoskonałości. W tym miejscu warto odnieść się do algorytmu powiększania przepływów (ang. augmenting path algorithm), a mianowicie algorytm ten umożliwia dokładne wyliczenie przepustowości dla wielu komunikujących się par węzłów i - 94 - to nawet w sytuacji, kiedy węzeł jest zarówno nadawcą jak i odbiorcą. Jego złożoność jest rzędu O(mn) [124], gdzie m reprezentuję liczbę routerów (wierzchołków grafu), zaś n to liczba łączy sieci (krawędzi grafu). W tym przypadku algorytm 3 (wyznaczania Ψ(b)) jest szybszy, a otrzymywane za jego pomocą wyniki są zadowalające. Ze względu na znaczną liczbę iteracji oraz szeroką dostępność literatury, przykład działania algorytmu powiększania przepływów został w tej pracy pominięty. Kontynuując, do wyznaczania maksymalnej przepustowości (przepływu) w grafie, przy założeniu jednoczesnej komunikacji między wieloma parami sieci, można także podejść w inny sposób. Mianowicie, za pomocą jednego ze wzmiankowanych algorytmów należy wyznaczyć maksymalną przepustowość komunikacji dla pierwszej pary sieci, a następnie, uwzględniając już obciążenia łączy powtórzyć obliczenia dla wszystkich pozostałych par. Uwzględnienie obciążonych łączy polegałoby na tym, że przed każdym kolejnym uruchomieniem algorytmu, modyfikowane byłyby dostępne ich przepustowości. Podejście takie posiada jednak zasadniczą wadę polegającą na tym, że pary sieci, dla których obliczenia zostały wcześniej wykonywane stają się „faworyzowane” – posiadają większy dostęp do przepustowości w stosunku do pozostałych. Faworyzacja taka nie odzwierciedla rzeczywistego działania protokołu IP, więc omawiana metoda posiada wątpliwe znaczenie praktyczne. Jeszcze innym, zgoła odmiennym podejściem do omawianego zagadnienia może być wyliczanie i minimalizowanie opóźnień występujących przy transmisji danych. Istnieje wiele metod wyliczania tych opóźnień. Omówione zostaną następujące metody: • jednopakietowe; • dwupakietowe • Jacobsona. Metoda jednopakietowa polega na wyznaczeniu opóźnienia dla jednego pakietu przesyłanego w jedną stronę (od nadawcy do odbiorcy). Opóźnienie to wyznacza się ze wzoru η ϕR = ∑ ( j =1 s πj + ϕ j +τ R −1 ) (3.33) gdzie ϕ R - opóźnienie w jedną stronę do routera (hosta) R, mierzone w sekundach; s - długość pakietu testowego, mierzona w bitach; π j - przepustowość łącza ej; ϕ j – opóźnienie generowane przez łącze ej; τ R - czas przetwarzania pakietu przez router R; - 95 - η- liczba łączy wchodzących w skład analizowanej trasy. Metoda dwupakietowa polega na wysyłaniu dwóch takiej samej długości pakietów, jeden za drugim. Pakiety te docierają do łącza o małej przepustowości (najmniejszej z występujących na analizowanej trasie) w małym odstępie czasu. Natomiast opuszczają to łącze (każde inne także) w odstępie czasu odwrotnie proporcjonalnym do przepustowości. Za pomocą tej metody można oszacować przepustowość najwolniejszego łącza na analizowanej trasie. Rys. 3.4. przedstawia ideę działania metody dwupakietowej. Rys. 3.4. Idea działania dwupakietowej metody wyznaczania opóźnień w sieciach komputerowych ([123]). Z kolei metoda Jacobsona polega na wysyłaniu ciągu pakietów UDP z parametrem TTL nagłówka IP równym k. W sytuacji, kiedy taki pakiet dotrze do k-tego z kolei węzła, węzeł ten odrzuci go i wyśle powiadamiającą o tym fakcie informacje zwrotną za pomocą protokołu ICMP. Mierząc czas od momentu wysłania pakietu do odebrania informacji zwrotnej otrzymujemy ciąg wartości rttk (ang. round trip time) dla k-tej pary komunikujących się routerów ( R1k , R2k ). Przy oznaczeniach ^ Ψ (k , q, b) – efektywna przepustowość trasy pomiędzy routerami ( R1k , R2k ). t kICMP - czas przesyłania komunikatu ICMP pomiędzy routerami ( R1k , R2k ). Otrzymujemy rttk = ϕ R + τ R + tkICMP , k = 1,2,... (3.34) oraz - 96 - rttk − rttk −1 ≈ s ^ , k = 1,2... (3.35) Ψ ( k , q, b) Na podstawie różnic wyliczonych z wzoru (3.35) można wyznaczyć przepustowość najwolniejszego łącza na analizowanej trasie. Obszerne omówienie trzech przedstawionych powyżej metod wyznaczania opóźnień znajduje się w [123]. 3.4.1 Ograniczenia algorytmu wyznaczania przepustowości środowiska sieciowego Mając na uwadze poniższe definicje. Definicja 3.1 Przekrój minimalny Ckmin pomiędzy dwoma wierzchołkami grafu (tworzącymi parę k) jest to przekrój pomiędzy tymi wierzchołkami charakteryzujący się minimalną wartością przepływu spośród wszystkich przekrojów istniejących pomiędzy tymi wierzchołkami grafu. Definicja 3.2 Maksymalna przepustowość środowiska sieciowego (oznaczona przez Ψ max ) wynosi tyle, co suma efektywnych przepustowości minimalnych przekrojów dla wszystkich istniejących w tym środowisku par routerów (uwzględniając zmniejszenie efektywnej przepustowości łączy współdzielonych, tj. wchodzących w skład więcej niż jednego minimalnego przekroju). r Ψ max = ∑ Ψkmax (3.36) k =1 W analizowanym zagadnieniu głównym ograniczeniem jest maksymalna przepustowość sieci. Przepustowość ta zależy od kilku czynników, takich jak np. nominalna przepustowość poszczególnych łączy, liczba łączy, topologia sieci itp. Nie bez znaczenia jest fakt, że wyznaczenie maksymalnej przepustowości nie jest zadaniem trywialnym. Przyjęta w tej pracy metoda obliczania ograniczeń polega na wyznaczeniu w grafie przekrojów Ckh, gdzie k oznacza numer pary komunikujących się routerów, a h numer przekroju dla tej pary. Następnie uwzględniając przepustowości łączy (krawędzi przekroju) oraz, co jest bardzo istotne - ich współdzielenie z innymi parami routerów, należy obliczyć efektywne przepływności dla każdego z wyznaczonych przekrojów. Dla dalszych potrzeb przyjęto oznaczenie Фkh jako efektywna przepustowość (przepływność) przekroju Ckh. Przyjmując, że pomiędzy k-tą parą routerów występuje Zh przekrojów, wówczas h jest liczbą całkowitą z przedziału < 1,..., Z k > . Ograniczeniem przepustowości dla k-tej pary routerów jest minimalna - 97 - wartość przepływności spośród wyznaczonych przekrojów. Innymi słowy, dla dowolnej k-tej pary routerów, maksymalna wartość przepustowości (przepływu) między nimi (oznaczona jako Ψkmax ) jest równa przepustowości minimalnego przekroju pomiędzy tymi routerami (wierzchołkami grafu), o czym mówi twierdzenie Forda-Fulkersona [124]. Ψkmax = min(Φ kh : 1 ≤ h ≤ Z h ) (3.37) Postępując w sposób analogiczny, należy wyznaczyć ograniczenia przepustowości dla wszystkich komunikujących się par sieci. 3.4.2 Zmienne decyzyjne w metodzie SW wykorzystującej algorytm 3 W przyjętym rozwiązaniu zbiór zmiennych decyzyjnych tworzą współczynniki beta, po jednym dla każdego zarządzanego routera. Współczynnik beta (dla danego routera) został zdefiniowany i szczegółowo opisany w rozdziale 2. Warto jednak zwrócić uwagę na to, że w zależności od wartości tych współczynników zmienia się liczba tras pomiędzy komunikującymi się parami sieci, co w konsekwencji prowadzi do zmiany wartości Ψ(b) wyznaczanej przez algorytm 3. Dodatkowo można wspomnieć o innym współczynniku zawiązanym z określonym routerem, a mianowicie αi (liczba przeciążonych interfejsów). Został on zdefiniowany w tym samym podrozdziale, co beta, a wartości jakie przyjmuje to liczby całkowite należące do przedziału <0, liczba interfejsów routera –1 >. Chociaż αi nie jest zmienną decyzyjną, a tylko jednym z warunków początkowych, to posiada on (podobnie jak beta) wpływ na to, czy analizowana trasa alternatywna zostanie dodana do tablicy routingu. Dla wykazania zasadności stosowania równoważenia obciążenia typu NK przyjęto, że routery pracują z maksymalnym obciążeniem interfejsów. Zasadność przyjętego założenia została wykazana w rozdziale 2. 3.4.3 Zbiór rozwiązań dopuszczalnych dla metody SW wykorzystującej algorytmu wyznaczania przepustowości środowiska sieciowego W odniesieniu do metody SW zastosowanej do optymalizacji przepustowości, zbiór rozwiązań dopuszczalnych jest to zestaw parametrów beta (po jednym dla każdego routera wchodzącego w skład optymalizowanego obszaru OSPF) z których każdy przyjmuje wartości rzeczywiste z przedziału (0; βmax] (patrz rozdział 2). Warto podkreślić, że wartość współczynników β oraz βmax dla każdego routera może być inna, a zerowa wartość β skutkuje wyłączeniem równoważenia obciążenia typu NK na routerze, do którego współczynnik ten - 98 - jest przypisany. Warto dodać, że przy optymalizacji przepustowości środowiska sieciowego nie na wszystkich routerach może być wymagane włączenie równoważenia typu NK. Dodatkowo dla konkretnych przypadków (topologii sieciowych i przepustowości łączy) wartości parametrów beta posiadają pewną „swobodę”. Znaczy to, że pewne małe zmiany wartości tego parametru (jak małe, to zależy od konkretnych przypadków) nie prowadzą do zmiany zawartości tablicy routingu danego routera. 3.4.4 Analiza funkcji celu dla metody SW Na samym początku, należy zaznaczyć, że przeprowadzona analiza ma na celu wykazanie słuszności głównej tezy pracy w pewnych sytuacjach. Warto także wspomnieć, że nie we wszystkich sytuacjach wykazanie słuszności przyjętej tezy jest możliwe (na przykład wtedy, gdy istnieją tylko pojedyncze trasy do osiągalnych sieci). Istnieją sytuacje, w których włączenie równoważenia obciążenia typu RK nie prowadzi do wzrostu przepustowości środowiska sieciowego. W tych przypadkach włączenie równoważenia obciążenia typu NK także nie będzie skutkowało wzrostem przepustowości. Głównym celem analizy jest wykazanie w sposób teoretyczny, że przy pewnych (całkowicie realnych i praktycznych) założeniach odpowiednie zastosowanie równoważenia obciążenia typu NK prowadzi do wzrostu przepustowości. Natomiast sama analiza jest bardzo ogólna i nie odnosi się konkretnie do żadnej topologii sieciowej, ani tym bardziej wartości liczbowych, co też było jednym z jej celów. Po przeprowadzeniu analizy, której obliczenia ze względu na swoją objętość zostały przeniesione do załącznika IV, pojawia się wniosek, że w pewnych sytuacjach dodanie dodatkowej trasy o nieoptymalnym koszcie prowadzi do zwiększenia przepustowości środowiska sieciowego. Dodanie takiej trasy jest możliwe w wyniku np. włączenia równoważenia obciążenia typu NK. Inną kwestią jest to, jakie trasy powinny być dodawane, a jakie nie (czyli jaką wartość powinien przyjmować współczynnik beta). Żeby poprawnie odpowiedzieć na to pytanie konieczna jest pełna wiedza o topologii sieciowej oraz kosztach wszystkich łączy w niej występujących i warunkach panujących w sieci. Posiadając takie informacje, odpowiedź na powyższe pytanie można uzyskać rozwiązując zadanie optymalizacji sformułowane w punkcie 3.2. lub stosując do tego celu zmodyfikowaną metodę SW. Innym zasadnym pytaniem jest to, kiedy włączać równoważenie obciążenia typu NK, a kiedy nie ma takiej potrzeby. Zanim zostanie podjęta próba odpowiedzi na to pytanie, warto zauważyć, że jest ono pytaniem trudnym i poza przypadkami oczywistymi (takimi jak np. - 99 - połączenie do sieci typu stub) odpowiedź jest niejednoznaczna i zależna od takich czynników jak topologia i charakterystyka ruchu sieciowego. Już na tym etapie można stwierdzić, że takie informacje posiada jedynie stacja zarządzająca i to właśnie ona powinna tego typu decyzje podejmować. Konkludując, włączenie równoważenia obciążenia typu NK z dużym prawdopodobieństwem jest zasadne w sytuacji, kiedy w optymalizowanym obszarze istnieje przynajmniej jedna para sieci i przynajmniej jedna trasa pomiędzy nimi taka, że żadne z łączy na tej trasie nie jest obciążone w stu procentach. Dodatkowego wyjaśnienia może wymagać sformułowanie „z dużym prawdopodobieństwem”. Sformułowanie to zostało użyte celowo, a to dlatego, że charakterystyka ruchu sieciowego prawie w każdym przypadku jest zmienna. Nietrudno wyobrazić sobie sytuację, w której zanim omawiane równoważenie obciążenia zostanie włączone, (co z przyczyn oczywistych zajmuje pewien czas) to sytuacja panująca w środowisku sieciowym ulegnie zmianie i np. jedno z złączy wchodzących w skład trasy nieoptymalnej zostanie maksymalnie obciążone. W takiej sytuacji włączenie omawianego równoważenia obciążenia nie wniesie poprawy przepustowości, lecz co niemniej istotne, nie spowoduje także jej spadku. 3.5 Obliczenia i symulacja dla środowiska z rys. 3.2 Obliczenia wartości przepustowości środowiska sieciowego zostały przeprowadzone w trzech etapach. W każdym z etapów została obliczona zarówno wartość Ψ(b) jak i poszczególne czasy przesyłania danych, przyjętych w warunkach początkowych. Przy wykonywaniu obliczeń przyjęto równomierny dostęp do współdzielonych łączy. W etapie pierwszym obliczenia zostały wykonane przy założeniu, że na wszystkich routerach jest wyłączone równoważenie obciążenia. W etapie drugim routery miały włączone równoważenie obciążenia typu RK, zaś w trzecim NK. Dodatkowo w etapie trzecim obliczenia zostały wykonane dla wartości współczynników beta dobranych empirycznie w taki sposób żeby wykazać wzrost przepustowości środowiska sieciowego - po zastosowaniu równoważenia obciążenia typu NK. Inną metodą doboru wartości zmiennych jest rozwiązane wcześniej omawianego zadania optymalizacji z wykorzystaniem metody dokładnej lub SW. Ponadto, w etapie tym zostanie podjęta próba wyznaczenia (za pomocą symulacji) takich wartości zmiennych decyzyjnych, dla których przepustowość badanego środowiska sieciowego jest największa, a czasy przesyłania danych najkrótsze. - 100 - 3.5.1 Opis przyjętych warunków początkowych W celu wykazania słuszności przyjętej tezy, dla środowiska sieciowego przedstawionego na rys. 3.2 przyjęto pewne warunki początkowe. Zachowując oznaczenia z podrozdziału 3.2.1, przyjęte warunki początkowe można przedstawić za pomocą macierzy D 0 0 − 200 − 300 200 0 0 − 400 D= 300 0 0 0 400 0 0 0 Ponieważ ruch wewnątrzsieciowy (w obrębie domeny rozgłoszeniowej) nie jest trasowany, przez routery i nie stanowi przedmiotu tej rozprawy, więc na przekątnej macierzy warunków początkowych występują wartości zerowe. Przyjmijmy następujące oznaczenia łączy i wartości ich nominalnych przepustowości (w Mb/s): • e1 dla S1 – R1, π 1 = 100 • e2 dla S1 – R2, π 2 = 50 • e3 dla S2 – R2, π 3 = 50 • e4 dla S2 – R3, π 4 = 100 • e5 dla S3 – R1, π 5 = 100 • e6 dla S3 – R2, π 6 = 100 • e7 dla S3 – R3, π 7 = 100 • e8 dla S4 – R1, π 8 = 100 • e9 dla S4 – R3, π 9 = 50 Dodatkowo przyjęto, że wszystkie routery posiadają taką samą moc obliczeniową oraz zasoby systemowe, natomiast interfejsy używane do połączenia sieci z routerami działają w sposób niezawodny przez cały czas trwania wymiany informacji pomiędzy sieciami. W celu lepszej organizacji obliczeń, na początku wyznaczone zostaną wszystkie (acykliczne) trasy wraz z ich kosztami dla komunikujących się ze sobą sieci. Przypiszmy następujące numery dla poszczególnych komunikujących się par sieci. Dla S1 z S2, k=1; dla S1 z S3, k=2; dla S2 z S4, k=3. - 101 - Oraz oznaczenie cqk jako koszt trasy t qk (b) . Wówczas z zachowaniem wcześniej przyjętych oznaczeń, trasy oraz ich koszty przedstawiają się następująco: Oto trasy oraz ich koszty dla pary sieć 1 – sieć 2, tj. k=1: t11 (b) =(e2, e3) ; c11 = 4 t 21 (b) =(e1, e5, e7, e4) ; c12 = 4 t 31 (b) =(e2, e6, e7, e4) ; c31 = 5 t 14 (b) =(e1, e5, e6, e3) ; c14 = 5 t 51 (b) =(e1, e8, e9, e4) ; c51 = 5 t 61 (b) =(e2, e6, e5, e8, e9, e4) ; c16 = 8 t 71 (b) =(e1, e8, e9, e7, e6, e3) ; c17 = 8 Oto trasy oraz ich koszty dla pary sieć 1 – sieć 3, tj. k=2: t12 (b) =(e1, e5) ; c12 = 2 t 22 (b) =(e2, e6) ; c 22 = 3 t 32 (b) =(e1, e8, e9, e7) ; c32 = 5 t 42 (b) =(e2, e3, e4, e7) ; c 42 = 6 t 52 (b) =(e1, e8, e9, e4, e3, e6) ; c52 = 8 t 62 (b) =(e2, e3, e4, e9, e8, e5) ; c62 = 9 Oto trasy oraz ich koszty dla pary sieć 2 – sieć 4, tj. i=3: t13 (b) =(e4, e9) ; c13 = 3 t 23 (b) =(e4, e7, e5, e8) ; c 23 = 4 t 33 (b) =(e3, e6, e5, e8) ; c33 = 5 t 43 (b) =(e3, e6, e7, e9) ; c 43 = 6 t 53 (b) =(e3, e2, e1, e8) ; c53 = 6 t 63 (b) =(e4, e7, e6, e2, e1, e8) ; c63 = 7 t 73 (b) =(e3, e2, e1, e5, e7, e9) ; c73 = 9 - 102 - 3.5.2 Obliczenia Na wstępie należy wyjaśnić, że różne komunikujące się pary sieci wymieniają różne ilości danych z wykorzystaniem różnych tras, dlatego niektóre z nich kończą komunikację wcześniej niż pozostałe. Zaprzestanie komunikacji przez jedną parę sieci może mieć wpływ na szybkość komunikacji między pozostałymi sieciami. W związku z powyższym należy obliczenia podzielić na fazy w taki sposób, że w danej fazie liczba komunikujących się ze sobą par nie ulega zmianie. Dodatkowo warto wspomnieć, że dla potrzeb poniższych obliczeń wszystkie trasy zostały wyznaczone „ręcznie”, natomiast w warunkach rzeczywistych działanie takie przeprowadza protokół OSPF. Przechodząc do obliczeń otrzymujemy. Dla beta równego 0 (brak równoważenia obciążenia) Komunikacja pomiędzy sieciami odbywa się na następujących trasach: t11 (0) =(e2, e3); t12 (0) =(e1, e5); t13 (0) =(e4, e9) Nominalne przepustowości wykorzystywanych łączy wynoszą w Mb/s: π 1 = 100 ; π 2 = 50 ; π 3 = 50 ; π 4 = 100 ; π 5 = 100 ; π 9 = 50 Liczby tras wykorzystujące poszczególne łącza wynoszą. λ1 (0) =1 ; λ2 (0) =1 ; λ3 (0) =1 ; λ4 (0) =1 ; λ5 (0) =1 ; λ9 (0) =1 Efektywne przepustowości poszczególnych łączy wynoszą (w Mb/s): Q1 (0) =100; Q2 (0) =50; Q3 (0) =50; Q4 (0) =100; Q5 (0) =100; Q9 (0) =50 Efektywne przepustowości najwolniejszych łączy dla poszczególnych tras wynoszą. ^ Ψ (1,1,0) = min(50 ; 50) = 50 ^ Ψ (2,1,0) = min(100 ; 100) = 100 ^ Ψ (3,1,0) = min(100 ; 50) = 50 Przepustowości komunikacji dla poszczególnych par sieci wynoszą. - 103 - 1 ^ Ψ1* (0) = ∑ Ψ (1, q,0) = 50 [Mb/s] ; q =1 1 ^ Ψ2* (0) = ∑ Ψ (2, q,0) = 100 [Mb/s] ; q =1 1 ^ Ψ3* (0) = ∑ Ψ (3, q,0) = 50 [Mb/s] ; q =1 Przepustowość środowiska sieciowego dla zadanych warunków początkowych wynosi. 3 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 50 + 100 + 50 = 200 [Mb/s] k =1 q =1 Czasy komunikacji dla poszczególnych par sieci wynoszą. t1 = 200/50 = 4 [s] ; t2 = 300/100 = 3 [s] ; t3 = 400/50 = 8 [s] Po zsumowaniu dostajemy łączny czas komunikacji równy 4+3+8=15[s] Ponieważ wszystkie trasy są rozłączne (brak łączy wykorzystywanych przez więcej niż jedną trasę), więc zakończenie komunikacji pomiędzy dowolną parą sieci nie wpływa na szybkość komunikacji innej pary. Dla beta równego 0 (równoważenie obciążenia typu RK) Postępując analogicznie jak w przypadku poprzednim otrzymano następujące wyniki. 3 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 50 + 100 + 50 = 200 [Mb/s] k =1 q =1 t1 = 200/100 = 2 [s] – po tym czasie komunikacja sieci pierwszej z drugą ustaje. W czasie dwóch sekund sieć pierwsza wymieni z siecią trzecią 2[s] * 50 [Mb/s] = 100 [Mb] danych, do przesłania pozostanie jeszcze 300 – 100 = 200 [Mb], analogicznie sieć druga wymieni z siecią czwartą 2 * 50 = 100 [Mb] danych, do przesłania pozostanie jeszcze 400 – 100 = 300 [Mb]. Ponieważ wymiana danych pomiędzy sieciami pierwszą i drugą zakończyła się, dlatego warunki panujące w środowisku sieciowym uległy zmianie (część łączy została odciążona). Powyższe obliczenia należy powtórzyć dla nowych warunków początkowych tj. sieć pierwsza wymienia z siecią trzecią 200 [Mb], zaś sieć druga wymienia z siecią czwartą 300 [Mb]. W konsekwencji otrzymano: 2 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 100 + 50 = 150 [Mb/s] k =1 q =1 - 104 - t2 = 200/100 = 2 [s] ; t3 = 300/50 = 6 [s] Ponieważ wszystkie trasy są rozłączne (brak łączy wykorzystywanych przez więcej niż jedną trasę), więc zakończenie komunikacji pomiędzy dowolną parą sieci nie wpływa na szybkość komunikacji innej pary. Całkowite czasy wymiany informacji wynoszą: t1 = 2 [s] ; t2 = 2+2 = 4 [s] ; t3 = 2+6 = 8 [s] Po zsumowaniu dostajemy łączny czas komunikacji równy 2+4+8=14 [s] Dla beta równego 2 (równoważenie obciążenia typu NK) występują następujące trasy: t11 (2) =(e2, e3) ; t 21 (2) =(e1, e5, e7, e4) – ponieważ z sieci numer 1 prowadzą dwa interfejsy wyjściowe, dlatego dodanie większej liczby tras (w przypadku przeciążenia obydwu interfejsów) nie jest rozwiązaniem zalecanym. t12 (2) =(e1, e5) ; t 22 (2) =(e2, e6) – ograniczenie liczby tras wynika z liczby interfejsów (jak wyżej). t13 (2) =(e4, e9) ; t 33 (2) =(e3, e6, e5, e8) - pomimo, że istnieje trasa o niższym koszcie tj. t 23 (2) =(e4, e7, e5, e8), c 23 = 4, nie jest ona zalecana ponieważ prowadzi przez ten sam interfejs wyjściowy co trasa optymalna o koszcie c13 = 3 czyli t13 (2) =(e4, e9). Podczas powyższych obliczeń przyjęto, że liczba przeciążonych interfejsów wynosi dwa – routery pracują w warunkach maksymalnego obciążenia. W pierwszej fazie komunikacji otrzymano: 3 2 ^ Ψ (2) = ∑∑ Ψ (k , q,2) = 58.33 + 58.33 + 75 = 191.66 k =1 q =1 t1 = 200/58.33 = 3.43 [s] W czasie 3.43 sekundy, pierwszej fazy komunikacji, sieć pierwsza wymieni z siecią trzecią 3.43 [s] * 58.33 [Mb/s] = 200 [Mb] danych, do przesłania pozostanie jeszcze 300 – 200 = 100 [Mb], analogicznie sieć druga wymieni z siecią czwartą 3.43 * 75 = 257.25 [Mb] danych, do przesłania pozostanie jeszcze 400 – 257.25 = 142.75 [Mb]. Ponieważ wymiana danych pomiędzy sieciami pierwszą i drugą zakończyła się, więc warunki panujące w środowisku sieciowym uległy zmianie (część łączy została odciążona). Powyższe obliczenia należy powtórzyć dla nowych warunków początkowych tj. sieć pierwsza wymienia z siecią trzecią 100 [Mb], zaś sieć druga wymienia z siecią czwartą 142.75 [Mb]. W drugim etapie otrzymano: - 105 - 2 2 ^ Ψ (2) = ∑∑ Ψ (k , q,2) = 100 + 100 = 200 k =1 q =1 t2 = 100/100 = 1 [s] W czasie jednej sekundy sieć druga wymieni z siecią czwartą 1 [s] * 100 [Mb/s] = 100 [Mb] danych, do przesłania pozostanie jeszcze 142.75 – 100 = 42.75 [Mb]. Powyższe obliczenia należy powtórzyć dla nowych warunków początkowych tj. sieć druga wymienia z siecią czwartą 42.75 [Mb]. W trzeciej fazie otrzymano: 1 2 ^ Ψ (2) = ∑∑ Ψ (k , q,2) = 150 [Mb/s] k =1 q =1 t3 = 42.75/100 = 0.4275 [s] Całkowite czasy wymiany informacji wynoszą: t1 = 3.43 [s] ; t2 = 3.43+1 = 4.43 [s] ; t3 = 3.43+1+0.4275 = 4.8575 [s] Po zsumowaniu dostajemy łączny czas komunikacji równy 3.43+4.43+4.8575=12.7175 [s] Dodatkowo w celu wykazania słuszności stwierdzenia, że dodanie kolejnej trasy prowadzącej przez ten sam interfejs wyjściowy, co już istniejąca trasa, nie prowadzi do skrócenia czasów komunikujących się sieci, zostały wykonane następujące obliczenia. Dla beta równego 3 otrzymano: 3 3 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 45.83 + 47.5 + 54.16 = 147.5 (faza pierwsza) k =1 q =1 t1 = 4.36 [s] ; t2 = 4.36[s] ; t3 = 4.36[s] 2 3 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 79.16 + 79.16 = 158.32 (faza druga) k =1 q =1 t2 = 0.8 [s] ; t3 = 0.8[s] 1 3 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 150 (faza trzecia) k =1 q =1 t2 =0.2[s] Całkowite czasy wymiany informacji wynoszą: t1= 4.36 [s] ; t2 = 4.36+0.8+0.2 = 5.36 [s] ; t3 = 4.36+0.8 = 5.16 [s] Po zsumowaniu dostajemy łączny czas komunikacji równy 4.36+5.36+5.16=14.88 [s] - 106 - 3.5.3 Symulacja Dodatkowo względem przeprowadzonych badań i z wykorzystaniem arkusza kalkulacyjnego została przeprowadzona symulacja działania algorytmu 3 tj. służącego do wyznaczania Ψ(b). Do symulacji użyto funkcji solvera wbudowanego w arkusz kalkulacyjny MS Excel 2000 i polegała ona na zaimplementowaniu we wspomnianym arkuszu wzmiankowanego algorytmu i wyznaczeniu wartości Ψ(b) dla topologii przedstawionej na rys. 3.2. Wyniki symulacji przeprowadzonej przy pomocy arkusza kalkulacyjnego wykazały, że minimalny łączny czas komunikacji wynosi 13.01 sekundy (t1 = 3.43 [s] ; t2 = 4.43 [s] ; t3 = 5.15 [s]). Poniżej znajdują się otrzymane wyniki. Dla pary i=1: t11 (b) =(e2, e3) i c11 = 4 ; t 21 (b) =(e1, e5, e7, e4) i c12 = 4 Dla pary i=2: t12 (b) =(e1, e5) i c12 = 2 ; t 22 (b) =(e2, e6) ; c 22 = 3 Dla pary i=3: t13 (b) =(e4, e9) ; c13 = 3 ; t 23 (b) =(e4, e7, e5, e8) ; c 23 = 4 Parametry beta wynosiły odpowiednio: b=[1; 2; 1.4]T. Przepustowość środowiska sieciowego wyniosła Ψ(b) = 183.33 Mb/s. Należy zaznaczyć, że możliwym jest uzyskanie Ψ(b) = 200 Mb/s, lecz wówczas łączny sumacyjny czas komunikacji jest dłuższy niż 13.01 sekundy i wynosi 14 [s]. Natomiast ze względu na to, że ruch charakteryzował się tym, że łącza były maksymalne obciążenie, liczba przeciążonych interfejsów przyjmowała wartość maksymalną tj. 2. Należy zauważyć, że wynik uzyskany podczas symulacji jest gorszy od wyniku uzyskanego w etapie trzecim, gdzie sumacyjny czas komunikacji wyniósł 12.71 [s]. Zjawisko to można wytłumaczyć tym, że podczas symulacji, przy komunikacji sieci drugiej z czwartą jako trasa alternatywna została wybrana trasa o koszcie 4 prowadząca przez ten sam interfejs wyjściowy, co trasa optymalna. W odróżnieniu od symulacji podczas obliczeń przeprowadzonych w etapie trzecim tego rozdziału w analogicznej sytuacji wybrana została trasa o koszcie 5, lecz prowadząca przez inny interfejs wyjściowy niż trasa o koszcie optymalnym. Na podstawie powyższej obserwacji można wywnioskować, że przy zbliżonych kosztach (4 i 5) krótszy czas komunikacji uzyskuje się przesyłając dane przez trasę o wyższym koszcie, lecz prowadzącą przez nie przeciążony interfejs. W celu jak najpełniejszego przedstawienia badanego zagadnienia, warto odnieść się do warunków ograniczających. Warunkiem ograniczającym szybkość wymiany informacji - 107 - pomiędzy dwoma sieciami jest wartość przepływu minimalnego przekroju (3.37) pomiędzy tymi sieciami. W przedstawionym przykładzie środowiska sieciowego ograniczenia przepustowości dla przekrojów minimalnych (definicja 3.1) wynoszą odpowiednio: Dla pary sieci k=1 Ψ1max = 150 Mb/s. Dla pary sieci k=2 Ψ2max = 150 Mb/s Dla pary sieci k=3 Ψ3max = 150 Mb/s Przy założeniu jednoczesnej komunikacji oraz po uwzględnieniu nakładających się tras (trasy do dwóch sieci prowadzą przez ten sam przekrój) wartości przekrojów minimalnych wynoszą: Dla pary sieci k=1, Ψ1max = 75 Mb/s. Dla pary sieci k=2, Ψ2max = 75 Mb/s Dla pary sieci k=3, Ψ3max = 75 Mb/s Podsumowując, maksymalne przepustowości dla poszczególnych par sieci wynoszą: Ψ1max = 75 Mb/s, Ψ2max = 75 Mb/s, Ψ3max = 75 Mb/s. W rezultacie maksymalna przepustowość środowiska sieciowego (definicja 3.2.) wynosi Ψmax = 75+75+75 = 225 Mb/s. W miejscu tym należy dodać, że możliwym jest np. zwiększenie wartości maksymalnej przepustowości jednej pary sieci kosztem innej pary (sytuacja taka ma miejsce np. przy asymetrycznym ruchu sieciowym), lecz w efekcie maksymalna wartość przepustowości środowiska sieciowego tak nie ulegnie zmianie (zmienią się wartości składników sumy nie zaś jej wartość końcowa). 3.6 Inne przykłady Głównym celem tego podrozdziału jest wykazanie (na wybranych przykładach), że włączenie równoważenia obciążenia typu NK może prowadzić do wzrostu przepustowości oraz tego, że wykorzystanie jednocześnie zbyt wielu tras może prowadzić do efektu odwrotnego, a mianowicie spadku przepustowości. Wspomniane przepustowości zostały wyliczone dla kilku przykładowych i często stosowanych topologii sieciowych. W tym miejscu należy stwierdzić, że nie istnieje coś takiego jak „ogólna topologia sieciowa”, dlatego wszelkie działania są wykonywane na pewnych konkretnych i praktycznych przykładach. Przepustowości zostały policzone dla z góry zadanych warunków początkowych i przy założeniu równomiernego dostępu do współdzielonych łączy. Dla każdej z topologii zostaną wykonane trzy obliczenia: • bez równoważenie obciążenia; - 108 - W • z równoważeniem obciążenia typu RK; • z równoważeniem obciążenia typu NK. celu skonkretyzowania rozważanych przypadków, sieci komputerowe zostały przedstawione jako pojedyncze hosty wymieniające dane między sobą. Warto także dodać, że pierwszy z rozważanych przypadków uwzględnia jedną parę komunikujących się węzłów pozostałe zaś większą liczbę par. Pierwsza z rozważanych topologii jest przedstawiona na rys. 3.5. Przyjęto, że H1 wymienia z H2 200 Mb danych. Postępując w sposób analogiczny jak dla środowiska z rys. 3.2, otrzymano następujące wartości przepustowości oraz czasów trwania transmisji danych. Rys. 3.5. Czwarty przykład topologii sieci komputerowej. Przepustowości łączy wynosza odpowiednio (Mb/s): π 1 = 100 ; π 2 = 100 ; π 3 = 50 ; π 4 = 100 ; π 5 = 50 ; π 6 = 50 . Bez włączonego równoważenia obciążenia. 1 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 50 ; sumacyjny czas komunikacji wynosi 4 [s]. k =1 q =1 Z włączonym równoważeniem obciążenia typu RK 1 2 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 150 ; sumacyjny czas komunikacji wynosi 1.333 [s]. k =1 q =1 Z włączonym równoważeniem obciążenia typu NK (na trzech trasach). 1 3 ^ Ψ (2) = ∑∑ Ψ (k , q,2) = 200 00; sumacyjny czas komunikacji wynosi 1 [s]. k =1 q =1 Z włączonym równoważeniem obciążenia typu NK (na czterech trasach) - 109 - 1 4 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 200 ; sumacyjny czas komunikacji wynosi 1 [s]. k =1 q =1 W miejscu tym warto zauważyć, że trasa t 41 (3) =(e1, e6, e4) prowadzi przez ten sam interfejs wyjściowy routera R1, co trasa t 31 (3) =(e1, e3). W sytuacji przeciążenia tego interfejsu, jej dodawanie jest zbędne i nie przyniesie oczekiwanych rezultatów. Obliczenia przeprowadzone dla równoważenia obciążenia typu NK (na czterech trasach), zostały wykonane w celu wykazania braku skrócenia czasu przesyłania danych w sytuacji, kiedy dodawana jest trasa prowadząca przez przeciążony interfejs. Dla włączonego równoważenia obciążenia typu NK (na pięciu trasach) otrzymujemy: 1 4 ^ Ψ (4) = ∑∑ Ψ (k , q,4) = 175 ; sumacyjny czas komunikacji wynosi 1.143 [s]. k =1 q =1 Przejdźmy teraz do drugiej topologii przedstawionej na Rys. 3.6. Rys. 3..6. Piąty przykład topologii sieci komputerowej. Przepustowości łączy wynosza odpowiednio (Mb/s): π 1 = 100 ; π 2 = 100 ; π 3 = 50 ; π 4 = 100 ; π 5 = 50 . - 110 - Zakładamy, że H1 komunikuje się z H2 - para k=1, a H3 z H4 - para k=2. Obydwie pary wymieniają między sobą po 200 Mb danych. Prowadząc rozważania analogiczne do poprzednich otrzymujemy następujące wyniki: Bez włączonego równoważenia obciążenia. 2 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 50 + 100 = 150 ; sumacyjny czas komunikacji wynosi 4 + 2 = 6 [s]. k =1 q =1 Z włączonym równoważeniem obciążenia typu RK 2 2 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 50 + 100 = 150 (dla etapu pierwszego); k =1 q =1 1 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 100 (dla etapu drugiego) k =1 q =1 sumacyjny czas komunikacji wynosi 2+3=5 [s] Z włączonym równoważeniem obciążenia typu NK (po dwie trasy dla każdej z par hostów) 2 2 ^ Ψ (2) = ∑∑ Ψ (k , q,2) = 100 + 100 = 200 ; sumacyjny czas komunikacji wynosi 2+2=4 [s]. k =1 q =1 Z włączonym równoważeniem obciążenia typu NK (po trzy trasy dla każdej z par hostów) Jest to rozwiązanie nie zalecane. Trasa t 32 =(e1, e5, e4) prowadzi przez ten sam interfejs wyjściowy routera R2, co trasa t12 =(e1, e2). 2 3 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 83.33 + 83.33 = 166.66 ; k =1 q =1 sumacyjny czas komunikacji wynosi 2.4 + 2.4 = 4.8 [s]. Z włączonym równoważeniem obciążenia typu NK (trzy trasy dla pary hostów 1 i 2, oraz cztery trasy dla pary hostów 3 i 4) Analogicznie jak poprzednie, rozwiązanie to jest nie zalecane. 2 4 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 66.66 + 83.33 = 150 (dla etapu pierwszegi); k =1 q =1 1 3 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 200 (dla etapu drugiego) k =1 q =1 sumacyjny czas komunikacji wynosi 2.6 +2.4 = 5 [s]. - 111 - Poniżej zostały przedstawione rozważania dla trzeciej topologii przedstawionej na Rys. 3.7. Tak jak w poprzednim przypadku, H1 komunikuje się z H2- para k=1, a H3 z H4 – para k=2. Obie pary wymieniają po 200 Mb danych. Rys. 3.7. Szósty przykład topologii sieci komputerowej. Przepustowości łączy wynosza odpowiednio (Mb/s): π 1 = 100 ; π 2 = 100 ; π 3 = 50 ; π 4 = 100 ; π 5 = 50 ; π 6 = 50 . Otrzymano następujące wyniki: Bez włączonego równoważenia obciążenia. 2 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 50 + 50 = 100 ; sumacyjny czas komunikacji wynosi 4 + 4 = 8 [s]. k =1 q =1 Z włączonym równoważeniem obciążenia typu RK 2 2 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 100 + 50 = 150 (dla etapu pierwszego); k =1 q =1 1 2 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 100 (dla etapu drugiego) k =1 q =1 sumacyjny czas komunikacji wynosi 2 + 3 = 5 [s] Z włączonym równoważeniem obciążenia typu NK (po trzy trasy dla każdej z par hostów) - 112 - 2 3 ^ Ψ (3) = ∑∑ Ψ (k , q,3) = 125 + 125 = 250 ; sumacyjny czas komunikacji wynosi 1.6+1.6=3.2 k =1 q =1 [s]. Z włączonym równoważeniem obciążenia typu NK (po cztery trasy dla każdej z par hostów) 2 4 ^ Ψ (4) = ∑∑ Ψ (k , q,4) = 100 + 125 = 225 (dla etapu pierwszego); k =1 q =1 1 4 ^ Ψ (4) = ∑∑ Ψ (k , q,4) = 200 (dla etapu drugiego) k =1 q =1 sumacyjny czas komunikacji wynosi 1.8 + 1.6 = 3.4 [s]. Z włączonym równoważeniem obciążenia typu NK (na cztery i pięciu trasach) 2 5 ^ Ψ (4) = ∑∑ Ψ (k , q,4) = 100 + 91.2 = 191.2 (dla etapu pierwszego); k =1 q =1 1 3 ^ Ψ (4) = ∑∑ Ψ (k , q,4) = 250 (dla etapu drugiego) k =1 q =1 sumacyjny czas komunikacji wynosi 2.0704 + 2 = 4.0704 [s]. Zestawienie obliczonych czasów przesyłania informacji znajduje się w poniższej tabeli. Tabela 3.1. Zbiorcze zestawienie obliczonych sumacyjnych czasów komunikacji. Topologia z rys. 3.4 Topologia z rys. 3.5 Topologia z rys. 3.6 Bez LB Z LB RK 4 Z LB NK Z LB NK Z LB NK Z LB NK (2 trasy) (3 trasy) (4 trasy) (5 tras) 1.333 - 1 1 1.143 6 5 4 4.8 5 - 8 5 - 3.2 3.4 4.0704 Wniosek z przeprowadzonych obliczeń może być następujący: odpowiednie stosowanie równoważenia obciążenia typu NK jest zasadne i prowadzi do wzrostu przepustowości, lecz liczba tras, na jakie kierowany powinien być ruch sieciowy jest zależna od konkretnego przypadku – topologii oraz charakterystyki ruchu sieciowego. Wykazanie zasadności stosowania tego typu równoważenia znajduje się również w dalszej części tej pracy, - 113 - natomiast w tym miejscu należy zauważyć, dla dowolnej topologii sieciowej nie udało się wykazać celowości stosowania równoważenia typu NK, (bo i nie taki był cel tego podrozdziału). Mając na uwadze powyższe względy, w niniejszym rozdziale posłużono się pewnymi konkretnymi, lecz często występującymi w zastosowaniach praktycznych przypadkami (topologiami). Więcej informacji na temat różnego rodzaju algorytmów znajduje się np. w [6] [21] [22]. - 114 - Rozdział 4. Optymalizacja przepustowości środowiska sieciowego z zastosowaniem metody symulowanego wyżarzania Rozdział ten zawiera ogólne informacje o metodzie symulowanego wyżarzania, a także dokładny opis optymalizacji przepustowości środowiska sieciowego z zastosowaniem tej metody, oraz analizę jej złożoności obliczeniowej. Część informacji ogólnych została zaczerpnięta z [93]. Użycie powyższej metody wymagało wprowadzenia do niej pewnych zmian. Zmiany te mają na celu dostosowanie algorytmu symulowanego wyżarzania do potrzeb oraz specyfiki badanego zagadnienia i zostały szczegółowo opisane w dalszej części rozdziału. Rozdział zawiera także logiczny schemat przepływu informacji pomiędzy algorytmami obrazujący zasadę działania rozwiązania zaproponowanego w tej pracy. Dodatkowo znajdują się w nim precyzyjne opisy scenariuszy przeprowadzonych badań. Zakończenie rozdziału zawiera zwięzłe podsumowanie poruszanych w nim zagadnień. Zanim jednak poruszona zostanie tematyka zastosowanej metody badawczej, warto dokładniej przedstawić problem, jakim jest wyznaczanie tras o nierównym koszcie oraz uzasadnić jego znaczenie. Oczywistym jest, że w średnich i dużych sieciach występuje znaczna liczba tras łączących dwa dowolne routery. W takiej sytuacji nasuwa się dość naturalne pytanie, którymi trasami powinna odbywać się komunikacja i jak trasy te wybierać? Odpowiedź na tak postawione pytanie nie jest łatwa, tym bardziej, że warunki panujące w sieciach zmieniają się dynamicznie, a par komunikujących się węzłów jest wiele. Ponadto występują inne związane z tym zagadnieniem problemy takie jak: uszkodzenia łączy, interfejsów, lub awarie całych routerów, zmiany w natężeniu ruchu sieciowego, konieczność zagwarantowania określonych przepustowości dla pewnych usług itp. Ponadto złe dobranie tras typu NK może wywołać efekty zgoła odmienne od oczekiwanych i być przyczyną tworzenia się zatorów w sieciach, co bezpośrednio przekłada się na jakość usług świadczonych przez ich dostawców oraz poziom frustracji odbiorców tych usług. Omawiany problem staje się tym trudniejszy im sieć jest bardziej rozległa. O ile w małych sieciach można wyznaczyć optymalny zbiór tras dla danych par routerów (lub sieci) o tyle w średnich i dużych sieciach omawiane zagadnienie staje się zbyt złożone. W takich przypadkach zastosowanie dokładnych metod analitycznych jest nieefektywne z powodu zbyt długiego (nierzeczywistego) czasu ich działania. Powstaje za tym potrzeba zastosowania innych metod umożliwiających wyznaczenie rozwiązań, jeśli nie optymalnych to, chociaż zbliżonych do nich na tyle, żeby metodę uznać za efektywną i, co nie mniej istotne, działającą w czasie - 115 - rzeczywistym. Moją propozycją rozwiązania omawianego problemu jest zastosowanie zmodyfikowanej metody symulowanego wyżarzania. Metoda ta działa w czasie rzeczywistym, a otrzymane przeze mnie wyniki nie różnią się znacznie od wyników otrzymanych z zastosowaniem metody dokładnej (Simplex). Warto dodać, że wybór tej metody był podyktowany po pierwsze szybkością jej działania, po drugie jakością uzyskiwanych rozwiązań suboptymalnych. Po dokonaniu porównania wartości przepustowości uzyskanych z zastosowaniem metody dokładnej i SW, nasuwa się następujący wniosek. Uzyskane rozwiązania suboptymalne są na tyle zbliżone do optymalnych, że niewątpliwie należy je uznać z zadowalające. Wszystko, co zostało powyżej przedstawione świadczy, że omawiany problem nie jest błahy i ma istotne znaczenie praktyczne dla wydajności przesyłania informacji w sieciach komputerowych. Wykorzystanie tras alternatywnych (o kosztach większych od optymalnego) może prowadzić do zwielokrotnienia prędkości transmisji, lecz jeśli tras będzie zbyt wiele prędkość ta może ulec znacznemu zmniejszeniu, co zostało wykazane w rozdziale 3. Reasumując warto stwierdzić, że równoważenie obciążenia typu NK jest zagadnieniem ciekawym i nietrywialnym. 4.1 Szczegółowy opis metody badawczej Metoda symulowanego wyżarzania zawdzięcza swoja nazwę zjawisku fizycznemu, które polega na stopniowym schładzaniu ciała będącego początkowo w postaci płynnej, aż do jego zestalenia. Dobrym przykładem takiego procesu jest wytapianie żelaza. W tym miejscu warto wspomnieć, że inspiracją do powstania takiej metody był proces technologiczny stosowany w metalurgii i hutnictwie. Wyżarzanie natomiast należy rozumieć jako operację obróbki termicznej polegającą na wstępnym nagrzaniu przedmiotu z metalu lub stopu metali do określonej temperatury, wygrzaniu go w tej temperaturze i schłodzeniu z ustaloną szybkością pozwalającą na utrzymanie struktury metalu w określonym stopniu zbliżonym do stanu równowagi. Będąc w stanie płynnym cząstki metalu mają możliwość dość swobodnego poruszania się, natomiast wraz ze spadkiem temperatury ich energia kinetyczna, a więc zdolność przemieszczania, zmniejsza się. W momencie zestalenia powstaje tzw. sieć krystaliczna, a ruch cząstek niemalże ustaje – ciało wchodzi w stan równowagi termodynamicznej. W stygnącej cieczy poruszające się cząstki metalu szukają „swojego miejsca”, czyli dążą do stworzenia takiej struktury, w której energia wewnętrzna całego ciała jest jak najmniejsza. To, jaką strukturę wewnętrzną, (w jakim stopniu uporządkowaną) - 116 - zbudują cząstki zależy od temperatury początkowej i końcowej, a także od szybkości oraz sposobu schładzania. Główna idea omawianej metody polega na zastosowaniu rozwiązań występujących w procesach technologicznych do rozwiązania innych problemów, w tym także optymalizacyjnych. Dobór właściwego miejsca dla cząstek w całej strukturze może być traktowany jako swoista optymalizacja. Powstaje pytanie jak dostosować tę metodę do problemów optymalizacyjnych. Można tego dokonać poprzez następujące analogie: minimum globalne – stan o minimalnej energii, iteracja algorytmu (przekształcenie lokalne) – ruch cząstki, funkcja celu (oceny) – energia układu, otrzymane rozwiązanie – bieżący stan układu termodynamicznego. Dodatkowo wprowadza się zamiast stałej Boltzmana (pełniącej rolę współczynnika proporcjonalności pomiędzy średnią energią cząstki i temperaturą bezwzględną) oraz temperatury bezwzględnej, odpowiedni parametr służący dostrojeniu algorytmu do określonego zadania. W tym miejscu warto wspomnieć, jaka jest rola tego parametru (zwanego dalej temperaturą) w procesie wyżarzania. Dobierając odpowiednią jego wartość (większą od zera) ustala się zakres tolerancji dla zaakceptowania gorszego rozwiązania (w sensie wartości przyjętej funkcji oceny) powstałego w kolejnej iteracji algorytmu. To właśnie ta tolerancja umożliwia algorytmowi opuszczenie ekstremum lokalnego w celu wyszukania ekstremum globalnego, co niewątpliwie jest jego dużą zaletą. Kontynuując rozważania nad zastosowaniem algorytmu do zadań optymalizacyjnych warto omówić kwestie takie jak warunki startowe oraz schematy schładzania. Jeśli chodzi o kwestię pierwszą, to powszechnie uważa się, że algorytm ten należy stosować w powiązaniu z tzw. wielostartem, gdyż otrzymany wynik końcowy jest zależny od wartości początkowych oraz prawdopodobieństwa wylosowania dobrego rozwiązania. Wspomniany wielostart należy rozumieć jako wielokrotne uruchamianie algorytmu z różnymi wartościami początkowymi. Najczęściej stosuje się jeden z trzech następujących schematów: • logarytmiczny (Boltzmana): T(k) = Tp * 1/log(k); • liniowy (Cauchy’ego): T(k) = Tp * 1/k; • geometryczny T(k)= Tp * ak, gdzie 0<a<1. gdzie: Tp – temperatura początkowa, T(k) – temperatura w k-tej iteracji algorytmu, a – podstawa funkcji wykładniczej. Schemat logarytmiczny (w odróżnieniu od pozostałych) przy pewnych naturalnych założeniach gwarantuje w dostatecznie długim czasie, znalezienie optimum globalnego z prawdopodobieństwem jeden. Gwarancja ta w znacznej mierze polega na zapewnieniu - 117 - dostatecznie długiego czasu pracy algorytmu Jednak średni czas potrzebny na jego wyszukanie jest porównywalny z rozmiarem przestrzeni rozwiązań. Rozmiar ten zależy między innymi od problemu, do rozwiązania, którego metoda została użyta. Reasumując schemat ten ma małe zastosowanie praktyczne gdyż jest zbyt wolny. Z kolei badania empiryczne sugerują, że największą przydatność praktyczną ma schemat geometryczny (najszybszy). Omawiając metodę symulowanego wyżarzania warto jeszcze wspomnieć o warunkach zatrzymania algorytmu. Warunków tych może być kilka i mogą one występować łącznie lub rozdzielnie. Pierwszym jest osiągnięcie wcześniej założonej temperatury końcowej. Drugim - przekroczenie limitu czasu pracy algorytmu lub założonej liczby iteracji. Kolejnym warunkiem jest osiągnięcie stanu równowagi termodynamicznej dla bieżącej temperatury – jest to warunek uznany za mało przydatny w praktycznych zastosowaniach. Przed przystąpieniem do przedstawienia ogólnego schematu algorytmu symulowanego wyżarzania przyjmijmy następujące oznaczenia: „x” – zmienna decyzyjna ze zbioru wartości dopuszczalnych „S”; φ(x) – wartość funkcji energii dla zmiennej decyzyjnej „x”; k – numer iteracji algorytmu; kmax – maksymalna liczba iteracji algorytmu; T(0) – temperatura początkowa (w zerowej iteracji); T(k) – temperatura w k-tej iteracji algorytmu; Tmin – temperatura minimalna po osiągnięciu której algorytm kończy działanie; W przedstawianym poniżej algorytmie minimalizowana jest wartość funkcji energii, co można zapisać jako: minφ(x) (4.1) Warto także dodać, że w algorytmie tym występują zmienne, których wartości zmieniają się w przedstawionych poniżej zakresach. 1 ≤ k ≤ kmax (4.2) Tmin ≤ T (k ) ≤ T (0) (4.3) Dodatkowo należy zaznaczyć, algorytm 4 jest narzędziem cechującym się dużą „elastycznością” tj. szerokimi możliwościami zastosowania, co niewątpliwie stanowi jego dużą zaletę. Oprócz niewątpliwych zalet algorytm ten posiada także wady, a jedną z nich jest brak gwarancji, że znalezione ekstremum jest globalne. W konsekwencji należy przyjąć, że w - 118 - przedstawionym powyżej zadaniu znajdowane jest ekstremum lokalne – jednak w praktycznych zastosowaniach rozwiązanie takie często uważane jest za satysfakcjonujące. Precyzyjne sformułowanie adekwatnego zadania optymalizacji w odniesieniu do maksymalizacji przepustowości sieci komputerowych znajduje się w dalszej części tego rozdziału. Przechodząc do omówienia algorytmu SW, dodatkowo przyjęto następujące oznaczenia: random – warość losowa o rozkładzie jednostajnym z przedziału <0,1>; φ* – najmniejsza wartość funkcji energii. x0 – wartość początkowa zmiennej decyzyjnej należącej do zbioru S; x* - zmienna decyzyjna ze zbioru wartości dopuszczalnych „S”, dla której wartość funkcji energii przyjmuje wartość najmniejszą; Oraz definicję funkcji * p(φ(x), φ , T) = exp(− φ * − φ ( x) T ); W zapisie algorytmu SW występuje także reguła RM(φ(x), φ*, T). Jest to tzw. reguła akceptacji Metropolisa [93][98][99], dodatkowo opisana w rozdz. 4.2, i sformułowana następująco: Begin RM(φ(x), φ*, T) if random ≤ p(φ(x), φ*, T) THEN RM ←TRUE else RM ← FALSE end if end Poniżej został zamieszczony ogólny schemat algorytmu symulowanego wyżarzania. Algorytm 4 Begin Symulowane_wyżarzanie(T(0), x0, S, kmax) T ←T(0); k ← 0; x* ← x0; wyznacz φ(x0); - 119 - φ*←φ(x0); repeat x ← losowy element z S; wyznacz φ(x); if (φ(x); <= φ*) THEN φ*← φ(x); x* ← x; else if RM(φ(x), φ*, T) TRUE THEN φ*← φ(x); x* ← x; end if end if k ← k+1; T ← T(k); until (T > Tmin OR k < kmax) TRUE; return x end Więcej informacji na temat samej metody symulowanego wyżarzania, a także zastosowania jej do zadań optymalizacji znajduje się w [87] oraz [89]. 4.2 Propozycja udoskonalenia algorytmu symulowanego wyżarzania W mojej pracy podczas przeprowadzania badań nad optymalizacją przepustowości środowiska sieciowego został zastosowany algorytm SW z regułą akceptacji Metropolisa, zwany także algorytmem Metropolisa. Ze względu na zasługi i wkład w rozwój nauki zasadnym jest krótkie przybliżenie osoby Nicolasa Metropolisa (1915-1999). Był on członkiem zespołu badawczego Projektu Manahattan, a także współtwórcą komputerów MANIAC (1952) i MANIAC II (1957) oraz jednym z autorów metody Monte Carlo (wraz z S. Ulamem i J. Von Neumannem). Algorytm Metropolisa zaliczony został do 10 czołowych algorytmów, które wywarły „największy wpływ na rozwój i praktykę nauki i techniki w XX wieku” (wg Computing Science and Engineering). Dla uściślenia terminologii należy dodać, że omawiana metoda określana jest mianem metody metaheurystycznej. Przedrostek „meta” - 120 - jest tu użyty niezbyt poprawnie, ponieważ metoda metaheurystyczna jest połączeniem co najmniej dwóch metod heurystycznych, lub metod heurystycznych i dokładnych, natomiast samo greckie słowo „meta” oznacza „ponad czymś” lub „o czymś”. Przykładami popularnie stosowanych metod metaheutystycznych mogą być: wyszukiwanie lokalne (ang. local search), losowa optymalizacja (ang. random optimization), wyszukiwanie pierwszego najlepszego (ang. best-first search), algorytmy genetyczne (ang. genetic algorithms), wyszukiwanie z zakazem (ang. tabu search) oraz wiele innych. W tym kontekście należy również wymienić tzw. „regułę akceptacji Metropolisa”. Dzięki tej regule wykorzystującej porównanie wartości losowej (o rozkładzie jednostajnym z przedziału <0,1>) z przedstawioną w podrozdziale nr 4.1 wartością wyrażenia exp(− φ * − φ ( x) T ) , algorytm jest w stanie z określonym prawdopodobieństwem zaakceptować gorsze rozwiązanie, a w konsekwencji „wydostać się” z minimum lokalnego. Akceptacja gorszego rozwiązania przenosi niejako zakres poszukiwań minimum globalnego w inną część obszaru rozwiązań dopuszczalnych. Natomiast prawdopodobieństwo akceptacji rozwiązania gorszego jest zależne od wartości funkcji energii oraz temperatury, w której obecnie „znajduje się” algorytm. Warto zauważyć, że wyrażenie jest tak skonstruowane, że wraz ze spadkiem temperatury wspomniany algorytm staje się „mniej skłonny” do akceptowania gorszych rozwiązań. Ponieważ algorytm zaproponowany przez N. Metropolisa nie jest rozwiązaniem dedykowanym do optymalizacji przepustowości sieci komputerowych, dlatego należało wprowadzić do niego pewne autorskie udoskonalenie. Polega ono na dodaniu przepustowości routera do zbioru parametrów. Jeśli po wykonaniu jednej iteracji przepustowość ta wzrasta, to nowa wartość parametru beta nie jest losowana z całego zbioru wartości dopuszczalnych, lecz z podzbioru <wartość obecna, wartość maksymalna>. Analogicznie, gdy przepustowość routera spada, wartość beta jest losowana z przedziału <zero, wartość obecna>. Działanie takie ma na celu zapobieżenie zbyt szybkiem wzrostowi wartości parametru beta, co w konsekwencji prowadzi do kierowania pakietów na zbyt wiele tras jednocześnie. W rozdziale trzecim zostało wykazane, że użycie zbyt wielu tras może skutkować spadkiem przepustowości środowiska sieciowego. Wracając do parametru „przepustowość routera” należy wyjaśnić, że jest on wyliczany w każdej iteracji algorytmu jako suma efektywnych przepustowości wszystkich tras prowadzących przez ten router. W omawianym rozwiązaniu maksymalizacja przepustowości całego obszaru OSPF odbywa się poprzez optymalizację przepustowości poszczególnych routerów wchodzących w jego skład, przy użyciu zmodyfikowanego algorytmu symulowanego wyżarzania (algorytm 5). Dodatkowo istotną kwestią jest to, że maksymalizacja przepustowości całego obszaru - 121 - OSPF odbywająca się poprzez optymalizację przepustowości poszczególnych routerów wchodzących w jego skład, świadczy o rozdzielności tego zadania optymalizacyjnego (jak już zostało wcześniej powiedziane, jest to zadanie NCSP). Warto także dodać, że budowa wzmiankowanego algorytmu wynika z konieczności dostosowania go do specyfiki zadania, do którego będzie użyty. Do optymalizacji przepustowości zostanie użyty następujący algorytm. Algorytm 5 1. Przypisz wszystkim beta wartość zero. 2. Oblicz Ψ(b). 3. Oblicz przepustowości routerów. 4. Dopóki nie jest spełniony warunek stopu wykonuj. 5. Wygeneruj nowe wartości parametrów beta. 6. Oblicz nowe wartości Ψ(b). 7. Jeśli nowe Ψ(b) nie jest mniejsze niż stare Ψ(b) wykonaj 7.1 Bety ← nowe bety. 7.2 Ψ(b) ← nowe Ψ(b). W przeciwnym wypadku wykonaj. 7.3 Oblicz prawdopodobieństwo akceptacji (wartość funkcji energii). 7.4 Wygeneruj wartość losową. 7.5 Porównaj prawdopodobieństwo akceptacji z wartością losową. 7.6 Jeśli prawdopodobieństwo akceptacji większe niż wartość losowa wykonaj. 7.6.1 Bety ← nowe bety. 7.6.2 Ψ(b) ← nowe Ψ(b). W przeciwnym przypadku idź do 9. 8. Oblicz nowe przepustowości routerów. 9. Wyznacz routery ze wzrostem parametru „przepustowość routera”. 10. Przepustowości routerów ← nowe przepustowości routerów. 11. Aktualizuj warunek stopu. 12. Sprawdź warunek stopu. 13. Jeśli warunek stopu nie spełniony idź do 4, w przeciwnym przypadku zakończ algorytm. - 122 - Nie bez znaczenia będzie zatrzymanie się w tym miejscu i udzielenie odpowiedzi na jedno z kluczowych pytań, jakie pojawiają się w tej pracy. Mianowicie, kiedy włączać równoważenie obciążenia typu NK, a kiedy nie? Odpowiedź jest dość oczywista, – kiedy przyniesie to wzrost przepustowości optymalizowanej sieci. Algorytm 5 jest tak skonstruowany, że w kroku 1 przypisuje wszystkim współczynnikom beta wartość zero, co równa się włączeniu równoważenia typu RK lub wyłączeniu równoważenia obciążenia (w zależności od konfiguracji protokołu OSPF). Następnie, tj. w kroku 2, obliczana jest wartość przepustowości sieci (z włączonym równoważeniem typu RK lub z wyłączonym równoważeniem obciążenia), co można interpretować jako wartość punktu odniesienia. Po czym w dalszej części algorytmu na skutek zmian wartości współczynników beta, obliczane są inne wartości Ψ(b). W tym miejscu dochodzimy do meritum poruszanej kwestii. Jeśli wyznaczona w dalszej części algorytmu wartość Ψ(b) jest większa niż ta obliczona w kroku drugim, to włączenie równoważenia zwiększa przepustowość sieci, czyli jest zasadne i należy je włączyć. Dla potrzeb przedstawienia algorytmu 5 zapisanego w pseudokodzie przyjmijmy dodatkowo następujące oznaczenia: βimax – maksymalna wartość parametru beta dla routera vi, 1 ≤ i ≤ m , wyliczana ze wzoru (2.3) b – wektor zawierający nowo wyznaczone wartości współczynników βi (w kolejnej iteracji). bnew – wektor zawierający nowo wyznaczone wartości współczynników βi (w kolejnej iteracji). Ψ(bnew) – nowo wyznaczona przepustowość środowiska sieciowego (w kolejnej iteracji). ΨiR (b) - przepustowość routera Ri liczona jako suma efektywnych przepustowości tras, które przez ten router prowadzą. ΨiR (bnew ) - nowo wyznaczona przepustowość routera Ri (w kolejnej iteracji). E – wartość funkcji energii rozumiana jako exp(− Ψ (bnew ) − Ψ (b) T ) , gdzie T jest wartością temperatury i zarazem parametrem stopu. Y – wartość losowa o rozkładzie jednostajnym z przedziału <0,1>. Algorytm 5 zapisany w pseudokodzie przedstawia się teraz następująco: - 123 - Algorytm 6 Begin Symulowane_wyżarzanie_zmodyfikowane(T(0), bmax, kmax) T ← T(0); b ← 0; k ← 0; Oblicz Ψ(b); Oblicz wszystkie ΨiR (b) ; ΨiR (bnew ) ← ΨiR (b) ; repeat Wygeneruj bnew; Oblicz Ψ(bnew); if (Ψnew(b)>= Ψ(b)) b ← bnew; Ψ(b) ← Ψ(bnew);; else Oblicz E; Wygeneruj Y; if (E > Y) b ← bnew; Ψ(b) ← Ψ(bnew); end if end if Oblicz wszystkie ΨiR (bnew ) ; Wyznacz routery ze wzrostem przepustowości porównujac ΨiR (b) z ΨiR (bnew ) ; ΨiR (b) ← ΨiR (bnew ) ; k ← k+1; Zmniejsz T; until (T > Tmin or k<kmax) return b; end - 124 - Dodatkowego wyjaśnienia może wymagać funkcja Wygeneruj bnew generująca nowe wartości parametrów beta. Są one generowane indywidualnie dla każdego routera, zależnie od tego, czy w ostatniej iteracji przepustowość danego routera uległa zmniejszeniu czy nie. Jeśli przepustowość nie zmniejszyła się to nowa wartość parametru beta jest generowana losowo z przedziału domkniętego <0, wartość_obecna>. W przeciwnym przypadku nowa wartość parametru beta dla jest generowana losowo z przedziału domkniętego <wartość_obecna, wartość_maksymalna>. Oto schemat blokowy algorytmu 5. Rys. 4.1. Schemat blokowy algorytmu 5 służącego do optymalizacji przepustowości. - 125 - 4.3 Zastosowanie symulowanego wyżarzania do optymalizacji przepustowości środowiska sieciowego Przed zastosowaniem metody symulowanego wyżarzania do optymalizacji przepustowości środowiska sieciowego należy odpowiedzieć na kilka pytań związanych tak z samą metodą, jak i z konkretnym jej zastosowaniem do danej optymalizacji. Odnosząc się do ogólnych zagadnień dotyczących metody symulowanego wyżarzania należy poruszyć następujące cztery kwestie: • warunki startowe dla algorytmu; • warunek (warunki) zatrzymania; • schemat schładzania; • tempo schładzania. Generalnie w metodzie symulowanego wyżarzania stosuje się tzw. wielostart, czyli należy ją powtarzać dla różnych warunków początkowych – w konsekwencji otrzymuje się różne wyniki końcowe. W konkretnym zastosowaniu (np. do optymalizacji przepustowości), nie wszystkie parametry będą zmieniały swoje wartości początkowe przy kolejnych uruchomieniach algorytmu. Dokładniej mówiąc, zmianie będzie (między innymi) ulegała temperatura początkowa, natomiast startowe wartości parametrów beta będą zawsze takie same i równe zero. Dla uzasadnienia zauważmy, że zerowe wartości współczynników beta odpowiadają sytuacji, w której wyłączone jest równoważenie obciążenia NK. Przepustowość sieci obliczona bez włączonego równoważenia NK stanowi punkt startowy optymalizacji oraz umożliwia porównanie efektywności otrzymanego rezultatu końcowego z wartością początkową. Inne parametry, których wartości będą zmieniane przy kolejnych uruchomieniach algorytmu to: temperatura końcowa, czas pracy algorytmu, tempo oraz schemat schładzania. Dokładne wartości wymienionych parametrów oraz sposoby ich modyfikacji zostaną opisane w podrozdziale 4.4. Przechodząc do warunków zatrzymania algorytmu, na wstępie należy stwierdzić, że może być to jeden lub wiele warunków. Dodatkowo warto wspomnieć, że specyfika zagadnienia optymalizacji przepustowości nie determinuje jednoznacznie, jakie warunki zatrzymania należy przyjąć. Dokładny opis takich warunków znajduje się w podrozdziale 4.4. Natomiast w tym miejscu warto wspomnieć o niektórych z nich. Precyzyjniej mówiąc, warunki zatrzymania algorytmu można podzielić przynajmniej na trzy grupy, zgodnie z następującymi kryteriami: przekroczenie przez czas działania algorytmu pewnej wartości progowej, osiągnięcie określonej temperatury, brak wystarczającej poprawy rozwiązania w określonym przedziale czasu lub po określonej liczbie - 126 - iteracji. Można też sformułować inne kryteria, np. osiągnięcie pożądanej wartości funkcji energii (funkcji celu) lub jakiekolwiek rozwiązania hybrydowe powstałe na skutek superpozycji trzech podstawowych kryteriów. Przechodząc do schematów schładzania, warto stwierdzić, że nie ma konieczności wprowadzania w nich żadnych specyficznych zmian (tj. mających na celu dostosowanie algorytmu 5 do optymalizacji przepustowości sieci). Natomiast tematem do osobnych rozważań może być zastosowanie innego schematu schładzania niż trzy wcześniej wymienione (w podrozdziale 4.1). Schematu polegającego np. na liniowym spadku temperatury względem czasu lub iteracji algorytmu. Schemat taki nie odpowiada temu, co można zaobserwować w naturze. Wykres zmian temperatury w czasie dla cieczy stygnącej w warunkach normalnych ma kształt wykładniczy (z ujemnym wykładnikiem potęgi) nie zaś liniowy. Z drugiej jednak strony, istnieją w przemyśle rozwiązania technologiczne wykorzystujące schładzanie z liniowym spadkiem temperatury w czasie np. przy tzw. epitaksji z fazy ciekłej (ang. Liquid Phase Epitaxy - LPE), czyli technice nanoszenia warstw monokryształów na podłoże krystaliczne. Technika ta jest wykorzystywana przy wytwarzaniu materiałów półprzewodnikowych [100][101]. W odniesieniu do tempa schładzania, także nie ma konieczności wprowadzania zmian dostosowujących algorytm 5 do optymalizacji przepustowości sieci. Warto natomiast wspomnieć, że zbyt szybkie schłodzenie może prowadzić do niepożądanych efektów polegających na niewłaściwej budowie struktury krystalicznej (cząstki „nie zdążą” znaleźć dla siebie odpowiedniego miejsca). Jako przykład można potraktować przemysłowy proces wytopu szkła. W procesie tym płynne szkło jest schładzane dość szybko, a cząstki wchodzące w jego skład nie tworzą struktury krystalicznej. Wydawać by się mogło, że w warunkach normalnych szkło jest ciałem stałym, jednak z fizycznego punktu widzenia jest to jedynie przechłodzona ciecz. Analogicznie jak w kwestiach poruszanych poprzednio (warunki początkowe i zatrzymania algorytmu oraz schemat schładzania), tempo schładzania będzie parametrem, który dokładniej zostanie opisany w podrozdziale 4.4. Reasumując, główne wprowadzone przez mnie udoskonalenie dostosowujące metodę symulowanego wyżarzania do optymalizacji przepustowości sieci komputerowej, polega na dodaniu parametru nazwanego „przepustowość routera”. Porównanie jego wartości w kolejnych iteracjach przekłada się bezpośrednio na to, z jakiego przedziału (w bieżącej iteracji) jest losowana wartość parametru beta (dla tego routera). Natomiast w klasycznej postaci wartości wspomnianych parametrów byłyby losowane z pełnego zbioru rozwiązań dopuszczalnych. Inną, choć już mniej istotną modyfikacją, jest wprowadzenie parametru - 127 - beta_max (indywidualnie dla każdego routera) określającego górną granicę przedziału, z jakiego losowana jest beta. Opis sposobu wyznaczania parametru beta_max, a także wzór służący do jego wyznaczenia znajduje się w rozdziale drugim. Natomiast więcej informacji na temat zastosowania symulowanego wyżarzania do zadań optymalizacji sieci komputerowych znajduje się np. w [78] [80] [81] [83] [85] [86]. Logiczny schemat przepływu informacji pomiędzy algorytmami obrazujący zasadę działania rozwiązania zaproponowanego w mojej pracy został przedstawiony na rys. 4.2 Rys. 4.2. Logiczny schemat przepływu informacji pomiędzy używanymi algorytmami. Opisywane rozwiązanie działa w następujący sposób: Algorytm 1 na podstawie posiadanych informacji o topologii sieci i otrzymanych (od stacji zarządzającej) współczynników beta wylicza zawartość tablic routingu dla każdego z routerów wchodzących w skład sieci. Następnie na podstawie tablic routingu i topologii wyznacza wszystkie osiągalne acykliczne i dopuszczalne trasy – trasy aktywne. Przez termin dopuszczalne należy rozumieć takie trasy, z których każda prowadzi przez inny interfejs wyjściowy danego routera. Potem zestaw wyznaczonych tras aktywnych jest przesyłany do algorytmu 3. Algorytm 3 na podstawie uzyskanych informacji z algorytmu 1 wylicza wartość przepustowości środowiska sieciowego (Ψ(b)), po czym przesyła tę wartość do algorytmu 5. Algorytm 5 posiadając informacje o spodziewanej charakterystyce ruchu sieciowego i na podstawie otrzymanej wartości Ψ(b), a także z zastosowaniem swojej „logiki” wyznacza nowe wartości współczynników beta - maksymalizujący wartość Ψ(b). Następnie wartości współczynników beta są przesyłane do algorytmu 1. - 128 - Algorytm 1 działa osobno na każdym z routerów wchodzących w skład optymalizowanego obszaru (segmentu sieci), natomiast algorytmy 3 i 5 działają na stacji zarządzającej. 4.4 Scenariusze przeprowadzonych badań Do przeprowadzenia badań, których scenariusze zostały przedstawione w tym podrozdziale, został zastosowany algorytm 5. Podczas badań modyfikacji ulegały następujące parametry algorytmu: • schemat schładzania; • temperatura początkowa; • liczba iteracji bez zmiany temperatury; • warunek zatrzymania. Badania zostały przeprowadzone dla trzech topologii sieciowych przedstawionych na rys. 4.3, 4.4 i 4.5. Warto zaznaczyć, że topologia przedstawiona na rys. 4.5 jest schematem sieci komputerowej stanowiącej obszar zero jednej z dużych instytucji finansowych obecnie funkcjonującej na polskim oraz międzynarodowym rynku. Badania nad pierwszymi dwoma topologiami służą, między innymi, dobraniu optymalnych parametrów pracy algorytmu. Następnie, tak dostrojony algorytm zostanie użyty do przeprowadzenia optymalizacji przepustowości sieci z rys. 4.5. Rys. 4.3. Pierwsza z poddanych badaniom przykładowych topologii. - 129 - Koszty połączeń pomiędzy poszczególnymi routerami przyjmują wartości przedstawione w tabeli nr 4.1., zaś koszty bezpośrednich połączeń pomiędzy hostami a routerami przyjmuje się za pomijalnie małe. Należy także dodać, że stacja zarządzająca może być podłączona do dowolnego routera, jedyny wymóg odnośnie jej podłączenia jest taki żeby istniała możliwość komunikacji stacji zarządzającej z każdym z routerów. Ponieważ rys. 4.3, 4.4, i 4.5 przedstawiają jedynie pewne topologie, nie zaś całą infrastrukturę sieciową, dlatego zobrazowanie lokalizacji stacji zarządzającej zostało pominięte. Tabela 4.1. Koszty połączeń pomiędzy routerami przedstawionymi na rys. 4.3. Router źródłowy Router docelowy Koszt połączenia R1 R2 10 R1 R3 5 R1 R4 2 R1 R5 1 R2 R3 2 R2 R6 2 R2 R7 5 R3 R4 10 R3 R6 10 R3 R7 5 R3 R8 2 R4 R5 1 R4 R7 2 R4 R8 10 R4 R9 2 R5 R8 2 R5 R9 5 R6 R7 5 R6 R10 10 R7 R8 10 R7 R10 1 R8 R9 10 R8 R10 2 R9 R10 2 - 130 - Oto druga z badanych topologii sieciowych: Rys. 4.4. Druga z poddanych badaniom przykładowych topologii. Koszty połączeń pomiędzy poszczególnymi routerami przyjmują wartości przedstawione w tabeli nr 4.2, zaś koszty połączeń pomiędzy obszarami, a routerami przyjmuje się za pomijalnie małe. Dodatkowo warto wspomnieć, że topologia przedstawiona na rys. 4.4 stanowi obszar zero (ang. backbone) dla przykładowej sieci komputerowej, której dokładna konfiguracja została przedstawiona w załączniku II. Tabela 4.2. Koszty połączeń pomiędzy routerami przedstawionymi na rys. 4.4. Router źródłowy Router docelowy Koszt połączenia R1 R3 1 R2 R4 2 R3 R4 1 R3 R5 2 R3 R6 1 R4 R5 1 R4 R6 2 R5 R6 2 - 131 - Analogicznie jak w poprzednim przypadku, koszty wszystkich tras przyjmują wartości symetryczne. Przyjęto również, że poszczególne obszary komunikują się według schematu „każdym z każdym”. Oto trzecia z badanych topologii sieciowych. Rys. 4.5. Trzecia z poddanych badaniom topologii sieciowych. Sieć jest zaprojektowana w taki sposób, że przepustowości łączy pomiędzy poszczególnymi routerami wynoszą 1 Gb/s, a w konsekwencji ich koszty przyjmują wartości 0.1, natomiast koszty połączeń pomiędzy obszarami, a routerami ABR, przyjmuje się za pomijalnie małe. Dodatkowo warto wspomnieć, że topologia przedstawiona na rys. 4.5 stanowi obszar zero działającej na polskim i międzynarodowym rynku instytucji finansowej. Omawiany obszar został zaprojektowany w taki sposób, że każdy z routerów „zewnętrznego pierścienia” posiada po jednym interfejsie podłączonym do jednego dedykowanego dla siebie obszaru niezerowego. Dla przykładu, router R1 jest routerem ABR dla obszaru O1, router R5 dla O2 itd. Sieć ta posiada dziesięć obszarów niezerowych, przy czym routery ABR to routery od R1 do R10. Natomiast optymalizacja przepustowości została przeprowadzona dla ruchu sieciowego wymienianego pomiędzy obszarami O1 i O2. Dla przejrzystości rysunku 4.5 jedynie te dwa obszary zostały na nim zaznaczone. Podczas każdego z badań modyfikacji ulegała wartość tylko jednego z powyżej wymienionych parametrów. Modyfikacje były przeprowadzane w taki sposób, żeby każda - 132 - możliwa kombinacja przyjętych wartości i parametrów pracy algorytmu została sprawdzona. W szczególności przyjęto, że: Wykorzystywane są trzy schematy schładzania: logarytmiczny, liniowy i 1. geometryczny. Dla schematu geometrycznego parametr alfa (podstawa potęgi) miał dwie wartości: 0.95 i 0.99. 2. Temperatura początkowa ma jedną z trzech wartości: 100, 1000, 10000 stopni. 3. Liczba iteracji algorytmu bez zmiany temperatury wynosi 1 oraz 10. 4. Warunkiem zatrzymania algorytmu jest: osiągnięcie temperatury końcowej bliskiej zeru (dokładniej mniejszej niż jeden stopień), lub przekroczenie (arbitralnie przyjętych wartości) maksymalnego czasu działania algorytmu tj. 3 minut, lub brak zmian wartości funkcji energii w czasie 0.5 minuty. Przyjmując, że badaniu będą podlegały: • trzy topologie sieciowe; • trzy schematy schładzania (w tym jeden z dwoma wartościami parametru alfa); • trzy temperatury początkowe; • dwie liczby iteracji bez zmiany temperatury; • trzy warunki zatrzymania algorytmu ; w wyniku powyżej przyjętych założeń powstają 3*4*3*2*3=216 różne scenariusze badań. Ze względu na znaczna liczbę scenariuszy, badania zostały przeprowadzone jedynie dla niektórych z nich, mianowicie przedstawionych w rozdziale 5. Przykładowy scenariusz przedstawia się następująco: Topologia sieciowa – pierwsza; Schemat schładzania – geometryczny; Temperatura początkowa – 1000 stopni; Liczba iteracji algorytmu bez zmiany temperatury – 10; Warunek zatrzymania algorytmu – brak zmian wartości funkcji energii w czasie 5 minut; Wyniki badań przeprowadzonych wedle wybranych scenariuszy, zostały przedstawione w rozdziale piątym. Natomiast w rozdziale szóstym znajduje się obszerna dyskusja uzyskanych wyników. Do przeprowadzenia badań zostało użyte napisane przeze mnie oprogramowanie. W oprogramowaniu tym zaimplementowany został Algorytm 5, czyli zmodyfikowana metoda - 133 - SW. Taj jak już zostało wcześniej powiedziane, w metodzie SW funkcja energii utożsamiana jest z wartością przepustowości środowiska sieciowego, wyliczaną z zastosowaniem algorytmu 3. Innymi słowy w omawianym oprogramowaniu zaimplementowany jest także i ten algorytm. Dodatkowo warto wspomnieć, że jest to autorski program napisany specjalnie dla potrzeb tej pracy i służący do optymalizacji funkcjonału wyrażonego wzorem (3.31). Kod omawianego oprogramowania został napisany w języku C i znajduje się w załączniku I. Warto także zauważyć, że w rozdziale 3 zadanie optymalizacji przepustowości sieci z zastosowaniem równoważenia obciążenia z udziałem tras typu NK zostało sformułowane jako zadanie programowania liniowego, którego wyniki są przedstawione w rozdziale 6. Rozwiązanie tego zadania można wykorzystać do zbadania efektywności metody symulowanego wyżarzania. Innymi słowy, porównanie czasów działania metody symulowanego wyżarzania zastosowanej do optymalizacji przepustowości środowiska sieciowego z czasem działania metody dokładnej, (jaką jest PL) można traktować jako miernik wydajności pierwszej z tych metod. Oczywistym jest, że porównanie takie należy przeprowadzić dla wyników otrzymanych z wykorzystaniem urządzeń o tej samej mocy obliczeniowej i dla takich samych topologii sieciowych. Jednak należy zauważyć, że sam czas wyznaczania rozwiązania nie jest jedynym kryterium. Najważniejszym kryterium jest wartość otrzymanego rozwiązania (wartość wyliczonej przepustowości sieciowej), a czas stanowi jedno z ograniczeń – badana metoda optymalizacji przepustowości powinna działać w czasie rzeczywistym. Nie wdając się w tym momencie w szczegóły należy podkreślić, że dokładna dyskusja otrzymanych wyników badań, wraz z porównaniem i omówieniem wspomnianych wcześniej czasów działania, zostanie zamieszczona w rozdziale szóstym. Natomiast narzędziem użytym do rozwiązania zadania programowania liniowego w odniesieniu do optymalizacji przepustowości środowiska sieciowego było oprogramowanie Premium Solver V9.0. Oprogramowanie to jest zaawansowanym narzędziem służącym do optymalizacji z wykorzystaniem programowania liniowego oraz nieliniowego, a także całkowitoliczbowego. Omawiane oprogramowanie jest zaprojektowane jako pewien moduł (silnik) wykorzystujący inne programy jako interfejs (front-end) do wprowadzania danych oraz wyświetlania wyników. Programami takimi mogą być np. Matlab lub popularne arkusze kalkulacyjne. Dodatkowe informacje o wykorzystanym narzędziu znajdują się na stronie producenta pod adresem www.solver.com. - 134 - 4.5 Złożoność obliczeniowa zastosowanej metody Bardzo istotnym czynnikiem, często decydującym o praktycznym zastosowaniu danej metody jest jej złożoność obliczeniowa. W bieżącym podrozdziale została podjęta próba wyznaczenia tej złożoności dla algorytmu symulowanego wyżarzania zastosowanego do optymalizacji przepustowości środowiska sieciowego. Ujednolicając terminologię, przez pojęcie złożoności obliczeniowej należy rozumieć zależność funkcyjną pomiędzy liczbą węzłów oraz krawędzi grafu reprezentującego optymalizowane środowisko sieciowe (argumenty funkcji), a liczbą niezbędnych do wykonania operacji prostych (wartość funkcji złożoności). Termin „operacja prosta” winien być rozumiany jako jedna z podstawowych operacji arytmetycznych (dodawanie, odejmowanie ewentualnie mnożenie lub dzielenia) albo porównanie dwóch wartości liczbowych. Wyznaczanie złożoności całego algorytmu 5 należy rozpocząć od dokładnego przeanalizowania jego jednej iteracji. Przyjmijmy oznaczenia: bnew – nowy wektor parametrów beta. ΨiR (b) - przepustowość routera Ri liczona jako suma efektywnych przepustowości tras, które przez ten router prowadzą. E – wartość funkcji energii. Y - zmienna losowa o rozkładzie jednostajnym.Z powodu braku znajomości typu rozkładu przyjęto rozkład jednostajny. Pr( E ≥ Y ) – prawdopodobieństwo, że wartość funkcji energii jest nie mniejsza niż wartość losowa. Pojedyncza iteracja składa się z następujących operacji: 1. Wygeneruj bnew. 2. Oblicz Ψ(bnew). 3. Jeśli Ψ(bnew) > Ψ(b). a. b ← bnew. b. Ψ(b) ← Ψ(bnew). 4. Jeśli Ψ(bnew) ≤ Ψ(b). a. Oblicz Y. - 135 - b. Jeśli Pr( E ≥ Y ) . i. b ← bnew. ii. Ψ(b) ← Ψ(bnew). 5. Oblicz ΨiR (bnew ) . 6. Wyznacz routery ze wzrostem przepustowości. 7. ΨiR (b) ← ΨiR (bnew ) . Przyjmując oznaczenia: m – liczba routerów, wierzchołków grafu. lk(b)– liczba tras komunikacji dla pary routerów ( R1k , R2k ), 1 ≤ k ≤ r . r l*(b) – całkowita liczba występujących tras komunikacji rozumiana jako l * (b) = ∑ l k (b) . k =1 l~(b) - liczba tras aktywnych, tj. tras, po których przesyłany jest ruch sieciowy. ^ d (t qk (b)) - średnia długość trasy t qk (b) , rozumiana jako średnia arytmetyczna wyliczona z długości wszystkich istniejących tras w optymalizowanej sieci, przy czym długość trasy, rozumiana jest jako liczba łączy wchodzących w jej skład. n – liczba łączy w optymalizowanej sieci. OΨ(m,n,b) – złożoność obliczeniowa algorytmu wyznaczania przepustowości środowiska sieciowego (Algorytm 3). OR(m,b) – złożoność obliczeniowa operacji wyznaczania przepustowości routerów. Liczba operacji prostych dla poszczególnych kroków Algorytmu 5 przedstawia się następująco: • krok 1 - m operacji; • ^ ^ n krok 2 - OΨ (m, n, b) = l ~ (b) * (2 * m + d (t qk (b)) + 1) + l * (b) * d (t qk (b)) * (1 + ) + n 2 operacji; • • krok 3 – 1 operacja; a. m operacji; b. 1 operacja; krok 4 – 0 (konsekwencja operacji wykonanej w kroku 3) lub a. 4 operacje; - 136 - b. 1 operacja; i. m operacji; ii. 1 operacja; ^ ~ • krok 5 - m * l (b) * ( • krok 6 – m operacji; • krok 7 – m operacji. 3 * d (t qk (b)) 4 1 + ); 2 Mając na uwadze stopień skomplikowania wzorów, pewnych wyjaśnień mogą wymagać kroki 2 i 5, a mianowicie. Obliczenie nowej wartości Ψ(b) składa się z następujących etapów: • etap 1 - wyznaczenie tablic routingu poszczególnych routerów; • etap 2 - wyznaczenie tras aktywnych; • etap 3 - wyznaczenie dla każdego łącza liczby tras w których to łącze występuje; • etap 4 - wyznaczenie dla każdego łącza jego efektywnej przepustowości; • etap 5 - wyznaczenie przepustowości każdej z aktywnych tras; • etap 6 - wyznaczenie Ψ(b) jako sumy przepustowości wszystkich aktywnych tras. Złożoność poszczególnych etapów wyznaczania Ψ(b) jest następująca: • etap 1 - m * (2 * l ~ (b)) ; • etap 2 - l*(b)*d(tqk (b)); ^ ^ n * l * (b) * d (t qk (b)) • etap 3 - • etap 4 - n ; • etap 5 - l ~ (b) * d (t qk (b)) ; • etap 6 - l ~ (b) . 2 ; ^ Po zsumowaniu i zredukowaniu wyrazów podobnych dostajemy: ^ ^ n OΨ (m, n, b) = l ~ (b) * (2 * m + d (t qk (b)) + 1) + l * (b) * d (t qk (b)) * (1 + ) + n 2 (4.9) Oto szczegółowy opis poszczególnych etapów: Etap 1 - polega na wyznaczeniu dla każdego routera Ri jego tablicy routingu. Złożoność tej operacji wynosi 2 * l ~ (b) , gdzie obliczenie iloczynu copt * αi * βi ze wzoru (2.2) wymaga wykonania dwóch operacji i jest wykonywane dla każdej aktywnej trasy, czyli l ~ razy. - 137 - ^ Etap 2 - czyli wyznaczenie tras aktywnych ma złożoność l * (b) * d (t qk (b)) , co wynika stąd, że ^ dla każdej trasy t qk (b) należy sprawdzić czy wszystkie jej łącza w liczbie d (t qk (b)) są aktywne. Etap 3 - polega na wyznaczeniu dla każdego łącza e j ∈ E liczby jego wystąpień w każdej z ^ tras t qk (b) o średniej długości d (t qk (b)) . Otrzymany wynik jest dzielony przez, dwa dlatego, że łącze może wystąpić na danej trasie tylko raz, a średnio będzie to w połowie jej ^ długości d (t qk (b)) . Etap 4 - czyli wyznaczenie dla każdego łącza e j ∈ E jego efektywnej przepustowości sprowadza się do jednej operacji polegającej na podzieleniu nominalnej przepustowości łącza przez liczbę tras, w których łącze to występuje. Złożoność tego etapu wynosi n * 1 . Etap 5 - polega na wyznaczeniu dla każdej aktywnej trasy t qk (b) łącza o minimalnej przepustowości (dokładniej mówiąc wartości przepustowości tego łącza). Wykonać to można przez porównanie przepustowości wszystkich łączy w liczbie Dt wchodzących w skład danej ^ trasy. W konsekwencji złożoność tego etapu wynosi l ~ (b) * d (t qk (b)) . Etap 6 - czyli wyznaczenie Ψ(b) posiada złożoność l ~ (b) . Wynika to stąd, że obliczenie Ψ(b) odbywa się poprzez zsumowanie przepustowości wszystkich tras aktywnych, w tym celu należy wykonać l ~ (b) sumowań. Z kolei obliczając przepustowości routerów (krok 5), należy przyjąć pewne założenia. Założenia te odnoszą się do tego czy analizowany router występuje na danej trasie czy nie. Jeśli router na niej występuje to jego licznik przepustowości należy zwiększyć o przepustowość tej trasy (jedna operacja prosta), jeśli natomiast nie występuje to zwiększenie wspomnianego licznika nie jest wymagane. Dla potrzeb niniejszej pracy przyjęto założenia, że analizowany router występuje, na co drugiej trasie aktywnej. W świetle przyjętego założenia, wyznaczenie przepustowości routerów polega na sprawdzeniu dla każdego routera Ri i wszystkich tras aktywnych l ~ (b) czy: ^ 1. dany router występuje na analizowanej trasie, co wymaga d (t qk (b)) 2 porównań (router średnio zostanie znaleziony w połowie trasy), plus dodania przepustowości tej trasy do ^ licznika przepustowości routera. W konsekwencji otrzymuje się d (t qk (b)) 2 + 1 operacji. - 138 - 2. dany router nie występuje na analizowanej trasie, co wymaga sprawdzenia jej do ^ końca czyli wykonania d (t qk (b)) operacji. Reasumując, złożoność przepustowości obliczania routerów wynosi ^ ~ m * l (b) * 0.5 * ( d (t qk (b)) + 2 2 ^ + d (t qk (b))) , po zredukowaniu wyrazów podobnych i uproszczeniu otrzymujemy: ^ ~ OR (m, b) = m * l (b) * ( 3 * d (t qk (b)) 4 1 + ) 2 (4.10) W celu wyznaczenia złożoności obliczeniowej całego algorytmu należy wprowadzić jeszcze dodatkowe oznaczenia. Pr(Ψk (b) ≥ Ψk −1 (b)) – prawdopodobieństwo, że nowe Ψ(b) (wyznaczone w bieżącej iteracji algorytmu) jest nie gorsze niż poprzednie Ψ(b) (wyznaczone w poprzedniej iteracji), przy czym Ψk(b) – wartość Ψ(b) w iteracji nr k. kmax – liczba iteracji algorytmu. W świetle powyższych rozważań złożoność obliczeniowa algorytmu SW użytego do optymalizacji przepustowości środowiska sieciowego przedstawia się następująco: ^ ^ n O(m, n) = {1 + l ~ (b) * (2 * m + d (t qk (b)) + 1) + l * (b) * d (t qk (b)) * (1 + ) + n + 2 + ( m + 1) * [Pr( Ψ k ( b )( ≥ Ψ k −1 ( b )) + (1 − Pr( Ψ k ( b ) ≥ Ψ k −1 ( b ))) * ( 5 + Pr( E ≥ Y ))] + ^ ~ + m * l (b) * ( 3 * d (t qk (b)) 4 1 + ) + 2]} * k max 2 (4.11) Po zredukowaniu wzoru (4.11) zgodnie z (4.9) i (4.10) otrzymujemy: O(m, n) = {1 + OΨ (b) + (m + 1) * [Pr(Ψk (b) ≥ Ψk −1 (b)) + + (1 − Pr(Ψk (b) ≥ Ψk −1 (b))) * (5 + Pr( E ≥ Y ))] + 2 * m + OV (b)} * k max (4.12) - 139 - Złożoność metody SW 700000 600000 500000 400000 O(m,n) 300000 200000 100000 S16 S11 n S1 19 17 13 11 15 m 9 7 S6 5 3 1 0 Wykres 4.1 Złożoność metody SW. 4.6 Podsumowanie W rozdziale tym został przedstawiony szczegółowy opis zastosowanej metody badawczej. Mając na uwadze fakt, że symulowane wyżarzanie nie jest metodą dedykowaną do optymalizacji przepustowości sieci komputerowej, należało wprowadzić pewne modyfikacje, które zostały szczegółowo opisane w podrozdziale 4.2. Pewnego rodzaju konkluzją przedstawionych wcześniej opisów i modyfikacji jest podrozdział 4.3. W podrozdziale tym znajduje się dokładny opis, ilustrowany pseudokodem oraz schematem blokowym, zmodyfikowanego algorytmu, który został użyty do przeprowadzenia badań. Ponadto rozdział zawiera wyprowadzenie wzoru na złożoność obliczeniową zastosowanego algorytmu, wraz ze szczegółową analizą poszczególnych jego składowych. Wracając do wzmiankowanych badań, zostały one wykonane według z góry przyjętych scenariuszy. Na scenariusz taki składa się: topologia badanej sieci, zastosowany schemat schładzania, temperatura początkowa, liczba iteracji algorytmu, warunek zatrzymania algorytmu. Scenariuszom badawczym został poświęcony osobny podrozdział 4.4. - 140 - Rozdział 5 Wyniki przeprowadzonych badań W niniejszym rozdziale znajdują się wyniki badań optymalizacyjnych przeprowadzonych z wykorzystaniem metody przybliżonej, czyli zmodyfikowanego algorytmu SW. Znajdują się tu także wyniki optymalizacji przepustowości otrzymane z zastosowaniem metody dokładnej tj. programowania liniowego, przy użyciu opisanego w podrozdziale 4.4 programu Premium Solver V9.0. Na podstawie uzyskanych obiema metodami wyników, porównano efektywność metody symulowanego wyżarzania z zastosowaną metodą dokładną. Porównanie to, a także inne wnioski i dyskusja otrzymanych wyników badań znajdują się w rozdziale 6. Bieżący rozdział zakończony jest krótkim podsumowaniem. 5.1 Wyniki otrzymane metodą symulowanego wyżarzania Badania przeprowadzono dla topologii sieciowych przedstawionych na rys. 4.3, 4.4 oraz 4.5. Podczas badań, jako warunek zatrzymania przyjęto osiągnięcie przez algorytm temperatury poniżej jednego stopnia. Poszczególne badania zostały przeprowadzone według scenariuszy zawartych w tabeli 5.1. Tabela 5.1. Scenariusze przeprowadzonych badań. Numer scenariusza Schemat schładzania 1 2 3 4 5 6 7 8 9 10 11 12 Logarytmiczny Logarytmiczny Logarytmiczny Logarytmiczny Logarytmiczny Logarytmiczny Liniowy Liniowy Liniowy Liniowy Liniowy Liniowy Geometryczny (a=0.99) Geometryczny (a=0.99) Geometryczny (a=0.99) Geometryczny (a=0.99) Geometryczny 13 14 15 16 17 100 100 1000 1000 10000 10000 100 100 1000 1000 10000 10000 Liczba iteracji algorytmu bez zmiany temperatury 1 10 1 10 1 10 1 10 1 10 1 10 100 1 100 10 1000 1 1000 10 10000 1 Temperatura początkowa - 141 - 18 19 20 21 22 23 24 (a=0.99) Geometryczny (a=0.99) Geometryczny (a=0.95) Geometryczny (a=0.95) Geometryczny (a=0.95) Geometryczny (a=0.95) Geometryczny (a=0.95) Geometryczny (a=0.95) 10000 10 100 1 100 10 1000 1 1000 10 10000 1 10000 10 Wyniki otrzymane dla topologii z rys. 4.3 zostały zamieszczone w tabelach 5.2, 5.3 oraz 5.4, natomiast dla topologii z rys. 4.4 - w tabelach 5.5, 5.6 i 5.7. W tym miejscu należy wyjaśnić, że dla każdego scenariusza zostało wykonanych pięć niezależnych pomiarów. Z każdego zbioru tych pomiarów została wyznaczona wartość maksymalna (Ψmax(b)) – tabele 5.2 i 5.4 oraz średnia arytmetyczna (Ψśr(b)) – tabele 5.3. i 5.5. Tabela 5.2. Wartości Ψmax(b) otrzymane dla topologii z rys. 4.3. Numer scenariusza 1 2 3 4 Ψmax(b) [Mb/s] 175 182.5 193.3 175 5 6 7 8 200 187.5 175 175 9 10 11 12 193.3 179.2 175 183.3 Numer scenariusza 13 14 15 16 Ψmax(b) [Mb/s] 183.6 175 174 173.3 Numer scenariusza 17 18 19 20 Ψmax(b) [Mb/s] 183.3 174.2 175 169.3 Numer scenariusza Ψmax(b) [Mb/s] 21 22 23 24 175 172.1 166.7 180.8 Numer scenariusza Ψmax(b) [Mb/s] Numer scenariusza Ψmax(b) [Mb/s] - 142 - Wyliczenie wartości średnich uzasadnione jest występowaniem różnic między wartościami przepustowości środowiska sieciowego wyznaczonymi przez algorytm przy wielokrotnych uruchomieniach dla tego samego scenariusza testowego. Wartości przedstawione w tabeli 5.3 zostały zaokrąglone do trzeciego miejsca po przecinku. Tabela 5.3. Wartości Ψśr(b) otrzymane dla topologii z rys. 4.3. Numer scenariusza Ψśr(b) [Mb/s] 1 2 3 4 163.58 173.94 167.52 171.3 5 6 7 8 164.84 159.56 168.82 158.56 9 10 11 12 169.3 161.74 157.71 171.76 13 14 15 16 164.2 165.68 158.58 158.06 Numer scenariusza 17 18 19 20 Ψśr(b) [Mb/s] 164.72 156.42 160.94 153.5 Numer scenariusza 21 22 23 24 Ψśr(b) [Mb/s] 166.64 162.3 153.34 167.96 Numer scenariusza Ψśr(b) [Mb/s] Numer scenariusza Ψśr(b) [Mb/s] Numer scenariusza Ψśr(b) [Mb/s] Wartości parametrów beta otrzymane dla poszczególnych scenariuszy testowych zostały przedstawione w tabeli 5.4. Parametry te są przypisane do poszczególnych routerów w badanej topologii sieciowej w następujący sposób: β1 do routera1, β2 do routera2, itd. Wartości zamieszczone w tabelach 5.4 i 5.7 należy rozumieć jako „zestawy parametrów konfiguracyjnych” poszczególnych routerów wchodzących w skład badanych topologii sieciowych, dla których w odpowiednich przypadkach testowych otrzymano największe wartości przepustowości środowiska sieciowego. Wzmiankowane współczynniki mają wpływ na to, jakie trasy są zamieszczane w tablicach routingu odpowiadających im routerów. W związku z powyższym, wzrost wartości współczynnika beta skutkuje zwiększeniem liczby tras, przez które dany router przesyła ruch sieciowy. Ponadto warto dodać, że wartości parametrów beta zostały wyznaczone przez algorytm SW i nie podlegały żadnym modyfikacjom czy korektom. - 143 - Tabela 5.4. Wartości parametrów beta otrzymane dla poszczególnych scenariuszy dla topologii z rys. 4.3. Numer Beta1 Beta2 Beta3 Beta4 Beta5 Beta6 Beta7 Beta8 Beta9 Beta10 1 0.308 0.405 0.902 0.568 0.119 0.005 0.541 0.799 0.347 0.627 2 0.455 0.527 0.156 0.253 0.812 0.592 0.733 0.717 0.365 0.441 3 0.836 0.253 0.208 0.243 0.395 0.785 0.209 0.851 0.279 0.547 4 0.985 0.667 0.411 0.371 0.062 0.238 0.104 0.62 0.005 0.834 5 0.991 0.619 0.191 0.042 0.392 0.369 0.073 0.674 0.028 0.912 6 0.76 0.401 0.-22 0.133 0.56 0.88 0.533 0.97 0.253 0.92 7 0.179 0.676 0.556 0.5 0.959 0.948 0.584 0.453 0.173 0.987 8 0.646 0.398 0.585 0.598 0.566 0.2 0.709 0.539 0.302 0.938 9 0.994 0.614 0.197 0.049 0.382 0.36 0.083 0.654 0.018 0.952 10 0.786 0.463 0.055 0.411 0.419 0.499 0.069 0.084 0.715 0.987 11 0.45 0.009 0.312 0.356 0.539 0.771 0.06 0.627 0.094 0.691 12 0.79 0.407 0.014 0.123 0.567 0.97 0.529 0.975 0.272 0.9 13 0.784 0.271 0.126 0.042 0.231 0.233 0.552 0.634 0.585 0.947 14 0.381 0.303 0.572 0.274 0.705 0.102 0.37 0.397 0.373 0.132 15 0.756 0.954 0.967 0.264 0.739 0.037 0.131 0.262 0.281 0.977 16 0.649 0.574 0.117 0.119 0.042 0.521 0.949 0.257 0.305 0.407 17 0.728 0.55 0.035 0.574 0.962 0.17 0.703 0.576 0.559 0.858 18 0.512 0.853 0.208 0.473 0.067 0.627 0.456 0.552 0.825 0.239 19 0.113 0.729 0.771 0.45 0.495 0.3 0.262 0.459 0.555 0.78 20 0.961 0.694 0.302 0.755 0.907 0.774 0.283 0.702 0.879 0.874 21 0.369 0.291 0.087 0.284 0.91 0.021 0.172 0.477 0.368 0.523 22 0.93 0.192 0.297 0.923 0.286 0.238 0.782 0.568 0.52 0.944 23 0.254 0.091 0.609 0.186 0.267 0.123 0.081 0.335 0.343 0.578 24 0.995 0.625 0.318 0.323 0.664 0.79 0.464 0.794 0.609 0.664 scenariusza - 144 - Tabela 5.5. Wartości Ψmax(b) otrzymane dla topologii z rys. 4.4. Numer scenariusza 1 2 3 4 Ψmax(b) [Mb/s] 165.47 165.47 165.47 165.47 Numer scenariusza Ψmax(b) [Mb/s] Numer scenariusza 5 6 7 8 165.47 165.47 165.47 165.47 9 10 11 12 Ψmax(b) [Mb/s] 165.47 165.47 165.47 165.47 Numer scenariusza 13 14 15 16 Ψmax(b) [Mb/s] 165.47 165.47 165.47 165.47 Numer scenariusza Ψmax(b) [Mb/s] 17 18 19 20 165.47 165.47 165.47 165.47 21 22 23 24 165.47 165.47 165.47 165.47 Numer scenariusza Ψmax(b) [Mb/s] Tabela 5.6. Wartości Ψśr(b) otrzymane dla topologii z rys. 4.4. Numer scenariusza 1 2 3 4 Ψśr(b) [Mb/s] 165.47 165.47 165.47 165.47 5 6 7 8 165.47 165.47 156.488 157.688 9 10 11 12 164.756 165.47 165.47 165.47 Numer scenariusza 13 14 15 16 Ψśr(b) [Mb/s] 161.208 165.47 164.68 164.68 Numer scenariusza 17 18 19 20 Ψśr(b) [Mb/s] 165.47 165.47 156.86 152.94 Numer scenariusza Ψśr(b) [Mb/s] 21 22 23 24 165.47 162.476 159.848 161.742 Numer scenariusza Ψśr(b) [Mb/s] Numer scenariusza Ψśr(b) [Mb/s] - 145 - Tabela 5.7. Wartości parametrów beta otrzymane dla poszczególnych scenariuszy dla topologii z rys. 4.4. Numer Beta3 Beta4 Beta5 Beta6 1 7.713 0.362 2.129 2.892 2 8.345 0.391 1.776 1.73 3 4.625 0.438 1.694 2.034 4 1.803 0.344 0.988 0.49 5 6.395 0.403 2.686 3.182 6 8.84 0.422 0.988 2.145 7 7.901 0.419 0.441 0.308 8 6.653 0.359 1.746 1.446 9 6.245 0.362 2.569 2.171 10 5.115 0.377 3.365 2.595 11 2.778 0.333 0.86 2.055 12 7.983 0.34 0.757 2.505 13 3.626 0.426 0.101 0.154 14 5.7 0.354 0.919 0.459 15 8.3 0.364 1.958 3.274 16 8.927 0.419 2.337 2.284 17 3.098 0.052 0.131 2.158 18 2.241 0.376 2.373 3.143 19 5.49 0.429 1.736 1.788 20 1.098 3.913 0.376 1.055 21 2.795 0.013 0.14 1.07 22 2.382 0.368 0.028 3.055 23 3.07 0.428 3.323 0.016 24 7.834 0.438 1.272 3.093 scenariusza Ponieważ routery 1 i 2 posiadają jedynie po dwa aktywne interfejsy, więc równoważenie obciążenia na tych routerach jest bezzasadne, a w konsekwencji nie zostały one uwzględnione w tabeli 5.4. Dokładniejsze wyjaśnienia dotyczące bezzasadności stosowania równoważenia obciążenia w tego typu przypadkach znajdują się w podrozdziale 2.4. - 146 - Czasy pracy algorytmu dla dwóch przebadanych topologii sieciowych są podobne. Natomiast czasy te dla różnych schematów schładzania w znacznym stopniu się różnią. Dokładne pomiary czasu działania algorytmu zostały wykonane jedynie dla wybranych scenariuszy. Brak konieczności dokładnego pomiaru czasu można umotywować tym, że we wszystkich badaniach algorytm znajdował najlepsze rozwiązanie już w pierwszej minucie pracy. Należy podkreślić, że czas obliczeń w sposób istotny zależy od przyjętego schematu schładzania. I tak, dla schematu liniowego czas ten (na komputerze wyposażonym w procesor 1.73 GHz, 1 GB pamięci operacyjnej i system Windows XP) to pojedyncze sekundy, dla schematu geometrycznego od około 10 sekund do kilku minut (zależnie od temperatury początkowej). Z kolei dla schematu logarytmicznego czas ten zawiera się w przedziale od pojedynczych minut do ponad 24 godzin. Tak duża rozpiętość czasów wynika z dwóch powodów. Po pierwsze, przy temperaturze początkowej równej 10000 stopni, liczba iteracji algorytmu jest sto razy większa niż przy temperaturze początkowej równej (wynoszącej) 100 stopni. Po drugie, czas pracy algorytmu jest zależny od kształtu funkcji użytej w schemacie schładzania. Dla przykładu, wartości funkcji logarytmicznej wzrastają „coraz wolniej” wraz ze wzrostem wartości jej argumentów, co w konsekwencji przekłada się na wydłużenie czasu działania algorytmu. Dodatkowo, poza przetestowanymi scenariuszami, przebadany został inny schemat schładzania polegający na obniżaniu temperatury o jeden stopień z każdą iteracją algorytmu (schemat iteracyjny21). Uruchamiając algorytm z temperaturą początkową równą sto stopni otrzymuje się rezultaty nie gorsze niż w innych scenariuszach. Przyjmując wspomnianą wartość temperatury początkowej i liniowy schemat schładzania, dla topologii z rys. 4.3 otrzymano średni czas pracy algorytmu równy 540 ms, zaś dla topologii z rys. 4.4 czas ten wynosił 15.5 ms. Dla trzeciej topologii przedstawionej na rys. 4.5 przeprowadzono badania z zastosowaniem iteracyjnego schematu schładzania oraz temperatury początkowej równej sto stopni. W wyniku otrzymano wartość przepustowości równą 2.5 Gb/s oraz czas pracy algorytmu około 16-17 ms. Wniosek z otrzymanych wyników jest następujący, ponad dziewięćdziesięciokrotny wzrost liczby tras (2276 dla topologii z rys 4.2 i 25 dla topologii z rys. 4.4) analizowanych przez algorytm przekłada się na niespełna trzydziestopięciokrotny wzrost czasu działania algorytmu. Dodatkowo warto zauważyć, że liczba tras aktywnych, którymi przesyłane były 21 Termin własny autora. - 147 - dane w konfiguracjach wyznaczonych przez algorytm była stosunkowo mała i nie przekraczała dziesięciu dla dowolnej pary komunikujących się ze sobą sieci (hostów). Inne szczegółowe wnioski zostały przedstawione w rozdziale 6. Warto podkreślić, że dla 50 uruchomień algorytmu, iteracyjnego schematu schładzania oraz temperatury początkowej 100 stopni, najlepszy uzyskany wynik to 207.5 Mb/s, co jest także najlepszym wynikiem spośród wszystkich badań przeprowadzonych dla pierwszej topologii sieciowej. Analogiczne pomiary dla drugiej topologii nie dały rezultatów lepszych niż 165.47 Mb/s. Dodatkowo warto zwrócić uwagę na wyniki pewnej obserwacji, a mianowicie liczba iteracji, w których występuje poprawa istniejącego rozwiązania (wzrost wartości funkcji celu) jest stosunkowo mała i dla temperatury początkowej 100 stopni oraz iteracyjnego schematu schładzania, nie przekroczyła 10% w stosunku do wszystkich wykonanych iteracji oraz obydwu przebadanych topologii. Na wykresach 5.1, 5.2 oraz 5.3 zostały w sposób graficzny przedstawione wyniki optymalizacji przepustowości sieciowej dla topologii z rys. 4.3, 4.4 oraz 4.5. Słupek pierwszy przedstawia wartość Ψ(b) wyliczoną bez równoważenia obciążenia. Słupek drugi - Ψ(b) z równoważeniem typu RK. Słupek trzeci - maksymalną wartość Ψ(b) uzyskaną podczas badań na podstawie przyjętych scenariuszy (z równoważeniem obciążenia typu NK). Słupek 4 maksymalną wartość Ψ(b) uzyskaną podczas 50 uruchomień algorytmu z temperaturą początkową sto stopni i iteracyjnym schematem schładzania. Niewątpliwym wnioskiem z powyższych obserwacji jest występowanie wzrostu przepustowości po włączeniu równoważenia obciążenia typu RK oraz dalszy wzrost po włączeniu równoważenia typu NK. Wyniki optymalizacji przepustowości dla topologii pierwszej 250 Przepustowość [Mb/s] 200 150 100 50 0 1 2 3 4 Wykres 5.1. Wyniki optymalizacji Ψ(b) przeprowadzonej za pomocą metody symulowanego wyżarzania dla topologii pierwszej. - 148 - Wyniki optymalizacji przepustowości dla topologii drugiej 170 Przepustowość [Mb/s] 165 160 155 150 145 140 1 2 3 4 Wykres 5.2. Wyniki optymalizacji Ψ(b) przeprowadzonej za pomocą metody symulowanego wyżarzania dla topologii drugiej. Wyniki optymalizacji przepustowości dla topologii trzeciej 3000 Przepustowość [Mb/s] 2500 2000 1500 1000 500 0 1 2 3 4 Wykres 5.3. Wyniki optymalizacji Ψ(b) przeprowadzonej za pomocą metody symulowanego wyżarzania dla topologii trzeciej. 5.2 Wyniki badań przeprowadzonych z wykorzystaniem metody dokładnej Badania przepustowości z zastosowaniem metody dokładnej tj. PL, zostały przeprowadzone przy użyciu oprogramowania Premium Solver V9.0. Optymalizacja została przeprowadzona zgodnie z zadaniem zdefiniowanym w podrozdziale 3.2. Ponieważ w swojej oryginalnej postaci zadanie to odnosi się jedynie do grafów skierowanych, wiec w celu implementacji grafu nieskierowanego wprowadzono pewne modyfikacje. Modyfikacje te polegają na przedstawieniu każdego łącza sieciowego e j jako dwóch przeciwnie zwróconych krawędzi grafu skierowanego, oznaczonych jako e +j oraz e −j . Jednocześnie wprowadzono następujące ograniczenie: suma wykorzystywanych przepustowości dwóch przeciwnie skierowanych - 149 - krawędzi nie może przekraczać nominalnej przepustowości łącza, które krawędzie te reprezentują, co można zapisać jako: ∀e j ∈ E π +j + π −j ≤ π j (5.1) Warto podkreślić, że zastąpienie jednej krawędzi dwoma nie przekłada się na sformułowanie zadania optymalizacji, lecz ma wpływ na rozmiar macierzy reprezentującej topologię optymalizowanej sieci. W konsekwencji takie zastąpienie ma wpływ na czas przeprowadzania optymalizacji. Poniżej znajdują się uzyskane wyniki badań przeprowadzonych z wykorzystaniem metody dokładnej. Dla pierwszej topologii tj. przedstawionej na rys. 4.3, otrzymano wartość Ψ(b) równą 210 Mb/s. Natomiast w zastosowaniu do drugiej topologii sieciowej tj. przedstawionej na rys. 4.4, otrzymano wartość Ψ(b) równą 190 Mb/s. Analogicznie dla topologii z rys. 4.5, otrzymano wartość Ψ(b) równą 3 Gb/s. Czas działania solvera dla topologii z rys. 4.3 wynosił około dwóch sekund, zaś dla topologii z rys. 4.4 poniżej jednej sekundy. Natomiast dla topologii z rys. 4.5 plasował się w przedziale od jednej do dwóch sekund. Warto zaznaczyć, że zastosowane narzędzie umożliwia pomiar czasu działania z dokładnością do pojedynczej sekundy, a uzyskanie większej dokładności pomiarowej nie jest konieczne. Pozostając przy metodzie dokładnej, warto zwrócić uwagę na pewien fakt dotyczący liczby iteracji, a mianowicie dla topologii z rys. 4.3 algorytm wykonał 32 iteracje, natomiast dla topologii z rys. 4.4 liczba ta wynosiła zaledwie 7. Wniosek z tego badania jest stosunkowo prosty, zwiększenie liczby routerów z 4 (topologia z rys. 4.4) do 10 (topologia z rys. 4.3) przełożyło się na ponad cztero i półkrotne zwiększenie liczby iteracji algorytmu. Natomiast dokładną zależność złożoności obliczeniowej metody dokładnej jako funkcji liczby elementów sieci przedstawia wzór (6.19). Dokładna analiza wyników uzyskanych za pomocą metod SW oraz PL znajduje się w rozdziale 6. W rozdziale tym znajdują się również szczegółowe wnioski z powyższych obserwacji. Natomiast w tym miejscu warto dodać, że dla przyjętej charakterystyki ruchu sieciowego oraz sposobu dostępu do medium, otrzymane wyniki to jednocześnie górne ograniczenia przepustowości dla badanych topologii. - 150 - 5.3 Podsumowanie Dokładna dyskusja uzyskanych wyników badań, a także płynące z nich wnioski znajdują się w rozdziale 6, natomiast istotne jest, że badania zakończyły się pomyślnie (wszystkie zaplanowane badania zostały wykonane), a otrzymane wyniki należy uznać za wysoce zadowalające tzn. zgodne z oczekiwanymi. W konsekwencji, dla analizowanych przypadków, słuszność głównej tezy tej pracy została potwierdzona. Ponadto, potwierdziła się także reguła mówiąca, że metodę symulowanego wyżarzania należy stosować w połączeniu z tzw. wielostartem. - 151 - Rozdział 6 Analiza uzyskanych wyników W rozdziale tym zostanie przeprowadzona szczegółowa analiza badań nad optymalizacją przepustowości środowiska sieciowego z wykorzystaniem metody symulowanego wyżarzania. Analiza ta obejmuje następujące aspekty: • Porównanie wyników uzyskanych za pomocą metody symulowanego wyżarzania oraz programowania liniowego; • Porównanie czasów działania badanego algorytmu SW oraz metody dokładnej, czyli PL; • Oszacowanie oraz porównanie złożoności obliczeniowej algorytmu SW ze złożonością metody dokładnej, w tym przypadku Simplex, oraz innymi wybranymi metodami heurystycznymi; • Ocena zasadności stosowania algorytmów heurystycznych (na przykładzie algorytmu SW) do badanego zagadnienia; • Krótkie omówienie niezawodności proponowanego rozwiązania. Dodatkowo w bieżącym rozdziale znajduje się opis zalet i wad algorytmu 3 (służącego do wyliczania Ψ(b)), wraz z prostym przykładem działania oraz krótką analizą porównującą jego złożoność ze złożonością algorytmu dokładnego. Rozdział kończy krótkie podsumowanie zawierające najważniejsze wnioski oraz obserwacje powstałe po przeprowadzonych badaniach. 6.1 Analiza uzyskanych wyników przy braku równoważenia obciążenia, oraz z równoważeniem typu RK i NK . Podczas badań przeprowadzonych dla topologii sieciowej z rys. 4.3 z włączonym równoważeniem typu NK otrzymano maksymalną wartość Ψ(b) równą 207.5 Mb/s. Dla równoważenia typu RK Ψ(b) wyniosła 133 Mb/s, zaś bez równoważenia - 100 Mb/s. Jak widać z otrzymanych wyników, włączenie równoważenia obciążenia typu NK poprawiło przepustowość sieci o około 56% w porównaniu do równoważenia typu RK i aż o ponad 107% w porównaniu z przepustowością sieci bez równoważenia obciążenia. Natomiast dla topologii przedstawionej na rys. 4.4 w obydwu przypadkach otrzymano wzrost przepustowości o nieco ponad 10%. Przechodząc do trzeciej topologii tj. z rys. 4.5, z włączonym równoważeniem typu NK otrzymano maksymalną wartość Ψ(b) równą 2.5 Gb/s. - 152 - Dla równoważenia typu RK Ψ(b) wyniosła 2 Gb/s, zaś bez równoważenia – 1 Gb/s. Jak widać z otrzymanych wyników, włączenie równoważenia obciążenia typu NK poprawiło przepustowość sieci o 25% w porównaniu do równoważenia typu RK i aż o 150% w porównaniu z przepustowością sieci bez równoważenia obciążenia. Wniosek z powyższych obserwacji może być taki, że wraz ze wzrostem złożoności topologii sieci, włączenie równoważenia typu NK skutkuje coraz większym wzrostem jej przepustowości. Mając na uwadze rozmiary badanych sieci oraz ich złożoność otrzymane wyniki należy uznać za zadowalające, i co równie istotne, uzyskane w czasie rzeczywistym. Odnosząc się do poszczególnych scenariuszy badań i otrzymanych wyników warto zauważyć, że wraz ze wzrostem złożoności sieci wyniki te coraz bardziej się różnią. Dla topologii z rys. 4.4 algorytm zawsze wyznaczał wartość maksymalną (największą uzyskaną podczas badań) przynajmniej raz na pięć uruchomień i to bez względu na przyjęty scenariusz. Natomiast dla bardziej złożonej topologii tej z rys. 4.3, różnice pomiędzy wynikami dla poszczególnych scenariuszy dochodziły do niemalże 20 %. Kolejnym istotnym wnioskiem jest to, że wybór schematu schładzania, a w konsekwencji czasu działania algorytmu, ma mały wpływ na otrzymywane wyniki. Dowodem na to może być fakt, że najlepszy wynik dla topologii z rys. 4.3 otrzymano dla schematu „najszybszego”, czyli iteracyjnego. W konsekwencji można wysnuć hipotezę, że długość czasu pracy algorytmu w małym stopniu przekłada się na jakość otrzymywanych wyników. Natomiast w sposób bardzo znaczący na wspomnianą jakość przekłada się liczba uruchomień algorytmu, czyli omawiany już wcześniej wielostart. Nie było to przedmiotem szczegółowych badań, lecz zaobserwowano, że algorytm w około 90% przypadków wyznacza najlepsze rozwiązanie (najlepsze dla jednego uruchomienia) w pierwszych 100 iteracjach (i to dla obydwu przebadanych topologii). Wniosek z tego może być następujący: należy tak wyliczyć temperaturę początkową i dobrać schemat schładzania, aby temperaturę końcową osiągnąć po około 100 – 150 iteracjach. Takie podejście, choć jednorazowo zajmuje pewien czas to w konsekwencji w znaczny sposób skraca czas pracy algorytmu (jednego jego uruchomienia). W konsekwencji, pozostaje więcej czasu na kolejne jego uruchomienia – ze wcześniejszych ustaleń wynika, że opisane rozwiązanie ma działać w czasie rzeczywistym, czyli wyznaczać rozwiązanie zanim zmienią się warunki implikujące to rozwiązanie. Reasumując warto podkreślić, że otrzymane wyniki potwierdzają przyjętą w pracy tezę badawczą, co w konsekwencji może stanowić motywację do dalszego twórczego rozwoju oraz doskonalenia zastosowanej metody. - 153 - 6.2 Czasy pracy algorytmu SW oraz metody dokładnej. Czas pracy algorytmu zależy od wartości następujących parametrów: temperatury początkowej, liczby iteracji bez modyfikacji temperatury oraz schematu schładzania. Rozpiętość czasów jest duża, od ułamków sekund do ponad godziny. Jednym z istotnych wniosków odnośnie czasów działania algorytmu jest to, że wartość uzyskiwanego wyniku nie jest zależna od tego czasu (dla różnych scenariuszy otrzymywano różne czasy i podobne wartości wyników). Przy zastosowaniu schematu liniowego metoda działa w czasie rzeczywistym, a dokładniej czas pracy algorytmu wynosi około 3 – 5 sekund. Omawiając czasy działania algorytmu SW nie sposób pominąć faktu, że przy zastosowaniu zaproponowanego schematu iteracyjnego i temperatury początkowej równej sto stopni, czas jego pracy dla topologii z rys. 4.3 wynosił średnio zaledwie 540 ms, a dla topologii z rys. 4.4 i 4.5 jedynie w okolicach 15.5 - 17 ms. Na podstawie wykonanych pomiarów, można postawić hipotezę, że czas pracy algorytmu jest, (lecz słabo) zależny od złożoności sieci komputerowej. Porównując czasy zmierzone dla obydwu topologii, warto zauważyć, że wzrost liczby tras, po których może być przesyłany ruch sieciowy ponad 90 razy (2276 dla topologii z rys. 4.3 i 25 dla topologii z rys. 4.4.) skutkował wzrostem czasu działania algorytmu SW jedynie niecałe 35 razy (540/15.5). Przechodząc do metody dokładnej warto zwrócić uwagę na następujący fakt. Dla topologii z rys. 4.4 i 4.5 jej czas działania wynosił poniżej jednej sekundy, zaś metody SW 15.5 – 17 ms. Natomiast dla bardziej złożonej topologii tj. przedstawionej na rys. 4.3, czas działania metody dokładnej jest już blisko cztery razy dłuższy (około dwie sekundy w porównaniu do 540 ms) niż dla metody SW. Wniosek płynący z porównania czasów działania obydwu wykorzystanych metod jest dość klarowny, a mianowicie już dla tak niedużych topologii jak z rys. 4.3 metoda dokładna działa znacznie wolniej niż metoda SW. Więcej informacji i wniosków na temat porównania obydwu metod w kontekście badanego zagadnienia znajduje się w podrozdziale 6.5. 6.3 Złożoność metody Simplex. W ogólnym przypadku metoda Simpleks ma złożoność wykładniczą. Wynika to z faktu, że w najgorszym razie do znalezienia rozwiązania optymalnego, wymagane jest sprawdzenie µ wszystkich rozwiązań dopuszczalnych, bo właśnie tyle w przypadku pesymistycznym η może być układów liniowo niezależnych wektorów bazowych [132], gdzie - 154 - µ – liczba ograniczeń w postaci równań lub nierówności, η – liczba argumentów (zmiennych) funkcji celu. Natomiast do znalezienia rozwiązania potrzebnych jest przeciętnie od 2 µ do 3µ iteracji [110][111][112]. Poruszając tego typu zagadnienie nie sposób pominąć faktu, że zadanie przedstawione w podrozdziale 3.2 posiada przynajmniej dwie dość istotne wady. Pierwszą z nich jest to, że w celu implementacji grafu nieskierowanego należy wprowadzić pewne modyfikacje, które dokładnie zostały opisane w podrozdziale 5.2. Drugą wadą jest brak możliwości przeprowadzenia optymalizacji przepustowości sieci komputerowej w sytuacji kiedy pewien host (a dokładniej router będący dla niego bramą) jest jednocześnie nadawcą i odbiorcą pewnej ilości informacji. Zgodnie z oznaczeniami przyjętymi w rozdziale 3, rzyjmijmy, że w sytuacji przedstawionej na rys. 6.1. komunikacja odbywa się w następujący sposób: • H2 pobiera od H1 dk danych; • H3 pobiera od H1 dk danych; • H3 pobiera od H2 dk danych. Rys. 6.1. Przykładowa sieć komputerowa z routerami brzegowymi. W opisanej powyżej sytuacji z R1 jest wysyłane 2δ k 1 danych, R2 odbiera δ k 2 danych oraz taką samą ilość wysyła, natomiast R3 pobiera 2δ k 3 danych. Zgodnie z ograniczeniem przedstawionym w (3.4), dla wszystkich routerów „wewnętrznych” tj. wszystkich za wyjątkiem „wejściowych” i „wyjściowych”, każdy z nich powinien wysyłać i odbierać tyle samo danych. W konsekwencji założenia dotyczące wektora ruchu sieciowego tj.: δ ki = d k jeśli (Ri jest węzłem początkowym pary k), δ ki = − d k jeśli (Ri jest węzłem końcowym - 155 - pary k), w pozostałych przypadkach δ ki = 0 , są oczywiście spełnione wewnątrz elipsy symbolizującej konkretny obszar OSPF (routery wewnętrzne). Przechodząc do routerów brzegowych tj. R1, R2 i R3, nie trudno zaobserwować, że: δ k1 = −2d k ; δ k 2 = − d k + d k = 0; δ k 3 = 2d k . W konsekwencji router R2 nie będąc routerem „wewnętrznym” wysyła tyle samo danych ile odbiera, czyli spełnia warunki routera „wewnętrznego” i tak też zostanie podczas przeprowadzania optymalizacji potraktowany. W efekcie, optymalizacja wykonana zgodnie z modelem przedstawionym w podrozdziale 3.2 i wyżej założoną charakterystyką ruchu sieciowego da rezultaty zgoła odmienne od oczekiwanych. Jej wynikiem będzie „pominięcie” routera 2 i takie wyznaczenie wartości optymalnych, jakby zadanie sprowadzało się jedynie do wymiany danych w ilości 2dw tylko pomiędzy routerami R1 i R3, co oczywiście jest sprzeczne z przyjętym założeniem odnośnie charakterystyki ruchu sieciowego. Wadę tę można „obejść” np. poprzez wprowadzenie tzw. routerów wirtualnych. Idea takiej koncepcji polega na „podziale” tych routerów brzegowych, które zarówno wysyłają dane do sieci (a dokładniej optymalizowanego obszaru) jak i je z tej sieci odbierają (przykładem może być router R2 z rys. 6.1) na α routerów wirtualnych. Przy czym symbol vi oznacza liczbę routerów wirtualnych odpowiadającą routerowi rzeczywistemu Ri. Liczba routerów wirtualnych powinna być równa sumie liczby wirtualnych + routerów „wejściowych” (oznaczonych jako vi ), od których dany router pobiera dane oraz − liczbie routerów „wyjściowych” (oznaczonych jako vi ), czyli tych do których router dane wysyła. Przy zachowaniu powyższych oznaczeń, liczbę routerów wirtualnych odpowiadającą routerowi rzeczywistemu można zapisać następująco: ∀1 ≤ i ≤ m + vi = vi + vi − (6.1) Analogicznie należy postąpić z łączem (łączami) podłączonymi do „podzielonego” routera. Każdy router wirtualny powinien posiadać jeden interfejs wewnątrz optymalizowanego obszaru oraz jeden interfejs zewnątrz tego obszaru. W omawianym modelu łącza prowadzące na zewnątrz optymalizowanego obszaru (sieci) nie są uwzględnione i z tej przyczyny zostały pominięte w dalszej części tego podrozdziału. Natomiast to jak interfejs jest położony względem wirtualnego routera zależy od tego czy dla danej komunikującej się pary router ten jest routerem wysyłającym dane – interfejs skierowany od routera, lub odbierającym dane – interfejs skierowany do routera. Przyjmijmy następujące oznaczenia: e +j - łącze skierowane do routera wirtualnego; e −j - łącze skierowane od routera wirtualnego. - 156 - Ponadto dość oczywistym jest fakt, że suma przepustowości interfejsów „wychodzących” z routerów wirtualnych plus suma przepustowości interfejsów do nich „wchodzących” nie może być większa niż nominalna przepustowość fizycznego interfejsu nieskierowanego, co można zapisać jako: m m ∑π j + ∑π j ≤ π j ∀e j ∈ E + (6.2) − i =1 i =1 Jest oczywiste, że wprowadzenie do omawianego modelu modyfikacji mających na celu dostosowanie go do rzeczywistych potrzeb i warunków, pociąga za sobą wzrost i tak już dużej jego złożoności obliczeniowej. Złożoność ta została w podrozdziale 3.2 zakwalifikowana do klasy problemów typu NP-trudnych. Natomiast próba oceny wpływu wprowadzonej modyfikacji na złożoność obliczeniową omawianego modelu została przedstawiona poniżej. sieć Rozpatrzmy komputerową reprezentowaną jako graf nieskierowany G = (m, n) składający się z m wierzchołków (routerów) oraz n krawędzi (łączy). Ponadto ~ przyjmijmy, że graf ten posiada m ≤ m wierzchołków reprezentujących routery „wejściowe” lub „wyjściowe”, zwanych dalej wierzchołkami (routerami) zewnętrznymi (lub brzegowymi), ~ a także n ≤ n krawędzi łączących routery zewnętrzne z wewnętrznymi. W celu kompletnego przedstawienia omawianego zagadnienia należy przyjąć jeszcze jedno całkowicie naturalne założenie, a mianowicie, że każdy host podłączony do tej sieci może komunikować się z dowolnym innym także do niej podłączonym. Konsekwencją tego założenia jest ~ „podzielenie” m routerów zewnętrznych na ~ ~ ~ m z = m(m− 1) (6.3) wirtualnych routerów zewnętrznych. Zadanie przedstawione w podrozdziale 3.2 posiada m wierzchołków (routerów) oraz n krawędzi (łączy), natomiast po wprowadzeniu modyfikacji mających na celu zapewnienie komunikacji dwukierunkowej pomiędzy dowolnymi hostami jednocześnie, otrzymujemy następujące wzory na: Liczbę węzłów ~ ~ ~ m * = m(m− 1) + (m − m) (6.4) oraz liczbę łączy ~ ~ ~ ~ n * = m(m− 1) n + 2(n − n) (6.5) - 157 - ~ Przyjmując konkretne wartości liczbowe np. m = 10 , m = 0 .5 m , n = 45 , ~ n = 22 otrzymujemy: ~ ~ m z = 5(5 − 1) = 20 routerów wirtualnych oraz m − m = 10 − 5 = 5 routerów rzeczywistych, co w sumie daje 25 wierzchołków. Przechodząc do krawędzi, otrzymujemy: m * = 5 * (5 − 1) * 22 + 2 * (45 − 22) po obliczeniu m * = 486 Reasumując, dla tak niewielkiej sieci składającej się tylko z 10 routerów, wprowadzenie modyfikacji mających na celu dostosowanie zadania przedstawionego w podrozdziale 3.2 do warunków rzeczywistych spowodowało dwu i półkrotny wzrost liczby routerów oraz prawie jedenastokrotny wzrost liczby łączy. Mając na uwadze fakt, że analizowany model należy do problemów klasy NP.-trudnych, wprowadzenie modyfikacji mających na celu dostosowanie go do realnych potrzeb prawdopodobnie spowoduje, że rozwiązanie to przestanie działać w czasie rzeczywistym. Powracając do złożoności metody Simplex, należy zaznaczyć, że w 1979 roku L. G. Chaczijan [113], oraz w 1984 roku N. Karmarkar [115] niezależnie przedstawili algorytmy o złożoności wielomianowej służące do rozwiązywania problemów z zakresu programowania liniowego. Algorytmy te posiadają jednak pewną wadę, a mianowicie przewagę nad metodą Simpleks uzyskują dopiero przy problemach posiadających około pięciu tysięcy zmiennych decyzyjnych oraz tysiąca ograniczeń, co czyni je mało przydatnym do optymalizacji przepustowości sieci komputerowych o rozmiarach obszaru OSPF. Przechodząc do omówienia złożoności metody Simplex nie sposób pominąć tak istotnej kwestii jak opis poszczególnych jej etapów (kroków). Kroki te zostały szczegółowo opisane w rozdziale 3, warto jednak wspomnieć, że są one następujące: • krok 0 – sprowadzenie zadania do postaci kanonicznej – bazowej; • krok 1 – wyznaczenie pierwszego rozwiązania bazowego – dopuszczalnego; • krok 2 – sprawdzenie optymalności rozwiązania bazowego; • krok 3 – zastosowanie kryterium wejścia i wyjścia w celu poprawienia aktualnego rozwiązania bazowego; • krok 4 – wymiana wektorów w bazie – nowe poprawione rozwiązanie bazowe (nowa postać tablicy simpleksowej); • powrót do kroku 2. - 158 - Dodatkowo warto poruszyć kilka istotnych kwestii, a mianowicie krok 2 jest realizowany poprzez wyliczenie tzw. wskaźników optymalności. Liczba tych wskaźników jest równa liczbie zmiennych niebazowych, a wyznaczenie każdego z nich można potraktować jako pojedynczą operację prostą. Krok 3 składa się z wyboru zmiennej o najwyższym współczynniku optymalności – jedna operacja prosta, obliczenie ilorazów kolejnych wyrazów wolnych przez odpowiadające im elementy kolumny związanej ze zmienną wchodzącą do bazy – liczba operacji prostych jest zbliżona do liczby równań ograniczeń, wymiana odpowiednich zmiennych – jedna operacja. Natomiast wyliczenie tablicy simpleksowej (kroki 1 oraz 4) wymaga wykonania dwóch działań tj. wyznaczenia macierzy odwrotnej dla macierzy tablicy Simplex związanej z nowym układem zmiennych - O(m2.376) operacji, oraz pomnożenia jej przez macierz tablicy Simpleks związaną z aktualną bazą – O(m2.376) operacji. Pewnego wyjaśnienia może wymagać czynnik O(m2.376). Otóż w celu zarówno utworzenia macierzy odwrotnej jak i pomnożenia dwóch macierzy przez siebie, przy zastosowaniu najszybszego z obecnie znanych algorytmów tj. algorytmu Coppersmith’a-Winograd’a [108] [109] niezbędnym jest wykonanie m 2.376 mnożeń, gdzie m (zgodnie z oznaczeniami przyjętymi w rozdziale 3) jest liczbą wierszy macierzy, a w analizowanym przypadku także liczbą nierówności lub równań ograniczających. Reasumując, w każdej iteracji metody Simplex liczba operacji prostych przedstawia się następująco: • krok 0 – m operacji; • krok 1 – 2 m 2.376 operacji; • krok 2 – m operacji; • krok 3 – 1 + m + 1 = 2 + m operacji; • krok 4 – 2 m 2.376 operacji. Po uwzględnieniu liczby iteracji algorytmu „ ε ”, złożoność jego działania może zostać wyrażona wzorem: O(m, ε ) = m + 2m 2.376 + ε * (3m + 2m 2.376 ) (6.6) - 159 - Zlożonośc metody dokładnej 80000 70000 60000 50000 O(m,eps) 40000 30000 20000 10000 0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 m S16 S11 eps S6 S1 Wykres 6.1. Złożoność metody dokładnej. Tak jak już zostało wcześniej powiedziane, wyniki uzyskiwane za pomocą metody dokładnej są zależne od początkowych wartości zmiennych decyzyjnych, natomiast metoda SW powinna być stosowana w połączeniu z wielostartem. Jeśli przyjąć, że początkowe wartości zmiennych decyzyjnych są losowane z całego zbioru wartości dopuszczalnych, to wynik metody SW także jest zależny od początkowych wartości zmiennych decyzyjnych. W tej kwestii obydwie metody są do siebie podobne. 6.4 Porównanie złożoności innych wybranych metod heurystycznych i metody SW Mając na celu jak najbardziej pełne przedstawienie poruszanej tematyki, celowe jest porównanie złożoności metody SW ze złożonością wybranych algorytmów heurystycznych. Do celów porównania wybrano dwa popularne oraz szeroko opisywane w literaturze algorytmy tj. algorytm genetyczny oraz „tabu search”. Algorytm genetyczny można potraktować jako przedstawiciela grupy algorytmów wykorzystujących heurystyki populacyjne, opierające się na idei przeszukiwania zespołowego. Natomiast dla kontrastu, drugi wybrany do porównania algorytm tj. przeszukiwania z tabu nazywany jest algorytmem samotnego poszukiwacza. Wiele interesujących informacji na temat tych algorytmów, a także - 160 - innych algorytmów heurystycznych oraz ich zastosowania w dziedzinie informatyki znajduje się w [126][127][128][129][130][131]. Przechodząc do omówienia wybranych algorytmów najpierw przedstawię ich zapisy w pseudokodzie. Ogólny zwerbalizowany zapis algorytmu genetycznego przedstawia się następująco. Algorytm 6 start Algorytm_genetyczny() ustal_warunki_początkowe dla_każdego członków_populacji wykonaj ocen_dopasowanie_każdego_osobnika() koniec_dla_każdego powtarzaj wybierz_najlepiej_dopasowane_osobniki_do_reprodukcji() utwórz nowa_populacje() zastosuj_krzyżowanie() zastosuj_mutację() ocen_dopasowanie_każdego_osobnika() uaktualnij_warunek_stopu; dopóki (warunek_stopu) zwróć najlepsze_rozwiązanie koniec Przyjmując następujące oznaczenia: S – populacja osobników (wektorów zmiennych decyzyjnych); x – wektor zmiennych decyzyjnych algorytmu (osobnik populacji S) x ∈ S ; x* – wektor najlepszych dotychczas wyznaczonych zmiennych decyzyjnych; φ(x) – wartość funkcji oceny rozwiązania (zwanej także dopasowania lub energii); φ* – najlepsza dotychczas uzyskana wartość funkcji oceny; k – numer kolejnej iteracji algorytmu; kmax – maksymalna liczba iteracji algorytmu; select(x,φ*) – funkcja wybierająca najlepiej przystosowanych osobników (na podstawie najlepszej dotychczas uzyskanej wartości funkcji oceny); - 161 - cross(x) – funkcja przeprowadzająca krzyżowanie osobników; mut(x) – funkcja przeprowadzająca mutację osobników; zapis algorytmu genetycznego przedstawić można następująco. Algorytm 7 start Algorytm_genetyczny() ustal x; x* ← x; φ*← φ(x); k := 0; dla_każdego S wykonaj wyznacz φ(x) koniec_dla_każdego powtarzaj x := select(x,φ*) x := cross(x) x := mut(x) dla_każdego S wykonaj wyznacz φ(x) jeżeli (φ(x) > φ*) to φ*← φ(x); x* ← x; koniec_jeżeli koniec_dla_każdego k := k+1; dopóki (k<=kmax) zwróć x* koniec Stosując algorytm 7 do takiego samego zadania optymalizacji jak zastosowano algorytm SW, należy dokonać pewnych utożsamień. Mianowicie: • pojedynczego osobnika można utożsamić z wektorem współczynników beta; - 162 - • ocenę dopasowania osobnika x (wektora współczynników beta) można przeprowadzić z zastosowaniem funkcjonału określonego wzorem (3.31) tj. wartości Ψ(b). Wspomniany wektor jest zbudowany w taki sposób, że każda jego składowa przypisana jest do jednego routera z optymalizowanego obszaru sieci. Natomiast ocena dopasowania polega na wyznaczeniu różnicy pomiędzy maksymalną wyliczoną wartością Ψ(b), a wartością wyliczona dla konkretnego osobnika. Przechodząc do porównania złożoności obliczeniowych obydwu algorytmów warto przyjąć pewne założenia upraszczające. Po pierwsze, złożoność inicjalizacji początkowych warunków pracy obydwu algorytmów jest taka sama albo bardzo zbliżona. Po drugie rozważaniu należy poddać pojedynczą iterację algorytmu. Uzasadnieniem dla pierwszego założenia jest fakt, że inicjalizacja wartości początkowych parametrów pracy algorytmów wnosi w obydwu przypadkach pomijalnie mały przyczynek do ich pełnej złożoności obliczeniowej. Natomiast porównując zasadnicze sekcje składowe obydwu algorytmów takie jak: inicjalizacja, zasadnicza iteracja, sprawdzenie warunku stopu, widać znaczne ich podobieństwo, co można potraktować jako uzasadnienie założenia drugiego. Jednak należy mieć na uwadze fakt, że operacje występujące w części zasadniczej algorytmu genetycznego takie jak: wybór najlepiej przystosowanych osobników, krzyżowanie czy mutacja wymagają większej liczby obliczeń niż analogiczne operacje z części zasadniczej algorytmu SW, czyli sprawdzenie reguły Metropolisa czy wyznaczenie przepustowości routerów. Przechodząc do dokładniejszego porównania złożoności obliczeniowych, istotne jest to, że wyznaczenie wartości funkcji oceny (w tym przypadku wartości Ψ(b)) posiada największy wkład do wspomnianej złożoności – wartość ta jest wyznaczana w każdej iteracji algorytmu i jest najbardziej złożoną (a co za tym idzie czasochłonną) jej częścią. W tym miejscu pojawia się główna (koncepcyjna) różnica pomiędzy działaniem algorytmu SW i algorytmu genetycznego. Algorytm SW operuje na „jednym osobniku” natomiast algorytm genetyczny do prawidłowego funkcjonowania potrzebuje całej ich populacji. Wyznaczając wartość funkcji oceny (wartość Ψ(b)) dla każdego osobnika, algorytm genetyczny posiada złożoność obliczeniową przynajmniej taką jak algorytm SW razy liczba osobników populacji. Innymi słowy złożoność algorytmu genetycznego jest znacząco większa, co czyni go w tym obszarze i w porównaniu z algorytmem SW zdecydowanie mniej przydatnym. Przed przedstawieniem pseudokodu algorytmu „przeszukiwania z zakazem” warto zaznaczyć, że algorytm ten posiada mnóstwo różnego rodzaju rozszerzeń oraz modyfikacji i podobnie jak - 163 - inne algorytmy heurystyczne, może stanowić przedmiot osobnej pracy. W związku z powyższym przedstawiony schemat wzmiankowanego algorytmu ma bardzo „zgrubny” charakter. W szczególności stosowana w nim reguła selekcji może sama w sobie być bardzo zaawansowaną strategią heurystyczną, co oczywiście przekłada się na złożoność obliczeniową algorytmu. Ogólny zwerbalizowany zapis algorytmu „tabu search” przedstawić można następująco. Algorytm 8 start Algorytm_tabu_search() ustal_warunki_początkowe powtarzaj wyzncz_sasiedztwo_x; uaktualnij T; ocen_nowe_rozwiązanie() uaktualnij_warunek_stopu; dopóki (warunek_stopu) zwróć najlepsze_rozwiązanie koniec Przyjmując dodatkowo następujące oznaczenia: T – zbiór tabu; RS – reguła selekcji nowych zmiennych decyzyjnych z sąsiedztwa obecnych (uwzględniająca kryteria aspiracji); Nd(x,T) – sąsiedztwo dynamiczne zmiennych decyzyjnych x, zależne od zbioru tabu T; Bardziej szczegółowy zapis algorytmu „tabu search” przedstawić można następująco. Algorytm 9 start Algorytm_tabu_search() ustal x; x* ← x; φ*← φ(x); k := 0; powtarzaj x:=RS(x,Nd(x,T)); - 164 - T := T ← x; jeżeli (φ(x) > φ*) to φ*← φ(x); x* ← x; koniec_jeżeli k:= k+1; dopóki (k<=kmax) zwróć x* koniec Stosując algorytm 9 do zadania optymalizacji przepustowości sieci komputerowej, podobnie jak w poprzednim przypadku, (tj. algorytmu genetycznego), należy dokonać pewnych utożsamień. Mianowicie: • wektor zmiennych decyzyjnych algorytmu jest utożsamiany z wektorem współczynników beta; • ocena wartości wektora zmiennych decyzyjnych jest przeprowadzana z zastosowaniem funkcjonału określonego wzorem (3.31) tj. wartości Ψ(b). Przechodząc do porównania złożoności obliczeniowych algorytmu SW (algorytmu 5) oraz algorytmu przeszukiwania z tabu (algorytmu 9), należy stwierdzić, że w obydwu przypadkach mamy do czynienia z „jednym osobnikiem”. Podobnie jak w przypadku poprzednim, występują takie same zasadnicze sekcje składowe obydwu algorytmów tj.: inicjalizacja, zasadnicza iteracja, sprawdzenie warunku stopu. Ponownie warto zauważyć, że złożoność sekcji pierwszej, a także i trzeciej (czyli inicjalizacji oraz sprawdzenia warunku stopu) dla obydwu algorytmów jest taka sama albo bardzo zbliżona. Różnice natomiast występują w złożoności pojedynczej iteracji obydwu algorytmów. Główne składowe iteracji algorytmu 9 to: wyznaczenie sąsiedztwa zmiennych decyzyjnych Nd(x,T) oraz wybór nowych wartości zmiennych decyzyjnych mających na celu poprawienie bieżącego rozwiązania. Mając na uwadze specyfikę zadania optymalizacji przepustowości sieci, wybór sąsiedztwa można przeprowadzać z wykorzystaniem parametru przepustowość routera – analogicznie jak w algorytmie 5. Jeśli przepustowość routera wzrasta wraz z kolejną iteracją algorytmu to sąsiedztwo dla odpowiedniego parametru beta jest ustalane jako przedział pomiędzy wartością obecną, a wartością maksymalną. Analogicznie, jeśli wartość przepustowości ulegnie zmniejszeniu, nowe sąsiedztwo jest ustalane jako przedział zero, wartość obecna. - 165 - Zgodnie z zasadą działania algorytmu 9, z wyznaczonego sąsiedztwa należy wyłączyć (zakazać) wartości zmiennych decyzyjnych, które były już używane w poprzednich jego iteracjach. Długość listy zakazanych wartości ma spory wpływ na jakość uzyskiwanych wyników oraz szybkość działania algorytmu, zaś sam fakt jej istnienia znacząco różni obydwa porównywane algorytmy. Mając na uwadze specyfikę zadania optymalizacji przepustowości, sposób wyboru nowych wartości parametrów beta z wyznaczonego sąsiedztwa (takich żeby uzyskać poprawę funkcji oceny) jest zadaniem trudnym. W tym miejscu warto powtórzyć, że stosowana w algorytmie „tabu search” reguła selekcji może sama w sobie być bardzo zaawansowaną strategią heurystyczną. Mając na uwadze powyższe względy oraz fakt, że rozwiązanie musi działać w czasie rzeczywistym, proponuję wybór ten dokonywać w sposób losowy z zastosowaniem rozkładu jednostajnego (analogicznie jak w algorytmie SW). Kontynuując porównanie złożoności obliczeniowych pojawia się pewna obserwacja. Analizowane zadanie sprowadza się do porównania złożoności operacji „wyłączania” zakazanych wartości zmiennych decyzyjnych (zawartość tablicy tabu) z wyznaczonego sąsiedztwa ze złożonością reguły akceptacji Metropolisa. Złożoność tej reguły jest znana i sprowadza się do wykonania po jednej operacji: odejmowania, dzielenia i potęgowania oraz porównania dwóch wartości rzeczywistych. Natomiast złożoność operacji „wyłączania” jest zależna między innymi od długości listy tabu. Ogólnie przyjmuje się, że lista ta powinna być możliwie długa, (co również istotne, lista ta rozrasta się w trakcie działania algorytmu), co ma znaczący wpływ na złożoność oraz czas pracy algorytmu. Reasumując, złożoności obliczeniowe algorytmu SW (algorytm 5) oraz algorytmu tabu search (algorytm 9) są porównywalne i bardzo zbliżone, przy czym przy zastosowaniu rozbudowanej listy tabu lub heurystyki wyznaczania sąsiedztwa, algorytm wyszukiwania z tabu będzie działał wolniej. 6.5 Porównanie złożoności algorytmu symulowanego wyżarzania oraz metody Simplex. Przechodząc do oceny złożoności obliczeniowej metody SW z zastosowaniem reguły akceptacji Metroplosa, należy zaznaczyć, że nie jest to zadanie trywialne i znacznie przekracza zakres tej pracy. Dodatkowo, złożoność ta zależy od rodzaju problemu do rozwiązania którego metoda została zastosowana. Ogólnie można przyjąć, że metoda ta ma złożoność wykładniczą i zależną zarówno od liczby węzłów grafu (routerów) oraz liczby jego krawędzi (łączy). Dokładniejsze porównanie złożoności metod SW i Simplex zostanie - 166 - przeprowadzone z wykorzystaniem wyprowadzonych wcześniej wzorów tj. (4.12) i (6.6). W celu przeprowadzenia wspomnianego porównania niezbędnym jest przyjęcie pewnych założeń, przy czym istotne jest to, żeby przyjęte założenia były realistyczne i odpowiadały warunkom rzeczywistym. Do potrzeb dalszej analizy przyjęto następujące założenia dla metody SW (przy zachowaniu wcześniej przyjętych oznaczeń): l * (b) = 2.5m 2 (0.5m − 1) (6.7) l ~ (b) = 0.25m 2 (0.5m − 1) (6.8) ^ d (tqk (b)) = m 2 Pr(Ψk (b) ≥ Ψk −1 (b)) = 0.1 Pr( E ≥ Y ) = 0.5 (6.9) (6.10) (6.11) gdzie ^ d (tqk (b)) Dt – średnia długość trasy t qk (b) , rozumiana jako liczba routerów występujących na trasie. Natomiast argumentami funkcji złożoności (zmiennymi) pozostają: liczba routerów w sieci oraz liczba łączy. Analogicznie założenia (lub wyliczenia) dla metody dokładnej dotyczą następujących wielkości: • zależność liczby równań ograniczających µ w metodzie dokładnej od liczby routerów i łączy, µ (m, n) ; • zależność liczby iteracji metody dokładnej od liczby równań ograniczeń, a w konsekwencji od liczby routerów i łączy danej sieci, ε [ µ (m, n)] = ε (m, n) . Po podstawieniu przyjętych w założeniach wartości do wzoru (4.12) otrzymano następujące wartości: m 2 * n m 4 m3 m m2 m m2 m2 µ (m.n) = *( − + − 1) + n * ( − + 1) + *( − 1) 8 64 32 4 8 4 8 8 (6.12) m 2 * n m 4 m3 m m2 m m2 m2 ε [ µ (m, n)] = ε (m, n) = 2.5 * [ *( − + − 1) + n * ( − + 1) + *( − 1) ] 8 64 32 4 8 4 8 8 (6.13) Uzasadnienie przyjętych założeń jest następujące. Dla (6.7) - na wstępie należy stwierdzić, że nie istnieje ogólne i jednoznaczna zależność liczby tras (a dokładniej tras acyklicznych) w dowolnym grafie np. dwudzielnym od liczby - 167 - jego węzłów (routerów), czy też krawędzi (łączy). W [103] znajduje się taki wzór, lecz obowiązuje on tylko dla grafów pełnych. W związku z powyższym na potrzeby niniejszej pracy przyjęto pewne założenie. Mając na uwadze to, że proponowane w niej rozwiązanie jest głównie dedykowane dla średnich i dużych sieci przyjmijmy, że routery tworzące optymalizowaną sieć posiadają dokładnie po sześć interfejsów. Jednocześnie warto wspomnieć, że założenie takie z praktycznego punktu widzenia jest całkowicie akceptowalne i zgodne z realiami. W związku z powyższym liczba łączy w tej sieci wynosi 3m . Konsekwencją przyjętego założenia jest to, że dowolny router może wysyłać ruch sieciowy (adresowany do danej sieci) pięcioma różnymi trasami – każda z nich prowadzi przez inny interfejs wyjściowy (zgodnie z opisem rozwiązania przedstawionym w podpunkcie 2.2). Dodatkowo przyjmijmy, że połowa routerów optymalizowanego obszaru to routery ABR, w konsekwencji komunikujących się sieci (lub innych obszarów komunikujących się z wykorzystaniem obszaru optymalizowanego, czyli obszaru zero) jest komunikujących się ze sobą par sieci (lub obszarów) jest równa m . Liczba 2 m m * ( − 1) . Przyjmując, że 2 2 ruch sieciowy każdej z komunikujących się par może być przesyłany przez dowolny z m routerów i to na pięć sposobów (po pięciu różnych trasach) otrzymujemy m m ( − 1) * m * 5 = 2.5m 2 (0.5m − 1) różnych tras. 2 2 Dla (6.8) – Na wstępie warto wspomnieć, że liczba tras aktywnych nie powinna być zbyt duża, (co na wybranych przykładach zostało pokazane w podrozdziale 3.6) oraz taki sam wniosek nasuwa się na podstawie obserwacji z przeprowadzonych badań (podrozdział 5.1). W przeciwnym razie przepustowość środowiska sieciowego ulega pogorszeniu. W związku z powyższym sugerowanym rozwiązaniem jest przyjęcie liczby tras aktywnych jako 10% wszystkich dostępnych tras. Jednocześnie należy stwierdzić, że wartość ta nie wynika z żadnych analitycznych wyliczeń, tylko z badań przeprowadzonych na potrzeby tej pracy oraz własnych obserwacji. Dodatkowo należy stwierdzić, że liczba tras aktywnych posiada niewielki wpływ na złożoność obliczeniową analizowanej metody. Dla (6.9), najkrótsza trasa może mieć długość 1, natomiast najdłuższa trasa prosta (czyli bez cykli) posiada długość m − 1 . Wyznaczając średnią arytmetyczną i przyjmując, że rozkład długości tras jest jednostajny, otrzymujemy następujący wynik ^ d (tqk (b)) = 1+ m −1 m = 2 2 (6.14) - 168 - Dla (6.10) - wartość 0.1 przyjęto na podstawie obserwacji oraz badań przedstawionych w podrozdziale 5.1. Dla (6.11) – odpowiednią wartość wyznaczono jako wartość przeciętną dla próbki losowej o rozkładzie jednostajnym na przedziale <0,1>. Przechodząc do dokładniejszej analizy prawdopodobieństwa zdarzenia polegającego na tym, że wartość funkcji energii (wyliczona na podstawie reguły akceptacji Metropolisa, przedstawionej w podrozdziale 4.1) jest większa od wartości losowej o rozkładzie jednostajnym na przedziale <0,1>, należy stwierdzić, że nie jest możliwe jego wyliczenie analityczne. Prawdopodobieństwo to zależy w znacznej mierze od optymalizowanej topologii sieciowej, co zostało pokazane poniżej. Zadanie sprowadza się do wyliczenia następującego prawdopodobieństwa. Pr(exp(− Ψnew (b) − Ψ (b) | T ) > wartośa _ oczekiwana) (6.15) gdzie wartość_oczekiwa jest to wartość oczekiwana zmiennej losowej o rozkładzie jednostajnym na przedziale <0,1> czyli 0.5. Wprowadzając dodatkowe oznaczenie ∆Ψ (b) = Ψnew (b) − Ψ (b) , oraz zastępując wartość_oczekiwaną liczbą 0.5 otrzymujemy: exp(− ∆Ψ (b) ) > 0 .5 T a następnie przekształcając z użyciem funkcji ln otrzymujemy: ln(2) > ∆Ψ (b) T 0.693 > ∆Ψ (b) T czyli Przykładowo, przyjmując T=100 otrzymujemy ∆Ψ (b) < 69.3 natomiast dla T=1 ∆Ψ (b) < 0.693 Jak widać z powyższych obliczeń odpowiedź na pytanie jakie jest prawdopodobieństwo zdarzenia opisanego wzorem (6.15) nie jest jednoznaczna. Dodatkowo zależy ona od tego czy zmiana (spadek) wartości Ψ(b) pomiędzy kolejnymi dwoma iteracjami algorytmu o np. 69.3 czy też o 0.693 Mb/s to dużo czy mało w odniesieniu do konkretnej optymalizowanej topologii, czyli jak zostało wcześniej powiedziane prawdopodobieństwo to zależy w znacznej mierze od optymalizowanej topologii sieciowej. Z powodu braku jednoznacznej odpowiedzi dla analizowanego zagadnienia, a także nieznajomości gęstości jego rozkładu, można przyjąć - 169 - wartości prawdopodobieństwa na poziomie wartości średniej tj. 0.5. Należy także dodać, że przyjęta wartość posiada bardzo mały wpływ na wartość złożoności obliczeniowej metody SW. Dla µ (m.n) określonego wzorem (6.12), liczba równań ograniczeń zadania programowania liniowego przedstawionego w podrozdziale 3.2, jest zależna od liczby łączy (równania ograniczeń (3.2) i (3.3)) oraz od liczby routerów (równanie (3.4)). Dodatkowo wprowadzając wspomniane wcześniej modyfikacje mające na celu dostosowanie analizowanego modelu do rzeczywistych warunków istniejących w sieciach komputerowych przyjmijmy, że połowa routerów optymalizowanego obszaru to routery ABR, a połączenia pomiędzy routerami ABR oraz routerami wewnętrznymi to analogicznie połowa wszystkich połączeń występujących w tej sieci. Na podstawie wzorów (6.4) i (6.5) oraz przyjętych założeń, liczba routerów w analizowanym obszarze zwiększa się z m * do m2 m2 m , zaś liczba łączy z n * do n * ( − + 1) . 4 8 4 Dysponując odwzorowaniem pomiędzy liczbami routerów i łączy dla metody SW oraz dokładnej, można przystąpić do określenia liczby równań ograniczeń. Dla pierwszego ograniczenia ze wzoru (3.11) i przyjętych założeń istnieje m* m* *( − 1) komunikujących się 2 2 par, po podstawieniu odpowiedniej dla specyfiki tej metody liczby routerów (w tym także wirtualnych) n*( otrzymujemy m2 m − + 1) łączy. 8 4 Po m2 m2 *( − 1) 8 8 pomnożeniu m 2 * n m 4 m3 m *( − + − 1) równań. 8 64 32 4 n*( Dla komunikujących obydwu drugiego się par sieci oraz składników otrzymujemy ograniczenia otrzymujemy m2 m m2 m2 − + 1) równań. Natomiast dla trzeciego *( − 1) równań. Po zsumowaniu 8 4 8 8 wszystkich trzech składników otrzymujemy końcową postać wzoru na liczbę równań ograniczeń, czyli m2 * n m4 m3 m m2 m m2 m2 µ (m, n) = *( − + − 1) + n * ( − + 1) + *( − 1) 8 64 32 4 8 4 8 8 (6.16) Ponieważ jak wykazano w [110][111][112] metoda Simplex wymaga przeciętnie od 2 µ do 3 µ iteracji, dlatego zasadnym staje się przyjęcie średniej liczby iteracji równej 2.5 µ . Po podstawieniu otrzymujemy: - 170 - ε [ µ (m, n)] = ε (m, n) = 2.5 * [ m 2 * n m 4 m3 m m2 m m2 m2 *( − + − 1) + n * ( − + 1) + *( − 1) ] 8 64 32 4 8 4 8 8 (6.17) Na podstawie przyjętych założeń oraz wykonanych podstawień wzór (4.11) można przedstawić następująco: O(m) = {1 + 0.25m 2 (0.5m − 1) * (2m + 0.5m + 1) + 2.5m 2 (0.5m − 1) * 0.5m * (1 + 3m ) + 3m + 2 + [0.1 * (m + 1)] + [(1 − 0.1) * (5 + 0.5 * ( m + 1))] + + m * [0.25m 2 (0.5m − 1) * ( 3 * 0 .5 m 1 + ) + 2]} * 100 4 2 po uproszczeniu i redukcji wyrazów podobnych otrzymujemy: O(m) = {1 + 0.25m 2 (0.5m − 1)(2.5m + 1) + 1.25m 3 (0.5m − 1)(1 + 3m ) + 3m + 2 1 2 2 + [0.55m + 5.05] + r * [0.25m (0.5m − 1) * (0.375m + ) + 2]} * 100 (6.18) natomiast (6.6) ulega przekształceniu do następującej postaci: m 2 ln m 4 m 3 m m2 m m2 m2 ( − + − 1) + 3m( − + 1) + ( − 1) + 8 64 32 4 8 4 8 8 m2n m4 m3 m m2 m m2 m2 2[ ( − + − 1) + 3m( − + 1) + ( − 1)] 2.376 + 8 64 32 4 8 4 8 8 m 2 n m 4 m3 m m2 m m2 m2 2.5[ ( − + − 1) + 3m( − + 1) + ( − 1)] * 8 64 32 4 8 4 8 8 m 2 n m 4 m3 m m2 m m2 m2 * {3[ ( − + − 1) + 3m( − + 1) + ( − 1)] 8 64 32 4 8 4 8 8 m 2 n m 4 m3 m m2 m m2 m2 + 2[ ( − + − 1) + 3m( − + 1) + ( − 1)]2.376 } 8 64 32 4 8 4 8 8 O(m, n) = (6.19) Obydwa wzory tj. (6.18) oraz (6.19) przedstawiają funkcje wielomianowe. Porównując je warto zwrócić uwagę na wartości największych wykładników, które w nich występują. We wzorze (6.18) przedstawiającym złożoność obliczeniową zmodyfikowanej metody SW wartość najwyższej potęgi to m 5 , natomiast we wzorze (6.19) przedstawiającym złożoność metody dokładnej wartość najwyższej potęgi wynosi m 6 * (m 6 ) 2.376 = m 20.256 . Mając na uwadze informacje zawarte w [114] oraz [117], wysoka wartość wykładnika dla wzoru (6.19) nie powinna być większym zaskoczeniem. Otrzymane wartości w sposób jednoznaczny świadczą o tym, że złożoność obliczeniowa metody dokładnej (w odniesieniu do liczby operacji prostych) w zastosowaniu do optymalizacji przepustowości środowiska sieciowego jest znacząco większa niż metody SW. Dla kompletności warto dodać, że założenia przyjęte - 171 - na potrzeby porównania złożoności obydwu analizowanych metod mają mały wpływ na uzyskane wyniki. Uzasadnienie wynika z tego, że przyjęte założenia mają głównie wpływ na wartości współczynników występujących jako argumenty funkcji złożoności, nie zaś na wartości wykładników wspomnianych współczynników. Przykładowymi założeniami potwierdzającymi powyższe uzasadnienie mogą być (6.10) i (6.11). Przechodząc do czasów działania obydwu omawianych metod, podczas przeprowadzania badań zauważono, że wzrost liczby routerów z 4 do 10 oraz łączy z 6 do 24 (co w konsekwencji powoduje wzrost liczby różnych tras z 25 do 2276, czyli ponad 90 razy) nie spowodował znaczącego wydłużenia czasu pracy algorytmu SW. W tym miejscu należy wyjaśnić, że mając na uwadze specyfikę problemu, obydwa zmierzone czasy (tj. dla topologii z rys. 4.3 i 4.4) wynoszące poniżej jednej sekundy, można uznać za pomijalnie małe i mieszczące się w granicach ”czasu rzeczywistego”. 6.6 Ocena zasadności stosowania algorytmów heurystycznych do badanego zagadnienia w kontekście metod dokładnych. Na wstępie warto zaznaczyć, że w zadaniu zdefiniowanym w podrozdziale 3.2. ujawniają się pewne istotne wady stosowania metody programowania liniowego do optymalizacji przepustowości sieci komputerowych. Wady te zostały dokładniej przedstawione w podrozdziałach 5.2 oraz 6.3 i oprócz stwierdzenia, że czynią one omawianą metodę stosunkowo mało przydatną, nie jest zasadnym dalsze ich opisywanie. Natomiast warto wspomnieć, że ze względu na zgoła odmienne „spojrzenie” na badane zagadnienie, metoda SW takich wad nie posiada, co stawia ją w znacznie lepszym świetle. Biorąc pod uwagę uzyskane wyniki, a przede wszystkim złożoności obliczeniowe obydwu metod, oraz istniejące ograniczenia, stosowanie metod heurystycznych do optymalizacji przepustowości sieci komputerowych należy uznać za zasadne. W konsekwencji, druga część tezy przedstawionej we wstępie tej pracy została potwierdzona. Zasadność stosowania metod heurystycznych wynika nie tylko z szybkości ich działania, ale także dużej elastyczności w implementacji i przede wszystkim zadowalających wyników. W tym miejscu warto wspomnieć chociażby to, że dla topologii sieciowej przedstawionej na rys 4.3 otrzymano Ψ(b) równe 207.5, przy górnym ograniczeniu równym 210 Mb/s. Dla tej samej topologii bez równoważenia obciążenia Ψ(b) wynosiło 100 Mb/s, a z równoważeniem typu RK 133 Mb/s, co z kolei stanowi potwierdzenie dla słuszności pierwszej części przyjętej tezy badawczej. Dodatkowo, stosowanie nowatorskich metod prowadzi do ich rozwoju, co w konsekwencji - 172 - przekłada się na jakość otrzymywanych wyników. Warto zauważyć, że tytuł tego podrozdziału nie odnosi się jedynie do metody SW. W literaturze znajduje się wiele przykładów ukazujących zasadność stosowania takich algorytmów jak np. algorytmy genetyczne, mrówkowe, „tabu search” i inne, do szeroko rozumianych zadań optymalizacji w tym także sieci komputerowych - i to pod różnymi względami, a nie tylko maksymalizacji ich przepustowości. Przykładami takich opracowań poruszających tematykę stosowania algorytmów SW mogą być: [78] [79] [80] [81] [83] [85] [86] [87] [89] [102]. Warto także zwrócić uwagę na publikacje opisujące zastosowanie innych rodzajów algorytmów heurystycznych jak np.: [48] [50] [51] [52] [56] [57] [58] [59] [64] [75] [84] [88]. 6.7 Niezawodność proponowanego rozwiązania. Nawet bardzo dobrej jakości rozwiązania, lecz działające w sposób zawodny mogą prowadzić do znacznych strat, nie wspominając już o frustracji administratorów oraz użytkowników. W niniejszym podrozdziale zostały opisane następujące kwestie dotyczące stosowanej metody SW: • zapewnienie podstawowego poziomu niezawodności; • konsekwencje potencjalnych awarii; • zapewnienie podstawowego poziomu bezpieczeństwa. Zapewnienie podstawowego poziomu niezawodności można osiągnąć poprzez usytuowanie stacji zarządzającej na dedykowanym komputerze. Dodatkowo, zalecane jest, aby stacja zarządzająca pracowała w trybie tzw. wysokiej dostępności (ang. High Availability). Tryb ten zapewnia kontynuację działania stacji zarządzającej w przypadku wystąpienia awarii pojedynczego urządzenia i można go uzyskać np. poprzez zastosowanie rozwiązania zwanego failover - umożliwiającego szybkie przełączenie pomiędzy urządzeniem podstawowym i zapasowym. Konsekwencje potencjalnych awarii są znikome. W przypadku uszkodzenia lub niedostępności stacji zarządzającej równoważenie typu NK jest wyłączane (wszystkie routery zerują swoje współczynniki beta). Idea działania routerów na wypadek awarii stacji zarządzającej jest następująca - jeśli w zdefiniowanym przedziale czasu router nie otrzyma nowej wartości współczynnika beta to przyjmuje, że jest równa zeru. W konsekwencji równoważenie typu NK zostaje wyłączone, udoskonalenie przestaje działać i wszystko wraca do stanu pierwotnego. Zapewnienie podstawowego poziomu bezpieczeństwa jest niezbędne do wydajnego działania całego udoskonalenia. Wartości współczynników beta powinny być dystrybuowane do - 173 - routerów w sposób zapewniający ich integralność i dostępność. Naruszenie integralności może nastąpić w skutek np. zakłóceń transmisji. Zapewnienie tego atrybutu jest konieczne, gdyż łatwo sobie wyobrazić, co może się stać, gdy na skutek błędów lub zakłóceń routery otrzymają niepoprawne wartości parametrów beta. W takiej sytuacji sieć zacznie działać w sposób nieoptymalny, a w konsekwencji wydajność routingu najprawdopodobniej zostanie drastycznie zmniejszona. Analogicznie jest z dostępnością wspomnianych współczynników. Jeśli część routerów otrzyma poprawne wartości współczynników, a druga część nie otrzyma ich wcale (przyjmując za zero), to analogicznie jak poprzednio, sieć zacznie działać w sposób nieoptymalny. Reasumując, wymiana informacji pomiędzy routerami i stacją zarządzającą powinna być potwierdzana oraz zabezpieczona. Sugerowanym rozwiązaniem jest zastosowanie protokołów TCP. Jeśli wymagane jest szyfrowanie ruchu sieciowego to sugerowanym rozwiązaniem jest zastosowanie protokołu SSL w wersji minimum trzeciej. 6.8 Omówienie algorytmu 3 tj. wyznaczania Ψ(b) oraz jego wad i zalet. W pewnych przypadkach rzeczywista wartość przepustowości sieci może być większa, (lecz nigdy mniejsza) niż wyliczona wartość Ψ(b). Różnica ta pojawia się w sytuacjach, kiedy istnieje łącze, które jest wykorzystywane przez przynajmniej dwie trasy i jednocześnie nie jest ono „najwęższym gardłem” dla żadnej z prowadzących przez nie tras. Warto dodać, że jeśli na trasie występuje więcej niż jedno łącze o najmniejszej przepustowości, to w metodzie tej każde takie łącze należy rozumieć jako „najwęższe gardło”. Teraz podany zostanie przykład ilustrujący wspomnianą różnicę. Rozważając topologię z rys. 6.2. przyjęto, że H1 i H2 jednocześnie komunikują się z Serwerem. Przepustowości poszczególnych łączy są podane na schemacie. Rys. 6.2. Siódmy przykład topologii sieci komputerowej. - 174 - Przepustowości łączy wynosza odpowiednio (Mb/s): π 1 = 100 ; π 2 = 10 ; π 3 = 50 . W takiej sytuacji trasa numer k=1 tj. H1 z serwerem wiedzie poprzez łącza t11 (b) =(e1, e3); natomiast trasa numer k=2 tj. dla H2 przez łącza t12 (b) =(e2, e3). Wyznaczając Ψ(b) w sposób wyrażony wzorem (3.27) z zachowaniem wcześniejszych oznaczeń otrzymujemy: Liczby tras wykorzystujące poszczególne łącza wynoszą. λ1 (0) =1 ; λ2 (0) =1 ; λ3 (0) =2 ; Efektywne przepustowości poszczególnych łączy wynoszą (w Mb/s): Q1 =100; Q2 =10; Q3 =25; Efektywne przepustowości najwolniejszych łączy dla poszczególnych tras wynoszą. ^ Ψ (1,1,0) = min(100 ; 25) = 25; ^ Ψ (2,1,0) = min(10 ; 25) = 10; Przepustowość środowiska sieciowego dla zadanych warunków początkowych wynosi. 2 1 ^ Ψ (0) = ∑∑ Ψ (k , q,0) = 25 + 10 = 35 [Mb/s] k =1 q =1 W rzeczywistości wartość ta będzie większa i wyniesie 50 Mb/s. Przyczyną jest to, że komunikacja H2 z serwerem zajmuje jedynie 10 Mb/s na łączu e3, w konsekwencji dla H1 pozostanie 40 Mb/s, a nie jak wyliczono 25 Mb/s. Warto zauważyć, że ta „niedoskonałość” metody wyznaczania Ψ(b) nie skutkuje przyjęciem złego rozwiązania – dzieje się tak dlatego, że rzeczywista wartość Ψ(b) może być większa niż wyliczona, ale nigdy mniejsza. W takiej sytuacji rodzi się pytanie jak dokładnie wyliczać wartość Ψ(b). Można to zrobić np. w następujący sposób. 1. Przyjąć Ψ(b) równe zero. 2. Wyznaczyć przepustowości wszystkich tras. 3. Wyznaczyć trasę o najmniejszej przepustowości i dodać jej wartość do Ψ(b) (w przypadku, kiedy istnieje więcej niż jedna trasa o minimalnej przepustowości należy wybrać tę, która ma najmniejszą liczbę „wąskich gardeł”. 4. Zmniejszyć nominalne przepustowości wszystkich łączy trasy z punktu 3 o wartość jej przepustowości. 5. Usunąć trasę ze zbioru tras. 6. Jeśli zbiór tras nie jest pusty, rozpocząć od punktu 2. - 175 - Taki algorytm zwróci rzeczywistą wartość Ψ(b), lecz posiada on istotną wadę. Wadą tą jest duża (to znaczy porównywalna z liczbą rozważanych tras) liczba iteracji, jaką należy wykonać. Porównując powyżej przedstawioną dokładną metodę wyliczania Ψ(b) z metodą przybliżoną tj. algorytmem 3, pojawiają się następujące wnioski: • metoda dokładna zwraca dokładny wynik, zaś metoda przybliżona zwraca dolne oszacowanie; • metoda przybliżona wymaga jednej iteracji, metoda dokładna wymaga niemalże tylu iteracji ile tras jest rozważanych. W pewnych przypadkach liczbę iteracji omawianej metody dokładnej można zmniejszyć. W sytuacji kiedy istnieje kilka tras o tej samej minimalnej przepustowości, to dla wszystkich tych tras punkty 4 i 5 można realizować w jednej iteracji. Rozważając dokładniej to zagadnienie, liczbę iteracji metody dokładnej można wyznaczyć jako sumę ciągu arytmetycznego. Rozważając „lk(b)” tras, w pierwszej iteracji algorytm wyliczy przepustowości dla wszystkich „lk(b)” tras. W drugiej iteracji dla „lk(b)-1”, w trzeciej dla „lk(b)-2” itd. aż do osiągnięcia lk(b)=0, oczywiście przy założeniu, że nie występują w jednej iteracji trasy o takiej samej minimalnej przepustowości. Zbiór wykonanych iteracji można zapisać następująco [lk(b), lk(b)-1, lk(b)-2, ... , 2, 1], jeśli zbiór ten odwrócimy to otrzymamy [1, 2, ... , lk(b)-2, lk(b)-1, lk(b)] czyli ciąg arytmetyczny o różnicy r = 1 i wyrazie początkowym a1 = 1. Liczba iteracji, jaką musi wykonać algorytm przy metodzie dokładnej to suma takiego ciągu wyrażana wzorem (6.20). S n (b) = a1 + a n * l k (b) 2 (6.20) gdzie a n = a1 + (l k (b) − 1) * r (6.21) Przyjmując, że r = 1, a1 = 1 otrzymujemy an = lk(b), zaś S lk (b ) = l k (b) * (l k (b) + 1) 2 z prostych obliczeń widać, że niezbędna liczba iteracji wzrasta tak jak funkcja kwadratowa o wzorze f(lk(b)) = 0.5lk(b) 2 + 0.5lk(b). Jeśli dla przykładu przyjąć liczbę tras jako 6846 (jak zostanie pokazane w dalszej części tego rozdziału, liczba ta nie została wybrana przypadkowo), niezbędna liczba iteracji wynosi 23437281, czyli ponad dwadzieścia trzy miliony w porównaniu do jednej wykonywanej przez zastosowaną metodę. Wniosek wydaje się stosunkowo prosty, zastosowanie dokładnej metody wyznaczania Ψ(b) może doprowadzić - 176 - to tego, że optymalizacja przepustowości sieci komputerowej nie będzie działała w czasie rzeczywistym, a to całkowicie przekreśla jej praktyczną użyteczność. W tym miejscu pojawia się pytanie, z jaką liczbą tras można mieć do czynienia w warunkach praktycznych? Dla uproszczenie skoncentrujmy się na sieciach typu każdy-z-każdym reprezentowanych jako grafy pełne. Biorąc pod uwagę fakt, że zaproponowana metoda optymalizacji powinna przede wszystkim działać w obszarach zero przyjęte uproszczenie nie odbiega dalece od rozwiązań rzeczywistych. Kontynuując, pojawia się pytanie ile jest różnych prostych dróg w grafie pełnym? Odpowiedzią jest następujące twierdzenie: Twierdzenie 1: Niech Gf będzie n-wierzchołkowym grafem pełnym w klasie grafów zwykłych lub Berge’a22. Liczba dróg prostych ∆ pk o długości p ≥ 1 w Gf między dowolną parą różnych wierzchołków k jest równa: ∆ pk = (n − 2)! (n − p − 1)! (6.22) Dowód powyższego twierdzenia znajduje się w [103]. Rozważając wszystkie możliwe drogi pomiędzy dowolną parą węzłów k, otrzymujemy: n −1 (n − 2)! p =1 ( n − p − 1)! ∆k = ∑ (6.23) Przyjmując, że każda para wierzchołków (routerów) komunikuje się ze sobą, co jest założeniem jak najbardziej realnym otrzymujemy: ∆= n * (n − 1) n−1 (n − 2)! *∑ 2 p =1 ( n − p − 1)! (6.24) Wracając do wspomnianej liczby tras równej 6846 i rozwiązując równanie (6.24) czyli ∆ = 6846 otrzymujemy N=7. Wniosek: dla sieci typu każdy-z-każdym składającej się tylko z 7 routerów metoda dokładna wyliczania Ψ(b) wykonuje 23437281 razy więcej iteracji niż metoda przybliżona. Warto zauważyć, że powyższy wniosek w połączeniu z wymaganym wielostartem algorytmu symulowanego wyżarzania, najprawdopodobniej czyni metodę dokładną wyznaczania Ψ(b) praktycznie nie do zaakceptowania. 22 Grafem Berge’a to graf który nie zawiera ani nieparzystych dziur, ani nieparzystych antydziur. Przy czym, dziura nieparzysta to podgraf będący cyklem o nieparzystej długości większej niż cztery, natomiast antydziura to podgraf będący dopełnieniem dziury (ang. graph antihole). Dopełnienie grafu G (podgrafu, dziury) to graf zawierający te same wierzchołki co G, lecz krawędzie w grafie dopełnienia istnieją tylko wtedy gdy w grafie G pomiędzy odpowiednimi wierzchołkami krawędź nie występuje. - 177 - 6.9 Podsumowanie Przedstawione w tym rozdziale wnioski z przeprowadzonych badań w mojej ocenie potwierdzają przyjętą tezę badawczą, a także wykazują słuszność wprowadzonych modyfikacji i przyjętych rozwiązań. Uzyskane wyniki należy uznać za zadowalające, a cały scentralizowano–rozproszony system (przy właściwej konfiguracji) za działający w czasie rzeczywistym. Warto także stwierdzić, że złożoność obliczeniowa zaproponowanej metody jest znacząco mniejsza od złożoności algorytmu genetycznego i porównywalna (lub lepsza) od złożoności algorytmu tabu search, czyli wypada korzystnie w porównaniu z innymi, często stosowanymi algorytmami heurystycznymi. Dodatkowo w kontekście optymalizacji przepustowości sieci komputerowych, zaproponowana przeze mnie metoda posiada większe możliwości dostosowania do potrzeb konkretnej organizacji czy instytucji niż metoda programowania liniowego, co zdecydowanie przemawia za jej stosowaniem. Jednakże dla kompletności należy stwierdzić, że w tej pracy zaprezentowana została metoda heurystyczna, dla której nie istnieją ścisłe kryteria oceny efektywności, więc ostatecznym sprawdzeniem jest dopiero implementacja opracowanego algorytmu w rzeczywistym środowisku sieciowym. Oczywiście przeprowadzone eksperymenty w środowisku symulowanym dają jakiś pogląd, ale warunki symulowane nie zawsze w pełni odpowiadają rzeczywistym. - 178 - Zakończenie W niniejszej pracy została zaproponowana zmodyfikowana metoda symulowanego wyżarzania, zastosowana do optymalizacji przepustowości sieci komputerowych. Ponadto została także przedstawiona nowa metoda równoważenia obciążenia w protokole OSPF. Polega ona na uwzględnieniu nie tylko tras o równym (minimalnym) koszcie, ale również tras o koszcie większym od minimalnego. Metoda ta została nazwana metodą równoważenia obciążenia typu NK (z wykorzystaniem tras o nierównym koszcie). Moja praca skupia się na wydajności, a głównym jej zagadnieniem jest zadanie optymalizacji przepustowości sieci komputerowych. Przedstawione w niej rozwiązanie jest to metoda zwiększania efektywnej przepustowości sieci w tych przypadkach, w których jest to możliwe. Czy jest to możliwe, okazuje się w wyniku porównania przepustowości osiąganych przy zastosowaniu dwóch typów równoważenia obciążenia tj. z udziałem tras o równym i różnym koszcie. Porównanie to jest wykonywane w czasie rzeczywistym, co umożliwiają odpowiednie (autorskie) algorytmy. Ponieważ „z góry” nie wiadomo czy należy włączyć równoważenie obciążenia typu NK, dlatego przeprowadza się symulację spodziewanych warunków pracy sieci. Na podstawie otrzymywanych wyników podejmowana jest decyzja o włączeniu równoważenia typu NK. Warto także dodać, że główną korzyścią z zastosowania przedstawionego w tej pracy rozwiązania jest uzyskanie w czasie rzeczywistym poprawy przepustowości sieci (o ile to jest możliwe), a w konsekwencji bardziej efektywne wykorzystanie posiadanych zasobów sieciowych i zwiększenie satysfakcji użytkowników. Głównym zagadnieniem pracy było zadanie optymalizacji przepustowości sieci komputerowych, sformułowane jako zadanie PL i NCSP. Zadanie PL rozwiązywane było z zastosowaniem metody dokładnej – Simplex, natomiast zadanie NCSP z zastosowaniem zmodyfikowanej metody SW. Praca zawiera także autorski algorytm służący do wyznaczania przepustowości środowiska sieciowego (Ψ(b)). Podstawowym celem pracy było wykazanie słuszności postawionej tezy badawczej. Teza ta brzmi – po pierwsze, odpowiednie zastosowanie równoważenia obciążenia typu NK może prowadzić do wzrostu przepustowości sieci komputerowej. Po drugie, zasadnym jest stosowanie algorytmów heurystycznych do optymalizacji przepustowości sieci. Następstwem przeprowadzonych badań i analiz były wnioski będące odpowiedzią na pytania zawarte w opisie celów pracy. - 179 - Przy uwzględnieniu następujących wniosków: • znacznie mniejsza złożoność obliczeniowa metody SW w porównaniu z metodą dokładną; • porównywalna lub mniejsza złożoność obliczeniowa metody SW w porównaniu z innymi wybranymi algorytmami heurystycznymi; • działanie zmodyfikowanej metody SW w czasie rzeczywistym; • uzyskanie satysfakcjonujących wyników wzrostu przepustowości dla wszystkich przebadanych sieci; zasadność stosowania przedstawionej w pracy metody SW do optymalizacji przepustowości sieci komputerowych została wykazana. Jednocześnie wspomniane wcześniej wnioski potwierdzają słuszność przyjętej tezy badawczej. Dla osiągnięcia przyjętych w pracy celów wykonano następujące zadania opisane w kolejnych rozdziałach pracy: • scharakteryzowano zastosowania oraz możliwości protokołu OSPF, z uwzględnieniem obecnego stanu wiedzy w tym obszarze; • zaproponowano autorski sposób wyznaczania tras o kosztach wyższych od optymalnego oraz równoważenia obciążenia z udziałem tych tras; • przeprowadzono przegląd możliwości badania wpływu zastosowanego rozwiązania na wydajność sieci komputerowej; • zdefiniowano w sposób formalny problem optymalizacji przepustowości sieci komputerowej w postaci zadania programowania liniowego i programowania NCSP; • wybrano zbiór parametrów, statystyk oraz narzędzi mający służyć wykazaniu słuszności postawionej tezy; • przeprowadzono odpowiednie badania; • zebrane informacje przeanalizowano oraz wyciągnięto odpowiednie wnioski; • dokonano porównania wydajności oraz złożoności obliczeniowej badanej metody w odniesieniu do metody dokładnej oraz w odniesieniu do innych wybranych metod heurystycznych; • zaproponowano przykładowe zastosowanie badanego rozwiązania. Jednocześnie można stwierdzić, że nie wystąpiły żadne czynniki znacząco utrudniające realizację zaplanowanych zadań. Zadania te zostały zrealizowane, a uzyskane wyniki są zadowalające. - 180 - Niniejsza praca może stanowić źródło informacji dla osób zajmujących się tworzeniem oraz udoskonalaniem protokołów sieciowych (w tym OSPF), a także zastosowaniem algorytmów heurystycznych do optymalizacji przepustowości sieci komputerowych. Zarówno przedstawione modyfikacje metody symulowanego wyżarzania jak i algorytm tworzenia tablicy routingu oraz zaproponowana metoda przeprowadzania równoważenia obciążenia, mogą stanowić punkt wyjścia do dalszych prac. W obecnych czasach zasadność istnienia Internetu nie budzi niczyjej wątpliwości, a każdy z członków globalnej społeczności chciałby mieć jak najszybszy dostęp do potrzebnych informacji. Dostęp ten jest uzyskiwany między innymi dzięki wydajnym protokołom routingu. Natomiast zwiększenie ich wydajności w sposób bezpośredni przekłada się na szybkość przepływu informacji, a w konsekwencji zadowolenie użytkowników. Między innymi z powyższych względów ocena praktycznej przydatności poruszonej w tej pracy problematyki nie powinna budzić wątpliwości. Dodatkowo, informacje zawarte w załączniku II mogą stanowić zbiór praktycznych porad dla osób zajmujących się projektowaniem oraz budową sieci komputerowych. Administratorzy tych sieci, znajdą we wspomnianym załączniku wiele użytecznych informacji przydatnych podczas wykonywania codziennych obowiązków. Ponadto, przedstawiony projekt sieci komputerowej, wraz z konfiguracją urządzeń sieciowych wchodzących w jej skład, może stanowić pewnego rodzaju model dla wielu organizacji i to zarówno biznesowych jak i użyteczności publicznej. Na bazie tego modelu, po przeprowadzeniu odpowiednich modyfikacji, można zbudować funkcjonalną, wydajną i wysoce niezawodną korporacyjną sieć komputerową. Uważam, że moja praca może przyczynić się do rozwoju badań nad tematyką optymalizacji przepustowości oraz zagadnieniami wydajnego routingu w sieciach komputerowych. Informacje w niej zawarte, a także sama idea przedstawionej koncepcji w moim odczuciu są zagadnieniami interesującymi i posiadającymi bardzo duże szanse rozwoju zarówno obecnie jak i w przyszłości. Jednocześnie mam świadomość, że praca ta nie wyczerpuje podjętego tematu, co stwarza możliwości dalszej jego ewolucji oraz udoskonalania. Reasumując, uważam, że uzyskane wyniki mogą potwierdzić przyjętą tezę badawczą. Ponadto zaproponowane udoskonalenie metody symulowanego wyżarzania, mające na celu dostosowanie jej do optymalizacji przepustowości sieci komputerowych, działa poprawnie i zgodnie z oczekiwaniami, co może stanowić solidny fundament do dalszego jej rozwoju i ulepszania. - 181 - Bibliografia i odnośniki [1] John T. Moy, “OSPF Complete implementation”, Published by Addison Wesley Professional. ISBN-10: 0-201-30966-1; ISBN-13: 978-0-201-30966-9; Published: September 28, 2000; Copyright 2001; Edition: 1st. [2] John T. Moy., "Multicast Extensions to OSPF", RFC 1584, March 1994. [3] Coltun, R., and V. Fuller, "The OSPF NSSA Option", RFC 1587, March 1994. [4] Ferguson, D., "The OSPF External Attributes LSA", work in progress. [5] Moy, J., "Extending OSPF to Support Demand Circuits", RFC1793, April 1995. [6] Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman., “Data Structures and Algorithms”, ISBN: 0-201-00023-7, April 1987. [7] J. Moy, RFC 2328, OSPF version 2, Ascend Communication , Inc. April 1998. [8] Andrew S. Tanenbaum, “Computer networks”, ISBN: 0130661023, Prentice Hall, 2002. [9] Mark Sportack, “Networking Essentials Unleashed”, ISBN: 83-7361-503-2, Helion, April 2004. [10] Marshall McLuhan, “The Gutenberg Galaxy”, ISBN-10: 0451039130, Signet, July 1969. [11] Krzysztof Liderman, “Podręcznik administratora bezpieczeństwa teleinformatycznego”, ISBN: 8372793778, Mikom 2003. [12] „Ustawa o ochronie danych osobowych“, Dz. U. z 1997r. Nr 133, poz. 883. z dnia 29 sierpnia 1997. [13] Sam Halabi, Danny McPherson, „Internet routing architectures - Thedefinitive BGP resource”, second edition, ISBN: 1-57870-233-X, Cisco Press, August 2000. [14] Sam Halabi, “OSPF design guide”, Cisco Press, April 1996. [15] “Dictionary of Internetworking Terms and Acronyms”, ISBN-10: 1587200457, Cisco Press, February 2001. [16] “Understanding EtherChannel Load Balancing and Redundancy on Catalyst Switches”, Cisco Pres, Document ID: 12023, March 2003. [17] M. E. Kabay, “Computer Security Handbook”, Fourth Edition, John Willey & Sons Publishing, Inc. 2002. - 182 - [18] Martin P. Clark, “Data Networks, IP and the Internet: Protocols, Design and Operation”, John Willey & Sons Publishing, Inc. 2003. ISBN: 0-470-84856-1. [19] G.R. Ash, R.H. Cardwell, R.P. Murray, “Design and Optimization of Networks with Dynamic Routing”, Bell Systems Technical Jurnal, vol. 60, 1981. [20] Jay Ramachandran,, “Designing Security Architecture Solutions”, ISBN: 0-471-20602-4, John Willey & Sons Publishing, Inc. 2002. [21] Robert Sedgewick, “Algorithms in Java, Third Edition, Part 5: Graph Algorithms”, ISBN-10: 0-201-36121-3, ISBN-13: 978-0-201-36121-6, Addison Wesley Professional, lipiec 2003. [22] Steve S. Skiena, “The Algorithm Designee Manual”, ISBN: 0-387-94860-0, Springer-Verlag New York Inc., 1998. [23] Cyrus Peikari, Anton Chuvakin, „Strażnik bezpieczeństwa danych”, ISBN: 837361-513-X, O’ Reilly, Helion, 2004. [24] Joseph D. Sloan, “Narzędzia administrowania siecią”, ISBN: 83-7243-206-6, O’ Reilly, 2002. [25] E. Schetina, K. Green, J. Carlson, „Bezpieczeństwo w sieci”, ISBN: 83-7197801-4, Helion, 2002. [26] Dieter Jungnickel, „Graphs, Networks and Algorithms”, Third Edition, ISBN: 1431-1550, Springer, 2008. [27] William Kocay, Donald L. Kreher,“Graphs, Algorithms, and Optimization”, ISBN: 1-58488-396-0, Hapman & Hall, 2005. [28] Deepankar Medhi, Karthikeyan Ramasamy, “Network Routing: Algorithms, Protocols, and Architecture”, ISBN 13: 978-0-12-088588-6, ISBN 10: 0-12088588-3, Elsevier Inc., 2007. [29] K. Thulasiraman, M. N. S. Swamy, “Graphs: Theory and algorithms”, ISBN: 0-471-51356-3, John Wiley & Sons, Inc., 1992. [30] Rames Bhandari, “Survivable Networks: Algorithms for Diverse Routing”, ISBN: 0-7923-8381-8, Springer, 2001. [31] Uyless N. Black, “IP Routing Protocols: RIP, OSPF, BGP, PNNI and Cisco Routing Protocols”, ISBN: 0-13-014248-4, Prentice Hall Inc., 2000. [32] Tom M. Thomas, “OSPF Network Design Solutions”, CiscoPress, 2008. - 183 - [33] William Parkhurst, “Cisco OSPF Command and Configuration Handbook”, CiscoPress, 2008. [34] John T. Moy, “OSPF: Anatomy of an Internet Routing Protocols”, ISBN: 0201-63472-4, Addison-Wesley, 1998. [35] Andrew Colton, “OSPF for Cisco Routers”, ISBN: 0-9722862-1-7, Rocket Science Press, Inc., 2003. [36] Allan Johnson, “Routing Protocols and Concepts”, ISBN-10: 1-58713-206-0, ISBN-13: 978-158713-206-3, CiscoPress, 2007. [37] Stephen A. Thomas, “IP Switching and Routing Essentials: Understanding RIP, OSPF, BGP, MPLS, CR-LDP, and RSVP-TE”, ISBN: 0-471-03466-5, Wiley, 2001. [38] Natalia Olifer, Vivtor Olifer, “Computer Networks: Principles, Technologies and Protocols for Network Design”, ISBN-10: 0-470-86982-8, ISBN-13: 9780-470-86982-6, John Wiley and Sons Inc., 2006. [39] Man Young Rhee, “Internet Security: Cryptographic, algorithms and Protocols”, ISBN: 0-470-85285-2, Wiley, 2003. [40] Dilip C. Naik, “Internet Standards & Protocols”, ISBN: 1-57231-692-6, Microsoft Press, 1998. [41] “Network Protocols Handbook”, Javin Technologies Inc., ISBN: 0-9740945-28, 2005. [42] Jeff Doyle, Jennifer Carroll, “Routing TCP/IP Volume 1”, ISBN: 1-58705202-4, CiscoPress, 2005. [43] Riikka Susitaival, Samuli Aalto, “Adaptive load balancing with OSPF”, Network Laboratory, University of Technology, Helsinki. [44] Sabine Randriamasy, Laurent Fournie, Dohy Hong, “Distributed adaptive multi-criteria load balancing: analysis and end to end simulation”. Alcatel and N2NSOFT, 2005. [45] Curtis Villamizar, “OSPF-OMP optimized multi path”, IETF draft, January 2002. [46] Ashwin Sridharan, Roch Guerin, Christophe Diot, “Achieving Near-Optimal Traffic Engineering Solutions for Current OSPF/IS-IS Networks”, IEEE/ACM Transacions of Networking, Volume 13, ISSN: 1063-6692, 2005. - 184 - [47] Nicholas Ng, Ashwin Sridharan, Roch Guerin, “Implementation of a Load Balancing Technique for OSPF”. [48] L.S. Buriol, M.G.C. Resende, C.C. Ribeiro, M. Thorup, “A Hybrid Getetic Algorithm for the Weight Setting Problem in OSPF/IS-IS Routing”, Journal of Combinatorial Optimization, volume 6, 2002. [49] Giuseppe Trivigno, ”OSPF Weight Tuning for Efficient Routing in IPNetworks”, Master’s Degree Project, Stockholm, Sweden 2004. [50] B. Fortz i M. Thorup, “Incerasing internet capacity using local search”, Technical report, AT&T Labs Research, 2000. [51] B. Fortz i M. Thorup, IEEE “Internet traffic engineering by optimizing OSPF weights”, INFOCOM, 2000. [52] B. Fortz i M. Thorup, “Optimizing OSPF/IS-IS weights in a changing world”, IEEE JSAC Special Issue on Advances in Fundamentals of Network Management, 20:756-767, 2001. [53] K.G. Ramakrishnan i M.A. Rodrigues, “Optimal routing in shortest-path data networks”, Lucent Bell Labs Technical Journal, 6(1), 2001. [54] Christian Huitema, “Routing in the Internet”, Prentice Hall PTR, Englewood Cliffs, N.J., 1995. [55] R.K. Ahuja, i T.L. Magnanti I J.B. Orlin, “Network flows: theory, algorithms and applications”, Prentice Hall , N.J., 1993. [56] L. Xiao, M. Johansson, i S. Boyd, “Simultaneous routing and resource allocation via dual decomposition”, IEEE Trans. Communications, 2004. [57] J. Kurose, i K. Ross, “Computer networking: A Top-Down Approach Featuring the Internet”, Addison Wesley Longman, 2003. [58] H. Pham i B. Lavery, “An improved method for determining link weights for optimizing OSPF routing”, The First Workshop on the Internet, Telecommunications and Signal Processing WITSP 02, 2002. [59] H. Abrahamsson, B. Ahlgren, J. Alonso, A. Andersson, P. Kreuger, “A multi path routing algorithm for IP networks based on flow optimization”, Technical report, SICS-Swedish Institute of Computer Science, 2002. [60] M. Roughan, M. Thorup i Y. Zhang, “Traffic engineering with estimated traffic matrices”, IMC’03, 2003. - 185 - [61] C.Y. Yong, „Exploration of routing algorithm extensions to OSPF”, httpd://www.ee.ucl.ac.uk/~lsacks/tcomsmsc/projects/pastproj/cuong.pdf, 07. 2001. [62] A. Elwalid, C. Jin, S. Low, I. Widjaja, “MATE: MPLS Adaptive Traffic Engineering”, IEEE INFOCOM’01, Anchorage, AK, April 2001. [63] I. Stoica, H. Zhang, „LIRA: An Approach for Service Differentiation in the Internet”, NOSS-DAV’98, 1998. [64] S. Bak, J.A. Cobb, E.L. Leiss, “Hierarchical Load-Balanced Routing via Bounded Randomization”, ICCCN’99, 1999. [65] R. Krishan, J.A. Silvester, „An Approach to Path-Splitting in Multi-path Networks“, IEEE ICC’93, vol. 3, May 1993. [66] R. Krishan, J.A. Silvester, “Choice of Allocation Granularity in Multi-path Source Routing Schemes”, IEEE INFOCOM’93, April 1993. [67] E. Gustafsson, G. Karlsson, “A Literature Survey on Traffic Dispersion”, IEEE Network Magazine, March 1997. [68] R. Guerin, D. Williams, A. Orda, “QoS Routing Mechanisms and OSPF Extensions”, IEEE GLOBECOM’97, 1997. [69] R. Rabbat, K. Laberteaux, N. Modi, J. Kenny, „Traffic Engineering Algorithms Using MPLS for Service Differentiation”, IEEE ICC’00, June 2000. [70] G.R. Ash, R.H. Cardwell, R.P. Murray, “Design and Optimization of Network with dynamic Routing”, Bell Systems Technical Jurnal, vol. 60, 1981. [71] S. Nelakuditi, Z.L. Zhang, R.P. Tshang, “Adaptive Proportional Routing: A Localized QoS Routing Approach”, IEEE INFOCOM’00, April 2000. [72] S. Nelakuditi, Z.L. Zhang, “On Selection of Paths for Multi-path Routing”, IEEE IFIP IWQoS ’01, June 2001. [73] C. Lagoa, H. Che, „Decentralized Optimal Traffic Engineering in the Internet”, Comp. Commun. Review, vol. 30, October 2000. [74] N. Taft, S. Bhattacharyya, J. Jetcheva, C. Diot, “Understanding Traffic Dynamics at a Backbone POP”, ITCOM+OPTICOM, August 2001. [75] K.C. Leung, V.O.K. Li, “Flow Assignment and Packets Scheduling for Multipath Networks”, IEEE GLOBECOM’99, December 1999. [76] E. Dinan, D.O. Awduche, B. Jabbari, „Analytical Framework for Dynamic - 186 - Traffic Partitioning in MPLS Networks“, IEEEICC’00, vol. 3, June 2000. [77] P. Siripongwutikorn, S. Banerjee, D. Tipper, „Traffic Engineering in the Internet: A Survey of Load Balanced Routing”, Univercity of Pittsburgh, Hewlett-Packard Labolatories. [78] S. Pierre, M. Hyppolite, J. Bourjolly, O. Dioume, “Topological Design of Computer Communication Networks Using Simulated Annealing”, Engineering Applications of Artificial Intelligence, Vol. 8, Number 1, February 1995. [79] J. Kock, A. Krzesiński, “Computing an Optimal Vitrual Path Connection Network by Simulated Annealing”, Department of Computer Science, University of Stellenbosch, South Africa. [80] Alekasndar Tsenov, “Simulated Annealing and Genetic Algorithm in Telecommunications Network Planning”, International Journal of Computational Inteligence 2,4, 2006. [81] S. Routray, A. M. Sherry, B.V.R. Reddy, “A Simulated Annealing Based Approach for ATM Network Optimization”, Engineering, Computing and Architecture, ISBN 1934-7197, Vol. 1, Issue 2, 2007. [82] M. Abd-El-Barr, S.M. Sait, A.S. Al Mulhem, A. Zakir, “Reliability based Topological Optimization of Computer Networks – Part II: interactive Techniques”, Computer Engineering Department, Information Technology Center, King Fahd University. [83] T.M. Mahmoud, “A Genetic and Simulated Annealing Based Algorithms for Solving the Flow Assignment Problem in computer Networks”, International Journal of Electronics, Circuits and Systems, vol. 1, number 2. [84] M. Abd-El-Barr, A. Zakir, S.M. Sait, A.S. Almulhem, “Interactive Heuristics in Topological Optimization of Computer Networks Subject to Fault Tolerance and Realiability”, IEEE, ISCC’2003, July 2003. [85] E. Costamagna, A. Fanni, G. Giacinto, „A Simmulated annealing Algorithm for the Optimization of Communication Networks”, VLSI Systems, October 1995. [86] M.M. Atiqullah, S.S. Rao, “Reliability Optimization of Computer Networks using Simmulated Annealing”, Microelectronics Reliability, vol. 33, Nowember 1993. - 187 - [87] E. Aarts & J. Korst, “ Simmulated Annealing and Boltzman Machines”, Willey & Sons Ltd. 1989. [88] N.M. Jorgensen, “Simmulated annealing in FWA-networks”, Master thesis on Informatics and Mathematical Modeling, Denmark, September 2001. [89] S. Kirkpatrick, C.D. Gelatt Jr., M.P. Vecchi, „Optimization by Simmulated Annealing“ Science, 220, 1993. [90] S.A. Berezner, A.E. Krzesiński, “Call Admission and Routing in ATM Networks Based on Virtual Path Separation”, IFIP TC6/WG6.2, 4th International Conference on Broadband Communications, Germany, April 1998, Hapman & Hall. [91] J.H. Dejean, L. Dittmann, C.N. Lorenzen, “String Mode – A New Concept of Performance Improvement of ATM Networks”, IEEE vol.9 no.9 December 1991. [92] T.T. Lee, S.C. Liew, “Parallel Communications for ATM Network Control and Management”, IEEE GLOBECOM’93, vol.1, December 1993. [93] Kazimierz Grygiel, “Algorytm Metropolisa, Symulowane Wyżarzanie”, wykład 3, źródło http://www.mimuw.edu.pl/~grygiel/archive/dokumenty3/w3.pdf. [94] T.H. Cormen, C.E. Leiserson, R.L. Rivest, “Wprowadzenie do algorytmów”, wyd. WNT, Warszawa 2004. [95] Ross, Wright, „Matematyka dyskretna”, wyd. WNT, 1999. [96] N. Wirth , „Algorytmy+Struktury Danych = Programy”, WNT. [97] L. Banachowski, K. Diks, W. Rytter, „Algorytmy i struktury danych” , WNT. [98] N. Metropolis, A.W. Rosenbluth, M.N. Rosenbluth, A.H. Teller, and E. Teller, J. Chem. Phys. (1953) 1087-1092. [99] Prof. Saeta, Keck, “The Metropolis Algorithm”, Statistical systems and Simulated Annealing, Physic 170, 2004 http://kossi.physics.hmc.edu/courses/p170/Metropolis.pdf [100] Epitaksja struktur dla mikrosystemów oraz systemów optoelektronomikrofalowych. http://www.wemif.pwr.wroc.pl/zpp/stary/laboratoria/ mikroelektronika2/cw1epitaksja.doc. [101] Z.R. Żytkiewicz, S. Krukowski, M. Leszczyński, „Epitaksja z fazy ciekłej (LPE)”, http://www.unipress.waw.pl/~stach/wyklad_ptwk_2007/cgm_w17.pdf [102] Lianggui Liu, Guangzeng Feng, “Simulated Annealing Based Multi- - 188 - constrained QoS Routing in Mobile ad hoc Networks”, ISSN:0929-6212, Wireless Personal communications: An International Journal 2007. [103] Zbigniew Tarapata, “O problemie zliczania dróg w grafach”. [104] D. Cherubini, A. Frangioni, M.G. Scutella, A. Fanni, C. Murgia, P. Zuddas, „A linear Programming Model for Traffic Engineering in 100% Survivable Networks under combined IS-IS/OSPF and MPLS-TE Protocols”, September 23, 2008. [105] Y. Wang, Z. Wang, L. Zhang, „Internet Traffic Engineering without Full Mesh Overlaying.“, INFOCOM 2001. [106] Tomasz Pisula, “Programowanie liniowe – metoda Simplex – przykład zastosowania algorytmu”, prezentacja wykładowa. [107] Sebastian Sitarz, „Programowanie liniowe”, źródło http://www.mathkit.friko.pl/documents/prog_lin.pdf [108] Erik Ehrling, „Fast Parallel Matrix Multiplication – Practical Hybrid Algorithms”, Royal Institute of Technology, Stockholm. [109] Henry Cohn, Robert Kleinberg, Balazs Szegedy, and Chris Umans, “Grouptheoretic Algorithms for Matrix Multiplication”, 46th Annual Symposium on Foundations of Computer Science, IEEE Computer Society, pp. 379–388, 25 October 2005, Pittsburgh, PA. [110] G. B. Dantzig, “Linear Programming and Extensions”, Princeton, NJ: Princeton University Press, 1963. [111] V. Klee, G. J. Minty, O. Shisha, "How Good is the Simplex Algorithm?" In Inequalities 3, New York: Academic Press, 159-175, 1972. [112] J. Nocedal, S. J. Wright, “Numerical Optimization”. New York: SpringerVerlag, 1999. [113] L.G. Chaczijan, “Polinomialnyj ałgoritm w liniejnom programirowanii”, Dokłady Akadiemii Nauk SSSR, 1979. [114] D. Dobkin, R.J. Lipton, S. Reiss, „Linear programming is log-space hard for P.” Inf. Proc. Lett. 1979. [115] N. Karmarkar, “A new polynomial-time algorithm for linear programming”, Combinatorica, 1984, No. 4. - 189 - [116] James Renegar, “A Polynomial-Time Algorithm, Based on Newton’s Method, for Linear Programming”, Cornel University, USA 1986. [117] Jacek Błażewicz, “Złożoność obliczeniowa problemów kompinatorycznych”, WNT, Warszawa 1988. [118] J., Moy, “Multicast Extensions to OSPF", RFC 1584, marzec 1994. [119] R., Coltun, V. Fuller, “The OSPF NSSA Option", RFC 1587, marzec 1994. [120] D. Ferguson, "The OSPF External Attributes LSA". [121] J., Moy, “Extending OSPF to Support Demand Circuits", RFC 1793, kwiecień 1995. [122] Utkin, Vadim I. , "Sliding Mode Control Design Principles and Applications to Electric Drives", IEEE Transactions on Industrial Electronics (IEEE). [123] Wiesław Krajewski, “Zarządzanie wydajnością w sieciach i Internecie – wybrane zagadnienia”, Instytut Badań Systemowych PAN, Studia doktoranckie – wykład, marzec 2009. [124] Ford, L. R. and Fulkerson, D. R. “Flows in Networks. Princeton”, NJ: Princeton University Press, 1962. [125] Christoph Schnorr, “Convex and Non-convex Optimization”, University of Mannheim, Germany, Optimization Methods in Computer Vision, March 2006. [126] Ivica Martinjak, Marin Golub, “Comparison of Heuristic Algorithms in Functions Optimization and Knapsack Problem”, University of Zagreb, 2006. [127] Ivica Martinjak, Marin Golub, “Comparison of Heuristic Algorithms for the N-Queen Problem”, University of Zagreb, 2007. [128] Kazimierz Grygiel, “Metaheurystyki – nototki do wykładu”. [129] Maciej Piechowiak, Piotr Zwierzykowski, „Quantitative Comparison of Multicast Heuristic Algorithms”, 12-th Polish Teletraffic Symposium PSRT2005. [130] Fred Glover, Manuel Laguna, “Tabu Search”, 1997. [131] Fred Glover, “Tabu Search: A Tutorial”.University of Colorado, 2004. [132] Tomasz Masternak, Adam Łączyński, “Simplex Method for Linear Programming”, Akademia Górniczo Hutnicza w Krakowie. - 190 - Spis ilustracji Rys. 1.1 Przykład połączenia Point-to-Point................................................................ 19 Rys. 1.2 Schemat sieci broadcastowej na przykładzie Ethernetu................................. 21 Rys. 1.3 Schemat obwodów logicznych (podsieci wirtualnych).................................. 23 Rys. 1.4 Połączenia obszarów w protokole OSPF........................................................ 26 Rys. 1.5 Rys. 1.5. Połączenie linku wirtualnego w protokole OSPF............................ 28 Rys. 1.6 Schemat budowy pakietu „Hello”.................................................................. 33 Rys. 1.7 Schemat budowy pakietu „Database Description”......................................... 34 Rys. 1.8 Schemat budowy pakietu „Link State Request”............................................. 34 Rys. 1.9 Schemat budowy pakietu „Link State Update”.............................................. 35 Rys. 1.10 Schemat budowy pakietu „Router LSA”........................................................ 36 Rys. 1.11 Schemat budowy pakietu „Network LSA”..................................................... 37 Rys. 1.12 Schemat budowy pakietu „Summary LSA”................................................... 37 Rys. 1.13 Schemat budowy pakietu „AS external LSA”................................................ 38 Rys. 2.1 Schemat blokowy algorytmu 1 służącego do budowy tablicy routingu z wykorzystaniem tras typu NK........................................................................ 61 Rys. 2.2 Schemat blokowy algorytmu 2 służącego do budowy tablicy routingu z wykorzystaniem tras typu RK........................................................................ 65 Rys. 2.3 Przedstawia przykładową sieć o prostej strukturze złożonej z trzech routerów, przełącznika i czterech komputerów.............................................. 69 Rys. 2.4 Przykład sieci typu „stub”.............................................................................. 70 Rys. 2.5 Drugi przykład topologii sieci komputerowej................................................ 70 Rys. 2.6 Trzeci przykład topologii sieci komputerowej............................................... 72 Rys. 3.1 Przykład grafu dwudzielnego......................................................................... 80 Rys. 3.2 Przykład środowiska sieciowego.................................................................... 81 - 191 - Rys. 3.3 Przykład budowy tablicy Simplex.................................................................. 87 Rys. 3.4 Idea działania dwupakietowej metody wyznaczania opóźnień w sieciach komputerowych ([123]).................................................................................. 96 Rys. 3.5 Czwarty przykład topologii sieci komputerowej............................................ 109 Rys. 3.6 Piąty przykład topologii sieci komputerowej............................................... 110 Rys. 3.7 Szósty przykład topologii sieci komputerowej............................................. 112 Rys. 4.1 Schemat blokowy algorytmu 5 służącego do optymalizacji przepustowości. 125 Rys. 4.2 Logiczny schemat przepływu informacji pomiędzy używanymi algorytmami.................................................................................................... 128 Rys. 4.3 Pierwsza z poddanych badaniom przykładowych topologii........................... 129 Rys. 4.4 Druga z poddanych badaniom przykładowych topologii.............................. 131 Rys. 4.5 Trzecia z poddanych badaniom topologii sieciowych.................................... 132 Rys. 6.1 Przykładowa sieć komputerowa z routerami brzegowymi............................. 155 Rys. 6.2 Siódmy przykład topologii sieci komputerowej............................................. 174 - 192 - Spis tabel Tabela 2.1 Koszt tras oraz nazwa routera następnego skoku do sieci z komputerem H2 z rys. 2.5............................................................................................................ 71 Tabela 2.2 Koszty tras pomiędzy routerami przedstawionymi na rys. 2.6......................... 72 Tabela 3.1 Zbiorcze zestawienie obliczonych sumacyjnych czasów komunikacji............ 113 Tabela 4.1 Koszty połączeń pomiędzy routerami przedstawionymi na rys. 4.3................ 130 Tabela 4.2 Koszty połączeń pomiędzy routerami przedstawionymi na rys. 4.4................ 131 Tabela 5.1 Scenariusze przeprowadzonych badań............................................................. 141 Tabela 5.2 Wartości Ψmax(b) otrzymane dla topologii z rys. 4.3...................................... 142 Tabela 5.3 Wartości Ψśr(b) otrzymane dla topologii z rys. 4.3.......................................... 143 Tabela 5.4 Wartości parametrów beta otrzymane dla poszczególnych scenariuszy dla topologii z rys. 4.3............................................................................................ 144 Tabela 5.5 Wartości Ψmax(b) otrzymane dla topologii z rys. 4.4...................................... 145 Tabela 5.6 Wartości Ψśr(b) otrzymane dla topologii z rys. 4.4.......................................... 145 Tabela 5.7 Wartości parametrów beta otrzymane dla poszczególnych scenariuszy dla topologii z rys. 4.4............................................................................................ 146 - 193 - Spis wykresów Wykres 4.1 Złożoność metody SW...................................................................................... 140 Wykres 5.1 Wyniki optymalizacji Ψ(b) przeprowadzonej za pomocą metody symulowanego wyżarzania dla topologii pierwszej.......................................... 148 Wykres 5.2 Wyniki optymalizacji Ψ(b) przeprowadzonej za pomocą metody symulowanego wyżarzania dla topologii drugiej.............................................. 149 Wykres 5.3 Wyniki optymalizacji Ψ(b) przeprowadzonej za pomocą metody symulowanego wyżarzania dla topologii trzeciej............................................. 149 Wykres 6.1 Złożoność metody dokładnej............................................................................ 160 - 194 - Załącznik I Kod oprogramowania użytego do przeprowadzenia optymalizacji przepustowości środowiska sieciowego Ze względu na swoje rozmiary kody użytego oprogramowania zostały umieszczone na załączonej do rozprawy płycie CD, zarówno w wersji skompilowanej jak i tekstowej. Na wspomnianej płycie znajdują się także inne pliki jak: „trasy”, „koszty” lub „routery” zawierające informacje na temat poddanych badaniom topologii sieciowych, a jednocześnie niezbędne do prawidłowego działania aplikacji służącej do optymalizacji przepustowości. Załącznik II Przykładowe zastosowanie równoważenia obciążenia typu NK – informacja wstępna. Załącznik ten zawiera informacje na temat przykładowego zastosowania rozwiązania równoważenia obciążenia z udziałem tras typu NK w protokole OSPF. Ponieważ przedstawione w pracy rozwiązanie nie jest obecnie zaimplementowane w żadnym z ogólnie dostępnych na rynku urządzeń sieciowych, dlatego przykład ten należy traktować jako pewne przybliżenie rzeczywistości. Z drugiej strony, przedstawione przykładowe zastosowanie jest na tyle uniwersalne i elastyczne, że po pewnych korektach (głównie mających na celu dostosowanie go do potrzeb i możliwości konkretnej organizacji), najprawdopodobniej znajdzie zastosowanie w znacznej liczbie średnich i dużych firm działających na polskim, a także i międzynarodowym rynku. Mając na celu przedstawienie jak najbardziej kompletnego i spójnego przykładu zastosowania równoważenia typu NK, informacje przedstawione w tym załączniku znacznie przekraczają tematykę zagadnień samego routingu pakietów w sieciach komputerowych. Ponadto, w załączniku tym podjęto próbę ukazania kompletnego procesu planowania oraz budowy sieci komputerowej wykorzystującej jako protokół routingu zmodyfikowaną wersję protokołu OSPF. Ze względu na swój rozmiar pełen tekst załącznika II został umieszczony na dołączonej do rozprawy płycie CD. - 195 - Załącznik III Notacja, słowniczek oraz wykaz użytych terminów i oznaczeń Notacja ∈- przynależność do zbioru, + - algebraiczna suma liczb, - - algebraiczna różnica liczb, * - algebraiczny iloczyn liczb, / - algebraiczny iloraz liczb, | | - moc zbioru. Wykaz użytych oznaczeń Ψ (b) – całkowita przepustowość środowiska sieciowego (wyrażona w Mb/s), liczona jako suma przepustowości wszystkich komunikujących się ze sobą par sieci. Q j – efektywna przepustowość łącza ej (wyliczana z uwzględnieniem liczby tras wykorzystujących to łącze i mierzona w Mb/s), Ψk* – efektywna przepustowość komunikacji dla k-tej pary routerów (mierzona w Mb/s), ^ Ψ (k , q, b) – efektywna przepustowość trasy t qk (b) dla danego wektora b, 1 ≤ q ≤ l k , 1≤ k ≤ r. Ψ(bnew) – nowo wyznaczona przepustowość środowiska sieciowego (w kolejnej iteracji algorytmu). Ψ nom (k , q, b) – nominalna przepustowość trasy t qk (b) . Фkh– efektywna przepustowość (przepływność) przekroju Ckh. Ψkmax (b) – maksymalna wartość przepustowości (przepływu) dla k-tej pary routerów. - 196 - Ψ max – maksymalna przepustowość środowiska sieciowego. Ψ R (b) – wartość przepustowości routera. Ψ R (bnew ) – nowo wyznaczona (w kolejnej iteracji algorytmu) wartości przepustowości routera. ∆Ψ (b) - wartośc bezwzględna z różnicy Ψnew (b) − Ψ (b) . π j – wartość nominalnej przepustowości łącza ej. w – współczynnik o nazwie „variance”, jest on statycznie konfigurowany przez administratora routera. Współczynnik ten jest liczbą całkowitą z przedziału <1,128>. δk – wektor złożony z elementów k-tego wiersza macierzy D, δ k = [δ k 1 ,..., δ km ]T , 1 ≤ k ≤ r . λ j (b) – liczba tras, które prowadzą przez łącze ej (dla wszystkich komunikujących się par k k routerów ( R1 , R2 )). ε – liczba iteracji algorytmu dokładnego – Simplex. χ j – współczynnik optymalności dla danej zmiennej decyzyjnej xj w przykładzie działania metody Simplex. ϕ R – opóźnienie w jedną stronę do routera (hosta) R, mierzone w sekundach; ϕ j – opóźnienie generowane przez łącze ej; τ R – czas przetwarzania pakietu przez router R; λ – liczba łączy wchodzących w skład analizowanej trasy. Φ kw – przekrój numer w dla k-tej pary komunikujących się routerów. C kmin – przekrój minimalny pomiędzy dwoma wierzchołkami grafu (tworzącymi parę k). φ(x) – wartość funkcji energii dla zmiennej decyzyjnej „x”, oznaczana alternatywnie także jako E. φ* – najmniejsza wartość funkcji energii. ∆pk – liczba dróg prostych o długości p ≥ 1 w grafie pełnym Gf, między dowolną parą routerów k. ∆ k – liczba wszystkich dróg prostych w grafie pełnym Gf, między dowolną parą routerów k. ∆ – liczba wszystkich dróg prostych w grafie pełnym Gf, między wszystkimi parami routerów k. a – podstawa funkcji wykładniczej. - 197 - an – n-ty wyraz ciągu arytmetycznego. aj – wektor współczynników aij złożony z elementów j-tej kolumny macierzy A. aij – współczynniki nierówności ograniczeń – znane stałe, gdzie 1 ≤ i ≤ m , 1 ≤ j ≤ n , elementy macierzy A. A - macierz współczynników aij o rozmiarach mxn., gdzie i odpowiada numerowi wiersza macierzy, a j numerowi kolumny, oraz 1 ≤ i ≤ m , 1 ≤ j ≤ n . bi – wartości ograniczeń – znane stałe w przykładzie działania metody Simplex, gdzie 1≤ i ≤ m. βi – współczynnik wyznaczany dla routera vi przez stację zarządzającą z wykorzystaniem zmodyfikowanej metody symulowanego wyżarzania i wykorzystywany przy dodawaniu tras alternatywnych do tablicy routingu. βimax – maksymalna wartość współczynnika βi. b – wektor współczynników beta, b = [ β1 ,..., β m ]T . bnew – wektor zawierający nowo wyznaczone wartości współczynników βi (w kolejnej iteracji algorytmu). B – zmodyfikowana macierz incydencji grafu, o rozmiarach m * n i elementach bij zdefiniowanych następująco: bij = −1 jeśli łącze ej prowadzi do routera vi, bij = 1 jeśli łącze ej prowadzi od routera vi, w pozostałych przypadkach bij = 0 , 1 ≤ i ≤ m , 1≤ j ≤ n. cqk – koszt trasy t qk (b) . cross(x) – funkcja przeprowadzająca krzyżowanie osobników. c – koszt analizowanej trasy. cj, – współczynniki funkcji celu dla zmiennych niebazowych w przykładzie działania metody Simplex– znane stałe, gdzie 1 ≤ j ≤ n . copt – koszt trasy optymalnej. cmax – maksymalny koszt trasy z danego routera do dowolnej sieci docelowej znajdującej się w obrębie obszaru OSPF. ^ d (tqk (b)) – średnia długość trasy t qk (b) , rozumiana jako średnia arytmetyczna wyliczona z długości wszystkich istniejących tras w optymalizowanej sieci, przy czym długość trasy rozumiana jest jako liczba łączy wchodzących w jej skład. dk – całkowita ilość danych do przesłania między routerami pary ( R1k , R2k ), 1 ≤ k ≤ r . - 198 - D – macierz ruchu sieciowego o rozmiarach r * m i elementach δ ki zdefiniowanych następująco: δ ki = d k jeśli Ri = R2k (vi jest węzłem początkowym pary k), δ ki = − d k jeśli Ri = R1k (vi jest węzłem końcowym pary k), w pozostałych przypadkach δ ki = 0 , 1 ≤ k ≤ r , 1 ≤ i ≤ m . ej – nieskierowane łącze sieci o numerze j, krawędź grafu. e +j – skierowane łącze sieci o numerze j, krawędź grafu (łącze skierowane przeciwnie do e +j oznaczane jest jako e −j . E – zbiór łączy, E={e1,...,en}oraz {ej: 1 ≤ j ≤ n }. f – funkcja celu zadania optymalizacji z wykorzystaniem metody dokładnej. gb – współczynniki dla zmiennych swobodnych xb, dla przykładu działania metody Simplex. g – wektor współczynników gb. Hi – i-ty host (komputer). k – numer iteracji algorytmu. kmax – maksymalna liczba iteracji algorytmu. r l*(b) – całkowita liczba występujących tras komunikacji rozumiana jako l * (b) = ∑ l k (b) . k =1 l~(b) – liczba tras aktywnych, tj. tras, po których przesyłany jest ruch sieciowy, lk(b) – liczba tras komunikacji dla pary routerów ( R1k , R2k ), 1 ≤ k ≤ r . αi – liczba przeciążonych interfejsów routera Ri. Y – wartość losowa o rozkładzie jednostajnym z przedziału <0,1>. m – liczba routerów – wierzchołków grafu oraz liczba nierówności ograniczeń, liczba wierszy w macierzy współczynników nierówności ograniczeń. ~ mz – liczba wirtualnych routerów zewnętrznych. m* – liczba routerów po wprowadzeniu modyfikacji do zadania optymalizacji rozwiązywanego przy pomocy metody Simplex. µ (m, n) - zależność liczby równań ograniczających w metodzie dokładnej od liczby routerów i łączy. ε (m, n) – zależność liczby iteracji metody dokładnej od liczby routerów i łączy. mut(x) – funkcja przeprowadzająca mutację osobników. n – liczba łączy – krawędzi grafu, a także liczba zmiennych decyzyjnych funkcji celu dla metody Simplex, liczba kolumn w macierzy współczynników nierówności - 199 - ograniczeń. ~ n - liczba krawędzi łączących routery zewnętrzne z wewnętrznymi. n* - liczba łączy po wprowadzeniu modyfikacji do zadania optymalizacji rozwiązywanego przy pomocy metody Simplex. nmax – maksymalna liczba interfejsów dla routera v, przez które prowadzą trasy (optymalna i alternatywne) do sieci docelowej. ~ m – liczba wierzchołków reprezentujących routery „wejściowe” lub „wyjściowe”. Nd(x,T) – sąsiedztwo dynamiczne zmiennych decyzyjnych x, zależne od zbioru tabu. OΨ(b) – złożoność obliczeniowa algorytmu 3 tj. wyznaczania przepustowości środowiska sieciowego. OR(m,b) – złożoność obliczeniowa operacji wyznaczania przepustowości routerów. O(m) – złożoność obliczeniowa metody dokładnej w zależności od liczby routerów m. O(m,n) – złożoność obliczeniowa metody dokładnej w zależności od liczby routerów i łączy w sieci. Pr(Ψk (b) ≥ Ψk −1 (b)) – prawdopodobieństwo, że nowe Ψ(b) (wyznaczone w bieżącej iteracji algorytmu) jest nie gorsze niż poprzednie Ψ(b) (wyznaczone w poprzedniej iteracji), przy czym Ψk(b) – wartość Ψ(b) w iteracji nr k. Pr( E ≥ Y ) – prawdopodobieństwo, że wartość funkcji energii jest większa niż wartość losowa, gdzie Y to zmienna losowa o rozkładzie jednostajnym. r – liczba par komunikujących się routerów. RS – reguła selekcji nowych zmiennych decyzyjnych z sąsiedztwa obecnych (uwzględniająca kryteria aspiracji); Sn – suma n wyrazów ciągu arytmetycznego. Si – i-ta sieć komputerowa. s – długość pakietu testowego, mierzona w [b]. select(x,φ*) – funkcja wybierająca najlepiej przystosowanych osobników (na podstawie najlepszej dotychczas uzyskanej wartości funkcji oceny). tk – czas komunikacji dla pary routerów k. tkICMP – czas przesyłania komunikatu ICMP pomiędzy routerami ( R1k , R2k ). t qk (b) – trasa nr q dla pary routerów dla pary routerów ( R1k , R2k ), oraz wartości wektora b, 1 ≤ q ≤ lk , 1 ≤ k ≤ r . trasy(k,b) – funkcja która z uwzględnieniem wartości parametrów beta i zastosowaniem - 200 - algorytmu 1, wyznacza wszystkie acykliczne i rozłączne u źródła trasy pomiędzy routerami ( R1k , R2k ). Przez sformułowanie rozłączne u źródła należy rozumieć takie trasy, z których każda prowadzi przez inny interfejs wyjściowy danego routera. T – zbiór tabu. T(k) – temperatura w k-tej iteracji algorytmu. Tp – temperatura początkowa, oznaczana także jako (temperatura w zerowej iteracji T(0)). Tmin – temperatura minimalna po osiągnięciu której, algorytm kończy działanie. vi– liczba routerów wirtualnych powstałych z podziału routera rzeczywistego Ri. R – router (wierzchołek grafu). {R1, ... Rm} – zbiór routerów – wierzchołków grafu, {Ri: 1 ≤ i ≤ m }. ( R1k , R2k ) – k-ta para komunikujących się routerów, indeks górny oznacza numer pary, indeks dolny oznacza kolejność w parze tzn. R1k jest routerem początkowych k-tej pary, a R2k jej routerem końcowym, 1 ≤ k ≤ r . X – maksymalna liczba tras, z uwzględnieniem których przeprowadzane jest równoważenie obciążenia. xb – zmienne swobodne służące do przekształcania nierówności ograniczeń w równania w przykładzie działania metody Simplex. xj – argumenty funkcji celu – zmienne decyzyjne zadania optymalizacji, dla przykładu działania metody Simplex, gdzie 1 ≤ j ≤ n . x – zmienna decyzyjna ze zbioru wartości dopuszczalnych S. x0 – wartość początkowa zmiennej decyzyjnej należącej do zbioru S. x* – zmienna decyzyjna ze zbioru wartości dopuszczalnych S, dla której wartość funkcji energii przyjmuje wartość najmniejszą. x kj – współczynnik obciążenia łącza ej przez parę routerów ( R1k , R2k ), ilość danych przesłanych między routerami tej pary, x kj ∈< 0, π j > , 1 ≤ k ≤ r , 1 ≤ j ≤ n . x k – wektor współczynników obciążenia łączy dla pary numer k, x k = [ x1k ,..., x nk ]T , 1 ≤ k ≤ r . z – oznaczenie funkcji celu w przykładzie działania metody Simplex. Słowniczek użytych terminów statystycznych. - 201 - Na potrzeby tej pracy, terminy takie jak: • średnia arytmetyczna; • wartość maksymalna; należy interpretować w sposób następujący. Średnia arytmetyczna - n liczb a1,a2,...,an nazywamy liczbę (Z.III.1) Średnia arytmetyczna jest właśnie tym, co w potocznym języku określa się mianem średniej. Można ją również określić jako średnią potęgową rzędu 1. Średnia arytmetyczna jest jedną z najbardziej intuicyjnych miar oceny populacji, stosowanych często w codziennym życiu – przykładem może być średni wzrost w grupie osób. Średnia arytmetyczna jest dobrą miarą położenia rozkładu i jednocześnie miarą tendencji centralnej. Jest to miara klasyczna rozkładu, czyli każda zmiana dowolnego elementu badanego zbioru pociąga za sobą zmianę wartości średniej. Źródło: http://pl.wikipedia.org/wiki/%C5%9Arednia_arytmetyczna Wartość maksymalna – Wartość zwracana przez funkcję „maksimum”, gdzie funkcja ta wybiera ze zbioru argumentów element największy (w sensie przyjętej miary). Słowniczek użytych terminów technicznych. BGP – (Border Gateway Protocol) protokół służący wymianie informacji pomiędzy systemami autonomicznymi. BGP zalicza się do tzw. protokołów zewnętrznych (exterior gateway protocol) i został opisany w RFC 1771 oraz 4271. Obecnie najnowsza wersja tego protokołu to BGP4. HSRP – (Hot Standby Router Protocol) własnościowy protokół firmy Cisco Systems zapewniający wysoką dostępność routera pełniącego funkcję bramki (gateway). Grupa routerów widziana jest jako jeden router wirtualny, gdzie jeden z routerów w grupie pełni funkcję bramki (znajduje się w stanie aktywnym) zaś pozostałe monitorują jego stan. W sytuacji awarii routera aktywnego inny router z grupy przejmuje jego funkcję. - 202 - ISDN BRI – (Integrated Service Digital Network Basic Rate Interface) technologia tzw. polączeń komutowanych umożliwiająca wykorzystanie analogowej sieci telefonicznej do przesyłania informacji w formie cyfrowej. ISDN występuje w dwóch wersjach BRI oraz PRI w wersji BRI istnieją dwa kanały komunikacyjne oznaczane jako B (Bearer channel) o przepustowości 64 kbps każdy oraz kanał sygnalizacyjny oznaczony jako D o przepustowości 16 kbps. MPLS – (Multiprotocol Label Switching) metoda kierowania pakietów IP na podstawie wartości posiadanych przez nie etykiet. Uwzględniając informacje zawarte w etykietach routery oraz przełączniki kierują pakiety w odpowiednie wcześniej zdefiniowane segmenty sieci. MPLS często jest określany mianem LAN-przez-WAN. Przełącznik warstwy trzeciej – urządzenie łączące w sobie funkcjonalności przełącznika sieciowego oraz routera. Urządzenia te częstokroć zwane są routującymi przełącznikami albo przełącznikami z modułami routujacymi. STP – (Spanning Tree Protocol) protokół tworzący minimalne drzewo rozpinające w grafie składającym się z przełączników sieciowych rozumianych jako węzły grafu oraz połączeń pomiędzy tymi przełącznikami rozumianymi jako krawędzie grafu. W celu zachowania ciągłości działania na wypadek utraty połączenia pomiędzy przełącznikami łącza takie zwielokrotnia się lub tworzy dodatkowe połączenia poprzez inne przełączniki. Tego typu działanie tworzy tzw. cykle w grafie co w odniesieniu do technologii sieciowych ma pewne wady np. możliwość zablokowania sieci poprzez tzw. „broadcast storm”. W sytuacji kiedy połączenie jest uznawane za uszkodzone STP „przeorganizowuje” minimalne drzewo rozpinające dostosowując je do powstałych warunków umożliwiając dalsze poprawne funkcjonowanie sieci komputerowej. VLAN – (Virtual LAN) grupa urządzeń sieciowych znajdujących się w tej samej lub różnych sieciach lokalnych skonfigurowanych w sposób umożliwiający komunikację pomiędzy nimi tak jak gdyby były zlokalizowane w jednej i tej samej sieci lokalnej. VLANy grupują komputery za pomocą połączeń logicznych nie zaś fizycznych. VRRP – (Virtual Router Redundancy Protocol) protokół zapewniający wysoką dostępność routera pełniącego funkcje bramki (gateway) opisany w RFC 3768. Idea działania jest - 203 - zbliżona do protokołu HSRP. VRRP jest protokołem otwartym i szeroko stosowanym przez wielu producentów sprzętu sieciowego. Załącznik IV Analiza funkcji celu dla metody SW Dla celów przeprowadzonej analizy przyjęto, że wykorzystywane łącza są maksymalnie obciążone – inna sytuacja nie stanowi przedmiotu zainteresowania z punktu widzenia - 204 - tematyki tej pracy. W dalszej części analizy przyjęto, że dane są wymieniane pomiędzy dwiema parami sieci komputerowych. Pierwsza para to S1, S2 oznaczona jako k=1 oraz druga para S3, S4 oznaczona jako k=2. Ilość wymienianych informacji oraz topologia sieci, nie mają w tym momencie większego znaczenia. Przyjęto, że analiza będzie odbywała się na zasadzie porównania Ψ (b) dla dwóch przypadków. W przypadku pierwszym zakłada się, że wszystkie routery posiadają włączone równoważenia obciążenia typu RK, natomiast w przypadku drugim typu NK. Należy przy tym zaznaczyć, że poza różnicą w rodzajach równoważenia obciążenia żadne inne parametry nie ulegają zmianie. Przyjmijmy następujące oznaczenia: ΨRK (b) dla pierwszego przypadku oraz ΨNK (b) dla przypadku drugiego. W świetle przyjętych oznaczeń, celem analizy jest wykazanie (w pewnych warunkach) prawdziwości następującej nierówności. ΨNK (b) > ΨRK (b) (Z.IV.1) Przyjmijmy założenie, że dla pierwszego przypadku komunikacja odbywa się na następujących trasach: Dla pary k=1 trasami t11 (b) ; t 21 (b) o równym koszcie. Dla pary k=2 trasą t12 (b) . Natomiast dla przypadku drugiego. Dla pary k=1 trasami t11 (b) ; t 21 (b) . Dla pary k=2 trasami t 12 ( b ) ; t 22 (b) . Trasa t 22 (b) powstała (została dodana do tablicy routingu, a dokładniej adres routera następnego skoku) na skutek włączenia równoważenia obciążenia typu NK i prowadzi przez inny interfejs wyjściowy niż trasa optymalna tj. t 12 ( b ) . Dodatkowo przyjmijmy, że w skład tras wchodzą następujące łącza. t11 (b) = {ea, eb, ec} ; t 21 (b) = {ed, ee, ef} ; t 12 ( b ) = {eg, eb, eh} ; t 22 (b) = {ei, ea, ej, ek} W sytuacji kiedy trasa t 22 (b) nie wykorzystywałaby ani jednego łącza używanego przez trasy t11 (b) ; t 21 (b) ; t 12 ( b ) wówczas sytuacja byłaby oczywista. Dodanie dodatkowej trasy prowadziłoby do zwiększenia przepustowości. W rozpatrywanym przypadku przyjęto, że trasa t 22 (b) przebiega przez łącze ea wykorzystywane już przez trasę t11 (b) . W takiej sytuacji analiza staje się bardziej złożona, lecz bliższa warunkom rzeczywistym. Dodatkowo (podobnie jak w rozdziale 3) wprowadzono współczynnik obciążenia łącza ej (wykorzystania jego przepustowości) przez daną trasę q i komunikującą się parę k, przy odpowiednim typie - 205 - RK NK równoważenia obciążenia x (k , q, j ) lub x (k , q, j ) . Współczynniki te przyjmują wartości z przedziału domkniętego <0,1>. Po wprowadzeniu przyjętych oznaczeń, analizowane funkcje przyjmują następujące postaci: ^ ^ ^ ΨRK (b) = Ψ (1,1, b) + Ψ (1,2, b) + Ψ (2,1, b) ^ ^ ^ ^ ΨNK (b) = Ψ (1,1, b) + Ψ (1,2, b) + Ψ (2,1, b) + Ψ (2,2, b) Po podstawieniu przepusstowości łączy wykorzystywanych przez poszczególne trasy oraz współczynników ich wykorzystania otrzymujemy. RK RK RK ΨRK (b) = min( x (1,1, ea ) * π a ; x (1,1, eb ) * π b ; x (1,1, ec ) * π c ) + RK RK RK min( x (1,2, ed ) * π d ; x (1,2, ee ) * π e ; x (1,2, e f ) * π f ) + RK RK RK min( x (2,1, eg ) * π g ; x (2,1, eb ) * π b ; x (2,1, eh ) * π h ) NK NK NK ΨNK (b) = min( x (1,1, ea ) * π a ; x (1,1, eb ) * π b ; x (1,1, ec ) * π c ) + NK NK NK min( x (1,2, ed ) * π d ; x (1,2, ee ) * π e ; x (1,2, e f ) * π f ) + NK NK NK min( x (2,1, eg ) * π g ; x (2,1, eb ) * π b ; x (2,1, eh ) * π h ) + NK NK NK NK min( x (2,2, ei ) * π i ; x (2,2, ea ) * π a ; x (2,2, e j ) * π j ; x (2,2, ek ) * π k ) Dla potrzeb dalszej analizy przyjęto, że dodanie nowej trasy nie wprowadza zmian współczynników obciążenia łączy, które nie wchodzą w skład tej trasy. W świetle przyjętego założenia nierówność ΨNK (b) > ΨRK (b) przyjmuje następującą postać. NK NK NK min( x (1,1, ea ) * π a ; x (1,1, eb ) * π b ; x (1,1, ec ) * π c ) + NK NK NK NK min( x (2,2, ei ) * π i ; x (2,2, ea ) * π a ; x (2,2, e j ) * π j ; x (2,2, ek ) * π k ) > RK RK RK min( x (1,1, ea ) * π a ; x (1,1, eb ) * π b ; x (1,1, ec ) * π c ) Dalsza część analizy zostanie rozdzielona na cztery możliwe przypadki odnoszące się do wykorzystania przepustowości współdzielonego łącza ea na trasie komunikacji pary k=1. Przypadek I - 206 - Bez równoważenia obciążenia, łącze ea nie jest „najwęższym gardłem” na trasie t11 ani dla równoważenia obciążenia typu RK, ani NK. RK RK RK RK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) ≠ x (1,1, ea ) * π a NK NK NK NK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) ≠ x (1,1, ea ) * π a Przypadek II Dla równoważenia obciążenia typu RK, lecz tylko przy równomiernym dostępie do współdzielonych łączy. RK RK RK RK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) ≠ x (1,1, ea ) * π a zaś dla NK NK NK NK NK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) = x (1,1, ea ) * π a Przypadek III Dla równoważenia obciążenia typu NK, łącze ea stanowi „najwęższe gardło” na trasie pomiędzy sieciami k=1 zarówno w przy równoważeniu obciążenia typu RK jak i NK, lecz przy NK nie jest łączem o minimalnej przepustowości na trasie pomiędzy sieciami k=2. RK RK RK RK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) = x (1,1, ea ) * π a NK NK NK NK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) = x (1,1, ea ) * π a dla równoważenia obciążenia typu RK i NK i jednocześnie NK NK NK NK NK min( x (2,2, ei ) * π i , x (2,2, ea ) * π a , x (2,2, e j ) * π j , x (2,2, ek ) * π k ) ≠ x (2,2, ea ) * π a Przypadek IV Dla równoważenia obciążenia typu NK, łącze ea stanowi „najwęższe gardło” na trasie pomiędzy sieciami k=1, zarówno w przy równoważeniu obciążenia typu RK jak i NK. Dodatkowo, przy NK jest łączem o minimalnej przepustowości na trasie pomiędzy sieciami k=2. RK RK RK RK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) = x (1,1, ea ) * π a - 207 - NK NK NK NK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) = x (1,1, ea ) * π a dla równoważenia obciążenia typu RK i NK i jednocześnie NK NK NK NK NK min( x (2,2, ei ) * π i , x (2,2, ea ) * π a , x (2,2, e j ) * π j , x (2,2, ek ) * π k ) = x (2,2, ea ) * π a Dla przypadku pierwszego. Sytuacja jest dość oczywista. Łącze ea nie jest łączem o najmniejszej przepustowości na trasie pomiędzy sieciami k=1. Część jego przepustowości, wyrażona różnicą RK RK RK x (1,1, ea ) * π a - min( x (1,1, eb ) * π b ; x (1,1, ec ) * π c ) jest niewykorzystywana. Ponieważ różnica ta jest większa od zera, dlatego istnieje pewna część niewykorzystywanego pasma na tym łączu. Część ta, może zostać wykorzystana do komunikacji pomiędzy sieciami k=2 (dokładniej mówiąc przez trasę t 22 (b) ), co tym samym przyczyni się do wzrostu przepustowości całego środowiska sieciowego. W przypadku tym nierówność ΨNK (b) > ΨRK (b) jest zawsze spełniona. Dla przypadku drugiego. W przypadku tym przyjęto założenie, że łącze ea nie jest łączem o najmniejszej przepustowości na trasie t11 (b) przy włączonym równoważeniu obciążenia typu RK, natomiast jest nim po włączeniu równoważenia obciążenia typu NK (przy równomiernym dostępie do współdzielonych łączy). Dla uproszczenia dalszej części analizy, można przyjąć, że dla trasy t11 (b) łącze o najmniejszej przepustowości dla równoważenia typu RK to eb (równie dobrze może być to łącze ec), Zakładając nierównomierny dostęp do współdzielonego łącza (w tym przypadku ea) sytuacja staje się trywialna. Ponieważ przy równoważeniu obciążenia typu RK najwolniejszym łączem na trasie t11 (b) nie jest ea, dlatego posiada ono część niewykorzystywanego pasma, równą różnicy π a - π b . Pasmo to można wykorzystać „uruchamiając” trasę t 22 (b) , czyli włączając równoważenie obciążenia typu NK. Trasa t 22 (b) będzie miała przepustowość nie większą niż π a - π b , lecz jest to wartość niezerowa i wystarczająca do stwierdzenia prawdziwości nierówności ΨNK (b) > ΨRK (b) . - 208 - Zakładając równy dostęp do współdzielonych łączy (w tym przypadku jedynie łącza ea), sytuacja staje się bardziej skomplikowana. Ponieważ tylko dwie trasy współdzielą łącze ea, dlatego w celu spełnienia założeń tego punktu przepustowości łączy muszą spełniać warunek 0.5* π a ≤ π b . Nierówność ΨNK (b) > ΨRK (b) przyjmującą postać. NK NK NK NK x (1,1, ea ) * π a + min( x (2,2, ei ) * π i , x (2,2, ea ) * π a , x (2,2, e j ) * π j , NK x (2,2, ek ) * π k ) > RK x (1,1, eb ) * π b . NK NK Po podstawieniu x (2,2, ea ) = x (1,1, ea ) = 0.5 otrzymujemy. NK NK NK RK 0.5* π a + min( x (2,2, ei ) * π i , 0.5* π a , x (2,2, e j ) * π j , x (2,2, ek ) * π k ) > x (1,1, eb ) * π b ). W tym momencie pojawiają się dwie możliwości. Pierwsza, NK NK NK min( x (2,2, ei ) * π i , 0.5* π a , x (2,2, e j ) * π j , x (2,2, ek ) * π k ) = 0.5* π a druga natomiast NK NK NK min( x (2,2, ei ) * π i , 0.5* π a ) , x (2,2, e j ) * π j , x (2,2, ek ) * π k ) ≠ 0.5* π a Dla możliwości pierwszej nierówność ΨNK (b) > ΨRK (b) przyjmującą postać. RK 0.5* π a + 0.5* π a > x (1,1, eb ) * π b – zaś po zsumowaniu RK RK π a > x (1,1, eb ) * π b jeśli nawet przyjąć, że x (1,1, eb ) = 1 otrzymujemy πa > πb co w świetle przyjętego w tym punkcie założenia, tj. RK RK RK RK min( x (1,1, ea ) * π a , x (1,1, eb ) * π b , x (1,1, ec ) * π c ) = x (1,1, eb ) * π b zawsze jest prawdą. Dla możliwości drugiej przyjmijmy, że łączem o najmniejsze przepustowości jest ei (równie dobrze może to być każde inne łącze na tej trasie, za wyjątkiem ea). ΨNK (b) > ΨRK (b) przyjmującą postać. NK RK 0.5* π a + x (2,2, ei ) * π i > x (1,1, eb ) * π b Ponieważ zarówno łącze eb jak i ei są najwolniejszymi łączami na trasach w skład, których NK RK wchodzą, dlatego można przyjąć x (2,2, ei ) = x (1,1, eb ) = 1 w efekcie, czego otrzymujemy: - 209 - 0.5* π a + π i > π b . Nierówność ta nie zawsze jest spełniona. Reasumując, przy równym dostępnie do współdzielonych łączy oraz w świetle przyjętych w tym punkcie założeń, włączenie równoważenia typu NK prowadzi do wzrostu przepustowości środowiska sieciowego, kiedy π i > π b - 0.5* π a . Dla przypadku trzeciego. Zakładając, że łączem o najmniejszej przepustowości na trasie t 22 (b) jest ei ( równie dobrze może to być każde inne łącze na tej trasie, za wyjątkiem ea), nierówność ΨNK (b) > ΨRK (b) przyjmuje następującą postać. NK NK RK x (1,1, ea ) * π a + x (2,2, ei ) * π i > x (1,1, ea ) * π a Ponieważ łącze ei posiada najmniejszą przepustowość i jest wykorzystywane tylko przez trasę NK t 22 , dlatego x (2,2, ei ) = 1. Podobnie sytuacja wygląda z łączem ea dla równoważenia typu RK RK, gdzie x (1,1, ea ) = 1. W efekcie otrzymujemy. NK x (1,1, ea ) * π a + π i > π a Zakładając równomierny dostęp do współdzielonych łączy (w tym przypadku łącza ea przez NK trasy t11 i t 22 otrzymujemy x (1,1, ea ) = 0.5, a w rezultacie 0.5* π a + π i > π a po uproszczeniu π i > 0.5* π a . Należy zaznaczyć, że nierówność ta nigdy nie jest spełniona. W szczególnym przypadku może ona przekształcić się w równanie. Jest tak, ponieważ na trasie t 22 występują obydwa łącza tj. ei oraz ea. Pakiety „wypływające” z łącza ei trafiają do współdzielonego (w 50%) łącza ea. W przypadku tym nierówność ΨNK (b) > ΨRK (b) może zostać przekształcona w analogiczne równanie, (kiedy π i = 0.5* π a ). W efekcie, włączenie równoważenia obciążenia typu NK nie prowadzi do zwiększenia przepustowości środowiska sieciowego. Ponadto, gdy π i < 0.5* π a włączenie równoważenia typu NK prowadzi do spadku Ψ (b) (przy równomiernym dostępie do współdzielonych łączy). Zakładając nierównomierny dostęp do współdzielonych łączy (w tym przypadku łącza ea przez trasy t11 (b) i t 22 (b) otrzymujemy: NK NK RK x (1,1, ea ) * π a + x (2,2, ei ) * π i > x (1,1, ea ) * π a - 210 - Ponieważ łącze ei posiada najmniejszą przepustowość i jest wykorzystywane tylko przez trasę NK t 22 (b) , dlatego x (2,2, ei ) =1. Podobnie sytuacja wygląda z łączem ea dla równoważenia typu RK RK, gdzie x (1,1, ea ) =1. W efekcie otrzymujemy. NK x (1,1, ea ) * π a + π i > π a NK Ponieważ π i ≤ (1- x (1,1, ea ) * π a ), dlatego lewa strona nierówności nie może być większa niż NK prawa. W szczególnym przypadku, tj., kiedy π i = (1- x (1,1, ea ) * π a ), nierówność ΨNK (b) > ΨRK (b) może zostać przekształcona w analogiczne równanie. W efekcie, czego włączenie równoważenia obciążenia typu NK nie prowadzi do zwiększenia przepustowości środowiska sieciowego. Należy zaznaczyć, że przy nierównomiernym dostępie do współdzielonych łączy, włączenie równoważenia typu NK nie wpłynie na Ψ (b) (nie nastąpi zmniejszenie przepustowości). Stanie się tak nawet przy wolnym łączu ei, a to, dlatego, że chociaż wykorzystanie przez trasę t 22 (b) łącza ea będzie małe, to wolna część pasma zostanie w pełni wykorzystana przez trasę t11 (b) – w rezultacie Ψ (b) nie ulegnie zmianie. Dla przypadku czwartego. W przypadku tym łącze ea jest łączem o najmniejszej przepustowości dla tras t11 (b) , t 22 (b) zarówno przy włączonym równoważeniu obciążenia typu RK jak i NK. W takiej sytuacji nie ma możliwości zwiększenia Ψ (b) . Fakt ten wynika z ograniczenia, jakie spowodowane jest wysyceniem pasma łącza ea przez trasę t11 (b) . Dodanie kolejnej trasy wykorzystującej to łącze, spowoduje jedynie zmianę współczynnika wykorzystania łącza ea przez trasę t11 (b) , lecz nie będzie prowadziło do wzrostu przepustowości. W następstwie, czego analizowana nierówność ΨNK (b) > ΨRK (b) nie jest prawdziwa. Wartym uwagi jest fakt, że w przypadku tym włączenie równoważenia typu NK także nie prowadzi do spadku przepustowości całego środowiska sieciowego, czyli prawdziwym jest równanie ΨNK (b) = ΨRK (b) . - 211 -