I server DNS utilizzano già anycast. L'aggiunta di più IP migliorerà la scalabilità?


9

RFC 1034 ci richiede di assegnare almeno due indirizzi IP per i server DNS. Tuttavia, la ridondanza può già essere raggiunta da un singolo indirizzo IP se utilizziamo l'indirizzamento anycast. Anycast BGP sembra ridimensionare bene in centinaia o addirittura migliaia di server.

In tal caso, perché sono ancora necessari più indirizzi IP per i server DNS? Aumenta effettivamente la ridondanza (contribuisce alla disponibilità) se disponiamo già di una trasmissione o è solo un mito?

Quali problemi ed errori possiamo aspettarci da affrontare se utilizziamo un solo indirizzo IP?

Con ciò intendo omettere totalmente gli indirizzi DNS secondari o usare un IP falso (ad es. 1.2.3.4) Per il secondo indirizzo quando alcune configurazioni ne richiedono almeno due.

Risposte:


16

Un singolo indirizzo IP anycast non offre la stessa ridondanza di due indirizzi IP unicast in prefissi IP distinti.

Spesso il problema più difficile per la ridondanza non è quando qualcosa fallisce completamente, ma piuttosto quando si sta comportando male abbastanza per passare ancora i controlli sanitari, ma in realtà non essere funzionale.

Ho visto una configurazione DNS anycast in cui un server DNS non funzionava, ma i pacchetti verrebbero comunque instradati a quel server DNS. Qualunque cosa si occupasse della pubblicità del prefisso potrebbe semplicemente non essere consapevole del fatto che il server DNS non funzionava.

Diventa ancora più complicato se il server DNS in questione non è un server DNS autorevole, ma piuttosto un risolutore ricorsivo.

Un risolutore ricorsivo di questo tipo dovrebbe avere sia l'indirizzo anycast per la ricezione di query dai client sia gli indirizzi unicast per l'interrogazione di server DNS autorevoli. Ma se gli indirizzi unicast scendessero, potrebbe facilmente sembrare abbastanza sano da essere comunque indirizzati alle query.

Anycast è un ottimo strumento per la scalabilità e la riduzione della latenza. Ma per ridondanza non dovrebbe essere solo.

Più pool anycast ridondanti sono tuttavia un'ottima soluzione per la disponibilità. Un esempio ben noto è 8.8.8.8 e 8.8.4.4. Entrambi sono indirizzi anycast, ma non devono mai essere indirizzati allo stesso server DNS fisico (supponendo che Google abbia svolto bene il proprio lavoro).

Se si dispone di 10 server DNS fisici, è possibile configurarli come 2 pool con 5 server in ciascun pool o 5 pool con 2 pool in ciascun pool. Si desidera evitare che un server DNS fisico si trovi contemporaneamente in più pool.

Quindi quanti IP dovresti allocare? È necessario disporre di IP che possono essere configurati come anycast indipendentemente l'uno dall'altro. Ciò significa in genere che è necessario allocare un intero / 24 di spazio di indirizzi IPv4 o / 48 di spazio di indirizzi IPv6 per ciascun pool. Questo potrebbe benissimo limitare il numero di pool che puoi avere.

Inoltre, se stiamo parlando di server autorevoli, la risposta DNS con tutti i tuoi record NS e la colla A e AAAA dovrebbero rientrare in un singolo pacchetto da 512 byte. Per i server root questo ha funzionato a 13 indirizzi. Ma questo non includeva colla e IPv6, quindi il numero che raggiungeresti sarebbe inferiore.

Ogni pool dovrebbe essere il più geograficamente possibile distribuito. Se hai 5 server in Europa e 5 in Noth America e 2 IP anycast, non crei un pool in ogni continente. Metti 2 dall'Europa in un pool con 3 dal Nord America e gli altri 5 nell'altro pool.

Se si dispone di più di 2 pool anycast, è possibile lasciare temporaneamente un server fisico in più pool. Ma non dovresti mai consentire a un server fisico di essere in tutti i pool contemporaneamente.

La combinazione di anycast e unicast è possibile, ma è necessario prestare attenzione. Se si dispone di IP per due pool, non combinerei. Ma se hai un solo IP anycast con cui lavorare, può avere senso includere anche IP unicast. Il problema è che includere gli IP unicast non ti darà la stessa latenza e bilanciamento del carico.

Se un server fisico è reso disponibile sia da Unicast che da Anycast, è possibile rischiare che gli utenti raggiungano lo stesso server primario e secondario e perdere l'accesso in caso di interruzione. Questo può essere evitato usando solo indirizzi unicast di server non nel pool anycast o fornendo sempre agli utenti due indirizzi unicast.

Più indirizzi unicast vengono inseriti nel mix, meno query verranno inviate all'indirizzo anycast e minore sarà il vantaggio che si otterrà da qualsiasicast in termini di latenza e scalabilità.


Vuoi dire che il modo migliore per raggiungere la scalabilità è quello di utilizzare molti indirizzi unicast secondari (ovvero il vecchio modo di impostare ns1.domain, ns2.d, ns3.d ... ns300.d) invece di usare anycast?
Pacerier,

@Pacerier No, non è quello che intendo. Lo chiarirò nella mia risposta.
Kasperd,

+1. Un errore di routing può persino portare il tuo unicast all'inferno (vicolo cieco). Avere un secondo indirizzo separato significa che hai più di un "ticket" per quello;)
TomTom

2
+1 Vorrei aggiungere che l'aggiunta di un falso ip come secondo indirizzo sembra un'idea orrenda
Reaces

1
@Pacerier ottieni il bilanciamento del carico usando più indirizzi unicast. Il problema è la latenza, i client semplicemente non sanno quali IP si trovano nelle vicinanze e quali sono lontani. Inoltre, non può essere ridimensionato. Puoi usare solo circa 5 server, se vuoi che i record di colla A e AAAA si adattino a 512 byte. La combinazione di un anycast e unicast multiplo è problematica per il bilanciamento del carico, poiché è probabile che si ottenga più carico sugli indirizzi unicast che sull'indirizzo anycast.
Kasperd,

4

È consigliabile utilizzare almeno due indirizzi di prefissi diversi e assegnare loro un nome con due diversi TLD. Entrambi questi indirizzi possono essere ammessi se lo desideri. Avere un solo indirizzo IP ti darà un singolo punto di errore. Se il routing a quell'indirizzo non funziona (errore di configurazione, un'istanza anycast non funziona correttamente, il prefisso viene dirottato, ecc.), L'intero dominio diventa irraggiungibile.

Ogni indirizzo anycast richiederà almeno un prefisso /24IPv4 o /48IPv6 per essere instradabile in BGP. I prefissi più piccoli (più lunghi) di solito non saranno accettati nella tabella di routing globale in molti punti.

Non inserire mai un indirizzo IP falso come server DNS. Provocherà gravi ritardi per i risolutori.


Peggio ancora, quell'indirizzo IP "falso" è l'indirizzo di qualcun altro. Avrebbero ricevuto le domande. Se si infastidiscono con tutto quel traffico, potrebbero inviare risposte con un TTL elevato per farlo sparire per un po '.
Kasperd,

@kasperd, che dire degli indirizzi IP riservati speciali che non appartengono a nessuno?
Pacerier,

1
@Pacerier L'utilizzo dell'indirizzo RFC 1918, 4193 o 6598 limiterebbe il danno. Ma causerebbe comunque un rallentamento o addirittura un fallimento della risoluzione.
Kasperd,

3

RFC 1034 afferma solo che sono necessari due server DNS. Questo non è un requisito obbligatorio, ma una raccomandazione, quindi fai quello che vuoi. Indipendentemente da ciò, se si desidera l'HA, i 2 server DNS possono essere assegnati allo stesso IP utilizzando anycast e l'unica cosa che gli utenti finali noterebbero quando un server DNS si guasta è una momentanea mancanza di connettività mentre la rete si riconvoca.

Quindi, in sintesi, sì, l'utilizzo di anycast è sufficiente per essere conforme a RFC 1034.


Hmm, se è sufficiente un solo indirizzo IP, perché Google offre due indirizzi ( 8.8.8.8e 8.8.4.4) per i loro server DNS? Hanno già registrato qualcosa, quindi perché non offrire semplicemente un indirizzo 8.8.8.8?
Pacerier,

1
A indovinare direi di non interrompere la connettività durante la convergenza della rete? Perché sono un attore globale e vogliono assicurarsi che siano il più ampi possibile per eliminare ogni possibile punto di errore? Non ne sono del tutto sicuro, ma so che non possiamo essere tutti google :)
Reagisce
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.