draft-yao-dnsop-accompanying-questions-01.txt   draft-yao-dnsop-accompanying-questions-02.txt 
dnsop J. Yao dnsop J. Yao
Internet-Draft P. Vixie Internet-Draft P. Vixie
Intended status: Standards Track CNNIC-Farsight Joint Laboratory Intended status: Standards Track CNNIC-Farsight Joint Laboratory
Expires: April 27, 2017 N. Kong Expires: May 3, 2017 N. Kong
X. Li X. Li
CNNIC CNNIC
October 24, 2016 October 30, 2016
A DNS Query including A Main Question with Accompanying Questions A DNS Query including A Main Question with Accompanying Questions
draft-yao-dnsop-accompanying-questions-01 draft-yao-dnsop-accompanying-questions-02
Abstract Abstract
This document enables DNS initiators to send a main question This document enables DNS initiators to send a main question
accompanying with several related questions in a single DNS query, accompanying with several related questions in a single DNS query,
and enables DNS responders to put the answers into a single DNS and enables DNS responders to put the answers into a single DNS
response. This mechanism can reduce the number of DNS round-trips response. This mechanism can reduce the number of DNS round-trips
per application work-unit. per application work-unit.
Status of This Memo Status of This Memo
skipping to change at page 1, line 37 skipping to change at page 1, line 37
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 27, 2017. This Internet-Draft will expire on May 3, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 26 skipping to change at page 2, line 26
not be created outside the IETF Standards Process, except to format not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other it for publication as an RFC or to translate it into languages other
than English. than English.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Mechanism for a main question with accompanying questions . . 3 3. Mechanism for a main question with accompanying questions . . 3
4. Responder Processing . . . . . . . . . . . . . . . . . . . . 5 4. Responder Processing . . . . . . . . . . . . . . . . . . . . 5
5. Initiator Processing . . . . . . . . . . . . . . . . . . . . 5 5. Initiator Processing . . . . . . . . . . . . . . . . . . . . 6
6. Query and Response Example . . . . . . . . . . . . . . . . . 6 6. Query and Response Example . . . . . . . . . . . . . . . . . 7
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
8. Security Considerations . . . . . . . . . . . . . . . . . . . 7 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8
10. Change History . . . . . . . . . . . . . . . . . . . . . . . 7 10. Change History . . . . . . . . . . . . . . . . . . . . . . . 8
10.1. draft-yao-dnsop-accompanying-questions: Version 00 . . . 7 10.1. draft-yao-dnsop-accompanying-questions: Version 00 . . . 9
10.2. draft-yao-dnsop-accompanying-questions: Version 01 . . . 7 10.2. draft-yao-dnsop-accompanying-questions: Version 01 . . . 9
11. Normative References . . . . . . . . . . . . . . . . . . . . 8 10.3. draft-yao-dnsop-accompanying-questions: Version 02 . . . 9
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 11. Normative References . . . . . . . . . . . . . . . . . . . . 9
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9
1. Introduction 1. Introduction
There are many scenarios in which an application must send several There are many scenarios in which an application must send several
related questions to a DNS responder. For examples, when asking related questions to a DNS responder. For examples, when asking
about a QTYPE=A RRset, a QTYPE=AAAA RRset may also be of use [RFC about a QTYPE=A RRset, a QTYPE=AAAA RRset may also be of use [RFC
5321]; When asking for some RRset of www.example.com about A and 5321]; When asking for some RRset of www.example.com about A and
AAAA, records of a sub-domain name such as _443._tcp.www.example.com AAAA, records of a sub-domain name such as _443._tcp.www.example.com
for TLSA may be of interest[RFC 6698]. for TLSA may be of interest[RFC 6698].
skipping to change at page 4, line 5 skipping to change at page 3, line 46
/ OPTION-DATA / / OPTION-DATA /
/ / / /
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
OPTION-CODE (Assigned by IANA.) OPTION-CODE (Assigned by IANA.)
OPTION-LENGTH Size (in octets) of OPTION-DATA. OPTION-LENGTH Size (in octets) of OPTION-DATA.
OPTION-DATA including at most 8 accompanying questions with AQ-RCODE. OPTION-DATA including at most 8 accompanying questions with AQ-RCODE.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|AQ | Count | AQ-RCODE | | Reserved | AQ-RCODE |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| AQ-TYPE | | AQ-TYPE |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | AQ-ANCOUNT |
/ Prefix / +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
/ / | AQ-NSCOUNT |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|AQ | Seq | AQ-RCODE | | AQ-ARCOUNT |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| AQ-TYPE | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ / Prefix /
| | / /
/ Prefix / +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
/ / | Reserved | AQ-RCODE |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|AQ | Seq | AQ-RCODE | | AQ-TYPE |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| AQ-TYPE | | AQ-ANCOUNT |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | AQ-NSCOUNT |
/ Prefix / +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
/ / | AQ-ARCOUNT |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | |
/ ...... / / Prefix /
/ / / /
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
o AQ field indicates whether this accompanying question is the first | Reserved | AQ-RCODE |
question. If it is set as 1, this question is the first question. +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| AQ-TYPE |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| AQ-ANCOUNT |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| AQ-NSCOUNT |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| AQ-ARCOUNT |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| |
/ Prefix /
/ /
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| |
/ ...... /
/ /
o Count field represents the total numbers of all accompanying o Reserved field is kept for the future use.
questions. Seq field represents the sequence number of
accompanying questions from 1 to 7 There will have at most 8
accompanying questions.
o AQ-RCODE field will be set to 111111110100 bits when being o AQ-RCODE field will be set to 111111110100 bits when being
initialized. The AQ-RCODE with the value of 111111110100 bits initialized. The AQ-RCODE with the value of 111111110100 bits
means that the mechanism for accompanying has not been means that the mechanism for accompanying has not been
implemented, where "0100" in the RCODE value is "not been implemented, where "0100" in the RCODE value means "not been
implemented". The AQ aware responders will put the RCODE value implemented". The AQ aware responders will put the RCODE value
for the query of this question into AQ-RCODE fields. for the query of this question into AQ-RCODE fields.
o Prefix field is a substring between the main domain name of the o AQ-ANCOUNT field will indicate the number of resource records in
main quesiton and the accompanying domain name of the accompanying the answer section for this accompanying question. The AQ aware
question. That is, if the main domain name is string S and the responders will put the ANCOUNT value for the query of this
accompanying domain name is string S1, the prefix is (S-S1). For question into AQ-ANCOUNT field.
an example, if the main domain name is example.com and the
accompanying domain name is mail.example.com, the prefix is o AQ-NSCOUNT field will indicate the number of name server resource
"mail.". records in the authority records section for this accompanying
question. The AQ aware responders will put the NSCOUNT value for
the query of this question into AQ-NSCOUNT field.
o AQ-ARCOUNT field will indicate the number of resource records in
the additional records section for this accompanying question.
The AQ aware responders will put the ARCOUNT value for the query
of this question into AQ-ARCOUNT field.
o Prefix field indicates a domain name with the form of a pointer or
a sequence of labels ending with a pointer using the message
compression defined in section 4.1.4. of RFC 1035. The domain
name for accompanying questions MUST be same with the domain name
for a main question or be children name of it. For an example, if
the main domain name is example.com and the accompanying domain
name is mail.example.com., the prefix is "mail." ending with a
pointer pointing to "example.com.".
4. Responder Processing 4. Responder Processing
The AQ aware responder will check the main question first, and put The AQ aware responder will check the main question first, and put
the results into the DNS response packet. If the AQ OPT is present, the results into the DNS response packet following RFC 1034. If the
the responder assembles the prefix with the main domain name and make AQ OPT is present, the responder assembles the prefix with the main
it to be an accompanying question, checks the accompanying questions domain name and makes it to be an accompanying question, checks the
in order, and put the results into the DNS answer section of the accompanying questions in order, and put the results into the DNS
response following RFC 1034; but the response code is placed in the answer section, authority section or additional records section of
respective AQ-RCODE field in AQ OPT of the response. The RCODE field the response following RFC 1034; but the response code is placed in
in the DNS response header refers to the main question only. An AQ the respective AQ-RCODE field in AQ OPT of the response. The RCODE
unaware responder is expected to ignore the AQ OPT of the query, and field in the DNS response header refers to the main question only.
may echo the received OPT back into additional section of the The AQ aware responders will put the ANCOUNT, NSCOUNT and ARCOUNT
response message. value for the query of this accompanying question into the respective
AQ-ANCOUNT, AQ-NSCOUNT and AQ-ARCOUNT fields. The ANCOUNT, NSCOUNT
and ARCOUNT fields in the DNS response header refer to the main
question only. When the answer is negative for the accompanying
question, the SOA resource record will be put in the authority
section.
The mechanism proposed in this document is intended for both between
stub resolvers and recursive resolvers, and between recursive
resolvers and authoritative servers. Most DNS resource records
needed to process parallel query are normally located in the same
zone. In case of that some children domain names are delegated and
not in the main domain name's zone, the delegation information will
be returned to the recursive resolvers. The recursive resolvers then
check the children domain based on the delegation information, and
get the answer for the respective children domain names.
When a stub resolver sends an AQ query to the recursive resolver, the
recursive resolver may have some answers for one or more questions in
the cache, but not for all questions. Under that case, the recursive
resolver SHOULD forward this AQ query to some relative authoritative
servers for full answers instead of using the existing insufficient
cache information.
An AQ unaware responder is expected to ignore the AQ OPT of the
query, and may echo the received OPT back into additional section of
the response message.
5. Initiator Processing 5. Initiator Processing
An AQ aware initiator will put the main question into the question An AQ aware initiator will put the main question into the question
section of the DNS query packet, and put related accompanying section of the DNS query packet, and put related accompanying
questions into the Accompanying Question fields of OPTION-DATA of OPT questions into the related accompanying question fields of OPTION-
RR. AQ-RCODE value will be sent as 111111110100 bits. The AQ value DATA of OPT RR. AQ-RCODE value will be sent as 111111110100 bits.
should be set to 1 and Count value should be set to total number of The AQ-TYPE value should be set as the query type related to
accompanying questions, if the accompanying question is the first accompanying questions. The Prefix value should be set as a pointer
one; For the remain accompanying questions, the AQ value should be or a sequence of labels ending with a pointer pointing to the the
set to 0 and Seq value should be set to the sequence of the main domain name of the main question for the respective accompanying
corresponding accompanying questions. The AQ-TYPE value should be domain name of the accompanying question.
set as the query type related accomanying questions. The Prefix
should be set as the substring between the main domain name of the
main quesiton and the accompanying domain name of the accompanying
question. If the main domain name and the accompanying domain name
are same, the Prefix should be set as all zero bits.
If the initial value of the AQ-RCODE is unchanged in the response, it An AQ aware initiator SHOULD set the limitation of what is the
indicates that the responder is AQ unaware. In that case, the maximum number of accompanying questions a AQ query can bring. This
responder will deal with the main question only. The initiator document suggests that the maximum number is six since most DNS
should sent the accompanying questions one by one via the normal DNS resource records which need parallel query will not larger than six.
query. In such followup related queries, AQ processing should The implementers may set six as the defaul value in the
probably not be attempted, to reduce waste of network resources. implementation. The responder can refuse to answer the AQ query if
the maximum number of the accompanying questions is larger than the
default maximum value, and return "not been implemented, too many
accompanying-questions." information to the initiator.
If the initial value of the AQ-RCODE is unchanged in the response or
the AQ OPT is not echo back, it indicates that the responder is AQ
unaware. In that case, the responder will deal with the main
question only. The initiator should sent the accompanying questions
one by one via the normal DNS query. In such followup related
queries, AQ processing should probably not be attempted, to reduce
waste of network resources.
6. Query and Response Example 6. Query and Response Example
Example: one main question with 2 accompanying questions Example: one main question with 2 accompanying questions
The query would look like: The query would look like:
+---------------------------------------------------+ +---------------------------------------------------+
Header | OPCODE=SQUERY | Header | OPCODE=SQUERY |
+---------------------------------------------------+ +---------------------------------------------------+
Question | QNAME=EXAMPLE.COM., QCLASS=IN, QTYPE=A | Question | QNAME=EXAMPLE.COM., QCLASS=IN, QTYPE=A |
+---------------------------------------------------+ +---------------------------------------------------+
Answer | | Answer | |
+---------------------------------------------------+ +---------------------------------------------------+
Authority | <empty> | Authority | <empty> |
+---------------------------------------------------+ +---------------------------------------------------+
Additional | | Additional | |
| AQ=1,Count=2,AQ-TYPE=AAAA,AQ-RCODE=111111110100, | | AQ-TYPE=AAAA,AQ-RCODE=111111110100, |
| Prefix=0, | | Prefix=EXAMPLE.COM., |
| AQ=0, SEQ=1,AQ-TYPE=TLSA,,AQ-RCODE=111111110100, | | AQ-TYPE=TLSA,,AQ-RCODE=111111110100, |
| Prefix=_443._tcp., | | Prefix=_443._tcp.EXAMPLE.COM., |
+---------------------------------------------------+ +---------------------------------------------------+
The response from AQ aware responders would be: The response from AQ aware responders would be:
+---------------------------------------------------+ +---------------------------------------------------+
Header | OPCODE=SQUERY, RESPONSE, AA, RCODE=NOERROR | Header | OPCODE=SQUERY, RESPONSE, AA, RCODE=NOERROR |
+---------------------------------------------------+ | ANCOUNT=1, ARCOUNT=1, NSCOUNT=0 |
Question | QNAME=EXAMPLE.COM., QCLASS=IN, QTYPE=A | +---------------------------------------------------+
+---------------------------------------------------+ Question | QNAME=EXAMPLE.COM., QCLASS=IN, QTYPE=A |
Answer | example.com IN A 192.168.0.1 | +---------------------------------------------------+
| example.com. IN AAAA 2001:cc8::1 | Answer | example.com IN A 192.168.0.1 |
| _443._tcp.example.com. IN TLSA | | example.com. IN AAAA 2001:cc8::1 |
| ( 3 0 0 30820307308201efa003020102020... ) | | _443._tcp.example.com. IN TLSA |
+---------------------------------------------------+ | ( 3 0 0 30820307308201efa003020102020... ) |
Authority | <empty> | +---------------------------------------------------+
+---------------------------------------------------+ Authority | <empty> |
Additional | | +---------------------------------------------------+
| AQ=1, COUNT=2, AQ-TYPE=AAAA, AQ-RCODE=NOERROR, | Additional | |
| Prefix=0, | | AQ-TYPE=AAAA, AQ-RCODE=NOERROR, AQ-ANCOUNT=1, |
| AQ=0, SEQ=1, AQ-TYPE=TLSA, AQ-RCODE=NOERROR, | | AQ-ARCOUNT=0, AQ-NSCOUNT=0, |
| Prefix=443._tcp., | | Prefix=EXAMPLE.COM., |
+---------------------------------------------------+ | AQ-TYPE=TLSA, AQ-RCODE=NOERROR, AQ-ANCOUNT=1, |
| AQ-ARCOUNT=0, AQ-NSCOUNT=0, |
| Prefix=_443._tcp.EXAMPLE.COM., |
+---------------------------------------------------+
The response from AQ unaware responders would be: The response from AQ unaware responders would be:
+---------------------------------------------------+ +---------------------------------------------------+
Header | OPCODE=SQUERY, RESPONSE, AA, RCODE=NOERROR | Header | OPCODE=SQUERY, RESPONSE, AA, RCODE=NOERROR |
+---------------------------------------------------+ +---------------------------------------------------+
Question | QNAME=EXAMPLE.COM., QCLASS=IN, QTYPE=A | Question | QNAME=EXAMPLE.COM., QCLASS=IN, QTYPE=A |
+---------------------------------------------------+ +---------------------------------------------------+
Answer | example.com IN A 192.168.0.1 | Answer | example.com. IN A 192.168.0.1 |
+---------------------------------------------------+ +---------------------------------------------------+
Authority | <empty> | Authority | <empty> |
+---------------------------------------------------+ +---------------------------------------------------+
Additional | | Additional | |
| AQ=1, COUNT=2, AQ-TYPE=AAAA,AQ-RCODE=111111110100,| | AQ-TYPE=AAAA,AQ-RCODE=111111110100, |
| Prefix=0, | | Prefix=EXAMPLE.COM., |
| AQ=0, SEQ=1, AQ-TYPE=TLSA, AQ-RCODE=111111110100, | | AQ-TYPE=TLSA, AQ-RCODE=111111110100, |
| Prefix=443._tcp., | | Prefix=_443._tcp.EXAMPLE.COM., |
+---------------------------------------------------+ +---------------------------------------------------+
7. IANA Considerations 7. IANA Considerations
IANA should allocate DNS EDNS0 Option Codes (OPT) following this IANA should allocate DNS EDNS0 Option Codes (OPT) following this
document. IANA should reserve RCODE with the value of 111111110100 document. IANA should reserve RCODE with the value of 111111110100
bits for this document. bits for this document.
8. Security Considerations 8. Security Considerations
TBD TBD
9. Acknowledgements 9. Acknowledgements
The authors thank the members in DNSOP mailing list for helpful The authors thank the members in DNSOP mailing list for helpful
discussions, and especially thank Kazunori Fujiwara for kind discussions, and especially thank Kazunori Fujiwara, JINMEI Tatuya
comments, suggestions and improvments for the document. and Bob Harold for kind comments, suggestions and improvements for
the document. The authors also thanks Likun Zhang for helpful
discussion about some topics related to implementation.
10. Change History 10. Change History
RFC Editor: Please remove this section. RFC Editor: Please remove this section.
10.1. draft-yao-dnsop-accompanying-questions: Version 00 10.1. draft-yao-dnsop-accompanying-questions: Version 00
o A Mechanism for DNS query including one main question with several o A Mechanism for DNS query including one main question with several
accompanying questions accompanying questions
10.2. draft-yao-dnsop-accompanying-questions: Version 01 10.2. draft-yao-dnsop-accompanying-questions: Version 01
o Simpilfy the mechanism. o Simpilfy the mechanism.
10.3. draft-yao-dnsop-accompanying-questions: Version 02
o Remove the AQ and Count bits, and add AQ-ANCOUNT AQ-ARCOUNT AQ-
NSCOUNT
11. Normative References 11. Normative References
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", [RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
<http://www.rfc-editor.org/info/rfc1034>. <http://www.rfc-editor.org/info/rfc1034>.
[RFC1035] Mockapetris, P., "Domain names - implementation and [RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987, <http://www.rfc-editor.org/info/rfc1035>. November 1987, <http://www.rfc-editor.org/info/rfc1035>.
 End of changes. 21 change blocks. 
140 lines changed or deleted 211 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/