Coder Social home page Coder Social logo

alberto-00 / benchmarking-dns-server Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mtolkien/benchmarking-dns-server

0.0 1.0 0.0 337.77 MB

In this project, an attempt was made to analyze this overhead by benchmarking the protocols: DNS-over-UDP, DNS-over-TCP, DNS-over-TLS, DNS-over-HTTPS, and DNSSEC, each of which was then tested on the three servers: BIND9, PowerDNS, and Technitium.

Shell 11.06% Python 88.94%
benchmarking bind9 dns dns-over-https dns-server dnssec technitium powerdn

benchmarking-dns-server's Introduction

Tabella dei contenuti

Introduzione

DNS è il protocollo che permette la risoluzione di domini in indirizzi IP, di conseguenza risulta fondamentale nella navigazione web. Inoltre permette la risoluzione di indirizzi mail, liste anti-spam fino a tecniche di bilanciamento del carico. Purtoppo però la sua versione originale basata su UDP o TCP non offre nessuna garanzia di sicurezza, quindi sono nate alternative che garantiscono la confidenzialità come DNS-over-TLS e DNS-over-HTTPS e poi DNSSEC che garantisce autenticità e integrità. Tali protocolli siccome si basano su tecniche crittografiche e protocolli più ad alto livello implicano inevitabilmente un maggiore overhead protocollare, che incide sulla latenza di risoluzione e sulle capacità dei server. In questo progetto si è cercato di analizzare tale overhead effettuando il benchmarking dei protocolli: DNS-over-UDP, DNS-over-TCP, DNS-over-TLS, DNS-over-HTTPS e DNSSEC, ognuno dei quali è stato poi testato sui tre server: BIND9, PowerDNS e Technitium. Le metriche prese in considerazione sono: distribuzione dei tempi di risposte delle query effettuare, latenza media, latenza massima e minima, deviazione standard, andamento delle Cumulative Distribution Functions, differenze di latenze tra i vari protocolli e i vari server e numero di query al secondo risolte dal server.

Requisiti

Installazione e configurazione dei server

Al fine di garantire la replicabilità degli esperimenti sono presenti le macchine virtuali da installare in VirtualBox al seguente link: Google Drive con le Virtual Machine. In ogni VM è presente il server DNS con la configurazione di un protocollo, il file di zona, i cinque dataset utilizzati per il benchmarking e i tool per eseguire il benchmarking.

In alternativa è possibile seguire i seguenti step:

Esecuzione del benchmarking

  • Per i protocolli DNS-over-UDP, DNS-over-TCP e DNS-over-TLS bisogna installare dnsperf versione 2.13.1 ed eseguire il comando dnsperf -O verbose-interval-stats -O latency-histogram -m <protocollo> -s <ipServer> -d <datasetBenchmark> -v. Al posto di <protocollo> è possibile specificare udp, tcp, dot (per DNS-over-TLS), al posto di <ipServer> bisogna indicare l'IP del server, al posto di <datasetBenchmark> bisogna specificare il dataset di benchmarking.
  • Per i protocolli DNS-over-HTTPS e DNSSEC bisogna usare scriptKdig.sh, quindi si rimanda a /scripts/BenchmarkingDNSSEC_HTTPS

Benchmarking eseguiti

Un protocollo tutti i server

In questo lavoro è stato utilizzato dnsperf per il benchmarking di:

scriptKdig.sh è stato usato per:

Successivamente, i file ottenuti da dnsperf e scriptKdig.sh sono stati dati in input agli script descritti nella cartella scripts per generare anche il grafico delle latenze, le CDF e il grafico a barre per latenza massima, minima, media e deviazione standard. Questi grafici si trovano in:

Un server tutti i protocolli

In questo caso si è ritenuto utile calcolare solo le CDF, quindi a partire dai file ottenuti da dnsperf e scriptKdig.sh si è eseguito lo script /scripts/CumulativeDistributionFunctions /UnServerTuttiProtocolli/plotCDF2.py ottenendo i grafici presenti nella cartella /Results/One server with every protocol /Cumulative Distribution Function (CDF)/

Risultati

Per l'analisi e la descrizione dei risultati ottenuti si rimanda al paper

Autori & Contatti

Name Description

Alberto Montefusco


Developer - Alberto-00

Email - [email protected]

LinkedIn - Alberto Montefusco

My WebSite - alberto-00.github.io


Alessandro Macaro


Developer - mtolkien

Email - [email protected]

LinkedIn - Alessandro Macaro


Nicolapio Gagliarde


Developer - GagliardeNicolapio

Email - [email protected]

LinkedIn - Nicolapio Gagliarde


benchmarking-dns-server's People

Contributors

gagliardenicolapio avatar mtolkien avatar alberto-00 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.