Functional overview
The purpose of this test is to confirm whether resolvers can communicate over IPv6.
To be successful for a given resolver, we would expect to be able to receive DNS queries for a test domain name with delegated nameservers which only reference IPv6 addresses in Glue records and only contain AAAA records for routing purposes (not A). This would guarantee that the router is communicating with our testbed over IPv6.
Implementation
In order to capture resolvers which don’t route IPv6 as well as those which do, it is necessary to configure both a test domain for IPv6 testing and a control domain using IPv4. To simplify configuration of this it is expected that as well as registering the master domain name (for IPv6 testing) a matching domain name with an ipv4- prefix should also be registered for IPv4 testing.
The SSCRT configures DNS zones for both the domain name and the variant with the ipv4- prefix with a wildcard IPv4 A record for each and sets up a wildcard SSL cert and matching web server virtual host for each domain.
In order to track unique requests and avoid caching issues the Client Side Website Toolkit (CSWT) will send HTTP requests of the format
UUID.DOMAIN_NAME and UUID.ipv4-DOMAIN_NAME
Where the UUID is generated uniquely for each test run.
The SSCRT will monitor DNS queries for A records for the same UUID for both domains (UUID.DOMAIN_NAME and/or UUID.ipv4-DOMAIN_NAME) and will consider the test to have passed if both have been observed within the timeout window (3 seconds) otherwise the test will be considered as failed.
Configuring test sessions
As a prerequisite to installing ipv6 test sessions it is necessary in addition to registering a domain for this test to register the related domain name using the prefix ipv4-. So if you were using example.com as the ipv6 test domain you would also need to register ipv4-example.com as well for ipv4 control testing.
The ipv6 test domain should be configured with ipv6 only glue records resolving to a defined SSCRT ipv6 address along with usually a matching AAAA record (but no A records). The ipv4- prefixed variant should be configured as a more standard test domain using the default ipv4 nameservers.
IPv6 test sessions are configured using the test key ipv6 which should be supplied when creating new sessions on the SSCRT along with a set of IPv6 only nameservers (see SSCRT user guide for creating and managing these)
e.g.
resolvertest install ipv6 example.com --nameserverSet ipv6NS
and when invoking tests using the CSWT.
e.g.
let test = new ResolverCapabilityTest(“ipv6”, “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 the client resolver supports IPv6 resolution or not
dnsResolutionTime1 - The date and time that an A record DNS query was received for UUID.DOMAIN_NAME
dnsResolvedHostname1 -should generally be set to UUID.DOMAIN_NAME
dnsClientIpAddress1 - The IPv6 address of the client resolver or the /48 depending upon the configured privacy setting in the SSCRT.
dnsResolverQuery1 - The full query string made by the resolver for the resolution of the A record DNS query for UUID.DOMAIN_NAME
dnsResolutionTime2 - The date and time that an A record DNS query was received for UUID.ipv4-DOMAIN_NAME
dnsResolvedHostname2 -should generally be set to UUID.ipv4-DOMAIN_NAME
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 A record DNS query for UUID.ipv4-DOMAIN_NAME
webServerRequestTime1 - The date and time that the HTTP request was made for UUID.DOMAIN_NAME if successful
webServerRequestHostname1- This will be set to UUID.DOMAIN_NAME if an HTTP request was received
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 received
webServerRequestTime2 - The date and time that the HTTP request was made for UUID.ipv4-DOMAIN_NAME if successful
webServerRequestHostname2- This will be set to UUID.ipv4-DOMAIN_NAME if an HTTP request was received
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 received