This section describes different types of glue that may be found in DNS referral responses. Note that the type of glue depends on the QNAME. A particular name server (and its corresponding glue record) can be in-domain for one response and in a sibling domain for another.
The following is a simple example of glue records present in the delegating zone "test" for the child zone "foo.test". The name servers for foo.test (ns1.foo.test and ns2.foo.test) are both below the delegation point. They are configured as glue records in the "test" zone:
foo.test. 86400 IN NS ns1.foo.test.
foo.test. 86400 IN NS ns2.foo.test.
ns1.foo.test. 86400 IN A 192.0.2.1
ns2.foo.test. 86400 IN AAAA 2001:db8::2:2
A referral response from "test" for "foo.test" with glue for in-domain name servers looks like this:
;; QUESTION SECTION:
;www.foo.test. IN A
;; AUTHORITY SECTION:
foo.test. 86400 IN NS ns1.foo.test.
foo.test. 86400 IN NS ns2.foo.test.
;; ADDITIONAL SECTION:
ns1.foo.test. 86400 IN A 192.0.2.1
ns2.foo.test. 86400 IN AAAA 2001:db8::2:2
Sibling domain name servers are NS records that are not contained in the delegated zone itself but rather are contained in another zone delegated from the same parent. In many cases, glue for sibling domain name servers is not strictly required for resolution, since the resolver can make follow-on queries to the sibling zone to resolve the name server addresses (after following the referral to the sibling zone). However, most name server implementations today provide them as an optimization to obviate the need for extra traffic from iterative resolvers.
Here, the delegating zone "test" contains two delegations for the child zones "bar.test" and "foo.test":
bar.test. 86400 IN NS ns1.bar.test.
bar.test. 86400 IN NS ns2.bar.test.
ns1.bar.test. 86400 IN A 192.0.2.1
ns2.bar.test. 86400 IN AAAA 2001:db8::2:2
foo.test. 86400 IN NS ns1.bar.test.
foo.test. 86400 IN NS ns2.bar.test.
A referral response from "test" for "foo.test" with glue for sibling domain name servers looks like this:
;; QUESTION SECTION:
;www.foo.test. IN A
;; AUTHORITY SECTION:
foo.test. 86400 IN NS ns1.bar.test.
foo.test. 86400 IN NS ns2.bar.test.
;; ADDITIONAL SECTION:
ns1.bar.test. 86400 IN A 192.0.2.1
ns2.bar.test. 86400 IN AAAA 2001:db8::2:2
The use of sibling domain name servers can introduce cyclic dependencies. This happens when one domain specifies name servers from a sibling domain, and vice versa. This type of cyclic dependency can only be broken when the delegating name server includes glue for the sibling domain in a referral response.
Here, the delegating zone "test" contains two delegations for the child zones "bar.test" and "foo.test", and each uses name servers under the other:
bar.test. 86400 IN NS ns1.foo.test.
bar.test. 86400 IN NS ns2.foo.test.
ns1.bar.test. 86400 IN A 192.0.2.1
ns2.bar.test. 86400 IN AAAA 2001:db8::2:2
foo.test. 86400 IN NS ns1.bar.test.
foo.test. 86400 IN NS ns2.bar.test.
ns1.foo.test. 86400 IN A 192.0.2.3
ns2.foo.test. 86400 IN AAAA 2001:db8::2:4
A referral response from "test" for "bar.test" with glue for sibling domain name servers looks like this:
;; QUESTION SECTION:
;www.bar.test. IN A
;; AUTHORITY SECTION:
bar.test. 86400 IN NS ns1.foo.test.
bar.test. 86400 IN NS ns2.foo.test.
;; ADDITIONAL SECTION:
ns1.foo.test. 86400 IN A 192.0.2.3
ns2.foo.test. 86400 IN AAAA 2001:db8::2:4
In late 2021, the authors analyzed zone file data available from ICANN's Centralized Zone Data Service [
CZDS] and found 222 out of approximately 209,000,000 total delegations that had only sibling domain NS Resource Records (RRs) in a cyclic dependency as above.
An example of missing glue is included here, even though it cannot be considered as a type of glue. While not common, real examples of responses that lack required glue, and with TC=0, have been shown to occur and cause resolution failures.
The example below, from the dig command [
DIG], is based on a response observed in June 2020. The names have been altered to fall under documentation domains. It shows a case where none of the glue records present in the zone fit into the available space of the UDP response, and the TC flag was not set. While this example shows a referral with DNSSEC records [
RFC 4033] [
RFC 4034] [
RFC 4035], this behavior has been seen with plain DNS responses as well. Some records have been truncated for display purposes. Note that at the time of this writing, the servers originally responsible for this example have been updated and now correctly set the TC flag.
% dig +norec +dnssec +bufsize=512 +ignore @ns.example.net \
rh202ns2.355.foo.example
; <<>> DiG 9.15.4 <<>> +norec +dnssec +bufsize +ignore \
@ns.example.net rh202ns2.355.foo.example
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8798
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 9, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;rh202ns2.355.foo.example. IN A
;; AUTHORITY SECTION:
foo.example. 86400 IN NS rh120ns2.368.foo.example.
foo.example. 86400 IN NS rh202ns2.355.foo.example.
foo.example. 86400 IN NS rh120ns1.368.foo.example.
foo.example. 86400 IN NS rh202ns1.355.foo.example.
foo.example. 3600 IN DS 51937 8 1 ...
foo.example. 3600 IN DS 635 8 2 ...
foo.example. 3600 IN DS 51937 8 2 ...
foo.example. 3600 IN DS 635 8 1 ...
foo.example. 3600 IN RRSIG DS 8 2 3600 ...