LANOorspronkelijk was een LAN letterlijk een lange draad, vergelijkbaar met een waslijn, waar je computers op aansloot (elk van hen als een sok met een knijper aan die waslijn). Elke computer kon alle ethernetpakketjes van elke andere computer voorbij zien komen. Als je in zo'n netwerk 2 PC's had en 2 servers, en PC 1 op hetzelfde moment met Server 1 wilde communiceren als PC 2 met Server 2, dan ging dat niet - er moest op elkaar gewacht worden.
PC 1 ------|
PC 2 ------|
Server 1 --|
Server 2 --|
Ethernet HubOmdat die ene lange draad niet handig was (en de lengte beperkt tot 150 meter), werden de ethernet
hub uitgevonden, waarmee een stervormige structuur mogelijk werd (als spaken in een fietswiel; hub is Engels voor naaf). Een hub stuurt echter alle pakketjes die op 1 poort binnenkomen, gewoon door naar alle andere poorten. Nog steeds zag elke PC dus alle ethernetpakketjes uitgezonden door alle andere computers, en bij 2 PC's en 2 servers moest er nog steeds op elkaar gewacht worden.
Ethernet SwitchOm dat
laatste probleem (performance dus) op te lossen, werd de ethernet
switch uitgevonden. Als deze een ethernetpakketje
ontvangt op een willekeurige poort N, kijkt de switch naar het
afzenderethernetadres in dat pakketje, en slaat de volgende gegevens op in een regel in een tabel:
1) dat (afzender-) ethernetadres;
2) het poortnummer N waarop dat pakketje de switch binnenkwam;
3) het tijdstip.
Bij het
doorsturen van elk ethernetpakketje kijkt de switch naar het
bestemmingsethernetadres in het ethernetpakket. Daarbij gebeurt het volgende:
A) Als het om een broadcastadres (FF:FF:FF:FF:FF:FF) of ander multicastadres (X:*:*:*:*:* waarbij het laagste bit van X gezet is en de rest niet uitmaakt) gaat, stuurt de switch het via al zijn poorten naar buiten en werkt dus als hub;
B) Ook als het bestemmingsadres niet in de tabel voorkomt, stuurt de switch het op alle poorten naar buiten;
C) Als het bestemmingsadres
wel voorkomt in de tabel, wordt het uitsluitend via de bijbehorende poort naar buiten gestuurd.
Stel je de volgende configuratie voor:
PC 1 --------------- Switchpoort 1 | Switch
PC 2 --------------- Switchpoort 2 |
Server 1 ----------- Switchpoort 3 | backplane
Server 2 ----------- Switchpoort 4 |
Zodra PC 1 een pakketje naar Server 1 stuurt "leert" de switch dat PC 1 "achter" poort 1 zit. Als de switch nog niet weet waar Server 1 zich bevindt, wordt het pakketje op alle poorten naar buiten gestuurd. Zodra Server 1 een antwoord naar PC 1 stuurt, leert de switch waar Server 1 zit. En omdat de switch al weet waar PC 1 zit, stuurt hij het pakketje alleen naar buiten op poort 1.
Je zult begrijpen dat (als de switch intern snel genoeg is) PC 1 op hetzelfde moment met Server 1 kan communiceren als PC 2 met Server 2 en het dus
lijkt of er 2 fysiek gescheiden verbindingen bestaan, elk met de maximale bandbreedte van 1 verbinding.
Dynamische karakter van ethernet switchesEr zijn verschillende redenen waarom de switch zo'n regel weer uit de tabel verwijdert. In elk geval gebeurt dat na een bepaalde tijd (vaak 5 minuten), daarom wordt het ontvangsttijdstip opgeslagen. Echter, als de switch binnen de ingestelde "onthoudtijd" opnieuw een ethernetpakketje van dezelfde PC ontvangt, blijft de regel in de tabel staan maar wordt wel het ontvangsttijdstip overschreven met de actuele tijd. Nb. per ethernetadres kan er maar 1 regel in de tabel staan.
Er zijn vaak ook verschillende redenen waarom een switch de tabel in 1 keer leeggooit, o.a. als de switch denkt dat er sprake is van een "topology change". Daarna moet de switch eerst weer leren (de tabel vullen) en zolang de switch niet weet achter welke poort bestemmingsadressen zich bevinden, werkt deze als hub (ik heb zo POP3 en FTP wachtwoorden naar alle PC's in een LAN gezonden zien worden). Daarnaast, een van de denkbare aanvallen is dat PC 2 voortdurend netwerkpakketjes verzendt met als afzenderethernetadres het adres van Server 1 (vervalst dus) waardoor de switch pakketjes bestemd voor Server 1 slechts naar PC 2 zal sturen.
Kortom, het switchproces is een truc om bandbreedte te optimaliseren; het is beslist
geen security feature. Want zelfs zonder aanvallen is het
by design dat er ethetnetpakketjes "gehubd" worden: sowieso geldt dat voor multicast (inclusief broadcast) ethernetpakketjes, maar af en toe ook voor unicast ethernetverkeer bestemd voor een andere dan jouw PC. Door slechts passief te sniffen kun je ontzettend veel informatie vergaren in een ethernetnetwerk (vooral met niet gehardende Windows PC's). Je moet je dan ook serieus afvragen of er wel zoiets bestaat als een "trusted network". In elk geval is een LAN niet betrouwbaarder dan de zwakste (aangesloten) schakel.
VLANMet VLANs simuleer je 2 of meer fysiek gescheiden ethernet netwerken die onderling geen
gewone ethernetpakketjes kunnen uitwisselen, vergelijkbaar met het netwerk bij jou thuis en dat van jouw buren. Om tussen die (OSI layer 2) ethernetnetwerken toch informatie te kunnen uitwisselen, zul je dat op een hoger niveau moeten doen, meestal IP (op OSI layer 3) en daar heb je een router voor nodig.
Bij een switch die VLANs ondersteunt
lijkt het erop of er, per VLAN, een losse onafhankelijke switch bestaat, waarbij VLANs "gekoppeld" (op IP niveau) kunnen zijn middels een router:
PC 1 ------------------ Switchpoort 1 | Fysieke switch 1, virtuele switch 1
PC 2 ------------------ Switchpoort 2 | VLAN "A" bijv. met nummer 123
/ Routerpoort 1 ------- Switchpoort 3 |
| ROUTER
\ Routerpoort 2 ------- Switchpoort 4 | Fysieke switch 1, virtuele switch 2
Server 1 -------------- Switchpoort 5 | VLAN "B" bijv. met nummer 456
Server 2 -------------- Switchpoort 6 |
In de bovenstaande configuratie zijn er 2 ethernet broadcast domains, die (afhankelijk van de configuratie van de router) via IP pakketjes informatie met elkaar kunnen uitwisselen.
Meerdere VLANs over 1 fysieke kabelNet zoals elk IP paket in een "ethernetdoosje" wordt gestopt om via een ethernetnetwerk te kunnen worden getransporteerd, is er een vergelijkbare truc nodig om gewone ethernetpakketjes voor verschillende VLANs via dezelfde ethernetkabel te kunnen versturen: ook die stoppen we weer in een omhullend doosje, waarna we daar een VLAN adreslabel op plakken. Zo'n adreslabel wordt ook wel een "tag" genoemd, en zo'n pakket een
tagged pakket. Een verbinding waar dit soort pakketjes overheen gaan wordt vaak een
trunk genoemd. Een switchpoort die tagged verkeer uitwisselt wordt een trunk poort genoemd, en een poort waarop gewoon ethernetverkeer wordt uitgewisseld wordt een access poort genoemd (bij uitgaande pakketjes verwijdert de switch de VLAN verpakking, en bij inkomende pakketjes voegt de switch deze verpakking toe).
Als een router ook een trunk poort heeft, is het volgende mogelijk:
PC 1 ------------------- Switchpoort 1 (access) | Fysieke switch 1, virtuele switch 1
PC 2 ------------------- Switchpoort 2 (access) | VLAN "A" bijv. met nummer 123
Routerpoort (trunk) ----- Switchpoort 3 (trunk) | Fysieke switch 1, VLANs "A" en 'B"
Server 1 --------------- Switchpoort 4 (access) | Fysieke switch 1, virtuele switch 2
Server 2 --------------- Switchpoort 5 (access) | VLAN "B" bijv. met nummer 456
Een pakketje van PC 1 naar Server 1 gaat dan eerst via VLAN "A" naar de router. Die verwijdert eerst de VLAN tag en daarna de ethernet header, en bepaalt vervolgens hoe het IP pakket gerouteerd moet worden. Als dat naar Server 1 moet, maakt de router er een ethernet envelop omheen (met bestemmingsethernetadres dat van Server 1), verpakt het resultaat met VLAN tag "B" en stuurt het (via dezelfde kabel) terug naar de switch. Vanwege de enkelvoudige verbinding met de switch wordt zo'n configuratie "router on a stick" genoemd.
VLAN securityHoewel VLANs t.o.v. fysiek gescheiden netwerken en apparaten een aantal flinke beveiligingsrisico's introduceren, worden ze in de praktijk vaak als security boundary gebruikt. Enkele van die risico's zijn:
- Configuratiefouten
- Gebruik maken van het "default VLAN"
- Beschikbaarheidsproblemen in alle VLANs door problemen in één VLAN
- VLAN hopping
- Fysieke toegang door onbevoegden tot apparatuur (access points, VMware) en kabels met VLANs
- Mogelijkheden voor ongeautoriseerde toegang tot VLAN netwerkapparatuur, o.a. door bugs
Op internet is zat info te vinden over de risico's van het gebruik van VLANs voor CIA (Confidentiality, Integrity en Availability), zie bijv.
http://www.pages02.net/coastams-networkbox/newsletter/newsletter_oct2013_article1.html.