Che cos'è "anycast" e come è utile?


85

Non avevo mai sentito parlare di alcuncast fino a pochi secondi fa quando ho letto " Quali sono alcuni trucchi server / di rete interessanti o utili? ".

L' articolo " Anycast " di wikipedia su di esso è abbastanza formale e non evoca davvero un'immagine mentale di come sarebbe usato.

Qualcuno può spiegare in poche frasi informali cos'è "anycast", come lo si configura (solo in senso generale) e quali sono i suoi vantaggi (cosa rende più semplice)?

Risposte:


88

Anycast è una tecnica di rete in cui lo stesso prefisso IP viene pubblicizzato da più posizioni. La rete decide quindi in quale posizione indirizzare una richiesta dell'utente, in base ai costi del protocollo di routing e possibilmente alla "salute" dei server pubblicitari.

Anycast offre numerosi vantaggi. Innanzitutto, allo stato stazionario, gli utenti di un servizio anycast (DNS è un esempio eccellente) si collegheranno sempre al server DNS "più vicino" (dal punto di vista del protocollo di routing). Ciò riduce la latenza, oltre a fornire un livello di bilanciamento del carico (presupponendo che i consumatori siano distribuiti uniformemente sulla rete).

Un altro vantaggio è la facilità di gestione della configurazione. Invece di dover configurare diversi server DNS a seconda di dove è distribuito un server / workstation (Asia, America, Europa), hai un indirizzo IP che è configurato in ogni posizione.

A seconda di come viene implementato anycast, può anche fornire un livello di alta disponibilità. Se la pubblicità della route anycast è subordinata a una sorta di controllo dello stato (ad esempio una query DNS per un dominio ben noto, in questo esempio), non appena un server non riesce la sua route può essere rimossa. Una volta riconfigurata la rete, le richieste dell'utente verranno inoltrate senza problemi alla successiva istanza di DNS più vicina, senza la necessità di alcun intervento o riconfigurazione manuale.

Un vantaggio finale è quello del ridimensionamento orizzontale; se si rileva che un server viene caricato eccessivamente, è sufficiente distribuirne un altro in una posizione che gli consenta di accettare una parte delle richieste del server sovraccarico. Ancora una volta, poiché non è richiesta alcuna configurazione client, questo può essere fatto molto rapidamente.


Anycast utilizza più larghezza di banda rispetto all'unicast? Immagina di avere un migliaio di server che condividono tutti lo stesso indirizzo IP, quando inviamo un pacchetto a quell'indirizzo , non ci vorrebbe più larghezza di banda rispetto a unicasting?
Pacerier,

5
No: il traffico inviato a un indirizzo anycast arriverà solo in una posizione che pubblicizza l'indirizzo. Potresti pensare al multicast , in cui i pacchetti inviati a un indirizzo di gruppo multicast vengono inviati a tutti gli host interessati a quel gruppo.
Murali Suriar,

Il problema di " Piuttosto che dover configurare server DNS diversi a seconda di dove è distribuito un server / workstation " è risolto dai nomi di dominio? Allora, qual è il punto di uno streaming quando si tratta semplicemente di duplicare quali nomi di dominio stanno già facendo?
Pacerier,

1
@Pacerier - non puoi usare i nomi di dominio per trovare il tuo server DNS - questa è una dipendenza circolare. Esempio: configurare dns.foo.com. come server DNS. A quale indirizzo IP devo inviare richieste a dns.foo.com? Lo so, lo cercherò in DNS. ecc.
Murali Suriar,

32

Una delle cose che spesso mi ha confuso nel capire "anycast" è che, sebbene sia un termine di alto livello, nell'implementazione pratica di solito si riduce a due esempi:

  1. I router che utilizzano BGP per pubblicizzare lo stesso blocco IP tramite più percorsi AS come un modo approssimativo di indirizzare gli utenti a un sito "più vicino". Allo stesso tempo, fornisce un failover quasi trasparente agli altri siti semplicemente ritraendo i percorsi da un sito problematico. Questo può essere utile per quasi tutti i protocolli, anche se ovviamente solleva molti problemi di sincronizzazione dei dati di backend.

  2. Pubblicizzare lo stesso IP di servizio da più punti all'interno della propria rete (tramite routing statico , OSPF , EIGRP o altro). Se le rotte sono ponderate in modo diverso , agisce come un meccanismo di failover. Se le rotte sono ponderate in modo uniforme , può trarre vantaggio dalle funzionalità di bilanciamento del carico per pacchetto o per flusso della maggior parte dei router di marca commerciale. Devi stare attento che il protocollo a livello di applicazione sia a tuo agio con questo, per questo quasi sempre ne senti parlare usato con DNSdove una richiesta è sempre un pacchetto e tutto è apolide. Personalmente, considero questo come un'intrusione caotica delle preoccupazioni a livello di applicazione nel livello di rete quando una combinazione di DNS e bilanciamento del carico adeguato sarà quasi sempre una soluzione migliore.


+1 per menzionare un pacchetto e apolidia
nponeccop,

3
problema con DNS è che si può usare google o qualche altro resolver remoto e il server più vicino al resolver potrebbe essere diverso da quello dell'utente. Ovviamente questo è valido solo per qualsiasi utilizzo per uso non DNS (ad es. TCT Anycast o altro utilizzo).
Akostadinov,

@cagenut, HTTP si spezzerebbe nel caso di bilanciamento del carico per pacchetto (a causa di pesi pari o altro)?
Pacerier,

16

Utilizzato principalmente per servizi basati su UDP come DNS. Fondamentalmente, si annuncia lo stesso percorso da più data center in tutto il mondo. In questo modo, i tuoi clienti verranno inviati al datacenter "migliore" e "più vicino" in base alle rotte BGP. Metto "migliore" e "più vicino" tra virgolette perché i provider di rete possono giocare e instradare il traffico da determinate reti in modo diverso. In generale, le cose funzionano al meglio con anycast, ma non è una garanzia.

Un esempio di ciò sarebbe elencare i server DNS come 1.2.3.4 e 1.2.3.5. I router annunciano un percorso per 1.2.3 / 24 su più datacenter. Se sei in Giappone e hai un datacenter lì, è probabile che finirai lì. Se ti trovi negli Stati Uniti, verrai inviato al tuo datacenter statunitense. Ancora una volta, si basa sul routing BGP e non sul routing geografico effettivo, ma di solito è così che le cose si rompono.


1
Come vengono evitati i conflitti allora?
Pacerier,

Non sono sicuro di cosa intendi per conflitti. BGP non consente realmente conflitti. Seleziona solo un percorso. Un problema (spesso ignorato) con anycast è legale. Tecnicamente, qualsiasi registrazione è coperta da diversi brevetti. Nessuno lo impone, ma diversi tipi di traffico (CDN, DNS, TCP vs UDP) sono coperti da brevetti diversi. Questo paragrafo dovrebbe essere trattato con IANAL.
diq

Quindi vuoi dire che quei servizi di localizzazione ip2 sono inaccurati? Perché non esiste una posizione ufficiale per un IP e potrebbe essere ovunque a seconda del computer BGP con cui parli?
Pacerier,

9

In base alla mia risposta originale, ho appena pubblicato altri due articoli sul mio blog dal titolo: Anycast DNS - Parte 3, Utilizzo di RIP e Anycast DNS - Parte 3, Utilizzo di RIP (continua). Quest'ultimo approfondisce i dettagli, ma su www.netlinxinc.com/netlinx-blog.html troverai le ricette effettive su come configurare i router Cisco e il software di routing basato su host Quagga Open Source per Anycast DNS tramite RIP.

Attualmente sto lavorando alla scrittura del quarto articolo della serie. Ciò fornirà i destinatari su come distribuire Anycast DNS utilizzando OSPF. Ultimo della serie, mostrerò le ricette per distribuire Anycast DNS usando BGP.

Anycast DNS - Parte 1, Panoramica

Anycast DNS - Parte 2, Utilizzo di route statiche

Anycast DNS - Parte 3, Utilizzo di RIP

Anycast DNS - Parte 3, Utilizzo di RIP (continua)


Quindi è vero che a causa di anycast, è possibile che qualcun altro su Internet in tutto il mondo possa avere lo stesso IP pubblico di quello che ti ha fornito il tuo ISP?
Pacerier,

Non è vero che solo gli ISP sono in grado di distribuire server anycast?
Pacerier

In effetti, per eseguire qualsiasi trasmissione , è necessario possedere più ISP.
Pacerier

4

Dato che questo è principalmente DNS al momento ...

Informalmente rende il tuo servizio più resiliente e con un migliore accesso / latenza / velocità alla rete, consentendoti di configurare lo stesso servizio in più località in tutto il mondo utilizzando lo stesso indirizzo. Quando qualcuno richiede quell'indirizzo, riceve il percorso più vicino / migliore.

Dal punto di vista del server:

Se unicast stai andando a una sola persona, e multicast stai andando a più persone, e la trasmissione sta andando a tutte le persone, allora qualsiasi trasmissione è schitzofrenica e ha personalità multiple in cui la personalità più adatta a ciascuna persona si collega con loro. Hmm. Non la migliore analogia.


3

Un utilizzo davvero interessante di anycast è DNS. È possibile posizionare 5 server DNS diversi in vari percorsi fisici e di rete, ma condividere indirizzi singoli (o talvolta sia DNS primario che secondario). A seconda di dove si trova l'origine, vengono instradati al nodo più vicino. Ciò comporta un certo bilanciamento del traffico e fornisce ridondanza in caso di morte di un server DNS.


Ma la ridondanza non è già fornita dal sistema DNS?
Pacerier,

2

Secondo uno dei miei colleghi, è anche utile come tecnica di mitigazione degli attacchi DoS, poiché le persone possono solo attaccare l'indirizzo IP anycast "più vicino", quindi se ci sono molte zombine, diciamo, negli Stati Uniti, il tuo sito Euro sarebbe per lo più non interessati, in quanto non possono effettivamente inviare pacchetti ad esso.

Inoltre, potrebbe essere possibile utilizzarlo come un modo per filtrare (in modo un po 'ingenuo) i pacchetti contraffatti se ovviamente provengono da qualche parte che difficilmente saranno pubblicizzati in BGP come la rotta corretta (ad esempio pacchetti che arrivano in Europa quando l'ASN indica un N americano bloccare).


1
Bene, anche nel semplice caso ciò fermerebbe solo le persone il cui percorso AS passa a quel server --- ad esempio potresti impedire alle persone che ti raggiungono da Comcast, ma non da AT&T. Se lo hai installato "correttamente" per il failover (traccia il servizio L7, smetti di annunciarlo quando si interrompe), in realtà è molto più complicato gestire gli attacchi DoS dal momento che distruggerà un server e passerà al successivo quando sarà gli annunci vengono eliminati ...
James Cape,

@JamesCape, Interessante, ma quando passano alla successiva, le cose da fare sono fallite poiché le persone non sono in grado di connettersi giusto?
Pacerier

@Pacerier Nel caso più semplice, in cui pubblicizzi lo stesso IP ovunque senza intelligenza, sì. Tuttavia, se cerchi di diventare intelligente e ritirare la pubblicità negli Stati Uniti perché il servizio non risponde, l'unica pubblicità rimasta sarà quella in Europa. Quindi tutti gli zombi statunitensi colpiranno il prossimo server disponibile e uccideranno anche quello.
James Cape,

2

È anche bene notare che Anycast non è buono o affidabile per alcune connessioni TCP che non possono sopravvivere ai ripristini o a lunghe conversazioni.

Gli IP Anycast, usando BGP, dicono a Internet che ci sono 2, 3 o più percorsi verso un HOST specifico , tuttavia in realtà questi NON sono lo stesso host , sono repliche esatte di host pubblicizzati su più datacenter per ottenere connessioni a latenza inferiore.

Ad esempio, ho 3 server che eseguono 301 reindirizzamenti non www per 198.251.86.133, se esegui il ping di questo host, a volte potresti ottenere risposte DUPLICATE o persino cadere a seconda di dove ti trovi, poiché i miei server sono US-East, US -Ovest e EUR. per connessioni temporizzate (come 301 che sono memorizzate nella cache del browser), ciò fornisce una risposta rapida da parte di un server locale nel centro dati più vicino.

Da un punto di vista della ridondanza non c'è nessuno integrato in anycast, avresti comunque bisogno di ridondanza indipendente in ciascun sito poiché quell'IP (in scenari tipici) punterà sempre a quei datacenter.


Re "ping"; il ping non è una connessione UDP?
Pacerier

Ri "come quell'IP (in scenari tipici) punta sempre a quei datacenter"; sei sicuro? Se quel server si oscura, iniziano a puntare al prossimo server più vicino, non è vero?
Pacerier
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.