Vrstvy ISO/OSI a teorie síťování
L1 a L2 - Ethernet, WiFi a PPP
VLAN
Dejme tomu, že máme switch se 48 porty a máme dvě oddělené skupiny stanic, které chceme oddělit do dvou izolovaných Ethernetových segmentů. VLAN řeší přesně tento problém - porty pro první skupinu nastavíme jako access porty pro VLAN 1 a porty pro druhou skupinu jako access pro VLAN 2. Co když ale máme server, nebo další switch, který má být členem obou skupin a tedy součástí obou VLAN. Pochopitelně můžeme pro takový server vyčlenit dva access porty pro obě VLANy. Jenže, co když máme VLAN víc?
Na to je potřeba mít možnost přes jeden port a přes jedno fyzické médium odděleně pustit více skupin, tedy umožnit, aby jeden port byl členem více VLAN a označkovat rámce, které se na tomto portu přenáší, číslem VLANy, do které patří. Na tohle existuje několik implementací, nicméně za obecný standard lze považovat 802.1Q.
V Cisco terminologii se portu, který může přenášet rámce z více VLAN, říká trunk. Na této společné lince, vedoucí z trunk portu, se ethernetové rámce značkují pomocí 802.1Q rozšíření ethernetové hlavičky číslem VLAN v rozsahu 1-4094 (12 bitů mínus rezervované hodnoty).
Ethernetová hlavička bez 802.1Q
Preambule + SFD | Cílová MAC adresa | Zdrojová MAC adresa | Ether Type | Payload (data) | CRC / FCS |
---|---|---|---|---|---|
8 bytů | 6 bytů | 6 bytů | 2 byty | 46 - 1500 bytů | 4 byty |
Ethernetová hlavička bez 802.1Q
Preambule + SFD | Cílová MAC adresa | Zdrojová MAC adresa | 802.1Q header | Ether Type | Payload (data) | CRC / FCS |
---|---|---|---|---|---|---|
8 bytů | 6 bytů | 6 bytů | 4 bytů | 2 byty | 46 - 1500 bytů | 4 byty |
Na stranu switchů se dá pohlížet buď tak, že pro každou VLANu je fyzický switch rozdělen na pod-switche, které mají do dané VLANy zapojené jen některé (access) porty, které vysílají i přijmají rámce standardně, tedy bez 802.1Q značky. A krom toho mohou mít i sdílené trunk porty, na které musí vysílat rámce s 802.1Q značkou se správně vyplněným číslem VLAN. A do dané VLAN přicházejí z trunk portů jen rámce, co měly příslušné číslo VLAN v 802.1Q značce. Krom toho trunk port může mít jednu VLAN zvolenou jako nativní, tedy pro tuto VLAN se chová jako normální (access) port a vysílá a přijímá v ní rámce bez 802.1Q značky.
Každý takový virtuální switch pracuje v našem myšlenkovém modelu nezávisle - pro svou VLAN si vyplňuje switchovací tabulku podle SRC MAC adres v příchozích rámcích, kde si zaznamenává z jakého portu (včetně trunk portů s abstrakcí VLAN značek) přišla která MAC adresa.
Alternativně můžeme switch s podporou VLAN chápat blíže skutečné implementaci, totiž že switch má ve switchovací tabulce sloupec pro VLAN, který musí odpovídat číslu VLAN asociovanému ke každému rámci. Port pak v režimu access podle své příslušnosti konkrétní VLAN přidává před zpracováním virtuální číslo VLAN všem rámcům, které přes něj přijdou (bez fyzické značky). Trunk porty používají při zpracování rámců v tabulce skutečné hodnoty z 802.1Q značek a stejně tak při vysílání rámců přes trunk port je do 802.1Q značky vyplněno příslušné číslo VLAN. Výjimku představuje nativní VLAN na trunk portu, pro kterou je funkce portu shodná, jako u access portu.
Zopakujme stručně, co se stane, když například na port 1 switche z předchozího obrázku přijde následující rámec:
Ethernetová hlavička bez 802.1Q
Preambule + SFD | Cílová MAC adresa | Zdrojová MAC adresa | 802.1Q header | Ether Type | Payload (data) | CRC / FCS |
---|---|---|---|---|---|---|
konstanta | 4e:4b:0c:66:fb:66 | 00:16:3e:73:04:49 | 0x8100 0x000a | 0x0800 | IP + HTTP | *** |
Switch na předchozím obrázku vykoná následující:
- Ověří, že zdrojová MAC 00:16:3e:73:04:49 je v tabulce asociovaná s portem 1 a VLAN 10 (0x0a v 802.1Q headeru), což v našem případě je. Jinak by tento záznam switch vytvořil.
- Najde výstupní port pro cílovou MAC 4e:4b:0c:66:fb:66 ve VLAN 10 (0x0a), což je v našem případě předposlední záznam ve switch tabulce.
- V našem případě tedy odešle rámec na výstupní port určený předposledním záznamem v tabulce, to je port 3, který je access pro VLAN 10 a proto bude z rámce odebrán 802.1Q header. jinak se rámec nezmění.
- Pokud by v tabulce žádný záznam pro cílovou MAC adresu ve VLAN 10 nebyl, switch by rámec rozeslal na všechny porty, co jsou ve VLAN 10, s výjimkou portu, odkud rámec přišel, tedy portu 1.
- Při odesílání rámce na trunk port do VLANy, která není nativní, switch vyplní 802.1Q header, naopak do access portu a nebo nativní VLAN trunk portu pošle rámec bez 802.1Q tagu a přesně tak očekává, že bude rámce přijímat od protistran.