Jeden kabel – wiele usług

Piotr Wojciechowski
7. lipca 2021
Reading time: 15 min
Jeden kabel – wiele usług
Multipleksacja w telekomunikacji to termin obejmujący różne metody realizacji dwóch lub większej liczby kanałów komunikacyjnych z wykorzystaniem pojedynczego medium transmisyjnego. Bez tych metod realizacja usług telekomunikacyjnych, w tym także sieci komputerowych, byłaby ekstremalnie droga i nieopłacalna. Dotyczy to zarówno połączeń lokalnych (LAN), jak i tych łączących ze sobą odległe lokalizacje (WAN). Protokół Ethernet także pozwala ma multipleksację usług za pomocą VLAN-ów.

VLAN (Virtual Local Area Network) to w uproszczeniu wirtualna usługa w sieci zbudowanej na podstawie standardu Ethernet. Posługujemy się nią na co dzień, bez niej plątanina kabli oraz liczba urządzeń w szafach telekomunikacyjnych byłyby niemożliwe do zarządzania. Jeszcze niedawno VLAN-y kojarzone były z zaawansowanym sprzętem sieciowym oraz rozwiązaniami wdrażanymi w sieciach korporacyjnych lub operatorskich. Jednak dzięki znaczącemu spadkowi cen przełączników czy małych routerów coraz częściej znajdujemy je także w sieciach domowych, czasem nie mając nawet świadomości ich wykorzystania. Należy jasno powiedzieć, że dostępna w urządzeniach z segmentu SOHO implementacja VLAN-ów jest podstawowa, czasem dodatkowo nawet ograniczona, zapewniając jedynie bardzo podstawowe funkcje. Te zaawansowane pozostają nadal domeną skomplikowanych urządzeń sieciowych. W tym artykule przyjrzymy się niektórym z tych funkcji dostępnym na przełącznikach firmy Cisco – często zapomnianym i niedocenianym przez inżynierów sieciowych. Większość rozwiązań uległa z czasem standaryzacji i implementacji także w produktach innych marek.

ETHERNET I VLAN-Y

Aby zrozumieć sposób działania i konfiguracji zaawansowanych mechanizmów związanych z VLAN-ami, musimy sobie przypomnieć podstawy działania typowych sieci lokalnych. Budujemy je, wykorzystując protokół Ethernet opisany w standardzie IEEE 802.3 – należy on do drugiej warstwy w modelu OSI (model opisu działania sieci), zwanej warstwą łącza danych (data-link layer). Istnieje wiele typów ramek Ethernet, jednak wszystkie mają wiele cech wspólnych. Przykładowo każda ramka zawiera adres MAC (czyli adres sprzętowy interfejsu urządzenia sieciowego), nadawcy oraz odbiorcy czy zarezerwowany obszar, w którym umieszczane są przesyłane dane. O zwykłych ramkach mówimy potocznie, że są nietagowane albo natywne, czyli nie mają cech pozwalających na multipleksację usług, gdyż brakuje w nich pola, które można by traktować jako identyfikator usługi. Wprowadzone ono zostało w standardzie 802.1Q i umieszczany jest w nim numer sieci wirtualnej, czyli VLAN-u. Dlatego o ramkach w tym standardzie mówimy, że są tagowane. Urządzenia sieciowe, przede wszystkim przełączniki, dla każdego VLAN-u budują oddzielną tablicę sąsiedztwa MAC (MAC Address Table). Jest ona zbiorem informacji zapewniającym przełącznikowi wiedzę o tym, przez który port musi on wysłać ramkę, aby dotarła ona do urządzenia wskazanego określonym adresem MAC w polu nagłówka identyfikującym odbiorcę. Switch przez cały czas buduje i aktualizuje tę bazę na podstawie ramek, które obsługuje. Proces ten nazywa się switching. W przypadku gdy switch nie ma informacji, gdzie wysłać ramkę, by dotarła ona do wskazanego odbiorcy, to rozgłasza ją za pośrednictwem wszystkich interfejsów, pomijając port, przez który ramka do niego dotarła.

Każdy VLAN to oddzielna wirtualna sieć podlegająca takim samym regułom jak sieć, w której nie tagujemy ramek, zapewniając separację i izolację ruchu dla każdej z nich.

Aby dwa urządzenia mogły się ze sobą komunikować, muszą znajdować się w tym samym VLAN-ie lub pomiędzy nimi należy umieścić urządzenie pełniące funkcję routera. Do każdego z VLAN-ów powinniśmy w obrębie naszej sieci przypisać niepowtarzalną podsieć IP. Choć teoretycznie nic nie stoi na przeszkodzie, aby w pojedynczym VLAN-ie działało wiele podsieci, w praktyce taka konfiguracja może powodować różne nietypowe problemy. Jednej podsieci nie możemy „rozciągnąć” na wiele VLAN-ów.

Każdy zdefiniowany na urządzeniu VLAN to oddzielna domena rozgłoszeniowa (broadcast domain), czyli „obszar” sieci, w jakim będą replikowane wiadomości typu broadcast, których odbiorcami z założenia są wszystkie urządzenia w danym segmencie sieci.

Urządzenia, które nie rozpoznają VLAN-ów, rozgłoszą odebraną tego typu ramkę poprzez wszystkie swoje porty z wyjątkiem tego, przez który została ona odebrana. Przełączniki ze skonfigurowanymi VLAN-ami ograniczą rozgłaszanie jedynie do interfejsów przypisanych do tego samego VLAN-u co nadawca broadcastu.

Powyższe cechy wirtualnych sieci LAN odnoszą się do aspektu separacji komunikacji pomiędzy poszczególnymi VLAN-ami. Drugą cechą jest wspomniana na wstępie multipleksacja, czyli współdzielenie fizycznego łącza pomiędzy wiele wirtualnych usług. Do tego celu urządzenia sieciowe także wykorzystują identyfikatory VLAN-ów zapisane w nagłówkach ramek w standardzie 802.1Q. Interfejsy, przez które wysyłane są nieotagowane ramki, nazywamy portami dostępowymi (access port). Interfejs skonfigurowany do przenoszenia tagowanych ramek określa się jako trunk – nazwa ta jest powszechnie stosowana zarówno w literaturze, jak i w języku potocznym informatyków.

W konfiguracji trunka możemy wskazać jedynie wybrane VLAN-y lub pozwolić na ruch wszystkich, które na urządzeniu są skonfigurowane. Możemy także wskazać jeden wybrany VLAN, który w trunku będzie przenoszony w postaci ramki nieotagowanej – nazywamy go wtedy VLAN-em natywnym (native VLAN).

DYNAMICZNIE CZY STATYCZNIE?

Aby ramka przypisana do wskazanego VLAN-u mogła zostać przesłana od przełącznika źródłowego do docelowego, wszystkie urządzenia, które mają pośredniczyć w transmisji, muszą mieć wiedzę o nim. Najczęściej konfiguracja taka odbywa się statycznie poprzez umieszczenie odpowiedniej definicji w konfiguracji urządzenia. W dużych sieciach takie podejście wymaga dość sporo czasu, a drobne pomyłki czy pominięcia mogą skutkować brakiem redundancji czy nieoptymalnym rozkładem ruchu. Na urządzeniach Cisco możemy ułatwić sobie pracę, wykorzystując VLAN Trunking Protocol (VTP). Jest on odpowiedzialny za rozgłaszanie informacji o VLAN-ach do sąsiadujących z przełącznikiem urządzeń.

https://evoila.com/pl/cisco-hyperflex-hiperkonwergencja-od-cisco-7/

Do poprawnego działania niezbędne jest ustawienie na każdym z przełączników identycznej domeny VTP (VTP Domain Name) oraz zgodnej wersji protokołu. Istnieją trzy wersje protokołu VTP. Domyślną jest najstarsza, VTPv1, jednak ze względu na funkcjonalność zaleca się stosowanie minimum VTPv2. Jeżeli aktywujemy VTPv2 na jednym przełączniku, pozostałe urządzenia w domenie samoczynnie zaczną także używać nowszej wersji protokołu. Wersja VTPv3 jest niekompatybilna z poprzednimi, lecz gdy wykryje, że sąsiednie urządzenie wykorzystuje VTPv2, automatycznie rozpoczyna komunikację z zastosowaniem starszego protokołu na porcie, przez który realizowane jest połączenie z sąsiednim urządzeniem.

Przełącznik może być skonfigurowany do operacji w jednym z czterech trybów. Pierwszy z nich to całkowite wyłączenie VTP (VTP Off Mode), w którym jakiekolwiek ramki VTP są odrzucane, a zawarte w nich informacje ignorowane. VLAN-y należy wtedy skonfigurować samodzielnie. Tryb ten jest dostępny jedynie w VTPv3. Podobny w działaniu jest tryb VTP Transparent Mode – tak jak w poprzednim trybie administrator musi skonfigurować VLAN-y samodzielnie, lecz przełącznik, ignorując informacje zawarte w komunikatach VTP, rozgłasza je dalej do sąsiednich urządzeń. Aby przełącznik generował, przesyłał i przetwarzał informacje rozgłaszane poprzez VTP, musi pracować w trybie VTP Client lub VTP Server.

Różnica między nimi polega na tym, że modyfikować informację o VLAN-ach możemy tylko na urządzeniu pracującym w trybie VTP Server. Jest on domyślnym trybem pracy każdego przełącznika, co może nieopatrznie przysporzyć nam kłopotów.

Jest to związane z tym, w jaki sposób przełączniki dbają o spójność informacji w domenie VTP. Wykorzystują do tego tzw. revision number, czyli numer wersji bazy danych o VLAN-ach, który jest zwiększany o jeden wraz z każdą modyfikacją konfiguracji. Jeżeli do domeny VTP podłączymy przełącznik, w którym numer wersji będzie wyższy niż w naszej domenie, to nasza konfiguracja zostanie zastąpiona konfiguracją podłączanego przełącznika. Sytuacja taka może przykładowo mieć miejsce, gdy przenosimy urządzenia między domenami VTP lub podłączamy odkupiony od kogoś używany przełącznik. W wersji 3 protokołu problem ten został rozwiązany w taki sposób, że w domenie VTP jeden z przełączników pracujących w trybie VTP Server jest wybierany algorytmem elekcji jako podstawowy serwer VTP i jedynie on może rozgłaszać informacje o modyfikacjach konfiguracji. Pozostałe serwery VTP pełnią funkcję zapasowych na wypadek awarii podstawowego serwera.

Przypomnijmy, że łącza, które przenoszą ramki należące do wielu VLAN-ów, nazywamy portami typu trunk.

Porty na urządzeniach po obu stronach takiego połączenia muszą być skonfigurowane do pracy w tym trybie oraz stosować ten sam mechanizm znakowania ramek – ISL lub 802.1Q. Mimo że ISL tak naprawdę nie jest wykorzystywany, to nie uległ zapomnieniu cały mechanizm zwany Dynamic Trunk Protocol (DTP), pozwalający na automatyczną negocjację tych dwóch parametrów. Nadal przydaje się on w sytuacji rozbudowy czy przebudowy sieci, gdy oczekiwana jest zmiana trybu pracy między portem dostępowym (access port) a portem typu trunk. W DTP interfejs przełącznika może być ustawiony jako dynamic auto lub dynamic desirable. Różnica pomiędzy nimi polega na tym, że w pierwszym z nich preferowanym trybem pracy jest access, w drugim zaś tryb trunk. Ponadto tryb dynamic desirable ma wyższy priorytet, co oznacza, że gdy jedno z urządzeń ma interfejs skonfigurowany jako dynamic auto, a drugie jako dynamic desirable, to w efekcie porty na obu przełącznikach uformują połączenie typu trunk.

VLAN PRYWATNY

VLAN-y pozwalają na logiczne odseparowanie od siebie ruchu różnych grup urządzeń. Pamiętajmy jednak, że komunikacja urządzeń pomiędzy sobą w obrębie danego VLAN-u nie jest domyślnie w żaden sposób blokowana. Niejednokrotnie potrzeby związane z bezpieczeństwem narzucają administratorom bardzo rygorystyczne wymogi dotyczące izolacji urządzeń i restrykcji w komunikacji. Konfigurowanie bardzo wielu VLAN-ów, często dla pojedynczych urządzeń, nie jest praktyczne – pamiętajmy, że dla każdego z nich musimy przydzielić unikatową podsieć. Z pomocą przychodzi nam funkcja Private VLAN opisana w RFC 5517. Dzięki niej możemy skonfigurować port przełącznika w taki sposób, jakby był przypisany do unikatowego VLAN-u, lecz globalnie wykorzystując do tego celu pojedynczy VLAN i podsieć IP.

Aby osiągnąć oczekiwaną izolację, wykorzystywane są dwa VLAN-y. Podstawowy VLAN (Primary VLAN), jest zwykłym VLAN-em skonfigurowanym na przełącznikach i przydzieloną podsiecią IP. Secondary VLAN służy zaś do grupowania urządzeń, aby zapewnić izolację ruchu pomiędzy poszczególnymi grupami w ramach pojedynczego VLAN-u podstawowego. W efekcie, mimo że wszystkie urządzenia współdzielą jedną podsieć, mogą komunikować się jedynie z innymi urządzeniami w tej samej grupie.

Konfigurując funkcję Private VLAN, musimy wybrać jeden z dwóch trybów izolacji ruchu.

Secondary VLAN skonfigurowany w trybie community pozwala na komunikację, czyli przesyłanie ramek Ethernet pomiędzy urządzeniami przypisanymi do tego samego Secondary VLAN-u. Uzyskujemy zatem funkcjonalność niemalże identyczną do konfiguracji, w której grupę urządzeń podłączylibyśmy do zwykłego VLAN-u. Uzyskamy odmienne działanie, konfigurując port w trybie isolated, w którym zablokowana jest jakakolwiek komunikacja z innymi urządzeniami zarówno w tym samym, jak i w innych VLAN-ach typu Secondary. W ramach pojedynczego VLAN-u typu Primary możemy zdefiniować dowolną liczbę VLAN-ów typu community oraz tylko jeden VLAN typu isolated.

Projektując sieć komputerową, zazwyczaj chcemy zapewnić komunikację pomiędzy podsieciami, a co za tym idzie – pomiędzy różnymi VLAN-ami. W tym celu instalujemy routery. Private VLAN jest usługą realizowaną na przełącznikach i dla routerów musi być transparentna, dlatego aby zapewnić odpowiednią komunikację, interfejs, do którego podłączony jest router, musimy ustawić w specjalny tryb zwany promiscuous.

Interfejs w tym trybie ma przypisany jedynie VLAN podstawowy, lecz przełącznik umożliwia mu komunikację ze wszystkimi prywatnymi VLAN-ami skonfigurowanymi w obrębie VLAN-u podstawowego. Jeżeli skonfigurujemy więcej niż jeden port do pracy w trybie promiscuous, to urządzenia z każdej z grup będą mogły komunikować się z każdym urządzeniem podłączonym do portu promiscuous. Działać będzie również komunikacja pomiędzy urządzeniami w poszczególnych portach w trybie promiscuous w obrębie VLAN-u podstawowego. Tak jak w przypadku podłączenia routera żadna dodatkowa konfiguracja nie jest wymagana po stronie podłączanego urządzenia końcowego. Będzie ono otrzymywać nieotagowane ramki jak urządzenia podłączone do portów w trybie access. Odpowiednie identyfikatory VLAN-ów pojawią się jedynie na łączach typu trunk pomiędzy przełącznikami, lecz dzieje się to transparentnie dla użytkowników.

SPANNING TREE A VLAN-Y

O to, by w sieci Ethernet nie powstały pętle, dba jeden z protokołów z rodziny Spanning Tree. Jest to mechanizm zapobiegania powstawaniu pętli w sieciach Ethernet, w których istnieje wiele przełączników i ścieżek pomiędzy urządzeniami. Protokół ten na podstawie informacji zbieranych od urządzeń sieciowych tworzy graf bez pętli (drzewo), który jest wykorzystywany do przekazywania ramek pomiędzy przełącznikami. Jednocześnie zapamiętuje on i blokuje wszystkie zapasowe ścieżki, które mogą zostać użyte w przypadku awarii tej podstawowej. W tym celu przełącznik nasłuchuje specjalnych ramek kontrolnych zwanych BPDU, w których zawarta jest informacja o innych aktywnych urządzeniach sieciowych w danym segmencie oraz połączeniach między nimi.

Większość przełączników buduje jedno drzewo STP i wykorzystuje je dla wszystkich skonfigurowanych VLAN-ów.

W tym celu stosowany jest tradycyjny protokół Spanning Tree (STP) lub zapewniający szybsze mechanizmy uzyskania konwergencji, czyli osiągania stabilności topologii po zmianach lub awariach, protokół Rapid Spanning Tree (RSTP). Wyjątkiem są urządzenia firmy Cisco, które domyślnie stosują zmodyfikowaną wersję protokołu STP i RSTP, za pomocą których drzewa rozpinające budowane są oddzielnie dla każdego ze skonfigurowanych VLAN-ów. Nazywają się one Per-VLAN Spanning Tree (PVST+) oraz Rapid Per-VLAN Spanning-Tree (RPVST+). Jak nietrudno się domyślić, protokoły te nie są ze sobą kompatybilne, choć w niewielkich sieciach mogą koło siebie spokojnie działać. 

NUMERACJA I NAZEWNICTWO VLAN-ÓW

Pierwszą czynnością, którą musimy wykonać, jest zdefiniowanie w konfiguracji urządzenia VLAN-ów. Urządzenia sieciowe rozpoznają VLAN-y za pomocą numerycznych identyfikatorów. Większość platform sprzętowych pozwala administratorom dodatkowo przypisać im nazwy, które potem w wynikach różnych poleceń zastępują wartości numeryczne, lub jak na platformie JunOS w całej konfiguracji należy stosować nazwy, a nie identyfikatory.

Wybierając numer dla nowego VLAN-u, musimy pamiętać o tym, że nie każdy numer możemy swobodnie wykorzystywać.

Podstawowa grupa VLAN-ów o numerach od 1 do 1005 nosi nazwę Normal – historycznie był to zakres numerów przeznaczony do konfiguracji. Spośród nich specjalną grupę stanowią VLAN-y o numerach od 1002 do 1005, które miały specjalne przeznaczenie do łączenia sieci FDDI. Z czasem rozszerzono dopuszczalny zakres numeracji, wprowadzając grupę Extended, w ramach której dozwolone są numery od 1006 do 4094. Specjalnego zastosowania są VLAN-y o numerach 0 i 4095 (oznaczone jako Reserved) i urządzenia nigdy nie pozwolą nam na ich konfigurację. Także VLAN o numerze 1 ma specjalne zastosowanie między innymi w protokołach Spanning Tree, dlatego nigdy nie będziemy mogli usunąć go z konfiguracji urządzenia. O podziale na zakresy Normal i Extended musimy pamiętać między innymi w sytuacji, gdy w sieci chcemy wykorzystać protokół VTP do propagowania informacji o skonfigurowanych VLAN-ach – jedynie VTPv3 pozwala na rozgłaszanie informacji o VLAN-ach z grupy Extended.

Numery VLANNazwa grupyPrzeznaczenie
0ReservedWyłączony z użytku
1NormalDomyślny VLAN dla portów w trybie access, nie można go usunąć z konfiguracji
2–1001Normal 
1002–1005NormalSpecjalne przeznaczenie związane z sieciami FDDI
1006–4094Extended 
4095ReservedWyłączony z użytku

ENKAPSULACJA ISL

Zanim 802.1Q stało się szeroko wykorzystywanym standardem, jak to w branży informatycznej niejednokrotnie się zdarzało, główni gracze rynkowi starali się wprowadzić własne rozwiązania. Cisco w swoich urządzeniach proponowało oprócz 802.1Q standard Inter-Switch Link (ISL), który także miał zapewnić przenoszenie informacji o wielu usługach w sieci Ethernet poprzez pojedyncze połączenie między urządzeniami. Nie była to zatem próba zmiany popularnego i uznanego już standardu Ethernet, lecz propozycja jego dopełnienia. W odróżnieniu od 802.1Q w standardzie ISL ramki Ethernet nie były rozszerzane o dodatkowe pola nagłówka identyfikujące usługę, lecz enkapsulowane, czyli umieszczane wewnątrz ramek ISL. W standardzie tym ramka Ethernet była poprzedzana nagłówkiem o długości 26 bajtów, którego jednym z elementów było pole identyfikujące VLAN, oraz była doklejana do niej nowa suma kontrolna o długości 4 bajtów. Protokół 802.1Q wymaga jedynie rozszerzenia nagłówka o dodatkowe 4 bajty, w których umieszczane były informacje o przypisanym ramce VLAN-ie, a także pola na zapisanie parametrów QoS. W ISL nie znajdziemy też VLAN-u natywnego.

 class=

Standard ISL się nie przyjął, lecz dość długo był implementowany w oprogramowaniu przełączników Cisco Catalyst. Jeżeli w sieci mamy starsze przełączniki tej serii, bardzo możliwe, że nadal wspierają one standard ISL.

KONFIGURACJA PRIVATE VLAN

Jeżeli w naszej sieci działa protokół VTPv1 lub VTPv2, musimy na przełącznikach z portami w trybie Private VLAN ustawić tryb pracy VTP na transparent. Następnie konfigurujemy VLAN-y typu Secondary, przypisując każdemu z nich poleceniem <<private-vlan>> wybrany tryb pracy. Kolejnym krokiem jest zdefiniowanie VLAN-u podstawowego za pomocą polecenia <<private-vlan primary>> oraz wykorzystując polecenie <<private-vlan association>>, przypisanie VLAN-ów typu Secondary. Aby zweryfikować poprawność konfiguracji, zastosujemy polecenie <<show vlan private-vlan>>, które wyświetli tryb pracy każdego ze zdefiniowanych VLAN-ów prywatnych.

 class=

Każdy z portów przełącznika musimy odpowiednio dostosować do wybranego trybu pracy. Interfejsy, do których będą podłączone urządzenia końcowe, konfigurujemy poleceniem <<switchport mode private-vlan host>> oraz wskazujemy numery VLAN-u podstawowego i prywatnego, stosując komendę <<switchport private-vlan host-association 100, 101>>, w której <<100>> to identyfikator VLAN-u podstawowego, a <<101>> prywatnego. Jeżeli interfejs ma działać w trybie promiscuous, zastosujemy polecenie <<switchport mode private-vlan promiscuous>>, po którym musimy zadeklarować numer VLAN-u podstawowego oraz wszystkie związane z nim prywatne VLAN-y, stosując polecenie <<switchport private-vlan mapping 100 101-103,105>>. Listę prywatnych VLAN-ów możemy podać jako zakres, listę lub łączyć te dwie metody ze sobą. Przełączniki warstwy trzeciej mogą pełnić także funkcję routera. Adresy IP przypisywane są wtedy do interfejsów typu SVI. W takim przypadku w konfiguracji wirtualnego interfejsu powiązanego z podstawowym VLAN-em dopisujemy informację o powiązanych VLAN-ach prywatnych poleceniem <<private-vlan mapping 101-103,105>>.

vtp mode transparent
!
vlan 100
  private-vlan primary
  private-vlan association 101-103,105
!
vlan 101
  private-vlan community
!
vlan 102
  private-vlan community
!
vlan 103
  private-vlan community
!
vlan 105
  private-vlan isolated
!
interface FastEthernet0/1
 switchport mode private-vlan host
 switchport private-vlan host-association 100 101
!
interface FastEthernet0/2
 switchport mode private-vlan promiscuous
 switchport private-vlan mapping 100 101-103,105
!
interface Vlan100
 switchport mode private-vlan host
 private-vlan mapping 100 101-103,105

Artykuł został opublikowany na łamach IT Professional.

Więcej tekstów z IT Professional