Waarom vermijden we een Spanning Tree

Spanning Tree Protocol (STP), wel of niet meer...?

Spanning Tree, de term valt nog heel vaak te horen. Tegenwoordig wordt Spanning-Tree echter volledig uitgeschakeld en vermeden met implementatie. Waarom? Daar gaan wij in dit document op in.

Links inhoudsopgave van dit TECH artikel. U kunt ook direct naar een hoofdstuk navigeren.

Spanning Tree Protocol (STP), wel of niet meer...?

Wat doet Spanning Tree? Spanning Tree is een technologie om meerdere switches met elkaar te verbinden en deze lus-vrij met elkaar te laten communiceren. Met andere woorden: u kunt 2 of meer switches met elkaar verbinden met 2 verbindingen, zonder dat het verkeer rondgestuurd wordt in een oneindige lus. Gevolg van zo’n lus is overbelasting van de switches met onnodig verkeer.

Twee switches zonder Spanning Tree (met de netwerk lus):
Twee switches zonder Spanning Tree (met de netwerk lus) Twee switches met Spanning Tree (zonder netwerk lus): Twee switches met Spanning Tree (zonder netwerk lus) Spanning Tree lost het lus probleem op door een boomstructuur op te bouwen, en aan de hand van deze boomstructuur te bepalen welke verbindingen nodig zijn en welke onnodig. In bovenstaand voorbeeld wordt de tweede verbinding uitgeschakeld om te voorkomen dat verkeer van Switch 1, naar switch 2 en vice versa gestuurd wordt.

In een driehoeksformatie zal ook de verbinding tussen twee switches met lagere prioriteit uitgezet worden om een netwerkloop te voorkomen:
Driehoeksformatie tussen twee switches met lagere prioriteit Veelal wordt Spanning Tree gebruikt om redundante (niet-actieve) verbindingen te maken. Als een switch of verbinding uitvalt wordt de overgebleven verbinding geactiveerd. Hoe wordt Spanning Tree geïmplementeerd? Spanning Tree is een lokale configuratie, dat op iedere switch afzonderlijk ingesteld wordt. Dat betekent dat iedere switch zijn eigen configuratie heeft en qua management van deze configuratie kan dat problemen geven.

We gaan uit van een voorbeeld netwerk waarbij rekening gehouden is met Core/Aggregatie en Edge laag:
Core/Aggregatie en Edge laag Bovenstaand voorbeeld is een typische netwerkconstructie waar Spanning Tree nodig is. In dit voorbeeld staan alle switches met standaard Spanning-Tree ingesteld, waarbij CoreSwitch 1 als hoofd switch is ingesteld. Een ononderbroken lijn is een actieve verbinding, en een stippellijn is een (door Spanning Tree) uitgezette verbinding. Jarenlang heeft het Spanning Tree Protocol voldaan omdat het netwerkverkeer van noord naar zuid liep. De laatste jaren zien we echter, door de opkomst van apps en virtuele machines, veel verkeer van oost naar west en vice versa gaan.

En daar hebben we direct een groot nadeel van deze Spanning Tree configuratie:
• De helft van alle verbindingen zijn uitgezet door Spanning Tree om loops te voorkomen. Het is zonde dat u geen gebruik kunt maken van deze inactieve verbindingen: alsof je in een 6 cilinder auto rijdt, waarvan er op elk moment maar 3 gebruikt worden...

Enkele andere nadelen:
• Als de topologie van het netwerk verandert (bijvoorbeeld door een nieuwe switch of een defecte switch), kunnen delen van het netwerk volledig onbereikbaar worden, tot wel 60 seconden omdat Spanning Tree een nieuwe boomstructuur moet opbouwen.

• Als men een computer aansluit op een Edge Switch, duurt het 30 tot 60 seconden voordat deze verbinding krijgt met het netwerk. Dit is omdat Spanning Tree afwacht en luistert naar Spanning Tree berichten van een mogelijk nieuwe switch.

• Als een netwerk poort op de EdgeSwitch verkeerd geconfigureerd staat en op deze poort een loop veroorzaakt wordt, kan dit resulteren in een ernstige netwerkproblemen en Spanning Tree verstoringen. Een netwerk-lus, die buiten de Spanning-Tree omgeving om veroorzaakt wordt, kan er dus voor zorgen dat Spanning Tree niet of minder functioneert.

• Als men een verkeerd geconfigureerde switch aansluit op het netwerk, die de hoogste prioriteit heeft (prio 0), kan deze de hele netwerk topologie aanpassen.
Voorbeeld hieronder:
De rode lijnen laten zien wat er gebeurt als een verkeerd geconfigureerde switch op de aggregatie laag verbonden wordt:
Verkeerd geconfigureerde switch op de aggregatie laag Eerste gevolg: Er zal een algehele nieuwe topologie opgebouwd moeten worden door de switches, dus een aantal seconden zal er geen verkeer tussen de switches meer uitgewisseld worden totdat de nieuwe topologie bepaald is.

Tweede gevolg: De verbinding tussen de core switches zal verbroken worden en zal worden omgeleid via de (Linker) Aggregatie switch. Dit zal voor veel meer drukte zorgen en kan de Aggregatieswitch ernstig overbelasten.

Derde gevolg: Om dit te herstellen, moet de verkeerd geconfigureerde switch afgekoppeld worden of correct worden geconfigureerd. Dit resulteert echter weer in een algehele topologie update, binnen het Spanning Tree netwerk en levert weer downtime op, óók tussen de core switches.

Er zijn verbeteringen binnen Spanning Tree gemaakt zoals: BPDU guard, STP root guard, Rapid Spanning Tree Protocol (RSTP), Per VLAN Spanning Tree Protocol(PVST) en Rapid Per VLAN Spanning Tree Protocol (PVST+). De 2 laatst genoemde voorbeelden kunnen er voor zorgen dat er twee actieve verbindingen gebruikt kunnen worden, maar maakt de Spanning Tree configuratie complex. In het kort: Spanning Tree instellen is specialistisch werk. Een niet deskundig persoon kan het hele netwerk verstoren door een verkeerd geconfigureerde switch aan te sluiten op het netwerk. Een op het eerste ogenblik simpele wijziging kan bovendien grote gevolgen hebben. Uw netwerk met Spanning Tree kan dus een wankel kaartenhuis worden, tenzij dit tot in de puntjes goed is geconfigureerd.

Gelukkig zijn er tegenwoordig betere oplossingen die Spanning Tree, gedeeltelijk tot zelfs helemaal, overbodig maken.
Een netwerk zonder Spanning Tree Een netwerk zonder Spanning Tree is tegenwoordig goed te realiseren. Spanning Tree is een uitvinding uit 1985, en sindsdien zijn er veel ontwikkelingen geweest met betrekking tot de techniek van netwerkapparatuur. De belangrijkste ontwikkelingen zijn Link Aggregation (samen met LACP), Switch stacking en Switch Fabrics. Link Aggregation Link Aggregation (standaard IEEE 802.1AX, oude standaard IEEE 802.3AD) is een techniek om meerdere verbindingen bij elkaar te bundelen, zonder dat er lussen veroorzaakt worden. Link Aggregation maakt een virtuele netwerkpoort aan, die gekoppeld is aan 2 of meerdere fysieke netwerkpoorten. De switch zal de netwerk pakketten verdelen over deze twee verbindingen, op basis van de configuratie van de virtuele netwerkpoort. De switch zal al het verkeer wat bedoeld is voor de andere kant van de verbinding, vaststellen op de virtuele verbinding in plaats van op de fysieke netwerkpoort. Link Aggregation Dit heeft meerdere voordelen: Beide verbindingen worden tegelijk gebruikt (er is dus geen verlies van beschikbare capaciteit meer) en wanneer 1 van de verbindingen uitvalt zal er geen topologie update hoeven plaatsvinden zoals in Spanning Tree. Dit heeft een overslag tijd tot gevolg van een aantal milliseconden, tegenover 1 tot 30 seconden (of meer) in Spanning Tree. Omdat de virtuele interface blijft werken, zolang er nog minstens 1 verbinding actief is, zal al het verkeer door kunnen lopen. Een nadeel van Link Aggregation is dat dit normaliter alleen werkt tussen 2 fysieke switches. In de standaard vorm kan een Link Aggregation niet over meer dan 2 fysieke switches verspreid worden en is het bedoeld om de bandbreedte tussen 2 switches te verhogen.

Een voorbeeld van een verkeerde configuratie:
Voorbeeld van een verkeerde configuratie De bovenstaande opstelling zal (wanneer de CoreSwitches geen stack of fabric zijn) niet goed werken. De verbindingen over de AggregatieSwitch naar de CoreSwitch zullen verdeeld worden over de twee verbindingen, maar de non-gestackte core switches zullen het verkeer terug sturen, op basis van herkomst. Waar dit in resulteert: verloren netwerk pakketten, latency, en haperingen in het verkeer. Dit komt omdat de virtuele netwerkpoorten op de Coreswitches nog steeds twee losse poorten zijn en niet een onderdeel zijn van dezelfde virtuele netwerkpoort op dezelfde switch.

Een ander nadeel van een standaard Link Aggregation is, dat als een verbinding wel als werkend wordt beschouwd door de switch, maar door storing of kapotte hardware geen verkeer kan doorlaten, dit ernstige impact zal hebben op netwerk performance en beschikbaarheid. Oplossingen van bovengenoemde nadelen worden onder andere met LACP opgelost.
LACP LACP staat voor Link Aggregation Control Protocol en is een uitbreiding bovenop de Link Aggration standaard. LACP biedt een aantal voordelen, dat onder andere ook pijnpunten binnen Spanning Tree oplost. Een aantal voorbeelden:

• Beveiliging tegen misconfiguratie
LACP communiceert met het apparaat aan de andere kant van de verbinding en bouwt met de switches samen de verbindingen op. Dit heeft als voordeel, dat als een netwerkpoort waar LACP op ingeschakeld is, wordt aangesloten op een netwerkpoort zonder LACP configuratie, de switch met LACP configuratie nooit verkeer uit zal gaan sturen: deze poort heeft via LACP niet ontvangen hoe de andere kant de configuratie heeft staan. LACP zal alleen netwerkverkeer versturen op een poort, waarbij deze zeker weet dat de andere kant van de verbinding ook juist is geconfigureerd.

• Verbinding wordt actief in de gaten gehouden
Er bestaat een kans dat een netwerkpoort status als werkend wordt beschouwd, maar dat er geen verkeer over heen kan (storing, verkeerd bekabeld, switch andere kant overbelast/gecrashed etc). LACP houdt dit actief in de gaten middels LACPDU netwerk pakketten. Er wordt elke 3 of 30 seconden een LACPDU pakket verstuurd waarmee de switches elkaar op de hoogte houden dat de verbinding nog volledig functioneel is. Als een LACP netwerk pakketje gemist wordt over 1 van de verbindingen in de Link aggregatie, dan wordt die specifieke verbinding direct uitgeschakeld.

• Kan Actief/Passief werken
Het is volledig mogelijk om LACP in een actief/passief configuratie te zetten. Omdat LACP herkent welke configuratie aan de andere kan van de verbinding aanwezig is, weet de switch met LACP dus of deze met 1 of meerdere switches verbonden is. Op deze manier weet de Switch precies welke verbindingen actief (of niet actief) moeten staan. Dit is een vrij ongewone configuratie en wordt alleen in speciale gevallen gebruikt.

Helaas is er met LACP nog steeds een nadeel: ook dit werkt alleen tussen 2 fysieke switches. Een standaard opstelling met standaard switches zal nog steeds in een actief/passief opstelling resulteren. Gelukkig is daar ook een oplossing voor gemaakt: Switch Stacks en Switch Fabrics.
Switch Stack Een switch stack is een manier om van meerdere fysieke switches 1 virtuele switch te maken. Alle switches in een stack worden vanuit 1 switch beheerd. Dit scheelt veel dubbele configuratie, zoals gebruikersnamen, tijdsinstellingen, IP adresseringen, Default gateway en VLANs. Een voordeel met de meeste Switch Stacks is, dat Link Aggregations verdeeld kunnen worden over meerdere fysieke switches, wat normaliter zonder stacking niet mogelijk is. Switch Stack Link Aggregations Bovenstaande configuratie is correct en zorgt voor een dubbele actieve verbinding. Als een van de switches uitvalt zal de overgebleven verbinding nog steeds functioneren met minimale (minder dan 100 milliseconde) verstoring. Om de auto vergelijking weer bij te pakken: alle 6 cilinders werken nu en de auto blijft doorrijden ook als er cilinders uitvallen.

Bovenstaande opstelling heeft dus geen Spanning Tree nodig, want logischerwijs is de verbinding als volgt:
Geen Spanning Tree Core/Edge Switch Helaas zitten er ook nadelen aan switch stacks:
• Switch stacks werken op het principe "1 switch is hoofd, de overige zijn volgend". Dit is normaliter geen probleem, tot de hoofd switch kapot gaat. Dan moeten alle switches herstart worden en moet er een nieuw hoofd verkozen worden. In de laatste generatie switch stacks is dit opgelost door een "Backup" rol toe te voegen. De Backup switch neemt direct over van de Hoofd switch, wanneer deze defect raakt.

• Stacks hebben altijd een limiet aan het maximum aantal switches in een stack. Dit is merk/model afhankelijk. De ene switch kan slechts 4 in een stack hebben, de ander bijvoorbeeld 16. Over het algemeen zijn stacks niet groter te maken dan 16 switches.

• De verbinding tussen de switches in een stack moet altijd een vaste snelheid en verbindingsaantal zijn. De switches in stacks worden in een ring of chain topologie verbonden. Onderstaand een voorbeeld van een typische stack opstelling:
Voorbeeld van een typische stack opstelling Als je dus veel verkeer tussen twee switches in de stack hebt (in bovenstaand voorbeeld tussen switch 1 en switch 3), kan je niet een extra stack Link tussen deze twee switches plaatsen. Sommige merken/type switches vereisen soms ook speciale modules of kabels om een switch stack te bouwen. Hierdoor kunnen de switches in de stack bijvoorbeeld niet verspreid worden over meerdere netwerkkasten. Switch Fabrics Switch fabric technologie is een uitbreiding die de limitatie van Switch stacks omzeilt. Switch fabrics zijn uitgevonden voor de groeiende datacenters van nu, waarbij het netwerk nét zo flexibel moet zijn als de variërende netwerkeisen. In een Switch Fabric zijn alle switches actief, en worden configuraties vanuit een centraal beheersysteem door de Switch fabric heen verspreid. Het management systeem kan een switch uit de fabric zijn, maar ook een losse server. Voorbeeld Switch Fabric Switch fabrics hebben onder andere als voordeel dat de bekabeling tussen de deelnemende switches geen limiterende factoren heeft, zoals bij switch stacks. Als er veel verkeer tussen twee switches plaatsvind, kan de bandbreedte tussen deze twee switches verhoogd worden zonder problemen, door alleen een extra kabel aan te sluiten.

Switch Fabrics werken over het algemeen met standaard bekabeling en optische interfaces, dus is het mogelijk om een Switch fabric over meerdere topologische locaties te verspreiden. U kunt dus 1 Switch fabric over meerdere datacenters verspreiden.

Een voorbeeld van een mogelijke Switch fabric opstelling:
Mogelijke Switch fabric opstelling De switches in hetzelfde datacenter zijn met een full mesh aan elkaar verbonden en de datacenters onderling zijn met een dubbele verbinding uitgevoerd. Dit kunnen twee verschillende switch fabrics zijn, maar mag ook 1 switch fabric totaal zijn.

Als alles wat op deze switch fabric verbonden zit dubbel uitgevoerd wordt, kan iedere switch of verbinding uitgezet worden of defect gaan, zonder dat het impact heeft op de bedrijfsvoering.

Het voordeel is nog steeds dat Link Aggregations gemaakt kunnen worden over meerdere fysieke switches in de Switch Fabric. Ook is het uitbreiden van een switch fabric veel makkelijker dan een Spanning Tree configuratie, aangezien de deelnemende switch automatisch mee doet in de fabric en alle basisconfiguratie vanuit de Switch fabric ontvangt.

Spanning Tree binnen een switch Fabric wordt over het algemeen niet meer ondersteund omdat het volledig overbodig is. Middels technieken zoals Broadcast limitering en Loop detectie kan er voor gezorgd worden dat als er een loop veroorzaakt wordt, dat de desbetreffende poort direct uitgezet wordt.

Wilt u meer tips van een expert?

Contact

SolidBE B.V.
Maarten Schoutenstraat 19
2741 SV Waddinxveen

KVK 51248794
NL 82 3170 846 B01
NL07 RABO 0157 5353 98