Numer Projektu Badawczego Zamawianego: -MNiSW-02-II/2007 Tytuł projektu: Numer dokumentu: Usługi i sieci teleinformatyczne następnej generacji aspekty techniczne, aplikacyjne i rynkowe -MNiSW-02-II/2007/WUT/D.4 Tytuł raportu: Implementacja modułu do wspomagania konfiguracji sieci Przewidywany termin dostarczenia raportu: 31/12/2009 Rzeczywisty termin dostarczenia raportu: 15/01/2010 Kierownik zadania: Wykonawcy: Wojciech Burakowski Jarosław Śliwiński, Andrzej Bęben, Halina Tarasiuk, Piotr Krawiec Abstrakt: Raport opisuje moduł do wspomagania konfiguracji sieci w systemie IP QoS, zgodnie ze stanem na koniec etapu D projektu. Moduł ten pozwala konfigurować wybrane mechanizmy sterowania ruchem w ruterach firmy Cisco. W szczególności są to mechanizmy kształtowania i nadzoru profilu ruchowego, oznaczania pakietów oraz mechanizmy szeregowania pakietów. Słowa kluczowe: DiffServ, NGN, mechanizmy sterowania ruchem, konfiguracja urządzeń
Streszczenie Raport przedstawia stan implementacji modułu do wspomagania konfiguracji sieci w systemie IP QoS na zakończenie etapu D projektu. Moduł wspomagania konfiguracji jest elementem kaŝdego serwera PE-PE (ang. Policy Enforcement Physical Entity), które uczestniczą w procesach związanych z obsługą wywołań oraz z wymiarowaniem sieci. Moduł wspomagania konfiguracji sieci tłumaczy parametry mechanizmów sterowania ruchem na specyficzne metody konfiguracji urządzeń. Sieć testowa projektu wykorzystuje urządzenia firmy Cisco, a więc moduł wspomagania konfiguracji opisany w tym raporcie słuŝy współpracy z takimi urządzeniami. Moduł wspomagania konfiguracji sieci obsługuje konfigurację następujących mechanizmów sterowania ruchem: mechanizmy nadzoru profilu ruchowego, mechanizmy kształtowania profilu ruchowego, mechanizm oznaczania pakietów, mechanizm szeregowania pakietów dla interfejsów wyjściowych. W czasie implementacji nie napotkano krytycznych problemów związanych z konfiguracją powyŝszych mechanizmów sterowania ruchem. 2
Spis treści STRESZCZENIE... 2 SPIS TREŚCI... 3 1 ARCHITEKTURA SYSTEMU... 4 1.1 ZAŁOśENIA SYSTEMU... 4 1.2 PODZIAŁ FUNKCJONALNY SYSTEMU... 4 1.3 PAKIETOWE MECHANIZMY STEROWANIA RUCHEM... 5 2 SPOSÓB REALIZACJI MECHANIZMÓW STEROWANIA RUCHEM... 7 2.1 MECHANIZM NADZORU PROFILU RUCHOWEGO... 7 2.2 MECHANIZM KSZTAŁTOWANIA PROFILU RUCHOWEGO... 8 2.3 MECHANIZM OZNACZANIA PAKIETÓW... 11 2.4 MECHANIZM SZEREGOWANIA PAKIETÓW W INTERFEJSIE WYJŚCIOWYM... 11 3 PODSUMOWANIE... 14 LITERATURA... 15 LISTA SKRÓTÓW... 16 3
1 Architektura systemu 1.1 ZałoŜenia systemu Rysunek 1-1 przedstawia podstawowy scenariusz działania systemu. WyróŜniamy w nim uŝytkowników, którzy są dołączeni do ruterów brzegowych. UŜytkownik uzyskuje dostęp do zasobów sieci za pomocą aplikacji, która komunikuje się z serwerami aplikacji (oferowanymi przez dostawcę usługi). Serwery aplikacji wysyłają Ŝądanie przygotowania zasobów sieciowych zgodnie z wymaganiami, które są zawarte w Ŝądaniu wysyłanym przez aplikację. Serwery zarządzania zasobami (nale- Ŝą do operatora) odpowiadają za zarządzanie zasobami sieci, tak, aby dla wybranych klas usług wprowadzić ścisłe gwarancje jakości przekazu w sieci od końca do końca. Ponadto zgodnie z zało- Ŝeniami architektury DiffServ [RFC2475], sieć składa się z ruterów brzegowych oraz ruterów szkieletowych (rutery szkieletowe nie zostały przedstawione na rysunku). Serwer aplikacji (dostawca usług) Serwery zarządzania zasobami (operatora) UŜytkownik A Aplikacja UŜytkownik B Aplikacja A Ruter brzegowy B Ruter brzegowy Rysunek 1-1: Podstawowy scenariusz działania systemu Ze względu na skalę czasu wyróŝniliśmy dwie grupy procesów realizowanych w systemie: Procesy związane z obsługą wywołań skala sekund lub minut, Procesy związane z zarządzaniem zasobami skala godzin lub dni. Moduł do wspomagania konfiguracji sieci bierze udział w obu grupach procesów, gdzie kontroluje odpowiednie mechanizmy. 1.2 Podział funkcjonalny systemu Rysunek 1-2 przedstawia podział funkcjonalności systemu, zgodnie ze specyfikacją przedstawioną w [B1], na poszczególne węzły funkcjonalne wraz z interfejsami występującymi pomiędzy poszczególnymi węzłami. Skierowanie strzałek oznacza jedynie kierunek, w którym wywołanie jest inicjowane. Wywołania te mogą otrzymywać wynik opisujący rezultat działania, tak więc wymiana wiadomości sygnalizacyjnych jest obustronna. 4
RomanToRms RmsToRoman RmsToPd PdToRms RomanToPd PdToSce SceToPd PdToPe TrcToPd PdToPe Rysunek 1-2: Elementy funkcjonalne systemu wraz z interfejsami W tym raporcie skupiamy się głownie na węźle PE-PE, który jest elementem odpowiedzialnym za konfigurację urządzeń sieciowych w procesach opisanych w raporcie D.1 i D.2. NaleŜy zwrócić uwagę, Ŝe moduł do wspomagania konfiguracji sieci jest integralnym elementem węzła PE-PE. W związku z tym nie ma moŝliwości wykorzystania go poza Systemem IP QoS bez stworzenia dodatkowych elementów oprogramowania. 1.3 Pakietowe mechanizmy sterowania ruchem System IP QoS obsługuje wiele procesów, w których wymagana jest interakcja z urządzeniami sieciowymi. Poszczególne procesy oraz uŝywane w nich mechanizmy pochodzą ze specyfikacji architektury DiffServ [RFC2475] i są to: Proces przyjmowania nowego wywołania wprowadza w sieci jeden z następujących mechanizmów: o Mechanizm nadzoru profilu ruchowego strumienia pakietów, o Mechanizm kształtowania profilu ruchowego strumienia pakietów, o Mechanizm oznaczania strumienia pakietów. Proces rozłączania połączenia inicjowanego przez uŝytkownika (lub przez system) moŝe usuwać z konfiguracji urządzeń następujące mechanizmy, o Mechanizm nadzoru profilu ruchowego strumienia pakietów, o Mechanizm kształtowania profilu ruchowego strumienia pakietów, 5
o Mechanizm oznaczania strumienia pakietów. Proces konfiguracji zasobów dla interfejsu wyjściowego rutera wymaga konfiguracji mechanizmu szeregowania pakietów, w tym ustawienia odpowiednich rozmiarów buforów. Metody konfiguracji opisane powyŝszych mechanizmów, które są opisane w tym raporcie dotyczą ruterów Cisco z oprogramowaniem systemowym o wersji 12.1 i wyŝszej. 6
2 Sposób realizacji mechanizmów sterowania ruchem 2.1 Mechanizm nadzoru profilu ruchowego Mechanizm nadzoru profilu ruchowego jest realizowany za pomocą pojedynczego algorytmu token bucket. Występuje on dla strumieni klas Telephony oraz RTInteractive, które przenoszą ruch z wymaganiami przekazu w czasie rzeczywistym. Parametry opisujące profil ruchu uŝytkownika to szczytowa szybkość bitowa (peak rate) oraz tolerancja tej szybkości wyraŝona za pomocą maksymalnej paczki danych (burst size). Pakiety niezgodne z profilem są odrzucane. W module PE-PE dla sterowania mechanizmami nadzoru profilu ruchowego zdefiniowano dwie procedury: 1. Instalacja mechanizmu nadzoru profilu ruchowego W przypadku instalacji mechanizmu nadzoru profilu ruchowego zastosowano następujący wzorzec instrukcji konfiguracyjnych: # configure terminal # ip access-list extended <numer_reguły_acl> # permit <protokół> host <adres_ip_źródła> eq <numer_portu_źródła> host <adres_ip_ujścia> eq <numer_portu_ujścia> # interface <nazwa_interfejsu_rutera> # rate-limit output access-group <numer_reguły_acl> <szybkość_szczytowa> <rozmiar_burst> <rozmiar_burst> conformaction set-dscp-transmit <numer_dscp> exceed-action drop 2. Usunięcie mechanizmu nadzoru profilu ruchowego W przypadku usunięcia mechanizmu nadzoru profilu ruchowego zastosowano następujący wzorzec instrukcji konfiguracyjnych: # configure terminal # interface <nazwa_interfejsu_rutera> # no rate-limit output access-group <numer_reguły_acl> <szybkość_szczytowa> <rozmiar_burst> <rozmiar_burst> conformaction set-dscp-transmit <numer_dscp> exceed-action drop # no ip access-list extended <numer_reguły_acl> W powyŝszych wzorcach występują następujące zmienne, które są parametrami wejściowymi niezbędnymi do poprawnej konfiguracji: 7
numer_reguły_acl jest to numer reguły ACL (Access Control List), która ma być wykorzystana. protokół jest to rodzaj protokołu warstwy transportowej dla danego strumienia pakietów IP. W praktycznych zastosowaniach będzie to TCP lub UDP. adres_ip_źródła jest to adres IP, który znajdzie się w polu adresu źródłowego w nagłówku IP dla danego strumienia pakietów IP. adres_ip_ujścia jest to adres IP, który znajdzie się w polu adresu docelowego w nagłówku IP dla danego strumienia pakietów IP. numer_portu_źródła jest to numer portu źródłowego, który znajduje się w części nagłówka protokołu TCP lub UDP. numer_portu_ujścia jest to numer portu docelowego, który znajduje się w części nagłówka protokołu TCP lub UDP. nazwa_interfejsu_rutera jest to nazwa interfejsu rutera, na którym zostanie zainstalowana reguła sterowania przepływem pakietów IP. szybkość_szczytowa jest to szczytowa szybkość bitowa (wyraŝona w bitach na sekundę) wykorzystywana w mechanizmie token bucket. rozmiar_burst jest to maksymalny rozmiar paczki danych (wyraŝony w bajtach) wykorzystywany w mechanizmie token bucket. numer_dscp jest to liczba całkowita z przedziału od 0 do 63, która określa wartość pola DSCP jaka zostanie nadana wszystkim pakietom IP pasującym do reguły klasyfikacji. 2.2 Mechanizm kształtowania profilu ruchowego Mechanizm kształtowania profilu ruchowego jest realizowany za pomocą pojedynczego mechanizmu token bucket, gdzie pakiety niezgodne z profilem są opóźniane w buforze. Mechanizm ten występuje w przypadku strumieni klas MultimediaStreaming i HighThroughputData, gdzie mamy do czynienia z ruchem wymagającym zapewnienia zadanej przepływności bez wymagania przekazu w czasie rzeczywistym. Kontrakt uŝytkownika opisywany jest za pomocą parametrów pojedynczego 8
mechanizmu token bucket, czyli szczytowej szybkości bitowej (peak rate) oraz pomijalnej telerancji tej szybkości. Dodatkowo jest zadany rozmiar bufora opóźniającego, który akumuluje niezgodne pakiety. W module PE-PE dla sterowania mechanizmami kształtowania profilu ruchowego zdefiniowano dwie procedury: 1. Instalacja mechanizmu kształtowania profilu ruchowego W przypadku instalacji mechanizmu kształtowania profilu ruchowego zastosowano następujący wzorzec instrukcji konfiguracyjnych: # configure terminal # ip access-list extended <numer_reguły_acl> # permit <protokół> host <adres_ip_źródła> eq <numer_portu_źródła> host <adres_ip_ujścia> eq <numer_portu_ujścia> # class-map acl<numer_reguły_acl> # match access-group <numer_reguły_acl> # policy-map <nazwa_polityki> # class acl<numer_reguły_acl> # bandwidth <szybkość_szczytowa> # shape average <szybkość_szczytowa> # shape max-buffers <rozmiar_buforu_kształtowania> # set dscp <numer_dscp> # interface <nazwa_interfejsu> # hold-queue <rozmiar_bufora> out 2. Usunięcie mechanizmu kształtowania profilu ruchowego W przypadku usunięcia mechanizmu kształtowania profilu ruchowego zastosowano następujący wzorzec instrukcji konfiguracyjnych: # configure terminal # policy-map <nazwa_polityki> # no class acl<numer_reguły_acl> # no class-map acl<numer_reguły_acl> # no ip access-list extended <numer_reguły_acl> # interface <nazwa_interfejsu> # hold-queue <rozmiar_bufora> out W powyŝszych wzorca występują następujące zmienne, które są parametrami wejściowymi niezbędnymi do poprawnej konfiguracji: 9
numer_reguły_acl jest to numer reguły ACL (Access Control List), która ma być wykorzystana. protokół jest to rodzaj protokołu warstwy transportowej dla danego strumienia pakietów IP. W praktycznych zastosowaniach będzie to TCP lub UDP. adres_ip_źródła jest to adres IP, który znajdzie się w polu adresu źródłowego w nagłówku IP dla danego strumienia pakietów IP. adres_ip_ujścia jest to adres IP, który znajdzie się w polu adresu docelowego w nagłówku IP dla danego strumienia pakietów IP. numer_portu_źródła jest to numer portu źródłowego, który znajduje się w części nagłówka protokołu TCP lub UDP. numer_portu_ujścia jest to numer portu docelowego, który znajduje się w części nagłówka protokołu TCP lub UDP. nazwa_interfejsu_rutera jest to nazwa interfejsu rutera, na którym zostanie zainstalowana reguła sterowania przepływem pakietów IP. szybkość_szczytowa jest to szczytowa szybkość bitowa (wyraŝona w bitach na sekundę) wykorzystywana w mechanizmie token bucket. numer_dscp jest to liczba całkowita z przedziału od 0 do 63, która określa wartość pola DSCP jaka zostanie nadana wszystkim pakietom IP pasującym do reguły klasyfikacji. nazwa_polityki jest to unikalna nazwa polityki opisująca zasoby na danym interfejsie. rozmiar_buforu_kształtowania jest to rozmiar bufora kształtowania, który opóźnia pakiety przybywające zbyt często do rutera. Jest wyraŝony w pakietach i jest powiązany z maksymalnym rozmiarem paczki danych (ang. burst size). rozmiar_bufora jest to całkowity rozmiar bufora przydzielony dla wszystkich mechanizmów kształtowania profilu ruchowego. 10
2.3 Mechanizm oznaczania pakietów Mechanizm oznaczania pakietów przydziela określoną wartość pola DSCP dla kaŝdego pakietu wchodzącego do sieci. W przypadku pakietów zgodnych z profilem ruchowym połączenia wartość ta odpowiada wartości określonej dla danej klasy usług sieciowych. Pakiety naleŝące do połączeń, dla których nie przeprowadzono procesu rezerwacji w systemie, mają pole DSCP ustawione z wartością 0. Konfiguracja mechanizmu oznaczania pakietów, została połączona z konfiguracją mechanizmów nadzoru i kształtowania profilu ruchowego. W ten sposób ograniczono liczby rozkazów konfiguracyjnych wysyłanych do rutera, co pozwoliło skrócić czas potrzebne na realizację tych mechanizmów. We wzorcu konfiguracji mechanizmu nadzoru profilu ruchowego dotyczy to linii: # rate-limit output access-group <numer_reguły_acl> <szybkość_szczytowa> <rozmiar_burst> <rozmiar_burst> conform-action set-dscp-transmit <numer_dscp> exceed-action drop Z kolei dla mechanizmu kształtowania profilu ruchowego wykorzystywana jest linia: set dscp <numer_dscp> 2.4 Mechanizm szeregowania pakietów w interfejsie wyjściowym Wprowadzenie mechanizmu szeregowania pakietów ma na celu zagwarantowanie zasobów poszczególnym klasom usług sieciowych. Zasoby te to przepływność oraz rozmiar bufora. W systemie IP QoS wyróŝniono dwa rodzaje ruterów: rutery szkieletowe oraz rutery brzegowe. Z tego powodu konfiguracja interfejsów róŝni się w obu przypadkach, jednak jeden element jest wspólny jest nim definicja klas usług sieciowych, która jest wykonywana raz dla kaŝdego rutera za pomocą następującego zestawu poleceń: # configure terminal # no class-map PbzSignalling # no class-map PbzRealTime # no class-map PbzMMStreaming # no class-map PbzHighThroughputData # no class-map PbzStandard # class-map PbzSignalling # match dscp cs5 # class-map PbzRealTime # match dscp ef cs4 # class-map PbzMMStreaming # match dscp af31 af32 af33 # class-map PbzHighThroughputData # match dscp af11 af12 af13 # class-map PbzStandard 11
# match dscp default 1. Konfiguracja rutera szkieletowego Szablon konfiguracji interfejsu rutera szkieletowego jest następujący: # configure terminal # interface <nazwa_interfejsu_rutera> # no service-policy output <nazwa_polityki> # max-reserved-bandwidth 100 # no policy-map <nazwa_polityki> # policy-map <nazwa_polityki> # class PbzRealTime # priority <rate_realtime> # class PbzSignalling # bandwidth <rate_signalling> # queue-limit <queue_singnalling> # class PbzMMStreaming # bandwidth <rate_mmstreaming> # queue-limit <queue_mmstreaming> # class PbzHighThroughputData # bandwidth <rate_highthroughputdata> # queue-limit <queue_highthroughputdata> # class class-default # bandwidth <rate_standard> # queue-limit <queue_standard> # interface <interface_name> # service-policy output <nazwa_polityki> # hold-queue <queue_total> out 2. Konfiguracja rutera brzegowego Szablon konfiguracji interfejsu rutera brzegowego jest następujący: # configure terminal # interface <nazwa_interfejsu_rutera> # no service-policy output <nazwa_polityki> # max-reserved-bandwidth 100 # no policy-map <nazwa_polityki> 12
# policy-map <nazwa_polityki> # class PbzRealTime # priority <rate_telephony> # class PbzSignalling # bandwidth <rate_signalling> # queue-limit <queue_signalling> # class class-default # bandwidth <rate_standard> # queue-limit <queue_standard> # interface <nazwa_interfejsu_rutera> # service-policy output <nazwa_polityki> # hold-queue <queue_total> out W powyŝszych wzorca występują następujące zmienne, które są parametrami wejściowymi niezbędnymi do poprawnej konfiguracji: nazwa_interfejsu_rutera jest to nazwa interfejsu rutera, na którym zostanie skonfigurowany mechanizm szeregowania pakietów, nazwa_polityki jest to unikalna nazwa polityki opisująca zasoby na danym interfejsie, rozmiar_bufora jest to całkowity rozmiar bufora przydzielony dla wszystkich mechanizmów kształtowania profilu ruchowego, rate_xxx szybkość bitowa przydzielona klasie usług, gdzie XXX oznacza nazwę danej klasy usług. queue_xxx rozmiar bufora przydzielony dla klasy usług, gdzie XXX oznacza nazwę danej klasy usług, queue_total jest to całkowity rozmiar bufora przydzielony dla interfejsu. 13
3 Podsumowanie W etapie D został zaimplementowany moduł wspomagania konfiguracji sieci. Moduł ten pozwala na realizację mechanizmów sterowania ruchem w ruterach firmy Cisco rutery te są wykorzystane w sieci testowej projektu (wersja systemu operacyjnego IOS 12.1). W szczególności moduł ten obsługuje mechanizmy dla ruchu zbiorczego (w ruterach szkieletowych) oraz dla pojedynczych strumieni pakietów (w ruterach brzegowych). Tabela 3-1 podsumowuje szczegóły stanu implementacji na zakończenie etapu D. Tabela 3-1: Stan implementacji systemu dla etapu D moduł wspomagania konfiguracji urządzeń Nazwa Mechanizm nadzoru profilu ruchowego Mechanizm kształtowania profilu ruchowego Mechanizm oznaczania pakietów Mechanizm szeregowania pakietów w interfejsie wyjściowym rutera Stan implementacji Mechanizm zaimplementowany Mechanizm zaimplementowany Mechanizm został zaimplementowany Sposób konfiguracji mechanizmu jest zintegrowany z konfiguracją mechanizmów nadzoru i kształtowania profilu ruchowego Mechanizm został zaimplementowany Istnieją dwie wersje wzorca konfiguracyjnego: dla rutera szkieletowego i dla rutera brzegowego 14
Literatura [RFC2475] S. Blake, et al., An Architecture for Differentiated Services, Internet RFC 2475, December 1998. [B1] W. Burakowski et. al, Raport B.1: Specyfikacja architektury systemu IP QoS, 2009. 15
Lista skrótów CAC PD-PE PE-PE ROMAN RMS SCE TRC-PE Connection Admission Control Policy Decision Physical Entity Policy Enforcement Physical Entity Routing Management Resource Management System Service Control Entity Transport Resource Control Physical Entity 16