DNS-Caching – iterativ vs. rekursiv

DNS-Caching – iterativ vs. rekursiv

In einer iterativen DNS-Architektur verfügen lokale DNS-Server über Caches und können die Kontaktaufnahme mit Root- und TLD-Servern größtenteils überspringen.

In einem rekursiven Schema kontaktiert der lokale DNS-Server einen DNS-Server, der das Ergebnis rekursiv abruft und mit der angeforderten Ressource antwortet.

Was ist aus Caching-Sicht der Unterschied zwischen iterativem und rekursivem DNS?

Kann der lokale DNS-Server in einer rekursiven Architektur immer noch eine Abkürzung nehmen?

Antwort1

Was ist aus Caching-Sicht der Unterschied zwischen iterativem und rekursivem DNS?

Es gibt keinen Unterschied. Die Time-to-Live (TTL) des autoritativen Servers gibt zusammen mit lokalen Richtlinien an, wie lange die Datensätze im Cache gespeichert und aus dem Cache bereitgestellt werden.

Kann der lokale DNS-Server in einer rekursiven Architektur immer noch eine Abkürzung nehmen?

Wenn der lokale DNS kein Nur-Weiterleitungs-DNS ist, dann ja, und das passiert ständig. Wenn Sie erst einmal wissen, wie Sie eine Antwort für eine bestimmte Domain erhalten, müssen Sie nicht noch einmal den ganzen Weg zur Wurzel gehen, solange die Informationen im Cache sind. Daten können aus dem Cache entfernt werden, weil die ursprüngliche TTL abgelaufen ist oder weil die lokale Konfiguration eine Begrenzung der Cachegröße oder TTL festgelegt hat. bindDas wäre zum Beispiel max-cache-ttl.

Antwort2

Es gibt jetzt ein kanonisches Dokument zur DNS-Terminologie:

RFC 8499, auch bekannt als BCP 219

Hier sind die relevanten Definitionen, leicht gekürzt und neu geordnet:

  • „Rekursiver Resolver: Ein Resolver, der im rekursiven Modus agiert. [..] [RFC4697] versuchte zwischen einem rekursiven Resolver und einem iterativen Resolver zu unterscheiden.“

  • „Rekursiver Modus: Ein Auflösungsmodus eines Servers, der DNS-Abfragen empfängt und diese entweder aus einem lokalen Cache beantwortet oder Abfragen an andere Server sendet, um die endgültigen Antworten auf die ursprünglichen Abfragen zu erhalten.“

  • "Iterative Auflösung: Einem Nameserver kann eine Abfrage vorgelegt werden, die nur von einem anderen Server beantwortet werden kann. Die beiden allgemeinen Ansätze zur Lösung dieses Problems sind "rekursiv", wobei der erste Server die Abfrage im Auftrag des Clients bei einem anderen Server verfolgt, und "iterativ", wobei der Server den Client an einen anderen Server verweist und den Client die Abfrage dort verfolgen lässt. (Siehe Abschnitt 2.3 von [RFC1034].)

    In iterative resolution, the client repeatedly makes non-recursive
    queries and follows referrals and/or aliases.  The iterative
    resolution algorithm is described in Section 5.3.3 of [RFC1034]."
    

Im oben zitierten RFC 4697 heißt es dazu:

Dieses Memo befasst sich hauptsächlich mit dem Verhalten iterativer
Resolver, die normalerweise als Teil eines rekursiven Nameservers zu finden sind
. In diesem Memo wird der präzisere Begriff „iterativer Resolver“ verwendet,
da der Fokus normalerweise auf dieser Komponente liegt. In Fällen, in denen
die Nameserverrolle dieser Entität erwähnt werden muss, wird in diesem Memo
der Begriff „rekursiver Nameserver“ verwendet. Als Beispiel für den
Unterschied empfängt die Nameserverkomponente eines rekursiven Nameservers
DNS-Abfragen und die iterative Resolverkomponente sendet
Abfragen.

RFC 1034 erscheint mir diesbezüglich noch unklarer, genauer gesagt, noch veralteter:

  • In jedem System mit einer verteilten Datenbank kann einem bestimmten Nameserver eine Abfrage vorgelegt werden, die nur von einem anderen Server beantwortet werden kann. Die beiden allgemeinen Ansätze zur Lösung dieses Problems sind „rekursiv“, wobei der erste Server die Abfrage für den Client bei einem anderen Server verfolgt, und „iterativ“, wobei der Server den Client an einen anderen Server verweist und den Client die Abfrage verfolgen lässt. Beide Ansätze haben Vor- und Nachteile, aber der iterative Ansatz wird für den Datagramm-Zugriffsstil bevorzugt. Das Domänensystem erfordert die Implementierung des iterativen Ansatzes, lässt aber den rekursiven Ansatz als Option zu.

Zurück zu Ihrer Frage:

Was ist aus Caching-Sicht der Unterschied zwischen iterativem und rekursivem DNS?

Meines Wissens nach gibt es keine Unterschiede zur tatsächlichen Funktionsweise (die nicht genau mit den obigen Definitionen übereinstimmt), da ein rekursiver Nameserver iterative Abfragen durchführt, um alle vom Client angeforderten Namen aufzulösen.

und für

Kann der lokale DNS-Server in einer rekursiven Architektur immer noch eine Abkürzung nehmen?

Grundsätzlich kann alles, was nicht autoritativ ist, einen Cache haben, und solange es die TTLs einhält, die es aus früheren empfangenen Antworten erhalten hat, arbeitet es innerhalb der Grenzen des Protokolls.

Beachten Sie, dass es in Zukunft noch komplizierter werden kann: Einige Vorschläge ANAMEund bestimmte Implementierungen erfordern möglicherweise, dass ein autoritativer Nameserver zum Zeitpunkt einer bestimmten Abfrage ebenfalls rekursiv/iterativ wird, um das Ziel auflösen zu können.

verwandte Informationen