Hvad er anycast, og hvorfor det gør din CDN hurtigere
Anycast er en af de bits af netværk magi, der stille og roligt gør det moderne web hurtigt. Hvad det er, hvordan det rent faktisk virker, og det spørgsmål, alle spørger, når de først hører om det.
Anycast lader mange servere i mange byer annoncere og dele en enkelt IP-adresse. Internet routing leverer derefter hver besøgendes pakker til den placering, der er tættest på netværket. Resultatet er lavere ventetid, failover, der sker automatisk inden for få sekunder, og angrebstrafik, der spreder sig over hele netværket i stedet for at hobe sig på en maskine.
Normalt betyder en IP-adresse en maskine på ét sted. Anycast bryder denne antagelse på en virkelig nyttig måde: Den samme adresse findes i snesevis af steder på samme tid, og internettets egen routing bestemmer, hvilken du når. Første gang du hører det beskrevet, lyder det som om det ikke skal fungere.
Hvad er anycast?
Anycast er en netværksadresseringsmetode, hvor en enkelt IP-adresse annonceres fra flere steder på én gang, og routere leverer trafik til den placering, der er tættest på netværksstien. Afsenderen gør ikke noget anderledes - det sender til en adresse, og netværket løser, hvilke kopier der svarer.
Den sædvanlige analogi er et nationalt telefonnummer til en kæde af butikker: du ringer det samme nummer fra hvor som helst og når din lokale filial uden at slå noget op. Det er en anstændig analogi for effekten, selvom den skjuler mekanismen, som er værd at forstå, fordi den forklarer begrænsningerne.
Sådan fungerer det: BGP
Internettet er ikke ét netværk. Det er omkring 75.000 uafhængige netværk - internetudbydere, hostingfirmaer, universiteter, indholdsudbydere - hver identificeret af et autonomt systemnummer, der udveksler routingoplysninger med hinanden ved hjælp af grænsen. Gateway Protocol.
BGP er i det væsentlige en kontinuerlig samtale, hvor netværk annoncere "Jeg kan nå disse adresseområder, og her er vejen". Hver router indsamler disse meddelelser, og for enhver destination vælger den bedste tilgængelige sti ved et sæt regler, der omfatter antallet af netværk, som trafikken skal krydse.
Anycast gør simpelthen den samme meddelelse fra mange steder. Et netværk i København annoncerer rækkevidden; det samme gør et i Singapore; det samme gør et i So Paulo. En router i Danmark hører alle tre meddelelser, ser at Københavnsstien er kortest, og installerer den rute. En router i Malaysia gør det samme aritmetiske og installerer Singapore ruten. Hverken router ved eller bekymrer sig om, at de andre eksisterer.
Bemærk, hvad "nærmeste" betyder her: færrest netværk humle og bedste routing politik, ikke færrest kilometer. Som regel falder de sammen. Lejlighedsvis gør de ikke - en besøgende kan blive dirigeret til en by længere væk, fordi det er der, hvor deres internetudbyders peering sker. Det er en reel effekt, og grunden anycast og geografisk routing undertiden uenige.
"Men bryder det ikke TCP?"
Dette er det første spørgsmål, som alle med netværkserfaring stiller, og det er en god en. TCP-forbindelser er statslige. Hvis pakke 1 ankommer til København, og pakke 2 ankommer til Frankfurt, har Frankfurt-serveren ingen idé om, hvad forbindelsen er, og nulstiller den. Så hvorfor virker anycast overhovedet?
Fordi BGP-ruter er stabile på tidsskalaen for en webanmodning. Rutetabeller ændrer sig, men ikke tusindvis af gange i sekundet - en given routers valgte sti til et givet præfiks holder typisk i minutter eller timer. En TCP-forbindelse, der varer et par sekunder, vil næsten altid bruge hele sit liv på at tale til samme sted.
Næsten altid er ikke altid, og de tilfælde, hvor det bryder er reelle: en routing ændring midten af forbindelsen sender de resterende pakker et andet sted, og forbindelsen dør. På det åbne internet er dette sjældent nok til at være en afrundingsfejl, og browseren tilslutter simpelthen igen. QUIC forbedrer dette yderligere, da det identificerer forbindelser ved et forbindelses-id snarere end ved IP og port tuple, så det kan overleve at blive overgivet til en anden sti mere yndefuldt end TCP kan.
Tre ting, der køber dig
Failover uden DNS
Det er den stille supermagt. Hvis en anycast-placering går ned, stopper den med at annoncere ruten, naboroutere trækker den tilbage, og trafikken konvergerer på den nærmeste placering - typisk inden for sekunder, uden at nogen redigerer en DNS-post og ingen Cachelagret svar peger på en død server.
Sammenlign det med DNS-baseret failover, hvor hastigheden af genoprettelse er begrænset af din TTL og af resolvere, der ignorerer det. En 300-sekunders TTL betyder fem minutter af nogle besøgende, der sendes til en maskine, der ikke er der.
DDoS forsvar ved geometri
Et botnet, der angriber en anycast-adresse, får ikke lov til at vælge, hvilken placering den rammer. Hver bots trafik dirigeres til den placering, der er tættest på den pågældende bot, så et globalt distribueret angreb automatisk deler sig på tværs af et globalt distribueret netværk. Et angreb, der ville mætte et websted, kommer som en brøkdel af det på halvtreds. Ingen konfiguration er involveret - det er en egenskab af, hvordan adresseringen virker.
Hvor anycast ikke er svaret
To ærlige begrænsninger.
Du har brug for adresseplads og BGP. At køre anycast kræver dine egne IP-områder, et autonomt systemnummer og BGP-sessioner med transitudbydere og jævnaldrende på alle steder. Det er ikke et weekendprojekt, hvorfor anycast er noget, du får fra en udbyder snarere end noget, du tænder for.
Du får mindre kontrol. Med GeoDNS kan du beslutte, at portugisiske besøgende skal nå en bestemt server, uanset af hvilken grund du kan lide - kapacitet, licens, overholdelse. Med anycast, routing beslutter, og routing er den samlede politik, der er fastsat af tusindvis af netværk, du ikke har nogen relation til. Når du har brug for deterministisk kontrol over, hvem der lander hvor, det er en reel ulempe. Derfor bruger mange netværk begge dele.
Ofte stillede spørgsmål
Hvad er anycast?
Anycast er en netværksadresseringsmetode, hvor en enkelt IP-adresse annonceres fra flere fysiske placeringer samtidigt, og internetrouting leverer hver afsenders trafik til den placering, der er tættest på. netværksvejen. Afsenderen bruger én adresse og er uvidende om, at flere servere deler den.
Hvordan virker anycast?
Gennem BGP bruger protokolnetværkene til at udveksle routingoplysninger. Hver anycast-placering annoncerer det samme adresseområde til sine naboer, og hver router på internettet vælger uafhængigt den korteste tilgængelige vej til dette område. En router i Europa installerer derfor en rute til den europæiske lokation, mens en router i Asien installerer en til den asiatiske lokation, uden at den er koordineret.
Bryder Anycast TCP-forbindelser?
Meget sjældent. TCP kræver alle pakker i en forbindelse for at nå den samme server, og anycast virker, fordi BGP ruter er stabile i løbet af minutter eller timer i stedet for at skifte konstant, så en kortvarig webforbindelse næsten altid opholder sig med et sted. En routing ændring midten af forbindelsen kan bryde det, på hvilket tidspunkt browseren genopretter forbindelse. QUIC håndterer dette bedre end TCP, da det identificerer forbindelser ved et forbindelses-id snarere end ved IP og port.
Hvad er forskellen på anycast og unicast?
Unicast er det normale tilfælde: en IP-adresse svarer til en grænseflade på en maskine, og trafikken til den har præcis en destination. Anycast tildeler den samme adresse til mange maskiner på forskellige steder, så trafikken når det, der er nærmest ved netværkssti. Unicast er en-til-en; anycast er en-til-nærmest-af-mange.
Hjælper anycast mod DDoS-angreb?
Ja, strukturelt. Fordi hver angribende maskines trafik dirigeres til den anycast-placering, der er tættest på den, distribuerer et globalt distribueret botnet automatisk sit angreb på tværs af alle steder i netværket i stedet for at koncentrere sig. Det på en. Dette kræver ingen konfiguration - det følger af, hvordan anycast routing fungerer - og betyder, at den samlede kapacitet, der modstår angrebet, er hele netværkets, ikke et websteds.
Kan jeg selv sætte en kasse op?
Kun med betydelig infrastruktur. Det kræver dine egne tildelte IP-adresseområder, et autonomt systemnummer og BGP-sessioner, der er etableret med transitudbydere eller internetudvekslinger på hvert sted, du vil annoncere fra. For næsten alle websteder er anycast en egenskab hos den CDN eller DNS-udbyder, du vælger snarere end noget, du selv installerer.
Elegance af anycast er, at det ikke tilføjer et lag. Det bruger den routing, der allerede eksisterer og ville køre alligevel, og får lokalitet, failover og angrebsfordeling som konsekvenser af en enkelt beslutning om, hvordan man annoncerer en adresse.
Se, hvordan NordicCDN gør dette for dit websted:
Mads har arbejdet i IT - for det meste hosting - siden han var 16. Han tog tidligt ejerskab i en SaaS-virksomhed og var med til at udvide den til Visma, har opbygget og drevet datacenternetværk og fungeret som CTO for et dansk datacenter. Han startede NordicCDN for at gøre hurtig, sikker infrastruktur enkel at bruge.