Czytając sporo forów jak i również grupy dyskusyjne zauważyłem, że temat VLANów przewija się wręcz nieustannie – sporo osób ma problemy z konfiguracją czy też ze zrozumieniem koncepcji i istoty działania tej technologii. A VLANy na pewnym etapie stają się po prostu nieodzowne i pozwalają nie tylko na „segmentację” sieci, ale również na wprowadzenie nowych ciekawych funkcjonalności poczynając od faktu „pchania” wielu sieci przez jedno łącze do tworzenia wydzielonej sieci służącej do administracji.
Czym jest VLAN ?
VLAN (czyli formalnie Virtual Local Area Network) to w wielkim skrócie technologia pozwalająca na podzielenie portów w przełączniku w logiczne odizolowane grupy. Dzięki temu możemy podzielić nasz przełącznik posiadający np. 48 portów na dwie grupy po np. 24 portów każda. Oczywiście podział ten może być dowolny i nic nie stoi na przeszkodzie, żeby nawet dla każdego z 48 portów wydzielić osobną grupę VLANu – niemniej sens takiej konfiguracji byłby niewielki.
Warto jednak zaznaczyć, że wielu producentów VLAN’em określa kilka różnych funkcjonalności – które często z formalnym standardem obsługi VLANów IEEE 802.1Q nie wiele mają wspólnego. Dlatego przełączniki możemy podzielić z tego powodu w sumie na takie umowne 4 kategorie :
- Przełączniki niezarządzalne Passthrough VLAN – Przepuszczają ramki 802.1Q – ale nie pozwalają na zdefiniowanie żadnego VLANu. Zasadniczo tak zachowuje się niemalże każdy prosty switch za kilkadziesiąt złotych.
- Przełączniki niezarządzalne „z dipswitchem” – W nich VLANy ustawiane są za pomocą przełącznika, ale nie wspierają w pełni „tagowanych” VLANów w standardzie 802.1Q. Ich funkcjonalność często ogranicza się tylko do izolacji portów między sobą.
- Przełączniki zarządzalne z obsługą VLAN jako Port Based – najczęściej są to kompaktowe przełączniki zarządzalne – popularne WebSmarty- które obsługują tworzenie grup VLANowych, ale często bez obsługi tagowania ramek zgodnie z 802.1Q.
- Przełączniki zarządzalne z pełną obsługą 802.1Q – czyli najbardziej uniwersalne przełączniki, które pozwalają na przenoszenie ramek ethernetowych wraz z tzw. tagami.
Oczywiście istnieją również przełączniki obsługujące i tryb Port Based oraz 802.1Q (np. TP-Link TL-SL2218WEB). Oczywiście to jest tylko wierzchołek góry lodowej tak naprawdę, gdyż producenci wprowadzają coraz to bardziej „wymyślne” sposoby interpretacji standardu pozwalając np. na bezpośrednie przypisywanie konkretnego VLANu do adresu MAC pojawiającego się w całej sieci przełączników lub przypisanie VLANu nawet do konkretnych usług TCP/IP. Żeby zrozumieć zasadę działania oraz co i z czym się „je” należy zrozumieć pojęcie TAG’owania.
TAG – czyli znakowane ramki
TAG z języka angielskiego można przetłumaczyć jako znak lub znacznik. Podobnie jak w przypadku iptables – możemy w kernelu Linuxa markować sobie pakiety – tak w przypadku VLANów możemy oznaczać poszczególne ramki Ethernetowe. Odbywa się to zgodnie ze standardem 802.1Q – który definiuje dwa dodatkowe pola w ramce Ethernet o łącznej długości 4 bajtów. Pola te nazywają się po kolei TPID (Tag Protocol Identifier) oraz TCI (Tag Control Information). Pole TPID jest zasadniczo zawsze stałe i reprezentowane przez wartość szesnastkową 0x8100. Pole TCI zawiera przede wszystkim 12 bitowy identyfikator VLANu. Pozostałe bity zarezerwowane są na dodatkowe informacje o technologii oraz priorytecie – gdyż dane z poszczególnych VLANów mogą być również odpowiednio z określonym priorytetem przełączane przez switcha.
Z uwagi, że do dyspozycji posiadamy 12 bitów przeznaczonych na określenie identyfikatora VLANu – do dyspozycji mamy sumarycznie 4096 znaczniki, z czego wartość 0 i 4096 nie może być używana. Stąd do dyspozycji mamy 4094 różne VLANy. Skoro już wiemy czym są TAGi warto zadać proste pytanie.
Czym różni się Port Based od 802.1Q ?
Różnica jest bardzo prosta. O ile w przypadku 802.1Q ramki są oznaczane TAGiem i mogą one z takim znacznikiem opuszczać przełącznik. O tyle w przypadku trybu Port Based VLANy są tworzone tylko w konfiguracji przełącznika. Działanie takie może być oczywiście pożądane w przypadku kiedy chcemy w prosty sposób izolować porty – porty między sobą się nie widzą, ale widzą jeden wspólny port w ramach oczywiście jednego przełącznika. Port Based przydaje się również w przypadku kiedy chcemy przełącznik po prostu podzielić na dwa urządzenia – wszystko oczywiście zależy z jakim rodzajem przełącznika mamy do czynienia. Bardziej uniwersalne i zdecydowanie bardziej funkcjonalniejsze są przełączniki obsługujące standard 802.1Q.
Czym różnią się poszczególne tryby pracy portu ?
W switchach obsługujących standard 802.1Q możemy wyróżnić generalnie 3-4 tryby pracy poszczególnego portu w przełączniku. Oczywiście w zależności od producenta przełącznika funkcjonalność VLANów nazewnictwo jak i typ portu mogą być zupełnie różne – wtedy niestety należy zagłębić się w dokumentację, gdyż np. port ustawiony w trybie Trunk w przełącznikach Cisco Catalyst to nie jest ten sam rodzaj Trunku co w przypadku przełączników D-Link, Linksys czy TP-Link, ale może od początku.
Przełączniki zwykle mają za zadanie odpowiednio kierować ramki Ethernetowe do odpowiednich portów – stąd znaczniki ramek są odpowiednio dodawane lub usuwane w zależności czy dana ramka przychodzi na dany port (Ingress) czy też opuszcza port (Egress). W przypadku kiedy ramki przychodzą na port – switch może domyślnie „otagować” ramkę jeśli ta nie jest już wcześniej oznaczona (tryb ACCESS i GENERAL). Kiedy ramka ma zostać wysłana na konkretny port ramka może zostać pozbawiona znacznika (tryb ACCESS) lub może zostać oznaczona odpowiednim znacznikiem (tryb TRUNK lub GENERAL). Podsumowując :
- ACCESS – W tym trybie przełącznik akceptuje zwykle wszystkie nietagowane ramki i nadaje im znacznik z góry zdefiniowany za pomocą pola PVID. Jeśli dane mają zostać wysłane na port w trybie ACCESS – znacznik zostaje usunięty. Warto tutaj zaznaczyć, że w przypadku trybu ACCESS przypisać możemy tylko jeden wybrany VLAN.
- GENERAL – Ten tryb pracy jest najbardziej uniwersalny, gdyż oferuje możliwość odbierania ramek nietagowanych i tagowanych. W przypadku ramek nietagowanych możemy oczywiście nadać im odpowiedni PVID. W przypadku ramek tagowanych możemy wskazać jakie ramki chcemy zaakceptować – w tym celu dopisujemy w konfiguracji przełącznika jakie VLANy mają być przypisane do danego portu.
- TRUNK – Ten tryb w zależności od producenta przełącznika zwykle definiowany jest jako pory którym „przepychane” są wszystkie VLANy jakie znajdują się w obrębie przełącznika. W przypadku switchy Cisco Catalyst port ustawiony w trybie TRUNK akceptuje wszystkie ramki tagowane i również wysyła wszystkie VLANy. W przypadku nowszych switchy Cisco czy też nawet TP-Linków – w konfiguracji należy zdefiniować jakie VLANy akceptujemy. Więc funkcjonalność portu w trybie TRUNK nie różni się wiele w odróżnieniu od trybu GENERAL – jednak port w takim trybie nie będzie akceptował nietagowanych ramek.
Istnieje oczywiście jeszcze jeden tryb pracy oznaczany w niektórych przełącznikach jako Q-in-Q. W tym trybie przełącznik pozwala na zagnieżdżanie VLANów w VLANie zgodnie ze standardem 802.1ad. Funkcjonalność taką posiadają przełączniki przeznaczone zwykle do realizacji usług Metro Ethernet – ale na potrzeby tego wpisu nie będziemy tego analizować. Warto również dodać, że w większości popularnych przełączników dostępny jest również protokół GVRP – który pozwala informować przełączniki o dostępnych sieciach VLAN poprzez port w trybie TRUNK. Wyobraźmy sobie sytuację, że mamy sieć składająca się z kilku przełączników połączonych ze sobą szeregowo. Między krańcami sieci chcemy wydzielić wirtualną sieć między dwoma urządzeniami wpiętymi do przełączników. W przypadku kiedy nie korzystamy z protokołu GVRP utworzenie takiego kanału transmisji wymagałoby dodania danego VLANu na wszystkich przełącznikach w ramach portów trunkowych. W przypadku użycia GVRP tworzymy porty w trybie ACCESS gdzie chcemy mieć odpowiednie końcówki takiej sieci i przypisujemy im ten sam VLAN – switche automatycznie zaczną rozgłaszać „osiągalność” takiego VLANu na odpowiednich portach eliminując ręczną konfigurację.