Zum Hauptinhalt springen

Anhang A. Zusammenfassung der Vor- und Nachteile der Verwendung von TCP für DNS

Der TCP-Handshake verhindert im Allgemeinen Adress-Spoofing und damit die Reflexions-/Verstärkungsangriffe, die UDP plagen.

IP-Fragmentierung ist für TCP weniger problematisch als für UDP. TCP-Stacks implementieren im Allgemeinen Path MTU Discovery, sodass sie IP-Fragmentierung von TCP-Segmenten vermeiden können. UDP hingegen bietet keine Wiederzusammensetzung; dies bedeutet, dass Datagramme, die die Größe der Pfad-MTU überschreiten, eine Fragmentierung erfahren müssen [RFC5405]. Es ist bekannt, dass Middleboxen IP-Fragmente blockieren, was zu Timeouts führt und Client-Implementierungen zwingt, nach EDNS0-Antwortgrößenwerten zu "jagen", die vom Netzwerkpfad unterstützt werden. Darüber hinaus kann Fragmentierung zu Cache Poisoning führen [fragmentation-considered-poisonous].

TCP-Setup kostet einen zusätzlichen RTT im Vergleich zu UDP-Abfragen. Setup-Kosten können durch Wiederverwendung von Verbindungen, Pipelining von Abfragen und Aktivierung von TCP Fast Open amortisiert werden.

TCP stellt zusätzliche Anforderungen an die Statushaltung von Clients und Servern. Die Verwendung von TCP Fast Open reduziert die Kosten für das Schließen und erneute Öffnen von TCP-Verbindungen.

Langlebige TCP-Verbindungen zu Anycast-Servern können aufgrund von Routing-Änderungen unterbrochen werden. Clients, die TCP für DNS verwenden, müssen immer darauf vorbereitet sein, Verbindungen wiederherzustellen oder ausstehende Abfragen anderweitig erneut zu versuchen. Es könnte auch möglich sein, dass Multipath TCP [RFC6824] es einem Server ermöglicht, eine Verbindung von der Anycast-Adresse an eine Unicast-Adresse zu übergeben.

Es gibt heute viele "Middleboxen", die TCP über Port 53 stören [RFC5625]. Dieses Dokument schlägt keine Lösungen vor, außer absolut klarzustellen, dass TCP ein gültiger Transport für DNS ist und die Unterstützung dafür eine Anforderung für alle Implementierungen ist.

Eine eingehendere Diskussion über verbindungsorientiertes DNS finden Sie an anderer Stelle [Connection-Oriented-DNS].