Aller au contenu principal

Annexe A. Résumé des Avantages et Inconvénients de l'Utilisation de TCP pour le DNS

La poignée de main TCP empêche généralement l'usurpation d'adresse et, par conséquent, les attaques par réflexion/amplification qui affligent UDP.

La fragmentation IP est moins un problème pour TCP que pour UDP. Les piles TCP implémentent généralement la découverte du MTU du chemin afin de pouvoir éviter la fragmentation IP des segments TCP. UDP, en revanche, ne fournit pas de réassemblage ; cela signifie que les datagrammes qui dépassent la taille du MTU du chemin doivent subir une fragmentation [RFC5405]. Les middleboxes sont connus pour bloquer les fragments IP, entraînant des délais d'attente et forçant les implémentations client à "chasser" les valeurs de taille de réponse EDNS0 prises en charge par le chemin réseau. De plus, la fragmentation peut conduire à un empoisonnement du cache [fragmentation-considered-poisonous].

L'établissement TCP coûte un RTT supplémentaire par rapport aux requêtes UDP. Les coûts d'établissement peuvent être amortis en réutilisant les connexions, en pipelinant les requêtes et en activant TCP Fast Open.

TCP impose des exigences supplémentaires de maintien de l'état aux clients et aux serveurs. L'utilisation de TCP Fast Open réduit le coût de la fermeture et de la réouverture des connexions TCP.

Les connexions TCP à longue durée de vie vers des serveurs anycast peuvent être perturbées en raison de changements de routage. Les clients utilisant TCP pour le DNS doivent toujours être prêts à rétablir les connexions ou à réessayer les requêtes en attente. Il pourrait également être possible pour Multipath TCP [RFC6824] de permettre à un serveur de transférer une connexion de l'adresse anycast vers une adresse unicast.

Il existe de nombreux "middleboxes" utilisés aujourd'hui qui interfèrent avec TCP sur le port 53 [RFC5625]. Ce document ne propose aucune solution, autre que de rendre absolument clair que TCP est un transport valide pour le DNS et que sa prise en charge est une exigence pour toutes les implémentations.

Une discussion plus approfondie sur le DNS orienté connexion peut être trouvée ailleurs [Connection-Oriented-DNS].