Hur en switch fungerar

En switch har blivit en grundkomponent i dagens LAN-infrastruktur. Ett Ethernet LAN är ett gemensamt nätverk där varje host (IPv4) eller varje nod (IPv6) strävar efter att få tillräcklig bandbredd och hantera kollisioner och dess effekter.

Bild 1: Switchar och deras Ethernet-portar

En switch har flera anslutningskontakter som kallas Ethernet portar, eller bara portar. En switch filtrerar datatrafik (frame-trafik) mellan dess portar genom att välja en port ditt packet (frames) ska skickas till. Switchen tar sitt beslut grundad i fyra funktioner:

  • Adressinlärning
  • Vidarebefordring
  • Filtrering
  • Flooding

Dessa fyra funktioner finns alltid hos en switch och ingen konfiguration det behövs göra för att aktivera nämnda funktioner.
Studera bilden nedan:

Bild 2: Ett litet LAN

Bilden illustrerar ett litet nätverk med endast en switch och fyra datorer kopplade till switchen. Vi kallar datorerna för PC1, PC2, PC3 och PC4. De ansluts till portarna fa0/1, fa0/2, fa03 och fa04

Datorernas MAC-adresser:

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

Det är viktigt att komma ihåg att varje Ethernet-ram innehåller två MAC-adresser, source (avsändarens) och destination (mottagarens). Source-adressen är alltid en unicast MAC-adress. Destinationsadressen kommer att vara antingen en unicast-adress, en multicast-adress eller en broadcast-adress.
Switchen har förmågan att identifiera nämnda adresstyperna och bearbeta både destinationsadressen och source-adressen.

Adressinlärning

Switchar måste hålla reda på MAC-adresserna för alla koppla ihop avsändare och mottagare. Till en början har datorerna PC1, PC2, PC3 och PC4 inte IP-adresserats och ingen nätverkstrafik har genererats. Tar man fram MAC-tabellen på switchen så det kan konstateras att switchen inte har lärt sig någon MAC-adress än.

Bild 3: Ingen MAC-adress på switchen

Vi konfigurerar IP-adresser för PC1 (10.10.10.1 /24) och PC2 (10.10.10.2 /24) och vi tar fram igen CAM-tabellen på switchen.

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

Som ni ser har switchen lärt sig två MAC-adresser automatiskt och switchen har identifierat portarna till vilka varje MAC-adress är relaterad till.
Utan funktionen adressinlärning skulle switchen inte kunnat identifiera MAC-adresserna därmed ingen relation med portarna hade varit möjligt. Nu finns nämnda MAC-adresser i switchens MAC-tabellen som också kallas CAM-tabell (Content Addresable Memory). Adresserna behålls i tabellen i 5 minuter som default, därefter tas adresserna bort från tabellen helt automatiskt.

Nu fortsätter vi med adressering av de resterande datorer: PC3 (10.10.10.3 /24) och PC4 (10.10.10.4 /24). Vi tar fram MAC-tabellen på switchen en gång till:

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

Vi kan konstatera att MAC-adresser för PC3 och PC4 har registrerats i MAC-tabellen, men samtidigt ser vi att det inte längre finns MAC-adresser för PC1 och PC2 i tabellen. Som du ser med hjälp av förklaringar ovan inte alltid finns MAC-adresser till hands så att switchen kan göra sitt arbete.
Så länge switchen känner igen MAC-adresserna kommer switchen att identifiera avsändare och mottagare därmed koppla ihop dem. Men någon gång kommer switchen att ta emot en destinations MAC-adress som inte finns i sin MAC-tabell och då blir det inte möjligt att koppla avsändaren och mottogaren ihop. Switchen måste få destinations MAC-adressen för att få göra sitt jobb och när det saknas en sådan adress använder en switch funktionen ”flooding”.

Flooding

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

  1. När switchen tar emot en broadcast ram (frame) och när ramen är en del av någon process som involverar protokoll som ARP eller DHCP (finns flera till). Föreställ dig att PC1 skickar ett ARP packet med syfte att få tillbaka PC4 MAC-adressen (just nu så finns ingen MAC-adress i switchens tabellen, de finns endast 5 minuter). Switchen läser av avsändarens MAC-adress och registrerar i sin tabell, men det kan inte göra samma sak med destinations MAC-adressen! Varför? tja, adressen kan se ut så här:
    FFFF.FFFF.FFFF 000A.F3D7.CD92 0806
    Destination MAC-adress Source MAC-adress ARP
  2. När switchen tar emot en ram adresserad med en viss destinations MAC-adress men den destinationen inte har en post i switchens MAC-adresstabellen. Switchen har inget annat val än att göra en flooding.
    Målet med denna flooding är att slutenheten som använder MAC-adressen i ramens destination (PC4) kommer att ta emot meddelandet och svara på det. Om den slutenheten svarar kan switchen lära sig slutenhetens MAC-adress och mappa den till porten som meddelandet kommer till.
    Så här skulle se ut adressinformation i ramen när CP4 svarar:
000A.F3D7.CD92 000C.8507.9A81 0800
Destination MAC-adress Source MAC-adress A

Vidarebefordring

Nu när PC1 och PC4 har identifierats och relateras till sina portnummer, kan switchen göra vad switchar gör, vidarebefordra. PC1 kan nu fortsätta sin kommunikation med PC4. Men den här gången är kommunikation snabbare eftersom switchen har nödvändig information i sin tabell.

Filtrering

Så hur är det med PC2 och PC3? Tja, på grund av filtrering är dem inte med i någon kommunikationsprocess mellan PC1 och PC4. Switchen filtrerar nätverkstrafiken och stänger ut PC2 och PC3. Nu ska vi generera nätverkstrafik genom att pinga från PC2 till PC3 så att switchen registrerar deras MAC-adresser i sin tabell.