-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdraft-yocto-dns-relative-label.xml
139 lines (139 loc) · 8.85 KB
/
draft-yocto-dns-relative-label.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<rfc category="info" docName="draft-yocto-dns-relative-label-03" ipr="trust200902" submissionType="IETF" version="3">
<front>
<title abbrev="DNS Relative Labels">Relative Labels in the Domain Name System</title>
<seriesInfo name="Internet-Draft" value="draft-yocto-dns-relative-label-03"/>
<author fullname="B.J. van Hartingsveldt" initials="B.J." surname="van Hartingsveldt">
<organization showOnFrontPage="true">Yocto</organization>
<address>
<email>[email protected]</email>
</address>
</author>
<abstract>
<t>This document defines a new DNS Label Type using the Extension Mechanisms for DNS to indicate when a relative domain name is used.</t>
</abstract>
</front>
<middle>
<section>
<name>Introduction</name>
<t>This document defines a "Relative Label" which may appear within domain names. This new label type enables resource records to be used with their relative form (e.g. "www" instead of "www.example.com.").</t>
</section>
<section>
<name>Terminology</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
</section>
<section>
<name>Motivation</name>
<t>Relative labels are intended to efficiently solve the problem of using FQDNs when a relative label is wanted. For example, when someone wants to add the MX resource record "0 mx" instead of "0 mx.example.com." to a zone using DNS UPDATE <xref target="RFC2136"/>. It is also useful for DNS providers that store all the records in binary format. Saving data in binary requires less space and the data is already in wire format, but at the moment there is no way to save relative domains in their binary form.</t>
</section>
<section>
<name>Label Format</name>
<t>Relative labels can only appear in the end of a relative FQDN, like the zero octet only appears in the end of an absolute FQDN. [TODO: MOVE -->] Message compression is possible when also using the relative label, but because the relative label already gives the possibility to leave out the zone name, message compression will likely have less effect.</t>
<section>
<name>Wire format</name>
<figure>
<artwork> 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|0 1| ELT |
+-+-+-+-+-+-+-+-+</artwork>
</figure>
<dl>
<dt>ELT</dt>
<dd>000000 binary, the six-bit extended label type <xref target="RFC6891"/> assigned to the Relative Label.</dd>
</dl>
</section>
<section>
<name>Representation format</name>
<t>As described in <xref target="RFC1035"/>, relative domain names are domain names that don't end with a dot.</t>
</section>
<section>
<name>Examples</name>
<t>When an absolute domain name like "www.example.com." is converted to binary, its hexadecimal representation would be: "<03> 77 77 77 <07> 65 78 61 6D 70 6C 65 <03> 63 6F 6D <00>". The square brackets indicate the label lengths.</t>
<t>When converting a relative domain name like "www.subdomain" to binary, its hexadecimal representation becomes: "<03> 77 77 77 <09> 73 75 62 64 6F 6D 61 69 6E <40>". The square brackets also indicate the labels lengths here, except for "<40>", which is the extended label type defined by this specification.</t>
</section>
</section>
<section>
<name>Canonical Representation</name>
<t>Relative domain names do not contain the zone they belong to. For the resource records, in order to be queried with the QUERY opcode or sorted for DNSSEC <xref target="RFC4033"/>, at some moment the records should be converted to their canonical form. To be able to do that, the absolute form of the domain name should be known.</t>
<t>To retrieve the absolute domain name from a relative domain name, the containing zone MUST be known from context. In DNS UPDATE <xref target="RFC2136"/>, the zone is sent in the zone section, which a renaming of the question section. When using binary zone files, the zone will likely be encoded in the file header or the file name.</t>
<t>On binary level, to get the absolute form of the domain name, the last byte of the relative domain name, 0x40, MUST be removed. Then, the binary form of the zone name MUST be appended. For example, "<03> 77 77 77 <40>" (www) and "<07> 65 78 61 6D 70 6C 65 <03> 63 6F 6D <00>" (example.com.), will become "<03> 77 77 77 <07> 65 78 61 6D 70 6C 65 <03> 63 6F 6D <00>" (www.example.com.).</t>
<t>Relative labels should be avoided in QUERY results, because clients MAY not support it. Also, for supporting clients, it is impossible know which zone the resource records belong to. For AXFR and IXFR, it is possible to know the zone, so using the relative label for those queries MAY be considered.</t>
</section>
<section>
<name>Implementation</name>
<t>Implementation is OPTIONAL, so clients SHOULD NOT expect every server to support this feature. An indicator MAY BE added in the future for servers to indicate that they support relative labels and for which resource record types.</t>
</section>
<section>
<name>IANA Considerations</name>
<t>This document defines one Extended Label Type, termed the Relative Label, and requests registration of the code point 000000 binary in the space defined by <xref target="RFC6891"/>.</t>
</section>
<section>
<name>Security Considerations</name>
<t>All security considerations which apply to traditional ASCII DNS labels apply equally to binary labels. The canonicalization and sorting rules of section 3.3 allow these to be addressed by DNS Security <xref target="RFC4033"/>.</t>
</section>
</middle>
<back>
<references>
<name>Normative References</name>
<reference anchor="RFC1035">
<front>
<title>Domain names - implementation and specification</title>
<author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
<date month="November" year="1987"/>
</front>
<seriesInfo name="RFC" value="1035"/>
<seriesInfo name="DOI" value="10.17487/RFC1035"/>
</reference>
<reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname="S. Bradner" initials="S." surname="Bradner"/>
<date month="March" year="1997"/>
<abstract>
<t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC2136">
<front>
<title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
<author fullname="P. Vixie" initials="P." surname="Vixie"/>
<date month="April" year="1997"/>
</front>
<seriesInfo name="RFC" value="2136"/>
<seriesInfo name="DOI" value="10.17487/RFC2136"/>
</reference>
<reference anchor="RFC4033">
<front>
<title>DNS Security Introduction and Requirements</title>
<author fullname="R. Arends" initials="R." surname="Arends"/>
<author fullname="R. Austein" initials="R." surname="Austein"/>
<author fullname="M. Larson" initials="M." surname="Larson"/>
<author fullname="D. Massey" initials="D." surname="Massey"/>
<author fullname="S. Rose" initials="S." surname="Rose"/>
<date month="March" year="2005"/>
</front>
<seriesInfo name="RFC" value="4033"/>
<seriesInfo name="DOI" value="10.17487/RFC4033"/>
</reference>
<reference anchor="RFC6891">
<front>
<title>Extension Mechanisms for DNS (EDNS(0))</title>
<author fullname="J. Damas" initials="J." surname="Damas"/>
<author fullname="M. Graff" initials="M." surname="Graff"/>
<author fullname="P. Vixie" initials="P." surname="Vixie"/>
<date month="April" year="2013"/>
</front>
<seriesInfo name="RFC" value="6891"/>
<seriesInfo name="DOI" value="10.17487/6891"/>
</reference>
</references>
<section numbered="false">
<name>Acknowledgements</name>
<t>The author gratefully acknowledges the contributions and feedback of <contact fullname="Alexander Robohm"/>, <contact fullname="Edward Lewis"/>, <contact fullname="Joe Abley"/>, <contact fullname="Mukund Sivaraman"/>, <contact fullname="Ondřej Surý"/>, <contact fullname="Tim Wicinski"/>, <contact fullname="Peter Thomassen"/>, and <contact fullname="Marco Davids"/>.</t>
<t>As well as all of those in the IETF community and on GitHub to who contributed to the discussions that resulted in this document.</t>
</section>
</back>
</rfc>