google / namebench

namebench
Apache License 2.0
890 stars 152 forks source link

Add CDN ping time result to NameBench HTML report for better understanding the quality of the DNS server #2

Open rogers0 opened 11 years ago

rogers0 commented 11 years ago

Dear Thomas,

You "NameBench" is really good! Thank you for your effort!

However, I find that the quality of a DNS server doesn't only rely on the speed of result return, but also the result itself. For example a DNS respond each request in less than 10ms, but it always return the resolving result in US, so APAC/EU user will still find slow to access the internet. This is particular noticeable when accessing CDN server, such as akamai or cloudfront.

So I made this changes to your "NameBench" script. Currently it only shows the result of Min/Avg/Max result for each nameserver, and it's not reflected in the final sorted result, because I think the DNS response time and ping time to the CDN host cannot simply be added and compared.

If you like my idea, please just pull. And feel free to contact me if you have any comment.

Thank you!

Cheers, Roger

rogers0 commented 11 years ago

Dear sww-goog,

Thank you so much for reviewing my patch!

For the import order and typo, I already fixed/committed in my branch. For the space indention, I think it's okay because it's a "third-party" library and not necessary to be the same as main branch. BTW. This "third-party" lib is maintained under another of my repo: https://github.com/rogeryan0/shell_ping/

If you have further comment, just let me know. Thank you!

Cheers, Roger

tstromberg commented 10 years ago

Hey Roger.

Your absolutely correct about how important CDN performance is. I've long been thinking about measuring it in namebench, but had not sat down to make it happen. Anyways, I love your idea, and plan to port it to the next version of namebench. I'm somewhat hesitant to use ICMP latency as a benchmark, as it is sometimes unavailable through NAT's. What do you think about using a small HTTP request to the CDNs instead?

For 2.0, this bit of the code base will be rewritten in Go, but the concept should be fairly straight forward for me to port over.