Tempi di risposta e scadenza del DNS Client - Tempi di risposta e scadenza dei server di inoltro normali e condizionali

Comportamento di default di un DNS client quando viene configurator un singolo DNS server sulla NIC

Il comportamento è il seguente (testato su Windows XP, Windows 7 e Windows 8 client con singola NIC):

Time (seconds since start)

Azione

0 Il Client interroga il DNS server 
1 Se non riceve risposta dopo 1 secondo, il client interroga nuovamente il DNS server
2 Se non riceve risposta dopo 1 secondo, il client interroga nuovamente il DNS server
4 Se non riceve risposta dopo altri 2 seconds, il client interroga nuovamente il DNS server
8 Se non riceve risposta dopo altri 4 secondi, il client interroga nuovamente il DNS server
10 Se non riceve risposta dopo altri 2 secondi, il client interrompe l’interrogazione

Qualsiasi errore di risoluzione dei nomi o errore del server da parte del DNS server fermerà il processo – il client non riprova se la risposta è negativa.

In questo scenario, il client interroga per 5 volte il DNS server prima di andare in time out.

 

Comportamento di default di un Windows XP DNS client quando due server DNS sono configurati sulla NIC 
Il comportamento è il seguente (testato su Windows XP client con singola NIC):

Time (seconds since start)

Azione

0 Il Client interroga il primo DNS server della lista
1 Se non riceve risposta dopo 1 secondo, il client interroga il secondo DNS server nella lista ed allo stesso tempo anche il primo
3 Se non riceve risposta dopo altri 2 secondi, il client interroga nuovamente il primo DNS server
7 Se non riceve risposta dopo altri 4 secondi, il client interroga nuovamente il primo DNS server
9 Se nn riceve risposta dopo altri 2 secondi, il client interrompe l’interrogazione

Qualsiasi errore di risoluzione dei nomi o errore del server da parte del DNS server fermerà il processo – il client non riprova con il server successivo se la risposta è negativa.

Il Client prova i nuovi server solamente se gli altri sono irraggiungibili.

In questo scenario, il client interroga principalmente il primo DNS server, ed il secondario solamente una volta.

 

Comportamento di default su Windows 7 o Windows 8 DNS client quando due DNS server sono configurati sulla NIC

Il comportamento è il seguente (testato su Windows 7 e Windows 8 client con singola NIC):

Time (seconds since start)

Azione

0 Il Client interroga il primo DNS server nella lista
1 Se non riceve risposta dopo 1 secondo, il client interroga il secondo DNS server della lista
2 Se non riceve risposta dopo 1 second, il client interroga nuovamente il secondo DNS server della lista
4 Se non riceve risposta dopo altri 2 secondi, il client interroga tutti i server nella lista allo stesso tempo
8 Se non riceve risposta dopo altri 4 secondi, il client interroga tutti i server nella lista allo stesso tempo
10 Se non riceve risposta dopo altri 2 secondi, il client interrompe l’interrogazione

Qualsiasi errore di risoluzione dei nomi o errore del server da parte del DNS server fermerà il processo – il client non interroga il successivo server se ha ricevuto risposta negativa.

Il Client prova i nuovi server solamente se gli altri sono irraggiungibili.

 

Comportamento di default di un DNS client quando si configurano tre o più DNS server su una NIC
 
Quanti server della lista sono utilizzati e qual’è il timeout?

Il comportamento è il seguente (testato su Windows XP, Windows 7 e Windows 8 client con singola NIC):

Time (seconds since start)

Azione

0 Il Client interroga il primo DNS server nella lista
1 Se non riceve risposta dopo 1 secondo, il client interroga il secondo DNS server della lista
2 Se non riceve risposta dopo 1 secondo, il client interroga il terzo DNS server della lista
4 Se non riceve risposta dopo altri 2 secondi, il client interroga tutti i server della lista allo stesso tempo
8 Se non riceve risposta dopo altri 4 secondi, il client interroga tutti i server della lista allo stesso tempo
10 Se non riceve risposta dopo altri 2 secondi, il client interrompe l’interrogazione

Qualsiasi errore di risoluzione dei nomi o errore del server da parte del DNS server fermerà il processo – il client non interroga il successivo server se ha ricevuto risposta negativa.

Il Client prova i nuovi server solamente se gli altri sono irraggiungibili.
Se l’unico server raggiungibile è nella 4° posizione o più della lista, si ha un ritardo di almeno 4 secondi dopo l’interrogazione originale, prima che venga effettivamente utilizzato. Questo puù causare problematiche se l’applicazione che ha richiesto la risoluzione DNS ha un timeout minore di tale valore. L’unico modo per interrogare questo DNS server è metterlo fra i primi tre server della lista.

 

Comportamento di default di un DNS server quando più di due DNS servers sono configurati come server di inoltro (forwarders)

Per capire come funziona, le variabili principali sono:

RecursionTimeout - il tempo che attende il DNS per ottenere risposta dai server remoti per una query ricursiva da parte del client prima di terminare la ricerca

Presente sotto la chiave di registro seguente:
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

Configurabile tramite dnscmd /config /RecursionTimeout <value>

Il valore di default è:
- 15 secondi su Windows Server 2003
- 8 secondi si Windows Server 2008, 2008R2 e 2012

Il valore RecursionTimeout è definito al livello di DNS server ed è indipendente dalla specifica zona interrogata.

ForwardingTimeout – Il tempo che attende il DNS per ottenere una risposta dai Server DNS presenti nella lista dei server di inoltro (forwarders)

Presente sotto la chiave di registro seguente:
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout

Configurabile tramite dnscmd /config /ForwardingTimeout <value>

Il valore di default è:
- 5 secondi su Windows Server 2003
- 3 secondi su Windows Server 2008, 2008R2 e 2012

Il valore ForwardingTimeout è definito al livello di DNS server ed è indipendente dalla specifica zona interrogata.

This is also the setting you can see in the Forwarders GUI 

Quando il DNS server riceve una query per un record di una zona per il quale non è autoritativo, e richiede l’uso dei server di inoltro, il comportamento di default è il seguente:

Time (seconds since start) Action
0 Il Client interroga il DNS server. Il DNS server inoltra immediatamente la queryal primo server di inoltro
<forwarding_timeout> dopo il <forwarding_timeout> in secondi, se il primo server di inoltro non ha risposto, il DNS server interroga il secondo server di inoltro
2 * <forwarding_timeout> +1 Dopo il <forwarding_timeout> +1 altro secondo, se il secondo server di inoltro non ha risposto, il DNS server interroga il terzo server di inoltro
... ...
N * <forwarding_timeout> +(N-1) Dopo il <forwarding_timeout> + 1 altro secondo,sel’ N* server di inoltro non ha risposto, il DNS server interroga il (N+1) server di inoltro

Note: In aggiunta al ritardo configurato può esserci un ulteriore mezzo secondo a causa dell’overhead di sistema

L’algoritmo si ferma quando il tempo trascorso ha superato il valore di RecursionTimeout.

Se il valore RecursionTimeout scade, il DNS server risponderà al client con un Server Failure.

E’ da notare che non viene mandata una Server Failure immediatamente dopo la scadenza del RecursionTimeout, ma sola dopo che è pronta la richiesta per il secondo server di inoltro.

Se il server riesce a contattare tutti i server di inoltro prima della scadenza del RecursionTimeout senza ottenere risposta, cercherà di utilizzare i Root Hints per la risoluzione dei nomi (impostazione di default, almenochè non è disabilitata la recursione a livello server).

Questo vuol dire che con l’impostazione di default, un server 2008R2 sarà in grado di interrogare massimo tre server di inoltro. Non avrà abbastanza tempo per arrivare ad interrogare il quarto server di inoltro. Con le impostazioni di default un server 2008R2 si comporterà nel seguente modo:

- Interrogare il primo server di inoltro dopo 0 secondi

Interrogare il secondo server di inoltro dopo 3.5 secondi
  • Interrogare il terzo server di inoltro dopo 3.5 + 4 = 7.5 secondi
    Dopo 8 secondi, il valore RecursionTimeout scade quindi non si ha più tempo per interrogare il quarto server di inoltro (che sarebbe dovuto accadere sopo 3.5 + 4 + 4 = 11.5 secondi)

    Verrà mandata una risposta di Server Failure dopo 11.5 secondi.

 

Comportamento di default di un DNS server quando più di due DNS server sono configurati come server di inoltro condizionali (conditional forwarders)

Simili ai server di inoltro, ci sono due variabili principali per I server di inoltro condizionali.

E’ ancora presente il valore RecursionTimeout (livello server) ma in questo scenario si utilizza il valore ForwarderTimeout invece delForwardingTimeout.

In particolare è da notare che il ForwarderTimeout opera a livello di zonaed ha valori di default differenti

RecursionTimeout – quanto tempo attende il DNS per una risposta dai server remoti a query recursive da parte dei client prima di terminare la ricerca

Presente sotto la chiave di registro seguente:
HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

Configurabile tramite dnscmd /config /RecursionTimeout <value>

Il valore di default è:
- 15 secondi su Windows Server 2003
- 8 secondi su Windows Server 2008 e 2008R2

 

Il valore RecursionTimeout è definito a livello DNS server ed è indipendente dalla zona interrogata. 

ForwarderTimeout – quanto tempo attende il DNS finchè ogni server nella lista dei server di inoltro condizionali, risponda ad una query.

Visto che i server di inoltro condizionali sono configurati per zone specifiche, il valore ForwarderTimeout è anch’esso dipendente dalla zona.

Presente sotto la chiave di registro seguente:
HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeout

Il valore di default è 5 secondi su Windows Server 2003, 2008, 2008R2 e 2012

Quando il server DNS riceve una query per un record di una zona per la quale non è autoritativo, ed è configurator per utilizzare i server di inoltro condizionali, il comportamento di default è il seguente:

Time (seconds since start)

Azione

0

Il client interroga il server DNS. Il server DNS inoltra immediatamente la query al primo server nella lista dei server di inoltro condizionali

<forwarder_timeout>

Dopo il <forwarder_timeout> in secondi, se il primo server di inoltro condizionale non ha risposto, il server DNS interroga il secondo server di inoltro condizionale

2 * <forwarder_timeout> +1

Dopo il <forwarder_timeout> +1 secondo, se il secondo server di inoltro condizionale non ha risposto, il server DNS interroga il terzo server di inoltro condizionale

...

...

N * <forwarder_timeout> +(N-1)

Dopo il <forwarder_timeout> +1 secondo, se l’ N server di inoltro condizionalenon ha risposto, il server DNSinterroga il (N+1) server di inoltro condizionale

Note: In aggiunta al ritardo configurato può esserci un ulteriore mezzo secondo a causa dell’overhead di sistema

L’algoritmo si ferma quando il tempo trascorso è superior al valore del RecursionTimeout.

Se il valore RecursionTimeout scade, il server DNS risponderà al clientcon una Server Failure.

E’ da notare che non viene mandata una Server Failure immediatamente dopo la scadenza del RecursionTimeout, ma sola dopo che è pronta la richiesta per il secondo server di inoltro condizionale.

Questo vuol dire che con le impostazioni di default, un server 2008R2 sarà in grado di interrogare al Massimo due server di inoltro condizionali.

Non ci sarà abbastanza tempo per arrivare ad utilizzare il terzo server di inoltro condizionale. In effetti con le impostazioni di defaultun server 2008R2 si comporterà come segue:

  • Interroga il primo server server di inoltro dopo 0 secondi
  • Interrogare il secondo server di inoltro dopo 5.5 secondi

Dopo 8 secondi, scade il valore RecursionTimeoutquindi non si raggiungerà il punto in cui si interroga il terzo server (che sarebbe accaduto sopo 5.5 + 6 = 11.5 secondi)

Verrà mandata una risposta di Server Failure dopo 11.5 secondi.