Por que o DNS através do UDP tem um limite de 512 bytes?

12

Eu tenho procurado uma resposta para essa pergunta (a do título) e a melhor coisa que eu encontrei foi:

In DNS Protocol design, UDP transport Block size (payload size) has been limited to 512-Bytes to optimize performance whilst generating minimal network traffic.

minha pergunta é: como exatamente isso melhora o desempenho e existem outras razões para essa limitação ao usar o UDP?

    
por Mhd.Tahawi 09.04.2014 / 00:52

4 respostas

16

A carga útil de 512 bytes garante que os pacotes DNS possam ser remontados se fragmentados em trânsito. Além disso, em geral, há menos chances de pacotes menores serem descartados aleatoriamente.

O padrão IPv4 especifica que cada host deve ser capaz de remontar pacotes de 576 bytes ou menos. Com um cabeçalho IPv4 (20 bytes, embora possa chegar a 60 bytes com opções) e um cabeçalho UDP de 8 bytes, um pacote DNS com uma carga útil de 512 bytes será menor que 576 bytes.

Como o @RyanRies diz: O DNS pode usar o TCP para cargas maiores e para transferências de zona e DNSSEC. Há muito mais latência quando o TCP entra em ação porque, ao contrário do UDP, há um aperto de mão entre o cliente e o servidor antes que qualquer dado comece a fluir.

    
por 09.04.2014 / 01:04
12

O DNS moderno não está mais limitado a uma carga útil de 512 bytes para o UDP.

Com EDNS0 em uso, um tamanho de carga útil maior pode ser especificado, o que também é comum em clientes com reconhecimento de DNSSEC .

O suporte para maiores payloads sobre o UDP tem sido uma faca de dois gumes, no entanto, é em parte o motivo pelo qual usar servidores de nomes para se tornaram mais populares, já que você pode conseguir uma amplificação melhor se o invasor usar uma consulta que obtenha uma grande resposta.

Veja rfc2671 os detalhes essenciais do EDNS0

    
por 09.04.2014 / 20:12
1

DNS operations for example, queries, and zone maintenance operations by default use port 53. For performance reasons, queries use the UDP protocol with a block-size limit of 512 bytes. TCP can be optionally negotiated on a transaction-by-transaction basis for query operations, but due to the performance overhead incurred with TCP, this is essentially a theoretical capability. Historically, exceeding the 512-byte response size limit was typically avoided at all costs, and indeed the limit of 13 IPv4 root-servers was the maximum that could be returned in a single 512-byte UDP transaction.

Ron Aitchison - Pro DNS e BIND 10 - 2011

    
por 11.04.2018 / 05:31
-2

É uma coisa QOS.

Como o UDP é stateless, o tratamento de erros dos pacotes não é possível.

Assim, ao manter os pacotes em um tamanho máximo, há uma mudança maior que eles atingirão no destino, reduzindo o impacto da ausência de tratamento de erros.

    
por 09.04.2014 / 01:05