quarta-feira, 30 de outubro de 2013

Benchmark: Raspberry Pi como cache dns

Esta é mais uma série de muitas que vão envolver testes de desempenho e agora é a vez do cache de dns.

Já faz um tempo que estou querendo usar um Raspberry Pi como cache de dns na rede local. Mas afinal quantas requisições por segundo vindas do cache ele consegue entregar? Irei usar 3 softwares de dns, o vovô bind, dnsmasq e o relativamente "novo" unbound. Vamos nos focar no desempenho do cache em sí, mas inevitavelmente existem diversas variáveis que influenciam os testes, como alguns domínios não existentes sendo requisitados novamente, tempo de resposta variável do servidor como forward ( do ISP ), recriar um cenário real é relativamente difícil e a cada execução do mesmo teste os resultados encontram variações. Iremos produzir testes básicos para ter ao menos uma noção de como a banda toca.

Os servidores foram configurados com forward para o dns do meu ISP, os testes iniciais foram feitos com 5000 requisições usando repetidamente 100 domínios variados A,AAAA,MX,PTR, antes de cada teste foi feito o carregamento do cache.

O software utilizado para o benchmark é o dnsperf.

As versões dos respectivos softwares são as seguintes:

BIND 9.8.4
Dnsmasq 2.62
Unbound 1.4.17
Dnsperf 2.0

O Raspberry Pi é a versão B de 256MB rodando Raspbian.

Observação: o máximo de uso do Dnsmasq na maioria dos testes não passou de 30% mesmo após alguns tweaks.

Vamos aos resultados, clique para ampliar:


Requisições por segundo
Requisições por segundo



Latência Média


Latência média







Percebemos uma clara vantagem do Unbound, tanto no ótimo desempenho na entrega das requisições como no tempo médio em que entregava cada uma delas.

Agora testes com overclock, com o Raspberry Pi rodando a 800mhz:

Requisições por segundo 800mhz
Requisições por segundo, 800mhz

 
Latência Média 800mhz
Latência Média, 800mhz


Em relação a frequência stock, BIND e Dnsmasq não obtiveram um grande aumento no desempenho, mas o Unbound conseguiu entregar 202 requisições a mais do que em stock.

Teste prolongado com 20000 requisições, também com overclock:

Latência Média 800mhz
Requisições por segundo, 800mhz


Requisições por segundo 800mhz
Latência Média, 800mhz

Aqui o Dnsmasq permanece com resultados similares, BIND obteve 65 requisições a mais com latência média de 0,02 a menos e o Unbound com 232 a mais e a latência média de 0,009 a menos que o anterior.

Apesar do teste básico(mas que tomou um bom tempo) podemos concluir que se sua rede é pequena e não
necessita de tantas requisições, o Raspberry Pi pode sim segurar a barra. Vimos também que o Unbound tem um excelente desempenho e que inclusive aumentou consideravelmente ao fazer overclock no Raspberry Pi.

6 comentários:

  1. Dica: Use o dnscrypt http://networkfilter.blogspot.com.br/2012/12/dnscrypt-on-raspberry-protect-your.html

    ResponderExcluir
  2. Ola czar, se possível acrescente ao post as configurações que você usou em cada ambiente.

    ResponderExcluir
    Respostas
    1. Opa, acabei esquecendo desse(comentário), então, eu não postei as configurações pois elas foram praticamente padrões, unica coisa que me recordo de ter modificado para o teste ser justo foi o tamanho do cache no Dnsmasq.

      Excluir
  3. Nos últimos 2 gráficos, imagem x legenda, estão invertidas ...
    Nice!! =]

    ResponderExcluir