Passa al contenuto principale

Appendice A. Riepilogo dei Vantaggi e degli Svantaggi dell'Utilizzo di TCP per DNS

L'handshake TCP impedisce generalmente lo spoofing degli indirizzi e, quindi, gli attacchi di riflessione/amplificazione che affliggono UDP.

La frammentazione IP è un problema minore per TCP rispetto a UDP. Gli stack TCP generalmente implementano Path MTU Discovery in modo da poter evitare la frammentazione IP dei segmenti TCP. UDP, d'altra parte, non fornisce il riassemblaggio; ciò significa che i datagrammi che superano la dimensione dell'MTU del percorso devono subire la frammentazione [RFC5405]. È noto che le middlebox bloccano i frammenti IP, portando a timeout e costringendo le implementazioni dei client a "cacciare" i valori delle dimensioni di risposta EDNS0 supportati dal percorso di rete. Inoltre, la frammentazione può portare all'avvelenamento della cache [fragmentation-considered-poisonous].

La configurazione TCP costa un RTT aggiuntivo rispetto alle query UDP. I costi di configurazione possono essere ammortizzati riutilizzando le connessioni, eseguendo il pipelining delle query e abilitando TCP Fast Open.

TCP impone requisiti aggiuntivi di mantenimento dello stato su client e server. L'uso di TCP Fast Open riduce il costo della chiusura e della riapertura delle connessioni TCP.

Le connessioni TCP di lunga durata ai server anycast potrebbero essere interrotte a causa di modifiche al routing. I client che utilizzano TCP per DNS devono essere sempre pronti a ristabilire le connessioni o altrimenti riprovare le query in sospeso. Potrebbe anche essere possibile per Multipath TCP [RFC6824] consentire a un server di trasferire una connessione dall'indirizzo anycast a un indirizzo unicast.

Ci sono molte "middlebox" in uso oggi che interferiscono con TCP sulla porta 53 [RFC5625]. Questo documento non propone alcuna soluzione, se non quella di rendere assolutamente chiaro che TCP è un trasporto valido per il DNS e che il supporto per esso è un requisito per tutte le implementazioni.

Una discussione più approfondita sul DNS orientato alla connessione può essere trovata altrove [Connection-Oriented-DNS].