WebPagetest Forums
CDN Determination - Printable Version

+- WebPagetest Forums (https://www.webpagetest.org/forums)
+-- Forum: Web Performance (/forumdisplay.php?fid=3)
+--- Forum: Discuss Test Results (/forumdisplay.php?fid=4)
+--- Thread: CDN Determination (/showthread.php?tid=258)



CDN Determination - bizzby - 06-18-2010 02:56 AM

How does webpagetest determine that an object is downloaded from a CDN? Is there a list of CDN host names to compare to? Or, is it a list of IPs that are known to be associated with CDNs? Is that list available?

Thanks in advance.


RE: CDN Determination - pmeenan - 06-18-2010 03:05 AM

There is a known list of CDN's. The domain for a request is looked up and the host name as well as any CNAME alias' are compared against the known list to see if it is recognized. If you are using a CDN that isn't recognized just shoot me a sample test and I'll get it added in the next release.

Unfortunately the checks are done on the test systems themselves so it has to wait for a code update on the testers to get updated.

This list is in the glossary at the end of this page: http://www.webpagetest.org/result/100617_4MV/1/performance_optimization/ but is a little out of date (MaxCDN has been added since the table was updated). As I move the docs to a wiki it will be a lot easier to keep things up to date.

The ultimate authority is in the code :-) - http://code.webpagetest.org/svn/pagetest/pagetest/PagetestReporting.cpp (CPagetestReporting::IsCDN).

Here is the actual check:

name.Find(".akamai.net") > -1 || // Akamai
name.Find(".akamaiedge.net") > -1 || // Akamai
name.Find(".llnwd.net") > -1 || // Limelight
name.Find("edgecastcdn.net") > -1 || // Edgecast
name.Find("hwcdn.net") > -1 || // Highwinds
name.Find(".panthercdn.com") > -1 || // Panther
name.Find(".simplecdn.net") > -1 || // Simple CDN
name.Find(".instacontent.net") > -1 || // Mirror Image
name.Find(".footprint.net") > -1 || // ?????
name.Find(".ay1.b.yahoo.com") > -1 || // Yahoo distribution
name.Find(".google.com") > -1 || // Google distribution
name.Find(".internapcdn.net") > -1 || // Internap
name.Find(".cloudfront.net") > -1 || // Amazon CloudFront
name.Find(".netdna-cdn.com") > -1 || // NetDNA
name.Find(".cotcdn.net") > -1 || // Cotendo CDN
name.Find(".cachefly.net") > -1 || // Cachefly (also anycast - support to be added)
name.Find(".nyucd.net") > -1 // Coral Cache


RE: CDN Determination - bizzby - 06-18-2010 03:23 AM

Thanks for this detailed response. I think I get it. How do I find all the CNAME aliases for a given host. For instance, http://www.webpagetest.org/result/100611_1HD/1/performance_optimization/ shows that pagetest was able to determine that i.cdn.turner.com was a CDN but this is not in the list checked in the code.

Thanks


RE: CDN Determination - pmeenan - 06-18-2010 03:34 AM

Pagetest looks at the full DNS response (not just what is exposed in the test results) and it looks like that is CNAMEd to footprint.net:

c:\>nslookup i.cdn.turner.com

Non-authoritative answer:
Name: cdn.cnn.com.c.footprint.net
Addresses: 192.221.100.126
207.123.46.126
8.12.222.126
Aliases: i.cdn.turner.com


RE: CDN Determination - bizzby - 06-18-2010 03:36 AM

That's what I needed. Thank you Patrick!