draft-ietf-dnssd-push-17.txt | draft-ietf-dnssd-push-18.txt | |||
---|---|---|---|---|
Internet Engineering Task Force T. Pusateri | Internet Engineering Task Force T. Pusateri | |||
Internet-Draft Unaffiliated | Internet-Draft Unaffiliated | |||
Intended status: Standards Track S. Cheshire | Intended status: Standards Track S. Cheshire | |||
Expires: September 10, 2019 Apple Inc. | Expires: September 12, 2019 Apple Inc. | |||
March 9, 2019 | March 11, 2019 | |||
DNS Push Notifications | DNS Push Notifications | |||
draft-ietf-dnssd-push-17 | draft-ietf-dnssd-push-18 | |||
Abstract | Abstract | |||
The Domain Name System (DNS) was designed to return matching records | The Domain Name System (DNS) was designed to return matching records | |||
efficiently for queries for data that are relatively static. When | efficiently for queries for data that are relatively static. When | |||
those records change frequently, DNS is still efficient at returning | those records change frequently, DNS is still efficient at returning | |||
the updated results when polled, as long as the polling rate is not | the updated results when polled, as long as the polling rate is not | |||
too high. But there exists no mechanism for a client to be | too high. But there exists no mechanism for a client to be | |||
asynchronously notified when these changes occur. This document | asynchronously notified when these changes occur. This document | |||
defines a mechanism for a client to be notified of such changes to | defines a mechanism for a client to be notified of such changes to | |||
skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 September 10, 2019. | This Internet-Draft will expire on September 12, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://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 24 ¶ | skipping to change at page 2, line 24 ¶ | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Transport . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Transport . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5. State Considerations . . . . . . . . . . . . . . . . . . . . 8 | 5. State Considerations . . . . . . . . . . . . . . . . . . . . 8 | |||
6. Protocol Operation . . . . . . . . . . . . . . . . . . . . . 9 | 6. Protocol Operation . . . . . . . . . . . . . . . . . . . . . 9 | |||
6.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 10 | 6.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.2. DNS Push Notification SUBSCRIBE . . . . . . . . . . . . . 14 | 6.2. DNS Push Notification SUBSCRIBE . . . . . . . . . . . . . 14 | |||
6.2.1. SUBSCRIBE Request . . . . . . . . . . . . . . . . . . 14 | 6.2.1. SUBSCRIBE Request . . . . . . . . . . . . . . . . . . 14 | |||
6.2.2. SUBSCRIBE Response . . . . . . . . . . . . . . . . . 17 | 6.2.2. SUBSCRIBE Response . . . . . . . . . . . . . . . . . 17 | |||
6.3. DNS Push Notification Updates . . . . . . . . . . . . . . 20 | 6.3. DNS Push Notification Updates . . . . . . . . . . . . . . 20 | |||
6.3.1. PUSH Message . . . . . . . . . . . . . . . . . . . . 20 | 6.3.1. PUSH Message . . . . . . . . . . . . . . . . . . . . 20 | |||
6.4. DNS Push Notification UNSUBSCRIBE . . . . . . . . . . . . 23 | 6.4. DNS Push Notification UNSUBSCRIBE . . . . . . . . . . . . 25 | |||
6.4.1. UNSUBSCRIBE Request . . . . . . . . . . . . . . . . . 23 | 6.4.1. UNSUBSCRIBE Message . . . . . . . . . . . . . . . . . 25 | |||
6.5. DNS Push Notification RECONFIRM . . . . . . . . . . . . . 25 | 6.5. DNS Push Notification RECONFIRM . . . . . . . . . . . . . 27 | |||
6.5.1. RECONFIRM Request . . . . . . . . . . . . . . . . . . 25 | 6.5.1. RECONFIRM Message . . . . . . . . . . . . . . . . . . 28 | |||
6.5.2. RECONFIRM Response . . . . . . . . . . . . . . . . . 28 | ||||
6.6. DNS Stateful Operations TLV Context Summary . . . . . . . 30 | 6.6. DNS Stateful Operations TLV Context Summary . . . . . . . 30 | |||
6.7. Client-Initiated Termination . . . . . . . . . . . . . . 31 | 6.7. Client-Initiated Termination . . . . . . . . . . . . . . 31 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | |||
7.1. Security Services . . . . . . . . . . . . . . . . . . . . 32 | 7.1. Security Services . . . . . . . . . . . . . . . . . . . . 32 | |||
7.2. TLS Name Authentication . . . . . . . . . . . . . . . . . 32 | 7.2. TLS Name Authentication . . . . . . . . . . . . . . . . . 32 | |||
7.3. TLS Session Resumption . . . . . . . . . . . . . . . . . 33 | 7.3. TLS Session Resumption . . . . . . . . . . . . . . . . . 33 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 34 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 34 | |||
skipping to change at page 4, line 47 ¶ | skipping to change at page 5, line 4 ¶ | |||
handshake, flow control, and reliability. | handshake, flow control, and reliability. | |||
This document builds on experience gained with the LLQ protocol, with | This document builds on experience gained with the LLQ protocol, with | |||
an improved design. Instead of using UDP, this specification uses | an improved design. Instead of using UDP, this specification uses | |||
DNS Stateful Operations (DSO) [DSO] running over TLS over TCP, and | DNS Stateful Operations (DSO) [DSO] running over TLS over TCP, and | |||
therefore doesn't need to reinvent existing TCP functionality. Using | therefore doesn't need to reinvent existing TCP functionality. Using | |||
TCP also gives long-lived low-traffic connections better longevity | TCP also gives long-lived low-traffic connections better longevity | |||
through NAT gateways without depending on the gateway to support NAT | through NAT gateways without depending on the gateway to support NAT | |||
Port Mapping Protocol (NAT-PMP) [RFC6886] or Port Control Protocol | Port Mapping Protocol (NAT-PMP) [RFC6886] or Port Control Protocol | |||
(PCP) [RFC6887], or resorting to excessive keepalive traffic. | (PCP) [RFC6887], or resorting to excessive keepalive traffic. | |||
Instead of inventing a new vocabulary of messages to communicate DNS | ||||
zone changes as LLQ did, this specification borrows the established | ||||
syntax and semantics of DNS Update messages [RFC2136]. | ||||
3. Overview | 3. Overview | |||
The existing DNS Update protocol [RFC2136] provides a mechanism for | A DNS Push Notification client subscribes for Push Notifications for | |||
clients to add or delete individual resource records (RRs) or entire | a particular RRSet by connecting to the appropriate Push Notification | |||
resource record sets (RRSets) on the zone's server. | server for that RRSet, and sending DSO message(s) indicating the | |||
RRSet(s) of interest. When the client loses interest in receiving | ||||
This specification adopts a simplified subset of these existing | further updates to these records, it unsubscribes. | |||
syntax and semantics, and uses them for DNS Push Notification | ||||
messages going in the opposite direction, from server to client, to | ||||
communicate changes to a name's records. The client subscribes for | ||||
Push Notifications by connecting to the server and sending DNS | ||||
message(s) indicating the RRSet(s) of interest. When the client | ||||
loses interest in receiving further updates to these records, it | ||||
unsubscribes. | ||||
The DNS Push Notification server for a zone is any server capable of | The DNS Push Notification server for a DNS zone is any server capable | |||
generating the correct change notifications for a name. It may be a | of generating the correct change notifications for a name. It may be | |||
primary, secondary, or stealth name server [RFC7719]. Consequently, | a primary, secondary, or stealth name server [RFC7719]. | |||
the "_dns-push-tls._tcp.<zone>" SRV record for a zone MAY reference | Consequently, the "_dns-push-tls._tcp.<zone>" SRV record for a zone | |||
the same target host and port as that zone's | MAY reference the same target host and port as that zone's | |||
"_dns-update-tls._tcp.<zone>" SRV record. When the same target host | "_dns-update-tls._tcp.<zone>" SRV record. When the same target host | |||
and port is offered for both DNS Updates and DNS Push Notifications, | and port is offered for both DNS Updates and DNS Push Notifications, | |||
a client MAY use a single TCP connection to that server for both DNS | a client MAY use a single TCP connection to that server for both DNS | |||
Updates and DNS Push Notification Subscriptions. | Updates and DNS Push Notification Subscriptions. | |||
Supporting DNS Updates and DNS Push Notifications on the same server | Supporting DNS Updates and DNS Push Notifications on the same server | |||
is OPTIONAL. A DNS Push Notification server is NOT REQUIRED also to | is OPTIONAL. A DNS Push Notification server is NOT REQUIRED also to | |||
support DNS Update. | support DNS Update. | |||
DNS Updates and DNS Push Notifications may be handled on different | DNS Updates and DNS Push Notifications may be handled on different | |||
skipping to change at page 5, line 49 ¶ | skipping to change at page 5, line 42 ¶ | |||
Standard DNS Queries MAY be sent over a DNS Push Notification (i.e., | Standard DNS Queries MAY be sent over a DNS Push Notification (i.e., | |||
DSO) session. For any zone for which the server is authoritative, it | DSO) session. For any zone for which the server is authoritative, it | |||
MUST respond authoritatively for queries on names falling within that | MUST respond authoritatively for queries on names falling within that | |||
zone (e.g., the <zone> in the "_dns-push-tls._tcp.<zone>" SRV record) | zone (e.g., the <zone> in the "_dns-push-tls._tcp.<zone>" SRV record) | |||
both for normal DNS queries and for DNS Push Notification | both for normal DNS queries and for DNS Push Notification | |||
subscriptions. For names for which the server is acting as a | subscriptions. For names for which the server is acting as a | |||
recursive resolver, e.g. when the server is the local recursive | recursive resolver, e.g. when the server is the local recursive | |||
resolver, for any query for which it supports DNS Push Notification | resolver, for any query for which it supports DNS Push Notification | |||
subscriptions, it MUST also support standard queries. | subscriptions, it MUST also support standard queries. | |||
DNS Push Notification clients are NOT required to implement DNS | ||||
Update Prerequisite processing. Prerequisites are used to perform | ||||
tentative atomic test-and-set type operations when a client updates | ||||
records on a server, and that concept has no applicability when it | ||||
comes to an authoritative server unilaterally informing a client of | ||||
changes to DNS records. | ||||
This DNS Push Notification specification includes support for DNS | This DNS Push Notification specification includes support for DNS | |||
classes, for completeness. However, in practice, it is anticipated | classes, for completeness. However, in practice, it is anticipated | |||
that for the foreseeable future the only DNS class in use will be DNS | that for the foreseeable future the only DNS class in use will be DNS | |||
class "IN", as is the reality today with existing DNS servers and | class "IN", as is the reality today with existing DNS servers and | |||
clients. A DNS Push Notification server MAY choose to implement only | clients. A DNS Push Notification server MAY choose to implement only | |||
DNS class "IN". If messages are received for a class other than | DNS class "IN". If messages are received for a class other than | |||
"IN", and that class is not supported, an error with RCODE NOTIMPL | "IN", and that class is not supported, an error with RCODE NOTIMPL | |||
(Not Implemented) should be returned. | (Not Implemented) should be returned. | |||
DNS Push Notifications impose less load on the responding server than | DNS Push Notifications impose less load on the responding server than | |||
skipping to change at page 20, line 35 ¶ | skipping to change at page 20, line 35 ¶ | |||
The other header fields MUST be set as described in the DSO | The other header fields MUST be set as described in the DSO | |||
specification [DSO]. The DNS OPCODE field contains the OPCODE value | specification [DSO]. The DNS OPCODE field contains the OPCODE value | |||
for DNS Stateful Operations (6). The four count fields MUST be zero, | for DNS Stateful Operations (6). The four count fields MUST be zero, | |||
and the corresponding four sections MUST be empty (i.e., absent). | and the corresponding four sections MUST be empty (i.e., absent). | |||
The DSO-TYPE is PUSH (tentatively 0x41). | The DSO-TYPE is PUSH (tentatively 0x41). | |||
The DSO-LENGTH is the length of the DSO-DATA that follows, which | The DSO-LENGTH is the length of the DSO-DATA that follows, which | |||
specifies the changes being communicated. | specifies the changes being communicated. | |||
The DSO-DATA contains one or more Update records. A PUSH Message | The DSO-DATA contains one or more change notifications. A PUSH | |||
MUST contain at least one Update record. If a PUSH Message is | Message MUST contain at least one change notification. If a PUSH | |||
received that contains zero Update records, this is a fatal error, | Message is received that contains no change notifications, this is a | |||
and the receiver MUST immediately terminate the connection with a TCP | fatal error, and the receiver MUST immediately terminate the | |||
RST (or equivalent for other protocols). The Update records are | connection with a TCP RST (or equivalent for other protocols). The | |||
formatted in the customary way for Resource Records in DNS messages. | change notifications are formatted similarly to how DNS Resource | |||
Update records in a PUSH Message are interpreted according to the | Records are conventionally expressed in DNS messages, and are | |||
same rules as for DNS Update [RFC2136] messages, namely: | interpreted as described below. | |||
Delete all RRsets from a name: | If the signed 32-bit TTL is in the range 0 to 604,800 seconds (one | |||
TTL=0, CLASS=ANY, RDLENGTH=0, TYPE=ANY. | week), then a new DNS Resource Record with the given name, type, | |||
class and RDATA is added. The maximum record lifetime supported in a | ||||
PUSH Message is one week. In the event that the DNS record in | ||||
question has an actual TTL greater than one week, the TTL is reported | ||||
in the PUSH Message as being one week. A TTL of 0 means that this | ||||
record should be retained for as long as the subscription is active, | ||||
and should be discarded immediately the moment the subscription is | ||||
cancelled. | ||||
Delete an RRset from a name: | If the signed 32-bit TTL has the value -1, then the DNS Resource | |||
TTL=0, CLASS=ANY, RDLENGTH=0; | Record with the given name, type, class and RDATA is removed. | |||
TYPE specifies the RRset being deleted. | ||||
If the signed 32-bit TTL has the value -2, then this is a | ||||
'collective' remove notification. For collective remove | ||||
notifications RDLEN MUST be zero and consequently the RDATA MUST be | ||||
empty. If a change notification is received where TTL = -2 and RDLEN | ||||
is not zero, this is a fatal error, and the receiver MUST immediately | ||||
terminate the connection with a TCP RST (or equivalent for other | ||||
protocols). There are three types of collective remove notification: | ||||
For collective remove notifications, if CLASS is ANY, then for the | ||||
given name this deletes all records of all types in all classes. In | ||||
this case TYPE MUST be set to ANY on tranmission, and MUST be | ||||
silently ignored on reception. | ||||
For collective remove notifications, if CLASS is not ANY and TYPE is | ||||
is ANY then for the given name this deletes all records of all types | ||||
in the specified class. | ||||
For collective remove notifications, if CLASS is not ANY and TYPE is | ||||
is not ANY then for the given name this deletes all records of the | ||||
specified type in the specified class. | ||||
Summary of change notification types: | ||||
Delete all RRsets from a name, in all classes | ||||
TTL=-2, RDLENGTH=0, TYPE=ANY, CLASS=ANY | ||||
Delete all RRsets from a name, in given class: | ||||
TTL=-2, RDLENGTH=0, TYPE=ANY | ||||
CLASS specifies class (usually class "IN") | ||||
Delete specified RRset from a name, in given class: | ||||
TTL=-2, RDLENGTH=0 | ||||
CLASS and TYPE specify the RRset being deleted | ||||
Delete an individual RR from a name: | Delete an individual RR from a name: | |||
TTL=0, CLASS=NONE; | TTL=-1 | |||
TYPE, RDLENGTH and RDATA specifies the RR being deleted. | CLASS, TYPE, RDLENGTH and RDATA specify the RR being deleted. | |||
Add to an RRset: | Add individual RR to a name | |||
TTL, CLASS, TYPE, RDLENGTH and RDATA specifies the RR being added. | TTL>=0 | |||
CLASS, TYPE, RDLENGTH, RDATA and TTL specify the RR being added. | ||||
Note that it is valid for the RDATA of an added or removed DNS | ||||
Resource Record to be empty (zero length). For example, an Address | ||||
Prefix List Resource Record [RFC3123] may have empty RDATA. | ||||
Therefore, a change notification with RDLEN=0 does not automatically | ||||
indicate a remove notification. If RDLEN=0 and TTL >= 0, this change | ||||
notification signals the addition of a record with the given name, | ||||
type, class, and empty RDATA. If RDLEN=0 and TTL = -1, this change | ||||
notification signals the removal specifically of that single record | ||||
with the given name, type, class, and empty RDATA. | ||||
For efficiency, when generating a PUSH message, a server SHOULD | ||||
include as many change notifications as it has immediately available | ||||
to send, rather than sending each change notification as a separate | ||||
DSO message. Once it has exhausted the list of change notifications | ||||
immediately available to send, a server SHOULD then send the PUSH | ||||
message immediately, rather than waiting to see if additional change | ||||
notifications become available. | ||||
For efficiency, when generating a PUSH message, a server SHOULD use | ||||
standard DNS name compression, with offsets relative to the beginning | ||||
of the DNS message [RFC1035]. When multiple change notifications in | ||||
a single PUSH message have the same owner name, this name compression | ||||
can yield significant savings. Name compression should be performed | ||||
as specified in Section 18.14 of the Multicast DNS specification | ||||
[RFC6762], namely, owner names should always be compressed, and names | ||||
appearing within only the RDATA of the following DNS types should be | ||||
compressed: | ||||
NS, CNAME, PTR, DNAME, SOA, MX, AFSDB, RT, KX, RP, PX, SRV, NSEC | ||||
Servers MAY generate PUSH messages up to a DNS message length of | ||||
16,382 bytes, counting from the start of the DSO 12-byte header. | ||||
Including the two-byte length prefix that is used to frame DNS over a | ||||
byte stream like TLS, this makes a total of 16,384 bytes. Servers | ||||
SHOULD NOT generate PUSH messages larger than this. Where the | ||||
immediately available change notifications are sufficient to exceed a | ||||
DNS message length of 16,382 bytes, the change notifications SHOULD | ||||
be communicated in separate PUSH messages of up to 16,382 bytes each. | ||||
DNS name compression becomes less effective for messages larger than | ||||
16,384 bytes, so little efficiency benefit is gained by sending | ||||
messages larger than this. | ||||
If a client receives a PUSH message with a DNS message length larger | ||||
than 16,382 bytes, the this is a fatal error, and the receiver MUST | ||||
immediately terminate the connection with a TCP RST (or equivalent | ||||
for other protocols). | ||||
1 1 1 1 1 1 | 1 1 1 1 1 1 | |||
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 | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | |||
| MESSAGE ID (MUST BE ZERO) | \ | | MESSAGE ID (MUST BE ZERO) | \ | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
|QR| OPCODE(6) | Z | RCODE | | | |QR| OPCODE(6) | Z | RCODE | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| QDCOUNT (MUST BE ZERO) | | | | QDCOUNT (MUST BE ZERO) | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ > HEADER | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ > HEADER | |||
skipping to change at page 21, line 35 ¶ | skipping to change at page 23, line 31 ¶ | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| DSO-LENGTH (number of octets in DSO-DATA) | | | DSO-LENGTH (number of octets in DSO-DATA) | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | |||
\ NAME \ \ | \ NAME \ \ | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| TYPE | | | | TYPE | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| CLASS | | | | CLASS | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| TTL | | | | TTL | | | |||
| (32 bits) | > DSO-DATA | | (32-bit signed big-endian integer) | > DSO-DATA | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| RDLEN | | | | RDLEN | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
\ RDATA \ | | \ RDATA (sized as necessary) \ | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
: NAME, TYPE, CLASS, TTL, RDLEN, RDATA : | | : NAME, TYPE, CLASS, TTL, RDLEN, RDATA : | | |||
: Repeated As Necessary : / | : Repeated As Necessary : / | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | |||
Figure 2: PUSH Message | Figure 2: PUSH Message | |||
When processing the records received in a PUSH Message, the receiving | When processing the records received in a PUSH Message, the receiving | |||
client MUST validate that the records being added or deleted | client MUST validate that the records being added or deleted | |||
correspond with at least one currently active subscription on that | correspond with at least one currently active subscription on that | |||
skipping to change at page 23, line 12 ¶ | skipping to change at page 25, line 12 ¶ | |||
aging for records covered by the subscription resumes and records are | aging for records covered by the subscription resumes and records are | |||
removed from the local cache when their TTL reaches zero. | removed from the local cache when their TTL reaches zero. | |||
6.4. DNS Push Notification UNSUBSCRIBE | 6.4. DNS Push Notification UNSUBSCRIBE | |||
To cancel an individual subscription without closing the entire DSO | To cancel an individual subscription without closing the entire DSO | |||
session, the client sends an UNSUBSCRIBE message over the established | session, the client sends an UNSUBSCRIBE message over the established | |||
DSO session to the server. The UNSUBSCRIBE message is encoded as a | DSO session to the server. The UNSUBSCRIBE message is encoded as a | |||
DSO unidirectional message [DSO]. This specification defines a | DSO unidirectional message [DSO]. This specification defines a | |||
primary unidirectional DSO TLV for DNS Push Notification UNSUBSCRIBE | primary unidirectional DSO TLV for DNS Push Notification UNSUBSCRIBE | |||
Requests (tentatively DSO Type Code 0x42). | Messages (tentatively DSO Type Code 0x42). | |||
A server MUST NOT initiate an UNSUBSCRIBE request. If a server does | A server MUST NOT initiate an UNSUBSCRIBE message. If a server does | |||
send an UNSUBSCRIBE request over a DSO session initiated by a client, | send an UNSUBSCRIBE message over a DSO session initiated by a client, | |||
this is a fatal error and the client should immediately abort the | this is a fatal error and the client should immediately abort the | |||
connection with a TCP RST (or equivalent for other protocols). | connection with a TCP RST (or equivalent for other protocols). | |||
6.4.1. UNSUBSCRIBE Request | 6.4.1. UNSUBSCRIBE Message | |||
An UNSUBSCRIBE request begins with the standard DSO 12-byte header | An UNSUBSCRIBE unidirectional message begins with the standard DSO | |||
[DSO], followed by the UNSUBSCRIBE primary TLV. An UNSUBSCRIBE | 12-byte header [DSO], followed by the UNSUBSCRIBE primary TLV. An | |||
request message is illustrated in Figure 3. | UNSUBSCRIBE message is illustrated in Figure 3. | |||
In accordance with the definition of DSO unidirectional messages, the | In accordance with the definition of DSO unidirectional messages, the | |||
MESSAGE ID field MUST be zero. There is no server response to a | MESSAGE ID field MUST be zero. There is no server response to an | |||
UNSUBSCRIBE message. | UNSUBSCRIBE message. | |||
The other header fields MUST be set as described in the DSO | The other header fields MUST be set as described in the DSO | |||
specification [DSO]. The DNS OPCODE field contains the OPCODE value | specification [DSO]. The DNS OPCODE field contains the OPCODE value | |||
for DNS Stateful Operations (6). The four count fields MUST be zero, | for DNS Stateful Operations (6). The four count fields MUST be zero, | |||
and the corresponding four sections MUST be empty (i.e., absent). | and the corresponding four sections MUST be empty (i.e., absent). | |||
The DSO-TYPE is UNSUBSCRIBE (tentatively 0x42). | The DSO-TYPE is UNSUBSCRIBE (tentatively 0x42). | |||
The DSO-LENGTH field contains the value 2, the length of the 2-octet | The DSO-LENGTH field contains the value 2, the length of the 2-octet | |||
MESSAGE ID contained in the DSO-DATA. | MESSAGE ID contained in the DSO-DATA. | |||
The DSO-DATA contains the value given in the MESSAGE ID field of an | The DSO-DATA contains the value given in the MESSAGE ID field of an | |||
active SUBSCRIBE request. This is how the server knows which | active SUBSCRIBE request. This is how the server knows which | |||
SUBSCRIBE request is being cancelled. After receipt of the | SUBSCRIBE request is being cancelled. After receipt of the | |||
UNSUBSCRIBE request, the SUBSCRIBE request is no longer active. | UNSUBSCRIBE message, the SUBSCRIBE request is no longer active. | |||
It is allowable for the client to issue an UNSUBSCRIBE request for a | It is allowable for the client to issue an UNSUBSCRIBE message for a | |||
previous SUBSCRIBE request for which the client has not yet received | previous SUBSCRIBE request for which the client has not yet received | |||
a SUBSCRIBE response. This is to allow for the case where a client | a SUBSCRIBE response. This is to allow for the case where a client | |||
starts and stops a subscription in less than the round-trip time to | starts and stops a subscription in less than the round-trip time to | |||
the server. The client is NOT required to wait for the SUBSCRIBE | the server. The client is NOT required to wait for the SUBSCRIBE | |||
response before issuing the UNSUBSCRIBE request. | response before issuing the UNSUBSCRIBE message. | |||
Consequently, it is possible for a server to receive an UNSUBSCRIBE | Consequently, it is possible for a server to receive an UNSUBSCRIBE | |||
request that does not match any currently active subscription. This | message that does not match any currently active subscription. This | |||
can occur when a client sends a SUBSCRIBE request, which subsequently | can occur when a client sends a SUBSCRIBE request, which subsequently | |||
fails and returns an error code, but the client sent an UNSUBSCRIBE | fails and returns an error code, but the client sent an UNSUBSCRIBE | |||
request before it became aware that the SUBSCRIBE request had failed. | message before it became aware that the SUBSCRIBE request had failed. | |||
Because of this, servers MUST silently ignore UNSUBSCRIBE requests | Because of this, servers MUST silently ignore UNSUBSCRIBE messages | |||
that do not match any currently active subscription. | that do not match any currently active subscription. | |||
1 1 1 1 1 1 | 1 1 1 1 1 1 | |||
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 | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | |||
| MESSAGE ID (MUST BE ZERO) | \ | | MESSAGE ID (MUST BE ZERO) | \ | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
|QR| OPCODE(6) | Z | RCODE | | | |QR| OPCODE(6) | Z | RCODE | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| QDCOUNT (MUST BE ZERO) | | | | QDCOUNT (MUST BE ZERO) | | | |||
skipping to change at page 24, line 32 ¶ | skipping to change at page 26, line 32 ¶ | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| ARCOUNT (MUST BE ZERO) | / | | ARCOUNT (MUST BE ZERO) | / | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | |||
| DSO-TYPE = UNSUBSCRIBE (tentatively 0x42) | | | DSO-TYPE = UNSUBSCRIBE (tentatively 0x42) | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| DSO-LENGTH (2) | | | DSO-LENGTH (2) | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | |||
| SUBSCRIBE MESSAGE ID | > DSO-DATA | | SUBSCRIBE MESSAGE ID | > DSO-DATA | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | |||
Figure 3: UNSUBSCRIBE Request | Figure 3: UNSUBSCRIBE Message | |||
6.5. DNS Push Notification RECONFIRM | 6.5. DNS Push Notification RECONFIRM | |||
Sometimes, particularly when used with a Discovery Proxy [DisProx], a | Sometimes, particularly when used with a Discovery Proxy [DisProx], a | |||
DNS Zone may contain stale data. When a client encounters data that | DNS Zone may contain stale data. When a client encounters data that | |||
it believes may be stale (e.g., an SRV record referencing a target | it believes may be stale (e.g., an SRV record referencing a target | |||
host+port that is not responding to connection requests) the client | host+port that is not responding to connection requests) the client | |||
can send a RECONFIRM request to ask the server to re-verify that the | can send a RECONFIRM message to ask the server to re-verify that the | |||
data is still valid. For a Discovery Proxy, this causes it to issue | data is still valid. For a Discovery Proxy, this causes it to issue | |||
new Multicast DNS requests to ascertain whether the target device is | new Multicast DNS queries to ascertain whether the target device is | |||
still present. How the Discovery Proxy causes these new Multicast | still present. How the Discovery Proxy causes these new Multicast | |||
DNS requests to be issued depends on the details of the underlying | DNS queries to be issued depends on the details of the underlying | |||
Multicast DNS being used. For example, a Discovery Proxy built on | Multicast DNS implementation being used. For example, a Discovery | |||
Apple's dns_sd.h API responds to a DNS Push Notification RECONFIRM | Proxy built on Apple's dns_sd.h API responds to a DNS Push | |||
message by calling the underlying API's DNSServiceReconfirmRecord() | Notification RECONFIRM message by calling the underlying API's | |||
routine. | DNSServiceReconfirmRecord() routine. | |||
For other types of DNS server, the RECONFIRM operation is currently | For other types of DNS server, the RECONFIRM operation is currently | |||
undefined, and SHOULD result in a NOERROR response, but otherwise | undefined, and SHOULD result in a NOERROR response, but otherwise | |||
need not cause any action to occur. | need not cause any action to occur. | |||
Frequent use of RECONFIRM operations may be a sign of network | Frequent use of RECONFIRM operations may be a sign of network | |||
unreliability, or some kind of misconfiguration, so RECONFIRM | unreliability, or some kind of misconfiguration, so RECONFIRM | |||
operations MAY be logged or otherwise communicated to a human | operations MAY be logged or otherwise communicated to a human | |||
administrator to assist in detecting, and remedying, such network | administrator to assist in detecting, and remedying, such network | |||
problems. | problems. | |||
If, after receiving a valid RECONFIRM request, the server determines | If, after receiving a valid RECONFIRM message, the server determines | |||
that the disputed records are in fact no longer valid, then | that the disputed records are in fact no longer valid, then | |||
subsequent DNS PUSH Messages will be generated to inform interested | subsequent DNS PUSH Messages will be generated to inform interested | |||
clients. Thus, one client discovering that a previously-advertised | clients. Thus, one client discovering that a previously-advertised | |||
device (like a network printer) is no longer present has the side | device (like a network printer) is no longer present has the side | |||
effect of informing all other interested clients that the device in | effect of informing all other interested clients that the device in | |||
question is now gone. | question is now gone. | |||
6.5.1. RECONFIRM Request | 6.5.1. RECONFIRM Message | |||
A RECONFIRM request begins with the standard DSO 12-byte header | A RECONFIRM unidirectional message begins with the standard DSO | |||
[DSO], followed by the RECONFIRM primary TLV. A RECONFIRM request | 12-byte header [DSO], followed by the RECONFIRM primary TLV. A | |||
message is illustrated in Figure 4. | RECONFIRM message is illustrated in Figure 4. | |||
The MESSAGE ID field MUST be set to a unique value, that the client | In accordance with the definition of DSO unidirectional messages, the | |||
is not using for any other active operation on this DSO session. For | MESSAGE ID field MUST be zero. There is no server response to a | |||
the purposes here, a MESSAGE ID is in use on this session if the | RECONFIRM message. | |||
client has used it in a request for which it has not yet received a | ||||
response, or if the client has used it for a subscription which it | ||||
has not yet cancelled using UNSUBSCRIBE. In the RECONFIRM response | ||||
the server MUST echo back the MESSAGE ID value unchanged. | ||||
The other header fields MUST be set as described in the DSO | The other header fields MUST be set as described in the DSO | |||
specification [DSO]. The DNS OPCODE field contains the OPCODE value | specification [DSO]. The DNS OPCODE field contains the OPCODE value | |||
for DNS Stateful Operations (6). The four count fields MUST be zero, | for DNS Stateful Operations (6). The four count fields MUST be zero, | |||
and the corresponding four sections MUST be empty (i.e., absent). | and the corresponding four sections MUST be empty (i.e., absent). | |||
The DSO-TYPE is RECONFIRM (tentatively 0x43). | The DSO-TYPE is RECONFIRM (tentatively 0x43). | |||
The DSO-LENGTH is the length of the data that follows, which | The DSO-LENGTH is the length of the data that follows, which | |||
specifies the name, type, class, and content of the record being | specifies the name, type, class, and content of the record being | |||
skipping to change at page 26, line 44 ¶ | skipping to change at page 29, line 33 ¶ | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ \ | |||
\ NAME \ \ | \ NAME \ \ | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
| TYPE | | | | TYPE | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ > DSO-DATA | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ > DSO-DATA | |||
| CLASS | | | | CLASS | | | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | |||
\ RDATA \ / | \ RDATA \ / | |||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / | |||
Figure 4: RECONFIRM Request | Figure 4: RECONFIRM Message | |||
The DSO-DATA for a RECONFIRM request MUST contain exactly one record. | The DSO-DATA for a RECONFIRM message MUST contain exactly one record. | |||
The DSO-DATA for a RECONFIRM request has no count field to specify | The DSO-DATA for a RECONFIRM message has no count field to specify | |||
more than one record. Since RECONFIRM requests are sent over TCP, | more than one record. Since RECONFIRM messages are sent over TCP, | |||
multiple RECONFIRM request messages can be concatenated in a single | multiple RECONFIRM messages can be concatenated in a single TCP | |||
TCP stream and packed efficiently into TCP segments. | stream and packed efficiently into TCP segments. | |||
TYPE MUST NOT be the value ANY (255) and CLASS MUST NOT be the value | TYPE MUST NOT be the value ANY (255) and CLASS MUST NOT be the value | |||
ANY (255). | ANY (255). | |||
DNS wildcarding is not supported. That is, a wildcard ("*") in a | DNS wildcarding is not supported. That is, a wildcard ("*") in a | |||
RECONFIRM message matches only a literal wildcard character ("*") in | RECONFIRM message matches only a literal wildcard character ("*") in | |||
the zone, and nothing else. | the zone, and nothing else. | |||
Aliasing is not supported. That is, a CNAME in a RECONFIRM message | Aliasing is not supported. That is, a CNAME in a RECONFIRM message | |||
matches only a literal CNAME record in the zone, and nothing else. | matches only a literal CNAME record in the zone, and nothing else. | |||
6.5.2. RECONFIRM Response | ||||
Each RECONFIRM request generates exactly one RECONFIRM response from | ||||
the server. | ||||
A RECONFIRM response begins with the standard DSO 12-byte header | ||||
[DSO], possibly followed by one or more optional TLVs, such as a | ||||
Retry Delay TLV. For suggested values for the Retry Delay TLV, see | ||||
Section 6.2.2. | ||||
The MESSAGE ID field MUST echo the value given in the ID field of the | ||||
RECONFIRM request. This is how the client knows which request is | ||||
being responded to. | ||||
A RECONFIRM response message MUST NOT include a DSO RECONFIRM TLV. | ||||
If a client receives a RECONFIRM response message containing a | ||||
RECONFIRM TLV then the response message is processed but the | ||||
RECONFIRM TLV MUST be silently ignored. | ||||
In the RECONFIRM response the RCODE confirms receipt of the | ||||
reconfirmation request. Supported RCODEs are as follows: | ||||
+-----------+-------+-----------------------------------------------+ | ||||
| Mnemonic | Value | Description | | ||||
+-----------+-------+-----------------------------------------------+ | ||||
| NOERROR | 0 | RECONFIRM accepted. | | ||||
| FORMERR | 1 | Server failed to process request due to a | | ||||
| | | malformed request. | | ||||
| SERVFAIL | 2 | Server failed to process request due to a | | ||||
| | | problem with the server. | | ||||
| NOTIMP | 4 | Server does not implement DSO. | | ||||
| REFUSED | 5 | Server refuses to process request for policy | | ||||
| | | or security reasons. | | ||||
| NOTAUTH | 9 | Server is not authoritative for the requested | | ||||
| | | name. | | ||||
| DSOTYPENI | 11 | RECONFIRM operation not supported. | | ||||
+-----------+-------+-----------------------------------------------+ | ||||
Table 2: RECONFIRM Response codes | ||||
This document specifies only these RCODE values for RECONFIRM | ||||
Responses. Servers sending RECONFIRM Responses SHOULD use one of | ||||
these values. Note that NXDOMAIN is not a valid RCODE in response to | ||||
a RECONFIRM Request. However, future circumstances may create | ||||
situations where other RCODE values are appropriate in RECONFIRM | ||||
Responses, so clients MUST be prepared to accept RECONFIRM Responses | ||||
with any other RCODE value. | ||||
Nonzero RCODE values signal some kind of error. | ||||
RCODE value FORMERR indicates a message format error, for example | ||||
TYPE or CLASS being ANY (255). | ||||
RCODE value SERVFAIL indicates that the server has exhausted its | ||||
resources or other serious problem occurred. | ||||
RCODE values NOTIMP indicates that the server does not support DSO, | ||||
and DSO is required for RECONFIRM requests. | ||||
RCODE value REFUSED indicates that the server supports RECONFIRM | ||||
requests but is currently not configured to accept them from this | ||||
client. | ||||
RCODE value NOTAUTH indicates that the server is not authoritative | ||||
for the requested name, and can do nothing to remedy the apparent | ||||
error. Note that there may be future cases in which a server is able | ||||
to pass on the RECONFIRM request to the ultimate source of the | ||||
information, and in these cases the server should return NOERROR. | ||||
RCODE value DSOTYPENI indicates that the server does not support | ||||
RECONFIRM requests. | ||||
Nonzero RCODE values SERVFAIL, REFUSED and DSOTYPENI are benign from | ||||
the client's point of view. The client may log them to aid in | ||||
debugging, but otherwise they require no special action. | ||||
Nonzero RCODE values other than these three indicate a serious | ||||
problem with the client. After sending an error response other than | ||||
one of these three, the server SHOULD send a DSO Retry Delay TLV to | ||||
end the DSO session, as described in the DSO specification [DSO]. | ||||
6.6. DNS Stateful Operations TLV Context Summary | 6.6. DNS Stateful Operations TLV Context Summary | |||
This document defines four new DSO TLVs. As suggested in Section 8.2 | This document defines four new DSO TLVs. As suggested in Section 8.2 | |||
of the DNS Stateful Operations specification [DSO], the valid | of the DNS Stateful Operations specification [DSO], the valid | |||
contexts of these new TLV types are summarized below. | contexts of these new TLV types are summarized below. | |||
The client TLV contexts are: | The client TLV contexts are: | |||
C-P: Client request message, primary TLV | C-P: Client request message, primary TLV | |||
C-U: Client unidirectional message, primary TLV | C-U: Client unidirectional message, primary TLV | |||
skipping to change at page 30, line 28 ¶ | skipping to change at page 30, line 28 ¶ | |||
+-------------+-----+-----+-----+-----+-----+ | +-------------+-----+-----+-----+-----+-----+ | |||
| TLV Type | C-P | C-U | C-A | CRP | CRA | | | TLV Type | C-P | C-U | C-A | CRP | CRA | | |||
+-------------+-----+-----+-----+-----+-----+ | +-------------+-----+-----+-----+-----+-----+ | |||
| SUBSCRIBE | X | | | | | | | SUBSCRIBE | X | | | | | | |||
| PUSH | | | | | | | | PUSH | | | | | | | |||
| UNSUBSCRIBE | | X | | | | | | UNSUBSCRIBE | | X | | | | | |||
| RECONFIRM | X | | | | | | | RECONFIRM | X | | | | | | |||
+-------------+-----+-----+-----+-----+-----+ | +-------------+-----+-----+-----+-----+-----+ | |||
Table 3: DSO TLV Client Context Summary | Table 2: DSO TLV Client Context Summary | |||
The server TLV contexts are: | The server TLV contexts are: | |||
S-P: Server request message, primary TLV | S-P: Server request message, primary TLV | |||
S-U: Server unidirectional message, primary TLV | S-U: Server unidirectional message, primary TLV | |||
S-A: Server request or unidirectional message, additional TLV | S-A: Server request or unidirectional message, additional TLV | |||
SRP: Response back to server, primary TLV | SRP: Response back to server, primary TLV | |||
SRA: Response back to server, additional TLV | SRA: Response back to server, additional TLV | |||
+-------------+-----+-----+-----+-----+-----+ | +-------------+-----+-----+-----+-----+-----+ | |||
| TLV Type | S-P | S-U | S-A | SRP | SRA | | | TLV Type | S-P | S-U | S-A | SRP | SRA | | |||
+-------------+-----+-----+-----+-----+-----+ | +-------------+-----+-----+-----+-----+-----+ | |||
| SUBSCRIBE | | | | | | | | SUBSCRIBE | | | | | | | |||
| PUSH | | X | | | | | | PUSH | | X | | | | | |||
| UNSUBSCRIBE | | | | | | | | UNSUBSCRIBE | | | | | | | |||
| RECONFIRM | | | | | | | | RECONFIRM | | | | | | | |||
+-------------+-----+-----+-----+-----+-----+ | +-------------+-----+-----+-----+-----+-----+ | |||
Table 4: DSO TLV Server Context Summary | Table 3: DSO TLV Server Context Summary | |||
6.7. Client-Initiated Termination | 6.7. Client-Initiated Termination | |||
An individual subscription is terminated by sending an UNSUBSCRIBE | An individual subscription is terminated by sending an UNSUBSCRIBE | |||
TLV for that specific subscription, or all subscriptions can be | TLV for that specific subscription, or all subscriptions can be | |||
cancelled at once by the client closing the DSO session. When a | cancelled at once by the client closing the DSO session. When a | |||
client terminates an individual subscription (via UNSUBSCRIBE) or all | client terminates an individual subscription (via UNSUBSCRIBE) or all | |||
subscriptions on that DSO session (by ending the session) it is | subscriptions on that DSO session (by ending the session) it is | |||
signaling to the server that it is longer interested in receiving | signaling to the server that it is longer interested in receiving | |||
those particular updates. It is informing the server that the server | those particular updates. It is informing the server that the server | |||
skipping to change at page 33, line 42 ¶ | skipping to change at page 33, line 42 ¶ | |||
Registry Service Types [RFC6335][ST] that is only applicable for the | Registry Service Types [RFC6335][ST] that is only applicable for the | |||
TCP protocol. | TCP protocol. | |||
+-----------------------+------+----------------------+-------------+ | +-----------------------+------+----------------------+-------------+ | |||
| Name | Port | Value | Definition | | | Name | Port | Value | Definition | | |||
+-----------------------+------+----------------------+-------------+ | +-----------------------+------+----------------------+-------------+ | |||
| DNS Push Notification | None | "_dns-push-tls._tcp" | Section 6.1 | | | DNS Push Notification | None | "_dns-push-tls._tcp" | Section 6.1 | | |||
| Service Type | | | | | | Service Type | | | | | |||
+-----------------------+------+----------------------+-------------+ | +-----------------------+------+----------------------+-------------+ | |||
Table 5: IANA Service Type Assignments | Table 4: IANA Service Type Assignments | |||
This document also defines four new DNS Stateful Operation TLV types | This document also defines four new DNS Stateful Operation TLV types | |||
to be recorded in the IANA DSO Type Code Registry. | to be recorded in the IANA DSO Type Code Registry. | |||
+-------------+------------------------+-------------+ | +-------------+------------------------+-------------+ | |||
| Name | Value | Definition | | | Name | Value | Definition | | |||
+-------------+------------------------+-------------+ | +-------------+------------------------+-------------+ | |||
| SUBSCRIBE | TBA (tentatively 0x40) | Section 6.2 | | | SUBSCRIBE | TBA (tentatively 0x40) | Section 6.2 | | |||
| PUSH | TBA (tentatively 0x41) | Section 6.3 | | | PUSH | TBA (tentatively 0x41) | Section 6.3 | | |||
| UNSUBSCRIBE | TBA (tentatively 0x42) | Section 6.4 | | | UNSUBSCRIBE | TBA (tentatively 0x42) | Section 6.4 | | |||
| RECONFIRM | TBA (tentatively 0x43) | Section 6.5 | | | RECONFIRM | TBA (tentatively 0x43) | Section 6.5 | | |||
+-------------+------------------------+-------------+ | +-------------+------------------------+-------------+ | |||
Table 6: IANA DSO TLV Type Code Assignments | Table 5: IANA DSO TLV Type Code Assignments | |||
9. Acknowledgements | 9. Acknowledgements | |||
The authors would like to thank Kiren Sekar and Marc Krochmal for | The authors would like to thank Kiren Sekar and Marc Krochmal for | |||
previous work completed in this field. | previous work completed in this field. | |||
This draft has been improved due to comments from Ran Atkinson, Tim | This draft has been improved due to comments from Ran Atkinson, Tim | |||
Chown, Mark Delany, Ralph Droms, Bernie Volz, Jan Komissar, Manju | Chown, Mark Delany, Ralph Droms, Bernie Volz, Jan Komissar, Manju | |||
Shankar Rao, Markus Stenberg, Dave Thaler, Soraia Zlatkovic, Sara | Shankar Rao, Markus Stenberg, Dave Thaler, Soraia Zlatkovic, Sara | |||
Dickinson, and Andrew Sullivan. Ted Lemon provided clarifying text | Dickinson, and Andrew Sullivan. Ted Lemon provided clarifying text | |||
skipping to change at page 36, line 39 ¶ | skipping to change at page 36, line 39 ¶ | |||
[LLQ] Sekar, K., "DNS Long-Lived Queries", draft-sekar-dns- | [LLQ] Sekar, K., "DNS Long-Lived Queries", draft-sekar-dns- | |||
llq-01 (work in progress), August 2006. | llq-01 (work in progress), August 2006. | |||
[obs] "Observer Pattern", | [obs] "Observer Pattern", | |||
<https://en.wikipedia.org/wiki/Observer_pattern>. | <https://en.wikipedia.org/wiki/Observer_pattern>. | |||
[RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS | [RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS | |||
NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998, | NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998, | |||
<https://www.rfc-editor.org/info/rfc2308>. | <https://www.rfc-editor.org/info/rfc2308>. | |||
[RFC3123] Koch, P., "A DNS RR Type for Lists of Address Prefixes | ||||
(APL RR)", RFC 3123, DOI 10.17487/RFC3123, June 2001, | ||||
<https://www.rfc-editor.org/info/rfc3123>. | ||||
[RFC4287] Nottingham, M., Ed. and R. Sayre, Ed., "The Atom | [RFC4287] Nottingham, M., Ed. and R. Sayre, Ed., "The Atom | |||
Syndication Format", RFC 4287, DOI 10.17487/RFC4287, | Syndication Format", RFC 4287, DOI 10.17487/RFC4287, | |||
December 2005, <https://www.rfc-editor.org/info/rfc4287>. | December 2005, <https://www.rfc-editor.org/info/rfc4287>. | |||
[RFC4953] Touch, J., "Defending TCP Against Spoofing Attacks", | [RFC4953] Touch, J., "Defending TCP Against Spoofing Attacks", | |||
RFC 4953, DOI 10.17487/RFC4953, July 2007, | RFC 4953, DOI 10.17487/RFC4953, July 2007, | |||
<https://www.rfc-editor.org/info/rfc4953>. | <https://www.rfc-editor.org/info/rfc4953>. | |||
[RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, | [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, | |||
"Transport Layer Security (TLS) Session Resumption without | "Transport Layer Security (TLS) Session Resumption without | |||
End of changes. 41 change blocks. | ||||
180 lines changed or deleted | 170 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |