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

Podobne dokumenty