Een tweede router, een tweede verbinding, en toch ligt alles plat zodra er één omvalt. Redundantie die niet automatisch omschakelt, is een reserveonderdeel op de plank. De Cybersecuritymaand ging dit jaar over blijven draaien als het misgaat, en daar hoort ook de vraag bij hoe je netwerk omschakelt. Het goede nieuws: je hebt geen complex ontwerp nodig. Met een paar bouwstenen die elke router kent, bouw je een failover die je zelf nog begrijpt als het om drie uur 's nachts misgaat.
BGP zonder eigen AS-nummer
De misvatting is dat BGP alleen iets is voor wie een eigen AS-nummerAS-nummer (ASN) Uniek nummer van een netwerk (autonomous system) op internet. Nodig om met BGP je eigen routes aan andere netwerken door te geven. en eigen IP-ruimte heeft. Heb je één upstream en gebruik je de adresruimte van die provider, dan kan BGP ook met een privé-AS-nummerPrivé-AS-nummer AS-nummer uit een gereserveerde reeks (64512 tot 65534) dat niet op internet mag verschijnen. Bruikbaar voor BGP met één provider, die het nummer weghaalt voordat je routes verder gaan., uit de reeks 64512 tot 65534. Je provider haalt dat nummer weg voordat de routes het internet op gaan; voor de buitenwereld komt je verkeer gewoon uit het netwerk van de provider.
Waarom zou je dat doen? Omdat het een kleine redundante opzet eenvoudiger maakt. Wil je je adresruimte zelf indelen achter je eigen switch of firewall, dan kondig je je subnetten via BGP aan over twee sessies, één per router van je provider. Valt een router of verbinding weg, dan verdwijnen de routes via die kant en loopt het verkeer over de andere. Geen statische routes die je bij elke wijziging aan beide kanten moet bijwerken, en geen handwerk bij een storing. Wil je later naar een tweede provider, dan stap je over op een eigen AS-nummer.
VRRP voor de gateway, BGP voor je routes
VRRPVRRP Virtual Router Redundancy Protocol: twee of meer routers delen één gateway-adres. De master beantwoordt het; valt die weg, dan neemt een andere router het over. lost een ander probleem op: twee routers delen één gateway-adres, de VIPVIP Virtueel IP-adres dat niet aan één machine vastzit, maar meeverhuist naar de router of server die op dat moment actief is.. De router met de hoogste prioriteit is master en beantwoordt dat adres; valt hij weg, dan neemt de andere het over. Voor een server of firewall die alleen een default gateway nodig heeft, is dat alles wat je hoeft in te stellen.
VRRP en BGP gaan prima samen. Elke router heeft naast de gedeelde VIP ook een eigen adres in hetzelfde subnet. Je BGP-sessies zet je op naar die eigen adressen, niet naar de VIP: een sessie naar de VIP zou bij elke omschakeling opnieuw moeten opbouwen. Zo heb je twee onafhankelijke sessies voor je eigen prefixen, en blijft de VIP beschikbaar als default gateway voor gewone internetconnectiviteit.
Bepalen welke kant de voorkeur heeft
Twee actieve paden zijn mooi, maar vaak wil je dat het verkeer normaal over één kant loopt. Voor uitgaand verkeer bepaal je dat zelf, met local-pref op je eigen router. Voor inkomend verkeer moet je de rest van het netwerk overtuigen:
- AS-path prepending — je kondigt je route via de reservekant aan met je eigen AS-nummer een paar keer extra in het pad. Het pad wordt langer en dus minder aantrekkelijk, maar blijft beschikbaar als het andere wegvalt.
- Communities — met BGP-communities vraag je je provider om iets met je route te doen. Bij ons kun je zo een route een, twee of drie keer laten prependen richting een specifieke upstream of exchange, een route alleen naar bepaalde partijen laten aankondigen, of de local-pref van je route laten verlagen. De volledige lijst stemmen we af in de intake.
- Graceful shutdown — vóór gepland onderhoud tag je je routes met
65535:0. Wij zetten de local-pref van zo'n route dan op nul, zodat het verkeer al is omgeleid voordat je de sessie echt dichtzet.
Snel merken dat iets weg is
Een failover is zo snel als de detectie. BGP merkt een dode neighbor uit zichzelf pas als de hold timer afloopt, en dat kan tot anderhalve minuut duren. Ligt een verbinding stil zonder dat de interface down gaat, bijvoorbeeld door een storing in een tussenliggend netwerk, dan stroomt er al die tijd verkeer een gat in. BFDBFD Bidirectional Forwarding Detection: een lichtgewicht protocol dat binnen een seconde ziet dat een verbinding niet meer werkt, zodat BGP sneller kan omschakelen. lost dat op: een lichtgewicht protocol dat op de sessie meedraait en binnen enkele seconden ziet dat de andere kant niet meer antwoordt. Zet het aan op elke sessie die ertoe doet, aan beide kanten.
Hoe wij het zelf doen: anycast-loadbalancers
Voor onze eigen publieke diensten gebruiken we dezelfde bouwstenen. De voorkant bestaat uit drie loadbalancers met HAProxy en BIRD, die elk hetzelfde service-adres via BGP aankondigen aan onze core-routers, met BFD op de sessie. De routers verdelen het verkeer met ECMPECMP Equal-Cost Multi-Path: een router verdeelt verkeer over meerdere even goede paden tegelijk, in plaats van er één te kiezen. over alle loadbalancers die een route aankondigen. Klanten kunnen met hun dienst achter deze loadbalancers zitten.
Er zijn twee manieren waarop een loadbalancer uit de verdeling verdwijnt:
- De machine valt uit — BFD ziet binnen enkele seconden dat de sessie dood is, en de route verdwijnt.
- De machine leeft, maar HAProxy niet — een healthcheck controleert elke twee seconden of de dienst antwoordt. Na drie mislukte controles haalt hij het service-adres van de machine, BIRD trekt de route in en de router stuurt niets meer die kant op. Komt de dienst terug, dan wordt het adres na drie geslaagde controles weer aangekondigd.
Updates rollen we één machine tegelijk uit. Pas als de dienst weer antwoordt en alle BGP-sessies weer up zijn, gaat de volgende. Zo is er bij onderhoud altijd genoeg capaciteit, en merkt een bezoeker er niets van.
Failover met ons
Wil je een redundante aansluiting op ons eigen netwerk: we leveren IP-transit met BGP op twee routers, met een privé-AS of je eigen AS-nummer, en met VRRP als je ook een gedeelde gateway wilt. Hoe een sessie er technisch uitziet, staat in de technische versie. Staat je apparatuur in een rack bij ons, kijk dan bij colocatie; wil je de opzet eerst laten doordenken, dan helpen we met netwerkontwerp. Neem contact op en vertel wat er moet blijven draaien.