Giter Site home page Giter Site logo

show00 / dnsturbo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from finaldie/dnsturbo

0.0 1.0 0.0 72 KB

A middleware between browser and DNS client/server, to speed up the Internet according to the network speed

License: MIT License

C++ 47.26% Python 33.14% Makefile 12.96% Shell 4.16% Protocol Buffer 2.48%

dnsturbo's Introduction

Build Status

DNSTurbo

A middleware between browser and local DNS client/server, to speed up the Internet according to the network speed. It optimizes the A/AAAA records by latency detection mechanism, offer the best records the user wanted.

Why the GEO-based DNS is not enough? As we know, there are a lot of GEO-based DNS services, like openDNS, google DNS, etc. They can calculate the distance of the user location to the target host, to return the nearest records, but unfortunately it's hard to say the returned records are always the best ones, since the real user experience depends on the user local network quality, for the different time, different ISP and different website, the results are totally different.

So, it's better to have another program to detect the quality of the DNS records from user's point of view, then filter the bad ones out, and keep the good ones as much as possible. DNSTurbo was born under this situation, plug it into the DNS pipeline, always keep the records as good as possible for the users.

DNSTurbo do the Latency Detection, and does not do the Bandwidth Detection, because it's highly depend on the Congestion Control(For TCP connections), different congestion module would give the different results, and the Bandwidth Detection is not only very heavy especially for the mobile device in LTE network, but also would compete with Browser to make the network worse than ever. And another hand, all the records returned should have the very similar network quality, so to maximize the Bandwidth, we should rely on the target program or TCP Congestion Control (Like Linux-4.9, the new CC module would try the best to use the Bandwidth by the new algo)

Trailer

DNSTurbo Logo

Architecture

DNSTurbo-arch

Environment

  • Linux
  • 32/64 bit compatible
  • x86/ARM compatible

Features

  • Builtin
  • Optimized A Record
  • Optimized AAAA Record
  • Http Latency Detection
  • Coming Soon:
  • ICMP Latency Detection

Install Dependencies

# Install System Dependencies
sudo apt-get install autoconf valgrind expect libyaml-dev python-dev python-pip libprotobuf-dev protobuf-compiler libprotobuf-c0-dev protobuf-c-compiler
sudo pip install PyYAML protobuf pympler WebOb dnslib

# Fork/Clone and Build Project Dependencies (For example: project folder is 'DNSTurbo')
cd DNSTurbo
git submodule update --init --recursive
make dep
sudo make install-dep

Build

skull build && skull deploy

Start

sudo skull start -D

Setup

Now, the DNSTurbo is all set, let's chain it in DNS pipe. For example, the DNSTurbo is set up in 192.168.31.221

  • For Mac: Open System Preferences -> Network -> Advanced -> DNS, then add 192.168.31.221 in the left window.

DNSTurbo-mac-setting

  • For Windows7/10: Open Network Apaptor -> Property -> TCP/IPv4, then select Manual DNS option, and add 192.168.31.221 there.

After that, enjoy the new experience :)

dnsturbo's People

Contributors

finaldie 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.