| < draft-ietf-dnssd-push-12.txt | draft-ietf-dnssd-push-13.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force T. Pusateri | Internet Engineering Task Force T. Pusateri | |||
| Internet-Draft Seeking affiliation | Internet-Draft Unaffiliated | |||
| Intended status: Standards Track S. Cheshire | Intended status: Standards Track S. Cheshire | |||
| Expires: January 3, 2018 Apple Inc. | Expires: May 2, 2018 Apple Inc. | |||
| July 2, 2017 | October 29, 2017 | |||
| DNS Push Notifications | DNS Push Notifications | |||
| draft-ietf-dnssd-push-12 | draft-ietf-dnssd-push-13 | |||
| 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 is relatively static. When | efficiently for queries for data that is 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 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 January 3, 2018. | This Internet-Draft will expire on May 2, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 6, line 9 ¶ | skipping to change at page 6, line 9 ¶ | |||
| "Print" button again when they wake their phone up. | "Print" button again when they wake their phone up. | |||
| A DNS Push Notification client must not routinely keep a DNS Push | A DNS Push Notification client must not routinely keep a DNS Push | |||
| Notification subscription active 24 hours a day, 7 days a week, just | Notification subscription active 24 hours a day, 7 days a week, just | |||
| to keep a list in memory up to date so that if the user does choose | to keep a list in memory up to date so that if the user does choose | |||
| to bring up an on-screen display of that data, it can be displayed | to bring up an on-screen display of that data, it can be displayed | |||
| really fast. DNS Push Notifications are designed to be fast enough | really fast. DNS Push Notifications are designed to be fast enough | |||
| that there is no need to pre-load a "warm" list in memory just in | that there is no need to pre-load a "warm" list in memory just in | |||
| case it might be needed later. | case it might be needed later. | |||
| Generally, as described in the DNS Session Signaling specification | Generally, as described in the DNS Stateful Operations specification | |||
| [SessSig], a client must not keep a connection to a server open | [StatefulOp], a client must not keep a connection to a server open | |||
| indefinitely if it has no subscriptions (or other operations) active | indefinitely if it has no subscriptions (or other operations) active | |||
| on that connection. A client MAY close a connection as soon as it | on that connection. A client MAY close a connection as soon as it | |||
| becomes idle, and then if needed in the future, open a new connection | becomes idle, and then if needed in the future, open a new connection | |||
| when required. Alternatively, a client MAY speculatively keep an | when required. Alternatively, a client MAY speculatively keep an | |||
| idle connection open for some time, subject to the constraint that it | idle connection open for some time, subject to the constraint that it | |||
| MUST NOT keep a connection open that has been idle for more than the | MUST NOT keep a connection open that has been idle for more than the | |||
| session's idle timeout (15 seconds by default). | session's idle timeout (15 seconds by default). | |||
| 4. Transport | 4. Transport | |||
| skipping to change at page 8, line 8 ¶ | skipping to change at page 8, line 8 ¶ | |||
| connections to alternate DNS servers that support DNS Push | connections to alternate DNS servers that support DNS Push | |||
| Notifications for the zone and distribute subscriptions at its | Notifications for the zone and distribute subscriptions at its | |||
| discretion. In this way, both clients and servers can react to | discretion. In this way, both clients and servers can react to | |||
| resource constraints. Token bucket rate limiting schemes are also | resource constraints. Token bucket rate limiting schemes are also | |||
| effective in providing fairness by a server across numerous client | effective in providing fairness by a server across numerous client | |||
| requests. | requests. | |||
| 6. Protocol Operation | 6. Protocol Operation | |||
| The DNS Push Notification protocol is a session-oriented protocol, | The DNS Push Notification protocol is a session-oriented protocol, | |||
| and makes use of DNS Session Signaling [SessSig]. | and makes use of DNS Stateful Operations [StatefulOp]. | |||
| For details of the DNS Session Signaling message format refer to the | For details of the DNS Stateful Operations message format refer to | |||
| DNS Session Signaling specification [SessSig]. Those details are not | the DNS Stateful Operations specification [StatefulOp]. Those | |||
| repeated here. | details are not repeated here. | |||
| DNS Push Notification clients and servers MUST support DNS Session | DNS Push Notification clients and servers MUST support DNS Stateful | |||
| Signaling, but the server SHOULD NOT issue any DNS Session Signaling | Operations, but the server SHOULD NOT issue any DNS Stateful | |||
| operations until after the client has first initiated a DNS Session | Operations messages until after the client has first initiated a DNS | |||
| Signaling operation of its own. A single server can support DNS | Stateful Operation of its own. A single server can support DNS | |||
| Queries, DNS Updates, and DNS Push Notifications (using DNS Session | Queries, DNS Updates, and DNS Push Notifications (using DNS Stateful | |||
| Signaling) on the same TCP port, and until the client has sent at | Operations) on the same TCP port, and until the client has sent at | |||
| least one DNS Session Signaling operation the server does not know | least one DNS Stateful Operations message, the server does not know | |||
| what kind of client has connected to it. Once the client has | what kind of client has connected to it. Once the client has | |||
| indicated willingness to use DNS Session Signaling operations by | indicated willingness to use DNS Stateful Operations by sending one | |||
| sending one of its own, either side of the connection may then | of its own, either side of the connection may then initiate further | |||
| initiate further Session Signaling operations at any time. | Stateful Operations at any time. | |||
| A DNS Push Notification exchange begins with the client discovering | A DNS Push Notification exchange begins with the client discovering | |||
| the appropriate server, using the procedure described in Section 6.1, | the appropriate server, using the procedure described in Section 6.1, | |||
| and then making a TLS/TCP connection to it. | and then making a TLS/TCP connection to it. | |||
| A typical DNS Push Notification client will immediately issue a DNS | A typical DNS Push Notification client will immediately issue a DNS | |||
| Session Signaling Keepalive operation to request a session timeout or | Stateful Operations Keepalive operation to request a session timeout | |||
| keepalive interval longer than the the 15-second defaults, but this | or keepalive interval longer than the the 15-second defaults, but | |||
| is not required. A DNS Push Notification client MAY issue other | this is not required. A DNS Push Notification client MAY issue other | |||
| requests on the connection first, and only issue a DNS Session | requests on the connection first, and only issue a DNS Stateful | |||
| Signaling Keepalive operation later if it determines that to be | Operations Keepalive operation later if it determines that to be | |||
| necessary. | necessary. | |||
| Once the connection is made, the client may then add and remove Push | Once the connection is made, the client may then add and remove Push | |||
| Notification subscriptions. In accordance with the current set of | Notification subscriptions. In accordance with the current set of | |||
| active subscriptions the server sends relevant asynchronous Push | active subscriptions the server sends relevant asynchronous Push | |||
| Notifications to the client. Note that a client MUST be prepared to | Notifications to the client. Note that a client MUST be prepared to | |||
| receive (and silently ignore) Push Notifications for subscriptions it | receive (and silently ignore) Push Notifications for subscriptions it | |||
| has previously removed, since there is no way to prevent the | has previously removed, since there is no way to prevent the | |||
| situation where a Push Notification is in flight from server to | situation where a Push Notification is in flight from server to | |||
| client while the client's UNSUBSCRIBE message cancelling that | client while the client's UNSUBSCRIBE message cancelling that | |||
| skipping to change at page 12, line 12 ¶ | skipping to change at page 12, line 12 ¶ | |||
| discovery process can be completed nearly instantaneously by the | discovery process can be completed nearly instantaneously by the | |||
| client, using only locally-stored cached data. | client, using only locally-stored cached data. | |||
| 6.2. DNS Push Notification SUBSCRIBE | 6.2. DNS Push Notification SUBSCRIBE | |||
| After connecting, and requesting a longer idle timeout and/or | After connecting, and requesting a longer idle timeout and/or | |||
| keepalive interval if necessary, a DNS Push Notification client then | keepalive interval if necessary, a DNS Push Notification client then | |||
| indicates its desire to receive DNS Push Notifications for a given | indicates its desire to receive DNS Push Notifications for a given | |||
| domain name by sending a SUBSCRIBE request over the established TLS | domain name by sending a SUBSCRIBE request over the established TLS | |||
| connection to the server. A SUBSCRIBE request is encoded in a DNS | connection to the server. A SUBSCRIBE request is encoded in a DNS | |||
| Session Signaling [SessSig] message. This specification defines a | Stateful Operations [StatefulOp] message. This specification defines | |||
| DNS Session Signaling TLV for DNS Push Notification SUBSCRIBE | a DNS Stateful Operations TLV for DNS Push Notification SUBSCRIBE | |||
| Requests/Responses (tentatively Session Signaling Type Code 0x40). | Requests/Responses (tentatively Stateful Operations Type Code 0x40). | |||
| The entity that initiates a SUBSCRIBE request is by definition the | The entity that initiates a SUBSCRIBE request is by definition the | |||
| client. A server should not send a SUBSCRIBE request over an | client. A server should not send a SUBSCRIBE request over an | |||
| existing connection from a client. If a server does send a SUBSCRIBE | existing connection from a client. If a server does send a SUBSCRIBE | |||
| request over the connection initiated by a client, it is an error and | request over the connection initiated by a client, it is an error and | |||
| the client should acknowledge the request with the error response | the client should acknowledge the request with the error response | |||
| RCODE NOTAUTH (Not Authoritative). | RCODE NOTAUTH (Not Authoritative). | |||
| 6.2.1. SUBSCRIBE Request | 6.2.1. SUBSCRIBE Request | |||
| A SUBSCRIBE request message begins with the standard DNS Session | A SUBSCRIBE request message begins with the standard DNS Stateful | |||
| Signaling 12-byte header [SessSig], followed by the SUBSCRIBE TLV. A | Operations 12-byte header [StatefulOp], followed by the SUBSCRIBE | |||
| SUBSCRIBE request message is illustrated below: | TLV. A SUBSCRIBE request message is illustrated below: | |||
| 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 | | | MESSAGE ID | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| |QR| Opcode | Z | RCODE | | |QR| Opcode | Z | RCODE | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| | QDCOUNT (MUST BE ZERO) | | | QDCOUNT (MUST BE ZERO) | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| skipping to change at page 13, line 49 ¶ | skipping to change at page 13, line 49 ¶ | |||
| Figure 1 | Figure 1 | |||
| The MESSAGE ID field MUST be set to a unique value, that the client | The MESSAGE ID field MUST be set to a unique value, that the client | |||
| is not using for any other active operation on this connection. For | is not using for any other active operation on this connection. For | |||
| the purposes here, a MESSAGE ID is in use on this connection if the | the purposes here, a MESSAGE ID is in use on this connection if the | |||
| client has used it in a request for which it has not yet received a | 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 | response, or if the client has used it for a subscription which it | |||
| has not yet cancelled using UNSUBSCRIBE. In the SUBSCRIBE response | has not yet cancelled using UNSUBSCRIBE. In the SUBSCRIBE response | |||
| the server MUST echo back the MESSAGE ID value unchanged. | the server MUST echo back the MESSAGE ID value unchanged. | |||
| The other header fields MUST be set as described in the DNS Session | The other header fields MUST be set as described in the DNS Stateful | |||
| Signaling specification [SessSig]. The DNS Opcode is the Session | Operations specification [StatefulOp]. The DNS Opcode is the | |||
| Signaling Opcode (tentatively 6). The four count fields MUST be | Stateful Operations Opcode (tentatively 6). The four count fields | |||
| zero, and the corresponding four sections MUST be empty (i.e., | MUST be zero, and the corresponding four sections MUST be empty | |||
| absent). | (i.e., absent). | |||
| The SSOP-TYPE is SUBSCRIBE (tentatively 0x40). The SSOP-LENGTH is | The SSOP-TYPE is SUBSCRIBE (tentatively 0x40). The SSOP-LENGTH is | |||
| the length of the SSOP-DATA that follows, which specifies the name, | the length of the SSOP-DATA that follows, which specifies the name, | |||
| type, and class of the record(s) being sought. | type, and class of the record(s) being sought. | |||
| The SSOP-DATA for a SUBSCRIBE request MUST contain exactly one | The SSOP-DATA for a SUBSCRIBE request MUST contain exactly one | |||
| question. The SSOP-DATA for a SUBSCRIBE request has no QDCOUNT field | question. The SSOP-DATA for a SUBSCRIBE request has no QDCOUNT field | |||
| to specify more than one question. Since SUBSCRIBE requests are sent | to specify more than one question. Since SUBSCRIBE requests are sent | |||
| over TCP, multiple SUBSCRIBE request messages can be concatenated in | over TCP, multiple SUBSCRIBE request messages can be concatenated in | |||
| a single TCP stream and packed efficiently into TCP segments. | a single TCP stream and packed efficiently into TCP segments. | |||
| skipping to change at page 16, line 10 ¶ | skipping to change at page 16, line 10 ¶ | |||
| interpreted to mean "ALL", not "ANY". After accepting a subscription | interpreted to mean "ALL", not "ANY". After accepting a subscription | |||
| where one or both of TYPE or CLASS are 255, the server MUST send Push | where one or both of TYPE or CLASS are 255, the server MUST send Push | |||
| Notification Updates for ALL record changes that match the | Notification Updates for ALL record changes that match the | |||
| subscription, not just some of them. | subscription, not just some of them. | |||
| 6.2.2. SUBSCRIBE Response | 6.2.2. SUBSCRIBE Response | |||
| Each SUBSCRIBE request generates exactly one SUBSCRIBE response from | Each SUBSCRIBE request generates exactly one SUBSCRIBE response from | |||
| the server. | the server. | |||
| A SUBSCRIBE response message begins with the standard DNS Session | A SUBSCRIBE response message begins with the standard DNS Stateful | |||
| Signaling 12-byte header [SessSig], possibly followed by one or more | Operations 12-byte header [StatefulOp], possibly followed by one or | |||
| optional Modifier TLVs, such as a Retry Delay Modifier TLV. | more optional Modifier TLVs, such as a Retry Delay Modifier TLV. | |||
| The MESSAGE ID field MUST echo the value given in the ID field of the | The MESSAGE ID field MUST echo the value given in the ID field of the | |||
| SUBSCRIBE request. This is how the client knows which request is | SUBSCRIBE request. This is how the client knows which request is | |||
| being responded to. | being responded to. | |||
| A SUBSCRIBE response message MUST NOT contain a Session Signaling | A SUBSCRIBE response message MUST NOT contain a Stateful Operations | |||
| Operation TLV. The Session Signaling Operation TLV is NOT copied | Operation TLV. The Stateful Operations Operation TLV is NOT copied | |||
| from the SUBSCRIBE request. | from the SUBSCRIBE request. | |||
| In the SUBSCRIBE response the RCODE indicates whether or not the | In the SUBSCRIBE response the RCODE indicates whether or not the | |||
| subscription was accepted. Supported RCODEs are as follows: | subscription was accepted. Supported RCODEs are as follows: | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| | Mnemonic | Value | Description | | | Mnemonic | Value | Description | | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| | NOERROR | 0 | SUBSCRIBE successful. | | | NOERROR | 0 | SUBSCRIBE successful. | | |||
| | FORMERR | 1 | Server failed to process request due to a | | | FORMERR | 1 | Server failed to process request due to a | | |||
| | | | malformed request. | | | | | malformed request. | | |||
| | SERVFAIL | 2 | Server failed to process request due to a | | | SERVFAIL | 2 | Server failed to process request due to a | | |||
| | | | problem with the server. | | | | | problem with the server. | | |||
| | NXDOMAIN | 3 | NOT APPLICABLE. DNS Push Notification | | | NXDOMAIN | 3 | NOT APPLICABLE. DNS Push Notification | | |||
| | | | servers MUST NOT return NXDOMAIN errors in | | | | | servers MUST NOT return NXDOMAIN errors in | | |||
| | | | response to SUBSCRIBE requests. | | | | | response to SUBSCRIBE requests. | | |||
| | NOTIMP | 4 | Server does not recognize DNS Session | | | NOTIMP | 4 | Server does not recognize DNS Stateful | | |||
| | | | Signaling Opcode. | | | | | Operations Opcode. | | |||
| | REFUSED | 5 | Server refuses to process request for policy | | | REFUSED | 5 | Server refuses to process request for policy | | |||
| | | | or security reasons. | | | | | or security reasons. | | |||
| | NOTAUTH | 9 | Server is not authoritative for the | | | NOTAUTH | 9 | Server is not authoritative for the | | |||
| | | | requested name. | | | | | requested name. | | |||
| | SSOPNOTIMP | 11 | SUBSCRIBE operation not supported. | | | SSOPNOTIMP | 11 | SUBSCRIBE operation not supported. | | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| SUBSCRIBE Response codes | SUBSCRIBE Response codes | |||
| This document specifies only these RCODE values for SUBSCRIBE | This document specifies only these RCODE values for SUBSCRIBE | |||
| skipping to change at page 17, line 13 ¶ | skipping to change at page 17, line 13 ¶ | |||
| value. | value. | |||
| If the server sends a nonzero RCODE in the SUBSCRIBE response, either | If the server sends a nonzero RCODE in the SUBSCRIBE response, either | |||
| the client is (at least partially) misconfigured, the server | the client is (at least partially) misconfigured, the server | |||
| resources are exhausted, or there is some other unknown failure on | resources are exhausted, or there is some other unknown failure on | |||
| the server. In any case, the client shouldn't retry the subscription | the server. In any case, the client shouldn't retry the subscription | |||
| right away. Either end can terminate the connection, but the client | right away. Either end can terminate the connection, but the client | |||
| may want to try this subscription again, or it may have other | may want to try this subscription again, or it may have other | |||
| successful subscriptions that it doesn't want to abandon. If the | successful subscriptions that it doesn't want to abandon. If the | |||
| server sends a nonzero RCODE then it SHOULD append a Retry Delay | server sends a nonzero RCODE then it SHOULD append a Retry Delay | |||
| Modifier TLV [SessSig] to the response specifying a delay before the | Modifier TLV [StatefulOp] to the response specifying a delay before | |||
| client attempts this operation again. Recommended values for the | the client attempts this operation again. Recommended values for the | |||
| delay for different RCODE values are given below: | delay for different RCODE values are given below: | |||
| For RCODE = 1 (FORMERR) the delay may be any value selected by the | For RCODE = 1 (FORMERR) the delay may be any value selected by the | |||
| implementer. A value of five minutes is RECOMMENDED, to reduce | implementer. A value of five minutes is RECOMMENDED, to reduce | |||
| the risk of high load from defective clients. | the risk of high load from defective clients. | |||
| For RCODE = 2 (SERVFAIL) the delay should be chosen according to | For RCODE = 2 (SERVFAIL) the delay should be chosen according to | |||
| the level of server overload and the anticipated duration of that | the level of server overload and the anticipated duration of that | |||
| overload. By default, a value of one minute is RECOMMENDED. If a | overload. By default, a value of one minute is RECOMMENDED. If a | |||
| more serious server failure occurs, the delay may be longer in | more serious server failure occurs, the delay may be longer in | |||
| accordance with the specific problem encountered. | accordance with the specific problem encountered. | |||
| For RCODE = 4 (NOTIMP), which occurs on a server that doesn't | For RCODE = 4 (NOTIMP), which occurs on a server that doesn't | |||
| implement DNS Session Signaling [SessSig], it is unlikely that the | implement DNS Stateful Operations [StatefulOp], it is unlikely | |||
| server will begin supporting DNS Session Signaling in the next few | that the server will begin supporting DNS Stateful Operations in | |||
| minutes, so the retry delay SHOULD be one hour. | the next few minutes, so the retry delay SHOULD be one hour. | |||
| For RCODE = 5 (REFUSED), which occurs on a server that implements | For RCODE = 5 (REFUSED), which occurs on a server that implements | |||
| DNS Push Notifications, but is currently configured to disallow | DNS Push Notifications, but is currently configured to disallow | |||
| DNS Push Notifications, the retry delay may be any value selected | DNS Push Notifications, the retry delay may be any value selected | |||
| by the implementer and/or configured by the operator. | by the implementer and/or configured by the operator. | |||
| This is a misconfiguration, since this server is listed in a | This is a misconfiguration, since this server is listed in a | |||
| "_dns-push-tls._tcp.<zone>" SRV record, but the server itself is | "_dns-push-tls._tcp.<zone>" SRV record, but the server itself is | |||
| not currently configured to support DNS Push Notifications. Since | not currently configured to support DNS Push Notifications. Since | |||
| it is possible that the misconfiguration may be repaired at any | it is possible that the misconfiguration may be repaired at any | |||
| time, the retry delay should not be set too high. By default, a | time, the retry delay should not be set too high. By default, a | |||
| skipping to change at page 18, line 24 ¶ | skipping to change at page 18, line 24 ¶ | |||
| For RCODE = 9 (NOTAUTH), the time delay applies to requests for other | For RCODE = 9 (NOTAUTH), the time delay applies to requests for other | |||
| names falling within the same zone. Requests for names falling | names falling within the same zone. Requests for names falling | |||
| within other zones are not subject to the delay. For all other | within other zones are not subject to the delay. For all other | |||
| RCODEs the time delay applies to all subsequent requests to this | RCODEs the time delay applies to all subsequent requests to this | |||
| server. | server. | |||
| After sending an error response the server MAY allow the connection | After sending an error response the server MAY allow the connection | |||
| to remain open, or MAY send a DNS Push Notification Retry Delay | to remain open, or MAY send a DNS Push Notification Retry Delay | |||
| Operation TLV instructing the client to close the TCP connection, as | Operation TLV instructing the client to close the TCP connection, as | |||
| described in the DNS Session Signaling specification [SessSig]. | described in the DNS Stateful Operations specification [StatefulOp]. | |||
| Clients MUST correctly handle both cases. | Clients MUST correctly handle both cases. | |||
| 6.3. DNS Push Notification Updates | 6.3. DNS Push Notification Updates | |||
| Once a subscription has been successfully established, the server | Once a subscription has been successfully established, the server | |||
| generates PUSH messages to send to the client as appropriate. In the | generates PUSH messages to send to the client as appropriate. In the | |||
| case that the answer set was non-empty at the moment the subscription | case that the answer set was non-empty at the moment the subscription | |||
| was established, an initial PUSH message will be sent immediately | was established, an initial PUSH message will be sent immediately | |||
| following the SUBSCRIBE Response. Subsequent changes to the answer | following the SUBSCRIBE Response. Subsequent changes to the answer | |||
| set are then communicated to the client in subsequent PUSH messages. | set are then communicated to the client in subsequent PUSH messages. | |||
| 6.3.1. PUSH Message | 6.3.1. PUSH Message | |||
| A PUSH message begins with the standard DNS Session Signaling 12-byte | A PUSH message begins with the standard DNS Stateful Operations | |||
| header [SessSig], followed by the PUSH TLV. A PUSH message is | 12-byte header [StatefulOp], followed by the PUSH TLV. A PUSH | |||
| illustrated below: | message is illustrated below: | |||
| 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 | | | MESSAGE ID | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| |QR| Opcode | Z | RCODE | | |QR| Opcode | Z | RCODE | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| | QDCOUNT (MUST BE ZERO) | | | QDCOUNT (MUST BE ZERO) | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| skipping to change at page 21, line 13 ¶ | skipping to change at page 21, line 13 ¶ | |||
| Figure 2 | Figure 2 | |||
| The MESSAGE ID field MUST be set to a unique value, that the server | The MESSAGE ID field MUST be set to a unique value, that the server | |||
| is not currently using for any other active outgoing request that it | is not currently using for any other active outgoing request that it | |||
| has sent on this connection. The MESSAGE ID in the outgoing PUSH | has sent on this connection. The MESSAGE ID in the outgoing PUSH | |||
| message is selected by the server and has no relationship to the | message is selected by the server and has no relationship to the | |||
| MESSAGE ID in any of the client subscriptions it may relate to. In | MESSAGE ID in any of the client subscriptions it may relate to. In | |||
| the PUSH response the client MUST echo back the MESSAGE ID value | the PUSH response the client MUST echo back the MESSAGE ID value | |||
| unchanged. | unchanged. | |||
| The other header fields MUST be set as described in the DNS Session | The other header fields MUST be set as described in the DNS Stateful | |||
| Signaling specification [SessSig]. The DNS Opcode is the Session | Operations specification [StatefulOp]. The DNS Opcode is the | |||
| Signaling Opcode (tentatively 6). The four count fields MUST be | Stateful Operations Opcode (tentatively 6). The four count fields | |||
| zero, and the corresponding four sections MUST be empty (i.e., | MUST be zero, and the corresponding four sections MUST be empty | |||
| absent). | (i.e., absent). | |||
| The SSOP-TYPE is PUSH (tentatively 0x41). The SSOP-LENGTH is the | The SSOP-TYPE is PUSH (tentatively 0x41). The SSOP-LENGTH is the | |||
| length of the SSOP-DATA that follows, which specifies the changes | length of the SSOP-DATA that follows, which specifies the changes | |||
| being communicated. | being communicated. | |||
| The SSOP-DATA contains one or more Update records. A PUSH Message | The SSOP-DATA contains one or more Update records. A PUSH Message | |||
| MUST contain at least one Update record. If a PUSH Message is | MUST contain at least one Update record. If a PUSH Message is | |||
| received that contains no Update records, this is a fatal error, and | received that contains no Update records, this is a fatal error, and | |||
| the receiver MUST immediately terminate the connection with a TCP RST | the receiver MUST immediately terminate the connection with a TCP RST | |||
| (or equivalent for other protocols). The Update records are | (or equivalent for other protocols). The Update records are | |||
| formatted in the customary way for Resource Records in DNS messages | formatted in the customary way for Resource Records in DNS messages | |||
| with the stipulation that DNS name compression is not permitted in | with the stipulation that DNS name compression is not permitted in | |||
| DNS Session Signaling TLVs. Update records in a PUSH Message are | DNS Stateful Operations TLVs. Update records in a PUSH Message are | |||
| interpreted according to the same rules as for DNS Update [RFC2136] | interpreted according to the same rules as for DNS Update [RFC2136] | |||
| messages, namely: | messages, namely: | |||
| Delete all RRsets from a name: | Delete all RRsets from a name: | |||
| TTL=0, CLASS=ANY, RDLENGTH=0, TYPE=ANY. | TTL=0, CLASS=ANY, RDLENGTH=0, TYPE=ANY. | |||
| Delete an RRset from a name: | Delete an RRset from a name: | |||
| TTL=0, CLASS=ANY, RDLENGTH=0; | TTL=0, CLASS=ANY, RDLENGTH=0; | |||
| TYPE specifies the RRset being deleted. | TYPE specifies the RRset being deleted. | |||
| skipping to change at page 23, line 10 ¶ | skipping to change at page 23, line 10 ¶ | |||
| that the record is still there. Once a subscription is cancelled | that the record is still there. Once a subscription is cancelled | |||
| (individually, or as a result of the TCP connection being closed) | (individually, or as a result of the TCP connection being closed) | |||
| record aging resumes and records are removed from the local cache | record aging resumes and records are removed from the local cache | |||
| when their TTL reaches zero. | when their TTL reaches zero. | |||
| 6.3.2. PUSH Response | 6.3.2. PUSH Response | |||
| Each PUSH message generates exactly one PUSH response from the | Each PUSH message generates exactly one PUSH response from the | |||
| receiver. | receiver. | |||
| A PUSH response message begins with the standard DNS Session | A PUSH response message begins with the standard DNS Stateful | |||
| Signaling 12-byte header [SessSig], possibly followed by one or more | Operations 12-byte header [StatefulOp], possibly followed by one or | |||
| optional Modifier TLVs. | more optional Modifier TLVs. | |||
| The MESSAGE ID field MUST echo the value given in the ID field of the | The MESSAGE ID field MUST echo the value given in the ID field of the | |||
| PUSH message. | PUSH message. | |||
| A PUSH response message MUST NOT contain a Session Signaling | A PUSH response message MUST NOT contain a Stateful Operations | |||
| Operation TLV. The Session Signaling Operation TLV is NOT copied | Operation TLV. The Stateful Operations Operation TLV is NOT copied | |||
| from the PUSH message. | from the PUSH message. | |||
| In a PUSH response the RCODE MUST be zero. Receiving a PUSH response | In a PUSH response the RCODE MUST be zero. Receiving a PUSH response | |||
| with a nonzero RCODE is a fatal error, and the receiver MUST | with a nonzero RCODE is a fatal error, and the receiver MUST | |||
| immediately terminate the connection with a TCP RST (or equivalent | immediately terminate the connection with a TCP RST (or equivalent | |||
| for other protocols). | for other protocols). | |||
| 6.4. DNS Push Notification UNSUBSCRIBE | 6.4. DNS Push Notification UNSUBSCRIBE | |||
| To cancel an individual subscription without closing the entire | To cancel an individual subscription without closing the entire | |||
| connection, the client sends an UNSUBSCRIBE message over the | connection, the client sends an UNSUBSCRIBE message over the | |||
| established TCP connection to the server. The UNSUBSCRIBE message is | established TCP connection to the server. The UNSUBSCRIBE message is | |||
| encoded in a DNS Session Signaling [SessSig] message. This | encoded in a DNS Stateful Operations [StatefulOp] message. This | |||
| specification defines a DNS Session Signaling TLV for DNS Push | specification defines a DNS Stateful Operations TLV for DNS Push | |||
| Notification UNSUBSCRIBE Requests/Responses (tentatively Session | Notification UNSUBSCRIBE Requests/Responses (tentatively Stateful | |||
| Signaling Type Code 0x42). | Operations Type Code 0x42). | |||
| A server MUST NOT initiate an UNSUBSCRIBE request. If a server does | A server MUST NOT initiate an UNSUBSCRIBE request. If a server does | |||
| send a UNSUBSCRIBE request over the connection initiated by a client, | send a UNSUBSCRIBE request over the connection initiated by a client, | |||
| it is an error and the client should acknowledge the request with the | it is an error and the client should acknowledge the request with the | |||
| error response RCODE NOTAUTH (Not Authoritative). | error response RCODE NOTAUTH (Not Authoritative). | |||
| 6.4.1. UNSUBSCRIBE Request | 6.4.1. UNSUBSCRIBE Request | |||
| An UNSUBSCRIBE request message begins with the standard DNS Session | An UNSUBSCRIBE request message begins with the standard DNS Stateful | |||
| Signaling 12-byte header [SessSig], followed by the UNSUBSCRIBE TLV. | Operations 12-byte header [StatefulOp], followed by the UNSUBSCRIBE | |||
| TLV. | ||||
| 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 | | | MESSAGE ID | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| |QR| Opcode | Z | RCODE | | |QR| Opcode | Z | RCODE | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| | QDCOUNT (MUST BE ZERO) | | | QDCOUNT (MUST BE ZERO) | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| skipping to change at page 27, line 10 ¶ | skipping to change at page 27, line 10 ¶ | |||
| yet unacknowledged SUBSCRIBE request, and the SUBSCRIBE request is | yet unacknowledged SUBSCRIBE request, and the SUBSCRIBE request is | |||
| subsequently unsuccessful for some reason, then when the UNSUBSCRIBE | subsequently unsuccessful for some reason, then when the UNSUBSCRIBE | |||
| request is eventually processed it will be an UNSUBSCRIBE request for | request is eventually processed it will be an UNSUBSCRIBE request for | |||
| a nonexistent subscription, which will result NXDOMAIN response. | a nonexistent subscription, which will result NXDOMAIN response. | |||
| 6.4.2. UNSUBSCRIBE Response | 6.4.2. UNSUBSCRIBE Response | |||
| Each UNSUBSCRIBE request generates exactly one UNSUBSCRIBE response | Each UNSUBSCRIBE request generates exactly one UNSUBSCRIBE response | |||
| from the server. | from the server. | |||
| An UNSUBSCRIBE response message begins with the standard DNS Session | An UNSUBSCRIBE response message begins with the standard DNS Stateful | |||
| Signaling 12-byte header [SessSig], possibly followed by one or more | Operations 12-byte header [StatefulOp], possibly followed by one or | |||
| optional Modifier TLVs, such as a Retry Delay Modifier TLV. | more optional Modifier TLVs, such as a Retry Delay Modifier TLV. | |||
| The MESSAGE ID field MUST echo the value given in the ID field of the | The MESSAGE ID field MUST echo the value given in the ID field of the | |||
| UNSUBSCRIBE request. This is how the client knows which request is | UNSUBSCRIBE request. This is how the client knows which request is | |||
| being responded to. | being responded to. | |||
| An UNSUBSCRIBE response message MUST NOT contain a Session Signaling | An UNSUBSCRIBE response message MUST NOT contain a Stateful | |||
| Operation TLV. The Session Signaling Operation TLV is NOT copied | Operations Operation TLV. The Stateful Operations Operation TLV is | |||
| from the UNSUBSCRIBE request. | NOT copied from the UNSUBSCRIBE request. | |||
| In the UNSUBSCRIBE response the RCODE indicates whether or not the | In the UNSUBSCRIBE response the RCODE indicates whether or not the | |||
| unsubscribe request was successful. Supported RCODEs are as follows: | unsubscribe request was successful. Supported RCODEs are as follows: | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| | Mnemonic | Value | Description | | | Mnemonic | Value | Description | | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| | NOERROR | 0 | UNSUBSCRIBE successful. | | | NOERROR | 0 | UNSUBSCRIBE successful. | | |||
| | FORMERR | 1 | Server failed to process request due to a | | | FORMERR | 1 | Server failed to process request due to a | | |||
| | | | malformed request. | | | | | malformed request. | | |||
| | NXDOMAIN | 3 | Specified subscription does not exist. | | | NXDOMAIN | 3 | Specified subscription does not exist. | | |||
| | NOTIMP | 4 | Server does not recognize DNS Session | | | NOTIMP | 4 | Server does not recognize DNS Stateful | | |||
| | | | Signaling Opcode. | | | | | Operations Opcode. | | |||
| | SSOPNOTIMP | 11 | UNSUBSCRIBE operation not supported. | | | SSOPNOTIMP | 11 | UNSUBSCRIBE operation not supported. | | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| UNSUBSCRIBE Response codes | UNSUBSCRIBE Response codes | |||
| This document specifies only these RCODE values for UNSUBSCRIBE | This document specifies only these RCODE values for UNSUBSCRIBE | |||
| Responses. Servers sending UNSUBSCRIBE Responses SHOULD use one of | Responses. Servers sending UNSUBSCRIBE Responses SHOULD use one of | |||
| these values. However, future circumstances may create situations | these values. However, future circumstances may create situations | |||
| where other RCODE values are appropriate in UNSUBSCRIBE Responses, so | where other RCODE values are appropriate in UNSUBSCRIBE Responses, so | |||
| clients MUST be prepared to accept UNSUBSCRIBE Responses with any | clients MUST be prepared to accept UNSUBSCRIBE Responses with any | |||
| skipping to change at page 28, line 14 ¶ | skipping to change at page 28, line 14 ¶ | |||
| Nonzero RCODE values signal some kind of error. | Nonzero RCODE values signal some kind of error. | |||
| RCODE value FORMERR indicates a message format error. | RCODE value FORMERR indicates a message format error. | |||
| RCODE value NXDOMAIN indicates a MESSAGE ID that does not correspond | RCODE value NXDOMAIN indicates a MESSAGE ID that does not correspond | |||
| to any active subscription. | to any active subscription. | |||
| RCODE values NOTIMP and SSOPNOTIMP should not occur in practice. | RCODE values NOTIMP and SSOPNOTIMP should not occur in practice. | |||
| A server would only generate NOTIMP if it did not support Session | A server would only generate NOTIMP if it did not support Stateful | |||
| Signaling, and if the server does not support Session Signaling then | Operations, and if the server does not support Stateful Operations | |||
| it should not be possible for a client to have an active subscription | then it should not be possible for a client to have an active | |||
| to cancel. | subscription to cancel. | |||
| Similarly, a server would only generate SSOPNOTIMP if it did not | Similarly, a server would only generate SSOPNOTIMP if it did not | |||
| support Push Notifications, and if the server does not support Push | support Push Notifications, and if the server does not support Push | |||
| Notifications then it should not be possible for a client to have an | Notifications then it should not be possible for a client to have an | |||
| active subscription to cancel. | active subscription to cancel. | |||
| Nonzero RCODE values other than NXDOMAIN indicate a serious problem | Nonzero RCODE values other than NXDOMAIN indicate a serious problem | |||
| with the client. After sending an error response other than | with the client. After sending an error response other than | |||
| NXDOMAIN, the server SHOULD send a DNS Session Signaling Retry Delay | NXDOMAIN, the server SHOULD send a DNS Stateful Operations Retry | |||
| Operation TLV and then close the TCP connection, as described in the | Delay Operation TLV and then close the TCP connection, as described | |||
| DNS Session Signaling specification [SessSig]. | in the DNS Stateful Operations specification [StatefulOp]. | |||
| 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 believe may be stale (e.g., an SRV record referencing a target | it believe 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 request 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 requests to ascertain whether the target device is | |||
| skipping to change at page 30, line 7 ¶ | skipping to change at page 30, line 7 ¶ | |||
| If, after receiving a valid RECONFIRM request, the server determines | If, after receiving a valid RECONFIRM request, 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 Request | |||
| A RECONFIRM request message begins with the standard DNS Session | A RECONFIRM request message begins with the standard DNS Stateful | |||
| Signaling 12-byte header [SessSig], followed by the RECONFIRM TLV. A | Operations 12-byte header [StatefulOp], followed by the RECONFIRM | |||
| RECONFIRM request message is illustrated below: | TLV. A RECONFIRM request message is illustrated below: | |||
| 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 | | | MESSAGE ID | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| |QR| Opcode | Z | RCODE | | |QR| Opcode | Z | RCODE | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| | QDCOUNT (MUST BE ZERO) | | | QDCOUNT (MUST BE ZERO) | | |||
| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | |||
| skipping to change at page 30, line 51 ¶ | skipping to change at page 30, line 51 ¶ | |||
| Figure 4 | Figure 4 | |||
| The MESSAGE ID field MUST be set to a unique value, that the client | The MESSAGE ID field MUST be set to a unique value, that the client | |||
| is not using for any other active operation on this connection. For | is not using for any other active operation on this connection. For | |||
| the purposes here, a MESSAGE ID is in use on this connection if the | the purposes here, a MESSAGE ID is in use on this connection if the | |||
| client has used it in a request for which it has not yet received a | 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 | response, or if the client has used it for a subscription which it | |||
| has not yet cancelled using UNSUBSCRIBE. In the RECONFIRM response | has not yet cancelled using UNSUBSCRIBE. In the RECONFIRM response | |||
| the server MUST echo back the MESSAGE ID value unchanged. | the server MUST echo back the MESSAGE ID value unchanged. | |||
| The other header fields MUST be set as described in the DNS Session | The other header fields MUST be set as described in the DNS Stateful | |||
| Signaling specification [SessSig]. The DNS Opcode is the Session | Operations specification [StatefulOp]. The DNS Opcode is the | |||
| Signaling Opcode (tentatively 6). The four count fields MUST be | Stateful Operations Opcode (tentatively 6). The four count fields | |||
| zero, and the corresponding four sections MUST be empty (i.e., | MUST be zero, and the corresponding four sections MUST be empty | |||
| absent). | (i.e., absent). | |||
| The SSOP-TYPE is RECONFIRM (tentatively 0x43). The SSOP-LENGTH is | The SSOP-TYPE is RECONFIRM (tentatively 0x43). The SSOP-LENGTH is | |||
| the length of the data that follows, which specifies the name, type, | the length of the data that follows, which specifies the name, type, | |||
| class, and content of the record being disputed. | class, and content of the record being disputed. | |||
| The SSOP-DATA for a RECONFIRM request MUST contain exactly one | The SSOP-DATA for a RECONFIRM request MUST contain exactly one | |||
| record. The SSOP-DATA for a RECONFIRM request has no count field to | record. The SSOP-DATA for a RECONFIRM request has no count field to | |||
| specify more than one record. Since RECONFIRM requests are sent over | specify more than one record. Since RECONFIRM requests are sent over | |||
| TCP, multiple RECONFIRM request messages can be concatenated in a | TCP, multiple RECONFIRM request messages can be concatenated in a | |||
| single TCP stream and packed efficiently into TCP segments. | single TCP stream and packed efficiently into TCP segments. | |||
| skipping to change at page 32, line 10 ¶ | skipping to change at page 32, line 10 ¶ | |||
| 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 | 6.5.2. RECONFIRM Response | |||
| Each RECONFIRM request generates exactly one RECONFIRM response from | Each RECONFIRM request generates exactly one RECONFIRM response from | |||
| the server. | the server. | |||
| A RECONFIRM response message begins with the standard DNS Session | A RECONFIRM response message begins with the standard DNS Stateful | |||
| Signaling 12-byte header [SessSig], possibly followed by one or more | Operations 12-byte header [StatefulOp], possibly followed by one or | |||
| optional Modifier TLVs, such as a Retry Delay Modifier TLV. | more optional Modifier TLVs, such as a Retry Delay Modifier TLV. | |||
| The MESSAGE ID field MUST echo the value given in the ID field of the | 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 | RECONFIRM request. This is how the client knows which request is | |||
| being responded to. | being responded to. | |||
| A RECONFIRM response message MUST NOT contain a Session Signaling | A RECONFIRM response message MUST NOT contain a Stateful Operations | |||
| Operation TLV. The Session Signaling Operation TLV is NOT copied | Operation TLV. The Stateful Operations Operation TLV is NOT copied | |||
| from the RECONFIRM request. | from the RECONFIRM request. | |||
| In the RECONFIRM response the RCODE confirms receipt of the | In the RECONFIRM response the RCODE confirms receipt of the | |||
| reconfirmation request. Supported RCODEs are as follows: | reconfirmation request. Supported RCODEs are as follows: | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| | Mnemonic | Value | Description | | | Mnemonic | Value | Description | | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| | NOERROR | 0 | RECONFIRM accepted. | | | NOERROR | 0 | RECONFIRM accepted. | | |||
| | FORMERR | 1 | Server failed to process request due to a | | | FORMERR | 1 | Server failed to process request due to a | | |||
| | | | malformed request. | | | | | malformed request. | | |||
| | SERVFAIL | 2 | Server failed to process request due to a | | | SERVFAIL | 2 | Server failed to process request due to a | | |||
| | | | problem with the server. | | | | | problem with the server. | | |||
| | NXDOMAIN | 3 | NOT APPLICABLE. DNS Push Notification | | | NXDOMAIN | 3 | NOT APPLICABLE. DNS Push Notification | | |||
| | | | servers MUST NOT return NXDOMAIN errors in | | | | | servers MUST NOT return NXDOMAIN errors in | | |||
| | | | response to RECONFIRM requests. | | | | | response to RECONFIRM requests. | | |||
| | NOTIMP | 4 | Server does not recognize DNS Session | | | NOTIMP | 4 | Server does not recognize DNS Stateful | | |||
| | | | Signaling Opcode. | | | | | Operations Opcode. | | |||
| | REFUSED | 5 | Server refuses to process request for policy | | | REFUSED | 5 | Server refuses to process request for policy | | |||
| | | | or security reasons. | | | | | or security reasons. | | |||
| | NOTAUTH | 9 | Server is not authoritative for the | | | NOTAUTH | 9 | Server is not authoritative for the | | |||
| | | | requested name. | | | | | requested name. | | |||
| | SSOPNOTIMP | 11 | RECONFIRM operation not supported. | | | SSOPNOTIMP | 11 | RECONFIRM operation not supported. | | |||
| +------------+-------+----------------------------------------------+ | +------------+-------+----------------------------------------------+ | |||
| RECONFIRM Response codes | RECONFIRM Response codes | |||
| This document specifies only these RCODE values for RECONFIRM | This document specifies only these RCODE values for RECONFIRM | |||
| skipping to change at page 33, line 14 ¶ | skipping to change at page 33, line 14 ¶ | |||
| Nonzero RCODE values signal some kind of error. | Nonzero RCODE values signal some kind of error. | |||
| RCODE value FORMERR indicates a message format error, for example | RCODE value FORMERR indicates a message format error, for example | |||
| TYPE or CLASS being ANY (255). | TYPE or CLASS being ANY (255). | |||
| RCODE value SERVFAIL indicates that the server has exhausted its | RCODE value SERVFAIL indicates that the server has exhausted its | |||
| resources or other serious problem occurred. | resources or other serious problem occurred. | |||
| RCODE values NOTIMP indicates that the server does not support | RCODE values NOTIMP indicates that the server does not support | |||
| Session Signaling, and Session Signaling is required for RECONFIRM | Stateful Operations, and Stateful Operations is required for | |||
| requests. | RECONFIRM requests. | |||
| RCODE value REFUSED indicates that the server supports RECONFIRM | RCODE value REFUSED indicates that the server supports RECONFIRM | |||
| requests but is currently not configured to accept them from this | requests but is currently not configured to accept them from this | |||
| client. | client. | |||
| RCODE value NOTAUTH indicates that the server is not authoritative | RCODE value NOTAUTH indicates that the server is not authoritative | |||
| for the requested name, and can do nothing to remedy the apparent | 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 | 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 | to pass on the RECONFIRM request to the ultimate source of the | |||
| information, and in these cases the server should return NOERROR. | information, and in these cases the server should return NOERROR. | |||
| RCODE value SSOPNOTIMP indicates that the server does not support | RCODE value SSOPNOTIMP indicates that the server does not support | |||
| RECONFIRM requests. | RECONFIRM requests. | |||
| Nonzero RCODE values SERVFAIL, REFUSED and SSOPNOTIMP are benign from | Nonzero RCODE values SERVFAIL, REFUSED and SSOPNOTIMP are benign from | |||
| the client's point of view. The client may log them to aid in | the client's point of view. The client may log them to aid in | |||
| debugging, but otherwise they require no special action. | debugging, but otherwise they require no special action. | |||
| Nonzero RCODE values other than these three indicate a serious | Nonzero RCODE values other than these three indicate a serious | |||
| problem with the client. After sending an error response other than | problem with the client. After sending an error response other than | |||
| one of these three, the server SHOULD send a DNS Session Signaling | one of these three, the server SHOULD send a DNS Stateful Operations | |||
| Retry Delay Operation TLV and then close the TCP connection, as | Retry Delay Operation TLV and then close the TCP connection, as | |||
| described in the DNS Session Signaling specification [SessSig]. | described in the DNS Stateful Operations specification [StatefulOp]. | |||
| 6.6. Client-Initiated Termination | 6.6. 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 connection. When a | cancelled at once by the client closing the connection. When a | |||
| client terminates an individual subscription (via UNSUBSCRIBE) or all | client terminates an individual subscription (via UNSUBSCRIBE) or all | |||
| subscriptions on that connection (by closing the connection) it is | subscriptions on that connection (by closing the connection) 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 | |||
| may release any state information it has been keeping with regards to | may release any state information it has been keeping with regards to | |||
| these particular subscriptions. | these particular subscriptions. | |||
| After terminating its last subscription on a connection via | After terminating its last subscription on a connection via | |||
| UNSUBSCRIBE, a client MAY close the connection immediately, or it may | UNSUBSCRIBE, a client MAY close the connection immediately, or it may | |||
| keep it open if it anticipates performing further operations on that | keep it open if it anticipates performing further operations on that | |||
| connection in the future. If a client wishes to keep an idle | connection in the future. If a client wishes to keep an idle | |||
| connection open, it MUST respect the maximum idle time required by | connection open, it MUST respect the maximum idle time required by | |||
| the server [SessSig]. | the server [StatefulOp]. | |||
| If a client plans to terminate one or more subscriptions on a | If a client plans to terminate one or more subscriptions on a | |||
| connection and doesn't intend to keep that connection open, then as | connection and doesn't intend to keep that connection open, then as | |||
| an efficiency optimization it MAY instead choose to simply close the | an efficiency optimization it MAY instead choose to simply close the | |||
| connection, which implicitly terminates all subscriptions on that | connection, which implicitly terminates all subscriptions on that | |||
| connection. This may occur because the client computer is being shut | connection. This may occur because the client computer is being shut | |||
| down, is going to sleep, the application requiring the subscriptions | down, is going to sleep, the application requiring the subscriptions | |||
| has terminated, or simply because the last active subscription on | has terminated, or simply because the last active subscription on | |||
| that connection has been cancelled. | that connection has been cancelled. | |||
| skipping to change at page 36, line 49 ¶ | skipping to change at page 36, line 49 ¶ | |||
| up more quickly, but the client will still have to recreate any | up more quickly, but the client will still have to recreate any | |||
| desired subscriptions. | desired subscriptions. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| This document defines the service name: "_dns-push-tls._tcp". | This document defines the service name: "_dns-push-tls._tcp". | |||
| It is only applicable for the TCP protocol. | It is only applicable for the TCP protocol. | |||
| This name is to be published in the IANA Service Name Registry | This name is to be published in the IANA Service Name Registry | |||
| [RFC6335][SN]. | [RFC6335][SN]. | |||
| This document defines four DNS Session Signaling TLV types: SUBSCRIBE | This document defines four DNS Stateful Operations TLV types: | |||
| with (tentative) value 0x40 (64), PUSH with (tentative) value 0x41 | SUBSCRIBE with (tentative) value 0x40 (64), PUSH with (tentative) | |||
| (65), UNSUBSCRIBE with (tentative) value 0x42 (66), and RECONFIRM | value 0x41 (65), UNSUBSCRIBE with (tentative) value 0x42 (66), and | |||
| with (tentative) value 0x43 (67). | RECONFIRM with (tentative) value 0x43 (67). | |||
| 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. | Dickinson, and Andrew Sullivan. | |||
| 10. References | 10. References | |||
| 10.1. Normative References | 10.1. Normative References | |||
| [I-D.ietf-tls-tls13] | [I-D.ietf-tls-tls13] | |||
| Rescorla, E., "The Transport Layer Security (TLS) Protocol | Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", draft-ietf-tls-tls13-20 (work in progress), | Version 1.3", draft-ietf-tls-tls13-21 (work in progress), | |||
| April 2017. | July 2017. | |||
| [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | |||
| DOI 10.17487/RFC0768, August 1980, | DOI 10.17487/RFC0768, August 1980, <https://www.rfc- | |||
| <http://www.rfc-editor.org/info/rfc768>. | editor.org/info/rfc768>. | |||
| [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | |||
| RFC 793, DOI 10.17487/RFC0793, September 1981, | RFC 793, DOI 10.17487/RFC0793, September 1981, | |||
| <http://www.rfc-editor.org/info/rfc793>. | <https://www.rfc-editor.org/info/rfc793>. | |||
| [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>. | <https://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, <https://www.rfc-editor.org/info/rfc1035>. | |||
| [RFC1123] Braden, R., Ed., "Requirements for Internet Hosts - | [RFC1123] Braden, R., Ed., "Requirements for Internet Hosts - | |||
| Application and Support", STD 3, RFC 1123, | Application and Support", STD 3, RFC 1123, | |||
| DOI 10.17487/RFC1123, October 1989, | DOI 10.17487/RFC1123, October 1989, <https://www.rfc- | |||
| <http://www.rfc-editor.org/info/rfc1123>. | editor.org/info/rfc1123>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
| <http://www.rfc-editor.org/info/rfc2119>. | editor.org/info/rfc2119>. | |||
| [RFC2136] Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound, | [RFC2136] Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound, | |||
| "Dynamic Updates in the Domain Name System (DNS UPDATE)", | "Dynamic Updates in the Domain Name System (DNS UPDATE)", | |||
| RFC 2136, DOI 10.17487/RFC2136, April 1997, | RFC 2136, DOI 10.17487/RFC2136, April 1997, | |||
| <http://www.rfc-editor.org/info/rfc2136>. | <https://www.rfc-editor.org/info/rfc2136>. | |||
| [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for | [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for | |||
| specifying the location of services (DNS SRV)", RFC 2782, | specifying the location of services (DNS SRV)", RFC 2782, | |||
| DOI 10.17487/RFC2782, February 2000, | DOI 10.17487/RFC2782, February 2000, <https://www.rfc- | |||
| <http://www.rfc-editor.org/info/rfc2782>. | editor.org/info/rfc2782>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, <https://www.rfc- | |||
| <http://www.rfc-editor.org/info/rfc5246>. | editor.org/info/rfc5246>. | |||
| [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) | [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) | |||
| Extensions: Extension Definitions", RFC 6066, | Extensions: Extension Definitions", RFC 6066, | |||
| DOI 10.17487/RFC6066, January 2011, | DOI 10.17487/RFC6066, January 2011, <https://www.rfc- | |||
| <http://www.rfc-editor.org/info/rfc6066>. | editor.org/info/rfc6066>. | |||
| [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. | [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. | |||
| Cheshire, "Internet Assigned Numbers Authority (IANA) | Cheshire, "Internet Assigned Numbers Authority (IANA) | |||
| Procedures for the Management of the Service Name and | Procedures for the Management of the Service Name and | |||
| Transport Protocol Port Number Registry", BCP 165, | Transport Protocol Port Number Registry", BCP 165, | |||
| RFC 6335, DOI 10.17487/RFC6335, August 2011, | RFC 6335, DOI 10.17487/RFC6335, August 2011, | |||
| <http://www.rfc-editor.org/info/rfc6335>. | <https://www.rfc-editor.org/info/rfc6335>. | |||
| [RFC6895] Eastlake 3rd, D., "Domain Name System (DNS) IANA | [RFC6895] Eastlake 3rd, D., "Domain Name System (DNS) IANA | |||
| Considerations", BCP 42, RFC 6895, DOI 10.17487/RFC6895, | Considerations", BCP 42, RFC 6895, DOI 10.17487/RFC6895, | |||
| April 2013, <http://www.rfc-editor.org/info/rfc6895>. | April 2013, <https://www.rfc-editor.org/info/rfc6895>. | |||
| [RFC7673] Finch, T., Miller, M., and P. Saint-Andre, "Using DNS- | [RFC7673] Finch, T., Miller, M., and P. Saint-Andre, "Using DNS- | |||
| Based Authentication of Named Entities (DANE) TLSA Records | Based Authentication of Named Entities (DANE) TLSA Records | |||
| with SRV Records", RFC 7673, DOI 10.17487/RFC7673, October | with SRV Records", RFC 7673, DOI 10.17487/RFC7673, October | |||
| 2015, <http://www.rfc-editor.org/info/rfc7673>. | 2015, <https://www.rfc-editor.org/info/rfc7673>. | |||
| [RFC7766] Dickinson, J., Dickinson, S., Bellis, R., Mankin, A., and | [RFC7766] Dickinson, J., Dickinson, S., Bellis, R., Mankin, A., and | |||
| D. Wessels, "DNS Transport over TCP - Implementation | D. Wessels, "DNS Transport over TCP - Implementation | |||
| Requirements", RFC 7766, DOI 10.17487/RFC7766, March 2016, | Requirements", RFC 7766, DOI 10.17487/RFC7766, March 2016, | |||
| <http://www.rfc-editor.org/info/rfc7766>. | <https://www.rfc-editor.org/info/rfc7766>. | |||
| [SessSig] Bellis, R., Cheshire, S., Dickinson, J., Dickinson, S., | ||||
| Mankin, A., and T. Pusateri, "DNS Session Signaling", | ||||
| draft-ietf-dnsop-session-signal-02 (work in progress), | ||||
| March 2017. | ||||
| [SN] "Service Name and Transport Protocol Port Number | [SN] "Service Name and Transport Protocol Port Number | |||
| Registry", <http://www.iana.org/assignments/ | Registry", <http://www.iana.org/assignments/ | |||
| service-names-port-numbers/>. | service-names-port-numbers/>. | |||
| [StatefulOp] | ||||
| Bellis, R., Cheshire, S., Dickinson, J., Dickinson, S., | ||||
| Mankin, A., and T. Pusateri, "DNS Stateful Operations", | ||||
| draft-ietf-dnsop-session-signal-04 (work in progress), | ||||
| September 2017. | ||||
| 10.2. Informative References | 10.2. Informative References | |||
| [DisProx] Cheshire, S., "Hybrid Unicast/Multicast DNS-Based Service | [DisProx] Cheshire, S., "Hybrid Unicast/Multicast DNS-Based Service | |||
| Discovery", draft-ietf-dnssd-hybrid-06 (work in progress), | Discovery", draft-ietf-dnssd-hybrid-07 (work in progress), | |||
| March 2017. | September 2017. | |||
| [I-D.dukkipati-tcpm-tcp-loss-probe] | [I-D.dukkipati-tcpm-tcp-loss-probe] | |||
| Dukkipati, N., Cardwell, N., Cheng, Y., and M. Mathis, | Dukkipati, N., Cardwell, N., Cheng, Y., and M. Mathis, | |||
| "Tail Loss Probe (TLP): An Algorithm for Fast Recovery of | "Tail Loss Probe (TLP): An Algorithm for Fast Recovery of | |||
| Tail Losses", draft-dukkipati-tcpm-tcp-loss-probe-01 (work | Tail Losses", draft-dukkipati-tcpm-tcp-loss-probe-01 (work | |||
| in progress), February 2013. | in progress), February 2013. | |||
| [I-D.ietf-dprive-dtls-and-tls-profiles] | [I-D.ietf-dprive-dtls-and-tls-profiles] | |||
| Dickinson, S., Gillmor, D., and T. Reddy, "Usage and | Dickinson, S., Gillmor, D., and T. Reddy, "Usage and | |||
| (D)TLS Profiles for DNS-over-(D)TLS", draft-ietf-dprive- | (D)TLS Profiles for DNS-over-(D)TLS", draft-ietf-dprive- | |||
| dtls-and-tls-profiles-10 (work in progress), June 2017. | dtls-and-tls-profiles-11 (work in progress), September | |||
| 2017. | ||||
| [I-D.sekar-dns-llq] | [I-D.sekar-dns-llq] | |||
| Sekar, K., "DNS Long-Lived Queries", draft-sekar-dns- | Sekar, K., "DNS Long-Lived Queries", draft-sekar-dns- | |||
| llq-01 (work in progress), August 2006. | llq-01 (work in progress), August 2006. | |||
| [IPJ.9-4-TCPSYN] | [IPJ.9-4-TCPSYN] | |||
| Eddy, W., "Defenses Against TCP SYN Flooding Attacks", The | Eddy, W., "Defenses Against TCP SYN Flooding Attacks", The | |||
| Internet Protocol Journal, Cisco Systems, Volume 9, | Internet Protocol Journal, Cisco Systems, Volume 9, | |||
| Number 4, December 2006. | Number 4, December 2006. | |||
| [obs] "Observer Pattern", <https://en.wikipedia.org/wiki/ | [obs] "Observer Pattern", <https://en.wikipedia.org/wiki/ | |||
| Observer_pattern>. | 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, | |||
| <http://www.rfc-editor.org/info/rfc2308>. | <https://www.rfc-editor.org/info/rfc2308>. | |||
| [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, <http://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, | |||
| <http://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 | |||
| Server-Side State", RFC 5077, DOI 10.17487/RFC5077, | Server-Side State", RFC 5077, DOI 10.17487/RFC5077, | |||
| January 2008, <http://www.rfc-editor.org/info/rfc5077>. | January 2008, <https://www.rfc-editor.org/info/rfc5077>. | |||
| [RFC6281] Cheshire, S., Zhu, Z., Wakikawa, R., and L. Zhang, | [RFC6281] Cheshire, S., Zhu, Z., Wakikawa, R., and L. Zhang, | |||
| "Understanding Apple's Back to My Mac (BTMM) Service", | "Understanding Apple's Back to My Mac (BTMM) Service", | |||
| RFC 6281, DOI 10.17487/RFC6281, June 2011, | RFC 6281, DOI 10.17487/RFC6281, June 2011, | |||
| <http://www.rfc-editor.org/info/rfc6281>. | <https://www.rfc-editor.org/info/rfc6281>. | |||
| [RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, | [RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, | |||
| DOI 10.17487/RFC6762, February 2013, | DOI 10.17487/RFC6762, February 2013, <https://www.rfc- | |||
| <http://www.rfc-editor.org/info/rfc6762>. | editor.org/info/rfc6762>. | |||
| [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service | [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service | |||
| Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013, | Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013, | |||
| <http://www.rfc-editor.org/info/rfc6763>. | <https://www.rfc-editor.org/info/rfc6763>. | |||
| [RFC6824] Ford, A., Raiciu, C., Handley, M., and O. Bonaventure, | [RFC6824] Ford, A., Raiciu, C., Handley, M., and O. Bonaventure, | |||
| "TCP Extensions for Multipath Operation with Multiple | "TCP Extensions for Multipath Operation with Multiple | |||
| Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013, | Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013, | |||
| <http://www.rfc-editor.org/info/rfc6824>. | <https://www.rfc-editor.org/info/rfc6824>. | |||
| [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | |||
| Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | |||
| <http://www.rfc-editor.org/info/rfc7413>. | <https://www.rfc-editor.org/info/rfc7413>. | |||
| [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, | [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, | |||
| "Recommendations for Secure Use of Transport Layer | "Recommendations for Secure Use of Transport Layer | |||
| Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
| (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | |||
| 2015, <http://www.rfc-editor.org/info/rfc7525>. | 2015, <https://www.rfc-editor.org/info/rfc7525>. | |||
| [RFC7719] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS | [RFC7719] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS | |||
| Terminology", RFC 7719, DOI 10.17487/RFC7719, December | Terminology", RFC 7719, DOI 10.17487/RFC7719, December | |||
| 2015, <http://www.rfc-editor.org/info/rfc7719>. | 2015, <https://www.rfc-editor.org/info/rfc7719>. | |||
| [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., | [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., | |||
| and P. Hoffman, "Specification for DNS over Transport | and P. Hoffman, "Specification for DNS over Transport | |||
| Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May | Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May | |||
| 2016, <http://www.rfc-editor.org/info/rfc7858>. | 2016, <https://www.rfc-editor.org/info/rfc7858>. | |||
| [XEP0060] Millard, P., Saint-Andre, P., and R. Meijer, "Publish- | [XEP0060] Millard, P., Saint-Andre, P., and R. Meijer, "Publish- | |||
| Subscribe", XSF XEP 0060, July 2010. | Subscribe", XSF XEP 0060, July 2010. | |||
| Authors' Addresses | Authors' Addresses | |||
| Tom Pusateri | Tom Pusateri | |||
| Seeking affiliation | Unaffiliated | |||
| Hilton Head Island, SC | Raleigh, NC 27608 | |||
| USA | USA | |||
| Phone: +1 843 473 7394 | Phone: +1 919 867 1330 | |||
| Email: pusateri@bangj.com | Email: pusateri@bangj.com | |||
| Stuart Cheshire | Stuart Cheshire | |||
| Apple Inc. | Apple Inc. | |||
| 1 Infinite Loop | 1 Infinite Loop | |||
| Cupertino, CA 95014 | Cupertino, CA 95014 | |||
| USA | USA | |||
| Phone: +1 408 974 3207 | Phone: +1 408 974 3207 | |||
| Email: cheshire@apple.com | Email: cheshire@apple.com | |||
| End of changes. 73 change blocks. | ||||
| 155 lines changed or deleted | 158 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||