Hur en switch fungerar

En switch har blivit en grundläggande komponent i dagens LAN-infrastruktur. I ett Ethernet LAN delar alla enheter (värdar vid användning av IPv4 eller noder vid användning av IPv6) på nätverkets resurser, vilket innebär att varje enhet konkurrerar om tillräcklig bandbredd och måste hantera potentiella kollisioner och deras effekter.

Bild 1: Switchar och deras Ethernet-portar

En switch har flera anslutningskontakter, kallade Ethernet-portar eller bara portar. En switch filtrerar datatrafik (ramtrafik) mellan sina portar genom att välja vilken port som ett specifikt paket (ram) ska skickas till. Switchens beslut baseras på fyra grundläggande funktioner:

  1. Adressinlärning: Switchen lär sig och lagrar MAC-adresser för enheter anslutna till dess portar.
  2. Vidarebefordring: Baserat på den inlärda MAC-adressen vidarebefordrar switchen ramar till rätt port.
  3. Filtrering: Om destinationen finns på samma port som källan filtrerar switchen bort trafiken för att förhindra onödig nätverksbelastning.
  4. Flooding: Om MAC-adressen inte finns i switchens tabell, skickar den ramen till alla portar utom den inkommande för att hitta destinationen.

Dessa fyra funktioner är alltid aktiverade på en switch och kräver ingen ytterligare konfiguration. Studera bilden nedan för en visuell representation.

Bild 2: Ett litet LAN

Bilden illustrerar ett litet nätverk som består av en switch och fyra datorer, benämnda PC1, PC2, PC3 och PC4. Dessa datorer är anslutna till switchens portar fa0/1, fa0/2, fa0/3 och fa0/4.

Datorernas MAC-adresser är följande:

  • PC1: 000A.F3D7.CD92
  • PC2: 00D0.BAA3.003D
  • PC3: 0001.4350.1D87
  • PC4: 000C.8507.9A81

Det är viktigt att notera att varje Ethernet-ram innehåller två MAC-adresser: en för avsändaren (source) och en för mottagaren (destination). Avsändaradressen (source) är alltid en unicast MAC-adress, vilket innebär att den identifierar en specifik enhet. Mottagaradressen (destination) kan vara antingen en unicast-adress, en multicast-adress eller en broadcast-adress, beroende på vilken typ av kommunikation som sker.

Switchen har förmågan att känna igen dessa olika adresstyper och hanterar både avsändaradressen och mottagaradressen för att säkerställa korrekt vidarebefordring av ramarna i nätverket.

Adress-inlärning

För att kunna koppla ihop avsändare och mottagare på ett nätverk måste switchar hålla reda på MAC-adresserna för alla anslutna enheter. När nätverket är nyinstallerat och datorerna PC1, PC2, PC3 och PC4 ännu inte har tilldelats IP-adresser och ingen nätverkstrafik har genererats, har switchen ännu inte lärt sig några MAC-adresser. Om man inspekterar MAC-tabellen på switchen vid detta tillfälle, kommer man att se att tabellen är tom, vilket indikerar att ingen MAC-adress har registrerats än.


Bild 3: Ingen MAC-adress på switchen

Vi konfigurerar nu IP-adresser för PC1 (10.10.10.1/24) och PC2 (10.10.10.2/24). Därefter inspekterar vi återigen CAM-tabellen (Content Addressable Memory) på switchen för att observera eventuella uppdateringar.


Bild 4: PC1 och PC2 MAC-adresser registrerade i switchens MAC-tabell

Som ni kan se har switchen automatiskt lärt sig två MAC-adresser och har kopplat dem till de specifika portar som varje enhet är ansluten till. Utan funktionen för adressinlärning skulle switchen inte ha kunnat identifiera MAC-adresserna, och därmed skulle ingen koppling mellan MAC-adresser och portar ha varit möjlig. Dessa MAC-adresser har nu lagrats i switchens MAC-tabell, även kallad CAM-tabellen (Content Addressable Memory). Adresserna behålls i tabellen i fem minuter som standard, varefter de automatiskt tas bort om ingen ytterligare trafik observeras.

Nu fortsätter vi med att konfigurera IP-adresser för de återstående datorerna: PC3 (10.10.10.3/24) och PC4 (10.10.10.4/24). Därefter inspekterar vi MAC-tabellen på switchen en gång till.


Bild 5: PC3 och PC4 MAC-adresser registrerade i switchens MAC-tabell

Vi kan nu konstatera att MAC-adresserna för PC3 och PC4 har registrerats i MAC-tabellen. Samtidigt ser vi dock att MAC-adresserna för PC1 och PC2 inte längre finns kvar i tabellen. Detta illustrerar hur MAC-adresser inte alltid är tillgängliga för switchen att använda, vilket kan påverka dess förmåga att utföra sitt arbete effektivt.

Så länge switchen känner igen MAC-adresserna i sin MAC-tabell, kan den identifiera avsändare och mottagare och koppla ihop dem korrekt. Men det kan hända att switchen mottar en destinations-MAC-adress som inte finns i tabellen, vilket gör det omöjligt att direkt koppla ihop avsändaren med mottagaren. När detta sker måste switchen använda funktionen ”flooding” för att skicka ram till alla portar och på så sätt upptäcka den saknade destinationsadressen.

Flooding

Flooding innebär att switchen skickar den inkommande ramen (frame) vidare till alla aktiva portar, förutom porten som ramen togs emot på. Det finns två huvudsakliga anledningar till varför en switch använder flooding-funktionen:

  1. Broadcast-ramar: När switchen tar emot en broadcast-ram, som används av protokoll som ARP eller DHCP (bland andra).
  2. Okänd destinationsadress: När switchen tar emot en ram med en destinations-MAC-adress som inte finns i switchens MAC-tabell

Föreställ dig att PC1 skickar ett ARP-paket för att ta reda på PC4 MAC-adress (just nu finns ingen MAC-adress i switchens tabell eftersom adresserna endast behålls i fem minuter). Switchen läser av avsändarens MAC-adress och registrerar den i sin tabell, men kan inte göra samma sak med destinations-MAC-adressen. Varför? Titta på följande exempel:

Destination MAC-adress Source MAC-adress Protokoll
FFFF.FFFF.FFFF 000A.F3D7.CD92 ARP

När switchen tar emot en ram med en viss destinations-MAC-adress, men där destinationen inte finns i switchens MAC-adresstabell, har switchen inget annat val än att genomföra en flooding. Målet med denna flooding är att den slutenhet som använder destinations-MAC-adressen i ramen (PC4) ska ta emot meddelandet och svara på det. När slutenheten svarar kan switchen lära sig slutenhetens MAC-adress och mappa den till porten som meddelandet kom från.

När PC4 svarar skulle adressinformationen i ramen se ut så här:

Destination MAC-adress Source MAC-adress Protokoll
000A.F3D7.CD92 000C.8507.9A81 A

Vidarebefordring

Nu när PC1 och PC4 har identifierats och deras MAC-adresser har mappats till specifika portnummer i switchens MAC-tabell, kan switchen utföra sin huvudsakliga uppgift: vidarebefordring. PC1 kan nu fortsätta sin kommunikation med PC4, och eftersom switchen har all nödvändig information lagrad i sin tabell sker kommunikationen mycket snabbare och mer effektivt.

Filtrering

Men vad händer med PC2 och PC3? Tack vare filtreringsfunktionen är de inte involverade i någon av de pågående kommunikationsprocesserna mellan PC1 och PC4. Switchen filtrerar nätverkstrafiken och ser till att endast de nödvändiga enheterna, i detta fall PC1 och PC4, är aktiva i kommunikationen. Detta förbättrar nätverkets prestanda genom att minska onödig trafik.

För att inkludera PC2 och PC3 i nätverkets aktivitetslogg, kan vi nu generera nätverkstrafik genom att pinga från PC2 till PC3. Detta gör att switchen kan registrera deras MAC-adresser i sin tabell, vilket möjliggör framtida kommunikation mellan dessa enheter.