Adguardhome: Feature request: test TCP connection speed and return the fastest IP

Created on 12 Apr 2019  ·  26Comments  ·  Source: AdguardTeam/AdGuardHome

When upstream return a DNS resolved answer,could AdGuard try to connect all the ip and give the client the IP fastest?
This is because in China the “clean” always means slow.

High feature request

Most helpful comment

Well, let's see how many upvotes does this feature request collect.

It is doable, but it is not easy of course.

All 26 comments

You mean this?

You mean this?

This means the fastest result from DNS server.Sometimes,the DNS server will return serveral IP,if the AdGuard could try to connect these IP and give the fastest IP to client,the client could get the better experience

@ameshkov Any suggestion?

@Zxilly I got the idea, thank you!

Marked as a feature request, let's see how many people vote for it.

Meanwhile, do you have any examples of the software that actually does it?

@ameshkov
https://github.com/pymumu/smartdns
https://github.com/zwhFocus/Installtion/tree/master/DNS-choose/dnschooser
But both are not open-source and the document is in Chinese(Maybe because only China has such terrible network environment)

What I am interested in is how exactly do they check if IP is available.

Do they send ICMP (ping) the address, or do they actually try to connect to ports 80 or 443?

@ameshkov
According to the article of the second project,it choose to make TCP connect to 80 and 443 because ICMP sometimes is not not allowed by some server.
This means it can not make effort on those applications whick are not using standard http port,but it truly improve the experience of HTTP.

  1. Test depends on protocol (HTTP/HTTPS/TCP/UDP/etc.);
  2. ICMP may be measured, not sure about others protocols;
  3. Idea sounds good, looks like some simplified PfR (Performance Routing);
    but:
  4. Realization of the check may be difficult enough;
  5. Fastest response doesn't guarantee fastest service (back-end may be overloaded, for example);
  6. Anyway, it must be a user's choice to turn this feature on.

Well, let's see how many upvotes does this feature request collect.

It is doable, but it is not easy of course.

The Project "SmartDNS" 's document in English
https://github.com/pymumu/smartdns/blob/master/ReadMe_en.md

Sometimes, I use parallel queries, it return an IP address that have no access to it . Cause we use Chinese public DNS... Maybe you could according the GEOIP to judge which DNS Server we could use , Or give us a choice . thx

I also requested to increase the DNS resolution to return the fastest ip to the user, otherwise this will cause the page to open very slowly.

there are some downloads use muti cdn to speedup download,block slower ip may have bad influence,if you want to use,maybe you can set smartdns as the only upstream of AdGuardHome

Well, let's see how many upvotes does this feature request collect.

It is doable, but it is not easy of course.

SmartDNS is finally open source, can you refer to its source code? I think this will be helpful for this project.

https://github.com/pymumu/smartdns

@QiuSimons thank you, we'll take a look!

Is smartdns functionality going to be release in 0.102?
https://github.com/pymumu/smartdns/blob/master/ReadMe_en.md

Yes

Yes

This is a huge improvement, thanks a lot.
Please try to expose as much configuration settings as possible if not all through the interface, if this is too much put it somewhere more hidden under advanced settings but still available in the UI.
https://github.com/pymumu/smartdns/blob/master/ReadMe_en.md#configuration-parameter
Probably some of them doesn't make sense or are available somewhere else.

Having as well advanced settings for the cache avaialable in the interface would be nice.
Similar to what you can see in the right side of this screenshot.
https://forum.netgate.com/assets/uploads/files/1567263869587-settings.png

Any benefit in using this outside of China?

@sassansh regardless of your location, it can improve connection quality and make it more reliable as it will make sure that the IP addresses are really reachable from your location. Just don't use it with too many resolvers, 2-3 max.

@ameshkov cool! can it be used with just 1 resolver?

@sassansh sure, but in this case, it will simply filter out unreachable/slow IPs from domains with multiple IPs (different CDNs and such).

@ameshkov so is it best to use 2-3 resolvers when using this feature?

I set it up as such:
image
We'll see how it goes...

Scratching my head for a while before realizing the options "Fastest IP address" and "Parallel requests" are mutual exclusive :-(

Why not changing them to radio?

Yeah, we'll make it clear in the next update:)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

TXC picture TXC  ·  3Comments

ameshkov picture ameshkov  ·  3Comments

Iconology picture Iconology  ·  3Comments

alexpovel picture alexpovel  ·  3Comments

hl2guide picture hl2guide  ·  3Comments