Functional overview
The purpose of this test is to confirm whether resolvers respect TTL values supplied for DNS records.
A successful outcome would be that only single requests are made by a resolver for a DNS record which is requested twice in succession via an HTTP request using an interval less than the defined TTL time.
Implementation
For this test the SSCRT is configured with two wildcard DNS A records using the prefixes *.ttl10.DOMAIN_NAME and *.ttl15.DOMAIN_NAME. These are set up with TTL values of 10 seconds and 15 seconds respectively. In addition wildcard SSL certs are created for *.ttl10.DOMAIN_NAME and *.ttl15.DOMAIN_NAME and matching Web Server virtual hosts to allow for routing of HTTP requests.
In order to track unique test runs and avoid caching issues the Client Side Website Toolkit (CSWT) will send two consecutive HTTP requests of the following format with a 5 second gap.
UUID.ttl10.DOMAIN_NAME
And then a further two consecutive HTTP requests of the following format with a 10 second gap.
UUID.ttl15.DOMAIN_NAME
Where the UUID is generated uniquely for each request.
The SSCRT will monitor DNS queries for both A records (UUID.ttl10.DOMAIN_NAME and UUID.ttl15.DOMAIN_NAME) and will consider the test to have passed if only 1 request was received for each.
As an additional data point if an HTTP request is observed via the web server this will also be logged to provide other information on client requests but this is not considered part of the success criteria.
Configuring test sessions
Minimum TTL test sessions are configured using the test key minimum-ttl which should be supplied when creating new sessions on the SSCRT
resolvertest install minimum-ttl example.com
and when invoking tests using the CSWT.
e.g.
let test = new ResolverCapabilityTest(“minimum-ttl”, “example.com”);
Log format
The log output for IPv6 tests will contain the following distinct fields:
id - A unique numerical id for the log entry
date - The date and time of the combined log entry.
status - Either “Success” or “Failed” depending upon whether a single DNS query was received for each of the configured subdomains.
dnsResolutionTime1 - The date and time that the first A record DNS query was received for UUID.ttl10.DOMAIN_NAME
dnsResolvedHostname1 -should generally be set to UUID.ttl10.DOMAIN_NAME
dnsClientIpAddress1 - The IPv4 address of the client resolver or the /24 depending upon the configured privacy setting in the SSCRT.
dnsResolverQuery1 - The full query string made by the resolver for the first resolution of the A record DNS query for UUID.ttl10.DOMAIN_NAME
dnsResolutionTime2 - The date and time that a second A record DNS query was received for UUID.ttl10.DOMAIN_NAME (in case of failure)
dnsResolvedHostname2 -should generally be set to UUID.ttl10.DOMAIN_NAME if set
dnsClientIpAddress2 - The IPv4 address of the client resolver or the /24 depending upon the configured privacy setting in the SSCRT.
dnsResolverQuery2 - The full query string made by the resolver for the resolution of the second A record DNS query for UUID.ttl10.DOMAIN_NAME (in case of failure)
dnsResolutionTime3 - The date and time that the first A record DNS query was received for UUID.ttl15.DOMAIN_NAME
dnsResolvedHostname3 -should generally be set to UUID.ttl15.DOMAIN_NAME
dnsClientIpAddress3 - The IPv4 address of the client resolver or the /24 depending upon the configured privacy setting in the SSCRT.
dnsResolverQuery3 - The full query string made by the resolver for the resolution of the first A record DNS query for UUID.ttl15.DOMAIN_NAME
dnsResolutionTime4 - The date and time that a second A record DNS query was received for UUID.ttl15.DOMAIN_NAME (in case of failure)
dnsResolvedHostname4 -should generally be set to UUID.ttl15.DOMAIN_NAME if set
dnsClientIpAddress4 - The IPv4 address of the client resolver or the /24 depending upon the configured privacy setting in the SSCRT.
dnsResolverQuery4 - The full query string made by the resolver for the resolution of the second A record DNS query for UUID.ttl15.DOMAIN_NAME (in case of failure)
webServerRequestTime1 - The date and time that the first HTTP request was made for UUID.ttl10.DOMAIN_NAME if applicable
webServerRequestHostname1- This will be set to UUID.ttl10.DOMAIN_NAME if an HTTP request was made
webServerClientIpAddress1- The IPv4 address of the client machine (web browser) or the /24 depending upon the configured privacy setting in the SSCRT if this request was made.
webServerResponseCode1 - The HTTP response code returned from the web server - generally should be 200 if the request was made
webServerRequestTime2 - The date and time that the first HTTP request was made for UUID.ttl10.DOMAIN_NAME if applicable
webServerRequestHostname2- This will be set to UUID.ttl10.DOMAIN_NAME if an HTTP request was made
webServerClientIpAddress2- The IPv4 address of the client machine (web browser) or the /24 depending upon the configured privacy setting in the SSCRT if this request was made.
webServerResponseCode2 - The HTTP response code returned from the web server - generally should be 200 if the request was made
webServerRequestTime3 - The date and time that the first HTTP request was made for UUID.ttl15.DOMAIN_NAME if applicable
webServerRequestHostname3- This will be set to UUID.ttl15.DOMAIN_NAME if an HTTP request was made
webServerClientIpAddress3- The IPv4 address of the client machine (web browser) or the /24 depending upon the configured privacy setting in the SSCRT if this request was made.
webServerResponseCode3 - The HTTP response code returned from the web server - generally should be 200 if the request was made
webServerRequestTime4 - The date and time that the first HTTP request was made for UUID.ttl15.DOMAIN_NAME if applicable
webServerRequestHostname4- This will be set to UUID.ttl15.DOMAIN_NAME if an HTTP request was made
webServerClientIpAddress4- The IPv4 address of the client machine (web browser) or the /24 depending upon the configured privacy setting in the SSCRT if this request was made.
webServerResponseCode4 - The HTTP response code returned from the web server - generally should be 200 if the request was made