Vad är anycast och varför det gör din CDN snabbare
Anycast är en av de bitar av nätverksmagi som tyst gör den moderna webben snabb. Vad det är, hur det faktiskt fungerar, och frågan alla frågar när de först hör om det.
Anycast låter många servrar i många städer meddela och dela en enda IP-adress. Internet routing levererar sedan varje besökares paket till den plats som är närmast i nätverks termer. Resultatet är lägre latens, failover som sker automatiskt inom några sekunder och attacktrafik som sprider sig över hela nätverket istället för att påla på en maskin.
En IP-adress betyder vanligtvis en maskin på ett ställe. Anycast bryter det antagandet på ett verkligt användbart sätt: samma adress finns på dussintals platser samtidigt, och internets egen routing bestämmer vilken du når. Första gången du hör det beskrivet, låter det som att det inte borde fungera.
Vad är anycast?
Anycast är en nätverksadresseringsmetod där en enda IP-adress tillkännages från flera platser samtidigt, och routrar levererar trafik till vilken plats som är närmast genom nätverksväg. Avsändaren gör inget annorlunda - det skickar till en adress, och nätverket löser vilka kopierar svar.
Den vanliga analogin är ett nationellt telefonnummer för en kedja av butiker: du ringer samma nummer från var som helst och når din lokala filial utan att titta upp. Det är en anständig analogi för effekten, även om det döljer mekanismen, vilket är värt att förstå eftersom det förklarar begränsningarna.
Så här fungerar det: BGP
Internet är inte ett nätverk. Det är cirka 75 000 oberoende nätverk – Internetleverantörer, värdföretag, universitet, innehållsleverantörer – som var och en identifieras med ett autonomt systemnummer och utbyter routinginformation med varandra med hjälp av gränsen. Gatewayprotokollet.
BGP är i huvudsak en kontinuerlig konversation där nätverk tillkännager "Jag kan nå dessa adressområden, och här är vägen". Varje router samlar in dessa meddelanden och väljer, för alla destinationer, den bästa tillgängliga sökvägen med en uppsättning regler som inkluderar antalet nätverk som trafiken måste korsa.
Anycast gör helt enkelt samma tillkännagivande från många ställen. Ett nätverk i Köpenhamn tillkännager utbudet; det gör en i Singapore; det gör en i So Paulo. En router i Danmark hör alla tre meddelanden, ser att Köpenhamnsvägen är kortast och installerar den vägen. En router i Malaysia gör samma aritmetiska och installerar Singapore-rutten. Varken router vet eller bryr sig om att de andra finns.
Lägg märke till vad "närmast" betyder här: minsta näthopp och bästa routingpolicy, inte minsta kilometer. Vanligtvis sammanfaller dessa. Ibland gör de inte - en besökare kan dirigeras till en stad längre bort eftersom det är där deras Internetleverantörs peering råkar vara. Det är en verklig effekt, och anledningen anycast och geografisk routing ibland oense.
"Men bryter inte det TCP?"
Detta är den första frågan som någon med nätverkserfarenhet frågar, och det är en bra. TCP-anslutningar är statliga. Om paket ett anländer till Köpenhamn och paket två anländer till Frankfurt, har Frankfurt-servern ingen aning om vad anslutningen är och återställer den. Så varför fungerar anycast överhuvudtaget?
Eftersom BGP-rutter är stabila på tidsskalan för en webbbegäran. Rutttabeller ändras, men inte tusentals gånger i sekunden - en viss routers valda sökväg för ett givet prefix håller vanligtvis i minuter eller timmar. En TCP-anslutning som varar några sekunder kommer nästan alltid att spendera hela sitt liv att prata till samma plats.
Nästan alltid är inte alltid, och de fall där det går sönder är verkliga: en routing förändring mitten av anslutningen skickar de återstående paketen någon annanstans och anslutningen dör. På det öppna internet är detta sällsynt nog att vara ett avrundningsfel, och webbläsaren återansluter helt enkelt. QUIC förbättrar detta ytterligare, eftersom det identifierar anslutningar med ett anslutnings-ID snarare än av IP och port tuple, så det kan överleva att överlämnas till en annan väg mer graciöst än TCP kan.
Tre saker du köper
Failover utan DNS
Detta är den tysta superkraften. Om en anycast-plats går ner slutar den meddela rutten, angränsande routrar drar tillbaka den och trafik konvergerar på närmaste plats - vanligtvis inom några sekunder, utan att någon redigerar en DNS-post och ingen Cachelagrat svar som pekar på en död server.
Jämför det med DNS-baserad failover, där återställningshastigheten begränsas av din TTL och av resolvers som ignorerar det. En 300-sekunders TTL innebär fem minuter av vissa besökare skickas till en maskin som inte finns där.
DDoS försvar genom geometri
Ett botnät som attackerar en anycast-adress får inte välja vilken plats den träffar. Varje bots trafik dirigeras till den plats som ligger närmast den boten, så en globalt distribuerad attack delar sig automatiskt över ett globalt distribuerat nätverk. En attack som skulle mätta en plats kommer som en bråkdel av det vid femtio. Ingen konfiguration är inblandad - det är en egenskap för hur adresseringen fungerar.
Där anycast inte är svaret
Två ärliga begränsningar.
Du behöver adressutrymme och BGP. Att köra anycast kräver dina egna IP-intervall, ett autonomt systemnummer och BGP-sessioner med transitleverantörer och kamrater på varje plats. Det är inte ett helgprojekt, varför anycast är något du får från en leverantör snarare än något du slår på.
Du får mindre kontroll. Med GeoDNS kan du bestämma att portugisiska besökare ska nå en viss server, av vilken anledning du vill - kapacitet, licensiering, efterlevnad. Med anycast bestämmer routing och routing är summan av policyer som sätts av tusentals nätverk som du inte har någon relation till. När du behöver deterministisk kontroll över vem som landar där, det är en riktig nackdel. Det är därför många nätverk använder båda.
Vanliga frågor
Vad är anycast?
Anycast är en nätverksadresseringsmetod där en enda IP-adress tillkännages från flera fysiska platser samtidigt, och internet routing levererar varje avsändares trafik till vilken plats som är närmast längs Nätverksvägen. Avsändaren använder en adress och är inte medveten om att flera servrar delar den.
Hur fungerar anycast?
Genom BGP använder protokollnätverken för att utbyta routinginformation. Varje anycast-plats meddelar samma adressintervall till sina grannar, och varje router på internet väljer självständigt den kortaste tillgängliga vägen till det intervallet. En router i Europa installerar därför en rutt till den europeiska platsen medan en router i Asien installerar en till den asiatiska platsen, utan att någondera samordnas.
Bryter anycast TCP-anslutningar?
Mycket sällan. TCP kräver alla paket i en anslutning för att nå samma server, och anycast fungerar eftersom BGP-rutter är stabila under minuter eller timmar snarare än att ständigt ändras, så en kortlivad webbanslutning nästan alltid Stanna kvar på en plats. En routingförändring i mitten av anslutningen kan bryta den, vid vilken tidpunkt webbläsaren återansluter. QUIC hanterar detta bättre än TCP, eftersom det identifierar anslutningar med ett anslutnings-ID snarare än med IP och port.
Vad är skillnaden mellan anycast och unicast?
Unicast är det normala fallet: en IP-adress motsvarar ett gränssnitt på en maskin, och trafik till den har exakt en destination. Anycast tilldelar samma adress till många maskiner på olika platser, så trafiken når den som är närmast via nätverksväg. Unicast är en-till-en; anycast är en-till-närmast-av-många.
Hjälper anycast mot DDoS-attacker?
Ja, strukturellt. Eftersom varje attackerande maskins trafik dirigeras till anycast-platsen närmast den, distribuerar ett globalt distribuerat botnät automatiskt sin attack över varje plats i nätverket istället för att koncentrera sig. Det på en. Detta kräver ingen konfiguration - det följer av hur anycast routing fungerar - och betyder att den totala kapaciteten som motstår attacken är hela nätverkets, inte en webbplats.
Kan jag sätta upp anycast själv?
Endast med betydande infrastruktur. Det kräver dina egna tilldelade IP-adressområden, ett autonomt systemnummer och BGP-sessioner som är etablerade med transitleverantörer eller internetutbyten på varje plats du vill meddela från. För nästan alla webbplatser är anycast en egenskap hos CDN eller DNS-leverantören du väljer snarare än något du distribuerar själv.
Elegansen hos anycast är att det inte lägger till ett lager. Den använder routing som redan finns och skulle köras ändå, och får locality, failover och attack distribution som konsekvenser av ett enda beslut om hur man tillkännager en adress.
Se hur NordicCDN gör detta för din webbplats:
Mads har arbetat inom IT - mestadels värd - sedan han var 16. Han tog tidigt del i ett SaaS-företag och hjälpte till att växa fram till Vismas förvärv, har byggt och drivit datacenternätverk och fungerat som CTO för ett danskt datacenter. Han startade NordicCDN för att göra snabb och säker infrastruktur enkel att använda.