Kada sveze raspakovani switch stavis u pogon i ne konfigurises nista, on je fabricki podesen da na svim portovima prihvata i sa svih portova salje standardne Ethernet pakete koji, ako se secas teorije, izgledaju ovako:
+------------+------------+-----+--------//---------+-------+
| Dest MAC | Soruce MAC | Len | Payload (Data) | FCS |
+------------+------------+-----+--------//---------+-------+
| 6B | 6B | 2B | 46-1500B | 4B |
To su standardni, obicni Ethernet paketi koji ne sadrze nikakvu oznaku VLAN-a (untagged Ethernet frame). Takve iste pakete salju i primaju standardno svi uredjaji koji se kace na swtich (laptopovi, serveri, ruteri, stampaci itd.). Switch po defaultu omogucava da svi uredjaji u mrezi vide sve ostale, pa za takve uredjaje kazemo da pripadaju istom broadcast domenu, jer svaki uredjaj moze da posalje svima ostalima brodcast paket i da "vidi" sve ostale. Portovi na switchu koji ocekuju pakete poput ovog gore se nazivaju standardni / pristupni portovi (Cisco ih zove "access ports", Brocade i ovaj tvoj vendor ih zovu "untagged ports").
Veliki broadcast domeni generisu previse broadcast saobracaja i to s porastom broja uredjaja postaje problem. A javljaju se i drugi problemi, poput sigurnosti, pa su ljudi izmisili
VLAN-ove (ovaj video ih bas lepo ilustruje). VLAN-ovi omogucavaju da se switch podeli na logicke celine i da ka krajnjim korisnicima izgleda kao da su povezani na razlicite switcheve. Medjutim, krajnji korisnicki uredjaji najcesce mogu da salju samo standardne, gore opisane Ethernet pakete. Zbog toga, i pogledu krajnjih uredjaja na mrezi nista se ne menja - oni se i dalje kace na standardne (access / untagged) portove i salju pakete poput ovog gore, bez ikakvih naznaka kom VLAN-u pripadaju. Konfiguracija VLAN-ova se obavlja na switchu, tako sto kazes da portovi 1, 2, 5 i 10 pripadaju VLAN 10, portovi 3, 4 i 6 VLAN 20 itd.
Ponekad, medjutim, switch mora da se poveze sa drugim switchevima. Prvo resenje kome svima pada na pamet je da u svakom VLAN-u rezervises po jedan standardni (access/untagged) port i povezes dva switcha na taj nacin. I to radi:
PC PC PC PC PC RTR
| | | | | |
+---------+---------+---------+
| VLAN 10 | VLAN 20 | VLAN 30 | SWITCH 1
++--------++--------++--------+
| | |
++--------++--------++--------+
| VLAN 10 | VLAN 20 | VLAN 30 | SWITCH 2
+---------+---------+---------+
| | | | | | |
PC PC PC PC PC PC RTR
Medjutim, to svakako nije prakticno, jer ako imas npr. 2000 VLAN-ova treba ti 2000 kablova. Da bi resili problem ljudi su seli, mozgali i smislili resenje. Istorijski, najpre je Cisco osmislio sopstveni nacin za to, poznat pod nazivom
Cisco Inter-Switch Link (ISL). Posto je taj protokol Ciscov patent, drugi vendori nisu mogli da ga koriste, pa su zato seli i smislili standardno resenje -
IEEE 802.1Q standard (koje je, uzgred, Cisco takodje prihvatio i sto se danas de facto koristi svuda, mada ces u nekim prastarim mrezama mozda naici i na ISL ...). Oba standarda, iako medju sobom nisu kompatibilna, su zapravo zasnovana na istom principu, a omogucavaju istu stvar - da se switchevi sa slike gore vezu jednim jedinim kablom:
PC PC PC PC PC RTR
| | | | | |
+---------+---------+---------+--------+
| VLAN 10 | VLAN 20 | VLAN 30 | TRUNKS | SWITCH 1
++--------++--------++--------+--------+
|
++--------++--------++--------+--------+
| VLAN 10 | VLAN 20 | VLAN 30 | TRUNKS | SWITCH 2
+---------+---------+---------+--------+
| | | | | | |
PC PC PC PC PC PC RTR
Naravno, prvo pitanje koje se postavlja je kako ce switchevi 1 i 2 sa gornje slike, kada prime paket sa linka koji ih povezuje, razvrstati te pakete u odgovarajuce VLAN-ove. Resenje je umetanje VLAN taga duzine 4 bajta izmedju polja "Source MAC" i "Len", sto daje tzv. VLAN-tagged (ili samo: 'tagged') Ethernet frame. Unutar VLAN taga je, izmedju ostalog, upisan VLAN ID zavisno od VLAN-a kome paket pripada:
+------------+------------+----------+-----+--------//---------+-------+
| Dest MAC | Soruce MAC | VLAN Tag | Len | Payload (Data) | FCS |
+------------+------------+----------+-----+--------//---------+-------+
| 6 | 6 | 4 | 2 | 46-1500 | 4 |
Switch koji salje paket ka drugom switchu preko zajednickog linka, pre slanja dodaje (umece) VLAN tag u koji upisuje VLAN ID paketa zavisno od VLAN-a sa koga se paket salje (u literaturi se ova operacija cesto zove: VLAN tag push operation). Kada drugi switch primi takav paket, on najpre ispituje vrednost VLAN taga i u zavisnosti od toga upucuje paket ka radnim stanicama povezanim na odredjeni VLAN. Pre isporuke paketa ka odredisnoj stanici, switch skida VLAN tag (proces poznat pod nazivom VLAN tag pop operation). Ovo je neophodno s obzirom da standardne radne stanice (laptopovi, printeri itd.) primaju i salju standardne Ethernet pakete s pocetka ove price.
Naravno, da bi switch prihvatio paket koji sadrzi VLAN tag na odredjenom portu (u ovom primeru portu koji ga povezuje s drugim switchem), taj port mora da bude konfigurisan za prihvat i slanje Ethernet paketa koji sadrze VLAN tagove. Takve portove Cisco zove "trunks", Brocade i ovaj tvoj vendor ga zovu "tagged ports", Milenko ga je nazvao "Multi VLAN" port, ali sustina je ista - port koji prihvata/salje Ethernet paket koji sadrzi VLAN tag. Neki vendori omogucavaju da na portovima proizvoljno manipulises VLAN tagovima (da radis pop/push/swap operacije). Npr. mozes da konfigurises da se svakom paketu koji pristigne na port doda fiksni VLAN tag (npr. VLAN ID 200), da skines jedan VLAN tag ili da ga zamenis drugim. Juniperovo resenje za to mozes da vidis
ovde.
Sta biva, medjutim, ako se na port konfigurisan kao trunk/tagged/multi-VLAN (zovi ga kako hoces) pojavi standardan Ethernet paket sa pocetka ove price? Ako nista nije definisano, switch ce takav paket odbaciti, odnosno "progutati" (discard) i nece ga proslediti dalje, jer ne zna sta da radi s njim. Slicno tome, ako na port koji je definisan kao access/untagged/single-VLAN pristigne paket koji sadrzi VLAN tag, taj paket ce takodje biti odbacen. S druge strane, u nekim mrezama potrebno je i pakete bez taga koji pristignu na multi-VLAN portove negde prosledjivati, pa
IEEE 802.1Q standard definise pojam "native VLAN" parametra na multi-VLAN portu. To je VLAN u koji se smestaju paketi koji pristizu na multi-VLAN port, a ne sadrze VLAN tag. Na primer, ako podesis "native vlan 100", standardni Ethernet paketi koji pristignu na multi-VLAN port ce dobiti VLAN ID 100 i bice prosledjeni radnim stanicama u VLAN 100. I kao sto Milenko gore kaze, ako na jednoj strani trunka namestis da ti je native VLAN 100, a na drugoj 200, radne stanice iz mreze 1 povezane na VLAN 100 ce videti radne stanice u VLAN 200 sa mreze 2. I mada je to u sustini najcesce posledica greske, takve konstrukcije ponekad mogu da budu i 100% ispravne (mada su muka za troubleshooting). Sve zavisi sta je bila ideja ljudi koji su dizajnirali takvu mrezu.
Na kraju, par reci o QinQ. Zasto je on izmisljen? IEEE 802.1Q standard definise 12 bita za VLAN ID, jer VLAN tag izgleda ovako:
+----------------+---+-+----------------+
| TPID | P |D| VLAN ID |
+----------------+---+-+----------------+
| 16 bits | 3 |1| 12 bits |
Donjih 12 bita VLAN taga predstavljaju VLAN ID. Ostala polja su TPID (pomenucu ga kasnije), potom 3 "P" bita za implementaciju klase servisa u Ethernet mrezama (
IEEE 802.1p) i jedan tzv. kanonicki bit. 12 bita za VLAN ID ogranicava numeraciju VLAN-ova na opseg 1-4095. Kada su se pojavile tzv. Metro Ethernet mreze, gde su ISP kacili korisnike na Ethernet portove i svakome dodeljivali po jedan VLAN, ocigledno su udarili u plafon od 4096 korisnika. A korisnici su izrazili zelju da po Ethernetu vozaju i sopstvene VLAN-ove. Da bi resili te probleme uvedeni su visestepeni VLAN tagovi (stacked VLAN tags - QinQ) definisani
IEEE 802.1ad standardom, koji omogucava da se u mrezi definise 16777216 VLAN-ova, jer uvodi dva posebna taga - spoljasnji (outer tag, cesto nazivan i Service VLAN iliti S-VLAN) i unutrasnji (inner tag, cesto nazivan i Customer VLAN iliti C-VLAN):
+------------+------------+----------+----------+-----+--------//---------+-------+
| Dest MAC | Soruce MAC | S-VLAN | C-VLAN | Len | Payload (Data) | FCS |
+------------+------------+----------+----------+-----+--------//---------+-------+
| 6 | 6 | 4 | 4 | 2 | 46-1500 | 4 |
Gornji primer pokazuje paket sa 2 VLAN taga, ali su moguci paketi i sa vise VLAN tagova. Vodi racuna da je bruto duzina paketa u tom slucaju veca - standardni paket ima 1518 bajtova (odnosno 1514 bez FCS/CRC zacelja), paket s jednim VLAN tagom je 4 bajta duzi i ima 1522 (odnosno 1518) bajtova, paket s dva taga ima 1526 (odnosno 1522, bez FCS/CRC). Duzina "Payload" polja je u svim slucajevima ista - 46-1500 bajtova duzine. Kada je paket prekratak Ethernet drajver mu dopunjava Payload nulama dok ne ispuni 46 bajtova duzine (tzv. 'padding').
Mala zanimljivost: u pocetku, kada se pojavio QinQ, mnogi vendori su koristili razlicite TPID vrednosti (gornjih 16 bita VLAN taga) da razlikuju single-tagged i double-tagged pakete (pakete sa jednim i dva VLAN taga). Recimo, Nortel je koristio 0x8100 za pakete s jednim tagom i 0x88a8 sa dva taga, ali gotovo svi vendori danas koriste iskljucivo 0x8100 ...
Zakljucak:
Cisco Brocade Paketi koje port prihvata/salje
===== ======= ===============================
access port untagged port Normalni Ethernet paketi (bez VLAN taga)
trunk port tagged port Ethernet paketi koji sadrze VLAN tagove
Trunks/Tagged Ports - koristis za povezivanje switcheva medju sobom, switcheva na rutere (koji podrzavaju VLAN tagging), kao i svih uredjaja gde ti je potrebno vise od jednog VLAN-a. Paketi koji se salju i primaju moraju da imaju VLAN tagove, odnosno uredjaj mora da podrzava IEEE 802.1Q.
Access/Untagged Ports - koristis za povezivanje svih ostalih uredjaja (laptopova, stampaca itd.) i svega ostalog sto ne podrzava IEEE 802.1Q.
Nadam se da je sada jasnije.
[Ovu poruku je menjao B3R1 dana 10.01.2020. u 15:43 GMT+1]