#dns #redes #cdn #internet #games

dns afeta a velocidade da internet? sim e nao

esses dias eu discuti com um cara num forum sobre dns, e a conversa é perfeita pra falar de um dos mitos mais chatos de rede. ele soltou a frase classica:

"dns nao afeta download e nem velocidade da internet. dns so afeta a resolucao de ip e nada mais."

Print da discussao no forum: GuiiTS afirma que dns so afeta a resolucao de ip e nada mais, Gruposz responde sobre geodns, e GuiiTS replica dizendo que o que pode mudar é qual ip o dns retorna

spoiler, o Gruposz ali sou eu. (¬‿¬)

e assim, metade do q ele disse ta certa. a outra metade ignora um detalhe. o dns é basicamente uma lista telefonica, ele traduz nomes tipo google.com pra endereco ip. ele nao participa da transferencia dos dados e nao limita sua banda. ate ai tudo bem.

o problema é a parte do "e nada mais". bora destrinchar.

o q é verdade

primeiro vou dar o braço a torcer, pq tem coisa q é verdade mesmo:

  • dns nao muda sua banda. um link de 500 mega continua sendo 500 mega com qualquer dns.
  • depois q a conexao ta estabelecida, o dns sai de cena. um download em andamento tem exatamente o mesmo throughput independente do dns q vc usa.
  • dns nao afeta ping nem rota em jogo. seus pacotes nunca passam pelo servidor dns. quem decide o caminho sao os roteadores da sua operadora e dos backbones.

onde o "e nada mais" quebra

latencia de resolucao afeta a velocidade percebida

todo site novo exige uma consulta dns antes de qualquer transferencia. um resolvedor lento, coisa de 300ms ou mais por consulta, deixa a navegacao toda travada, principalmente em pagina q carrega recurso de varios dominios diferentes.

nao muda o download em si, mas muda quanto tempo demora pra ele começar. e na percepçao de quem ta usando, isso é velocidade.

cdn e geodns, aqui o dns afeta o download de verdade

servicos tipo netflix, steam, youtube e cloudflare usam geodns. o dns autoritativo da cdn olha de onde a consulta veio e devolve o ip de um servidor "proximo".

o detalhe crucial é q quem faz a consulta é o seu resolvedor dns, nao vc. entao se o resolvedor ta mal posicionado, ou a cdn geolocaliza ele errado, vc pode ser jogada num edge distante ou congestionado em vez do mais pertinho de vc.

resultado: download realmente mais lento e buffering no streaming. nao é teoria, é observavel na pratica.

o detalhe do edns client subnet

pra corrigir esse problema do "dns longe", alguns resolvedores anexam um pedaço do seu ip (a sub-rede) na consulta. assim a cdn consegue geolocalizar vc, e nao o resolvedor. isso é o ecs, edns client subnet.

  • google dns (8.8.8.8): envia ecs.
  • cloudflare (1.1.1.1): nao envia ecs, por decisao de privacidade. o q pode piorar o mapeamento em certas cdns, apesar de ser o "mais rapido" nos benchmarks.
  • dns da operadora: nem precisa de ecs. a consulta ja sai de um ip da rede dela, entao a cdn sabe exatamente onde vc ta.
TRADE-OFF POUCO MENCIONADO

o dns mais rapido nos benchmarks pode ser o pior pra te posicionar nas cdns. rapidez pra responder consulta e rapidez pra baixar conteudo sao coisas diferentes.

nem tudo é geodns, o caso do anycast

google e youtube usam muito anycast, onde o mesmo ip é anunciado de varios lugares e quem decide o caminho é o roteamento bgp, nao o dns. nesses servicos, trocar de dns muda pouco ou nada.

netflix e o open connect, o caso pro-operadora

os appliances do netflix open connect ficam dentro da rede das operadoras. quando a consulta sai do dns da operadora, a netflix sabe exatamente em qual rede vc ta e te manda pro cache local.

por isso o conselho "usa o dns da operadora pra streaming" tem base tecnica de verdade. nao é lenda de forum.

dns e ping em jogo é placebo

esses apps de "dns gamer pra baixar ping" sao placebo puro. o fluxo é esse aqui:

seu pc ──── pergunta ────> dns: "qual o ip de jogo.com?"
seu pc <──── "é 200.x.x.x" ──── dns
seu pc ═══════ pacotes do jogo ═══════> 200.x.x.x
              (o dns nao ta aqui)

o ping é determinado pela rota entre vc e o ip do servidor. roteadores no caminho, backbone, congestao, peering. o dns nao tem controle sobre nada disso.

quer testar? pega o ip do servidor, roda ping, troca o dns, roda ping de novo. mesmo numero. (´-ι_-`)

a unica excecao indireta seria jogo q seleciona regiao via geodns te mandando pra servidor de outra regiao por causa de um dns ruim. na pratica, quase todo jogo moderno escolhe servidor por matchmaking proprio.

pq vpn muda rota e dns nao

a diferença é de posicao na conexao. o dns responde uma pergunta e sai de cena, nunca carrega seus pacotes. a vpn se coloca no meio do caminho, e todo pacote passa a fazer seu pc → vpn → destino, substituindo a rota original por duas novas.

e pq a vpn pode baixar o ping entao? pq a operadora nem sempre escolhe o melhor caminho, ela escolhe o mais barato por acordos de peering. as vezes o caminho direto da voltas absurdas, tipo sao paulo, miami, europa e volta. a vpn, com pontos de presença e links proprios, pode ter um caminho combinado mais curto. as vezes piora tambem, é loteria.

a analogia q eu gosto:

  • dns é perguntar o endereco de alguem. saber o endereco certo nao muda o transito ate la.
  • vpn é pegar uma rodovia diferente. vc literalmente dirige por outro caminho.
RESUMO DA OPERA

so quem carrega seus pacotes pode mudar a rota deles. o dns nunca carrega pacote nenhum.

caso real, crunchyroll

exemplo classico de geodns na pratica. a crunchyroll tinha edges frequentemente congestionados no brasil em horario de pico, tipo quando saia episodio popular.

o fluxo era assim. vc pedia o video, o dns resolvia o dominio apontando pra um edge especifico escolhido pela localizacao do resolvedor, o edge congestionado fazia o video engasgar, ai vc trocava o dns, a consulta saia de outro lugar, a cdn te mandava pra outro edge e o video ficava liso.

nao era o dns sendo "rapido". era o destino q ele entregava. hoje as cdns grandes usam mais anycast e esse efeito diminuiu, mas pra servico menor ou cdn mal dimensionada ele ainda existe.

o veredito da briga de forum

voltando na discussao. o meu comentario foi q netflix, steam e youtube usam geodns, entao um dns mal posicionado pode te jogar num servidor longe ou congestionado e o download fica mais lento.

ai veio a replica dele: "geodns usa a localizacao da consulta pra decidir qual ip retornar, mas isso nao significa q o dns esteja te jogando pra uma posicao melhor... o q pode mudar é qual ip ele te retorna. trocar o dns nao é equivalente a mudar sua localizacao, se fosse ngm precisaria de vpn."

olha, eu ri. ( ´ ω ` ) a replica concorda comigo sem perceber. "o q pode mudar é qual ip ele te retorna" é exatamente o mecanismo q prova o meu ponto. ip diferente significa servidor diferente, q significa velocidade potencialmente diferente.

e a comparaçao com vpn é um espantalho. eu nunca afirmei q dns muda a localizacao de ngm ou substitui vpn. vpn muda a rota do trafego, dns muda o destino. sao coisas diferentes e ngm na discussao disse q eram iguais.

afirmaçaoveredito
"dns so afeta resolucao de ip e nada mais"tecnicamente certa sobre o protocolo, errada como conclusao. a resolucao define o servidor, e o servidor define a velocidade
"geodns pode te jogar num servidor longe e o download fica mais lento"correta. documentado e observavel na pratica
"trocar dns nao muda sua localizacao nem substitui vpn"verdade, mas irrelevante. ngm afirmou o contrario

tl;dr

perguntaresposta
dns aumenta minha banda?nao. nunca.
dns afeta o download em andamento?nao. depois de conectado ele sai de cena.
dns pode me mandar pra um servidor pior?sim, via geodns. e isso deixa download e streaming mais lentos de verdade.
dns baixa ping em jogo?nao. placebo.
dns melhora rota?nao. quem muda rota é vpn.
qual dns usar?pra streaming o da operadora costuma mapear melhor. pra navegacao geral o 8.8.8.8, com ecs, tende a geolocalizar melhor q o 1.1.1.1, q nao envia ecs.
download lento na steam?troca a regiao de download e verifica o disco. dns é o ultimo suspeito.

resumindo numa frase: dns é lista telefonica, nao estrada. ele nao muda o transito, mas pode te dar o endereco de um restaurante do outro lado da cidade quando tinha um igual na sua rua. (⌐■_■)