praca doktorska - Home Page of Ireneusz (Irek) SZCZEŚNIAK
Transkrypt
praca doktorska - Home Page of Ireneusz (Irek) SZCZEŚNIAK
PRACA DOKTORSKA Metoda oceny wydajności sieci komunikacyjnych opartych na optycznym przełączaniu pakietów mgr inż. Ireneusz Szcześniak Promotor: Prof. dr hab. inż. Tadeusz Czachórski Gliwice 2008 Spis treści Podziękowania iii 1 Wprowadzenie 1 1.1 Optyczne przełączanie pakietów . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Ocena wydajności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3 Teza pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2 Metoda oparta na wielomianach 3 17 2.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 Definicja problemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3 Analiza 2.4 Przykładowe wyniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3 Rozwinięcie analizy dla węzłów 4 × 4 33 3.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2 Definicja problemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3 Analiza 3.4 Przykładowe wyniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.5 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4 Uogólnienie metody 49 4.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2 Definicja problemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.3 Analiza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.4 Przykładowe wyniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.5 Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5 Podsumowanie 73 A Program OPUS 75 A.1 Przygotowanie i uruchamianie programu . . . . . . . . . . . . . . . . . . . 75 A.2 Format danych wejściowych . . . . . . . . . . . . . . . . . . . . . . . . . . 76 A.3 Format danych wyjściowych . . . . . . . . . . . . . . . . . . . . . . . . . . 78 B Model sieci PIONIER 83 B.1 Topologia sieci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 B.2 Obciążenie sieci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 C OPUS Documentation 99 C.1 File and Class Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 C.2 File Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 C.3 Class Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Podziękowania Bardzo dziękuję panu Profesorowi Tadeuszowi Czachórskiemu za opiekę naukową i organizacyjną, za radę i pomoc oraz za możliwość realizacji własnych zainteresowań. Przywilejem była dla mnie praca w Instytucie Informatyki Teoretycznej i Stosowanej w Gliwicach, gdzie mogłem pracować tylko i wyłącznie nad doktoratem. Dziękuję także mojej całej rodzinie i narzeczonej Bożence, którzy całym sercem mnie wspierali. Dzięki nim mogłem spokojnie pracować nad doktoratem w najlepszej rodzinnej atmosferze. Oprócz mojej rodziny, wiele osób miało na mnie duży pozytywny wpływ: Piotr Gawłowski, Renata Mrózek, Janusz Bogusław Wiśniewski, Paul Rybinski, Emilie Pooler, Jill Burstein, Alexander Pletzer, Stephan Brunner, John R. Cary, Biswanath Mukherjee i Damon Wischik. Serdecznie dziękuję! Dziękuję Polsko-Amerykańskiej Komisji Fulbrighta, Fundacji na rzecz Nauki Polskiej i British Council za stypendia, które umożliwiły mi współpracę z najlepszymi naukowcami. Dziękuję także Radzie Nauki, która przyznała grant promotorski. Kilka osób pomogło mi w korekcie pracy: Renata Mrózek, Artur Rataj, Bożena Woźna, Krzysztof Grochla i Halina Szcześniak. Serdecznie dziękuje! Acknowledgements I thank sincerely Professor Tadeusz Czachórski for the scientific and organizational support, for mentoring and helping me to pursue my research interests. Working at the Institute of Theoretical and Applied Informatics of the Polish Academy of Sciences was a privilege, where I was able to concentrate exclusively on my research. I also thank my family and fiancée Bożenka, who supported me wholeheartedly. Thanks to them I worked on my PhD in the best possible family environment. Aside from my family, a number of people influenced me positively: Piotr Gawłowski, Renata Mrózek, Janusz Bogusław Wiśniewski, Paul Rybinski, Emilie Pooler, Jill Burstein, Alexander Pletzer, Stephan Brunner, John R. Cary, Biswanath Mukherjee and Damon Wischik. Thank you so much! I thank the Polish-U.S. Fulbright Commission, the Foundation for Polish Science, and the British Council for scholarships that gave me the opportunity to work with the best scientists. Renata Mrózek, Artur Rataj, Bożena Woźna, Krzysztof Grochla and Halina Szcześniak scrutinized this thesis for mistakes. Thank you! Rozdział 1 Wprowadzenie Niezbędną częścią nowoczesnego społeczeństwa informacyjnego są sieci telekomunikacyjne, których zadaniem jest szybkie, niezawodne i tanie przekazywanie informacji. Sieć telekomunikacyjna zbudowana jest z węzłów, które przetwarzają informację oraz z połączeń między węzłami, które przenoszą informacje. Sieci telekomunikacyjne można ogólnie podzielić na sieci radiowe (przykładem są sieci komórkowe), elektryczne (na przykład elektryczne sieci telefoniczne od centrali do domu klienta) i światłowodowe (na przykład sieci SONET/SDH). Szkieletowymi sieciami telekomunikacyjnymi są najczęściej sieci światłowodowe. Ilość danych przesyłanych przez sieci szkieletowe zwiększa się, a wymagania co do jakości usług sieci rosną. Stąd sieci światłowodowe są bezustannie rozbudowywane i ulepszane, są badane nowe rozwiązania sprzętowe, opracowywane nowe protokoły kontroli sieci. Obecne sieci światłowodowe wykorzystują tylko niewielką część przepustowości dostępnej w światłowodach, między innymi z powodu wolnych elementów elektronicznych. Jak do tej pory zamiana urządzeń elektronicznych na optyczne okazała się korzystna. Doskonałą książką na temat sieci optycznych i ich ewolucji jest [1], która w przejrzysty i praktyczny sposób omawia wiele tematów, począwszy od fizycznych podstaw komunikacji światłowodowej do zarządzania sieciami światłowodowymi. Kolejną pozycją na temat sieci optycznych jest [2], która omawia najnowsze wyniki prac badawczych. Początkowo, pod koniec lat siedemdziesiątych, światłowody były wykorzystane do komunikacji na odległości kilku kilometrów. W węzłach sygnał optyczny był przekształcany na sygnał elektryczny, a następnie wysyłany do następnego węzła po przekształceniu na postać optyczną. Jest to konwersja określana jako OEO, czyli optyczno-elektryczno-optyczna. Jeżeli węzły były bardzo od siebie oddalone, to stosowano regeneratory elektroniczne, które regenerowały sygnał przez konwersję OEO. Z biegiem czasu osiągano coraz to większe odległości, na jakie można było przesłać sygnał optyczny bez regeneracji. Wszystko to się 2 ROZDZIAŁ 1. WPROWADZENIE działo z wykorzystaniem w światłowodzie jednej długości fali światła1 . Przełomowym było opracowanie technologii WDM (ang. wavelength division multiplexing)2 , która pozwoliła na przesyłanie w światłowodzie wielu długości fal. Mimo zwielokrotnienia przepustowości, ciągle potrzebna była kosztowna regeneracja OEO wielu długości fal. Opracowanie wzmacniaczy optycznych było następnym przełomowym dokonaniem, co umożliwiło optyczne wzmocnienie sygnału jednocześnie na wielu długościach fal. To pozwoliło zredukować liczbę wymaganych regeneratorów OEO, które ciągle jednak są wymagane do regeneracji sygnału optycznego, kiedy jest on zbyt zniekształcony. Niegdyś w każdym węźle sieci sygnał optyczny musiał być zamieniany na postać elektryczną celem jego przełączenia, jednak obecnie może on być przełączany optycznie na poziomie długości fali przez przełącznice optyczne OXC (ang. optical cross connect). Dodatkowo są dostępne krotnice transferowe OADM (ang. optical add-drop multiplexers), które potrafią dodawać i usuwać pojedyncze długości fal. Urządzenia OXC, OADM, wzmacniacze optyczne, regeneratory i konwertery długości fal pozwalają budować sieci WDM, które są w stanie ustanawiać ścieżki optyczne między parami węzłów udostępniane klientom sieci. Obecnie klientami sieci WDM są sieci elektroniczne takie jak PDH, SONET/SDH czy IP. Praca [3] omawia historię sieci światłowodowych i ich dalszą ewolucję w kierunku wspierania różnych sieci elektronicznych. Zostały zaproponowane rozwiązania, które potrafią przełączać w sposób optyczny na poziomie niższym niż jedna długość fali [4], w odróżnieniu od sieci WDM: • Zaproponowano zestawianie ścieżki optycznej (ang. lightpath) między pewnymi węzłami sieci i dzielenie jej przez podział czasu pomiędzy węzłami, które znajdują się na ścieżce optycznej. Zostały zaproponowane rozwiązania celem nawiązywania połączeń jednokierunkowych pomiędzy jednym węzłem a wieloma innymi nazwane super ścieżkami optycznymi [5] (ang. super-lightpath), między wieloma węzłami a jednym węzłem [6] (ang. time-domain wavelength interleaved networking) oraz miedzy wieloma węzłami i wieloma węzłami [7, 8] (ang. optical light-trails, distributed aggregation). • Innym proponowanym rozwiązaniem jest przełączanie ciągów (ang. optical burst switching) między parami węzłów, które także polega na zestawianiu ścieżek optycznych, ale na bardzo krótki czas, nawet na kilka milisekund. Ścieżka nie musi być 1 W pracy angielskiemu terminowi „light wavelength” odpowiada „długość fali światła” albo ”długość fali”. Termin ten jest używany w anglojęzycznej literaturze i tak jest on tłumaczony w polskich opracowaniach. 2 Ciekawe jest, że technologia WDM została tak nazwana, a nie użyto nazwy FDM (ang. frequency division multiplexing) używanej w dziedzinie telekomunikacji radiowej. Najprawdopodobniej stało się to dlatego, ponieważ technologia WDM została opracowana przez fizyków, którzy zwykli opisywać światło przez długość fali, a nie częstotliwość [1]. 1.1 Optyczne przełączanie pakietów 3 całkowicie ustanowiona, zanim nadawca zacznie przesyłać dane. Jeżeli w pewnym węźle ścieżka jeszcze nie została ustanowiona, to dane nadawcy są buforowane do momentu ustanowienia ścieżki. Początkowe części ścieżki są kolejno rozłączane, kiedy nadawca nie przesyła danych, mimo że nie wszystkie dane dotarły do odbiorcy. Ciągi są znacznie dłuższe niż pakiety optyczne i dlatego wymagane czasy przełączania w węzłach wynoszą kilka milisekund, a nie mikrosekund jak w przypadku przełączania pakietów. Wadą przełączania ciągów jest konieczność utrzymania niskiego obciążenia siec, aby zapewnić zadowalającą dostępność usług. • Kolejnym rozwiązaniem jest optyczne przełączanie pakietów, które opisane jest w następnym podrozdziale. 1.1 Optyczne przełączanie pakietów W optycznym przełączaniu pakietów dane użytkownika (ang. payload) w pakiecie są przełączane optycznie. Optyczne przełączanie pakietów może być szybsze, a w dodatku tańsze w zakupie (ang. CAPEX) i utrzymaniu (ang. OPEX) od przełączania elektronicznego [9]. Optyczne przełączniki pakietów mogłyby pobierać mniej energii, wydzielać mniej ciepła i zajmować mniej miejsca [10] w porównaniu do elektronicznych odpowiedników. Jednak należy pamiętać, że nowe rozwiązania elektroniczne są coraz szybsze [11] i tańsze, co stawia coraz większe wymagania optycznemu przełączaniu pakietów. Co więcej, obecnie działające sieci SONET/SDH są ulepszane, aby lepiej przenosić ruch pakietowy [12]. Jeżeli nagłówek pakietu jest przetwarzany elektronicznie, to mówimy wtedy o przezroczystym optycznym przełączaniu pakietów (ang. transparent optical packet switching) [13, 14]. Jeżeli nagłówek jest przetwarzany optycznie, to mówimy wtedy o całkowicie optycznym przełączaniu pakietów (ang. all-optical packet switching) [15, 16, 17]. Innym z wariantów optycznego przełączania pakietów jest optyczne przełączanie szczelin (ang. photonic slot routing), którego cechą wyróżniającą jest przełączanie jednocześnie wielu pakietów na wszystkich długościach fal [18]. Z czasem funkcje przełączników elektronicznych powinny zostać przejęte przez optyczne przełączniki pakietów. Możemy tego oczekiwać, ponieważ optyczne urządzenia sieciowe są tańsze w eksploatacji, są mniej zawodne i pobierają mniej energii [10] w porównaniu do swoich elektronicznych odpowiedników. Mimo że w dziedzinie optycznego przełączania pakietów dokonano dużych postępów, to ciągle nie jest to technologia, którą można zastosować w sieciach szkieletowych w ciągu najbliższych kilku lat. Ogólny schemat sieci optycznego przełączania pakietów jest przedstawiony na rysunku 1.1. Elektroniczne sieci dostępowe „SD” są podłączone do węzła brzegowego „WB”. 4 ROZDZIAŁ 1. WPROWADZENIE SD SD SD SD WB WB SD WS SD WS WS WS sieć szkieletowa SD WB SD SD Rysunek 1.1: Ogólny schemat sieci z optycznym przełączaniem pakietów, gdzie „SD” to sieć dostępowa, „WB” to węzeł brzegowy, a „WS” to węzeł szkieletowy. W węźle brzegowym przychodzące pakiety (głównie pakiety IP, [19]) są grupowane i składane do pakietów optycznych dla lepszego wykorzystania sieci szkieletowej i zmniejszenia niekorzystnych efektów samopodobieństwa [20, 21, 22, 23]. Następnie dane użytkownika (ang. payload) są zamieniane z postaci elektronicznej na postać optyczną i przesyłane do sieci szkieletowej. Pakiety są przesyłane między węzłami szkieletowymi „WS” lub, inaczej mówiąc, pakiety wykonują skoki między nimi (ang. hops). Pakiety są przesyłane pomiędzy węzłami sieci w postaci optycznej (czyli bez zamiany sygnału optycznego na elektryczny w każdym węźle, jak to dzieje się w tradycyjnych sieciach) do momentu, kiedy pakiety osiągają swoje docelowe węzły brzegowe. W docelowych węzłach brzegowych zawartość pakietów jest zamieniana na sygnał elektryczny i przesyłana do elektronicznej sieci dostępowej. Przegląd najważniejszych wczesnych prac nad optycznym przełączaniem pakietów jest omówiony w [24]. Artykuł [13] jest przeglądem technik potrzebnych w sieciach optycznego przełączania pakietów. Przegląd architektur i rozwiązań jest przedstawiony w [25, 26, 27, 28, 29, 30]. Prowadzono wiele prac nad optycznym przełączaniu pakietów, a najbardziej się wyróżniające to KEOPS [9], DAVID [31], STOLAS [32], prace na Uniwersytecie Kalifornijskim w Davis [33] i inne [34, 35, 36, 37, 38, 39, 40, 41, 42, 27, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55]. Praktyczne zastosowanie optycznego przełączania pakietów jest przedyskutowane w kilku pracach. W pracy [10] technologia ta jest poddana krytyce i jest przedstawiona jako rozwiązanie, które obecnie zawiodło, ale które rokuje nadzieję na przyszłość. 1.1 Optyczne przełączanie pakietów 5 Rysunek 1.2: Optyczny przełącznik pakietów firmy Yokogawa (użyto za pozwoleniem firmy Yokogawa). Praca [56] zawiera podobną krytykę. Niektóre zorientowane na praktykę prace na temat sieci optycznych zupełnie pomijają technologię optycznego przełączania pakietów [57, 58, 59]. Prace [60, 11, 19, 61, 62, 63, 64, 65, 66] omawiają sposoby wykorzystania dotychczasowych osiągnięć tej technologii w sieciach optycznych. Badano także, jak sieci optycznego przełączania pakietów mogłyby służyć do transportu ruchu IP [67, 28, 61, 68, 69, 20, 70, 71, 72, 73, 74, 75, 76]. Są firmy, które oferują optyczne przełączniki pakietów. Przykładem jest firma Yokogawa [77], która oferuje przełącznik (rys. 1.2) typu 2 × 2 (dwa światłowody przychodzące, dwa wychodzące), który przełącza pakiety na jednej długości fali. Czas przełączania, czyli zmiany stanu przełącznika ze stanu „=” w „x” albo z „x” w „=”, wynosi około dwie nanosekundy. Ten przełącznik pełni funkcję węzła szkieletowego, z którego buduje się pierścienie. Do działania sieci potrzebny jest jeszcze węzeł brzegowy, który także jest dostarczany przez firmę Yokogawa. Optyczne przełączanie pakietów dzieli się na synchroniczne i asynchroniczne: • W synchronicznym optycznym przełączaniu pakietów wyznaczane są takty zegara, w których pakiety są wysyłane i odbierane, a pakiet w dziedzinie czasu nie jest dłuższy niż takt zegara. Czas trwania taktu zegara zależy od technologii wykorzystanej w urządzeniach. Istniejące bramki optyczne (ang. optical gates) mogą być wyłączane i włączane w czasie około dwie nanosekundy, co odpowiada czasowi ochronnemu w pakiecie (ang. guard time). Na przykład, w projekcie KEOPS [9] takt zegara trwa 1.64µs. 6 ROZDZIAŁ 1. WPROWADZENIE • W asynchronicznym optycznym przełączaniu pakietów nie ma wyznaczonych taktów zegara i pakiety mogą nadejść do przełącznika w dowolnej chwili. Technologia ta nie spotyka się z takim zainteresowaniem, jak synchroniczne optyczne przełączanie pakietów mimo prostszej budowy [56] (nie są wymagane urządzenia synchronizujące). Jest tak prawdopodobnie dlatego, że asynchroniczne technologia posiada większe prawdopodobieństwo konfliktu między pakietami w porównaniu z synchroniczną technologią [31, 71]. Innym powodem jest, że asynchroniczna technologia nie może pracować na bardzo obciążonej sieci, ponieważ wtedy wydajność takiej sieci spada, podobnie jak dzieje się w przypadku przełączania ciągów. Ważną częścią sieci optycznego przełączania pakietów są algorytmy kontroli dostępu i rutingu. Zadaniem kontroli dostępu jest zarządzanie pakietami żądającymi dopuszczenia do sieci szkieletowej z sieci dostępowej, tak aby zapewnić klientom odpowiednią jakość usług. Algorytm rutingu kieruje pakiety do węzła przeznaczenia oraz stara się najlepiej wykorzystać ubogie zasoby optycznego przełączania pakietów. Algorytm rutingu jest odpowiedzialny za przesyłanie pakietów do odpowiednich wyjść na odpowiedniej długości fali. Światłowód może przesłać w jednym takcie zegara co najwyżej tyle pakietów, ile posiada długości fal, a jeżeli więcej pakietów stara się uzyskać dostęp do światłowodu, to wtedy algorytm musi rozstrzygnąć konflikt między pakietami. Zaproponowano wiele metod rozwiązywania konfliktów, które są zwykle regułami DiffServ mówiącymi o kolejności przesyłania pakietów [78]. Jedną z metod rozstrzygania konfliktu między pakietami jest ruting z odbiciami (ang. deflection routing), który radzi sobie z brakiem pamięci optycznych przez przekierowanie pakietu do światłowodu, który nie prowadzi do węzła docelowego pakietu po najkrótszej ścieżce. Takie niewłaściwe przekierowanie nazywamy odbiciem (ang. deflection). Motywacją rutingu z odbiciami jest zapobieganie utracie pakietów przez wykorzystanie światłowodów łączących węzły jako buforów. Ruting z odbiciami może polepszyć wydajność sieci w przypadku małego obciążenia [79], jednak może on także pogorszyć wydajność sieci w przypadku dużego obciążenia, ponieważ z powodu odbić pakiety mogą przebywać w sieci przez długi czas (ang. livelock problem) [80]. Ruting z odbiciami był popularnym tematem badawczym, głównie na początku lat dziewięćdziesiątych ubiegłego wieku [81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 80, 101, 102, 103, 104, 105, 106, 107, 108]. 1.1.1 Komponenty Podstawowymi komponentami optycznego przełączania pakietów są multiplekser, demultiplekser, sprzęgacz, rozgałęziacz, stały konwerter długości fal, nastawny konwerter długo- 1.1 Optyczne przełączanie pakietów (a) (e) 7 (b) (f) (c) (g) (d) (h) (i) N ×N AWG (j) (k) Rysunek 1.3: Komponenty optyczne: (a) multiplekser, (b) demultiplekser, (c) sprzęgacz, (d) rozgałęziacz, (e) stały konwerter długości fali, (f) nastawny konwerter długości fali, (g) bramka optyczna, (h) wzmacniacz optyczny, (i) optyczna linia opóźniająca, (j) przełącznik typu 2 × 2, (k) element AWG typu N × N . ści fal, bramka optyczna, linia opóźniająca, wzmacniacz optyczny, przełącznik typu 2 × 2 i element AWG typu N × N (ang. arrayed waveguide grating). Rysunek 1.3 przedstawia symbole tych elementów. Światło podróżuje przez elementy tylko w jednym kierunku. Multiplekser (rys. 1.3a) posiada wiele światłowodów wejściowych i jeden światłowód wyjściowy. Z każdego światłowodu wejściowego jest wybierana tylko jedna długość fali, która jest przesyłana do światłowodu wyjściowego. Tak więc światłowód wyjściowy przenosi wiele długości fal, po jednej z każdego światłowodu wejściowego. Demultiplekser (rys. 1.3b) pełni funkcję odwrotną do multipleksera. Posiada on jeden światłowód wejściowy i wiele światłowodów wyjściowych. Długości fal ze światłowodu wejściowego są przesyłane do światłowodów wyjściowych, po jednej długości fali na światłowód wyjściowy. Sprzęgacz (rys. 1.3c) posiada wiele światłowodów wejściowych i jeden światłowód wyjściowy. Wszystkie długości fal ze światłowodów wejściowych są przesyłane do światłowodu wyjściowego. Rozgałęziacz (rys. 1.3d) pełni funkcję odwrotną do sprzęgacza. Posiada on jeden światłowód wejściowy i wiele światłowodów wyjściowych. Wszystkie długości fal ze światłowodu wejściowego są przesyłane do światłowodów wyjściowych. Stały konwerter długości fali (rys. 1.3e), oznaczany przez FWC (ang. fixed wavelength converter), jest urządzeniem zamieniającym długość fali w światłowodzie wejściowym na określoną długość fali przesyłaną do światłowodu wejściowego. W światłowodzie wejściowym powinna być przesyłana tylko jedna długość fali z pewnego zakresu. Długość fali w światłowodzie wyjściowym nie może być zmieniana. 8 ROZDZIAŁ 1. WPROWADZENIE Nastawny konwerter długości fali (rys. 1.3f), oznaczany przez TWC (ang. tunable wavelength converter), może zmieniać długość fali w światłowodzie wyjściowym. Bramka optyczna (rys. 1.3g), oznaczana przez SOA (ang. semiconductor optical amplifier), jest urządzeniem wzmacniającym wiele długości fal w światłowodzie albo je tłumiącym. Sterowanie elementem odbywa się elektrycznie w czasie kilku nanosekund. Niestety urządzenie bardzo zniekształca sygnał optyczny. Wzmacniacz optyczny (rys. 1.3h), oznaczany przez EDFA (ang. erbium-doped fiber amplifier), jest urządzeniem wzmacniającym wiele długości fal w światłowodzie. Czas włączania EDFA wynosi kilka milisekund. W porównaniu do SOA, EDFA mniej zniekształca sygnał optyczny. Linia opóźniająca (rys. 1.3i), oznaczana przez ODL (ang. optical delay line), jest światłowodem, który opóźnia sygnał optyczny o określony czas. Przełącznik typu 2 × 2 potrafi przełączać wszystkie długości fal, ustawiając przełącznik w stan „x” lub w stan „=”. Sterowanie odbywa się elektrycznie w czasie kilku nanosekund. Element AWG (ang. arrayed waveguide grating) posiada wiele światłowodów wejściowych i wiele światłowodów wyjściowych. Światłowody wejściowe przenoszą wiele długości fal, które zależnie od długości fali są przesyłane do odpowiednich światłowodów wyjściowych. Każdy światłowód wyjściowy przenosi tylko jedną długość fali. 1.1.2 Optyczne przełączniki pakietów Ogólny schemat optycznego przełącznika pakietów jest przedstawiony na rysunku 1.4, który pochodzi z [61]. Blok wejściowy przełącznika usuwa nagłówek pakietu i przetwarza go. Następnie układ sterujący przełącznika wyznacza następny stan bloku przełączającego (ang. switching fabric) na podstawie informacji z nagłówka pakietu i na podstawie znajomości stanu przełącznika. Przełącznik może posiadać bufor optyczny, do którego są kierowane pakiety celem opóźnienia ich o kilka taktów zegara. Blok wyjściowy przełącznika dodaje nagłówki do pakietów. Spośród wielu zaproponowanych typów przełączników, dwa najważniejsze to przełącznik typu „rozgłaszanie i wybieranie” (ang. broadcast and select) i przełącznik oparty na AWG, które omawiamy w podrozdziałach niżej. 1.1.2.1 Przełącznik typu „rozgłaszanie i wybieranie” Przełącznik typu „rozgłaszanie i wybieranie”, przedstawiony na rysunku 1.5, posiada N światłowodów wejściowych i N światłowodów wyjściowych. Zarówno w światłowodach 1.1 Optyczne przełączanie pakietów 9 bufor 1 optyczny przełącznik pakietów blok wejściowy 1 blok wyjściowy N N kontroler Rysunek 1.4: Ogólny schemat węzła. 1 1 1 N K N 1 1 1 N K N 1 1 N 1 1 ODL K ODL K N Rysunek 1.5: Przełącznik typu „rozgłaszanie i wybieranie”. wejściowych, jak i wyjściowych, jest tylko jedna długość fali. W przełączniku sygnał optyczny pakietów jest rozgłaszany przez rozgałęziacze, a następnie bramki optyczne tak wybierają pakiety (przepuszczają je albo blokują), aby opuściły one przełącznik na odpowiednim światłowodzie wyjściowym po odpowiedniej liczbie taktów zegara. Można wyróżnić trzy bloki przełącznika kolejno ze sobą połączone: blok zamieniający długości fal (ang. wavelength encoder), przełącznik przestrzenny (ang. space switch) i blok wybierający długości fal (ang. wavelength selector). Blok zamieniający długości fal posiada N światłowodów wejściowych, które są światłowodami wejściowymi przełącznika. W każdym światłowodzie wejściowym jest tylko jedna długość fali, która jest zamieniana przez stały konwerter długości fali na określoną długość fali. Wszystkie zamienione długości fal są przesyłane do sprzęgacza, którego światłowód wyjściowy prowadzi do przełącznika przestrzennego. Pakiety na światłowodzie wejściowym przełącznika przestrzennego są rozgłaszane przez rozgałęziacz do optycznych linii opóźniających, które opóźniają pakiety o liczbę taktów 10 ROZDZIAŁ 1. WPROWADZENIE 1 1 n n 1 1 Nn × Nn AWG 1 1 n n N N Rysunek 1.6: Przełącznik oparty na AWG. zegara kolejno od 1 do K. Pakiety z optycznych linii opóźniających są rozgłaszane przez rozgałęziacze do bramek optycznych, które sterują czy pakiety mogą opuścić przełącznik w określonym światłowodzie wyjściowym i po określonej liczbie taktów zegara. Dla każdego ze światłowodów wyjściowych przełącznika pakiety są sprzęgane przez sprzęgacz. Blok wybierający długości fal jest złożony z N podbloków, po jednym podbloku dla każdego światłowodu wyjściowego. Podblok składa się z demultipleksera, N bramek i multipleksera. Funkcją podbloku jest wybór pakietu, który może opuścić przełącznik w zależności od długości fali pakietu. Zaletą tego przełącznika jest możliwość rozgłaszania jednego pakietu na wiele światłowodów wyjściowych przełącznika. Niestety wadą przełącznika są duże straty i zniekształcenia sygnału optycznego. 1.1.2.2 Przełącznik oparty na AWG Przełącznik oparty na AWG, przedstawiony na rysunku 1.6, posiada N światłowodów wejściowych i N światłowodów wyjściowych. Każdy światłowód wejściowy i wyjściowy przenosi n długości fal. W przełączniku można wyróżnić trzy bloki kolejno ze sobą połączone: wejściowy blok zamieniający długości fal, element AWG i wyjściowy blok zamieniający długości fal. Wejściowy blok zamieniający długości fal składa się z N demultiplekserów i N × n nastawnych konwerterów długości fal. Demultiplekser rozdziela długości fal ze światłowodu wejściowego na n światłowodów, które prowadzą do nastawnych konwerterów długości fal. Konwertery te zamieniają długość fali na taką, która zapewnia przesłanie na odpowiedni światłowód wyjściowy elementu AWG. Konwertery muszą być nastawne, ponieważ wyjściowa długość fali zależy od tego, do którego światłowodu wyjściowego elementu AWG należy przesłać pakiet. 1.1 Optyczne przełączanie pakietów (a) 11 (b) Rysunek 1.7: Bufory optyczne: (a) cyrkulacyjny; (b) kaskadowy. Funkcją elementu AWG, jak opisano w podrozdziale 1.1.1, jest przesłanie odpowiednich długości fal na odpowiednie światłowody wyjściowe, niezależnie od światłowodu wejściowego, w którym długość fali nadeszła. Wyjściowy blok zamieniający długości fal składa się z N ×n stałych konwerterów długości fal i N multiplekserów. Po opuszczeniu elementu AWG, długości fal są zamieniane przez stałe konwertery, a następnie przesyłane przez multiplekser do światłowodu wyjściowego. 1.1.3 Buforowanie Jednym z największych problemów technicznych optycznego przełączania jest brak pamięci optycznych typu RAM [29], co uniemożliwia zastosowanie tradycyjnego rutingu polegającego na buforowaniu pakietów i przesyłaniu ich wtedy, kiedy to możliwe (ang. store-andforward routing). Obecnie optyczne buforowanie jest możliwe tylko za pomocą optycznych linii opóźniających3 (ang. optical delay lines). Niestety, ich rozmiary fizyczne są duże, a pojemność wyrażona liczbą pakietów jest mała. Przegląd buforów optycznych i sposobów wykorzystania ich razem z optycznymi przełącznikami pakietów jest przedyskutowany w [109, 110]. Bufory optyczne są omówione praktycznie i krytycznie w [11], uwzględniając bufory z wolnym światłem (ang. slow light buffer). Został także zaproponowany bufor wykorzystujący elektroniczne pamięci typu RAM [111]. Same optyczne linie opóźniające nie są buforami optycznymi; potrzebne są jeszcze przełączniki, które w razie potrzeby przekierują pakiet do linii opóźniającej. Istnieje wiele architektur buforów optycznych i ich kontroli [112, 113, 114, 115, 116]. Jednak można wyróżnić dwa proste i użyteczne bufory optyczne, którymi są bufor cyrkulacyjny i bufor kaskadowy: • Bufor cyrkulacyjny, przedstawiony na rysunku 1.7a, jest zbudowany z linii opóźniającej i przełącznika 2 × 2, sterując którym możemy wprowadzać i wyprowadzać 3 Warto zauważyć, że podobnie jak obecnie optycznie linie opóźniające pełnią rolę pamięci, tak kiedyś elektryczne linie opóźniające opracowane w latach czterdziestych ubiegłego wieku były używane do przechowywania danych w pierwszych komputerach, takich jak komputer ENIAC czy polski komputer EMAL. Dopiero w latach pięćdziesiątych zostały opracowane pamięci ferrytowe typu RAM. 12 ROZDZIAŁ 1. WPROWADZENIE pakiety z linii opóźniającej. Bufor cyrkulacyjny może przechowywać jeden albo wiele pakietów, w zależności od długości linii opóźniającej i szybkości zmiany stanu przełącznika 2 × 2. Linia opóźniająca zwykle ma kilkaset albo kilkadziesiąt metrów, ale został także zaproponowany bufor z linią opóźniającą długości około dwóch metrów [117]. Pakiet zwykle nie może wykonać więcej niż 20 okrążeń z powodu dużych zniekształceń sygnału optycznego wprowadzanych przez przełącznik. • Bufor kaskadowy, przedstawiony na rysunku 1.7b, jest zbudowany z linii opóźniających i przełączników połączonych kaskadowo. Kolejne linie mogą opóźniać pakiet o liczbę taktów zegara, które są potęgą liczby dwa, stąd bufor kaskadowy może opóźnić jeden pakiet o dowolną liczbę taktów zegara, a przy tym zniekształcając sygnał optyczny znacznie mniej, niż bufor cyrkulacyjny. Bufor może być wykorzystany do przechowywania wielu pakietów, ale może on zmienić ich kolejność. Rutery elektroniczne w obecnie działających sieciach szkieletowych posiadają duże pamięci RAM i są w stanie przechować miliony pakietów, co jest w dużym kontraście z optycznymi przełącznikami pakietów, których bufory są w stanie przechować zaledwie kilkanaście pakietów. Jeżeli dominującym ruchem w przyszłych pakietowych sieciach szkieletowych będzie ruch TCP, tak jak jest to dzisiaj, to małe bufory optyczne powinny wystarczyć, a będzie to okupione jedynie spadkiem wykorzystania sieci do około 90% [118, 119, 120, 121, 122, 123, 124, 125, 126]. 1.2 Ocena wydajności Jeżeli sieci optycznego przełączania pakietów zostaną wprowadzone do użytku, to prawdopodobnie będą one klientami sieci WDM [15]. Szybka rezerwacja ścieżek optycznych (ang. agile provisioning) w sieci WDM dla sieci optycznego przełączania pakietów będzie wymagała szybkiej oceny wydajności, aby zapewnić wymagane parametry jakości usług, takich jak prawdopodobieństwo utraty pakietu albo opóźnienia pakietu. Symulacja jest najczęściej używana do oceny wydajności sieci optycznego przełączania pakietów [79], którą można symulować także zdarzenia rzadkie [127]. Spośród wielu prac na temat sieci optycznego przełączania pakietów i oceny ich wydajności, możemy wyróżnić kilka. Metoda w [128] została opracowana dla równomiernie obciążonej regularnej sieci, lecz nie potrafi ona ocenić wydajności sieci z ograniczeniem na liczbę odbić. W pracy założono, że pakiet może pozostawać w sieci niezależnie od swojej liczby odbić, a prawdopodobieństwo obecności pakietu w węźle wyrażone jest przez jedną liczbę rzeczywistą, bez względu na możliwą liczbę odbić pakietu. W rozdziale 2 rozszerzamy tą metodę celem umożliwienia oceny wydajności z założeniem skończonej liczby 1.3 Teza pracy 13 skoków. Rozszerzenie ich metody polega na zastosowaniu wielomianów. Pakiet może dotrzeć różnymi drogami do rozważanego węzła, lecz informacja na temat historii pakietu nie jest rozważana w [128]. W naszej metodzie prawdopodobieństwa są współczynnikami przy wyrazach wielomianowych o potędze równej liczbie odbić, do których prawdopodobieństwo się odnosi. Szczegółowa kombinatoryczna analiza odbicia pakietu w węźle jest opisana w [50], ale tam pakiety są tracone z powodu przepełnień buforów, a nie z powodu ograniczenia liczby odbić. Kombinatoryczna analiza jest opracowana dla węzłów typu 4 × 4 i jednej długości fali w światłowodach. Na podstawie tej pracy opracowaliśmy kombinatoryczną metodę omawianą w rozdziale 3. W [129] oceniono wydajność zaproponowanego tam algorytmu przesyłania z odbiciami bez zapętleń, gdzie pakiet nie odwiedza żadnego węzła więcj niż raz. Prezentowana tam analiza nie bierze pod uwagę powracających pakietów, co upraszcza analizę. W [130] prawdopodobieństwo utraty pakietu jest analizowane dla asynchronicznych sieci optycznego przełączania pakietów z nieograniczonym przesyłaniem z odbiciami. W pracy [131] została zaproponowana metoda oceny wydajności nie tylko prawdopodobieństw utraty pakietu, ale także wahań (ang. jitter) w opóźnieniu pakietów. Szczegółowa analiza oparta na łańcuchach Markowa została opublikowana w pracy [93]. Sieć jest regularna, zbudowana z węzłów 2 × 2 i równomiernie obciążona. W pracy [132] została opracowana metoda oparta na łańcuchach Markowa do oceny wydajności węzła sieci z buforami albo bez buforów. Zaletą pracy jest możliwość oceny wydajności węzła dla zmieniającego się ruchu, a nie tylko dla ruchu w stanie ustalonym. Regularne sieci zbudowane z węzłów typu 2×2, działające z nieograniczonym przesyłaniem z odbiciami, oraz z dowolną macierzą ruchu, są analizowane w [133]. Analiza opiera się na wyznaczeniu średniej liczby pakietów. W pracy [134] podobny model sieci jest analizowany, z tym wyjątkiem, że sieć jest równomiernie obciążona. 1.3 Teza pracy Ocenę wydajności sieci optycznego przełączania pakietów można przeprowadzić przy użyciu wielomianów celem uzyskania dokładnych informacji na temat ścieżek, którymi podróżują pakiety. W pracy opisane są trzy oryginalne metody, każda z innymi założeniami i możliwościami. Cechą wspólną tych metod jest wykorzystanie wielomianów do opisu podróży pakietów, jednak w każdym rozdziale wielomiany służą nieco innym celom. Każda metoda opisana 14 ROZDZIAŁ 1. WPROWADZENIE jest w osobnym rozdziale: • W rozdziale 2 przedstawiamy metodę oceny wydajności opartą na zapisie wielomianowym. W tym rozdziale są rozważane równomiernie obciążone sieci regularne z węzłami typu 2 × 2. Takie proste założenia pozwalają na przejrzyste wprowadzenie zapisu wielomianowego. • W rozdziale 3 metoda oparta na wielomianach jest rozszerzona, aby można poddać ocenie wydajności sieci z węzłami typu 4 × 4. Ciągle jednak model sieci jest bardzo ograniczony: sieć jest regularna i równomiernie obciążona. Rozszerzenie założenia dotyczącego typu węzła (z typu 2 × 2 na typ 4 × 4) pozwala nam na ocenę wydajności bardziej złożonych sieci, ale pociąga za sobą bardziej skomplikowaną ocenę wydajności węzłów i całej sieci, na czym koncentrujemy się w owym rozdziale. • W rozdziale 4 jest opisana uogólniona metoda. Węzły sieci mogą być dowolnego stopnia i posiadać dowolną liczbę długości fali. Topologia sieci jest dowolna, a obciążenie sieci dane jest dowolną macierzą ruchu. W modelu zakładamy, że węzły nie posiadają buforów optycznych. Zadbaliśmy, żeby proponowane metody można było stosować także dla rutingu z odbiciami. Odbicia utrudniają analizę, ponieważ należy uwzględnić pętle, jakie pakiet może wykonać w wyniku doznanych odbić. Analiza jest prostsza, kiedy pakiety nie mogą wykonać pętli, tak jak w przypadku rutingu z odbiciami bez pętli [129]. W opracowanych metodach pewne oznaczenia są te same, na przykład N zawsze oznacza liczbę węzłów sieci, a inne oznaczenia nieco się różnią, na przykład znaczenie wektorów Pk , wyrażających obecność pakietów w sieciach, jest nieco inne. Tak więc należy podkreślić, że oznaczenia zdefiniowane w pewnym rozdziale odnoszą się tylko do tego rozdziału. Przyczyniamy się do rozwoju oceny wydajności optycznego przełączania pakietów w następujące sposoby: • Opracowaliśmy oryginalną wielomianową metodę modelowania ważnych ograniczeń na liczbę skoków, jakie pakiet może wykonać oraz na odległość, jaką pakiet może przebyć, co nie zostało wcześniej opracowane dla sieci optycznego przełączania pakietów. Poprzednie prace zakładały, że pakiety mogą przebywać w sieci dowolnie długo. Metoda wielomianowa została opublikowana w [135]. • Opracowaliśmy dwie metody oceny wydajności węzłów: kombinatoryczną i probabilistyczną. W poprzednich pracach ocena wydajności jednego węzła była zwykle przeprowadzana dla węzłów małego stopnia z wykorzystaniem jednej długości fali, 1.3 Teza pracy 15 co ograniczało analizę do prostych sieci. Tak nie jest w naszym przypadku – nasze założenia pozwalają na bardziej ogólne węzły. Metodę kombinatoryczną oceny węzłów opisaliśmy w pracach [136, 137], a metodę probabilistyczną w [138, 139]. • Zaproponowaliśmy uogólnioną metodę oceny wydajności, którą można stosować do dowolnej topologii sieci, podczas gdy poprzednie metody analityczne były opracowane dla regularnych topologii, takich jak krata (ang. Manhattan Street Network) czy sieć przetasowana (ang. Shufflenet). Uogólnioną metodę opisaliśmy w [139]. • Opracowaliśmy program OPUS, który jest implementacją uogólnionej metody. Program zawiera też symulator programowy, dzięki któremu można sprawdzić poprawność wyników analitycznych. Program OPUS jest swobodnie dostępny: jego kod źródłowy może być pobrany z [140]. Kod źródłowy jest bogaty w komentarze. Do pracy są dołączone trzy dodatki: • Dodatek A zawiera dokumentację użytkownika programu OPUS, gdzie opisany jest sposób uruchamiania programu oraz dane pobierane i zwracane przez program. • Dodatek B zawiera opis modelu sieci PIONIER i jej obciążenia, które zostały wykorzystane do badań analitycznych i symulacyjnych w rozdziale 4 na temat uogólnionej metody oceny wydajności. • Dodatek C zawiera dokumentację programisty programu OPUS, która jest przydatna w zrozumieniu szczegółów implementacji uogólnionej metody oceny wydajności. 16 ROZDZIAŁ 1. WPROWADZENIE Rozdział 2 Metoda oparta na wielomianach 2.1 Wprowadzenie W rozdziale przedstawimy analityczną metodę uzyskiwania przepustowości sieci w stanie ustalonym dla sieci regularnych i równomiernie obciążonych. Metoda została opracowana dla sieci pracujących pod kontrolą algorytmu rutingu z ograniczoną liczbą odbić. Kiedy liczba odbić pakietu osiąga dopuszczalną liczbę, wtedy taki pakiet jest usuwany z sieci i tracony. W odróżnieniu od innych metod, proponowana metoda pozwala na analizę skończonej liczby odbić pakietów za pomocą wielomianów. Opracowane wyniki analityczne zgadzają się z dużą dokładnością z wynikami symulacyjnymi. Metoda jest przedstawiona na przykładzie sieci przetasowanej (ang. shufflenet), gdzie stopień węzła wynosi 2. Największa zbadana przez nas sieć miała 896 węzłów. 2.2 Definicja problemu Każdy węzeł w sieci służy jako ruter, gdzie pakiety są przesyłane między sąsiednimi węzłami sieci szkieletowej (ang. router) i jako węzeł brzegowy (ang. edge node), gdzie pakiety wchodzą do sieci szkieletowej i ją opuszczają. Sieć działa synchronicznie: czas podzielony jest na takty zegara (ang. time slot) i w każdym węźle początek taktu zegara jest synchronizowany z innymi węzłami. Pakiet jest przesyłany na początku taktu zegara. Sieć jest całkowicie i równomiernie obciążona. W każdym takcie zegara i w każdym węźle jest zawsze wystarczająco dużo pakietów oczekujących na wejście do sieci szkieletowej, co gwarantuje maksymalne obciążenie sieci. Węzeł źródłowy i docelowy pakietu jest wybierany spośród wszystkich węzłów z równym prawdopodobieństwem. Aby obciążenie sieci 18 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH 1 5 1 2 6 2 3 7 3 4 8 4 Rysunek 2.1: Sieć przetasowana o rozmiarze n = 2 (8 węzłów). od sąsiednich węzłów od sieci dostępowych optyczny przełącznik pakietów do sąsiednich węzłów do sieci dostępowych Rysunek 2.2: Węzeł typu 2 × 2. było równomierne, jeden węzeł może być jednocześnie węzłem źródłowym i docelowym pakietu. Analizę można zastosować do sieci regularnych, tzn. symetrycznych względem każdego węzła. W sieci regularnej każdy węzeł jest topologicznie równoważny każdemu innemu, co razem z założeniem o równomiernym obciążeniu sieci pozwala na analizę całej sieci przez analizę jednego węzła. 2.2.1 Sieć przetasowana Analizę zaprezentujemy dla sieci przetasowanej (ang. shufflenet) o stopniu węzłów równemu dwa, tzn. dwa połączenia wchodzące i dwa połączenia wychodzące. Sieć ma N = n2n węzłów i M = 2N jednokierunkowych połączeń, gdzie n jest rozmiarem sieci. Sieć posiada n kolumn węzłów, a każda kolumna zawiera 2n węzłów. Przykładowa sieć o rozmiarze n = 2 jest przedstawiona na rysunku 2.1. Dla przejrzystości rysunku węzły w pierwszej i ostatniej kolumnie są tymi samymi węzłami. 2.2 Definicja problemu 2.2.2 19 Przesyłanie z odbiciami Przesyłanie z odbiciami nie wymaga przechowywania pakietów w węzłach, w przeciwieństwie do tradycyjnych sieci (ang. store-and-forward networks), ponieważ pakiet jest zawsze wysyłany z węzła w następnym takcie zegara po takcie, w którym węzeł otrzymał pakiet. Pakiet będąc w węźle może mieć żądane wyjście przełącznika, które znajduje się na najkrótszej ścieżce do węzła przeznaczenia. Pakiet nie posiada żądanego wyjścia, kiedy wszystkie wyjścia przełącznika prowadzą do węzła przeznaczenia pakietu najkrótszą ścieżką. Dla pakietu węzeł może być specjalny albo zwyczajny. W węźle specjalnym pakiet posiada żądane wyjście (jedno z dwóch wyjść przełącznika), natomiast w zwyczajnym węźle pakiet nie posiada żądanego wyjścia (oba wyjścia przełącznika są równoważne). Pakiet może być odbity tylko w węzłach specjalnych. Na przykład, w sieci pokazanej na rysunku 2.1 przebywa pakiet, którego węzłem przeznaczenia jest węzeł numer 2. Węzeł numer 5 jest specjalny, a dolne połączenie tego węzła jest żądane przez ten pakiet. Pakiet jest odbity, jeżeli jest wysłany górnym połączeniem. W węźle numer 6 pakiet nie posiada żądanego wyjścia, pakiet nie może ulec odbiciu, stąd ten węzeł nazywamy zwyczajnym. Definiujemy zmienną całkowitą S jako liczbę odbić, po której pakiet jest usuwany: pakiet ciągle może przebywać w sieci, jeżeli doznał nawet (S − 1) odbić, ale jest usuwany, jeżeli doznaje odbicia numer S. Każdy pakiet przechowuje w swoim nagłówku liczbę swoich odbić. 2.2.3 Typ węzła Każdy węzeł jest typu 2 × 2, jak pokazano na rysunku 2.2. Stopień węzła wynosi dwa, ponieważ węzeł posiada dwa wejścia przychodzące od sąsiednich węzłów i dwa wyjścia prowadzące do sąsiednich węzłów. Węzeł posiada dwa wejścia od sieci dostępowych i dwa wyjścia do sieci dostępowych. W każdym takcie zegara dwa pakiety mogą opuścić sieć szkieletową i dwa pakiety mogą zostać przesłane do sieci szkieletowej. Nowe pakiety są przesyłane do sieci szkieletowej, jeżeli w danym takcie zegara jest miejsce dla pakietu na jednym z wyjść przełącznika. Nowe pakiety są dopuszczane do sieci nawet wtedy, gdy doprowadzą do konfliktu z pakietami już przebywającymi w sieci. W przypadku konfliktu między pakietami, wygrywający pakiet jest wysyłany przez żądane wyjście, natomiast przegrywający pakiet ma zwiększany licznik odbić i wysyłany jest do pozostałego wyjścia. Jeżeli licznik przegrywającego pakietu osiąga wartość S, to pakiet nie jest wysyłany dalej, lecz tracony. Jeżeli jeden z pakietów został utracony (z powodu 20 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH średnica − 1 Tutaj pakiet jest odbijany (S − 1) razy. (S − 1) pętli A C 1 B 1 Rysunek 2.3: Najmniej pomyślny sposób dostarczenia pakietu. osiągnięcia maksymalnej liczby odbić), to w tym takcie zegara jedno z wyjść przełącznika nie będzie użyte. 2.2.4 Górna granica na maksymalną liczbę skoków Niech K będzie liczbą całkowitą oznaczającą maksymalną liczbę skoków, jaką pakiet może wykonać na swojej wędrówce do węzła przeznaczenia, przy założeniu, że pakiet może być odbity S razy. Wartość K, jaką uzyskamy, odnosić się będzie do każdej sieci z połączeniami skierowanymi (ang. directed links). Rysunek 2.3 przedstawia pesymistyczny sposób przesłania pakietu. Pakiet jest dopuszczony do sieci w węźle A, a jego węzłem przeznaczenia jest węzeł B. Węzeł A jest maksymalnie oddalony od węzła B, co oznacza, że odległość miedzy nimi równa jest średnicy sieci. Średnica sieci jest długością najdłuższej ścieżki spośród wszystkich najkrótszych ścieżek w sieci. Pakiet dociera do węzła C bez odbicia. Węzeł C znajduje się w odległości 1 od węzła przeznaczenia B. Stąd możemy powiedzieć, że pakiet wykonał (średnica −1) skoków. W węźle C pakiet doznaje pierwszego odbicia i wraca do węzła A jednym skokiem. Teraz pakiet jest ponownie w węźle A po wykonaniu skoków w liczbie równej średnicy sieci i po jednym odbiciu. Ta sytuacja powtarza się (S − 1) razy, po których pakiet znajduje się w węźle A po (S − 1) · średnica skokach i (S − 1) odbiciach. Po wykonaniu (średnica − 1) skoków pakiet ponownie znajduje się w węźle C, skąd albo jest przesłany do węzła B albo jest usuwany z sieci. Podsumowując, maksymalna liczba skoków K wyrażona jest równaniem 2.1. Na przykład dla sieci pokazanej na rysunku 2.1 i dla S = 1 (pakiet jest usuwany po pierwszym odbiciu), wartość K wynosi 3, ponieważ średnica sieci wynosi 3. K = S · średnica (2.1) 2.3 Analiza 2.3 21 Analiza Celem analizy jest otrzymanie przepustowości λ sieci w stanie ustalonym, gdzie przepustowość definiujemy jako liczbę pakietów doręczanych do węzłów przeznaczenia (utraconych pakietów nie liczymy) w jednym takcie zegara. Należy podkreślić, że liczba pakietów dopuszczonych do sieci nie równa się liczbie pakietów opuszczających sieć, ponieważ pakiet może zostać utracony z powodu dużej liczby odbić. Najpierw wyprowadzimy ogólny wzór na przepustowość sieci, a następnie wyprowadzimy kolejne wielkości, które są użyte we wzorze na przepustowość. 2.3.1 Przepustowość sieci Zdefiniujemy pewne prawdopodobieństwa, aby wyprowadzić przepustowość sieci. Prawdopodobieństwo, że pakiet jest dostarczony do węzła przeznaczenia po k skokach jest oznaczone przez PD,k , dla k = 1, . . . , K, a prawdopodobieństwo tego, że pakiet jest dostarczony do węzła przeznaczenia prędzej czy później przez PD , wyrażone wzorem 2.2. PD = K X PD,k (2.2) k=1 Prawdopodobieństwo tego, że pakiet jest usunięty po k skokach jest oznaczone przez PE,k , dla k = 1, . . . , K, a prawdopodobieństwo tego, że pakiet jest usunięty prędzej czy później przez PE , wyrażone wzorem 2.3. PE = K X PE,k (2.3) k=1 Z powodu ograniczonej liczby odbić każdy pakiet w sieci albo jest doręczany albo usuwany i dlatego suma prawdopodobieństw PD i PE musi wynosić 1. Pakiety, które doznały mniej niż S odbić (i dlatego nie były usunięte z sieci), osiągają swój węzeł przeznaczenia po średnio DD skokach, jak wyrażono wzorem 2.4. K 1 X DD = kPD,k PD k=1 (2.4) Analogicznie, usuwane pakiety (każdy taki pakiet doznał dokładnie S odbić) wykonały średnio DE skoków, jak wyrażono wzorem 2.5. 22 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH DE = K 1 X kPE,k PE k=1 (2.5) Nie wszystkie pakiety obecne w sieci osiągają swój węzeł przeznaczenia, ale tylko pewna ich część η to czyni, wyrażona wzorem 2.6. η= DD PD DD PD + DE PE (2.6) Liczba pakietów obecnych w sieci jest równa liczbie M połączeń w sieci (którą znamy, bo znamy topologię sieci), ponieważ sieć jest całkowicie obciążona (w każdym połączeniu znajduje się jeden pakiet). Jednak średnia liczba pakietów obecnych w sieci, które osiągną swoje węzły przeznaczenia, wynosi M ′ i wyrażona jest wzorem 2.7. M ′ = ηM (2.7) Z prawa Littla przepustowość sieci λ wyraża się wzorem 2.8. λ= M′ DD (2.8) Tak więc, aby wyznaczyć λ, potrzebujemy wartość DD . Do wyznaczenia wartości DD potrzebujemy PD,k i PE,k dla k = 1, . . . , K, co jest sednem niżej opisanej analizy. 2.3.2 Prawdopodobieństwa doręczenia i utraty pakietu Aby uzyskać PD,k i PE,k , naszą uwagę koncentrujemy na pakiecie testowym (ang. test packet). Ponieważ sieć jest regularna i ruch jest równomierny, wystarczy jak śledzimy trasę pakietu testowego tylko do węzła numer 1, nie natomiast do każdego węzła. Naszym celem jest wyznaczenie prawdopodobieństwa, że pakiet testowy przebywa w określonym węźle sieci i w określonym takcie zegara. Te prawdopodobieństwa są wyrażone wektorami Pk dla k = 0, 1, 2, . . . , K, gdzie K jest maksymalną liczbą skoków, jakie pakiet może wykonać. Prawdopodobieństwa przebywania pakietu w sieci w takcie zegara k są dane wektorami Pk wyrażonymi wzorem 2.9, gdzie N jest liczbą węzłów w sieci, a wielomiany pi,k (x) są wyrażone wzorem 2.10. 2.3 Analiza 23 p1,k (x) .. . Pk = pi,k (x) .. . pN,k (x) pi,k (x) = S−1 X pi,k,j xj (2.9) (2.10) j=0 Każdy wielomian pi,k (x) przechowuje prawdopodobieństwa, że pakiet przebywa w węźle i w takcie zegara k, co nazywamy prawdopodobieństwem przebywania pakietu. Wielomian jest stopnia co najwyżej (S − 1), czyli deg pi,k (x) ¬ S − 1. Współczynnik pi,k,j wyraża prawdopodobieństwo tego, że pakiet testowy przebywa w węźle i w takcie zegara k i że doznał j odbić w czasie swojej całej podróży. Wielomian pi,k (x) P dla x = 1 wynosi pi,k (1) = S−1 j=0 pi,k,j i wyraża prawdopodobieństwo przebywania pakietu testowego w węźle i w takcie zegara k niezależnie od liczby odbić. Z prawdopodobieństwem 1/N pakiet testowy wyrusza w podróż w każdym węźle sieci, łącznie z węzłem przeznaczenia (węzeł numer 1). Wektor P0 wyrażony wzorem 2.12 ma N elementów 1/N . 1 N . .. P0 = 1 N (2.11) Średnia wartość prawdopodobieństwa odbicia w węźle specjalnym jest oznaczona przez d i nazywana prawdopodobieństwem odbicia. Przyjmujemy, że ta wartość jest taka sama dla każdego węzła specjalnego. Wartość p = (1−d) jest prawdopodobieństwem tego, że pakiet testowy nie jest odbity w węźle specjalnym. Wartości d i p nie odnoszą się do zwykłych węzłów, ponieważ tam pakiet nie może ulec odbiciu. Podamy trzy przykłady obliczenia prawdopodobieństwa przebywania pakietu. Każdy przykład odnosi się do sieci pokazanej na rysunku 2.1. W takcie zegara numer 0 pakiet testowy przebywa z równym prawdopodobieństwem w każdym węźle sieci i jego węzłem przeznaczenia jest węzeł numer 1. Jesteśmy zainteresowani prawdopodobieństwami tego, że w takcie zegara numer 1 pakiet testowy znajduje się w węzłach numer 3, 1, 2: • Najpierw obliczamy prawdopodobieństwo tego, że pakiet testowy przebywa w węźle numer 3. Pakiet może dotrzeć do węzła numer 3 z węzłów numer 6 i 8, które są 24 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH zwyczajne względem węzła numer 1. Pakiet opuszcza węzeł zwyczajny po obu połączeniach z równym prawdopodobieństwem, które wynosi 1/2 dla węzła typu 2 × 2. Dlatego prawdopodobieństwo tego, że pakiet przebywa w węźle numer 3 w takcie zegara numer 1 wynosi: p3,1 (x) = 12 · p6,0 (x) + 12 · p8,0 (x) = 81 . • Następnie wyznaczamy prawdopodobieństwo tego, że pakiet testowy przybywa do węzła numer 1. Do tego węzła pakiet testowy może przybyć z węzłów numer 5 i 7, które oba są węzłami specjalnymi. W obu tych węzłach pakiet testowy powinien być przesłany po swoich żądanych wyjściach, co dzieje się z prawdopodobieństwem p. Zatem prawdopodobieństwo tego, że pakiet przebywa w węźle numer 1 w takcie zegara numer 1 wynosi: p1,1 (x) = p · p5,0 (x) + p · p7,0 (x) = p4 . • Trzeci przykład dla węzła numer 2 jest najbardziej interesujący, ponieważ przedstawia odbicie. Pakiet testowy może przybyć do węzła numer 2 z węzłów numer 5 i 7 pod warunkiem, że w obu tych węzłach pakiet dozna odbicia, a to dzieje się z prawdopodobieństwem d. Dlatego prawdopodobieństwo tego, że pakiet znajdzie się w węźle numer 2 w takcie zegara numer 1 wynosi: p2,1 (x) = xd · p5,0 (x) + xd · p7,0 (x) = d4 x. Operacja mnożenia przez x wyraża odbicie pakietu. Dlatego d4 x wyraża prawdopodobieństwo odbicia pakietu. Bardzo ważne jest, że iloczyn prawdopodobieństwa pi,k (x) i wyrażenia xd może być wielomianem o stopniu równym S. Jak wcześniej wspomnieliśmy, wielomian może mieć stopień co najwyżej (S − 1). Jeżeli tak się zdarzy, to usuwamy czynnik wielomianu o stopniu S, co modeluje usunięcie pakietu z sieci w momencie, gdy pakiet zostaje odbity S razy. Aby obliczyć prawdopodobieństwo przebywania pakietu dla każdego węzła w takcie zegara numer 1, definiujemy macierz T0 . Wielomianowy element t′i,j (x) macierzy wyraża prawdopodobieństwo tego, że pakiet testowy wykona skok z węzła j do węzła i pod warunkiem, że pakiet testowy znajduje się w węźle j. Teraz używając macierzy T0 możemy w elementarny sposób wyznaczyć wektor P1 (wektor prawdopodobieństw dla taktu zegara numer 1) w sposób wyrażony wzorem 2.12. P1 = T0 P0 Dla sieci pokazanej na rysunku 2.1 macierz T0 jest wyrażona wzorem 2.13. (2.12) 2.3 Analiza 25 T0 = 0 0 0 0 p 0 p 0 0 0 0 0 xd 0 xd 0 0 0 0 0 0 12 0 21 1 1 0 0 0 0 0 2 0 2 p 0 p 0 0 0 0 0 xd 0 xd 0 0 0 0 0 0 p 0 p 0 0 0 0 0 xd 0 xd 0 0 0 0 (2.13) Elementy macierzy uzyskujemy w następujący sposób. Jeżeli połączenie pomiędzy węzłami j oraz i nie istnieje, to pakiet testowy nie może zostać przesłany pomiędzy tymi węzłami i dlatego t′i,j (x) = 0. Pakiet testowy może opuścić węzeł zwyczajny po dowolnym połączeniu z prawdopodobieństwem, które wynosi t′i,j (x) = 1/2. Przejście po żądanym połączeniu jest wyrażone przez t′i,j (x) = p, natomiast t′i,j (x) = xd wyraża odbicie. Zasady te są podsumowane równaniem 2.14. 0 1 t′i,j (x) = dla dla 2 p dla xd dla braku możliwości wykonania skoku skoku z węzła zwyczajnego skoku z węzła specjalnego po żądanym wyjściu skoku z węzła specjalnego z odbiciem (2.14) Pierwszy takt zegara wymaga wyjątkowej uwagi, ponieważ wtedy pakiet testowy w węźle docelowym (numer 1) jest przesyłany do sąsiednich węzłów, natomiast w następnych taktach zegara pakiet testowy jest pochłaniany przez węzeł docelowy. Macierz T0 wyraża ten wyjątek przez posiadanie dwóch niezerowych elementów w pierwszej kolumnie. Dla każdego następnego taktu zegara używamy macierzy T wyrażonej wzorem 2.15, która różni się od macierzy T0 tylko pierwszą kolumną. T = 0 0 0 0 p 0 p 0 0 0 0 0 xd 0 xd 0 1 1 0 0 0 0 0 2 0 2 0 0 0 0 0 12 0 12 0 0 p 0 0 0 0 0 0 0 xd 0 0 0 0 0 0 p 0 p 0 0 0 0 0 xd 0 xd 0 0 0 0 (2.15) Mając zdefiniowaną macierz T , wektory Pk dla następnych taktów zegara uzyskujemy 26 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH według wzoru 2.16. Pk = T Pk−1 dla k = 2, . . . , K (2.16) Do tego momentu uzyskaliśmy wektory wielomianów Pk , które potrzebujemy do wyznaczenia prawdopodobieństw PD,k i PE,k . Prawdopodobieństwo doręczenia pakietu PD,k jest wyrażone wzorem 2.17. dla k = 1, . . . , K PD,k = p1,k (1) (2.17) Prawdopodobieństwo PE,k usunięcia pakietu jest iloczynem prawdopodobieństwa odbicia d i prawdopodobieństwa tego, że pakiet może być usunięty z powodu przekroczenia liczby odbić w takcie zegara k (czyli prawdopodobieństwa, że pakiet testowy doznał (S − 1) odbić i znajduje się w węźle specjalnym w takcie zegara k). Prawdopodobieństwo PE,k jest wyrażone wzorem 2.18, gdzie elementy bi,k należą do wektora Bk i wyrażają prawdopodobieństwa tego, że pakiet przebywa w węźle specjalnym. PE,k = d · N X bi,k−1,S−1 dla k = 1, . . . , K (2.18) i=1 Wektor Bk jest definiowany równaniem 2.19, gdzie αi = 1, jeżeli węzeł i jest specjalny (względem węzła numer 1), αi = 0, jeżeli węzeł i jest zwyczajny (względem węzła numer 1), a elementy ei,k (x) należą do wektora Ek danego równaniem 2.20. α1 e1,k (x) .. . Bk = αi ei,k (x) .. . αN eN,k (x) (2.19) Wektor Ek wyrażony wzorem 2.20 jest wektorem prawdopodobieństw tego, że pakiet testowy znajduje się w poszczególnych węzłach sieci w takcie zegara k i że będzie przesłany do sąsiedniego węzła. Wektor Bk wyraża prawdopodobieństwo, że pakiet testowy znajduje się w węźle specjalnym w takcie zegara k. 2.3 Analiza 27 P0 0 p (x) Ek = 2,k .. . pN,k (x) dla k = 0 dla k = 1, 2, . . . , K (2.20) Macierze T0 i T posiadają elementy, które zawierają prawdopodobieństwo odbicia d. Prawdopodobieństwo d jest wyrażone wzorem 2.21 dla jednolitego i maksymalnego obciążania, gdzie Pdc jest zdefiniowane w następnym podrozdziale. Wzór 2.21 pochodzi z pracy [128]. 1 d = (1 − Pdc ) 4 2.3.3 (2.21) Prawdopodobieństwo Pdc Pdc jest prawdopodobieństwem napotkania węzła zwyczajnego (względem węzła numer 1) przez pakiet testowy w którymkolwiek takcie zegara. Pdc wyrażone jest wzorem 2.22. Pdc = PN i=1 bi,k (1) k=1 PK P N i=1 ei,k (1) k=1 PK (2.22) W pracy [128] także używa się prawdopodobieństwa Pdc , ale tam przy wyznaczeniu jego wartości nie uwzględnia się pakietów usuwanych z powodu zbyt dużej liczby odbić, ponieważ tam pakiety nie są w ogóle usuwane. Natomiast w naszej pracy przy obliczaniu Pdc uwzględniamy także pakiety usuwane. Prawdopodobieństwo Pdc zależy od wektorów Pk . Te wektory zależą od prawdopodobieństwa odbicia d, natomiast d zależy od pierwszego szukanego elementu, czyli Pdc . Tak więc wszystkie te wielkości są nawzajem powiązane, a ich dokładniejsze wartości uzyskujemy przez kolejne iteracje. Przybliżoną wartością startową Pdc jest iloraz liczby węzłów zwyczajnych do wszystkich węzłów. Dla tej wartości Pdc , wartość d jest obliczana przy użyciu (2.21), po czym wyznaczane są nowe macierze T0 i T , a następnie obliczane są wektory Pk na podstawie 2.9 i 2.12. Na końcu nowa, dokładniejsza wartość Pdc jest wyznaczana na podstawie 2.22. Ten proces jest powtarzany tyle razy, aż kolejne wartości Pdc będą się zgadzać ze sobą z określoną dokładnością. W naszych obliczeniach dokładność na poziomie 10−4 została osiągnięta po kilku iteracjach, ponieważ kolejne wartości Pdc były bardzo zbieżne. Oszacujmy teraz złożoność obliczeniową algorytmu, gdzie operacją dominującą jest iloczyn 28 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH 100 n=7 pakietów/takt zegara n=6 n=5 n=4 10 n=3 n=2 n=1 1 1 2 3 4 5 6 7 8 9 10 liczba dozwolonych odbić S Rysunek 2.4: Przepustowość sieci o rozmiarach n = 1, . . . , 7. dwóch liczb rzeczywistych. Jedna iteracja, która zwróci następną wartość Pdc , wymaga O(KN 2 ) iloczynów dwóch wielomianów, ponieważ musimy uzyskać K wektorów Pk , a każdy z nich wymaga O(N 2 ) iloczynów dwóch wielomianów (każde wyznaczenie Pk wymaga N 2 iloczynów dwóch wielomianów, ponieważ jest to mnożenie wektora i macierzy). Iloczyn dwóch wielomianów wymaga O(S 2 ) iloczynów liczb rzeczywistych i dlatego złożoność obliczeniowa algorytmu wymaga O(KN 2 S 2 ) iloczynów dwóch liczb rzeczywistych. 2.4 Przykładowe wyniki Wyniki analityczne porównaliśmy z wynikami symulacyjnymi uzyskanymi przy użyciu oprogramowania OMNeT++ [141]. Wyniki są przedstawione na rysunkach 2.4, 2.5, 2.6 i 2.7, gdzie znaki + symbolizują wyniki analityczne, natomiast krzywe symbolizują wyniki symulacyjne. W porównaniu z wynikami symulacyjnymi względny błąd przepustowości wyznaczonej analitycznie był zazwyczaj mniejszy niż 1%. Wyniki analityczne dla sieci o rozmiarze n = 1 (z dwoma węzłami) były najbardziej niedokładne (błąd wynosił 2%), natomiast wyniki dla sieci dużych rozmiarów (z setkami węzłów) były bardzo dokładne (z błędem poniżej 1%). Rysunek 2.4 przedstawia przepustowość λ jako funkcję liczby dozwolonych odbić S dla rozmiarów sieci n = 1, . . . , 7. Przepustowość mało się zmienia w zależności od liczby S. Kiedy wartość S jest mała, wtedy pakiety nie przebywają długo w sieci, są one z dużym prawdopodobieństwem usuwane, a ich miejsce zajmują nowe pakiety. Kiedy wartość S jest 2.4 Przykładowe wyniki 29 1 n=1 prawdopodobieństwo 0.9 n=4 0.8 0.7 n=7 0.6 0.5 0.4 0.3 1 2 3 4 5 6 7 8 9 10 liczba dozwolonych odbić S Rysunek 2.5: Prawdopodobieństwo dostarczenia pakietu dla sieci o rozmiarach n = 1, 4, 7. 0.12 S=1 prawdopodobieństwo 0.1 0.08 S=2 0.06 0.04 S=4 0.02 S=6 0 0 5 10 15 20 25 30 35 liczba skoków Rysunek 2.6: Prawdopodobieństwo usunięcia pakietu dla sieci o rozmiarze n = 5 i liczbie dozwolonych odbić S = 1, 2, 4, 6. 30 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH 0.09 prawdopodobieństwo 0.08 0.07 0.06 0.05 0.04 0.03 0.02 S=6 0.01 0 S=1 0 5 S=2 10 S=4 15 20 25 30 35 liczba skoków Rysunek 2.7: Prawdopodobieństwo dostarczenia pakietu dla sieci o rozmiarze n = 5 i liczbie dozwolonych odbić S = 1, 2, 4, 6. duża, mało pakietów jest usuwanych, ale sieć jest blokowana przez pakiety, które przez długi czas przebywają w sieci. Oba zjawiska się równoważą, co sprawia, że przepustowość sieci utrzymuje się na stałym poziomie niezależnie od wartości S. Rysunek 2.5 przedstawia prawdopodobieństwo dostarczenia pakietu PD w funkcji dozwolonej liczby odbić S dla sieci o rozmiarach n = 1, 4, 7. Zgodnie z oczekiwaniami, prawdopodobieństwo rośnie wraz z rosnącą liczbą odbić S. Rysunek 2.6 przedstawia prawdopodobieństwo usunięcia pakietu PE,k w funkcji liczby k skoków wykonanych przez pakiet dla sieci o rozmiarze n = 5 (160 węzłów) i dla kilku wartości S = 1, 2, 4, 6. Na ostatnim rysunku 2.7 jest przedstawione prawdopodobieństwo dostarczenia pakietu PD,k po k skokach dla sieci o rozmiarze n = 5 (160 węzłów) i dla kilku wartości S = 1, 2, 4, 6. 2.5 Podsumowanie Zaprezentowana metoda analityczna dokładnie ocenia wydajność modelu sieci, co zostało potwierdzone badaniami symulacyjnymi. W szczególności należy zwrócić uwagę na to, że modelowanie skończonej liczby odbić przez wielomiany jest także dokładne. Jednak założenia modelu są bardzo restrykcyjne, co sprawia, że prezentowana metoda najprawdopodobniej nie znajdzie zastosowania w ocenie wydajności sieci telekomunikacyjnych, ponieważ sieci telekomunikacyjne nie są regularne, ani nie są równomiernie i mak- 2.5 Podsumowanie 31 symalnie obciążone. W następnym rozdziale część założeń modelu będzie bardziej ogólna, co pozwoli na ocenę wydajności bardziej różnorodnych sieci. 32 ROZDZIAŁ 2. METODA OPARTA NA WIELOMIANACH Rozdział 3 Rozwinięcie analizy dla węzłów 4 × 4 3.1 Wprowadzenie W tym rozdziale zaprezentujemy analityczną metodę oszacowania prawdopodobieństwa utraty pakietu w synchronicznej sieci z optycznym przełączaniem pakietów. Sieć przesyła pakiety z ograniczoną liczbą odbić (ang. limited deflection routing), gdzie algorytm rozwiązywania konfliktów między pakietami (ang. contention resolution) wykorzystuje priorytety. Pakiety są tracone, ponieważ są usuwane z sieci przez węzły z powodu zbyt dużej liczby odbić. Takie pakiety należy usunąć z dwóch powodów. Po pierwsze, ich zła jakość sygnału optycznego uniemożliwi odczytanie danych pakietu. Po drugie, warstwa transportowa (np. TCP) zadba o ponowne ich przesłanie. Przedstawiamy wyniki dla sieci o topologii torusa kraty dwuwymiarowej i równomiernego obciążenia sieci u, 0 ¬ u ¬ 1, gdy sieć pracuje w stanie ustalonym. W metodzie prezentowanej w tym rozdziale używamy wielomianów z poprzedniego rozdziału. Dla sieci złożonej ze stu węzłów potrafimy oszacować prawdopodobieństwa rzędu 10−9 albo niższe, natomiast badania symulacyjne zwracają wyniki rzędu 10−6 . Poprawność i dokładność naszej analizy sprawdzamy używając symulatora programowego w tych przypadkach, gdzie symulator jest w stanie zwrócić wyniki. W odróżnieniu od poprzedniego rozdziału nie jesteśmy zainteresowani przepustowością sieci, lecz jedynie prawdopodobieństwami utraty pakietu. Metodę zaprezentowaną w poprzednim rozdziale rozszerzymy w taki sposób, aby można było analizować węzły typu 4 × 4, które są bardziej złożone niż węzły typu 2 × 2. W ograniczonym przesyłaniu z odbiciami liczba odbić (która jest zapamiętana w nagłówku pakietu) nie może przekroczyć wartości S zwanej progiem. Pakiet jest celowo tracony przez węzły sieci, jeżeli jego liczba odbić osiągnęła wartość S. Istnieją dwa główne powody, dla których należy ograniczyć liczbę odbić. Po pierwsze, pakiety przebywające długo w sieci mogą zostać usunięte, ponieważ aplikacje czasu rzeczywistego (takie jak gry inter- 34 ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 netowe, wideokonferencje albo telefonia IP) ignorują opóźnione pakiety, natomiast protokoły transportowe niezawodnej transmisji (takie jak TCP) prześlą ponownie opóźnione pakiety. Po drugie, jakość sygnału optycznego długo przebywających pakietów jest niezadowalająca z powodu szumu optycznego wprowadzanego przez wzmacniacze optyczne napotkane przez pakiet. Ograniczone przesyłanie z odbiciami powoduje utraty pakietów. Dla danej topologii sieci istnieją dwa parametry, które wpływają na liczbę utraconych pakietów: próg S, S = 1, 2, . . . i obciążenie sieci u, 0 ¬ u ¬ 1. Ponieważ sieć jest regularna i obciążenie jednolite, stąd obciążenie sieci u wyraża także prawdopodobieństwo tego, że w danym takcie zegara na wejściu przełącznika nadejdzie pakiet. Celem naszej pracy jest znalezienie wartości S i u, dla których pewna wartość prawdopodobieństwa utraty pakietu nie jest przekroczona. W ramach projektu ROM [142] planowano zapewnić prawdopodobieństwo utraty pakietu nie większe niż 10−9 dla jakości usług klasy „Premium”. Potrafimy wyznaczyć takie wartości S i u, dla których wymagania klasy „Premium” są spełnione. Nasze wyniki uzyskaliśmy przez analizę matematyczną, ponieważ prawdopodobieństwo utraty pakietu jest zbyt małe, aby symulatory programowe mogły je wyznaczyć. 3.2 Definicja problemu Sieć działa synchronicznie: czas jest podzielony na takty zegara, zgodnie z którymi pakiety są odbierane i wysyłane. Każdy węzeł w sieci działa jednocześnie jako węzeł szkieletowy i jako węzeł brzegowy. Węzeł działa jako węzeł szkieletowy dla pakietów, dla których nie jest on węzłem przeznaczenia, ponieważ wtedy przesyła on pakiety do sąsiednich węzłów. Węzeł działa jako węzeł brzegowy wtedy, kiedy dopuszcza pakiety do sieci szkieletowej z sieci dostępowej i kiedy doręcza pakiety z sieci szkieletowej do sieci dostępowej. W każdym węźle pakiety nadchodzą z sieci dostępowej zgodnie z rozkładem Poissona i są dopuszczane do sieci szkieletowej, kiedy jest miejsce na którymkolwiek wyjściu przełącznika. Każdy węzeł poza węzłem źródłowym jest węzłem przeznaczenia pakietu z równym prawdopodobieństwem wynoszącym 1/(N − 1), gdzie N jest liczbą węzłów. Przyjmujemy, że ruch na wszystkich połączeniach i we wszystkich węzłach sieci jest statystycznie podobny. Tylko jeden pakiet może nadejść po jednym połączeniu w jednym takcie zegara. Węzły są połączone światłowodami z jedną długością fali i tworzą topologię torusa kraty dwuwymiarowej. Torus posiada l rzędów, l kolumn i N = l2 węzłów. Przykładowa sieć z N = 16 węzłami jest pokazana na rysunku 3.1. Ta topologia jest regularna albo, mówiąc 3.2 Definicja problemu 35 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 Rysunek 3.1: Torus kraty dwuwymiarowej z szesnastoma węzłami. inaczej, symetryczna względem węzła. Każdy węzeł jest typu 4 × 4, czyli każdy węzeł posiada cztery wejścia z sąsiednich węzłów szkieletowych i cztery wyjścia do sąsiednich węzłów szkieletowych. Oprócz tego węzeł posiada połączenia z siecią dostępową. W węźle pakiet jest tracony tylko wtedy, kiedy jego liczba odbić osiągnęła wartość S. Rozwiązywanie konfliktów opiera się na priorytetach. Ważniejsze pakiety są przesyłane pierwsze, natomiast konflikt między równie ważnymi pakietami jest rozwiązywany losowo, jakby przez rzut monetą (ang. coin-toss contention resolution). Węzeł stara się przesłać pakiet przez jedno z żądanych wyjść pakietu, ale nie jest ważne, które żądane wyjście to będzie, więc wybieramy to wyjście przez rzut monetą. Istnieją cztery klasy pakietów: I, II, III i IV. Pakiety klasy I są przesyłane jako pierwsze, potem pakiety klasy II, jeszcze potem pakiety klasy III, a na końcu pakiety klasy IV. W danym węźle pakiet ma przypisaną tylko jedną klasę w zależności od liczby wyjść, jakie pakiet żąda. Żądane wyjście to takie, które należy do najkrótszej ścieżki do węzła przeznaczenia pakietu. W różnych węzłach pakiet może mieć różne klasy. Pojęcie klasy pakietu w tej definicji pochodzi z [50]. W [108] pojęcie klasy pakietu nazywane jest typem pakietu. W poprzednim rozdziale nie przypisywaliśmy klasy pakietom, natomiast mówiliśmy, że węzeł był dla pakietu albo normalny, albo specjalny. Musieliśmy rozróżniać tylko dwa typy węzłów (normalny i specjalny), ponieważ węzeł w poprzednim rozdziale był typu 2×2. W tym rozdziale jednak węzeł posiada cztery wyjścia, stąd istnieją cztery klasy pakietów. Na przykład, jeżeli przyjmiemy, że pakiet przebywa w węźle numer 11 i jego węzłem przeznaczenia jest węzeł numer 1 (rysunek 3.1), to wtedy w węźle numer 11 pakiet jest 36 ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 od sąsiednich węzłów do sąsiednich węzłów optyczny przełącznik pakietów od sieci dostępowych do sieci dostępowych Rysunek 3.2: Węzeł typu 4 × 4. klasy IV względem węzła numer 1, ponieważ każde z czterech wychodzących połączeń w węźle numer 11 jest na najkrótszej ścieżce do węzła numer 1. Ten sam pakiet w węźle numer 10 jest klasy III względem węzła numer 1. W naszym modelu używamy parametrów technologii KEOPS [9]. Pakiety mają określoną stałą długość w czasie, która wynosi 1.646µs. Każde połączenie w naszym modelu ma długość 200km. Prędkość światła w światłowodzie wynosi około 2 · 108 m/s i dlatego jeden takt zegara odpowiada 329.2m światłowodu, natomiast 608 taktów zegara odpowiada 200km światłowodu, co jest właśnie wspomnianą długością połączeń między węzłami. 3.3 Analiza Analizę dzielimy na analizę jednego węzła i analizę całej sieci. Obie części opisujemy w kolejnych podrozdziałach. 3.3.1 Analiza jednego węzła W tym podrozdziale analizujemy węzeł, kiedy pełni on rolę węzła szkieletowego typu 4×4, gdzie pakiety są przesyłane między sąsiednimi węzłami szkieletowymi, natomiast nie są one przesyłane pomiędzy siecią dostępową. Rozważamy jeden węzeł bez odniesienia do całej sieci. Przyjmujemy tylko, że ruch na jednym z wejść węzła jest statystycznie podobny do ruchu na pozostałych połączeniach przełącznika, i że każde wyjście przełącznika jest żądane z tym samym prawdopodobieństwem. Aby wyznaczyć prawdopodobieństwo utraty pakietu w sieci, musimy ocenić jak bardzo 3.3 Analiza 37 podatny jest pakiet na odbicie w węźle typu 4 × 4. W węźle pakiet ma jedną z czterech klas, dla każdej z których wyznaczymy prawdopodobieństwo odbicia. Prawdopodobieństwo odbicia pakietu klasy i oznaczamy przez di , i = 1, 2, 3, 4, natomiast wszystkie prawdopodobieństwa odbicia jako wektor D = (d1 , d2 , d3 , d4 ). Wartości di będą wykorzystane przy konstrukcji macierzy przejść T , która będzie zdefiniowana w dalszej części rozdziału. Wyznaczenie prawdopodobieństwa odbicia di dla węzła 4 × 4 jest skomplikowane, ponieważ istnieje wiele przypadków nadejścia pakietów i sposobu ich przesłania. Prezentowana kombinatoryczna analiza pojedynczego węzła jest podobna do tej w [50], która polega na wyliczeniu każdego przypadku, jaki może wystąpić w węźle i wyznaczeniu prawdopodobieństwa wystąpienia tego przypadku wraz z prawdopodobieństwami odbicia. Następnie wyznaczamy prawdopodobieństwa di w oparciu o prawdopodobieństwa każdego przypadku. Parametrami w analizie są obciążenie sieci u i rozkład prawdopodobieństwa klas pakietów dany przez wektor V = (v1 , v2 , v3 , v4 ). Prawdopodobieństwo tego, że pakiet jest klasy i, wyrażone jest przez vi pod warunkiem, że pakiet nadszedł do węzła (prawdopodobieństwo warunkowe). Dlatego prawdopodobieństwo nadejścia pakietu pierwszej klasy na którymkolwiek wejściu wynosi uv1 . Wektor V jest wyznaczony w następnym podrozdziale. W danym takcie zegara mogą być w węźle co najwyżej cztery pakiety, każdy pakiet nadchodzi z prawdopodobieństwem u. Prawdopodobieństwo nadejścia k pakietów po n = 4 wejściach jest zgodne z rozkładem Bernoulliego wyrażonym wzorem 3.1. Pu (k|n) n=4 ! 4 k = u (1 − u)4−k k (3.1) Każdy z k pakietów jest jednej z n = 4 klas i dlatego nie tylko otrzymujemy k pakietów, ale multizbiór1 ich klas. Przez kombinację klas pakietów będziemy rozumieć multizbiór klas pakietów. W kombinatoryce ten sposób wybierania klas pakietów nazywany jest kombinacjami z powtórzeniami k elementów ze zbioru n = 4 elementów. Liczba multizbiorów k elementów ze zbioru n = 4 elementów jest wyrażona wzorem 3.2. k Cn = k Cn+k−1 ! n+k−1 = k n=4 ! k+3 = k (3.2) 2 Na przykład, istnieje 10 kombinacji klas dwóch pakietów, C 4 = C52 = 10, którymi są {1, 1}, {1, 2}, {1, 3}, {1, 4}, {2, 2}, {2, 3}, {2, 4}, {3, 3}, {3, 4} i {4, 4}. Tabela 3.1 przedstawia liczbę kombinacji klas dla liczby pakietów k = 1, 2, 3, 4. 1 Multizbiór jest zbiorem, w którym liczba powtarzających się elementów jest ważna. Na przykład, trzy pakiety mogą utworzyć kombinację {1, 1, 2}, gdzie dwa pakiety są pierwszej klasy, natomiast jeden pakiet jest drugiej klasy. 38 ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 liczba pakietów 1 2 3 4 liczba kombinacji klas pakietów liczba kombinacji żądanych wyjść RAZEM 4 10 20 35 69 15 147 1195 8763 10120 Tabela 3.1: Liczba kombinacji klas pakietów i liczba kombinacji żądanych wyjść dla węzła typu 4 × 4. Kombinację klas można opisać przez wektor K, K = (k1 , k2 , k3 , k4 ), gdzie ki jest liczbą pakietów klasy i. Dlatego K = (2, 1, 0, 0) opisuje kombinację klas 1, 1, 2. Liczba k pakietów P jest sumą ki , czyli k = 4i=1 ki . Kolejność klas pakietów w kombinacji jest nieważna i dlatego multizbiory {1, 1, 2}, {1, 2, 1} są tą samą kombinacją klas: {1, 1, 2}. Zdefiniujemy następującą wektorową reprezentację kombinacji, aby móc jednoznacznie określać kombinacje klas pakietów. Wektor X = (x1 , . . . , xk ) reprezentuje kombinację klas k pakietów, gdzie xi jest klasą pakietu i. Wektor jest posortowany w rosnącym porządku, czyli xi ¬ xi+1 . Na przykład, kombinacja klas pakietów {1, 2, 1} jest reprezentowana przez wektor X = (1, 1, 2). Prawdopodobieństwo wystąpienia danej kombinacji klas pakietów jest proporcjonalnie P większe do liczby możliwych permutacji z powtórzeniami, która wynosi k!/ 4i=1 ki !. Dlatego mając dany wektor prawdopodobieństw V i wiedząc, że k pakietów nadeszło do węzła, prawdopodobieństwo uzyskania kombinacji klas określonej wektorem K jest wyrażone wzorem 3.3. pcmb (K, V ) = P4 k! i=1 4 Y ki ! i=1 viki (3.3) Kombinacja klas pakietów X może odnosić się do pakietów z różnymi żądanymi wyjściami. Wyjściom przełącznika przypisujemy w dowolny sposób liczby od 1 do 4. Żądane wyjścia pakietu tworzą wektor posortowany w rosnącym porządku. Na przykład, wektor (1, 4) opisuje pakiet z żądanymi wyjściami 1 i 4. Tabela 3.2 przedstawia cztery grupy kombinacji bez powtórzeń żądanych wyjść w zależności od klasy pakietu. Kombinacje żądanych wyjść w jednej grupie są tak samo prawdopodobne, ponieważ wyjścia przełącznika są żądane z jednakowym prawdopodobieństwem. Liczba kombinacji żądanych wyjść dla pakietu klasy k jest wyrażona wzorem 3.4. 4 C4k = k ! (3.4) 3.3 Analiza 39 Klasa pakietu 1 2 3 4 Kombinacje żądanych wyjść (1), (2), (3), (4) (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4) (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4) (1, 2, 3, 4) Tabela 3.2: Kombinacje żądanych wyjść dla pakietu w węźle typu 4 × 4 w zależności od klasy tego pakietu. Kiedy zamienimy każdą klasę xi pakietu w kombinacji klas X na kombinację żądań pakietu yi , wtedy otrzymujemy układ żądań i oznaczamy go przez Y = (y1 , . . . , yk ). Jedna kombinacja klas pakietów może zawierać wiele układów żądań. Na przykład, kombinacja klas X = (1, 1, 2) zawiera układy żądań Y = ((1), (3), (2, 4)) i Y = ((2), (2), (1, 2)) spośród wielu innych możliwych układów żądań. Liczba układów żądań dla klasy kombinacji Q danej przez wektor K wynosi 4i=1 (C4i )ki . Ponieważ żadna kombinacja żądanych wyjść nie jest wyróżniana, to każdy układ żądań jest równie prawdopodobny, i dlatego prawdopodobieństwo otrzymania pewnego układu żądań dla kombinacji klas danej wektorem K jest wyrażone wzorem 3.5. 1 i ki i=1 (C4 ) parr (K) = Q4 (3.5) Do tego miejsca podrozdziału przedstawiliśmy elementarne wyrażenia, które użyjemy do analizy węzła typu 4 × 4. Wyprowadziliśmy prawdopodobieństwo pcmb (K, V ), z którym określona kombinacja klas występuje, i prawdopodobieństwo parr (K), z którym określone ułożenie żądań występuje. Teraz pozostaje obliczyć prawdopodobieństwa odbić dla układu żądań Y . W tym celu potrzebna jest funkcja def (Y ) z argumentem układu żądań Y , która zwraca wektor A = (a1 , . . . , ak ), gdzie ai jest prawdopodobieństwem odbicia pakietu yi . Funkcja przetwarza każdy sposób przesłania pakietów (tzn. sposób przypisania wyjść przełącznika pakietom), a następnie na ich podstawie wyznacza średnie prawdopodobieństwa odbicia. Algorytm 1 wyznacza D na podstawie u i V . Algorytm przetwarza każdą kombinację klas, a następnie dla każdej kombinacji żądanych wyjść są wyznaczane prawdopodobieństwa odbicia. Każda kombinacja klas i każda kombinacja żądanych wyjść są uwzględniane przy wyznaczeniu średnich wartości prawdopodobieństw odbicia. Tabela 3.3 przedstawia przykładowe wyniki symulacyjne i analityczne dla węzła typu 4 × 4, gdy obciążenie wejść wynosi u = 0.1 i prawdopodobieństwa klas pakietów wynoszą V = (0.4, 0.2, 0.1, 0.3). Cztery wartości analityczne zostały wyznaczone przez algorytm 1, natomiast wartości symulacyjne przez symulację węzła w ciągu 106 taktów zegara. Wyniki 40 ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 Algorytm 1 Mając dane u i V , wyznacz D. D = (d1 , d2 , d3 , d4 ) ⇐ (0, 0, 0, 0) C = (c1 , c2 , c3 , c4 ) ⇐ (0, 0, 0, 0) dla k od 1 do 4 wykonaj pber ⇐ Pu (k|4) dla wszystkich kombinacji klas X = (x1 , . . . , xk ) wykonaj pcmb ⇐ pber · pcmb (K, V ) dla wszystkich układów żądań Y kombinacji klas X wykonaj parr ⇐ pcmb · parr (K) A = (a1 , . . . , ak ) ⇐ def (Y ) dla i od 1 do k wykonaj cxi ⇐ cxi + parr dxi ⇐ dxi + parr · ai koniec dla koniec dla koniec dla koniec dla dla i od 1 do 4 wykonaj dxi ⇐ dxi /cxi koniec dla zwróć D analiza symulacja klasa i 0.007755 0.007753 klasa II 0.001044 0.001110 klasa III 0.000062 0.000089 klasa IV 0.000000 0.000000 Tabela 3.3: Wyniki symulacyjne i analityczne dla węzła typu 4 × 4 gdy obciążenie wejść wynosi u = 0.1 i prawdopodobieństwa klas pakietów wynoszą V = (0.4, 0.2, 0.1, 0.3). symulacyjne i analityczne zgadzają się ze sobą bardzo dobrze. Jak widać pakiety klasy IV nie mogą być odbite (prawdopodobieństwo odbicia wynosi 0), ponieważ każde wyjście przełącznika jest przez nie żądane. 3.3.2 Analiza całej sieci Celem analizy jest otrzymanie rozkładu prawdopodobieństwa utraty pakietu w funkcji liczby skoków. Parametrami analizy są: maksymalna liczba odbić S (tzw. próg), obciążenie sieci u i liczba węzłów w sieci. Analiza jest uogólnieniem analizy z poprzedniego rozdziału, która koncentruje się na pakiecie testowym. W tym podrozdziale k oznacza numer taktu zegara, natomiast n oznacza numer węzła. Liczba K oznacza największą liczbę skoków, jaką pakiet może wykonać z ograniczeniem liczby odbić. Analiza polega na śledzeniu pakietu testowego od momentu, kiedy pakiet dostaje się do sieci (takt zegara numer k = 0) do momentu, kiedy pakiet na pewno nie będzie już 3.3 Analiza 41 przebywał w sieci (k = K), ponieważ albo zostanie usunięty albo zostanie doręczony do węzła przeznaczenia. Pakiet wykonuje jeden skok w jednym takcie zegara. Wartość K jest górną granicą na liczbę skoków, jaką pakiet może wykonać [135], która jest wyrażona wzorem 3.6. K = S · średnica (3.6) Ponieważ sieć jest regularna i ruch jest jednolity, stąd możemy śledzić pakiet testowy tylko dla przypadku, kiedy jego węzłem docelowym jest węzeł numer 1 i nie musimy rozważać każdego węzła jako węzła przeznaczenia. W regularnej sieci każdy węzeł jest równoważny każdemu innemu, co razem z założeniem o równomiernym obciążeniu sieci pozwala na analizę z określeniem tylko jednego węzła docelowego, a my wybraliśmy węzeł numer 1. Analiza opiera się na prawdopodobieństwach tego, że pakiet testowy jest obecny w węźle n, dla n = 1, . . . , N , po wykonaniu k skoków, dla k = 1, . . . , K. Na przykład, interesuje nas prawdopodobieństwo tego, że pakiet testowy przebywa w węźle n = 5 po wykonaniu k = 3 skoków. Będziemy także zainteresowani prawdopodobieństwami tego, że pakiet został odbity s razy, dla s = 0, . . . , S − 1. Na przykład, będziemy zainteresowani, jakie jest prawdopodobieństwo tego, że pakiet testowy przebywa w węźle n = 5 po wykonaniu k = 3 skoków i że doznał s = 2 odbić. Prawdopodobieństwo tego, że pakiet przebywa w węźle n po wykonaniu k skoków niezależnie od liczby doznanych odbić jest wyrażone wielomianem pk,n (x) o współczynnikach rzeczywistych i stopniu co najwyżej S − 1, jak podaje wzór 3.7, gdzie współczynnik pk,n,s wyraża prawdopodobieństwo tego, że pakiet testowy przebywa w węźle n po wykonaniu k skoków i doznaniu s odbić. pk,n (x) = S−1 X pk,n,s xs (3.7) s=0 Wielomiany pk,n (x) należą do pierścienia wielomianów modulo xS nad ciałem liczb rzeczywistych, co zapisujemy wzorem 3.8. pk,n (x) ∈ R[x]/xS (3.8) Jednak w dalszej części rozdziału nie będziemy się już odnosić do algebry abstrakcyjnej. Nam wielomiany pk,n (x) służą jedynie jako narzędzie do przechowania liczby odbić i odpowiadających im prawdopodobieństw. Jeżeli jesteśmy zainteresowani prawdopodobieństwem tego, że pakiet testowy przebywa w węźle n po wykonaniu k skoków niezależnie od liczby odbić, wtedy dodajemy współczynniki wielomianu pk,n (x), co odpowiada oszacowaniu wielomianu w punkcie x = 1: pk,n (x = 1). Zmiennej x nie musimy koniecznie 42 ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 przypisać żadnej wartości, ponieważ jest ona jedynie obiektem, na którym wykonujemy operacje dodawania i mnożenia. Ten sposób wykorzystania wielomianów nie ma nic wspólnego z aproksymacją wielomianową. Grupujemy wielomiany w wektory Pk = (pk,n (x)) wyrażone wzorem 3.11, które składają się z N elementów, gdzie element pk,n (x) odpowiada węzłowi n sieci. pk,1 (x) .. . Pk = pk,n (x) .. . pk,N (x) (3.9) Wektor Pk przechowuje wszystkie prawdopodobieństwa przebywania pakietu testowego w takcie zegara k dla wszystkich węzłów i możliwych liczb odbić. Wektor P0 przechowuje prawdopodobieństwa przebywania pakietu w momencie, kiedy pakiet jest dopuszczany do sieci szkieletowej, czyli w pierwszym takcie przebywania pakietu w sieci szkieletowej. Węzłem przeznaczenia pakietu jest węzeł numer 1, a węzłem źródłowym jest każdy inny węzeł z prawdopodobieństwem 1/(N − 1), jak wyrażono wzorem 3.10. P0 = 0 1 N −1 .. . 1 N −1 (3.10) Aby otrzymać wektory Pk stosujemy równanie 3.11. Pk = T Pk−1 dla k = 1, . . . , K (3.11) gdzie T jest macierzą przejść, która wyraża możliwości, jakie posiada pakiet przez wykonanie jednego skoku. Elementy ti,j (x) macierzy są wielomianami, które wyrażają prawdopodobieństwo tego, że pakiet testowy przeskoczy z węzła j do węzła i pod warunkiem, że pakiet testowy znajduje się w węźle j. Elementy macierzy przejść są uzyskiwane w następujący sposób. Jeżeli połączenie między węzłami j oraz i nie istnieje, to pakiet testowy nie wykona skoku i dlatego ti,j (x) = 0. Przejście, które jest odbiciem, dla pakietu klasy i jest reprezentowane w macierzy 1 di x, natomiast przejście bez odbicia jest reprezentowane przez przez element ti,j (x) = 4−i 1 ti,j (x) = i pi , gdzie pi = 1 − di . Te zasady nie odnoszą się do węzła numer 1, gdzie pakiet kończy swoją podróż w sieci szkieletowej i nie może zostać przesłany do innych węzłów 3.4 Przykładowe wyniki 43 sieci szkieletowej, tak więc ti,1 (x) = 0. Macierz przejść dla sieci pokazanej na rysunku 3.1 jest przedstawiona równaniem (3.12) na stronie 44, gdzie węzeł numer 1 jest węzłem przeznaczenia pakietu testowego. Prawdopodobieństwo, z którym pakiet testowy jest tracony po k skokach, jest sumą prawP dopodobieństw utracenia pakietu w węzłach sieci, N n=1 pk,n,S−1 · dcn , gdzie cn jest klasą pakietu testowego w węźle numer n. W poprzednim podrozdziale wektor prawdopodobieństw klas pakietów V = (v1 , v2 , v3 , v4 ) został tylko wprowadzony, natomiast wzór 3.13 podaje sposób uzyskania wartości elementów tego wektora, gdzie δicn jest deltą Kroneckera. vi = PK−1 PN k=0 pk,n (x = 1)δicn n=2 pk,n (x = 1) n=2 PK−1 PN k=0 dla i = 1, 2, 3, 4 (3.13) Wartości vi są potrzebne do wyznaczenia di . Wartości di są wstawiane do macierzy przejść T . Mając macierz T , wyznaczamy wektory Pk . Na podstawie wektorów Pk wyznaczamy nowe wartości vi . Widzimy, że wielkości te są wzajemnie powiązane, dlatego otrzymujemy je przez podstawianie nowych, dokładniejszych wartości w kolejnych iteracjach. Wartościami początkowymi wielkości vi jest stosunek liczby węzłów, w których pakiet jest klasy i, do liczby wszystkich węzłów. Aby otrzymać wartości vi , wyznaczamy di tak, jak opisano w podrozdziale 3.3.1, następnie otrzymujemy nową macierz T , wektory Pk są obliczane używając (3.10), (3.11) i na końcu nowe, bardziej dokładne wartości vi są otrzymywane z (3.13). Ten proces jest powtarzany tyle razy, aż kolejne wyniki uzyskają zadowalającą dokładność. Na przykład, w naszych obliczeniach wielkość d1 została uzyskana z dokładnością rzędu 10−4 już po sześciu iteracjach, ponieważ kolejne wielkości d1 szybko zbiegły się do stabilnej wartości. 3.4 Przykładowe wyniki Wyniki analityczne porównaliśmy z wynikami symulacyjnymi uzyskanymi przy użyciu symulatora OMNeT++ [141]. Rysunki 3.3 i 3.4 pokazują wyniki analizy i symulacji dla sieci o stu węzłach. Wyniki symulacyjne są reprezentowane przez znaki ×, natomiast wyniki analityczne przez linie. Przedstawiamy dwie grupy wyników symulacyjnych i analitycznych. W pierwszej grupie próg S był stały i wynosił S = 10, a obciążenie sieci było zmieniane i wynosiło u = 0.1, 0.19, 0.47, 1.0. Wyniki dla tej grupy są pokazane na rysunku 3.3. Obciążenie sieci u wpływa tylko na prawdopodobieństwo utraty pakietu, nie wpływa natomiast na liczbę skoków, po których pakiety są usuwane. Prawdopodobieństwa utraty pakietów wyzna- ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 44 T = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 p1 0 1 dx 3 1 0 0 1 d x 3 1 0 0 0 0 0 0 0 1 d x 3 1 0 0 0 1 p 2 2 0 1 p 2 2 0 0 1 dx 2 2 0 0 0 0 0 0 0 1 dx 2 2 0 p1 0 1 dx 3 1 0 0 0 0 1 dx 3 1 0 0 0 0 0 0 0 1 dx 3 1 p1 0 0 0 0 1 d x 3 1 0 1 dx 3 1 1 dx 3 1 0 0 0 0 0 0 0 0 0 1 p 0 2 2 1 0 p 3 3 0 0 1 p 0 2 2 1 0 p 3 3 1 dx 0 2 2 1 0 p 3 3 0 0 1 dx 0 2 2 0 d3 x 0 0 0 0 0 0 0 0 0 0 0 0 0 1 p 2 2 1 p 2 2 0 1 dx 2 2 0 0 0 0 1 d x 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 p 0 2 2 1 0 p 3 3 0 0 0 0 1 0 p 3 3 1 dx 0 2 2 0 d3 x 1 d x 0 2 2 1 p 0 2 2 1 0 p 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 p 0 4 4 1 0 3 p3 0 13 p3 1 p 0 4 4 0 d3 x 1 p 0 4 4 0 0 0 0 1 p 0 4 4 1 0 3 p3 p1 0 0 0 0 0 0 0 1 d x 3 1 0 0 0 0 1 d x 3 1 0 1 dx 3 1 0 0 1 p 0 2 2 1 0 p 3 3 0 0 0 0 0 0 0 0 0 0 0 0 1 dx 0 2 2 0 d3 x 0 0 1 p 0 2 2 1 0 p 3 3 1 dx 0 2 2 1 0 p 3 3 0 0 0 1 p 2 2 0 0 0 0 0 0 0 1 d x 2 2 1 p 2 2 0 1 dx 2 2 0 (3.12) 3.4 Przykładowe wyniki 45 1 prawdopodobieństwo 10−5 u=1 10 −10 u = 0.47 10−15 10−20 u = 0.19 10−25 10−30 u = 0.1 5 analiza symulacja 10 15 20 liczba skoków 25 30 Rysunek 3.3: Prawdopodobieństwo utraty pakietu w funkcji liczby skoków dla czterech wartości obciążenia sieci u i stałego progu S = 10. 10−1 prawdopodobieństwo S=5 S = 10 10−3 S = 15 S = 20 10−5 10−7 analiza symulacja 10−9 0 5 10 15 20 25 30 liczba skoków 35 40 45 50 Rysunek 3.4: Prawdopodobieństwo utraty pakietu w funkcji liczby skoków dla czterech wartości progu S i stałego obciążenia sieci u = 0.47. 46 ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 prawdopodobieństwo prawdopodobieństwo utraty pakietu dozwolone prawdopodobieństwo utraty pakietu 1 10−4 10−8 10−12 10 9 8 7 6 próg S 5 4 3 2 1 1 0.8 u 0.6 ieci s 0.4 nie e ż 0.2 cią ob Rysunek 3.5: Prawdopodobieństwo utraty pakietu w sieci ze stu węzłami w funkcji obciążenia sieci u i progu S. czone analitycznie dla u = 0.1 były bardzo niskie (rzędu 10−25 ) i dlatego nie byliśmy w stanie potwierdzić ich poprawności przy pomocy badań symulacyjnych (stąd brak znaków × w okolicy tej krzywej). W drugiej grupie wyników obciążenie sieci było stałe i wynosiło u = 0.47, a próg S wynosił S = 5, 10, 15, 20. Wyniki są przedstawione na rysunku 3.4. Próg S wpływa na liczbę skoków, po których pakiet jest usuwany: im większy próg S, tym więcej skoków pakiet może wykonać. Wraz ze zwiększaniem progu S, pakiety są tracone po większej liczbie skoków, szanse na dostarczenie pakietów do węzłów przeznaczenia są większe i w wyniku tego prawdopodobieństwa utraty pakietów są mniejsze. Rysunek 3.5 przedstawia analityczne sumaryczne prawdopodobieństwo usunięcia pakietu (tzn. sumę prawdopodobieństw usunięcia pakietu dla wszystkich możliwych liczb skoków) dla sieci ze stu węzłami, gdzie próg S i obciążenie sieci u są zmiennymi: S = 1, 2, . . . , 10, u = 0.1, 0.2, . . . , 1.0. Wykres przedstawia 100 wartości sumarycznych prawdopodobieństw utraty pakietu, które tworzą zakrzywioną powierzchnię, a także przedstawia dopuszczalne prawdopodobieństwo utraty pakietu równe 10−9 , które tworzy płaszczyznę. Mała część powierzchni znajduje się pod płaszczyzną, co oznacza, że tylko w tych miejscach prawdopodobieństwo utraty pakietu nie przekracza dopuszczalnej wartości. Na przykład, przy obciążeniu u = 0.1, prawdopodobieństwo utraty pakietu będzie wynosiło mniej niż 10−9 pod warunkiem, że S = 7, 8, 9, 10. 3.5 Podsumowanie 3.5 47 Podsumowanie W tym rozdziale przedstawiliśmy analizę prawdopodobieństwa utraty pakietu w równomiernie obciążonej sieci z optycznym przełączaniem pakietów, w której pakiety są przesyłane z ograniczonym odbijaniem i węzły są typu 4 × 4. Z przedstawionych wyników wnioskujemy, że wraz ze wzrostem dozwolonej liczby odbić, wartość prawdopodobieństwa utraty pakietu maleje (korzystny efekt), jednak górna granica na liczbę skoków rośnie (niekorzystny efekt). Co więcej, im większe jest obciążenie sieci, tym większe jest prawdopodobieństwo utraty pakietu. Dzięki naszej analizie możemy wyznaczyć obciążenie sieci i dozwoloną liczbę odbić tak, aby prawdopodobieństwo utraty pakietu nie przekroczyło dopuszczalnej wartości. Zaletą prezentowanej analizy jest możliwość uzyskania bardzo niskich prawdopodobieństw utraty pakietów, które trudno uzyskać przy użyciu symulatorów programowych. Poprawność wyników analitycznych potwierdziliśmy tylko w tych przypadkach, dla których symulatory zwracały wyniki w rozsądnym czasie. Na podstawie tego przypuszczamy, że nasze wyniki analityczne są poprawne również dla przypadków, gdzie prawdopodobieństwa były bardzo małe i nie można ich było potwierdzić badaniami symulacyjnymi. Prezentowana analiza jest przydatna dla sieci regularnych, ale w obecnym kształcie nie można jej zastosować do nieregularnych sieci, którymi są istniejące sieci komunikacyjne. Nasza analiza jest jednak krokiem w kierunku dokładnej oceny przyszłych sieci komunikacyjnych z optycznym przełączaniem pakietów. 48 ROZDZIAŁ 3. ROZWINIĘCIE ANALIZY DLA WĘZŁÓW 4 × 4 Rozdział 4 Uogólnienie metody Przedstawiamy metodę oceny wydajności optycznych sieci pakietowych, którą można stosować do topologii rzeczywistych sieci. Otrzymamy nie tylko ogólne informacje na temat obciążenia połączeń, ale także szczegółowe informacje o używanych węzłach i połączeniach oraz częstościach pakietów. Analizę można stosować do sieci dowolnej topologii zbudowanych z węzłów dowolnego stopnia i tam, gdzie światłowody posiadają dowolną liczbę długości fal. Nasza metoda jest także w stanie wziąć pod uwagę odbicia (ang. deflections). Ocena wydajności sieci przeprowadzana jest dla sieci w stanie ustalonym, która jest obciążona niezależnymi żądaniami. Algorytm kontroli dostępu w danym takcie zegara dopuszcza do sieci w sposób sprawiedliwy co najwyżej tyle pakietów, ile pozostało szczelin czasu na wyjściu przełącznika w tym takcie zegara. Algorytm rutowania używa priorytetów, odległości, odbić i konwersji długości fal. Wyniki naszej analitycznej oceny wydajności porównujemy z wynikami symulacyjnymi dla przykładu polskiej akademickiej sieci PIONIER [143], która jest zbudowana z 24 węzłów i 28 par światłowodów. 4.1 Wprowadzenie W rozdziale przyjmujemy, że liczby pakietów mają rozkład prawdopodobieństwa Poissona, co wystarcza do wstępnej oceny wydajności. Najnowsze badania sugerują, że ten rozkład jest w stanie dobrze modelować ruch w sieciach szkieletowych [144]. Przyszłe prace mogłyby wziąć pod uwagę inne modele ruchu [145]. Jeżeli przyjmiemy, że średnia częstość pakietów na takt zegara wynosi λ, to prawdopodobieństwo tego, że l pakietów nadejdzie w takcie zegara wynosi f (l, λ), wyrażone wzorem 4.1. W dalszej części rozdziału przyjmiemy, że wszystkie średnie częstości są parametrem rozkładu Poissona i odnoszą się do jednego taktu zegara. 50 ROZDZIAŁ 4. UOGÓLNIENIE METODY wi,j , di,j od sąsiednich węzłów do sąsiednich węzłów optyczny przełącznik pakietów od sieci dostępowych do sieci dostępowych Rysunek 4.1: Wejścia i wyjścia węzła i. f (l, λ) = e−λ λl l! (4.1) Metoda analityczna i metoda symulacyjna są zaimplementowane w programie OPUS (Optical Packet Switching Universal Solver), który jest dostępny pod adresem [140]. W rozdziale odwołujemy się do szczegółów implementacji, takich jak funkcje, klasy i programy. 4.2 Definicja problemu Sieć działa synchronicznie: jej węzły odbierają i wysyłają pakiety na początku taktu zegara. Wszystkie węzły są zsynchronizowane z jednym zegarem dla całej sieci. Jest N węzłów w sieci ponumerowanych od 1 do N , które są połączone światłowodami. Węzeł i pokazany na rysunku 4.1 połączony jest z sąsiednim węzłem j światłowodem (i, j) o długości di,j kilometrów, na którym jest dostępne wi,j długości fal. Liczba długości fal dostępnych na P wyjściu węzła wynosi wi = N j=1 wi,j . Długości światłowodów dane są macierzą D = (di,j ) o rozmiarach N ×N , natomiast liczby długości fal macierzą W = (wi,j ) także o rozmiarach N ×N . Węzeł dopuszcza pakiety z sieci dostępowych do sieci szkieletowej przez połączenia „od sieci dostępowych” i dostarcza pakiety z sieci szkieletowej do sieci dostępowej przez połączenia „do sieci dostępowych”. Sieć jest obciążona żądaniami (i, j) z węzła i do węzła j. Żądanie (i, j) generuje pakiety, których średnia częstość dla każdego taktu zegara wynosi βi,j . Macierz B = (βi,j ) o rozmiarach N × N zawiera średnie częstości wszystkich żądań. 4.2 Definicja problemu 51 αi′ αi µi ruting µ′i βi′ kontrola dostępu αi,i βi Rysunek 4.2: Średnie częstości pakietów w węźle i. Rysunek 4.2 pokazuje którędy i z jakimi średnimi częstościami pakiety są przesyłane w węźle i. Węzeł i otrzymuje pakiety od sąsiednich węzłów ze średnią częstością αi = PN n=1 αi,n , gdzie αi,n pakietów podróżuje do węzła przeznaczenia n, z których αi,i pakietów jest wysyłanych do sieci dostępowych. Średnie częstości αi,n są uporządkowane w macierz A = (αi,n ) o rozmiarach N × N . ′ Pakietów w tranzycie jest αi,n , które przechodzą przez węzeł i na drodze do węzła przezna′ ′ czenia n, gdzie αi,n = αi,n dla i 6= n i αi,i = 0 dla każdego i. Średnia częstość wszystkich P ′ ′ pakietów w tranzycie w węźle i wynosi αi′ = N n=1 αi,n . Średnie częstości αi,n są grupowane ′ w macierz A′ = (αi,n ) o rozmiarach N × N . Co więcej, pakiety z sieci dostępowych z węzłem docelowym n przybywają do węzła i ze średnią częstością βi,n , których suma wynosi P βi = N n=1 βi,n pakietów żądających dostępu do sieci. Ponieważ węzeł i nie wyśle pakietów P ′ do siebie, to βi,i = 0. Pakiety są dopuszczone ze średnią częstością βi′ = N n=1 βi,n , a na′ stępnie razem z pakietami w tranzycie αi′ są rutowane. Średnie częstości βi,n są grupowane ′ w macierz B′ = (βi,n ) o rozmiarach N × N . Algorytm rutowania otrzymuje pakiety ze P ′ ′ ′ ′ średnią częstością µi,n = αi,n + βi,n , których suma wynosi µi = N n=1 µi,n = αi + βi , a naP ′ ′ stępnie wysyła je ze średnią częstością µ′i = N n=1 µi,n , gdzie µi,n jest średnią częstością pakietów w węźle i, które są przeznaczone dla węzła n, i które zostały już wysłane z węzła. Średnie częstości µi,n są grupowane w macierz U = (µi,n ) o rozmiarach N × N . Macierz U można łatwo otrzymać: U = A′ + B′ . Naszym celem przy kontroli dostępu jest dopuszczenie do sieci szkieletowej tylu pakietów, ile to możliwe, ale nie więcej niż węzeł może wysłać w danym takcie zegara. Dlatego w każdym takcie zegara dopuszczamy tyle pakietów, ile jest wolnych wyjściowych długości fal, co jest równe różnicy między sumą liczb wyjściowych długości fal a liczbą pakietów w tranzycie. Dopuszczone pakiety są wybierane z pakietów żądających dostępu w sposób losowy, aby zapewnić sprawiedliwość dostępu. Oprócz wysyłania pakietów do ich węzłów przeznaczenia, algorytm rutingu powinien optymalizować wydajność sieci, co staramy się osiągnąć przez uwzględnienie priorytetów pakietów i odległości pakietów do węzłów przeznaczenia. Pierwsze są przesyłane pakiety 52 ROZDZIAŁ 4. UOGÓLNIENIE METODY lepszych klas (pakiety pierwszej klasy są najlepsze), a potem są wysyłane pakiety gorszych klas (drugiej, trzeciej, itd.). W węźle i każdy pakiet ma przypisany numer klasy, który jest liczbą całkowitą równą liczbie żądanych światłowodów wyjściowych. Definiujemy żądany światłowód wyjściowy pakietu jako światłowód wyjściowy, który należy do ścieżki do węzła docelowego o długości co najwyżej równej dwukrotnej długości najkrótszej ścieżki z tego węzła do węzła przeznaczenia. Kolejność rutowania wśród pakietów o tej samej klasie jest ustalana na podstawie odległości do ich węzłów przeznaczenia: pakiety o najmniejszej odległości są przesyłane jako pierwsze. Algorytm rutingu wysyła światłowodem wyjściowym tyle pakietów, ile to możliwe, korzystając z konwersji długości fal, i korzysta z odbić tylko wtedy, kiedy już nie ma dostępnych długości fal na żadnym z żądanych światłowodów wyjściowych. Wprowadzamy dwa parametry, które są liczbami całkowitymi: η jest maksymalną liczbą skoków (czyli przejść między węzłami), jakie pakiet może wykonać, i δ jest maksymalną odległością, jaką pakiet może przebyć. Pakiet posiada licznik skoków i licznik przebytej odległości, które są kontrolowane podczas nadejścia pakietu do węzła. Pakiet jest usuwany, jeżeli jeden z liczników przekracza dopuszczalną wartość. Liczniki w pakiecie są odpowiednio zmieniane przy wysyłaniu pakietu z węzła. Parametr η może modelować pole TTL (ang. time-to-live) pakietów IPv4 i pole HL (ang. hop limit) pakietów IPv6, natomiast parametr δ maksymalną długość ścieżki optycznej (ang. lightpath), po której zawartość pakietu (ang. packet payload) jest ciągle użyteczna pomimo doznanych zakłóceń optycznych. Wynikiem analizy są ścieżki i średnie częstości, z którymi pakiety poszczególnych żądań podróżują. 4.3 Analiza Analiza jest złożona z kilku części, które są kolejno omawiane w podrozdziałach. Zaczynamy od notacji wielomianowej, przechodzimy do prezentacji algorytmu wyznaczającego najbardziej prawdopodobne zdarzenia, który to algorytm jest następnie wykorzystany do oceny wydajności pojedynczego węzła. Dalej omawiamy metodę analizy całej sieci, w której są wykorzystane prezentowane części składowe. Opis metody analitycznej jest ilustrowany przykładami dla sieci pokazanej na rysunku 4.3. Węzły sieci pełnią funkcję zarówno węzłów szkieletowych, jak i funkcję węzłów brzegowych. Światłowody są różnej długości i mają różną liczbę długości fal. Sieć jest obciążona żądaniami podanymi w tabeli 4.1. 4.3 Analiza 53 100, 4 ,4 4 4 50 0, 3 ,8 21 40, 8 1 8 0, 80 10 200, 8 2 340, 8 5 6 Rysunek 4.3: Przykładowa sieć, gdzie pierwsza liczba etykiety światłowodu oznacza długość światłowodu, a druga liczbę długości fali. Węzeł Źródłowy 1 2 3 4 5 6 1 0 0.2 0.2 0.2 0.2 1.2 Węzeł Docelowy 2 3 4 5 0.3 0.5 1.3 2.1 0 0.5 0.9 2.1 1.3 0 0.9 1.1 0.3 1.3 0 1.1 1.3 0.5 0.9 0 0.3 0.5 2.5 0.1 6 0.7 1.2 0.7 0.7 1.5 0 Tabela 4.1: Macierz ruchu dla sieci pokazanej na rysunku 4.3. 4.3.1 Notacja wielomianowa Z powodu odbić pakiety mogą podróżować do swojego węzła przeznaczenia różnymi drogami, a nawet mogą odwiedzać te same węzły wiele razy. Badając pewien węzeł sieci można zauważyć, że pakiety należące do tego samego żądania odwiedzają węzeł po przebyciu tylko 100km, natomiast inne pakiety tego samego żądania po przebyciu 250km. Co więcej, możemy zauważyć, że średnie częstości pakietów różnią się w zależności od pokonanej odległości. Aby opisać częstości pakietów i odległości przez nie przebyte, wprowadzamy notację wielomianową, podobną do tej prezentowanej w [137], lecz tam wielomiany służą zapamiętaniu liczby odbić, a nie przebytej odległości jak w tym rozdziale. Jesteśmy zainteresowani średnią liczbą λk pakietów, które przebyły dokładnie odległość k, gdzie k jest liczbą całkowitą. Średnie częstości są organizowane w wielomian zmiennej x, jak wyrażono wzorem 4.2. Używamy tych wielomianów, aby opisać pakiety odwiedzające węzeł albo przechodzące przez światłowód. Zmienna wielomianowa x i jej człony xd pomagają organizować średnie częstości λd w grupy. p(x) = δ X λd xd (4.2) d=0 Na przykład, wielomian 0.01078x780 +0.00003x580 +0.01304x530 +0.00003x460 +1.25086x380 54 ROZDZIAŁ 4. UOGÓLNIENIE METODY był wyznaczony przez naszą metodę analityczną dla przykładowej sieci pokazanej na rysunku 4.3. Podaje on średnie częstości pakietów, które należą do żądania (1, 4) i które przechodzą przez światłowód (3, 4). Dowiadujemy się, że w każdym takcie zegara średnio 1.25086 pakietów przechodzi przez światłowód, które przebyły 380km, 0.00003 pakietów które przebyły 460km, itd. Podczas gdy wielomiany opisują pakiety danego żądania, operacje dodawania i mnożenia wielomianów modelują to, co się dzieje z pakietami. Kiedy pakiety żądania nadchodzą do węzła przez dwa lub więcej światłowodów, dodajemy wielomiany dla poszczególnych światłowodów, aby otrzymać wielomian opisujący pakiety w węźle. Na przykład, analiza dla sieci pokazanej na rysunku 4.3 mówi, że pakiety żądania (1, 4) nadchodzą do węzła 4 po przebyciu czterech skoków ze średnimi częstościami wyrażonymi wielomianem 0.01305x530 +0.00114x450 . Stało się tak dlatego, bo pakiety nadeszły z węzła 3 ze średnią częstością 0.01305 po przebyciu 530km i z węzła 6 ze średnią częstością 0.00114 po przebyciu 450km. Wielomiany mnożymy przez człony ϕxd , co jest narzędziem modelowania przejścia pakietów przez światłowody długości d, pod warunkiem, że pakiety są wysłane do tego światłowodu z prawdopodobieństwem ϕ. Prawdopodobieństwo ϕ wysłania pakietu jest wyznaczone w podrozdziale 4.3.3. Na przykład dla sieci pokazanej na rysunku 4.3 według naszej analizy pakiety żądania (1, 3), które nadchodzą do węzła 2 po pierwszym skoku są opisane przez wielomian 0.49273x100 , czyli pakiety nadchodzą ze średnią częstością 0.49273 po przebyciu 100km. Przejście tych pakietów przez światłowód (2, 5) jest wyrażone wielomianem 0.44213x40 , ponieważ prawdopodobieństwo wysłania pakietów przez światłowód wynosi 0.44213, i ponieważ długość światłowodu wynosi 40km. Podsumowując, wspomniane pakiety przechodzące przez światłowód możemy opisać wielomianem 0.49273x100 × 0.44213x40 = 0.21785x140 . Pakiety są usuwane z sieci wtedy, kiedy przebędą ponad δ kilometrów, co modelujemy przez usuwanie członów stopnia większego niż δ. Na przykład, wynikiem mnożenia 0.2x100 (0.1x950 + 0.2x800 ) dla δ = 1000 jest wielomian 0.04x900 , ponieważ człon 0.02x1050 został usunięty. Nasza notacja wielomianowa pomaga modelować nie tylko różne ścieżki pakietów, ale także różne opóźnienia spowodowane buforowaniem pakietów. Jednak o tym zastosowaniu tylko wspominamy, ponieważ nie badamy węzłów z buforami. Zaprezentowaną notację wielomianową moglibyśmy zastąpić przez użycie tablic rozmiaru δ + 1 ze średnimi częstościami jako elementami tablic. Dodawanie wielomianów zastąpilibyśmy dodawaniem tablic, natomiast mnożenie wielomianu przez ϕxd zastąpilibyśmy 4.3 Analiza 55 mnożeniem elementów tablicy przez ϕ i przesunięciu ich o d pozycji. 4.3.2 Algorytm znajdowania ułożeń pakietów Ułożenie pakietów jest zbiorem pakietów zgrupowanych w R grup, który jest rozważany przy kontroli dostępu albo rutingu. Opisujemy ułożenie pakietów przez wektor X = (x1 , . . . , xr , . . . , xR ), gdzie xr jest dyskretną zmienną losową opisującą liczbę pakietów w grupie r. Pakiety możemy grupować w dowolny sposób; i tak na przykład przy analizie kontroli dostępu mamy dwie grupy pakietów: jedna grupa zawiera pakiety w tranzycie, a druga grupa zawiera pakiety żądające dostępu. Zmienna losowa xr ma rozkład Poissona ze średnią częstością λr daną wektorem Λ = (λ1 , . . . , λr , . . . , λR ). Przyjmujemy, że zmienne losowe xr są niezależne, i dlatego prawdopodobieństwo ułożenia pakietów X wyrażone jest wzorem 4.3. P (X, Λ) = R Y f (xr , λr ) (4.3) r=1 Ponieważ liczba pakietów w grupach może być nieskończona, to liczba ułożeń pakietów także może być nieskończona. Jednak nie ma potrzeby rozważania wszystkich układów pakietów, ponieważ większość z nich jest mało prawdopodobna. Na przykład, jeżeli Λ = (0.75, 0.5), to prawdopodobieństwo ułożenia pakietów X = (15, 10) wynosi P (X) = f (15, 0.75)f (10, 0.5) ≈ 8 × 10−25 , więc możemy pominąć to ułożenie pakietów. Mając dany wektor Λ, celem naszego algorytmu jest znalezienie sekwencji najbardziej prawdopodobnych ułożeń. Zarówno w analizie kontroli dostępu, jak i w analizie rutingu rozważane są ułożenia pakietów, a celem naszego algorytmu jest dostarczenie najbardziej prawdopodobnych ułożeń. Znajdujemy najbardziej prawdopodobne ułożenie pakietów oznaczone przez X1 = (x1,1 , . . . , xr,1 , . . . , xR,1 ), a następnie wyznaczamy takie następne ułożenia Xe = (x1,e , . . . , xr,e , . . . , xR,e ), że prawdopodobieństwa P (Xe , Λ) nie rosną wraz z rosnącymi liczbami ułożeń e. Ostatnie rozważane ułożenie ma numer Ξ(Λ) wyrażony wzorem 4.4, gdzie parametr ξ pomaga wpłynąć na precyzję analizy: mniejsze wartości ξ przekładają się na większą liczbę rozważanych ułożeń pakietów. Ξ(Λ) = max{e ∈ N| P (Xe , Λ) > ξ} P (X1 , Λ) (4.4) W trakcie wyznaczania najbardziej prawdopodobnych ułożeń pakietów będziemy używać funkcji1 Γ(γ, λ), gdzie γ jest indeksem γ-tej najbardziej prawdopodobnej wartości zmiennej losowej o rozkładzie Poissona ze średnią częstością λ. Dlatego Γ(1, λ) jest modą, 1 Zaimplementowano w programie OPUS jako funkcja poisson::get_ith_max, strona 144. 56 ROZDZIAŁ 4. UOGÓLNIENIE METODY a nierówność 4.5 jest spełniona. f (Γ(γ, λ), λ) f (Γ(γ + 1, λ), λ) dla γ = 1, 2, . . . (4.5) Oprócz opisania ułożenia e przez Xe , wprowadzamy wektor Ye = (γ1,e , . . . , γr,e , . . . , γR,e ), gdzie γr,e jest indeksem najbardziej prawdopodobnej liczby pakietów w grupie r. Mając ułożenie opisane wektorem Ye , możemy uzyskać wektor Xe = (Γ(γ1,e , λ1 ), . . . , Γ(γr,e , λr ), . . . , Γ(γR,e , λR )). Do poszukiwania sekwencji najbardziej prawdopodobnych ułożeń pakietów używamy kolejki priorytetowej wektorów Ye , gdzie sortowanie kolejki odbywa się po prawdopodobieństwie ułożenia pakietów. Pierwszym elementem wstawianym do kolejki jest wektor Y1 = (1, . . . , 1), który jest najbardziej prawdopodobny, ponieważ jest opisany modami. Znalezienie następnego najbardziej prawdopodobnego ułożenia następuje w dwóch krokach. Najpierw pobieramy z początku kolejki wektor, który jest następnym najbardziej prawdopodobnym ułożeniem pakietów Ye , a następnie wstawiamy do kolejki dokładnie R wektorów, które różnią się od Ye tylko jednym elementem zwiększonym o jeden: (γ1,e + 1, γ2,e , . . . , γR,e ), (γ1,e , γ2,e + 1, . . . , γR,e ), . . . , (γ1,e , γ2,e , . . . , γR,e + 1). Pierwszym pobranym wektorem jest zawsze Y1 = (1, 1, ..., 1), drugim pobranym wektorem Y2 (czyli drugim najbardziej prawdopodobnym ułożeniem) jest jeden z (2, 1, ..., 1), (1, 2, ..., 1), . . . , (1, 1, ..., 2) w zależności od tego, który z nich opisuje bardziej prawdopodobne ułożenie pakietów. Ten proces jest powtarzany Ξ(Λ) razy w celu otrzymania Ξ(Λ) wektorów Ye opisujących najbardziej prawdopodobne ułożenia pakietów. Przykład2 . Mamy dane Λ = (3, 11) i ξ = 10−2 . Najbardziej prawdopodobne ułożenie to X1 = (3, 10) z prawdopodobieństwem P (X1 ) = 0.02675, natomiast ostatnie rozważane ułożenie ma numer 157: X157 = (2, 22) o prawdopodobieństwie P (X157 ) = 0.00027, ponieważ Ξ(Λ) = 157. Tabela 4.2 podaje siedem najbardziej prawdopodobnych ułożeń, gdzie każdy wiersz zawiera informacje na temat jednego ułożenia pakietów numer e: wektor Xe , wektor Ye , zawartość kolejki przed pobraniem ułożenia numer e i uzupełnieniem kolejki, i na końcu prawdopodobieństwo P (Xe ) ułożenia e. 4.3.3 Ocena węzła Celem oceny wydajności węzła jest obliczenie dla danego węzła i średnich częstości dopuszczania nowych pakietów do sieci i prawdopodobieństw wysyłania pakietów przez wyjściowe światłowody. Danymi wejściowymi analizy są średnie częstości pakietów w tranzycie, 2 Zaimplementowany w programie OPUS jako test/test_arr_queue.cc. 4.3 Analiza 57 e 1 2 3 4 5 6 7 Xe (3, 10) (3, 11) (2, 10) (2, 11) (3, 12) (2, 12) (3, 9) Ye (1, 1) (1, 2) (2, 1) (2, 2) (1, 3) (2, 3) (1, 4) Kolejka wektorów Y (1, 1) (1, 2), (2, 1) (2, 1), (2, 2), (1, 3) (2, 2), (1, 3), (3, 1) (1, 3), (2, 3), (3, 1), (3, 2) (2, 3), (1, 4), (3, 1), (3, 2) (1, 4), (2, 4), (3, 1), (3, 2), (3, 3) P (Xe ) 0.02675 0.02675 0.02675 0.02675 0.02452 0.02452 0.02431 Tabela 4.2: Siedem najbardziej prawdopodobnych układów pakietów dla Λ = (3, 11). średnie częstości pakietów żądających dostępu oraz zasady działania algorytmów kontroli dostępu i rutingu. Na przykład dla węzła 1 sieci pokazanej na rysunku 4.3 chcemy uzyskać średnią częstość dopuszczonych pakietów należących do żądania (1, 4) i prawdopodobieństwo wysłania tych pakietów przez światłowód wyjściowy do węzła 2. W podrozdziale 4.3.5 ocena wydajności węzła jest przeprowadzana dla wszystkich węzłów. Ten podrozdział omawia w sposób ulepszony i rozszerzony metodę opublikowaną w [138]. 4.3.3.1 Analiza kontroli dostępu ′ Poszukujemy średnich częstości βi,n pakietów dopuszczonych w węźle i, które podróżują do węzła n. Danymi wejściowymi są średnie częstości βi,n pakietów żądających dostępu, średnia częstość αi′ pakietów w tranzycie i liczba wi długości fal na wyjściach węzła i. Wartość αi′ wyznaczamy w podrozdziale 4.3.5, gdzie badamy całą sieć. Używamy algorytmu zaprezentowanego w poprzednim podrozdziale celem uzyskania sekwencji najbardziej prawdopodobnych ułożeń pakietów. Ułożenie pakietu numer e przy kontroli dostępu dla węzła i jest oznaczane przez Xadm,i,e = (ai,e , bi,e ), gdzie ai,e jest liczbą pakietów w tranzycie, a bi,e jest liczbą pakietów żądających dostępu. Średnie częstości dla tych dwóch grup są oznaczane przez Λarr,i = (αi′ , βi ). Dla ułożenia Xadm,i,e pozostała pojemność wyjściowa wynosi gi,e = max(wi − ai,e , 0), a liczba dopuszczonych pakietów wynosi b′i,e = min(gi,e , bi,e ). Wyprowadzimy wzór na średnie prawdopodobieństwo ρi dopuszczenia pakietu, które odnosi się do wszystkich pakietów niezależnie od ich węzłów przeznaczenia, ponieważ pakiety są traktowane sprawiedliwie. Jest pewna liczba Z pakietów, które nadchodzą do węzła z sieci dostępowych i żądają dopuszczenia do sieci szkieletowej. Losowo wybieramy jeden z tych pakietów i oznaczamy go przez z. Prawdopodobieństwo ρi jest warunkowe: jest to prawdopodobieństwo tego, że pakiet z jest dopuszczony pod warunkiem, że faktycznie żąda dostępu. Prawdopodobieństwo to jest wyrażone wzorem 4.6, gdzie Ai jest zdarzeniem, 58 ROZDZIAŁ 4. UOGÓLNIENIE METODY że pakiet z jest dopuszczony, a zdarzenie Bi , że pakiet z żąda dostępu do sieci. P (Ai ∩ Bi ) P (Bi ) ρi = P (Ai |Bi ) = (4.6) P (Ai ∩Bi ) jest prawdopodobieństwem tego, że pakiet z żąda dostępu i że jest dopuszczony do sieci, co wyrażone jest wzorem 4.7, gdzie Bi,e jest zdarzeniem, że układ e ma miejsce i zawiera pakiet z, oraz gdzie Di,e jest zdarzeniem, że pakiet z jest dopuszczony jako część układu e. Ξ(Λadm,i ) X P (Ai ∩ Bi ) = (4.7) P (Bi,e )P (Di,e ) e=1 Prawdopodobieństwo zdarzenia Bi,e jest wyrażone równaniem 4.8, gdzie Ei,e jest zdarzeniem, że pakiet z jest częścią układu e. (4.8) P (Bi,e ) = P (Xadm,i,e )P (Ei,e ) b Prawdopodobieństwo zdarzenia Di,e jest wyrażone wzorem 4.9, gdzie Cb′i,e jest liczbą komi,e binacji b′i,e elementów ze zbioru bi,e elementów. b P (Di,e ) = −1 Cb′i,e−1 i,e b Cb′i,e = b′i,e bi,e (4.9) i,e Prawdopodobieństwo zdarzenia Ei,e jest stosunkiem liczby kombinacji zawierających pakiet z do liczby wszystkich kombinacji, co wyrażone jest wzorem 4.10. P (Ei,e ) = CbZ−1 i,e −1 CbZi,e = bi,e Z (4.10) Prawdopodobieństwo zdarzenia Bi jest wyrażone wzorem 4.11. Ξ(Λadm,i ) P (Bi ) = X P (Bi,e ) (4.11) e=1 Ze wzorów od 4.6 do 4.11 otrzymujemy wzór 4.12, czyli finalne równanie na ρi , które nie zależy od Z. ρi = PΞ(Λadm,i ) e=1 PΞ(Λadm,i ) e=1 P (Xadm,i,e )b′i,e P (Xadm,i,e )bi,e (4.12) 4.3 Analiza 59 prawdopodobieństwo 0.12 analiza symulacja 0.1 0.08 0.06 0.04 0.02 0 0 10 20 liczba pakietów 30 Rysunek 4.4: Wyznaczone analitycznie i symulacyjnie rozkłady prawdopodobieństwa liczby pakietów w tranzycie w węźle 2. ′ Mając ρi i βi,n , wyznaczamy średnie częstości βi,n dopuszczonych pakietów według wzoru 4.13. ′ βi,n = ρi βi,n (4.13) Przykład3 . Poddaliśmy symulacji sieć pokazaną na rysunku 4.3, którą obciążyliśmy żądaniami podanymi w tabeli 4.1. Przyjęliśmy η = 5, δ = 1000 i ξ = 10−2 . W tym przykładzie koncentrujemy się na węźle 2. Rozkład prawdopodobieństwa liczby pakietów w tranzycie w węźle 2 uzyskany symulacyjnie, którego średnia wynosi 14.7, jest pokazany na rysunku 4.4 jako „symulacja”. Drugim rozkładem prawdopodobieństwa pokazanym na rysunku jako „analiza” jest rozkład Poissona o tej samej wartości oczekiwanej 14.7, który to rozkład jest używany w analizie. W tym przykładzie liczba pakietów w tranzycie może być przybliżona rozkładem Poissona. Stosując symulację możemy się dowiedzieć, że średnia częstość dopuszczonych pakietów w węźle 2 wynosi 0.190 dla pakietów podróżujących do węzła 1, 0.471 do węzła 3, 0.849 do ′ węzła 4, 1.980 do węzła 5, i 1.124 do węzła 6, podczas gdy analiza wyznaczyła β2,1 = 0.185, ′ ′ ′ ′ β2,3 = 0.463, β2,4 = 0.834, β2,5 = 1.946 i β2,6 = 1.112. Na rysunku 4.5 są pokazane rozkłady prawdopodobieństwa uzyskane symulacyjnie i analitycznie określające liczbę dopuszczonych pakietów w węźle 2, które podróżują do węzła 5. 3 Zaimplementowany w programie OPUS jako test/test_adm.cc. 60 ROZDZIAŁ 4. UOGÓLNIENIE METODY prawdopodobieństwo 0.3 analiza symulacja 0.25 0.2 0.15 0.1 0.05 0 0 1 2 3 4 5 liczba pakietów 6 7 8 Rysunek 4.5: Wyznaczone analitycznie i symulacyjnie rozkłady prawdopodobieństwa liczby dopuszczonych pakietów w węźle 2 podróżujących do węzła 5. 4.3.3.2 Analiza rutingu W tym podrozdziale wyprowadzimy dla węzła i średnie prawdopodobieństwa ϕi,j,n wysłania pakietów przez światłowody wyjściowe (i, j), których węzłem przeznaczenia jest węzeł n, pod warunkiem, że pakiety są w węźle i. Danymi wejściowymi analizy są średnie częstości µi,n pakietów żądających rutingu w węźle i, których węzłem przeznaczenia jest węzeł n. Średnie prawdopodobieństwa ϕi,j,n są używane w podrozdziale 4.3.5 do obliczenia średnich częstości pakietów opuszczających węzły światłowodami (i, j). Używając tych prawdopoP ′ dobieństw możemy obliczyć średnią częstość µ′i = N n=1 µi,n pakietów wysyłanych z węzła P i, gdzie µ′i,n = µi,n N j=1 ϕi,j,n . Prawdopodobieństwo utraty pakietu skierowanego do węzła P przeznaczenia n wynosi 1 − N j=1 ϕi,j,n . Używamy tej samej metody, co w przypadku analizy kontroli dostępu: wyliczamy najbardziej prawdopodobne układy pakietów żądających rutingu, a następnie dla każdego układu wyznaczamy prawdopodobieństwa rutingu, które potem uśredniamy dla wszystkich rozważonych układów uzyskując prawdopodobieństwo ϕi,j,n . Układ pakietów numer e dla węzła i oznaczamy przez Xrou,i,e = (xi,1,e , . . . , xi,n,e , . . . , xi,N,e ), gdzie xi,n,e jest liczbą pakietów z układu e żądających rutingu w węźle i na drodze tych pakietów do węzła przeznaczenia n. Dyskretna zmienna losowa xi,n,e ma rozkład Poissona ze średnią częstością µi,n daną wektorem Λrou,i = (µi,1 , . . . , µi,N ). W sieci jest pewna liczba Zn pakietów podróżujących do węzła n. Jeden z tych pakietów 4.3 Analiza 61 wybieramy losowo i oznaczamy jako zn . Średnie prawdopodobieństwo ϕi,j,n jest warunkowe, jak wyrażono równaniem 4.14, gdzie Hi,j,n jest zdarzeniem, że pakiet zn jest wysłany z węzła i do węzła j, natomiast Li,n jest zdarzeniem, że pakiet zn jest w węźle i. ϕi,j,n = P (Hi,j,n |Li,n ) = P (Hi,j,n ∩ Li,n ) P (Li,n ) (4.14) Prawdopodobieństwo tego, że pakiet zn jest obecny w węźle i i będzie wysłany do węzła j jest sumą po wszystkich rozważonych układach, co wyrażone jest wzorem 4.15, gdzie ϕi,j,n,e jest prawdopodobieństwem, że pakiet zn będzie wysłany do węzła j pod warunkiem, że jest on w węźle i i wchodzi w skład układu e. Sposób uzyskania prawdopodobieństwa ϕi,j,n,e omówimy później. Ξ(Λrou,i ) P (Hi,j,n ∩ Li,n ) = X P (Li,n,e )ϕi,j,n,e (4.15) e=1 Li,n,e jest zdarzeniem, że pakiet zn jest obecny w węźle i, oraz że wchodzi w skład układu e. Prawdopodobieństwo tego zdarzenia jest wyrażone wzorem 4.16, gdzie Ri,n,e jest zdarzeniem, że pakiet zn wchodzi w skład układu e. P (Li,n,e ) = P (Xrou,i,e )P (Ri,n,e ) (4.16) n jest liczbą Prawdopodobieństwo zdarzenia Ri,n,e wyrażone jest wzorem 4.17, gdzie CxZi,n,e kombinacji xi,n,e elementów ze zbioru Zn elementów. Warto zauważyć, że układ e nie ma pakietów z węzłem docelowym n, czyli xi,n,e wynosi zero i prawdopodobieństwo P (Ri,n,e ) wynosi zero, tak więc w równaniu 4.15 możemy sumować po wszystkich układach niezależnie od tego, czy posiadają one pakiet zn . P (Ri,n,e ) = n −1 CxZi,n,e xi,n,e −1 = n CxZi,n,e Zn (4.17) Końcowe równanie na licznik ułamka we wzorze 4.14 jest wyrażone równaniem 4.18, które jest wyprowadzone ze wzorów 4.15, 4.16 i 4.17. 1 P (Hi,j,n ∩ Li,n ) = Zn Ξ(Λrou,i ) X P (Xrou,i,e )xi,n,e ϕi,j,n,e (4.18) e=1 Teraz koncentrujemy się na wyprowadzeniu wzoru na mianownik we wzorze 4.14. Zdarzenia Li,n składają się ze wzajemnie się wykluczających zdarzeń Li,n,e , i dlatego prawdopodobieństwo zdarzenia Li,n jest sumą prawdopodobieństw zdarzeń Li,n,e , jak wyrażono 62 ROZDZIAŁ 4. UOGÓLNIENIE METODY wzorem 4.19. Ξ(Λrou,i ) P (Li,n ) = X P (Li,n,e ) (4.19) e=1 Ze wzorów 4.16, 4.17 i 4.19 wynika, że prawdopodobieństwo P (Li,n ) jest wyrażone wzorem 4.20. P (Li,n ) = 1 Zn Ξ(Λrou,i ) X P (Xrou,i,e )xi,n,e (4.20) e=1 Używając wzorów 4.14, 4.18 i 4.20, uzyskujemy końcowe równanie na prawdopodobieństwo ϕi,j,n wyrażone wzorem 4.21, które jest niezależne od sposobu działania algorytmu rutingu. ϕi,j,n = PΞ(Λrou,i ) e=1 P (Xrou,i,e )xi,n,e ϕi,j,n,e PΞ(Λrou,i ) e=1 P (Xrou,i,e )xi,n,e (4.21) Prawdopodobieństwo ϕi,j,n,e we wzorze 4.21 zależy od algorytmu rutingu i dla przyjętego algorytmu jest wyrażone wzorem 4.22, gdzie x′i,j,n,e jest liczbą pakietów w układzie Xrou,i,e , które są wysyłane do węzła j na drodze do węzła przeznaczenia n. Dla każdego układu Xrou,i,e jest co najwyżej N × N liczb x′i,j,n,e , które grupujemy w macierz x′i,e = (x′i,j,n,e ) o rozmiarach N × N wyznaczaną przez algorytm 2, gdzie indeksy j i n są zmienne, natomiast indeksy i i e są stałe. Funkcja pop(X) zwraca pierwszy pakiet do wysłania w układzie X zgodnie z zasadami opisanymi w podrozdziale 4.2 i usuwa ten pakiet ′ z układu. W zależności od liczby pozostałych długości fal światła W′ = (wi,j ) w światło′ wodzie wyjściowym (i, j), funkcja output(p, W ) albo zwraca węzeł j, do którego pakiet p powinien być wysłany (jest to węzeł, do którego prowadzi preferowany światłowód wyjściowy lub węzeł, do którego pakiet jest odbity) albo zwraca 0, jeżeli nie ma dostępnych światłowodów wyjściowych. Funkcja dest(p) zwraca węzeł docelowy pakietu p. ϕi,j,n,e = x′i,j,n,e xi,e (4.22) Przykład4 . Poddaliśmy symulacji sieć pokazaną na rysunku 4.3 przy obciążeniu żądaniami z tabeli 4.1 i przyjęliśmy η = 5, δ = 1000 i ξ = 10−2 . W tym przykładzie koncentrujemy się na węźle 2. Tabela 4.3 podaje atrybuty pakietów w węźle 2 w zależności od ich węzłów przeznaczenia. Uzyskany rozkład prawdopodobieństwa liczby pakietów skierowanych do węzła 3, które żądają rutingu w węźle 2 jest pokazany jako „symulacja” na rysunku 4.6. Wartością śred4 Zaimplementowany w programie OPUS jako test/test_rou.cc. 4.3 Analiza 63 Algorytm 2 Mając dane i, e, W i Xrou,i,e , oblicz x′i,e . X ← Xrou,i,e ′ W′ = (wi,j )←W x′i,e = (x′i,j,n,e ) ← 0 dopóki X nie jest puste wykonaj p ← pop(X) j ← output(p, W′ ) jeżeli j 6= 0 to wtedy n ← dest(p) x′i,j,n,e ← x′i,j,n,e + 1 ′ ′ wi,j ← wi,j −1 koniec jeżeli koniec dopóki zwróć x′i,e Węzeł docelowy 1 3 4 5 6 Klasa 2 2 3 1 3 Odległość 100km 200km 280km 40km 300km Żądane światłowody wyjściowe (2, 1), (2, 5) (2, 3), (2, 5) (2, 3), (2, 5), (2, 1) (2, 5) (2, 3), (2, 5), (2, 1) Tabela 4.3: Własności pakietów w węźle 2. nią tego rozkładu jest 2.368. Drugi rozkład prawdopodobieństwa na tym rysunku jest rozkładem Poissona o tej samej wartości średniej µ2,3 = 2.368, który używamy w naszej analizie do modelowania rozkładu prawdopodobieństwa tych pakietów. Tabela 4.4 podaje prawdopodobieństwa rutingu pakietów skierowanych do węzła 3 przez światłowody wyjściowe węzła 2 pod warunkiem, że pakiety są w węźle 2. Dla każdego światłowodu podajemy dwa prawdopodobieństwa: jedno uzyskane symulacyjnie, drugie uzyskane analitycznie. Wyniki analityczne zostały uzyskane przy użyciu metody zaprezentowanej w tym podrozdziale dla średnich częstości pakietów żądających rutingu µi,n , które równają się średnim częstościom zmierzonym podczas symulacji: µ2,1 = 1.939, µ2,3 = 2.368, µ2,4 = 3.155, µ2,5 = 7.902 i µ2,6 = 3.933. 4.3.4 Analiza żądania Definiujemy wektor wizyt Pa,b,v , który jest wektorem wierszowym rozmiaru N opisany wzorem 4.23, gdzie wielomian pa,b,v,n (x) opisuje wizyty numer v, które pakiety żądania (a, b) składają węzłowi n. 64 ROZDZIAŁ 4. UOGÓLNIENIE METODY prawdopodobieństwo 0.3 analiza symulacja 0.25 0.2 0.15 0.1 0.05 0 0 1 2 3 4 5 6 liczba pakietów 7 8 9 Rysunek 4.6: Wyznaczone analitycznie i symulacyjnie rozkłady prawdopodobieństwa liczby pakietów podróżujących do węzła 3, które żądają rutingu w węźle 2. Węzeł docelowy 1 3 4 5 6 2→1 ana. sym. 1.0 1.0 0.003 0.003 1.0 0.996 0.269 0.303 0.0 0.0 2→3 ana. sym. 0.0 0.0 0.448 0.392 0.0 0.0 0.001 0.002 0.848 0.818 2→5 ana. sym. 0.0 0.0 0.549 0.521 0.0 0.004 0.702 0.666 0.152 0.176 Tabela 4.4: Uzyskane analitycznie i symulacyjnie prawdopodobieństwa rutingu w węźle 2 w zależności od węzła docelowego i światłowodu wyjściowego. 4.3 Analiza 65 Pa,b,v = [pa,b,v,1 (x), . . . , pa,b,v,n (x), . . . , pa,b,v,N (x)] (4.23) Zaczynamy obliczenia od wektora Pa,b,1 , który opisuje, gdzie pakiety przebywają, kiedy są dopuszczone do sieci. Ponieważ pakiety żądania (a, b) są dopuszczane w węźle a, to wszystkie elementy wektora Pa,b,1 są zerowe oprócz elementu pa,b,1,a (x), który jest równy ′ średniej częstości dopuszczonych pakietów βa,b . Uzyskujemy kolejne wektory wizyt Pa,b,v tylko dla v ¬ η + 1, ponieważ pakiety nie mogą wykonać więcej niż η przejść i dlatego wektory wizyt dla v > η + 1 są zerowe. Wektory Pa,b,v uzyskujemy mnożąc już znane wektory Pa,b,v−1 przez macierz przejść Tb , jak opisano wzorem 4.24. Pa,b,v = Pa,b,v−1 Tb for v > 1 (4.24) Macierz przejść5 o rozmiarach N × N opisuje przejścia pakietów przez światłowody. Żądania, które mają ten sam węzeł przeznaczenia b, czyli żądania (a, b) dla dowolnego węzła źródłowego a, posiadają własną macierz przejść Tb = (ti,j,b ), ponieważ zgodnie z przyjętym algorytmem rutingu pakiety z tym samym węzłem docelowym podróżują w ten sam sposób. Elementy ti,j,b są wyrażone wzorem 4.25, gdzie ϕi,j,b jest prawdopodobieństwem (wyprowadzonym w podrozdziale 4.3.3) tego, że pakiet podróżujący do węzła b przejdzie przez światłowód (i, j) długości di,j pod warunkiem, że pakiet jest w węźle i. Elementy ti,j,b są zerowe (niezależnie od węzła przeznaczenia b), jeżeli nie ma światłowodu pomiędzy węzłami i oraz j, co oznacza, że liczba niezerowych elementów równa się co najwyżej liczbie światłowodów w sieci. Dlatego jest N macierzy przejść Tb , jedna dla każdego z węzłów przeznaczenia b. ti,j,b = ϕi,j,b · xdi,j (4.25) Wektory wizyt opisują, które węzły są odwiedzane przez pakiety, ale nie niosą one informacji na temat użytych światłowodów. Dlatego definiujemy macierze skoków Qa,b,h = (qa,b,h,i,j (x)), gdzie wielomian qa,b,h,i,j (x) opisuje pakiety żądania (a, b), które podczas skoku numer h przechodzą przez światłowód (i, j). Wielomian qa,b,h,i,j (x) jest uzyskiwany przez pomnożenie wielomianu ti,j,b opisującego przejście przez światłowód (i, j) przez wielomian opisujący pakiety przebywające w węźle i, jak wyrażono wzorem 4.26. qa,b,h,i,j (x) = ti,j,b · pa,b,h,i (x) 5 Zaimplementowana w programie OPUS jako typ trans_matrix, strona 111. (4.26) 66 ROZDZIAŁ 4. UOGÓLNIENIE METODY Numer wizyty 1 2 3 Węzeł 5 1 2 1 Wielomian p5,1,1,5 (x) = 0.2 p5,1,2,1 (x) = 0.01x210 p5,1,2,2 (x) = 0.19x40 p5,1,3,1 (x) = 0.19x140 Tabela 4.5: Opis wizyt pakietów dla żądania (5, 1). Numer skoku 1 2 Światłowód (5, 1) (5, 2) (2, 1) Wielomian q5,1,1,5,1 (x) = 0.01x210 q5,1,1,5,2 (x) = 0.19x40 q5,1,2,2,1 (x) = 0.19x140 Tabela 4.6: Wielomiany qa,b,h,i,j (x) dla żądania (5, 1). Przykład. Macierz przejść T1 dla pakietów podróżujących do węzła 1 w sieci pokazanej na rysunku 4.3 jest opisana wzorem 4.27, gdzie liczby zostały zaokrąglone. Została ona uzyskana analitycznie przy obciążeniu podanym w tabeli 4.1 z parametrami η = 5, δ = 1000 and ξ = 10−2 . 0 x100 0 T1 = 0 0.05x210 0 0 0 x200 0 0.95x40 0 0 0 0 x80 0 x100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (4.27) Pakiety żądania (5, 1) z macierzy ruchu podanego w tabeli 4.1 są dopuszczone ze średnią częstością 0.2, więc dlatego P5,1,1 = (0, 0, 0, 0, 0.2, 0). Mając macierz T1 , możemy uzyskać kolejne wektory wizyt P5,1,2 = P5,1,1 T1 = (0.01x210 , 0.19x40 , 0, 0, 0, 0), P5,1,3 = P5,1,2 T1 = (0.19x140 , 0, 0, 0, 0, 0). Te same informacje są przedstawione w bardziej czytelnej postaci w tabeli 4.5. Wielomiany qa,b,h,i,j (x) są wyrażone w tabeli 4.6. Podczas pierwszego skoku pakiety przechodzą przez światłowód (5, 1) ze średnią częstością 0.01, a przez światłowód (5, 2) ze średnią częstością 0.19. Większość pakietów przechodzi przez światłowód (2, 1) ze średnią częstością 0.19 pokonując w sumie 140km. 4.3 Analiza 4.3.5 67 Analiza całej sieci W tym podrozdziale używamy części analitycznych przedstawionych powyżej (wielomianów, analizy kontroli dostępu, analizy rutingu i analizy żądań) celem oceny całej sieci6 . Analiza sieci ma daną macierz obciążenia B, macierz odległości D i macierz liczby długości fal światła W. Rozwiązanie jest złożone z wektorów wizyt i macierzy skoków, na podstawie których możemy wyznaczyć inne metryki, takie jak obciążenie światłowodów. ′ W celu obliczenia wektorów wizyt i macierzy skoków potrzebujemy średnich częstości βi,n dopuszczonych pakietów i prawdopodobieństw rutingu ϕi,j,n , które to z kolei zależą od średnich częstości αi,n pakietów nadchodzących od sąsiednich węzłów. Problem w tym, że do obliczenia średnich częstości αi,n potrzebujemy macierzy skoków Qa,b,h . Problem związanych Qa,b,h i αi,n rozwiązujemy w S iteracjach, gdzie w każdej iteracji s uzyskujemy wektory wizyt i macierze skoków na podstawie średnich częstości αi,n uzyskanych w poprzedniej iteracji. Zmienne, wektory i macierze iteracji s mają dodany indeks (s) s. Dla przykładu, Qa,b,h jest macierzą skoków w iteracji s. (s) (s−1) W iteracji s wyznaczamy średnie częstości αi,n , używając macierzy skoków Qa,b,h z poprzedniej iteracji, jak wyrażono wzorem 4.28. Dla iteracji s = 1 przyjmujemy, że żaden (0) pakiet nie nadchodzi od sąsiadów i dlatego macierze skoków Qa,b,h są zerowe. Średnia (s) częstość αi,n pakietów nadchodzących do węzła i oraz skierowanych do węzła n jest sumą średnich częstości qa,n,h,j,i (x = 1) pakietów nadchodzących przez światłowody wejściowe, jak wyrażono wzorem 4.28. We wzorze 4.28 wyznaczamy wartości wielomianów dla x = 1, aby uzyskać wartości średnie niezależnie od odległości przebytej przez pakiety. (s) αi,n = η X N X N X a=1 h=1 j=1 qa,n,h,j,i (x = 1)(s−1) for s 1 (4.28) W iteracji s wykonujemy następujące działania. Używamy wzoru 4.28 dla każdej pary wę(s) złów i oraz n, aby uzyskać A(s) = (αi,n ). Następnie obliczamy macierz A′(s) ze średnimi częstościami pakietów w tranzycie na podstawie macierzy A(s) , jak opisano w podrozdziale 4.2. Mając macierz A′(s) , macierz ruchu B i macierz liczby długości fal światła W, obliczamy macierz B′(s) ze średnimi częstościami dopuszczonych pakietów, jak opisano w podrozdziale 4.3.3.1. Następnie obliczamy macierz U(s) = A′(s) + B′(s) ze średnimi częstościami pakietów żądających rutingu. Macierze U(s) i W są danymi wejściowymi do wyznaczenia prawdopodobieństw rutingu ϕi,j,n , jak opisano w podrozdziale 4.3.3.2. Używając prawdopodobieństw rutingu ϕi,j,n i macierzy odległości D, wyznaczamy macierze (s) (s) (s) przejść Tb . Wektory wizyt Pa,b,h i macierze skoków Qa,b,h są obliczane na podstawie ma(s) cierzy B′(s) i Tb , jak opisano w podrozdziale 4.3.4. Algorytm 3 podsumowuje wymagane 6 Zaimplementowane w programie OPUS jako funkcja ana_solution, strona 100. 68 ROZDZIAŁ 4. UOGÓLNIENIE METODY (S) (S) Algorytm 3 Mając dane B, D i W, oblicz Pa,b,v i Qa,b,h . (0) Qa,b,h = 0 dla s od 1 do S wykonaj (s−1) A(s) = f (Qa,b,h ) A′(s) = f (A(s) ) B′(s) = f (A′(s) , B, W) U(s) = A′(s) + B′(s) (s) ϕi,j,n = f (U(s) , wi ) (s) Tb = f (ϕi,j,b , D) (s) (s) (s) Pa,b,h = Pa,b,h Tb (s) (s) Qa,b,h = f (B′(s) , ϕi,j,n ) koniec dla (S) (S) zwróć Pa,b,v , Qa,b,h obliczenia. (s) Obciążenie ψi,j światłowodu (i, j) definiujemy jako stosunek średniej częstości pakietów przechodzących przez światłowód do liczby długości fal światła w tym światłowodzie, jak wyrażono równaniem 4.29. (s) ψi,j 4.4 = PN a=1 PN b=1 Pη h=1 qa,b,h,i,j (x (s) wi,j = 1)(s) (4.29) Przykładowe wyniki W tym podrozdziale przedstawiamy przykładowe wyniki analitycznie i symulacyjne dla Polskiej Akademickiej Sieci PIONIER o topologii pokazanej na rysunku 4.7 i macierzy ruchu danej tabelą 4.8, gdzie liczba żądań wynosi 71. Dane dotyczące sieci i obciążenia zostały pobrane ze strony operatora [146] o godzinie 23:00 dnia 7 lutego 2007 roku, na której to stronie były dostępne dane tylko dla zewnętrznych węzłów GEANT2 i TPNet. Ponieważ obciążenie sieci było bardzo małe, pomnożyliśmy je przez dziesięć. Numery węzłów są przedstawione w tabeli 4.7. Na potrzeby analizy szybkości transmisji żądań z tabeli 4.8 są zamieniane na średnią liczbę pakietów na takt zegara. Przyjęliśmy, że pakiet optyczny zawiera 10k bitów użytkownika (ang. payload) i że zegar sieci ma milion taktów na sekundę. Na przykład, żądanie (Szczecin, TPNet) o szybkości 1.114Gb/s przekłada się na 111.4k pakietów na sekundę i średnią częstość 0.1114 pakietów na takt zegara. Przyjęliśmy η = 20 i δ = 1500, ponieważ średnica sieci (czyli najdłuższa z najkrótszych ścieżek) ma 10 skoków i długość 1100km. To oznacza, że pakiety mogą wykonać co najwy- 4.4 Przykładowe wyniki 69 Gdańsk Koszalin Olsztyn Szczecin Białystok Bydgoszcz Toruń TPNet Poznań GEANT2 Warszawa Łódź Zielona Góra Puławy Radom Wrocław Częstochowa Lublin Opole Kielce Gliwice Kraków Rzeszów Węzeł sieci Bielsko-Biała 10Gb/s x 2 10Gb/s Rysunek 4.7: Uproszczona topologia sieci PIONIER. Numer 1 2 3 4 5 6 7 8 9 10 11 12 Węzeł Białystok Bielsko-Biała Bydgoszcz Częstochowa Gdańsk Gliwice Kielce Koszalin Kraków Łódź Lublin Olsztyn Numer 13 14 15 16 17 18 19 20 21 22 23 24 Węzeł Opole Poznań Puławy Radom Rzeszów Szczecin Toruń Warszawa Wrocław Zielona Góra GEANT2 TPNet Tabela 4.7: Numery węzłów dla sieci pokazanej na rysunku 4.7. 70 ROZDZIAŁ 4. UOGÓLNIENIE METODY Węzeł sieci PIONIER Białystok Bydgoszcz Częstochowa Gdańsk Gliwice Kielce Koszalin Kraków Łódź Lublin Olsztyn Opole Poznań Puławy Radom Rzeszów Szczecin Toruń Warszawa Wrocław Zielona Góra Do TPNet 1114.0 443.2 77.7 365.3 9.2 75.2 161.7 331.0 0.0 582.8 67.9 424.4 328.8 3.8 45.8 62.6 2412.8 250.3 0.0 974.5 55.5 Ruch w Mb/s Od TPNet Do GEANT2 159.1 8.8 369.0 5.2 46.9 6.7 0.0 110.7 0.0 72.1 30.3 3.3 34.9 43.4 105.4 31.0 0.0 15.6 112.0 18.9 41.2 0.0 46.9 0.2 113.6 19.9 0.0 0.0 30.5 0.0 21.8 7.4 1053.1 12.8 86.7 6.7 0.0 0.1 280.5 73.6 37.9 6.7 Od GEANT2 30.4 49.6 30.7 96.8 41.7 4.3 9.6 53.3 119.7 30.2 0.0 2.6 62.7 0.0 4.3 3.3 37.3 10.2 0.1 120.5 0.0 Tabela 4.8: Macierz ruchu dla sieci pokazanej na rysunku 4.7. żej 20 skoków i podróżować co najwyżej 1500km. Średnica sieci przechodzi przez Rzeszów, Kraków, Bielsko-Białą, Gliwice, Częstochowę, Łódź, Poznań, Bydgoszcz, Toruń, Gdańsk i Olsztyn. Jako wynik otrzymujemy średnie częstości, z którymi pakiety przechodzą przez światłowody. Na przykład, pakiety w węźle Szczecin podróżujące do węzła TPNet żądają dostępu ze średnią częstością 2412Mb/s. Symulacja pokazuje, że będą one dopuszczone ze średnią częstością 2376Mb/s, natomiast analiza wyznacza 1990Mb/s. Co więcej, poprzez analizę dowiadujemy się, że pakiety dotrą do węzła przeznaczenia po przebyciu 600km z częstością 1123Mb/s. Tabela 4.9 pokazuje obciążenie światłowodów uzyskane analitycznie i symulacyjnie. Wyniki symulacyjne są podane w postaci: x̄±δ, gdzie x̄ jest średnią obciążeń z n = 100 badań symulacyjnych, przedział ufności 99% określony jest przez δ wyrażoną wzorem 4.30, a σ jest odchyleniem standardowym wyrażonym wzorem 4.31. Większość światłowodów jest mało obciążona, ale niektóre z nich są bardzo obciążone, jak na przykład światłowód (Warszawa, TPNet), którego obciążenie wynosi około 70%. Średnie obciążenie światłowodów wyznaczone przez analizę wynosi 6.38%, natomiast przez symulację 7.58%. 4.5 Podsumowanie Para światłowodów (Białystok, Warszawa) (Bielsko-Biała, Gliwice) (Bielsko-Biała, Kraków) (Bydgoszcz, Poznań) (Bydgoszcz, Toruń) (Częstochowa, Gliwice) (Częstochowa, Łódź) (Gdańsk, Koszalin) (Gdańsk, Olsztyn) (Gdańsk, Toruń) (Gliwice, Opole) (Kielce, Kraków) (Kielce, Radom) (Koszalin, Szczecin) (Kraków, Rzeszów) (Łódź, Poznań) (Łódź, Warszawa) (Lublin, Puławy) (Lublin, Rzeszów) (Opole, Wrocław) (Poznań, Szczecin) (Poznań, Warszawa) (Poznań, Zielona Góra) (Poznań, GEANT2) (Puławy, Radom) (Radom, Warszawa) (Warszawa, TPNet) (Wrocław, Zielona Góra) 71 Normalny kierunek Analiza Symulacja 7.75% 12.6023 ± 0.0015% 0.97% 1.0729 ± 0.0003% 0.31% 0.2786 ± 0.0001% 6.04% 6.2575 ± 0.0001% 0.82% 1.0829 ± 0.0011% 4.42% 4.4923 ± 0.0036% 18.65% 19.4725 ± 0.0018% 0.00% 0.0075 ± 0.0001% 0.21% 0.3597 ± 0.0013% 2.59% 2.7140 ± 0.0000% 0.93% 1.4120 ± 0.0018% 0.54% 1.0664 ± 0.0019% 4.57% 4.8124 ± 0.0017% 4.15% 5.5967 ± 0.0005% 0.05% 0.0320 ± 0.0000% 1.38% 1.3269 ± 0.0004% 21.21% 27.1124 ± 0.0027% 6.30% 8.3328 ± 0.0033% 0.28% 0.6089 ± 0.0010% 0.84% 1.2286 ± 0.0017% 6.42% 10.0446 ± 0.0054% 17.89% 20.4874 ± 0.0004% 0.75% 0.7744 ± 0.0007% 2.22% 2.2226 ± 0.0003% 11.20% 16.4745 ± 0.0047% 31.02% 46.3708 ± 0.0046% 60.28% 76.1097 ± 0.0014% 0.47% 0.3715 ± 0.0000% Odwrotny kierunek Analiza Symulacja 2.58% 3.8324 ± 0.0028% 1.06% 1.1403 ± 0.0003% 0.21% 0.2115 ± 0.0001% 1.97% 2.8883 ± 0.0021% 3.86% 4.0155 ± 0.0001% 17.46% 16.8881 ± 0.0011% 5.73% 7.0018 ± 0.0038% 0.08% 0.0840 ± 0.0000% 0.42% 0.6460 ± 0.0000% 0.52% 0.6564 ± 0.0007% 7.32% 7.5180 ± 0.0000% 3.31% 3.3313 ± 0.0003% 1.39% 2.0753 ± 0.0028% 2.74% 4.0056 ± 0.0011% 0.07% 0.0890 ± 0.0000% 2.77% 2.8598 ± 0.0004% 8.98% 14.3394 ± 0.0039% 1.54% 3.3411 ± 0.0038% 0.72% 1.0436 ± 0.0005% 4.80% 4.9265 ± 0.0000% 21.45% 25.9122 ± 0.0003% 5.08% 7.8674 ± 0.0022% 0.78% 0.6710 ± 0.0000% 3.17% 3.5814 ± 0.0001% 6.78% 11.4955 ± 0.0050% 25.12% 38.8828 ± 0.0049% 14.00% 22.5185 ± 0.0002% 0.64% 0.6075 ± 0.0001% Tabela 4.9: Wykorzystanie połączeń dla sieci pokazanej na rysunku 4.7 obciążonej macierzą ruchu daną tabelą 4.8. σ δ = 2.58 √ n v u u σ=t 4.5 n 1 X (xi − x̄)2 n − 1 i=1 (4.30) (4.31) Podsumowanie Ponieważ prezentowana metoda jest raczej dokładna i można ją stosować do topologii rzeczywistych sieci, stąd też można ją wykorzystać do oceny wydajności przyszłych sieci optycznego przełączania pakietów, które, jak sądzimy, powstaną w przyszłości. Mimo że 72 ROZDZIAŁ 4. UOGÓLNIENIE METODY wątpliwym jest zastąpienie badań symulacyjnych proponowaną metodą, to przynajmniej prezentowana metoda jest krokiem w kierunku szybkiej oceny wydajność sieci optycznego przełączania pakietów. Analiza kontroli dostępu i rutingu były opracowane dla przyjętych przez nas algorytmów, ale powinny one być w stanie ocenić wydajność innych algorytmów. Użyliśmy rutingu z odbiciami, ale wykorzystanie odbić nie jest wymagane. Wyniki analityczne zgadzają się z dużą dokładnością z wynikami symulacyjnymi. Zaprezentowaną metodę możemy użyć do oceny wydajności sieci o topologiach prawdziwych sieci telekomunikacyjnych, ponieważ można ją stosować do dowolnych topologii z wieloma długościami fal i do węzłów dowolnego stopnia. Rozdział 5 Podsumowanie W pracy została przedstawiona analityczna metoda oceny wydajności sieci opartych na optycznym przełączaniu pakietów. Metoda przedstawiona w rozdziale 4 jest najbardziej ogólna: pozwala na ocenę wydajności sieci dowolnych topologii, obciążonych dowolną macierzą ruchu, gdzie węzły są dowolnego stopnia z dowolną liczbą długości fal światła. W rozdziałach 2 i 3 zostały także przedstawione dwie inne metody, które służą ocenie wydajności prostszych sieci. Wyniki przedyskutowanych metod (metoda ogólna i jej dwie wersje z prostszymi założeniami) zgadzają się z dużą dokładnością z wynikami symulacyjnymi. Do pracy są dołączone trzy dodatki. Dodatek A zawiera instrukcję obsługi programu OPUS, który jest implementacją uogólnionej metody z rozdziału 4. Dodatek B opisuje dane wykorzystane do badań analitycznych i symulacyjnych, których wyniki zostały przedstawione w rozdziale 4.4. Dodatek C jest szczegółową dokumentacją programu OPUS. Dalsze prace mogą uwzględnić różne rodzaje buforów optycznych: począwszy od prostych buforów cyrkulacyjnych i kaskadowych do bardziej zaawansowanych, których funkcje są zbliżone do buforów typu RAM. Dalsze prace mogą także zbadać inne rodzaje ruchu, których charakterystyki mogą pochodzić z badań pomiarowych na obecnie działających sieciach telekomunikacyjnych. Jednak, mimo szerokiego zakresu możliwych dalszych prac, mamy nadzieję, że zaprezentowane wyniki prac są dobrym krokiem w kierunku szybkiej oceny wydajności sieci opartych na optycznym przełączaniu pakietów. 74 ROZDZIAŁ 5. PODSUMOWANIE Dodatek A Program OPUS Program OPUS jest implementacją metody analitycznej opisanej w rozdziale 4. Oprócz tego program posiada zaimplementowany symulator programowy, który pozwala na uzyskanie wyników symulacyjnych, celem porównania ich z wynikami analitycznymi. Formaty danych wejściowych i wyjściowych programu OPUS są niezależne od tego, czy użyta jest metoda analityczna czy symulacyjna, co pozwala na wygodne porównywanie wyników analitycznych i symulacyjnych. Program jest udostępniony na licencji GPL pod adresem [140]. A.1 Przygotowanie i uruchamianie programu OPUS został napisany i przetestowany pod systemem Ubuntu Linux, ale powinien też działać pod innymi systemami typu UNIX. Wykorzystuje on biblioteki GNU Scientific Library (GSL) i Boost, a dokładnie boost_regex, boost_program_options i boost_graph, więc konieczne jest zainstalowanie tych bibliotek. Program przygotowujemy (kompilujemy i linkujemy) wykonując komendę make w katalogu powstałym po rozpakowaniu pliku pobranego ze strony domowej OPUSa. Po pozytywnym zakończeniu wykonywania komendy make w katalogu będzie się znajdował plik wykonywalny o nazwie opus. Jeżeli pliki bibliotek GSL i Boost nie znajdują się w standardowych katalogach, to należy wskazać ich katalogi w pliku Makefile, a przed uruchomieniem programu opus należy wskazać te katalogi przez ustawienie zmiennej środowiskowej LD_LIBRARY_PATH. 76 DODATEK A. PROGRAM OPUS Program uruchamiamy w następujący sposób: opus --A|--S --HL <liczba całkowita> --DL <liczba całkowita> --topology <nazwa pliku> --traffic_matrix <nazwa pliku> Programowi należy przekazać albo opcję --A celem wyznaczenia wyników analitycznych albo opcję --S celem wyznaczenia wyników symulacyjnych. Ograniczenie na liczbę skoków przekazujemy argumentem --HL, natomiast ograniczenie na długość ścieżki optycznej przez argument --DL. Argumentem --topology przekazujemy nazwę pliku opisującego topologię sieci, a argumentem --traffic_matrix nazwę pliku opisującego obciążenie sieci. Oba formaty plików są opisane w następnym podrozdziale. A.2 Format danych wejściowych Pliki z danymi wejściowymi są plikami tekstowymi. Plik z opisem topologii sieci jest w formacie Graphviz [147], natomiast plik z opisem obciążenia sieci jest w prostym formacie opracowanym na potrzeby programu OPUS. Oba formaty plików są opisane poniżej. A.2.1 Dane topologii sieci Listing A.1 pokazuje dane dla sieci pokazanej na rysunku 4.3, gdzie numery węzłów zostały zastąpione literami, ponieważ Graphviz nie pozwala na liczbowe nazwy węzłów. Na początku pliku (linia 2) deklarujemy nazwy węzłów, a następnie (linie 4-11) definiujemy pary światłowodów między węzłami. Każda definicja pary światłowodów posiada atrybut „distance”, podający długość każdego światłowodu z pary, i „lambdas”, podający liczbę długości fal na każdym światłowodzie z pary. Listing A.1: Plik w formacie Graphviz dla sieci pokazanej na rysunku 4.3. 1 Graph { 2 a; b; c; d; e; f; 3 4 a -- b [ distance = "100" , lambdas = "8"] 5 b -- c [ distance = "200" , lambdas = "8"] 6 c -- d [ distance = "80" , lambdas = "8"] 7 b -- e [ distance = "40" , lambdas = "8"] 8 c -- f [ distance = "100" , lambdas = "4"] 9 a -- e [ distance = "210" , lambdas = "4"] 10 e -- f [ distance = "340" , lambdas = "8"] 11 f -- d [ distance = "50" , lambdas = "4"] 12 } A.2 Format danych wejściowych A.2.2 77 Dane obciążenia sieci Listing A.2 pokazuje dane dla obciążenia sieci z tabeli 4.1, gdzie numery węzłów zostały zastąpione literami. Każda linia pliku jest albo definicją jednego żądania albo linią pustą. Linie mogą zawierać komentarze zaczynające się znakiem #. Przy definiowaniu żądania podajemy nazwę węzła źródłowego, nazwę węzła docelowego i liczbę rzeczywistą, która jest średnią rozkładu Poissona liczby pakietów żądających dopuszczenia do sieci na takt zegara. Użyte nazwy węzłów muszą być zadeklarowane w pliku z topologią sieci. Listing A.2: Plik definiujący obciążenie sieci z tabeli 4.1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 a a a a a -> -> -> -> -> b: c: d: e: f: 0.3 0.5 1.3 2.1 0.7 b b b b b -> -> -> -> -> a: c: d: e: f: 0.2 0.5 0.9 2.1 1.2 c c c c c -> -> -> -> -> a: b: d: e: f: 0.2 1.3 0.9 1.1 0.7 d d d d d -> -> -> -> -> a: b: c: e: f: 0.2 0.3 1.3 1.1 0.7 e e e e e -> -> -> -> -> a: b: c: d: f: 0.2 1.3 0.5 0.9 1.5 f f f f f -> -> -> -> -> a: b: c: d: e: 1.2 0.3 0.5 2.5 0.1 78 A.3 DODATEK A. PROGRAM OPUS Format danych wyjściowych Program OPUS zwraca na standardowe wyjście wyniki obliczeń, które są podzielone na części oddzielone gwiazdkami. Pierwsze trzy części „NETWORK NODES”, „NETWORK LINKS” i „TRAFFIC MATRIX” zawierają informacje na temat topologii i obciążenia sieci, które zostały wczytane z plików wejściowych. Kolejne trzy części zawierają dane uzyskane z danych wejściowych, które są używane we właściwych obliczeniach. Część „SHORTEST PATHS” zawiera informacje na temat najkrótszych ścieżek w sieci, „PACKET PREFERENCES” na temat żądanych wyjść pakietów w zależności od węzła, w którym pakiet się znajduje i od jego węzła przeznaczenia, a część „ROUTING PRIORITIES” na temat kolejności rutowania pakietów w każdym węźle. Ostatnie pięć części „NODE FLOWS”, „LINK LOADS”, „PROBABILITIES OF ROUTING”, „PACKET PRESENCE MATRIX” i „PACKET TRAJECTORY MATRIX” zawierają wyniki obliczeń i te części opiszemy dokładnie w kolejnych podrozdziałach. A.3.1 Część „NODE FLOWS” Listing A.3 zawiera początek części „NODE FLOWS” wyników uzyskanych analitycznie dla sieci pokazanej na rysunku 4.3 obciążonej żądaniami z tabeli 4.1. Ten listing pokazuje tylko wycinek wyników dla węzła „a” (linia 1), ale część „NODE FLOWS” zawiera wyniki dla wszystkich węzłów. Dla każdego węzła jest podana średnia częstość nadchodzących do niego pakietów, których węzłami przeznaczenia są wszystkie inne węzły (linie 2-5). Podana jest sumaryczna średnia częstość wszystkich pakietów nadchodzących od sąsiadów do tego węzła (linia 6), częstość wszystkich pakietów w tranzycie (linia 7) i wszystkich pakietów, które są wysyłane do sieci dostępowej (linia 8). Wypisane są średnie częstości pakietów dopuszczonych do sieci w zależności od węzła przeznaczenia (linie 10-14) i ich sumaryczna wartość (linia 15). Podana jest średnia częstość pakietów żądających rutingu (linia 16), która jest sumą częstości dopuszczonych pakietów i częstości pakietów w tranzycie. Podane są rozkłady prawdopodobieństwa liczby pakietów w zależności od węzła przeznaczenia, które żądają przesłania do światłowodów wyjściowych węzła (linie 19-23). Listing A.3: Początek przykładowej części „NODE FLOWS”. 1 Flows for node a 2 Rate of packets from neighbor nodes to node a = 1.97844 3 Rate of packets from neighbor nodes to node b = 0.248931 4 Rate of packets from neighbor nodes to node c = 0.00437884 A.3 Format danych wyjściowych 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Rate of Rate of Packets Packets packets from neighbor nodes to node e = 2.15935 all packets from neighbors = 4.39111 in transit = 2.41266 that go to local drop = 1.97844 Admittance rate Admittance rate Admittance rate Admittance rate Admittance rate Admittance rate Rate of packets Distribution of packets For destination For destination For destination For destination For destination A.3.2 79 of demand (a , b ) = 0.297098 of demand (a , c ) = 0.495163 of demand (a , d ) = 1.28742 of demand (a , e ) = 2.07968 of demand (a , f ) = 0.693228 of all demands = 4.8526 that go to routing = 7.26526 that ask routing : b : poisson (0.546029) c : poisson (0.499542) d : poisson (1.28742) e : poisson (4.23904) f : poisson (0.693228) Część „LINK LOADS” Listing A.4 zawiera część „LINK LOADS” wyników uzyskanych analitycznie dla sieci pokazanej na rysunku 4.3 obciążonej żądaniami z tabeli 4.1. Dla każdego światłowodu (czyli połączenia w jednym kierunku) jest podane procentowe obciążenie (linie 1-16), a następnie jest podana średnia arytmetyczna tych obciążeń (linia 17). Listing A.4: Przykładowa część „LINK LOADS”. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Link (a , Link (a , Link (b , Link (b , Link (b , Link (c , Link (c , Link (c , Link (d , Link (d , Link (e , Link (e , Link (e , Link (f , Link (f , Link (f , AVERAGE : b ): 82.2194% e ): 13.9271% a ): 51.6505% c ): 92.7165% e ): 90.4331% b ): 72.5369% d ): 60.722% f ): 81.0691% c ): 39.1429% f ): 33.2772% a ): 6.47662% b ): 76.4036% f ): 0.541465% c ): 55.5716% d ): 60.0728% e ): 0.258137% 51.0637% 80 DODATEK A. PROGRAM OPUS A.3.3 Część „PROBABILITIES OF ROUTING” Listing A.5 zawiera początek części „PROBABILITIES OF ROUTING” wyników uzyskanych analitycznie dla sieci pokazanej na rysunku 4.3 obciążonej żądaniami z tabeli 4.1. Część „PROBABILITIES OF ROUTING” zawiera prawdopodobieństwa rutingu pakietów dla każdego węzła sieci, ale w listingu przedstawione są dane tylko dla węzła „a” (linia 1). Dla danego węzła sieci (linia 1) podane są prawdopodobieństwa przesłania pakietów przez światłowody wyjściowe tego węzła w zależności od węzłów przeznaczenia pakietów (linie 2-6). Na przykład, w węźle „a” pakiety podróżujące do węzła „b” przesyłane są światłowodem z węzła „a” do węzła „b” z prawdopodobieństwem 0.670027, a światłowodem z węzła „a” do węzła „e” z prawdopodobieństwem 0.319926. Listing A.5: Początek przykładowej części „PROBABILITIES OF ROUTING”. 1 2 3 4 5 6 Probabilities of Destination node Destination node Destination node Destination node Destination node A.3.4 routing b : link c : link d : link e : link f : link at node (a , b ): (a , b ): (a , b ): (a , b ): (a , b ): a: 0.670027 , link (a , e ): 0.319926 0.999524 0.978406 , link (a , e ): 0.0215939 0.922113 , link (a , e ): 0.0490863 0.78459 , link (a , e ): 0.211355 Część „PACKET PRESENCE MATRIX” Listing A.6 zawiera wycinek części „PACKET PRESENCE MATRIX” wyników uzyskanych analitycznie dla sieci pokazanej na rysunku 4.3 obciążonej żądaniami z tabeli 4.1. Część „PACKET PRESENCE MATRIX” zawiera dane dla każdego żądania, ale w listingu przedstawione są dane tylko dla żądania (a, b) (linia 1). Wielomiany opisujące obecność pakietów w węzłach są podane dla danego żądania (linia 1) w kolejności wykonanych skoków. Skok numer 0 (linia 2) jest momentem dopuszczenia pakietu do sieci. Podane są wielomiany dla nie więcej niż dozwolonej liczby skoków przekazanej argumentem --HL. Listing pokazuje, że pakiety są dopuszczane do węzła „a” zgodnie z rozkładem Poissona ze średnią częstością 0.297098 pakietów na takt zegara. Po wykonaniu pierwszego skoku (linia 4) pakiety znajdują się w węźle „b” z częstością 0.199064 po przebyciu 100 kilometrów i w węźle „e” z częstością 0.0952016 po przebyciu 210 kilometrów. Dalej są podane wielomiany dla kolejnych skoków. Listing A.6: Wycinek przykładowej części „PACKET PRESENCE MATRIX”. 1 Packet presence for demand (a , b ): 2 Hop #0 3 Node a : poisson (0.297098) A.3 Format danych wyjściowych 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Hop #1 Node b : Node e : Hop #2 Node a : Node b : Hop #3 Node b : Node e : Hop #4 Node a : Node b : Hop #5 Node b : A.3.5 81 poisson (0.199064)* x ^100 poisson (0.0952016)* x ^210 poisson (0.0161121)* x ^420 poisson (0.0790895)* x ^250 poisson (0.0107955)* x ^520 poisson (0.00516293)* x ^630 poisson (0.000873782)* x ^840 poisson (0.00428915)* x ^670 poisson (0.000585458)* x ^940 Część „PACKET TRAJECTORY MATRIX” Listing A.7 zawiera wycinek części „PACKET TRAJECTORY MATRIX” wyników uzyskanych analitycznie dla sieci pokazanej na rysunku 4.3 obciążonej żądaniami z tabeli 4.1. Część „PACKET TRAJECTORY MATRIX” zawiera dane dla każdego żądania, ale w listingu przedstawione są dane tylko dla żądania (a, b) (linia 1). Wielomiany opisujące przejścia pakietów przez światłowody są podane dla pakietów danego żądania (linia 1) w kolejności wykonanych skoków. Podane są wielomiany dla nie więcej niż dozwolonej liczby skoków przekazanej argumentem --HL. Listing pokazuje, że pakiety przechodzą w pierwszym skoku (linia 2) z węzła „a” do węzła „b” ze średnią częstością 0.199064 pakietów na takt zegara (linia 3) i z węzła „a” do węzła „e” ze średnią częstością 0.0952016 (linia 4). Dalej są podane wielomiany dla kolejnych skoków. Listing A.7: Wycinek przykładowej części „PACKET TRAJECTORY MATRIX”. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Packet trajectory for demand (a , b ): Hop #1 Link (a , b ): poisson (0.199064)* x ^100 Link (a , e ): poisson (0.0952016)* x ^210 Hop #2 Link (e , a ): poisson (0.0161121)* x ^420 Link (e , b ): poisson (0.0790895)* x ^250 Hop #3 Link (a , b ): poisson (0.0107955)* x ^520 Link (a , e ): poisson (0.00516293)* x ^630 Hop #4 Link (e , a ): poisson (0.000873782)* x ^840 Link (e , b ): poisson (0.00428915)* x ^670 Hop #5 82 DODATEK A. PROGRAM OPUS 15 Link (a , b ): poisson (0.000585458)* x ^940 Dodatek B Model sieci PIONIER Sieć PIONIER jest polską akademicką siecią światłowodową [143]. Model tej sieci i jej obciążenie zostały wykorzystane do badań analitycznych i symulacyjnych w rozdziale 4. Serwis internetowy operatora [146] udostępnia informacje na temat topologii sieci i jej obciążenia. Oczywiście sieć PIONIER nie jest siecią opartą na optycznym przełączaniu pakietów, jednak dotyczące jej dane zostały użyte do naszych badań, aby jak najdokładniej oddać warunki, w których sieć optycznego przełączania pakietów może pracować. Dla naszych celów zarówno topologia sieci, jak i obciążenie zostały nieco zmodyfikowane, co jest opisane dokładnie poniżej. B.1 Topologia sieci Sieć PIONIER jest częścią europejskiej sieć GEANT2 [148], w ramach której posiada połączenia z sieciami BASNET, CESNET i DFN naszych sąsiadów, jak pokazano na rysunku B.1. Nie można jednak, niestety, dokładnie określić, w jaki sposób te połączenia są używane dla ruchu między siecią PIONIER a siecią GEAN2, ponieważ tablica rutingu sieci PIONIER nie jest publicznie dostępna. Dlatego przyjęliśmy założenie, że sieć posiada tylko jedno połączenie w Poznaniu z siecią GEANT2, co eliminuje konieczność znajomości tablicy rutingu. Dla uproszczenia analizy przyjęliśmy, że długości światłowodów są wielokrotnością 50km. Przyjęcie tego uproszczenia pozwoliło na zmniejszenie liczby wyrazów w wielomianach, co obniżyło złożoność obliczeniową i pamięciową programu OPUS, implementującego metodę analityczną. Tabela B.1 przedstawia rzeczywiste długości światłowodów i długości przyjęte 84 DODATEK B. MODEL SIECI PIONIER w modelu. Długości światłowodów do sieci GEANT2 i sieci TPNet (sieć Telekomunikacji Polskiej) nie są znane, dlatego przyjęliśmy długość 50km. Nie mogliśmy uwzględnić ruchu pomiędzy siecią PIONIER a siecią USA, ponieważ te dane nie były dostępne w serwisie internetowym operatora i dlatego w modelu sieci nie uwzględniliśmy połączenia z USA. B.2 Obciążenie sieci Dane dotyczące chwilowego obciążenia sieci uzyskaliśmy dnia 7. lutego 2007 roku o godzinie 2300 z serwisu internetowego operatora w postaci wykresów i tabel przedstawionych na rysunkach od B.2 do B.24. Interesowało nas natężenie ruchu zarówno pomiędzy siecią PIONIER a siecią TPNet, jak i pomiędzy siecią PIONIER a siecią GEANT2. Dla każdego węzła sieci PIONIER rysunek B.2 przedstawia natężenie ruchu wychodzącego do sieci TPNet, oznaczonego jako „Current out”, i ruchu przychodzącego z sieci TPNet, oznaczonego jako „Current in”. Rysunki od B.3 do B.24 przedstawiają natężenie ruchu pomiędzy węzłami sieci PIONIER i węzłami sieci GEANT2. Natężenie ruchu pomiędzy pewnym węzłem sieci PIONIER a siecią GEANT2 jest sumą natężeń pomiędzy tym węzłem sieci PIONIER a wszystkimi sieciami należącymi do sieci PIONIER. Chwilowa macierz obciążenia sieci PIONIER jest sumą natężeń ruchów pomiędzy węzłami sieci PIONIER a sieciami TPNet i GEANT2. Obciążenie to jednak było bardzo małe i dlatego natężenia ruchów pomnożyliśmy przez 10 uzyskując macierz obciążenia, którą wykorzystaliśmy przy badaniach symulacyjnych i analitycznych. B.2 Obciążenie sieci Para światłowodów (Białystok, Warszawa) (Bielsko, Gliwice) (Bielsko, Kraków) (Bydgoszcz, Poznań) (Bydgoszcz, Toruń) (Częstochowa, Gliwice) (Częstochowa, Łódź) (Gdańsk, Koszalin) (Gdańsk, Olsztyn) (Gdańsk, Toruń) (Gliwice, Opole) (Kielce, Kraków) (Kielce, Radom) (Koszalin, Szczecin) (Kraków, Rzeszów) (Łódź, Poznań) (Łódź, Warszawa) (Lublin, Puławy) (Lublin, Rzeszów) (Opole, Wrocław) (Poznań, Szczecin) (Poznań, Warszawa) (Poznań, Zielona Góra) (Puławy, Radom) (Radom, Warszawa) (Wrocław, Zielona Góra) (Poznań, GEANT2) (Warszawa, TPNet) 85 Długość w modelu rzeczywista 200 191 50 63 100 76 100 117 50 46 50 72 100 118 200 177 150 146 150 160 50 72 100 108 100 80 150 149 150 162 200 209 150 192 50 50 150 152 100 88 250 228 300 299 100 124 50 62 100 102 150 152 50 nieznana 50 nieznana Tabela B.1: Długości światłowodów: przyjęte w modelu i rzeczywiste. 86 DODATEK B. MODEL SIECI PIONIER Gdańsk Koszalin Olsztyn Szczecin USA Białystok Bydgoszcz Gorzów Wielkopolski BASNET Toruń TPNet Poznań Warszawa DFN Łódź Zielona Góra Radom Wrocław Puławy Częstochowa Opole Lublin Kielce Gliwice Kraków Centrum obliczeniowe Węzeł sieci Rzeszów CESNET Bielsko-Biała 10Gb/s x 2 10Gb/s Rysunek B.1: Rzeczywista topologia sieci PIONIER. Rysunek B.2: Ruch dla sieci TPNet (Telekomunikacja Polska). B.2 Obciążenie sieci 87 Rysunek B.3: Ruch dla sieci ACONet. Rysunek B.4: Ruch dla sieci BELNET. 88 DODATEK B. MODEL SIECI PIONIER Rysunek B.5: Ruch dla sieci BASNET. Rysunek B.6: Ruch dla sieci SWITCH. B.2 Obciążenie sieci 89 Rysunek B.7: Ruch dla sieci CESNET. Rysunek B.8: Ruch dla sieci DFN. 90 DODATEK B. MODEL SIECI PIONIER Rysunek B.9: Ruch dla sieci EENet. Rysunek B.10: Ruch dla sieci RedIris. B.2 Obciążenie sieci 91 Rysunek B.11: Ruch dla sieci FUNET. Rysunek B.12: Ruch dla sieci RENATER. 92 DODATEK B. MODEL SIECI PIONIER Rysunek B.13: Ruch dla sieci GRNet. Rysunek B.14: Ruch dla sieci CARNET. B.2 Obciążenie sieci 93 Rysunek B.15: Ruch dla sieci HUNGARNET. Rysunek B.16: Ruch dla sieci HEANet. 94 DODATEK B. MODEL SIECI PIONIER Rysunek B.17: Ruch dla sieci GARR. Rysunek B.18: Ruch dla sieci LITNET. B.2 Obciążenie sieci 95 Rysunek B.19: Ruch dla sieci SURFNET. Rysunek B.20: Ruch dla sieci UNINET. 96 DODATEK B. MODEL SIECI PIONIER Rysunek B.21: Ruch dla sieci FCCN. Rysunek B.22: Ruch dla sieci ARNES. B.2 Obciążenie sieci 97 Rysunek B.23: Ruch dla sieci SANET. Rysunek B.24: Ruch dla sieci UKERNA. 98 DODATEK B. MODEL SIECI PIONIER Dodatek C OPUS Documentation C.1 C.1.1 File and Class Lists File List Here is a list of all files: analysis.hpp . . . . arguments.hpp . . . arr_queue.hpp . . config.hpp . . . . . . counter.hpp . . . . distro.hpp . . . . . . distro_base.hpp . . edge_probs.hpp . . generate.hpp . . . . graph.hpp . . . . . . matrixes.hpp . . . . nodistro.hpp . . . . packet.hpp . . . . . poisson.hpp . . . . . polynomial.hpp . . rand.hpp . . . . . . rou_order.hpp . . . simulation.hpp . . . sparse_matrix.hpp tabdistro.hpp . . . utils.hpp . . . . . . utils_ana.hpp . . . utils_sim.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 101 101 102 103 103 103 104 106 108 109 111 111 114 114 116 116 117 117 118 118 124 126 100 DODATEK C. OPUS DOCUMENTATION C.1.2 Class List Here are the classes, structs and interfaces: arguments . . . . . . arr_queue . . . . . . cmp_pref< G > . . . counter< T > . . . . distro . . . . . . . . . distro_base . . . . . . nodistro . . . . . . . . packet . . . . . . . . . packet_prefs . . . . . pkt_next_ts_cmp . poisson . . . . . . . . rou_order . . . . . . sparse_matrix< K, T tabdistro . . . . . . . tpoly< T > . . . . . . C.2 C.2.1 . . . . . . . . . . . . . . . . . . . . . . . . > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 129 131 131 132 136 138 140 141 142 142 145 145 146 149 File Documentation analysis.hpp File Reference #include "graph.hpp" #include "matrixes.hpp" Functions • void ana_solution (const Graph &g, const fp_matrix &tm, int HL, int DL, pp_matrix &ppm, pt_matrix &ptm) C.2.1.1 Function Documentation void ana_solution (const Graph & g, const fp_matrix & tm, int HL, int DL, pp_matrix & ppm, pt_matrix & ptm) The analytical solver. Parameters: g the graph tm the traffic matrix HL the hop limit DL the distance limit C.2 File Documentation ppm the result of the packet (p. 140) presence matrix ptm the result of the packet (p. 140) trajectory matrix See also: sim_solution (p. 117) C.2.2 arguments.hpp File Reference #include <boost/program_options.hpp> #include <string> Classes • struct arguments Enumerations • enum method_type { analysis, simulation } Functions • arguments process_args (int argc, char ∗argv[ ]) C.2.2.1 Enumeration Type Documentation enum method_type Enumerator: analysis simulation C.2.2.2 Function Documentation arguments process_args (int argc, char ∗ argv[ ]) This function parses the command-line arguments (p. 128). C.2.3 arr_queue.hpp File Reference #include "config.hpp" #include "distro.hpp" 101 102 DODATEK C. OPUS DOCUMENTATION #include <functional> #include <iostream> #include <map> #include <set> #include <vector> Classes • class arr_queue Functions • ostream & operator<< (ostream &out, const arr_queue &q) C.2.3.1 Function Documentation ostream& operator<< (ostream & out, const arr_queue & q) Prints the queue to stream. C.2.4 config.hpp File Reference Defines • #define ARRANGEMENT_CUT_OFF_RATIO 1e-2 Typedefs • typedef long int timeslot C.2.4.1 Define Documentation #define ARRANGEMENT_CUT_OFF_RATIO 1e-2 When we consider packet (p. 140) arrangements, there is one the most frequent. We don’t considering other arrangements when the ratio of their probability and the maximal probability is below this value. C.2.4.2 Typedef Documentation typedef long int timeslot This is the data type for a timeslot. C.2 File Documentation C.2.5 103 counter.hpp File Reference #include <cstdlib> Classes • class counter< T > C.2.6 distro.hpp File Reference #include "counter.hpp" #include "distro_base.hpp" #include "nodistro.hpp" #include <iostream> #include <string> #include <utility> Classes • class distro Functions • distro operator∗ (double p, const distro &d) • ostream & operator<< (ostream &out, const distro &d) C.2.6.1 Function Documentation distro operator∗ (double p, const distro & d) The operator for getting a new distribution of packets if packets are let through with probability p. ostream& operator<< (ostream & out, const distro & d) The output operator for the distro (p. 132). It describes the distro (p. 132) in a way that can be printed in a single line. This is used to print one polynomial in single line. C.2.7 distro_base.hpp File Reference #include "counter.hpp" #include <string> #include <utility> 104 DODATEK C. OPUS DOCUMENTATION Classes • class distro_base Typedefs • typedef pair< double, int > prob_pair C.2.7.1 Typedef Documentation typedef pair<double, int> prob_pair The definition of the probability pair. The first field is the probability that the random variable will take the value of the pair’s second field. C.2.8 edge_probs.hpp File Reference #include "graph.hpp" #include "sparse_matrix.hpp" #include <map> Typedefs • • • • • typedef typedef typedef typedef typedef map< Edge, double > edge_probs map< Vertex, edge_probs > edge_probs_map map< Edge, int > edge_count map< Vertex, edge_count > edge_count_map sparse_matrix< Vertex, edge_probs > edge_probs_matrix Functions • • • • • • • • • • edge_probs & operator∗= (edge_probs &v, double c) edge_probs & operator+= (edge_probs &v1, const edge_probs &v2) edge_probs_map & operator∗= (edge_probs_map &v, double c) edge_probs_map & operator+= (edge_probs_map &v1, const edge_probs_map &v2) edge_count & operator+= (edge_count &v1, const edge_count &v2) edge_count_map & operator+= (edge_count_map &v1, const edge_count_map &v2) ostream & operator<< (ostream &os, const edge_probs &prefs) ostream & operator<< (ostream &os, const edge_probs_map &map) ostream & operator<< (ostream &os, const edge_count &count) ostream & operator<< (ostream &os, const edge_count_map &map) C.2 File Documentation C.2.8.1 105 Typedef Documentation typedef map<Edge, int> edge_count These are number of packets that traverse links. typedef map<Vertex, edge_count> edge_count_map This type maps the edge_count with destination node i. typedef map<Edge, double> edge_probs These are probabilities of traversing links. typedef map<Vertex, edge_probs> edge_probs_map This type maps the edge_probs with destination node i. typedef sparse_matrix<Vertex, edge_probs> edge_probs_matrix Element edge_probs_matrix[i][j] stores edge_probs for each destination node i to which packets want to go at node j C.2.8.2 Function Documentation edge_probs_map& operator∗= (edge_probs_map & v, double c) This is a multiplication operator for edge_probs_map which multiplies all probabilities by a constant. edge_probs& operator∗= (edge_probs & v, double c) This is a multiplication operator for edge_probs which multiplies all probabilities by a constant. edge_count_map& operator+= (edge_count_map & v1, count_map & v2) const edge_- This is the += operator for an edge_count_map object: we add all probabilities from v2 to v1. edge_count& operator+= (edge_count & v1, const edge_count & v2) This is the += operator for an edge_count object: we add all the probabilities from v2 to v1. 106 DODATEK C. OPUS DOCUMENTATION edge_probs_map& operator+= (edge_probs_map & v1, probs_map & v2) const edge_- This is the += operator for an edge_probs_map object: we add all probabilities from v2 to v1. edge_probs& operator+= (edge_probs & v1, const edge_probs & v2) This is the += operator for an edge_probs object: we add all the probabilities from v2 to v1. ostream& operator<< (ostream & os, const edge_count_map & map) The << operator for edge_count_map. ostream& operator<< (ostream & os, const edge_count & count) The << operator for edge_count. ostream& operator<< (ostream & os, const edge_probs_map & map) The << operator for edge_probs_map. ostream& operator<< (ostream & os, const edge_probs & prefs) The << operator for edge_probs. C.2.9 generate.hpp File Reference #include "edge_probs.hpp" #include "graph.hpp" #include "matrixes.hpp" #include "packet.hpp" Functions • void generate_itm (const Graph &g, const pt_matrix &ptm, fp_matrix &itm) • void generate_atm (const Graph &g, const fp_matrix &tm, const fp_matrix &itm, fp_matrix &atm) • void generate_otm (const fp_matrix &itm, const fp_matrix &atm, fp_matrix &otm) • void generate_epm (const Graph &g, const fp_matrix &otm, edge_probs_matrix &epm) • void generate_T (const Graph &g, Vertex dest, const edge_probs_matrix &epm, trans_matrix &T) C.2 File Documentation C.2.9.1 107 Function Documentation void generate_atm (const Graph & g, const fp_matrix & tm, const fp_matrix & itm, fp_matrix & atm) Generates the admitted traffic matrix. The mean rate of admitted packets is put into the atm argument. This function reflects the policy of admitting packets into the network. The input data is the graph g, the traffic matrix tm and the input traffic matrix itm. The element [i][j] gives the mean rate of packets that start at node j and go to node i. Real numbers are enough, and polynomials are not necessary, because the admitted packets don’t have any history. Parameters: g the graph tm the traffic matrix itm the input traffic matrix atm the admitted traffic matrix void generate_epm (const Graph & g, const fp_matrix & otm, edge_probs_matrix & epm) Generates the edge probability matrix based on the graph g and the output traffic matrix otm. The element otm[i][j] tells the edge probabilities for a packet (p. 140) that resides at node j and wants to get to node i. Now, this element is a map between edges (all these edges leave node j) and probabilities, and it tells how likely a packet (p. 140) is to leave from node j along this link. These probabilities are conditional probabilities, i.e. they make sense when you know the packet (p. 140) is already at node j and wants to leave that node. Parameters: g the graph otm the output traffic matrix epm the edge probability matrix void generate_itm (const Graph & g, const pt_matrix & ptm, fp_matrix & itm) Generates the input traffic matrix, which is returned as the itm argument. The itm matrix describes the traffic that enters nodes from neighbor nodes. The values stored are real numbers, which are the mean rates of the Poisson distribution. The element [i][j] tells the rate of packets packets that enter node j that are destined to node i. This element doesn’t contain the traffic that has just been admitted at node j to node i. 108 DODATEK C. OPUS DOCUMENTATION The matrix does contain rates for packets that arrive at the destination node. Element itm[i][i] is the rate of packets that are sent to the local drop of node i, and it’s a sum of rates for all demands. Parameters: g the graph ptm the packet (p. 140) trajectory matrix based on which we generate the input traffic matrix itm the input traffic matrix that returns the resuls of this function void generate_otm (const fp_matrix & itm, const fp_matrix & atm, fp_matrix & otm) Generates the output traffic matrix otm based on the input traffic matrix itm and the admitted traffic matrix atm. Element [i][j] tells the mean rate of packets that arrive at the routing block of node j that want to go to node i. Parameters: itm the input traffic matrix atm the admitted traffic matrix otm the output traffic matrix void generate_T (const Graph & g, Vertex dest, const edge_probs_matrix & epm, trans_matrix & T) Here we create the transition matrix for packets which go to the dest node. We generate it based on the graph g and edge probabilities stored in epm. We put the result in the matrix T. Parameters: g the graph dest the destination node epm the edge probability matrix T the transition matrix C.2.10 graph.hpp File Reference #include <string> #include <vector> #include <boost/graph/adjacency_list.hpp> #include <boost/graph/dijkstra_shortest_paths.hpp> C.2 File Documentation 109 #include <boost/graph/iteration_macros.hpp> #include <boost/graph/graphviz.hpp> Namespaces • namespace std Typedefs • typedef adjacency_list_traits< vecS, vecS, undirectedS >::vertex_descriptor Vertex • typedef adjacency_list< vecS, vecS, undirectedS, property< vertex_name_t, string, property< vertex_distance_t, vector< int >, property< vertex_predecessor_t, vector< Vertex >, property< vertex_bundle_t, vector< packet_prefs > > > > >, property< edge_weight_t, int, property< edge_weight2_t, int > > > Graph • typedef graph_traits< Graph >::edge_descriptor Edge Functions • bool std::operator< (const Edge &, const Edge &) C.2.10.1 Typedef Documentation typedef graph_traits<Graph>::edge_descriptor Edge typedef adjacency_list<vecS, vecS, undirectedS, property<vertex_name_t, string, property<vertex_distance_t, vector<int>, property<vertex_predecessor_t, vector<Vertex>, property<vertex_bundle_t, vector<packet_prefs> > > > >, property<edge_weight_t, int, property<edge_weight2_t, int> > > Graph The type of the graph we use. Property edge_weight is the distance, while property edge_weight2 is the number of wavelengths. typedef adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor Vertex C.2.11 matrixes.hpp File Reference #include "packet.hpp" #include "polynomial.hpp" 110 DODATEK C. OPUS DOCUMENTATION #include "sparse_matrix.hpp" Typedefs • typedef sparse_matrix< Vertex, packet_presence > pp_matrix • typedef sparse_matrix< Vertex, packet_presence_count_map > ppcm_matrix • typedef sparse_matrix< Vertex, packet_presence_count > ppc_matrix • typedef sparse_matrix< Vertex, packet_trajectory > pt_matrix • typedef sparse_matrix< Vertex, packet_trajectory_count_map > ptcm_matrix • typedef sparse_matrix< Vertex, packet_trajectory_count > ptc_matrix • typedef sparse_matrix< Vertex, double > fp_matrix • typedef sparse_matrix< Vertex, fp_poly > trans_matrix C.2.11.1 Typedef Documentation typedef sparse_matrix<Vertex, double> fp_matrix This is matrix that for every element [i][j] stores a floating point value. It’s used for the traffic matrix, the input traffic matrix, the admitted traffic matrix and the output traffic matrix. Element [i][j] of the traffic matrix tells how many packets ask admission at node j (this can be the source node) that want to go to node i. typedef sparse_matrix<Vertex, packet_presence> pp_matrix Element [i][j] of this matrix stores a packet (p. 140) presence for demand (j, i), where j is the source node and i is the destination node. typedef sparse_matrix<Vertex, packet_presence_count> ppc_matrix Used in simulation to count the number of packets that arrive at a node in a single time slot. It’s used to build ppcm_matrix. typedef matrix sparse_matrix<Vertex, packet_presence_count_map> ppcm_- Used in simulation to count the number of packets that arrive at a node during the whole simulation. Here we count the number of time slots during which packets arrived in a speficic number. It’s used to build the pp_matrix. typedef sparse_matrix<Vertex, packet_trajectory> pt_matrix Element [i][j] of this matrix stores a packet (p. 140) trajectory for demand (j, i), where j is the source node and i is the destination node. C.2 File Documentation 111 typedef sparse_matrix<Vertex, packet_trajectory_count> ptc_matrix Used in simulation to count the number of packets that traverse a link in a single time slot. It’s used to build ptcm_matrix. typedef sparse_matrix<Vertex, packet_trajectory_count_map> ptcm_matrix Used in simulation to count the number of packets that traverse a link during the whole simulation. Here we count the number of time slots during which packets arrived in a specific number. It’s used to build the pt_matrix. typedef sparse_matrix<Vertex, fp_poly> trans_matrix This is the type of the transition matrix. The elements are polynomials with floating point coefficients. C.2.12 nodistro.hpp File Reference #include "counter.hpp" #include "distro_base.hpp" #include <deque> #include <iostream> #include <string> #include <utility> Classes • class nodistro C.2.13 packet.hpp File Reference #include "config.hpp" #include "graph.hpp" #include "polynomial.hpp" #include <functional> Classes • • • • struct packet class pkt_next_ts_cmp class packet_prefs class cmp_pref< G > 112 DODATEK C. OPUS DOCUMENTATION Typedefs • typedef map< int, map< Edge, dist_poly > > packet_trajectory • typedef map< int, map< Edge, count_map_poly > > packet_trajectory_count_map • typedef map< int, map< Edge, count_poly > > packet_trajectory_count • typedef map< int, map< Vertex, dist_poly > > packet_presence • typedef map< int, map< Vertex, count_map_poly > > packet_presence_count_map • typedef map< int, map< Vertex, count_poly > > packet_presence_count • typedef multiset< packet ∗, pkt_next_ts_cmp > waiting_pkts Functions • ostream & operator<< (ostream &out, const packet_prefs &prefs) • ostream & operator<< (ostream &out, const packet &pkt) • template<typename G> packet_prefs make_prefs (const typename graph_traits< G >::vertex_descriptor &i, const typename graph_traits< G >::vertex_descriptor &j, const G &g) • waiting_pkts::const_iterator find_waiting_pkts (const waiting_pkts &pkts, timeslot ts) C.2.13.1 Typedef Documentation typedef map<int, map<Vertex, dist_poly> > packet_presence This describes what nodes packets visit in the subsequent hops. Note that it’s for hops, not time slots! The element packet_presence[k][v] gives the polynomial for hop k and vertex v. The whole object describes a single demand. typedef map<int, map<Vertex, count_poly> > packet_presence_count Remembers the number of packets that visit node during a single time slot. It’s used to build packet_presence_count_map. typedef map<int, map<Vertex, count_map_poly> > packet_presence_count_map Remembers the number of time slots during which a specific number of packets visited a node. It’s used to build packet_presence. C.2 File Documentation 113 typedef map<int, map<Edge, dist_poly> > packet_trajectory This describes what links packets traverse in the subsequent hops. Note that it’s for hops, not time slots! The element packet_trajectory[k][e] gives the polynomial for hop k and edge e. The whole object describes a single demand. typedef map<int, map<Edge, count_poly> > packet_trajectory_count Remembers the number of packets and the distance they travelled in a single time slot. It’s used to build packet_trajectory_count_map. typedef map<int, map<Edge, count_map_poly> > packet_trajectory_count_map Remembers the number of time slots during which a specific number of packets traversed a link. It’s used to build packet_trajectory. typedef multiset<packet ∗, pkt_next_ts_cmp> waiting_pkts This structure stores waiting packets. This structure is used to store packets that travel in a fiber. C.2.13.2 Function Documentation waiting_pkts::const_iterator find_waiting_pkts (const waiting_pkts & pkts, timeslot ts) This function finds the iterator, which points to an element whose next_ts > ts, or it returns pkts.end(). template<typename G> packet_prefs make_prefs (const typename graph_traits< G >::vertex_descriptor & i, const typename graph_traits< G >::vertex_descriptor & j, const G & g) [inline] This function generates packet (p. 140) preferences for a packet (p. 140) at node j, which is destined to some node i in the graph g. References packet_prefs::cls, and packet_prefs::dest. ostream& operator<< (ostream & out, const packet & pkt) Prints the packet (p. 140). ostream& operator<< (ostream & out, const packet_prefs & prefs) Prints the packet_prefs (p. 141). 114 DODATEK C. OPUS DOCUMENTATION C.2.14 poisson.hpp File Reference #include "counter.hpp" #include "distro_base.hpp" #include <deque> #include <utility> Classes • class poisson Defines • #define POISSON_PRINT_CUT_OFF 10e-5 C.2.14.1 Define Documentation #define POISSON_PRINT_CUT_OFF 10e-5 Defines the ratio of the number of events for which the probability is not printed. C.2.15 polynomial.hpp File Reference #include "counter.hpp" #include "distro.hpp" #include <algorithm> #include <cstddef> #include <limits> #include <map> #include <ostream> Classes • class tpoly< T > Typedefs • • • • typedef typedef typedef typedef tpoly< tpoly< tpoly< tpoly< double > fp_poly distro > dist_poly map< int, int > > count_map_poly int > count_poly C.2 File Documentation 115 Functions • template<typename A, typename B> tpoly< B > operator∗ (const tpoly< A > &p1, const tpoly< B > &p2) • template<typename A, typename B> tpoly< A > & operator∗= (tpoly< A > &p1, const B &c) • template<typename T> tpoly< T > & operator+= (tpoly< T > &p1, const tpoly< T > &p2) • template<typename T> tpoly< T > operator+ (const tpoly< T > &p1, const tpoly< T > &p2) • template<typename T> ostream & operator<< (ostream &os, const tpoly< T > &p) C.2.15.1 Typedef Documentation typedef tpoly<map<int, int> > count_map_poly This keeps the number of time a specific number of packets appeared. We need a polynomial to remember the distance packets travel. The map tells the number of times the given number of packets appeared. Therefore count_map_poly[dist][count] is the number of time slots during which there were exactly "count" number of packets that travelled distance "dist". typedef tpoly<int> count_poly The polynomial with integers as coefficients. It is use to count the number of packets. typedef tpoly<distro> dist_poly This polynomial remembers the distributions for packets that travel specific distances. Note this is the polynomial with the "distro ∗" coefficients. The polynomial owns the distro (p. 132) objects, and will destroy them. Therefore once you put the pointer to the distro (p. 132) object, you should not destroy it, because the polynomial will do it for you. typedef tpoly<double> fp_poly This is a polynomial with floating point variables as coefficients. We use this type when we want to give probabilities for a packet (p. 140). The polynomial is used to encode also the distance. This polynomial is used in trans_matrix. C.2.15.2 Function Documentation template<typename A, typename B> tpoly<B> operator∗ (const tpoly< A > & p1, const tpoly< B > & p2) [inline] 116 DODATEK C. OPUS DOCUMENTATION The operator: tpoly (p. 149) ∗ tpoly (p. 149). template<typename A, typename B> tpoly<A>& operator∗= (tpoly< A > & p1, const B & c) [inline] The ∗= operator for tpoly<T>. template<typename T> tpoly<T> operator+ (const tpoly< T > & p1, const tpoly< T > & p2) [inline] The addition operator for polynomials with coefficients of the same type. template<typename T> tpoly<T>& operator+= (tpoly< T > & p1, const tpoly< T > & p2) [inline] The addition operator for polynomials with coefficients of the same type. template<typename T> ostream& operator<< (ostream & os, const tpoly< T > & p) [inline] The output operator for a polynomial. C.2.16 rand.hpp File Reference Functions • int myrand (int n) C.2.16.1 Function Documentation int myrand (int n) Returns a random number between 0 and (n - 1). C.2.17 rou_order.hpp File Reference #include "graph.hpp" #include "packet.hpp" #include <functional> Classes • class rou_order C.2 File Documentation C.2.18 117 simulation.hpp File Reference #include "graph.hpp" #include "matrixes.hpp" Functions • void sim_solution (const Graph &g, const fp_matrix &tm, int HL, int DL, pp_matrix &ptm, pt_matrix &ptm) C.2.18.1 Function Documentation void sim_solution (const Graph & g, const fp_matrix & tm, int HL, int DL, pp_matrix & ptm, pt_matrix & ptm) The simulative solver. Parameters: g the graph tm the traffic matrix HL the hop limit DL the distance limit ppm the result of the packet (p. 140) presence matrix ptm the result of the packet (p. 140) trajectory matrix See also: ana_solution (p. 100) C.2.19 sparse_matrix.hpp File Reference #include <cassert> #include <map> #include <ostream> #include <vector> Classes • class sparse_matrix< K, T > Functions • template<typename K, typename T> ostream & operator<< (ostream &os, const sparse_matrix< K, T > &mat) 118 DODATEK C. OPUS DOCUMENTATION C.2.19.1 Function Documentation template<typename K, typename T> ostream& operator<< (ostream & os, const sparse_matrix< K, T > & mat) [inline] Prints the matrix. C.2.20 tabdistro.hpp File Reference #include "counter.hpp" #include "distro_base.hpp" #include <functional> #include <iostream> #include <set> Classes • class tabdistro • class tabdistro::my_pair_order Functions • tabdistro operator+ (const tabdistro &d1, const tabdistro &d2) • tabdistro & operator+= (tabdistro &d1, const tabdistro &d2) C.2.20.1 Function Documentation tabdistro operator+ (const tabdistro & d1, const tabdistro & d2) The operator for adding two tabdistro (p. 146) distributions. Returns: the distribution that is the convolution of the two distributions. tabdistro& operator+= (tabdistro & d1, const tabdistro & d2) C.2.21 utils.hpp File Reference #include "edge_probs.hpp" #include "graph.hpp" #include "poisson.hpp" #include "polynomial.hpp" C.2 File Documentation 119 #include "sparse_matrix.hpp" #include "matrixes.hpp" #include <boost/regex.hpp> #include <cassert> #include <iostream> #include <map> #include <string> #include <vector> Defines • #define FOREACH_MATRIX_ELEMENT(MNAME, INAME, JNAME, ENAME, MatrixType) Functions void complete_graph (Graph &g) map< string, Vertex > get_vertex_names (const Graph &g) bool read_graphviz_filename (const char ∗file_name, Graph &g) bool load_tm_file (const char ∗file_name, const map< string, Vertex > &vertex_names, fp_matrix &tm) • bool load_tm (istream &is, const map< string, Vertex > &vertex_names, fp_matrix &tm) • template<typename T> ostream & operator<< (ostream &os, const vector< T > &v) • template<typename K, typename V> ostream & operator<< (ostream &os, const map< K, V > &v) • template<typename T> vector< T > & operator+= (vector< T > &v1, const vector< T > &v2) • template<typename T> T sum (const tpoly< T > &p) • template<typename T> tpoly< T > sum (const map< Vertex, tpoly< T > > &c) • int get_distance (Vertex i, Vertex j, const Graph &g) • int get_output_capacity (const Graph &g, Vertex j) • std::string path_to_string (Vertex i, Vertex j, const Graph &g) • std::string to_string (Edge e, const Graph &g) • void print_nn (const Graph &g, std::ostream &os) • void print_nl (const Graph &g, std::ostream &os) • void print_tm (const Graph &g, const fp_matrix &tm, std::ostream &os) • void print_sp (const Graph &g, std::ostream &os) • • • • 120 DODATEK C. OPUS DOCUMENTATION • • • • void print_pp (const Graph &g, std::ostream &os) void print_rp (const Graph &g, std::ostream &os) void print_input (const Graph &g, const fp_matrix &tm, std::ostream &os) void print_nf (const pp_matrix &ppm, const pt_matrix &ptm, const Graph &g, std::ostream &os) void print_ll (const map< Edge, double > &ll, const Graph &g, std::ostream &os) void print_pr (const pp_matrix &ppm, const pt_matrix &ptm, const Graph &g, std::ostream &os) void print_ppm (const pp_matrix &ppm, const Graph &g, std::ostream &os) void print_ptm (const pt_matrix &ptm, const Graph &g, std::ostream &os) void print_output (const pp_matrix &ppm, const pt_matrix &ptm, const Graph &g, std::ostream &os) void calculate_ll (const pt_matrix &ptm, map< Edge, double > &ll, const Graph &g) dist_poly node_dist_poly (Vertex j, Vertex i, const pp_matrix &ppm, bool admitted) dist_poly link_dist_poly (Edge e, Vertex i, const pt_matrix &ptm) edge_probs_map calc_edge_probs_map (const Graph &g, Vertex j, const pp_matrix &ppm, const pt_matrix &ptm) distro get_adm_distro (const pp_matrix &ppm, Vertex j, Vertex i) • • • • • • • • • • C.2.21.1 Define Documentation #define FOREACH_MATRIX_ELEMENT(MNAME, INAME, JNAME, ENAME, MatrixType) Value: for (MatrixType::const_iterator \ IIJS = MNAME.begin(); IIJS != MNAME.end(); ++IIJS) \ for(MatrixType::mapped_type::const_iterator \ JIJS = IIJS->second.begin(); JIJS!= IIJS->second.end(); ++JIJS) \ for(bool cont_ = true; cont_;) \ for(int INAME = IIJS->first; cont_;) \ for(int JNAME = JIJS->first; cont_;) \ for(const MatrixType::mapped_type::mapped_type \ &ENAME = JIJS->second; cont_; cont_ = false) Iterate over all elements of the matrix MNAME. The element has indexes INAME and JNAME, the reference to element is ENAME, and the matrix type is MatrixType. C.2.21.2 Function Documentation edge_probs_map calc_edge_probs_map (const Graph & g, Vertex j, const pp_matrix & ppm, const pt_matrix & ptm) Calculates the edge_probs_map for node j based on the ppm and ptm. C.2 File Documentation 121 void calculate_ll (const pt_matrix & ptm, map< Edge, double > & ll, const Graph & g) Calculate the link load based on the packet (p. 140) trajectory matrix. void complete_graph (Graph & g) This function calculates the shortes paths and packet (p. 140) preferences. The data for shortest paths are stored in vertex_distance and vertex_predecessor. The data for the packet (p. 140) preferences are stored in the vertex_bundle property. distro get_adm_distro (const pp_matrix & ppm, Vertex j, Vertex i) Returns the distribution with which packet (p. 140) were admitted at node j that go to node i. int get_distance (Vertex i, Vertex j, const Graph & g) Returns the distance of the shortest path from node i to node j in graph g. int get_output_capacity (const Graph & g, Vertex j) Returns the number of wavelengths that leave node j. map<string, Vertex> get_vertex_names (const Graph & g) This function returns the mapping between vertex names and vertexes. dist_poly link_dist_poly (Edge e, Vertex i, const pt_matrix & ptm) Returns a dist_poly for packets that traverse link e and that are destined to node i. bool load_tm (istream & is, const map< string, Vertex > & vertex_names, fp_matrix & tm) bool load_tm_file (const char ∗ file_name, const map< string, Vertex > & vertex_names, fp_matrix & tm) dist_poly node_dist_poly (Vertex j, bool admitted) Vertex i, const pp_matrix & ppm, Returns a dist_poly for packets that arrive at node j and that are destined to node i. If the flag admitted is true, we also consider the just-admitted packets. If j == i, then you get data on packets that go to local drop. If j != i, then you get data on packets that ask routing. 122 DODATEK C. OPUS DOCUMENTATION template<typename T> vector<T>& operator+= (vector< T > & v1, const vector< T > & v2) [inline] template<typename K, typename V> ostream& operator<< (ostream & os, const map< K, V > & v) [inline] This is the << operator for a map. template<typename T> ostream& operator<< (ostream & os, const vector< T > & v) [inline] This is the << operator for a vector. std::string path_to_string (Vertex i, Vertex j, const Graph & g) void print_input (const Graph & g, const fp_matrix & tm, std::ostream & os) Prints the input. void print_ll (const map< Edge, double > & ll, const Graph & g, std::ostream & os) This function prints the link loads. void print_nf (const pp_matrix & ppm, Graph & g, std::ostream & os) const pt_matrix & ptm, const This function prints the node flows. void print_nl (const Graph & g, std::ostream & os) Prints the information on the network links. void print_nn (const Graph & g, std::ostream & os) Prints the information on the network nodes. void print_output (const pp_matrix & ppm, const pt_matrix & ptm, const Graph & g, std::ostream & os) Prints the output. void print_pp (const Graph & g, std::ostream & os) Prints the information on packet (p. 140) preferences. C.2 File Documentation 123 void print_ppm (const pp_matrix & ppm, const Graph & g, std::ostream & os) This function prints the packet (p. 140) presence matrix. void print_pr (const pp_matrix & ppm, Graph & g, std::ostream & os) const pt_matrix & ptm, const This function prints the probabilities of routing packets. void print_ptm (const pt_matrix & ptm, const Graph & g, std::ostream & os) This function prints the packet (p. 140) trajectory matrix. void print_rp (const Graph & g, std::ostream & os) Prints the routing priorities. void print_sp (const Graph & g, std::ostream & os) Prints the information on the shortest paths. void print_tm (const Graph & g, const fp_matrix & tm, std::ostream & os) Prints the information on the demands. bool read_graphviz_filename (const char ∗ file_name, Graph & g) This function reads graphviz file from a file, not a stream as the read_graphviz function does. Returns: true if successful, false otherwise template<typename T> tpoly<T> sum (const map< Vertex, tpoly< T > > & c) [inline] Returns the sum of all tpoly (p. 149) objects in the map. template<typename T> T sum (const tpoly< T > & p) [inline] Returns the sum of coefficients for tpoly (p. 149). std::string to_string (Edge e, const Graph & g) 124 DODATEK C. OPUS DOCUMENTATION C.2.22 utils_ana.hpp File Reference #include "distro.hpp" #include "edge_probs.hpp" #include "graph.hpp" #include "matrixes.hpp" #include <map> Functions • void make_hop (const Graph &g, const map< Vertex, dist_poly > &v, const trans_matrix &T, map< Vertex, dist_poly > &result, map< Edge, dist_poly > &used_links) • map< Vertex, double > admit_ana (distro &apd, int v, const map< Vertex, double > &betas) • map< Vertex, distro > admit_ana_distro (distro &apd, int v, const map< Vertex, double > &betas) • void route_arr (const Graph &g, Vertex j, const map< Vertex, int > &arr, edge_count_map &count) • void arr_route_prob (const Graph &g, Vertex j, const map< Vertex, int > &arr, edge_probs_map &probs) • void route_ana (const Graph &g, Vertex j, const map< Vertex, distro > &mus, edge_probs_map &probs) C.2.22.1 Function Documentation map<Vertex, double> admit_ana (distro & apd, int v, const map< Vertex, double > & betas) This function calculates the average number of admitted packets based on the average number of packets in transit alpha_prime, the output capacity v, and the mean rates of demands given by beta. The return value is the map of mean rates of the admitted packets. Parameters: apd the distribution of alpha_prime, i.e. the number of packets in transit v the output capacity of the node betas the mean rates of packets asking admission map<Vertex, distro> admit_ana_distro (distro & apd, int v, const map< Vertex, double > & betas) This function returns the distribution of the admitted demands. Now the returned distributions are Poisson with the mean rates returned by function admit_ana. C.2 File Documentation 125 Parameters: apd the distribution of alpha_prime, i.e. the number of packets in transit v the output capacity of the node betas the mean rates of packets asking admission void arr_route_prob (const Graph & g, Vertex j, const map< Vertex, int > & arr, edge_probs_map & probs) This function calculates the probabilities of routing for packets in a specific arrangement for node j. The input are graph g, node j, arrangement arr, and the results are returned in epm. As the output we get a map of edge_probs which stores the routing probabilities, i.e. the probabilities that packets traverse specific output edges. Parameters: g the graph j the current node arr the arrangement, there are exactly arr[i] packets going to node i epm the routing probabilities, element epm[i][e] is the probability that packets destined to node i are routed to link e void make_hop (const Graph & g, const map< Vertex, dist_poly > & v, const trans_matrix & T, map< Vertex, dist_poly > & result, map< Edge, dist_poly > & used_links) Performs this operation: result = v ∗ T void route_ana (const Graph & g, Vertex j, const map< Vertex, distro > & mus, edge_probs_map & probs) This function calculates the routing probabilities with analysis. As the input we need graph g and node j for which probabilities are calculated. Element mus[i] tells the rate of packets that are destined to node i. As the output we get a map of edge_probs which stores the routing probabilities, i.e. the probabilities that packets traverse specific output edges. Parameters: g the graph j the node for which the routing probabilities are calculated mus the distros of packets asking routing; element mus[i] is the distro (p. 132) of packets going to node i epm the routing probabilities, element epm[i][e] is the probability that packets destined to node i are routed to link e 126 DODATEK C. OPUS DOCUMENTATION void route_arr (const Graph & g, Vertex j, const map< Vertex, int > & arr, edge_count_map & count) This function returns the number of packets that should be sent along an edge. Parameters: g the graph j the current node arr the arrangement, there are exactly arr[i] packets going to node i count the element[i][e] is the number of packets destined to node i that should be sent along edge e C.2.23 utils_sim.hpp File Reference #include "edge_probs.hpp" #include "graph.hpp" #include "matrixes.hpp" #include "distro.hpp" #include <map> #include <gsl/gsl_rng.h> Functions • void report_packet_presence (Vertex v, const packet &pkt, ppc_matrix &ppcm) • void report_packet_transition (Edge e, const packet &pkt, ptc_matrix &ptcm) • void process_packets (const Graph &g, Vertex j, timeslot ts, map< Vertex, waiting_pkts > &pqv, waiting_pkts &local_add, waiting_pkts &local_drop, ppcm_matrix &ppcmm, ptcm_matrix &ptcmm, int HL, int DL) • int calc_nr_in_transit (const map< Vertex, waiting_pkts > &pqv, Vertex j, timeslot ts) • void delete_waiting_pkts (waiting_pkts &wp) • void fill_local_add (waiting_pkts &local_add, Vertex j, Vertex i, timeslot ts, const fp_matrix &tm, gsl_rng ∗rng) • void ppcmm2ppm (const ppcm_matrix &ppcmm, pp_matrix &ppm, int time_slots) • void ptcmm2ptm (const ptcm_matrix &ptcmm, pt_matrix &ptm, int time_slots) • void cmp2dp (const count_map_poly &cp, dist_poly &dp, int time_slots) • ppcm_matrix & operator+= (ppcm_matrix &ppcmm, const ppc_matrix &ppcm) C.2 File Documentation C.2.23.1 127 Function Documentation int calc_nr_in_transit (const map< Vertex, waiting_pkts > & pqv, Vertex j, timeslot ts) Calculates the number of packets in transit at node j during the time slot ts based on the information in the packet (p. 140) queue per vector. Parameters: pqv the packet (p. 140) queue per vector j the vertex for which we calculate the number ts the time slot for which we calculate the number Returns: the number of packets in transit void cmp2dp (const count_map_poly & cp, dist_poly & dp, int time_slots) Converts a count_map_poly to a dist_poly. void delete_waiting_pkts (waiting_pkts & wp) Deletes the packets from the given structure. Parameters: wp the structure with packets to delete void fill_local_add (waiting_pkts & local_add, Vertex j, Vertex i, timeslot ts, const fp_matrix & tm, gsl_rng ∗ rng) Put the packets into the local_add queue. Parameters: local_add the place where packets will be put j the current node i the destination node ts the time slot tm the traffic matrix rng the random number generator ptcm_matrix & operator+= (ppcm_matrix & ppcmm, const ppc_matrix & ppcm) Adds to the ppcm_matrix object the ppc_matrix object. Adds to the ptcm_matrix object the ptc_matrix object. 128 DODATEK C. OPUS DOCUMENTATION void ppcmm2ppm (const ppcm_matrix & ppcmm, pp_matrix & ppm, int time_slots) This function converts a ppcm_matrix to pp_matrix. void process_packets (const Graph & g, Vertex j, timeslot ts, map< Vertex, waiting_pkts > & pqv, waiting_pkts & local_add, waiting_pkts & local_drop, ppcm_matrix & ppcmm, ptcm_matrix & ptcmm, int HL, int DL) This function is called to process packets at a node. This function is called for a single node – the node where packets are routed. The function knows how to route the packets, because it knows the network topology with the g parameter. void ptcmm2ptm (const ptcm_matrix & ptcmm, time_slots) pt_matrix & ptm, int This function converts a ptc_matrix to pt_matrix. void report_packet_presence (Vertex v, const packet & pkt, ppc_matrix & ppcm) We use this function to report the presence of packets. This function fills in the matrix of packet (p. 140) presence. The packet (p. 140) pkt is present at node v. void report_packet_transition (Edge e, const packet & pkt, ptc_matrix & ptcm) We use this function to report the transition of packets. This function fills in the matrix of packet (p. 140) trajectories. The packet (p. 140) pkt transits along link e. C.3 C.3.1 Class Documentation arguments Struct Reference #include <arguments.hpp> Public Attributes • string graphviz_filename The name of the graph file. • string tm_filename The name of the traffic matrix file. C.3 Class Documentation 129 • int HL Hop limit. • int DL Distance limit. • method_type method Either analysis or simulation. C.3.1.1 Detailed Description These are the program arguments (p. 128). In this single class we store all information passed at the command line. C.3.1.2 Member Data Documentation string arguments::graphviz_filename The name of the graph file. string arguments::tm_filename The name of the traffic matrix file. int arguments::HL Hop limit. int arguments::DL Distance limit. method_type arguments::method Either analysis or simulation. The documentation for this struct was generated from the following file: • arguments.hpp C.3.2 arr_queue Class Reference #include <arr_queue.hpp> 130 DODATEK C. OPUS DOCUMENTATION Public Member Functions • arr_queue (const vector< distro > &d) • bool find_next (vector< int > &next_arr, double &prob) Friends • ostream & operator<< (ostream &out, const arr_queue &q) C.3.2.1 Detailed Description The queue of the most probable arrangements. C.3.2.2 Constructor & Destructor Documentation arr_queue::arr_queue (const vector< distro > & d) The constructor only needs the distributions. Parameters: d the vector of distributions for each group C.3.2.3 Member Function Documentation bool arr_queue::find_next (vector< int > & next_arr, double & prob) This function tries to find the next most probable arrangement of packets. Not only it returns the most probable arrangement, but also replenishes the queue with new arrangements. Parameters: next_arr keeps the next arrangement prob keeps the probability of the next arrangement Returns: false if there is no other arrangement C.3.2.4 Friends And Related Function Documentation ostream& operator<< (ostream & out, const arr_queue & q) [friend] Prints the queue to stream. The documentation for this class was generated from the following file: • arr_queue.hpp C.3 Class Documentation C.3.3 131 cmp_pref< G > Class Template Reference #include <packet.hpp> Public Member Functions • cmp_pref (const typename graph_traits< G >::vertex_descriptor &_i, const G &_g) • bool operator() (const Edge &a, const Edge &b) C.3.3.1 Detailed Description template<typename G> class cmp_pref< G > This is a function object to compare preferences of a packet (p. 140), which we use for sorting packet (p. 140) preferences. For this task we need to know the graph (Vertex i in the constructor) and where the packets is going (graph g in the constructor). C.3.3.2 Constructor & Destructor Documentation template<typename G> cmp_pref< G >::cmp_pref (const typename graph_traits< G >::vertex_descriptor & _i, const G & _g) [inline] C.3.3.3 Member Function Documentation template<typename G> bool cmp_pref< G >::operator() (const Edge & a, const Edge & b) [inline] The documentation for this class was generated from the following file: • packet.hpp C.3.4 counter< T > Class Template Reference #include <counter.hpp> Public Member Functions • counter () • counter (const counter &) • ∼counter () 132 DODATEK C. OPUS DOCUMENTATION Static Public Member Functions • static size_t how_many () Returns the number of objects alive. C.3.4.1 Detailed Description template<typename T> class counter< T > This class keeps track of the number of objects of your class. To use it, derive your class privatelly from it. And then make the how_many function publically available in your class. The how_many class will tell the number of all objects of your class, be it static, global, automatic or dynamic. Example: class my_class: private counter<my_class> { ... public: using counter<my_class>::how_many (p. 132); }; C.3.4.2 Constructor & Destructor Documentation template<typename T> counter< T >::counter () [inline] template<typename T> counter< T >::counter (const counter< T > &) [inline] template<typename T> counter< T >::∼counter () [inline] C.3.4.3 Member Function Documentation template<typename T> static size_t counter< T >::how_many () [inline, static] Returns the number of objects alive. The documentation for this class was generated from the following file: • counter.hpp C.3.5 distro Class Reference #include <distro.hpp> C.3 Class Documentation 133 Inheritance diagram for distro:: counter< distro > distro Public Member Functions • • • • • • • • • • • • • distro () distro (const distro_base &db) distro (const distro &d) ∼distro () distro & operator= (const distro &d) bool exists_ith_max (int i) prob_pair get_ith_max (int i) double get_prob (int i) string to_tabular () const double mean () const bool is_nodistro () const distro & operator+= (const distro &d) distro & operator∗= (double p) Friends • ostream & operator<< (ostream &o, const distro &b) C.3.5.1 Detailed Description The envelope class for probability distributions. We define it all inline to make it faster, because it’s small and frequently used. C.3.5.2 Constructor & Destructor Documentation distro::distro () [inline] The default constructor created a nodistro (p. 138) object. distro::distro (const distro_base & db) [inline] Pass the distribution that you want the dist to have. This distribution is copied, and you should make sure that you destroy it. 134 DODATEK C. OPUS DOCUMENTATION Parameters: db the distribution References distro_base::clone(). distro::distro (const distro & d) [inline] Copy constructor. References distro_base::clone(), and db. distro::∼distro () [inline] C.3.5.3 Member Function Documentation distro& distro::operator= (const distro & d) [inline] The assignment operator destroys the object currently stored, and clones the right-hand side object for itself. References distro_base::clone(), and db. bool distro::exists_ith_max (int i) [inline] Lets you know whether the distribution has the i-th most probable value. We start counting i from 0. Parameters: i the number of the i-th most probable value Returns: true if the i-th most probable value exists References distro_base::exists_ith_max(). prob_pair distro::get_ith_max (int i) [inline] Returns i-th pair, where get(i).first is the i-th largest probability, and get(i).second is the value of the random variable for which we get this probability. We start counting i from 0. Parameters: i the number of the i-th most probable value References distro_base::get_ith_max(). C.3 Class Documentation 135 double distro::get_prob (int i) [inline] Returns the probability for the given value of the random variable. Parameters: i the value of the random variable Returns: the probability for this value References distro_base::get_prob(). string distro::to_tabular () const [inline] Returns the string that describes the distribution in a table. In each line we print "x P(x)", where x is the value of the random variable, and P(x) is the probability of getting this value. For each next printed line, the x is greater. References distro_base::to_tabular(). double distro::mean () const [inline] Returns the mean of the distribution. References distro_base::mean(). bool distro::is_nodistro () const [inline] Returns true if the distribution is nodistro (p. 138). distro& distro::operator+= (const distro & d) Adding distros. This function is more complicated, so we leave the implementation for a separate file. distro& distro::operator∗= (double p) The operator for getting a new distribution of packets if packets are let through with probability p. C.3.5.4 Friends And Related Function Documentation ostream& operator<< (ostream & o, const distro & b) [friend] The output operator for the distro (p. 132). It describes the distro (p. 132) in a way that can be printed in a single line. This is used to print one polynomial in single line. The documentation for this class was generated from the following file: • distro.hpp 136 C.3.6 DODATEK C. OPUS DOCUMENTATION distro_base Class Reference #include <distro_base.hpp> Inheritance diagram for distro_base:: counter< distro_base > distro_base nodistro poisson tabdistro Public Member Functions • virtual ∼distro_base () • virtual distro_base ∗ clone () const =0 • virtual bool exists_ith_max (int i) const =0 • virtual prob_pair get_ith_max (int i) const =0 • virtual double get_prob (int i) const =0 • virtual string to_tabular () const =0 • virtual double mean () const =0 • virtual void output (ostream &out) const =0 C.3.6.1 Detailed Description The base class for probability distributions. C.3.6.2 Constructor & Destructor Documentation virtual distro_base::∼distro_base () [inline, virtual] We need to make it virtual, so that derived objects are destroyed appropriately. C.3.6.3 Member Function Documentation virtual distro_base∗ distro_base::clone () const [pure virtual] Clones the distribution. Implemented in nodistro (p. 139), poisson (p. 143), and tabdistro (p. 147). Referenced by distro::distro(), and distro::operator=(). C.3 Class Documentation 137 virtual bool distro_base::exists_ith_max (int i) const [pure virtual] Lets you know whether the distribution has the i-th most probable value. We start counting i from 0. Parameters: i the number of the i-th most probable value Returns: true if the i-th most probable value exists Implemented in nodistro (p. 139), poisson (p. 143), and tabdistro (p. 147). Referenced by distro::exists_ith_max(). virtual prob_pair distro_base::get_ith_max (int i) const [pure virtual] Returns i-th pair, where get(i).first is the i-th largest probability, and get(i).second is the value of the random variable for which we get this probability. We start counting i from 0. Parameters: i the number of the i-th most probable value Implemented in nodistro (p. 139), poisson (p. 144), and tabdistro (p. 147). Referenced by distro::get_ith_max(). virtual double distro_base::get_prob (int i) const [pure virtual] Returns the probability for the given value of the random variable. Parameters: i the value of the random variable Returns: the probability for this value Implemented in nodistro (p. 139), poisson (p. 144), and tabdistro (p. 148). Referenced by distro::get_prob(). virtual string distro_base::to_tabular () const [pure virtual] See distro::to_tabular (p. 135). Implemented in nodistro (p. 139), poisson (p. 144), and tabdistro (p. 148). Referenced by distro::to_tabular(). 138 DODATEK C. OPUS DOCUMENTATION virtual double distro_base::mean () const [pure virtual] Returns the mean of the distribution. Implemented in nodistro (p. 140), poisson (p. 144), and tabdistro (p. 148). Referenced by distro::mean(). virtual void distro_base::output (ostream & out) const [pure virtual] Outputs the distro (p. 132) info into a stream. Implemented in nodistro (p. 140), poisson (p. 144), and tabdistro (p. 148). The documentation for this class was generated from the following file: • distro_base.hpp C.3.7 nodistro Class Reference #include <nodistro.hpp> Inheritance diagram for nodistro:: counter< distro_base > distro_base counter< nodistro > nodistro Public Member Functions • bool exists_ith_max (int i) const • nodistro ∗ clone () const • prob_pair get_ith_max (int i) const • double get_prob (int i) const • string to_tabular () const • double mean () const • void output (ostream &out) const C.3.7.1 Detailed Description This distribution returns probability 1 for value 0, and 0 for all other values. It’s the null distribution. C.3 Class Documentation C.3.7.2 139 Member Function Documentation bool nodistro::exists_ith_max (int i) const [virtual] Lets you know whether the distribution has the i-th most probable value. We start counting i from 0. Parameters: i the number of the i-th most probable value Returns: true if the i-th most probable value exists Implements distro_base (p. 137). nodistro∗ nodistro::clone () const [virtual] Clones the distribution. Implements distro_base (p. 136). prob_pair nodistro::get_ith_max (int i) const [virtual] Returns i-th pair, where get(i).first is the i-th largest probability, and get(i).second is the value of the random variable for which we get this probability. We start counting i from 0. Parameters: i the number of the i-th most probable value Implements distro_base (p. 137). double nodistro::get_prob (int i) const [virtual] Returns the probability for the given value of the random variable. Parameters: i the value of the random variable Returns: the probability for this value Implements distro_base (p. 137). string nodistro::to_tabular () const [virtual] See distro::to_tabular (p. 135). Implements distro_base (p. 137). 140 DODATEK C. OPUS DOCUMENTATION double nodistro::mean () const [virtual] Returns the mean of the distribution. Implements distro_base (p. 138). void nodistro::output (ostream & out) const [virtual] Outputs the distro (p. 132) info into a stream. Implements distro_base (p. 138). The documentation for this class was generated from the following file: • nodistro.hpp C.3.8 packet Struct Reference #include <packet.hpp> Public Member Functions • packet (Vertex _src, Vertex _dst, timeslot _start_ts) Public Attributes • • • • • • int ID int hops Vertex src Vertex dst timeslot start_ts timeslot next_ts Static Public Attributes • static int next_ID C.3.8.1 Detailed Description The packet (p. 140) structure. There is a close match between the packet (p. 140) struct and the packet_prefs (p. 141). C.3.8.2 Constructor & Destructor Documentation packet::packet (Vertex _src, Vertex _dst, timeslot _start_ts) [inline] C.3 Class Documentation C.3.8.3 141 Member Data Documentation int packet::ID Every packet (p. 140) has a unique ID. I introduced it for debugging. int packet::next_ID [static] The next available ID for a packet (p. 140). int packet::hops This keeps the number of hops the packet (p. 140) made. Vertex packet::src The source of the packet (p. 140). Vertex packet::dst The destination of the packet (p. 140). timeslot packet::start_ts The start timeslot: the timeslot a packet (p. 140) was admitted into the network. timeslot packet::next_ts The next timeslot: the timeslot at which the packet (p. 140) arrives at the next node. The next node can be both an intermediate node or the destination node. Referenced by pkt_next_ts_cmp::operator()(). The documentation for this struct was generated from the following file: • packet.hpp C.3.9 packet_prefs Class Reference #include <packet.hpp> Public Attributes • int cls • Vertex dest C.3.9.1 Detailed Description Stores the preferred output edges of a packet (p. 140). 142 C.3.9.2 DODATEK C. OPUS DOCUMENTATION Member Data Documentation int packet_prefs::cls The class of the packet (p. 140). Referenced by make_prefs(). Vertex packet_prefs::dest The destination of the packet (p. 140). Referenced by make_prefs(). The documentation for this class was generated from the following file: • packet.hpp C.3.10 pkt_next_ts_cmp Class Reference #include <packet.hpp> Public Member Functions • bool operator() (const packet ∗a, const packet ∗b) const C.3.10.1 Detailed Description Compares two packets based on the next_ts field. This is used to sort packets based on time slots at which packets arrive at their next nodes. C.3.10.2 Member Function Documentation bool pkt_next_ts_cmp::operator() (const packet ∗ a, const packet ∗ b) const [inline] References packet::next_ts. The documentation for this class was generated from the following file: • packet.hpp C.3.11 poisson Class Reference #include <poisson.hpp> Inheritance diagram for poisson:: C.3 Class Documentation 143 counter< distro_base > distro_base counter< poisson > poisson Public Member Functions • • • • • • • • poisson (double lambda) poisson ∗ clone () const bool exists_ith_max (int i) const prob_pair get_ith_max (int i) const double get_prob (int i) const string to_tabular () const void output (ostream &out) const double mean () const Static Public Member Functions • static int mode (double lambda) C.3.11.1 Constructor & Destructor Documentation poisson::poisson (double lambda) C.3.11.2 Member Function Documentation poisson∗ poisson::clone () const [virtual] Clones the distribution. Implements distro_base (p. 136). bool poisson::exists_ith_max (int i) const [virtual] Lets you know whether the distribution has the i-th most probable value. We start counting i from 0. Parameters: i the number of the i-th most probable value Returns: true if the i-th most probable value exists Implements distro_base (p. 137). 144 DODATEK C. OPUS DOCUMENTATION prob_pair poisson::get_ith_max (int i) const [virtual] Returns i-th pair, where get(i).first is the i-th largest probability, and get(i).second is the value of the random variable for which we get this probability. We start counting i from 0. Parameters: i the number of the i-th most probable value Implements distro_base (p. 137). double poisson::get_prob (int i) const [virtual] Returns the probability for the given value of the random variable. Parameters: i the value of the random variable Returns: the probability for this value Implements distro_base (p. 137). string poisson::to_tabular () const [virtual] See distro::to_tabular (p. 135). Implements distro_base (p. 137). void poisson::output (ostream & out) const [virtual] Outputs the distro (p. 132) info into a stream. Implements distro_base (p. 138). double poisson::mean () const [virtual] Returns the mean of the distribution. Implements distro_base (p. 138). static int poisson::mode (double lambda) [static] Returns k for which poisson(k, lambda) is maximal. The documentation for this class was generated from the following file: • poisson.hpp C.3 Class Documentation C.3.12 145 rou_order Class Reference #include <rou_order.hpp> Public Member Functions • rou_order (const Graph &_g, const Vertex _j) • bool operator() (const Vertex &v1, const Vertex &v2) const C.3.12.1 Detailed Description With this class we establish the order of routing packets. C.3.12.2 Constructor & Destructor Documentation rou_order::rou_order (const Graph & _g, const Vertex _j) C.3.12.3 Member Function Documentation bool rou_order::operator() (const Vertex & v1, const Vertex & v2) const The function operators that establishes the order. The documentation for this class was generated from the following file: • rou_order.hpp C.3.13 sparse_matrix< K, T > Class Template Reference #include <sparse_matrix.hpp> Public Member Functions • T at (K i, K j) const • bool exists (K i, K j) const C.3.13.1 Detailed Description template<typename K, typename T> class sparse_matrix< K, T > Implements a sparse matrix. Therefore the implementation isn’t based on a vector, but on a map. The important thing to know is that when you addess the matrix with exactly one index, then you get a map, and that map gives elements in a row. 146 DODATEK C. OPUS DOCUMENTATION C.3.13.2 Member Function Documentation template<typename K, typename T> T sparse_matrix< K, T >::at (K i, K j) const [inline] This function returns the value of an element. Make sure you can call this function with function "exists," otherwise this function could fail with an assertion. template<typename K, typename T> bool sparse_matrix< K, T >::exists (K i, K j) const [inline] Returns true if the element exists or false otherwise. The documentation for this class was generated from the following file: • sparse_matrix.hpp C.3.14 tabdistro Class Reference #include <tabdistro.hpp> Inheritance diagram for tabdistro:: counter< distro_base > distro_base counter< tabdistro > tabdistro Public Member Functions • • • • • • • • • • • • tabdistro () tabdistro ∗ clone () const size_t size () const bool exists_ith_max (int i) const prob_pair get_ith_max (int i) const double get_prob (int i) const bool set_prob (const prob_pair &p) bool operator== (const tabdistro &) const bool operator!= (const tabdistro &) const string to_tabular () const void output (ostream &out) const double mean () const C.3 Class Documentation 147 Classes • class my_pair_order C.3.14.1 Detailed Description This distribution is given by the user. It’s the tabular distribution, i.e. it’s given by a table. C.3.14.2 Constructor & Destructor Documentation tabdistro::tabdistro () C.3.14.3 Member Function Documentation tabdistro∗ tabdistro::clone () const [virtual] Clones the distribution. Implements distro_base (p. 136). size_t tabdistro::size () const Returns the number of values for the random variable. bool tabdistro::exists_ith_max (int i) const [virtual] Lets you know whether the distribution has the i-th most probable value. We start counting i from 0. Parameters: i the number of the i-th most probable value Returns: true if the i-th most probable value exists Implements distro_base (p. 137). prob_pair tabdistro::get_ith_max (int i) const [virtual] Returns i-th pair, where get(i).first is the i-th largest probability, and get(i).second is the value of the random variable for which we get this probability. We start counting i from 0. Parameters: i the number of the i-th most probable value Implements distro_base (p. 137). 148 DODATEK C. OPUS DOCUMENTATION double tabdistro::get_prob (int i) const [virtual] Returns the probability for the given value of the random variable. Parameters: i the value of the random variable Returns: the probability for this value Implements distro_base (p. 137). bool tabdistro::set_prob (const prob_pair & p) Inserts the pair to the distribution. Parameters: p the pair to insert Returns: true if insertion successful bool tabdistro::operator== (const tabdistro &) const bool tabdistro::operator!= (const tabdistro &) const string tabdistro::to_tabular () const [virtual] See distro::to_tabular (p. 135). Implements distro_base (p. 137). void tabdistro::output (ostream & out) const [virtual] Outputs the distro (p. 132) info into a stream. Implements distro_base (p. 138). double tabdistro::mean () const [virtual] Returns the mean of the distribution. Implements distro_base (p. 138). The documentation for this class was generated from the following file: • tabdistro.hpp C.3 Class Documentation C.3.15 149 tpoly< T > Class Template Reference #include <polynomial.hpp> Inheritance diagram for tpoly< T >:: counter< tpoly< T > > tpoly< T > Public Types • typedef size_t size_type Public Member Functions • • • • tpoly () tpoly (const T &c_0) T & operator[ ] (size_type i) tpoly & operator() (const T c_i, size_type i) Static Public Member Functions • static int get_S () • static void set_S (size_type S) C.3.15.1 Detailed Description template<typename T> class tpoly< T > This is the polynomial class. They can be regular polynomials, but also modulo polynomials. A modulo polynomial belongs to the ring of polynomials modulo $x∧ S$ over the field of real numbers. But what it really means is that no matter what polynomials you multiply, the resulting polynomial is going to be of at most (S - 1) degree, i.e. there will be no terms that have the power equal or higher then S. We achieve this easily in the multiplication operators defined for this type: we just discard the terms with too high a power. C.3.15.2 Member Typedef Documentation template<typename T> typedef size_t tpoly< T >::size_type The type for indexing the polynomial coefficients. 150 DODATEK C. OPUS DOCUMENTATION C.3.15.3 Constructor & Destructor Documentation template<typename T> tpoly< T >::tpoly () [inline] template<typename T> tpoly< T >::tpoly (const T & c_0) [inline] With this constructor you can get a polynomial with the c0 (the term of the lowest order) initialized. References tpoly< T >::operator[ ](). C.3.15.4 Member Function Documentation template<typename T> T& tpoly< T >::operator[ ] (size_type i) [inline] We need to overload this operator, because we have to care about the degree of the polynomial. Referenced by tpoly< T >::operator()(), and tpoly< T >::tpoly(). template<typename T> tpoly& tpoly< T >::operator() (const T c_i, size_type i) [inline] Sets a coefficient at the i-th power to c_i. Parameters: c_i the coefficient value i the index value Returns: the polynomial References tpoly< T >::operator[ ](). template<typename T> static int tpoly< T >::get_S () [inline, static] Returns the value of S. template<typename T> static void tpoly< T >::set_S (size_type S) [inline, static] Sets the value of S. The documentation for this class was generated from the following file: • polynomial.hpp Spis rysunków 1.1 1.2 1.3 Ogólny schemat sieci z optycznym przełączaniem pakietów, gdzie „SD” to sieć dostępowa, „WB” to węzeł brzegowy, a „WS” to węzeł szkieletowy. . . . 4 Optyczny przełącznik pakietów firmy Yokogawa (użyto za pozwoleniem firmy Yokogawa). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Komponenty optyczne: (a) multiplekser, (b) demultiplekser, (c) sprzęgacz, (d) rozgałęziacz, (e) stały konwerter długości fali, (f) nastawny konwerter długości fali, (g) bramka optyczna, (h) wzmacniacz optyczny, (i) optyczna linia opóźniająca, (j) przełącznik typu 2 × 2, (k) element AWG typu N × N . 7 1.4 Ogólny schemat węzła. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5 Przełącznik typu „rozgłaszanie i wybieranie”. . . . . . . . . . . . . . . . . . 9 1.6 Przełącznik oparty na AWG. . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.7 Bufory optyczne: (a) cyrkulacyjny; (b) kaskadowy. . . . . . . . . . . . . . . 11 2.1 Sieć przetasowana o rozmiarze n = 2 (8 węzłów). . . . . . . . . . . . . . . . 18 2.2 Węzeł typu 2 × 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3 Najmniej pomyślny sposób dostarczenia pakietu. . . . . . . . . . . . . . . . 20 2.4 Przepustowość sieci o rozmiarach n = 1, . . . , 7. . . . . . . . . . . . . . . . . 28 2.5 Prawdopodobieństwo dostarczenia pakietu dla sieci o rozmiarach n = 1, 4, 7. 29 2.6 Prawdopodobieństwo usunięcia pakietu dla sieci o rozmiarze n = 5 i liczbie dozwolonych odbić S = 1, 2, 4, 6. . . . . . . . . . . . . . . . . . . . . . . . . 29 2.7 Prawdopodobieństwo dostarczenia pakietu dla sieci o rozmiarze n = 5 i liczbie dozwolonych odbić S = 1, 2, 4, 6. . . . . . . . . . . . . . . . . . . . . . . 30 3.1 Torus kraty dwuwymiarowej z szesnastoma węzłami. 3.2 Węzeł typu 4 × 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 . . . . . . . . . . . . 35 152 SPIS RYSUNKÓW 3.3 Prawdopodobieństwo utraty pakietu w funkcji liczby skoków dla czterech wartości obciążenia sieci u i stałego progu S = 10. . . . . . . . . . . . . . . 45 3.4 Prawdopodobieństwo utraty pakietu w funkcji liczby skoków dla czterech wartości progu S i stałego obciążenia sieci u = 0.47. . . . . . . . . . . . . . 45 3.5 Prawdopodobieństwo utraty pakietu w sieci ze stu węzłami w funkcji obciążenia sieci u i progu S. . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.1 Wejścia i wyjścia węzła i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2 Średnie częstości pakietów w węźle i. . . . . . . . . . . . . . . . . . . . . . 51 4.3 Przykładowa sieć, gdzie pierwsza liczba etykiety światłowodu oznacza długość światłowodu, a druga liczbę długości fali. . . . . . . . . . . . . . . . . 53 4.4 Wyznaczone analitycznie i symulacyjnie rozkłady prawdopodobieństwa liczby pakietów w tranzycie w węźle 2. . . . . . . . . . . . . . . . . . . . . 59 4.5 Wyznaczone analitycznie i symulacyjnie rozkłady prawdopodobieństwa liczby dopuszczonych pakietów w węźle 2 podróżujących do węzła 5. . . . . 60 4.6 Wyznaczone analitycznie i symulacyjnie rozkłady prawdopodobieństwa liczby pakietów podróżujących do węzła 3, które żądają rutingu w węźle 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.7 Uproszczona topologia sieci PIONIER. . . . . . . . . . . . . . . . . . . . . 69 B.1 Rzeczywista topologia sieci PIONIER. . . . . . . . . . . . . . . . . . . . . 86 B.2 Ruch dla sieci TPNet (Telekomunikacja Polska). . . . . . . . . . . . . . . . 86 B.3 Ruch dla sieci ACONet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 B.4 Ruch dla sieci BELNET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 B.5 Ruch dla sieci BASNET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 B.6 Ruch dla sieci SWITCH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 B.7 Ruch dla sieci CESNET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 B.8 Ruch dla sieci DFN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 B.9 Ruch dla sieci EENet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 B.10 Ruch dla sieci RedIris. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 B.11 Ruch dla sieci FUNET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 B.12 Ruch dla sieci RENATER. . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 SPIS RYSUNKÓW 153 B.13 Ruch dla sieci GRNet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 B.14 Ruch dla sieci CARNET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 B.15 Ruch dla sieci HUNGARNET. . . . . . . . . . . . . . . . . . . . . . . . . . 93 B.16 Ruch dla sieci HEANet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 B.17 Ruch dla sieci GARR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 B.18 Ruch dla sieci LITNET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 B.19 Ruch dla sieci SURFNET. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 B.20 Ruch dla sieci UNINET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 B.21 Ruch dla sieci FCCN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 B.22 Ruch dla sieci ARNES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 B.23 Ruch dla sieci SANET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 B.24 Ruch dla sieci UKERNA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 154 SPIS RYSUNKÓW Spis tabel 3.1 Liczba kombinacji klas pakietów i liczba kombinacji żądanych wyjść dla węzła typu 4 × 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2 Kombinacje żądanych wyjść dla pakietu w węźle typu 4 × 4 w zależności od klasy tego pakietu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.3 Wyniki symulacyjne i analityczne dla węzła typu 4 × 4 gdy obciążenie wejść wynosi u = 0.1 i prawdopodobieństwa klas pakietów wynoszą V = (0.4, 0.2, 0.1, 0.3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1 Macierz ruchu dla sieci pokazanej na rysunku 4.3. . . . . . . . . . . . . . . 53 4.2 Siedem najbardziej prawdopodobnych układów pakietów dla Λ = (3, 11). . 57 4.3 Własności pakietów w węźle 2. . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.4 Uzyskane analitycznie i symulacyjnie prawdopodobieństwa rutingu w węźle 2 w zależności od węzła docelowego i światłowodu wyjściowego. . . . . . . 64 4.5 Opis wizyt pakietów dla żądania (5, 1). . . . . . . . . . . . . . . . . . . . . 66 4.6 Wielomiany qa,b,h,i,j (x) dla żądania (5, 1). . . . . . . . . . . . . . . . . . . . 66 4.7 Numery węzłów dla sieci pokazanej na rysunku 4.7. . . . . . . . . . . . . . 69 4.8 Macierz ruchu dla sieci pokazanej na rysunku 4.7. . . . . . . . . . . . . . . 70 4.9 Wykorzystanie połączeń dla sieci pokazanej na rysunku 4.7 obciążonej macierzą ruchu daną tabelą 4.8. . . . . . . . . . . . . . . . . . . . . . . . . . . 71 B.1 Długości światłowodów: przyjęte w modelu i rzeczywiste. . . . . . . . . . . 85 156 SPIS TABEL Bibliografia [1] R. Ramaswami and K. N. Sivarajan, Optical networks: a practical perspective, 2nd ed. Morgan Kaufmann, 2002. [2] B. Mukherjee, Optical WDM networks. Springer, 2006. [3] G. Bonaventura, G. Jones, and S. Trowbridge, “Optical transport network evolution: hot standardization topics in ITU-T including standards coordination aspects,” IEEE Communications Magazine, vol. 46, no. 10, pp. 124–131, October 2008. [4] N. Bouabdallah, “Sub-wavelength solutions for next-generation optical networks,” IEEE Communications Magazine, vol. 45, no. 8, pp. 36–43, August 2007. [5] M. Mellia, E. Leonardi, M. Feletig, R. Gaudino, and F. Neri, “Exploiting OTDM technology in WDM networks,” in Proceedings of INFOCOM 2002, vol. 3, June 2002, pp. 1822–1831. [6] I. Widjaja, I. Saniee, R. Giles, and D. Mitra, “Light core and intelligent edge for a flexible, thin-layered, and cost-effective optical transport network,” IEEE Communications Magazine, vol. 41, no. 5, pp. S30–S36, May 2003. [7] A. Gumaste and I. Chlamtac, “Light-trails: a novel conceptual framework for conducting optical communications,” in Proceedings of the Workshop on High Performance Switching and Routing, HPSR 2003, June 2003, pp. 251–256. [8] N. Bouabdallah, G. Pujolle, E. Dotaro, N. Le Sauze, and L. Ciavaglia, “Distributed aggregation in all-optical wavelength routed networks,” in Proceedings of ICC 2004, vol. 3, June 2004, pp. 1806–1810. [9] P. Gambini, M. Renaud, C. Guillemot, F. Callegati, I. Andonovic, B. Bostica, D. Chiaroni, G. Corazza, S. Danielsen, P. Gravey, P. Hansen, M. Henry, C. Janz, A. Kloch, R. Krahenbuhl, C. Raffaelli, M. Schilling, A. Talneau, and L. Zucchelli, “Transparent optical packet switching: network architecture and demonstrators in the KEOPS project,” IEEE Journal on Selected Areas in Communications, vol. 16, no. 7, pp. 1245–1259, Sep 1998. 158 BIBLIOGRAFIA [10] R. Ramaswami, “Optical networking technologies: what worked and what didn’t,” IEEE Communications Magazine, vol. 44, no. 9, pp. 132–139, September 2006. [11] R. S. Tucker, “The role of optics and electronics in high-capacity routers,” Journal of Lightwave Technology, vol. 24, no. 12, pp. 4655–4673, December 2006. [12] N. Ghani, Q. Liu, A. Gumaste, J. Lankford, A. Shami, C. Assi, A. Khalil, and D. Benhaddou, “Value-added services in next-generation SONET/SDH networks,” IEEE Communications Magazine, vol. 46, no. 11, pp. 64–73, November 2008. [13] D. Blumenthal, J. Bowers, L. Rau, H.-F. Chou, S. Rangarajan, W. Wang, and K. Poulsen, “Optical signal processing for optical packet switching networks,” IEEE Communications Magazine, vol. 41, no. 2, pp. S23–S29, Feb 2003. [14] J. Herrera, O. Raz, E. Tangdiongga, Y. Liu, H. Mulvad, F. Ramos, J. Marti, G. Maxwell, A. Poustie, M. Hill, H. de Waardt, G. Khoe, A. Koonen, and H. Dorren, “160-gb/s all-optical packet switching over a 110-km field installed optical fiber link,” Journal of Lightwave Technology, vol. 26, no. 1, pp. 176–182, January 2008. [15] R. Van Caenegem, D. Colle, M. Pickavet, P. Demeester, K. Christodoulopoulos, K. Vlachos, E. Varvarigos, L. Stampoulidis, D. Roccato, and R. Vilar, “The design of an all-optical packet switching network,” IEEE Communications Magazine, vol. 45, no. 11, pp. 52–61, November 2007. [16] A. Willner, D. Gurkan, A. Sahin, J. McGeehan, and M. Hauer, “All-optical address recognition for optically-assisted routing in next-generation optical networks,” IEEE Communications Magazine, vol. 41, no. 5, pp. S38–S44, May 2003. [17] H. J. Lee, S. Yoo, V. Tsui, and S. Fong, “A simple all-optical label detection and swapping technique incorporating a fiber Bragg grating filter,” IEEE Photonics Technology Letters, vol. 13, no. 6, pp. 635–637, June 2001. [18] H. Zang, J. Jue, and B. Mukherjee, “Capacity allocation and contention resolution in a photonic slot routing all-optical WDM mesh network,” Journal of Lightwave Technology, vol. 18, no. 12, pp. 1728–1741, December 2000. [19] M. Listanti, V. Eramo, and R. Sabella, “Architectural and technological issues for future optical Internet networks,” IEEE Communications Magazine, vol. 38, no. 9, pp. 82–92, September 2000. [20] S. Yao, F. Xue, B. Mukherjee, S. Yoo, and S. Dixit, “Electrical ingress buffering and traffic aggregation for optical packet switching and their effect on TCP-level BIBLIOGRAFIA 159 performance in optical mesh networks,” IEEE Communications Magazine, vol. 40, no. 9, pp. 66–72, September 2002. [21] F. Xue and S. Ben Yoo, “Self-similar traffic shaping at the edge router in optical packet-switched networks,” in Proceedings of ICC 2002, vol. 4, April 2002, pp. 2449– 2453. [22] Z. Lu, D. K. Hunter, and I. D. Henning, “Contention reduction in core optical packet switches through electronic traffic smoothing and scheduling at the network edge,” Journal of Lightwave Technology, vol. 24, no. 12, pp. 4828–4837, December 2006. [23] D. Zhang, M. Zhang, and P. Ye, “Traffic shaping at the edge node in synchronous optical packet-switched networks,” Photonic Network Communications, vol. 13, no. 1, pp. 103–110, January 2007. [Online]. Available: http://www.springerlink.com/content/b077w8v7qp28pwl6/ [24] A. Jajszczyk and H. Mouftah, “Photonic fast packet switching,” IEEE Communications Magazine, vol. 31, no. 2, pp. 58–65, Feb 1993. [25] R. S. Tucker and W. D. Zhong, “Photonic packet switching: an overview,” IEICE Transactions on Communications, vol. 82, no. 2, pp. 254–264, February 1999. [26] M. Marciniak, “Droga do przyszłych całkowicie optycznych sieci pakietowych - którędy?” Przegląd Telekomunikacyjny, vol. LXXVI, no. 4, pp. 166–170, 2003. [27] S. J. B. Yoo, “Optical-label switching, MPLS, MPLambdaS, and GMPLS,” Optical Networks Magazine, no. May/June, pp. 17–31, 2003. [28] F. Xue and S. Ben Yoo, “High-capacity multiservice optical label switching for the next-generation Internet,” IEEE Communications Magazine, vol. 42, no. 5, pp. S16– S22, May 2004. [29] L. Xu, H. Perros, and G. Rouskas, “Techniques for optical packet switching and optical burst switching,” IEEE Communications Magazine, vol. 39, no. 1, pp. 136– 142, January 2001. [30] S. J. B. Yoo, “Optical packet and burst switching technologies for the future photonic Internet,” Journal of Lightwave Technology, vol. 24, no. 12, pp. 4468–4492, December 2006. [31] L. Dittmann, C. Develder, D. Chiaroni, F. Neri, F. Callegati, W. Koerber, A. Stavdas, M. Renaud, A. Rafel, J. Sole-Pareta, W. Cerroni, N. Leligou, L. Dembeck, B. Mortensen, M. Pickavet, N. Le Sauze, M. Mahony, B. Berde, and G. Eilenberger, “The European IST project DAVID: a viable approach toward optical packet 160 BIBLIOGRAFIA switching,” IEEE Journal on Selected Areas in Communications, vol. 21, no. 7, pp. 1026–1040, September 2003. [32] I. Monroy, E. van Breusegem, T. Koonen, J. Olmos, J. van Berkel, J. Jennen, C. Peucheret, and E. Zouganeli, “Optical label switched networks: laboratory trial and network emulator in the IST-STOLAS project,” Communications Magazine, IEEE, vol. 44, no. 8, pp. 43–51, Aug. 2006. [33] S. Yoo, F. Xue, Y. Bansal, J. Taylor, Z. Pan, J. Cao, M. Jeon, T. Nady, G. Goncher, K. Boyer, K. Okamoto, S. Kamei, and V. Akella, “High-performance optical-label switching packet routers and smart edge routers for the next-generation Internet,” IEEE Journal on Selected Areas in Communications, vol. 21, no. 7, pp. 1041–1051, September 2003. [34] H. Chao, K.-L. Deng, and Z. Jing, “Petastar: a petabit photonic packet switch,” IEEE Journal on Selected Areas in Communications, vol. 21, no. 7, pp. 1096–1112, September 2003. [35] D. Hunter, M. Nizam, M. Chia, I. Andonovic, K. Guild, A. Tzanakaki, M. O’Mahony, L. Bainbridge, M. Stephens, R. Penty, and I. White, “Waspnet: a wavelength switched packet network,” Communications Magazine, IEEE, vol. 37, no. 3, pp. 120–129, Mar 1999. [36] F.-S. Choa, X. Zhao, X. Yu, J. Lin, J. Zhang, Y. Gu, G. Ru, G. Zhang, L. Li, H. Xiang, H. Hadimioglu, and H. Chao, “An optical packet switch based on WDM technologies,” Journal of Lightwave Technology, vol. 23, no. 3, pp. 994–1014, March 2005. [37] J. Cheyns, C. Develder, E. Van Breusegem, D. Colle, F. De Turck, P. Lagasse, M. Pickavet, and P. Demeester, “Clos lives on in optical packet switching,” IEEE Communications Magazine, vol. 42, no. 2, pp. 114–121, February 2004. [38] Y. Li, G. Xiao, and H. Ghafouri-Shiraz, “On the performance of different node configurations in multi-fiber optical packet-switched networks,” Photonic Network Communications, vol. 14, no. 1, pp. 11–22, August 2007. [Online]. Available: http://www.springerlink.com/content/c1n8677170031gp7/ [39] Z. Zhang and Y. Yang, “Scheduling in buffered WDM packet switching networks with arbitrary wavelength conversion capability,” in Proceedings of INFOCOM 2004, vol. 2, March 2004, pp. 1372–1382. BIBLIOGRAFIA 161 [40] Z. Lu, D. Hunter, and I. Henning, “Contention resolution scheme for slotted optical packet switched networks,” Optical Network Design and Modeling, 2005. Conference on, pp. 227–234, 7-9, 2005. [41] H. Overby, N. Stol, and M. Nord, “Evaluation of QoS differentiation mechanisms in asynchronous bufferless optical packet-switched networks,” IEEE Communications Magazine, vol. 44, no. 8, pp. 52–57, Aug. 2006. [42] X. Yuan, V. Li, C. Li, and P. Wai, “A novel self-routing address scheme for alloptical packet-switched networks with arbitrary topologies,” Journal of Lightwave Technology, vol. 21, no. 2, pp. 329–339, February 2003. [43] W. Vanderbauwhede and D. Harle, “Architecture, design, and modeling of the OPSnet asynchronous optical packet switching node,” Lightwave Technology, Journal of, vol. 23, no. 7, pp. 2215–2228, July 2005. [44] R. Nejabati, G. Zervas, D. Simeonidou, M. O’Mahony, and D. Klonidis, “The OPORON project: demonstration of a fully functional end-to-end asynchronous optical packet-switched network,” Journal of Lightwave Technology, vol. 25, no. 11, pp. 3495–3510, November 2007. [45] T. S. Wang and S. Dixit, “A scalable and high capacity all-optical packet switch: design, analysis, and control,” Photonic Network Communications, vol. 3, no. 1-2, pp. 101–110, January 2001. [46] A. Chowdhury, J. Yu, and G.-K. Chang, “Same wavelength packet switching in optical label switched networks,” Journal of Lightwave Technology, vol. 24, no. 12, pp. 4838–4849, December 2006. [47] D. Chiaroni, “Packet switching matrix: a key element for the backbone and the metro,” IEEE Journal on Selected Areas in Communications, vol. 21, no. 7, pp. 1018–1025, September 2003. [48] J. Fabrega and X. Munoz, “A study of network capacity under deflection routing schemes,” in Proceedings of the Ninth International Conference on Parallel and Distributed Computing, Euro-Par 2003, ser. Lecture Notes in Computer Science, vol. 2790/2004. Springer Berlin / Heidelberg, 2003, pp. 989–994. [Online]. Available: http://www.springerlink.com/content/hc7ljuh4med160kr/ [49] B. Hajek and R. Cruz, “On the average delay for routing subject to independent deflections,” IEEE Transactions on Information Theory, vol. 39, no. 1, pp. 84–91, January 1993. 162 BIBLIOGRAFIA [50] M. Decina, V. Trecordi, and G. Zanolini, “Throughput and packet loss in deflection routing multichannel-metropolitan area networks,” in Proceedings of GLOBECOM 1991, vol. 2, December 1991, pp. 1200–1208. [51] W. Dobosiewicz and P. Gburzynski, “A bounded-hop-count deflection scheme for Manhattan-Street networks,” in Proceedings of INFOCOM 1996, vol. 1, March 1996, pp. 172–179. [52] S. Monacos and A. Sawchuk, “A scalable recirculating shuffle network with deflection routing,” in Proceedings of the Third International Conference on Massively Parallel Processing Using Optical Interconnections, October 1996, pp. 122–129. [53] M. Decina, V. Trecordi, and G. Zanolini, “Performance analysis of deflection routing multichannel-metropolitan area networks,” in Proceedings of INFOCOM 1992, vol. 3, May 1992, pp. 2435–2443. [54] A. Bononi and P. Prucnal, “Analytical evaluation of improved access techniques in deflection routing networks,” IEEE/ACM Transactions on Networking, vol. 4, no. 5, pp. 726–730, October 1996. [55] W. Olesinski and P. Gburzynski, “Service guarantees in deflection networks,” in Proceedings of the Ninth International Symposium on Modeling, Analysis and Simulation of Computer and Telecommunication Systems, MASCOTS 2001, August 2001, pp. 267–274. [56] T. El-Bawab and J.-D. Shin, “Optical packet switching in core networks: between vision and reality,” IEEE Communications Magazine, vol. 40, no. 9, pp. 60–65, September 2002. [57] A. Jajszczyk, “Ewolucja sieci stacjonarnych,” Przegląd Telekomunikacyjny, vol. LXXIV, no. 1, pp. 16–20, 2001. [58] P. Green, “Progress in optical networking,” IEEE Communications Magazine, vol. 39, no. 1, pp. 54–61, Jan 2001. [59] A. Jajszczyk, “Transport sygnałów w sieciach nowej generacji,” Przegląd Telekomunikacyjny, vol. LXXVI, no. 4, pp. 170–174, 2003. [60] C. Gauger, P. Kuhn, E. Breusegem, M. Pickavet, and P. Demeester, “Hybrid optical network architectures: bringing packets and circuits together,” Communications Magazine, IEEE, vol. 44, no. 8, pp. 36–42, Aug. 2006. BIBLIOGRAFIA 163 [61] M. O’Mahony, D. Simeonidou, D. Hunter, and A. Tzanakaki, “The application of optical packet switching in future communication networks,” Communications Magazine, IEEE, vol. 39, no. 3, pp. 128–135, Mar 2001. [62] M. J. O’Mahony, C. Politi, D. Klonidis, R. Nejabati, and D. Simeonidou, “Future optical networks,” Journal of Lightwave Technology, vol. 24, no. 12, pp. 4684–4696, Dec. 2006. [63] A. Jajszczyk, “Optical networks–the electro-optic reality,” Optical Switching and Networking, vol. 1, no. 1, pp. 3–18, January 2005. [64] P. Zhou and O. Yang, “How practical is optical packet switching in core networks?” in Proceedings of GLOBECOM 2003, vol. 5, December 2003, pp. 2709–2713. [65] R. Van Caenegem, D. Colle, M. Pickavet, P. Demeester, J. Martinez, F. Ramos, and J. Marti, “From IP over WDM to all-optical packet switching: economical view,” Journal of Lightwave Technology, vol. 24, no. 4, pp. 1638–1645, April 2006. [66] S. Bjornstad, D. Hjelme, and N. Stol, “A packet-switched hybrid optical network with service guarantees,” Selected Areas in Communications, IEEE Journal on, vol. 24, no. 8, pp. –107, Aug 2006. [67] J. He and S.-H. G. Chan, “TCP and UDP performance for Internet over optical packet-switched networks,” Computer Networks, vol. 45, no. 4, pp. 505–521, 2004. [68] F. Callegati, M. Casoni, and C. Raffaelli, “Packet optical networks for high-speed TCP-IP backbones,” IEEE Communications Magazine, vol. 37, no. 1, pp. 124–129, Jan 1999. [69] C. Raffaelli and P. Zaffoni, “Packet assembly at optical packet network access and its effects on TCP performance,” in Proceedings of the Workshop on High Performance Switching and Routing, HPSR 2003, June 2003, pp. 141–146. [70] S. Bregni, A. Pattavina, and G. Vegetti, “Architectures and performance of AWGbased optical switching nodes for IP networks,” IEEE Journal on Selected Areas in Communications, vol. 21, no. 7, pp. 1113–1121, September 2003. [71] A. Jourdan, D. Chiaroni, E. Dotaro, G. Eilenberger, F. Masetti, and M. Renaud, “The perspective of optical packet switching in IP dominant backbone and metropolitan networks,” IEEE Communications Magazine, vol. 39, no. 3, pp. 136–141, March 2001. [72] M. Baresi, S. Bregni, A. Pattavina, and G. Vegetti, “Deflection routing effectiveness in full-optical IP packet switching networks,” vol. 2, May 2003, pp. 1360–1364. 164 BIBLIOGRAFIA [73] Y.-B. Choi, J.-Y. Kim, and K.-Y. Kim, “Wavelength-division multiplexed optical packet networks for TCP-IP backbone,” in Proceedings of TENCON 2000, vol. 2, 2000, pp. 493–497. [74] A. Pattavina, “Architectures and performance of optical packet switching nodes for IP networks,” Journal of Lightwave Technology, vol. 23, no. 3, pp. 1023–1032, March 2005. [75] F. Xue and S. Yoo, “Tcp-aware active congestion control in optical packet-switched networks,” in Proceedings of the Optical Fiber Communications Conference, OFC 2003, vol. 1, March 2003, pp. 135–136. [76] C. Raffaelli and P. Zaffoni, “TCP performance in optical packet-switched networks,” Photonic Network Communications, vol. 11, no. 3, pp. 243–252, May 2006. [77] Yokogawa Corporation. The website of the Yokogawa Corporation. [Online]. Available: http://www.yokogawa.com [78] S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, and W. Weiss, “An architecture for differentiated service,” RFC 2475, December 1998. [79] S. Yao, B. Mukherjee, S. Yoo, and S. Dixit, “A unified study of contention-resolution schemes in optical packet-switched networks,” Journal of Lightwave Technology, vol. 21, no. 3, pp. 672–683, March 2003. [80] J. Brassil and R. Cruz, “Bounds on maximum delay in networks with deflection routing,” IEEE Transactions on Parallel and Distributed Systems, vol. 6, no. 7, pp. 724–732, July 1995. [81] F. Borgonovo, L. Fratta, and J. Bannister, “On the design of optical deflectionrouting networks,” in Proceedings of INFOCOM 1994, vol. 1, June 1994, pp. 120– 129. [82] A. Fayoumi, A. Jayasumana, and J. Sauer, “Performance of multihop networks using optical buffering and deflection routing,” Local Computer Networks, 2000. LCN 2000. Proceedings. 25th Annual IEEE Conference on, pp. 548–555, 2000. [83] S. Liew, “On the stability of shuffle-exchange and bidirectional shuffle-exchange deflection networks,” IEEE/ACM Transactions on Networking, vol. 5, no. 1, pp. 87–94, February 1997. [84] A. Bononi, G. Castanon, and O. Tonguz, “Analysis of hot-potato optical networks with wavelength conversion,” Journal of Lightwave Technology, vol. 17, no. 4, pp. 525–534, April 1999. BIBLIOGRAFIA 165 [85] C.-Y. Li, P. Wai, X. C. Yuan, and V. Li, “Deflection routing in slotted self-routing networks with arbitrary topology,” IEEE Journal on Selected Areas in Communications, vol. 22, no. 9, pp. 1812–1822, November 2004. [86] A. Borrero, J. M. Fourneau, and F. Quessette, “Packet selection in a deflection routing algorithm,” in Proceedings of the 17th International Symposium on Computer and Information Sciences, ISCIS 2002, October 2002, pp. 103–107. [87] Q. Wei and G. Hebuterne, “Performance analysis of optical deflection networks based on "Manhattan Street",” in Proceedings of the SPIE International Conference on Performance and Control of Network Systems, vol. 3231, November 1997, pp. 64–74. [88] A. Bononi, “Transmission analysis of a space-division optical star network with deflection routing,” IEE Electronics Letters, vol. 32, no. 3, pp. 239–240, February 1996. [89] N. Maxemchuk, “Comparison of deflection and store-and-forward techniques in the Manhattan Street and Shuffle-Exchange networks,” in Proceedings of INFOCOM 1989, vol. 3, April 1989, pp. 800–809. [90] W. Ji, M. Zhang, and P. Ye, “All-optical-packet header and payload separation for unslotted optical-packet-switched networks,” Journal of Lightwave Technology, vol. 25, no. 3, pp. 703–709, March 2007. [91] S. Yamano, F. Xue, and S. Yoo, “Load-sensitive deflection routing for contention resolution in optical packet switched networks,” in Proceedings of the Twelve International Conference on Computer Communications and Networks, ICCCN 2003, October 2003, pp. 243–248. [92] W. Oleśinski and P. Gburzyński, “Multicast in deflection networks,” in Proceedings of the Sixth International Symposium on Modeling, Analysis and Simulation of Computer and Telecommunication Systems. MASCOTS 1998, July 1998, pp. 50–55. [93] A. Choudhury and V. Li, “An approximate analysis of the performance of deflection routing in regular networks,” IEEE Journal on Selected Areas in Communications, vol. 11, no. 8, pp. 1302–1316, October 1993. [94] J. Y. Youe and S.-W. Seo, “Asymmetric cylinder: a multihop network topology for bit-level self-routing and deflection routing,” IEE Electronics Letters, vol. 35, no. 5, pp. 404–405, Mar 1999. [95] T. Chich, J. Cohen, and P. Fraigniaud, “Unslotted deflection routing: a practical and efficient protocol for multihop optical networks,” Networking, IEEE/ACM Transactions on, vol. 9, no. 1, pp. 47–59, Feb 2001. 166 BIBLIOGRAFIA [96] F. Forghieri, A. Bononi, and P. Prucnal, “Analysis and comparison of hot-potato and single-buffer deflection routing in very high bit rate optical mesh networks,” IEEE Transactions on Communications, vol. 43, no. 1, pp. 88–98, Jan 1995. [97] A. Bignell and T. Todd, “Analytic node model for deflection routing networks,” IEE Electronics Letters, vol. 26, no. 1, pp. 67–69, January 1990. [98] L. Kucera, “Wait-free deflection routing of long messages,” Parallel and Distributed Systems, IEEE Transactions on, vol. 12, no. 5, pp. 476–488, May 2001. [99] A. Greenberg and B. Hajek, “Deflection routing in hypercube networks,” Communications, IEEE Transactions on, vol. 40, no. 6, pp. 1070–1081, Jun 1992. [100] G. Castanon, O. Tonguz, and A. Bononi, “Ber performance of multiwavelength optical cross-connected networks with deflection routing,” Communications, IEE Proceedings-, vol. 144, no. 2, pp. 114–120, Apr 1997. [101] C. Fang and T. Szymanski, “An analysis of deflection routing in multi-dimensional regular mesh networks,” in Proceedings of INFOCOM 1991, vol. 2, April 1991, pp. 859–868. [102] Y. Chen, H. Wu, D. Xu, and C. Qiao, “Performance analysis of optical burst switched node with deflection routing,” in Proceedings of ICC 2003, vol. 2, May 2003, pp. 1355–1359. [103] T. Chich and P. Fraigniaud, “Optimizing unslotted deflection routing,” Proceedings of GLOBECOM 1998, vol. 3, pp. 1641–1646, November 1998. [104] C.-F. Hsu, T.-L. Liu, and N.-F. Huang, “Performance analysis of deflection routing in optical burst-switched networks,” in Proceedings of INFOCOM 2002, vol. 1, June 2002, pp. 66–73. [105] U. Feige and R. Krauthgamer, “Networks on which hot-potato routing does not livelock,” Distrib. Comput., vol. 13, no. 1, pp. 53–58, 2000. [106] T. Chich and P. Fraigniaud, “An extended comparison of slotted and unslotted deflection routing,” Computer Communications and Networks, 1997. Proceedings., Sixth International Conference on, pp. 92–97, Sep 1997. [107] D. Barth, P. Berthomé, T. Czachórski, J.-M. Fourneau, C. Laforest, and S. Vial, “A mixed deflection and convergence routing algorithm: design and performance,” in Proceedings of the Eight International Conference on Parallel and Distributed Computing, Euro-Par 2002, London, UK, 2002, pp. 767–774. BIBLIOGRAFIA 167 [108] T. Czachórski and J. M. Fourneau, “Performance evaluation of an optimal deflection routing algorithm on an odd torus,” in Proceedings of the 2nd International Conference on Performance Modelling and Evaluation of Heterogeneous Networks, HETNET 2004, July 2004, pp. P63.1 – P63.10. [109] D. Hunter, M. Chia, and I. Andonovic, “Buffering in optical packet switches,” Lightwave Technology, Journal of, vol. 16, no. 12, pp. 2081–2094, Dec 1998. [110] I. Chlamtac, A. Fumagalli, and C.-J. Suh, “Multibuffer delay line architectures for efficient contention resolution in optical switching nodes,” Communications, IEEE Transactions on, vol. 48, no. 12, pp. 2089–2098, Dec 2000. [111] R. Takahashi, T. Nakahara, K. Takahata, H. Takenouchi, T. Yasui, N. Kondo, and H. Suzuki, “Photonic random access memory for 40-Gb/s 16-b burst optical packets,” IEEE Photonics Technology Letters, vol. 16, no. 4, pp. 1185–1187, April 2004. [112] W. Vanderbauwhede and H. Novella, “A multiexit recirculating optical packet buffer,” Photonics Technology Letters, IEEE, vol. 17, no. 8, pp. 1749–1751, Aug. 2005. [113] B. A. Small, A. Shacham, and K. Bergman, “A modular, scalable, extensible, and transparent optical packet buffer,” Journal of Lightwave Technology, vol. 25, no. 4, pp. 978–985, April 2007. [114] K. Yiannopoulos, K. Vlachos, and E. Varvarigos, “Multiple-input-buffer and sharedbuffer architectures for optical packet- and burst-switching networks,” Journal of Lightwave Technology, vol. 25, no. 6, pp. 1379–1389, June 2007. [115] S. Liew, G. Hu, and H. Chao, “Scheduling algorithms for shared fiber-delay-line optical packet switches–Part I: the single-stage case,” Journal of Lightwave Technology, vol. 23, no. 4, pp. 1586–1600, April 2005. [116] S. Jiang, G. Hu, S. Liew, and H. Chao, “Scheduling algorithms for shared fiber-delayline optical packet switches-part II: the three-stage clos-network case,” Lightwave Technology, Journal of, vol. 23, no. 4, pp. 1601–1609, April 2005. [117] H. Park, E. Burmeister, S. Bjorlin, and J. Bowers, “40-gb/s optical buffer design and simulation,” August 2004, pp. 19–20. [118] G. Appenzeller, I. Keslassy, and N. McKeown, “Sizing router buffers,” SIGCOMM Comput. Commun. Rev., vol. 34, no. 4, pp. 281–292, 2004. [119] M. Enachescu, Y. Ganjali, A. Goel, N. McKeown, and T. Roughgarden, “Routers with very small buffers,” Proceedings of INFOCOM 2006, pp. 1–11, April 2006. 168 BIBLIOGRAFIA [120] V. Sivaraman, H. Elgindy, D. Moreland, and D. Ostry, “Packet pacing in short buffer optical packet switched networks,” Proceedings of INFOCOM 2006, pp. 1–11, April 2006. [121] E. W. M. Wong and M. Zukerman, “Bandwidth and buffer tradeoffs in optical packet switching,” Journal of Lightwave Technology, vol. 24, no. 12, pp. 4790–4798, December 2006. [122] N. Beheshti, Y. Ganjali, R. Rajaduray, D. Blumenthal, and N. McKeown, “Buffer sizing in all-optical packet switches,” Optical Fiber Communication Conference, 2006 and the 2006 National Fiber Optic Engineers Conference. OFC 2006, pp. 3 pp.–, March 2006. [123] D. Wischik, “Buffer requirements for high-speed routers,” Optical Communication, 2005. ECOC 2005. 31st European Conference on, vol. 5, pp. 23–26 vol.5, Sept. 2005. [124] D. Wischik and N. McKeown, “Part I: buffer sizes for core routers,” SIGCOMM Comput. Commun. Rev., vol. 35, no. 3, pp. 75–78, 2005. [125] G. Raina, D. Towsley, and D. Wischik, “Part II: control theory for buffer sizing,” SIGCOMM Comput. Commun. Rev., vol. 35, no. 3, pp. 79–82, 2005. [126] M. Enachescu, Y. Ganjali, A. Goel, N. McKeown, and T. Roughgarden, “Part III: routers with very small buffers,” SIGCOMM Comput. Commun. Rev., vol. 35, no. 3, pp. 83–90, 2005. [127] J. Townsend, Z. Haraszti, J. Freebersyser, and M. Devetsikiotis, “Simulation of rare events in communications networks,” Communications Magazine, IEEE, vol. 36, no. 8, pp. 36–41, Aug 1998. [128] A. Acampora and S. Shah, “Multihop lightwave networks: a comparison of store-andforward and hot-potato routing,” IEEE Transactions on Communications, vol. 40, no. 6, pp. 1082–1090, June 1992. [129] J. Jue, “An algorithm for loopless deflection in photonic packet-switched networks,” in Proceedings of ICC 2002, vol. 5, May 2002, pp. 2776–2780. [130] S. Yao and B. Mukherjee, “PLATO: a generic modeling technique for optical packetswitched networks,” International Journal on Wireless & Optical Communications, vol. 1, no. 1, pp. 91–101, 2003. [131] F. Callegati, G. Muretto, C. Raffaelli, P. Zaffoni, and W. Cerroni, “A framework for performance evaluation of OPS congestion resolution,” Optical Network Design and Modeling, 2005. Conference on, pp. 242–249, 7-9, 2005. BIBLIOGRAFIA 169 [132] J. Tomasik, I. Kotuliak, and T. Atmaca, “Markovian performance analysis of a synchronous optical packet switch,” in Proceedings of the Eleventh International Symposium on Modeling, Analysis and Simulation of Computer Telecommunications Systems, MASCOTS 2003, October 2003, pp. 254–257. [133] J. Bannister, F. Borgonovo, L. Fratta, and M. Gerla, “A versatile model for predicting the performance of deflection-routing networks,” Performance Evaluation, vol. 16, no. 1-3, pp. 201–222, 1992. [134] A. Greenberg and J. Goodman, “Sharp approximate models of deflection routing in mesh networks,” IEEE Transactions on Communications, vol. 41, no. 1, pp. 210–223, January 1993. [135] I. Szcześniak, “Analysis of a finite number of deflections in fully and uniformly loaded regular networks,” in Proceedings of NETWORKING 2004, ser. Lecture Notes in Computer Science, vol. 3042/2004, May 2004, pp. 675–686. [136] I. Szcześniak, J.-M. Fourneau, and T. Czachórski, “Preliminary results of packet loss analysis in optical packet-switched networks with limited deflection routing,” in Proceedings of the Symposium on the Applications and the Internet Workshops, SAINT Workshops 2005, January 2005, pp. 296–299. [137] I. Szcześniak, T. Czachórski, and J.-M. Fourneau, “Packet loss analysis in optical packet-switched networks with limited deflection routing,” Photonic Network Communications, vol. 16, no. 3, pp. 253–261, December 2008. [138] I. Szcześniak and T. Czachórski, “Performance evaluation of a bufferless packetswitched node,” in Proceedings of the Ninth International Conference on Transparent Optical Networks, ICTON 2007, vol. 3, July 2007, pp. 117–120. [139] I. Szcześniak, B. Mukherjee, and T. Czachórski, “Approximate analytical performance evaluation of synchronous bufferless optical packet-switched networks,” submitted for publication. [140] I. Szcześniak. (2008, August) The website of OPUS, the Optical Packet Switching Universal Solver. [Online]. Available: http://www.irkos.org/opus [141] A. Varga, “The OMNeT++ discrete event simulation system,” in Proceedings of the European Simulation Multiconference, Prague, Czech Republic, June 2001, pp. 319–324. 170 BIBLIOGRAFIA [142] P. Gravey, S. Gosselin, C. Guillemont, D. Chiaroni, N. Le Sauze, A. Jourdan, E. Dotaro, D. Barth, P. Bertome, C. Laforest, S. Vial, T. Atmaca, G. Hebuterne, H. El Biaze, R. Laalaoua, E. Gangloff, and I. Kotuliak, “Multiservice optical network: main concepts and first achievements of the ROM program,” Journal of Lightwave Technology, vol. 19, no. 1, pp. 23–31, Jan 2001. [143] (2007, February) The website of the PIONIER network. [Online]. Available: http://www.pionier.gov.pl [144] T. Karagiannis, M. Molle, M. Faloutsos, and A. Broido, “A nonstationary Poisson view of Internet traffic,” in Proceedings of INFOCOM 2004, vol. 3, March 2004, pp. 1558–1569. [145] H. Øverby, “Traffic models for slotted optical packet switched networks,” Photonic Network Communications, vol. 13, pp. 183–194, April 2007. [146] PIONIER Network Operation Center. (2007, February) The website of the PIONIER Network Operation Center. [Online]. Available: http://noc.pionier.gov.pl [147] (2008, November) Graphviz - graph visualization software. [Online]. Available: http://www.graphviz.org/ [148] (2008, February) The website of the GEANT2 network. [Online]. Available: http://www.geant2.net