Nieuw: het netwerk van Antagonist doet nu 10 Gigabit per seconde!

Achter de schermen zijn we bij Antagonist de laatste paar maanden bezig met grote technische verbeteringen. Eén hiervan is het upgraden van ons netwerk naar een volledig 10 Gigabit-omgeving. Deze upgrade is nodig vanwege toekomstige groei, zodat we aan zowel bestaande als nieuwe klanten een hoge performance kunnen bieden. Wij hebben een grens gesteld wanneer verbindingen voor zo’n 50% worden belast. Zodra je richting een belasting van 70% gaat, dan begin je latency te krijgen en dat zou afbreuk doen aan de hoge performance die we willen bieden.

10 Gigabit per seconde: het nieuwe netwerk van Antagonist!

Samen met ons nieuwe ‘Generation 4 Platform’ (waarover we je later meer gaan vertellen) hebben we besloten om alles op 10 Gbit/s aan te sluiten. Van server tot router, want we doen het goed of we doen het niet. Geen half werk dus! Als systeembeheerder gaat mijn hartje sneller kloppen van een dergelijk project. Omdat Antagonist transparantie hoog in het vaandel heeft en mijn enthousiasme groot is, ga ik jullie in dit artikel uitleggen hoe het proces van deze upgrade precies in z’n werk is gegaan.

Het probleem van klassiek ethernet

Een van de grootste nachtmerries van een netwerkbeheerder zijn ethernet-storms. Een ethernet-storm is een lus in het netwerk die zichzelf versterkt. Uiteindelijk zorgt een dergelijke storm ervoor dat alle verbindingen 100% belast zijn. Het gevolg: downtime! Wij, als Antagonisters, hebben een ‘downtime-allergie’. Iets dat onze klanten bewust of onbewust veelal met ons delen (hoewel dit niet wetenschappelijk is aangetoond). Een lus ontstaat meestal in enkele seconden en de enige manier om het te onderbreken is door verbindingen uit te schakelen.

10 Gigabit per seconde: wat is een broadcast storm?

Een ethernet-storm wordt veroorzaakt door ‘unknown-unicast’ en ‘broadcast packets’. Dit type pakketten wordt door de switch, die ze ontvangt, uit alle poorten verstuurd. Als je een netwerk in een ring hebt (voor redundantie), dan komt dit pakket terug bij de switch die hem eerder ook verzonden heeft. Deze switch doet vervolgens hetzelfde nog een keer, en nog een keer, en nog een keer, en nog een keer… Het gevolg: er ontstaat een niet te stoppen lus. Ethernet is hier enorm gevoelig voor, door het ontbreken van een TTL (Time To Live), iets dat IP wel heeft. Wij hebben, bij Antagonist, overigens nog nooit een ethernet-storm in ons netwerk gehad. Zoals je zult begrijpen doen we er ook alles aan om dat te voorkomen.

Spanning Tree als oplossing

Als oplossing is het Spanning Tree-protocol bedacht (ik gebruik ‘Spanning Tree’ voor alle varianten, zoals Rapid, Multiple Spanning Tree en alle merkspecifieke protocollen). Spanning Tree blokkeert, door gebruik te maken van een slim algoritme, dubbele paden en schakelt vanzelf over wanneer een netwerkpad wegvalt. Op deze manier behoud je redundantie zonder dat er lussen ontstaan. Spanning Tree heeft echter ook een aantal nadelen. De belangrijkste heb ik hieronder opgesomd.

  • Het werkt niet altijd even goed tussen verschillende fabrikanten. Hierdoor kunnen er alsnog lussen ontstaan.
  • Je gebruikt niet alle beschikbare netwerkpaden, omdat er altijd minimaal één geblokkeerd is en dat is zonde van de resources.
  • De failovers die plaatsvinden wanneer een netwerkpad wegvalt, zijn relatief traag (enkele seconden, maar dit is verder te optimaliseren).
  • Spanning Tree doet z’n best lussen te voorkomen, maar ook hier geldt dat dit geen garantie is.

Er zijn nog meer nadelen aan Spanning Tree, zoals de groei van MAC-adres-tabellen, maar omdat hier op zichzelf al een volledig artikel over te schijven is, laat ik dat achterwegen.

Als vervanging voor het Spanning Tree-protocol is er de laatste jaren hard gewerkt aan een nieuwe standaard genaamd TRILL, oftewel Transparent Interconnection of Lost of Links. We hebben voor ons nieuwe netwerk gekozen voor dit protocol. In de volgende alinea zal ik hier dieper op ingaan.

Het nieuwe core-netwerk van Antagonist

Voor ons nieuwe netwerk hebben we gekozen voor een routing-protocol dat gezien wordt als de vervanger voor Spanning Tree en dat is dus TRILL. TRILL is een routing protocol voor ethernet op basis van IS-IS. Met een TRILL-netwerk heb je geen geblokkeerde verbindingen om ethernet-storms te voorkomen zoals Spanning Tree dat doet. Elk netwerkpakket dat het TRILL-netwerk binnenkomt, wordt ingepakt (encapsulation) en voorzien van een TRILL-header.

Deze header bevat onder andere een TTL (Time To Live) en voorkomt dat er oneindige lussen ontstaan. Wanneer het pakket het netwerk verlaat (bijvoorbeeld naar een server), dan wordt deze header er weer afgehaald. Hieronder een korte opsomming van argumenten waarom we voor TRILL hebben gekozen.

  • Oneindige netwerklussen (die veroorzaakt worden door unknown-unicast en broadcast zijn) zijn iets van het verleden. Elk netwerkpakketje krijgt een Time To Live.
  • TRILL is een open standaard. We kunnen hardware kiezen van elk merk en hebben dus geen last meer van een vendor lock-in.
  • Elke verbinding wordt gebruikt. Zodoende zijn er geen geblokkeerde paden meer.
  • Failover-tijden zijn retesnel, het duurt slechts een fractie van een seconde.
  • Het is plug-and-play: TRILL RBridges hoeven niet geconfigureerd te worden. Ze doen vanzelf mee in een TRILL domain (wij hebben trouwens wel een aantal optimalisaties gedaan, maar dit is niet verplicht).
  • TRILL is relatief simpel in tegenstelling tot bijvoorbeeld MPLS, waarmee we in onze situatie hetzelfde zouden bereiken qua functionaliteit.
  • TRILL kan gebruikmaken van ECMP (Equal Cost Multi Path). Dit kun je terugvinden in onze huidige routing table, zoals hieronder weergegeven.

< cs1.hng1.as51696.net > display trill route
TRILL Unicast Routing Table
---------------------------------------------------------------------
Flags: D-Download To Fib
Total Route(s): 5
Nickname Cost Flag OutInterface OuterVlan NextHop Hop
---------------------------------------------------------------------
101 20000 D 10GE1/0/44 66 0923-7253-9f11 2
10GE1/0/48 66 0923-7253-9ed1 2
102 10000 D 10GE1/0/48 66 0923-7253-9ed1 1
103 10000 D 10GE1/0/44 66 0923-7253-9f11 1
105 20000 D 10GE1/0/5 66 0923-7ef0-fc61 2
10GE1/0/44 66 0923-7253-9f11 2
106 10000 D 10GE1/0/5 66 0923-7ef0-fc61 1

Net als ons vorige netwerk hebben we ons nieuwe netwerk ook verdeeld over Hengelo en Enschede. Bij Previder PDC2 te Hengelo staat zo goed als al onze productiedata en Equinix EN1 te Enschede fungeert voornamelijk voor het opslaan van back-ups. Tevens pikken we bij de laatste ook een aantal verbindingen naar het internet op.

Spanning Tree en TRILL laten samenwerken

Spanning Tree is uit en TRILL wordt in. Echter, voordat het volledig verbannen is, zijn we jaren verder. Er is veel netwerkapparatuur dat nog geen TRILL ondersteunt en totdat deze vervangen zijn, zullen we STP en TRILL moeten laten samenwerken.

Wanneer je een TRILL-netwerk opzet, dan schakel je STP uit voor alle poorten die TRILL ‘praten’. Er worden onderling tussen deze switches dus geen STP BPDU’s meer uitgewisseld en dus ook geen root-bridge-informatie meer. Switches die je redundant wilt aansluiten, zullen toch Spanning Tree moeten praten met het TRILL netwerk, anders worden dubbele paden niet geblokkeerd en krijg je smerige netwerkproblemen. Ik zal het onderstaande afbeeldingen dit proberen te verduidelijken.

10 Gigabit per seconde: schema 01

De oplossing is om Spanning Tree de illusie te geven dat alle TRILL-switches dezelfde Spanning Tree root bridge zijn.

10 Gigabit per seconde: schema 02

Met het volgende stukje configuratie stellen we dit in.

stp bridge-address 9999-9999-9999
stp tc-notify trill vlan 777
stp mode rstp
stp instance 0 priority 20480

Nu is Spanning Tree in staat zelfstandig te kiezen welke paden hij moet blokkeren. In het geval dat er een verbinding faalt, wordt er vanzelf overgeschakeld naar een alternatief pad.

10 Gigabit per seconde: schema 03

Routers naar 10 Gbps

Om de snelle groei van ons internetverkeer ook in de toekomst aan te kunnen, hebben we besloten om ook onze routers volledig op 10 Gigabit aan te sluiten. Hiervoor hebben we onze routers voorzien van nieuwe netwerkmodules. Dit zorgt ervoor dat zowel onze BGP-transit-leveranciers als onze interne gateways volledig op 10 Gbps zitten. Hieronder een schematisch overzicht van dit alles.

10 Gigabit per seconde: schema 04

De overgang naar 10 Gigabit

Het vervangen van je complete core-netwerk, alle verbindingen van en naar je routers (inclusief het aansluiten) en het in gebruik nemen van nieuwe internetverbindingen, vallen bij ons in de categorie ‘best-wel-grote-wijzigingen’. Om dit hele proces in goede banen te leiden en succesvol te voltooien is veel voorbereiding nodig. Daarnaast moet je rekening houden met zaken waar je niet op hebt gerekend.

Ik zal hieronder uitleggen wat onze eisen waren bij deze upgrade met daarbij een korte toelichting.

  • De upgrade moet zonder downtime! Wij streven naar 100% uptime en we voeren onze infrastructuur redundant uit, zowel op hardware- als softwareniveau. Wij doen bijvoorbeeld niet aan het stacken van switches, want los functionerende switches geven je veel meer wendbaarheid.
  • We nemen gecontroleerde kleine stappen. Gaat er iets niet zoals gepland? Dan weten we precies in welke stap er iets is misgegaan en kunnen we de vorige situatie snel herstellen. Voor, tijdens en na elke stap monitoren we scherp de nieuwe situatie.
    • Gedragen alle netwerkprotocollen zoals verwacht? Denk hierbij aan Spanning Tree die de juiste paden blokkeert en RBridges die elkaars routingtabellen delen.
    • Blijven alle verbindingen up? We monitoren dit met passieve SNMP monitoring en SNMP traps. Passieve monitoring hebben we voor wanneer een verbinding langer dan enkele seconden down is. SNMP traps zetten we in om kleine link-flaps te detecteren.
    • Naast boven genoemde controles houden we ook nauwkeurige de logs van onze apparatuur in de gaten.

Met de bovenstaande lijst zijn we tot het volgende stappenplan gekomen.

  • Opzetten van het nieuwe core-netwerk.
    • Switches plaatsen en configureren.
    • De nieuwe 10 Gbps-verbindingen (CDWM voor de kenners) aansluiten en monitoren.
    • Test-apparatuur aansluiten op de switches en failovers testen.
      • Wat gebeurt er als ik dit kabeltje er uittrek? En dit kabeltje, en die, en deze, etc.
      • Wat gebeurt er als ik aan meerdere kabeltjes tegelijk trek? En wat als ik nu ineens een hele bende tegelijk er uittrek?
      • Wat als er een switch volledig uitvalt?
      • Pakt onze monitoring alle bovenstaande situaties op?
  • De ‘oude’ core aan de nieuwe verbinden.
  • Een van onze routers op de nieuwe core aansluiten, zodat we een 10 Gbps gateway naar het internet hebben.
  • Top-of-racks-switches aansluiten op de nieuwe core en loskoppelen van de oude.
  • Een van de routers verplaatsen van Enschede naar Hengelo en op de nieuwe core aansluiten.

Het resultaat van 10 Gigabit

Nu we deze upgrade achter de rug hebben, zijn er een groot aantal verbeteringen duidelijk merkbaar. Een selectie hiervan, heb ik hieronder samengevat.

  • Pings binnen ons netwerk zijn minder dan 0,10 ms. Dit is kort, heel kort.
  • Door servers op 10 Gigabit aan te sluiten kunnen we in het geval van disaster recovery supersnel data herstellen. Het netwerk is niet meer de bottleneck, maar de bandbreedte van de disks in de servers. Dit is ongeveer 2,5 Gigabit/s. Met deze snelheid zet je in 3,28 seconden 1 Gigabyte aan data terug.
  • Ons dataverkeer naar het internet kan vertienvoudigen, voordat we opnieuw moeten upgraden.
  • Onze core is niet meer blootgesteld aan potentiële ethernet-storms.
  • Op ons nieuwe Generatie-4-platform bestaat geen Spanning Tree meer. Alles is 100% TRILL.

Nieuwsgierig?

Geen klant van Antagonist, maar wel benieuwd wat voor pakketten er via dit supersnelle netwerk worden aangeboden? Check onze webhostingpagina met uitgebreide uitleg over alle features, specificaties en extra’s.

Klik hier voor meer informatie over webhosting

Wellicht hebben we je met dit kijkje onder de motorkap van ons nieuwe netwerk kunnen enthousiasmeren. Het maakt deel uit van de infrastructuur voor ons hostingplatform, waar dus onze webhostingpakketten weer gebruik van maken. Ik hoop dat je het je enigszins inzicht heeft gegeven in hoe een dergelijke grote operatie wordt uitgevoerd en wellicht vond je het zelfs leerzaam.

Tot slot

Zoals je hebt gelezen is dit allemaal pretty hardcore en wellicht lastig te volgen. Maar wat betekent het voor jou, als klant? Nou, dat je bij een hostingprovider zit, die een optimale performance wil (blijven) bieden. Het heeft alles te maken met drie van onze belangrijkste peilers: snelheid, veiligheid en stabiliteit. We gaan voor kwaliteit, en we doen het goed of anders niet. Daarbij speelt onze liefde voor techniek en technologie ook een grote rol. Het is fantastisch om met dit soort innoverende zaken bezig te zijn. Zodoende is Antagonist klaar voor de toekomst!

P.S. Wil je op de hoogte blijven van alle artikelen, updates, tips en trucs die verschijnen op ons blog? Dat kan! Rechts bovenin via RSS, e-mail, het liken van onze Facebook-pagina, het +1’en op Google+ of het volgen op Twitter.