Verkeersstromen beïnvloeden met Segment Routing in SURFnet8

In mijn vorige blog heb ik in grote lijnen de architectuurkeuze van SURFnet8 toegelicht. In dit blog ga ik dieper in op Segment Routing (SR) en de manier waarop je hiermee verkeersinvloeden binnen een netwerk kunt beïnvloeden.

Wat is Segment Routing?

Segment Routing is een elegante manier van source routing, en afgeleid van de IETF Source Routed MPLS LSP draft uit 2004. De bron (source node) verstuurt het verkeer met een instructieset naar de eindbestemming. Deze instructieset bestaat uit een stapel “segmenten”, die in de juiste volgorde moeten worden opgevolgd om de eindbestemming te bereiken. Je kunt het vergelijken met een knooppuntenlijst zoals voor fietsroutes wel wordt gebruikt.

Een landkaart met verschillende knooppunten

Segment Routing is een nieuw protocol dat door Cisco is uitgedacht en verder doorontwikkeld met het idee een eenvoudige oplossing te creëren voor Traffic Engineered paden met minimale “state” in het netwerk. SR is/wordt gestandaardiseerd in de IETF wat de adoptie zal stimuleren. De verwachting is dat het een mainstream technologie zal worden vanwege de vereenvoudiging die Segment Routing brengt (o.a. minder protocollen nodig, geen schalingsbeperking voor het aantal paden).

Voor Segment Routing zijn er nu 2 implementaties beschikbaar, een MPLS- en IPv6-implementatie. MPLS is nu de meest geadopteerde versie van Segment Routing (SR-MPLS) en in gebruik bij een groeiend aantal operators. De IPv6-implementatie (SRv6) is nu nog nauwelijks in productienetwerken te vinden, maar dat zal de komende jaren zeker veranderen. Op de lange termijn is de IPv6-variant erg interessant, omdat de Segment Routing labels door aangesloten hosts (VNF’s) kunnen worden geïnterpreteerd en/of gecreëerd. Hiermee zou een host controle kunnen hebben hoe het verkeer door het netwerk wordt gestuurd.

SR-MPLS in SURFnet8

Het SURFnet8-netwerk gebruikt de MPLS-protocol stack in combinatie met Segment Routing. De SRv6 implementatie is niet overwogen, omdat Juniper, de hardware leverancier van de SURFnet8 routers, dit nog niet ondersteunt. Daarnaast is de keuze voor MPLS een veilige keuze; mocht Segment Routing niet voldoen aan onze verwachtingen, dan kunnen we terugvallen op andere protocollen (RSVP-TE of LDP) om de MPLS LSPs (Label Switched Paths) te signaleren.

Onder de motorkap – hoe werkt SR-MPLS?

Segment Routing kan eenvoudig worden toegepast in een MPLS-netwerk, de SR-instructieset wordt met MPLS-labels opgebouwd. Allereerst krijgen elke node en elke link (voor beide richtingen) een segment identifier (SID) toegewezen. Deze zogenaamde adjacency SID’s voor linken en de node SID’s voor nodes staan getekend in figuur 1 en worden door de IGP (IS-IS in SURFnet8) gedistribueerd. Alle routers in het netwerk verwerken deze SID’s in de lokale topologiedatabase en hebben daarmee een compleet overzicht van het gehele netwerk.
MPLS-netwerk met adjacency SID’s en node SID’s.

Schemaweergave van een netwerk
Figuur 1: MPLS-netwerk met adjacency SID’s en node SID’s.

Door de SID’s instructieset mee te sturen in de header van het pakket, wordt de route van een LSP door de source node vastgelegd. Elke SID in de instructieset wordt vertaald naar een MPLS-label, waardoor SR gebruik maakt van de push/pop/swap mogelijkheden die MPLS standaard biedt. Elke node waar het pakket langs komt, zal zelfstandig beslissen welke interface het pakket uitgestuurd moet worden en of een label push/pop/swap actie nodig zal zijn (de benodigde informatie staat in de Label Information Base (LIB) van de node. Nadat het pakket bij een node komt, wordt de bovenste segment ID van de lijst gehaald (label pop), tot het laatste segment is bereikt. Het pakket is op de eindbestemming.

De standaard paden in SURFnet8 worden door een zeer beperkte instructieset bepaald, namelijk alleen de eindbestemming (zie figuur 2). Door een combinatie van IS-IS en MPLS zal het SPF-algoritme (Shortest Path First algorithm) van de IGP (Interior Gateway Protocol) het beste pad uitrekenen naar de eindbestemming. In dit geval hoef je alleen de node SID van de eindbestemming in de header van het pakket te schrijven. Dit type LSP’s heet Labeled-IS-IS LSP’s (L-ISIS), zie figuur 2.

Schemaweergave van een netwerk
Figuur 2: L-ISIS pad via de beste IS-IS cost, met 1 MPLS-label met het SID van de eindbestemming. De linken hebben een IS-IS metric van 50 of 200.

Operationeel zijn L-ISIS LSP’s eenvoudig in gebruik; door de cost van de linken in je netwerk slim te kiezen, kun je voorkeursroutes aanleggen, bijvoorbeeld lage cost voor hoge capaciteit backbonelinken. Daarmee kun je de meeste LSPs optimaal door het netwerk realiseren.

Mocht het L-ISIS LSP niet de gewenste eigenschappen hebben (bijvoorbeeld een te hoge delay, niet geografisch gescheiden ten opzichte van een andere LSP), dan kun je ook Traffic Engineered (SR-TE) LSP-paden bouwen. Deze SR-TE LSP worden het eenvoudigst via een externe Path Computation Engine (PCE) gesignaleerd. Het grote verschil is dat er meer SID’s worden toegevoegd aan het pakket, zodat er een specifiek pad van adjacency SID’s wordt gevolgd. In het onderstaande voorbeeld zie je per link de adjacency SID in 1 richting getekend. Het pakket dat het SR-TE LSP volgt, start met de complete SID-instructieset. Bij elke node onderweg wordt 1 SID-label gepopt, zodat het dan bovenliggende SID het volgende segment definieert. Op de laatste link naar de eindbestemming zijn alle segment ID’s uit de header verwijderd, zoals ook wordt toegepast in de standaard MPLS Penultimate Hop Popping (PHP).

Schemaweergave van een netwerk
Figuur 3: Een SR-TE LSP, samengesteld uit een lijst van adjacency SID’s van de linken.

Voor het bouwen van LSP’s heeft SR dus voldoende mogelijkheden om paden door het netwerk te realiseren, afhankelijk van de eisen van de dienst.

TI-LFA: het LSP-protectiemechanisme voor SR-MPLS

SR biedt ook de mogelijkheid om zeer snelle switch-over tijden te realiseren. SR gebuikt hiervoor TI-LFA (Topology Independent Loop Free Alternate). Het is een failover mechanisme dat voor elke link in je Segment Routing (SR) netwerk één of meerdere backuppaden uitrekent. Het mooie van deze oplossing is dat het altijd een backuppad zal vinden, onafhankelijk van de topologie. Het mechanisme van TI-LFA in combinatie met SR maakt het mogelijk om één of meerdere segmenten (dus MPLS-labels) toe te voegen in de header van het pakket en daarmee het backuppad te forceren bepaalde linken te gebruiken.

Deze TI-LFA backuppaden worden in de Packet Forwarding Engine gezet. Hierdoor zullen verstoringen op backbonelinken als nauwelijks tot niet waarneembare switch-overs merkbaar zijn (< 50ms). Zo wordt voorkomen dat netwerkconvergentietijden van de IGP bepalen hoe lang een LSP impact ondervindt van een netwerkverstoring.

In het voorbeeld hieronder wordt de SR LSP van Ledn1 naar Ut1 via Asd2 gerouteerd volgens het beste IS-IS pad. De SR label stack heeft de node SID van Ut1 in de pakketheader.
4 L-ISIS LSP van Ledn1 naar Ut1 volgens het SPF van de ISIS met IS-IS metric cost van 250

Schemaweergave van een netwerk
Figuur 4: L-ISIS LSP van Ledn1 naar Ut1 volgens het SPF van de ISIS met IS-IS metric cost van 250.

In het geval dat de link tussen Ledn1 en Asd2 faalt, moet het backuppad vanaf Ledn1 gedwongen worden om een ander pad te kiezen dat niet meer via de gefaalde link loopt. Het originele pakket (met SID 804015) op het interface uitsturen naar de naastgelegen node Ledn7 is helaas niet voldoende. In Ledn7 is namelijk het kortste pad naar Ut1 ook via Asd2, en zal het pakket terug ‘ge-loopt’ worden. Pas nadat de IS-IS database is geüpdatet (~1s na de failure) en de link Ledn1-Asd2 uit de topologie is verdwenen, zal Ledn7 het pakket doorsturen via Dt1 naar Ut1. (Gedurende die tijd verdwijnen de pakketten dus in een zwart gat.)

Schemaweergave van een netwerk met een fout

Daarom zet TI-LFA een extra label in de header van het pakket om een node te bereiken die een SPF-pad naar Ut1 heeft die niet over de link Ledn1-Asd2 gaat. In deze topologie is het voldoende om het pakket eerst naar Gv8 te sturen met een extra SID label, dat als bovenste label op de stack komt en vanaf Gv8 kan het pakket met het originele node SID-label van Ut1 de bestemming bereiken.

Schemaweergave van een netwerk met een fout

Conclusie: verkeersstromen beïnvloeden

Ik ben ervan overtuigd dat we met de mogelijkheden die Segment Routing biedt een heel mooi netwerk kunnen bouwen. Segment Routing zal ons de mogelijkheid bieden om de verkeersstromen te beïnvloeden middels de IS-IS metrics of via de externe PCE. En in combinatie met TI-LFA kunnen we de garanties blijven bieden van supersnelle switch-overs in geval van werkzaamheden/failures in het netwerk.

Lees meer over SURFnet8

Author

Comments

Dit artikel heeft 0 reacties