draft-ietf-dnssd-srp-01.txt | draft-ietf-dnssd-srp-02.txt | |||
---|---|---|---|---|
Internet Engineering Task Force S. Cheshire | Internet Engineering Task Force S. Cheshire | |||
Internet-Draft Apple Inc. | Internet-Draft Apple Inc. | |||
Intended status: Informational T. Lemon | Intended status: Informational T. Lemon | |||
Expires: September 12, 2019 Nibbhaya Consulting | Expires: January 9, 2020 Nibbhaya Consulting | |||
March 11, 2019 | July 8, 2019 | |||
Service Registration Protocol for DNS-Based Service Discovery | Service Registration Protocol for DNS-Based Service Discovery | |||
draft-ietf-dnssd-srp-01 | draft-ietf-dnssd-srp-02 | |||
Abstract | Abstract | |||
The Service Registration Protocol for DNS-Based Service Discovery | The Service Registration Protocol for DNS-Based Service Discovery | |||
uses the standard DNS Update mechanism to enable DNS-Based Service | uses the standard DNS Update mechanism to enable DNS-Based Service | |||
Discovery using only unicast packets. This makes it possible to | Discovery using only unicast packets. This makes it possible to | |||
deploy DNS Service Discovery without multicast, which greatly | deploy DNS Service Discovery without multicast, which greatly | |||
improves scalability and improves performance on networks where | improves scalability and improves performance on networks where | |||
multicast service is not an optimal choice, particularly 802.11 | multicast service is not an optimal choice, particularly 802.11 | |||
(Wi-Fi) and 802.15.4 (IoT) networks. DNS-SD Service registration | (Wi-Fi) and 802.15.4 (IoT) networks. DNS-SD Service registration | |||
skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 39 ¶ | |||
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 12, 2019. | This Internet-Draft will expire on January 9, 2020. | |||
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 34 ¶ | skipping to change at page 2, line 34 ¶ | |||
2.4.2. SRP Server Behavior . . . . . . . . . . . . . . . . . 10 | 2.4.2. SRP Server Behavior . . . . . . . . . . . . . . . . . 10 | |||
2.5. TTL Consistency . . . . . . . . . . . . . . . . . . . . . 12 | 2.5. TTL Consistency . . . . . . . . . . . . . . . . . . . . . 12 | |||
2.6. Maintenance . . . . . . . . . . . . . . . . . . . . . . . 13 | 2.6. Maintenance . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
2.6.1. Cleaning up stale data . . . . . . . . . . . . . . . 13 | 2.6.1. Cleaning up stale data . . . . . . . . . . . . . . . 13 | |||
2.6.2. Sleep Proxy . . . . . . . . . . . . . . . . . . . . . 14 | 2.6.2. Sleep Proxy . . . . . . . . . . . . . . . . . . . . . 14 | |||
3. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
3.1. Source Validation . . . . . . . . . . . . . . . . . . . . 15 | 3.1. Source Validation . . . . . . . . . . . . . . . . . . . . 15 | |||
3.2. SIG(0) signature validation . . . . . . . . . . . . . . . 16 | 3.2. SIG(0) signature validation . . . . . . . . . . . . . . . 16 | |||
3.3. Required Signature Algorithm . . . . . . . . . . . . . . 16 | 3.3. Required Signature Algorithm . . . . . . . . . . . . . . 16 | |||
4. Privacy Considerations . . . . . . . . . . . . . . . . . . . 16 | 4. Privacy Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
5. Delegation of 'services.arpa.' . . . . . . . . . . . . . . . 16 | 5. Delegation of 'service.arpa.' . . . . . . . . . . . . . . . . 17 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
6.1. Registration and Delegation of 'services.arpa' as a | 6.1. Registration and Delegation of 'service.arpa' as a | |||
Special-Use Domain Name . . . . . . . . . . . . . . . . . 17 | Special-Use Domain Name . . . . . . . . . . . . . . . . . 17 | |||
6.2. 'dnssd-srp' Service Name . . . . . . . . . . . . . . . . 17 | 6.2. 'dnssd-srp' Service Name . . . . . . . . . . . . . . . . 17 | |||
6.3. Anycast Address . . . . . . . . . . . . . . . . . . . . . 17 | 6.3. 'dnssd-srp-tls' Service Name . . . . . . . . . . . . . . 18 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | 6.4. Anycast Address . . . . . . . . . . . . . . . . . . . . . 18 | |||
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 18 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 18 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 19 | 8.2. Informative References . . . . . . . . . . . . . . . . . 19 | |||
Appendix A. Sample BIND9 configuration for | Appendix A. Sample BIND9 configuration for default.service.arpa. 21 | |||
default.services.arpa. . . . . . . . . . . . . . . . 20 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
1. Introduction | 1. Introduction | |||
DNS-Based Service Discovery [RFC6763] is a component of Zero | DNS-Based Service Discovery [RFC6763] is a component of Zero | |||
Configuration Networking [RFC6760] [ZC] [I-D.cheshire-dnssd-roadmap]. | Configuration Networking [RFC6760] [ZC] [I-D.cheshire-dnssd-roadmap]. | |||
This document describes an enhancement to DNS-Based Service Discovery | This document describes an enhancement to DNS-Based Service Discovery | |||
[RFC6763] that allows services to automatically register their | [RFC6763] that allows services to automatically register their | |||
services using the DNS protocol rather than using Multicast DNS | services using the DNS protocol rather than using Multicast DNS | |||
[RFC6762] (mDNS). There is already a large installed base of DNS-SD | [RFC6762] (mDNS). There is already a large installed base of DNS-SD | |||
skipping to change at page 4, line 42 ¶ | skipping to change at page 4, line 42 ¶ | |||
Manual configuration of the registraton domain can be done either by | Manual configuration of the registraton domain can be done either by | |||
querying the list of available registration zones ("r._dns-sd._udp") | querying the list of available registration zones ("r._dns-sd._udp") | |||
and allowing the user to select one from the UI, or by any other | and allowing the user to select one from the UI, or by any other | |||
means appropriate to the particular use case being addressed. Full- | means appropriate to the particular use case being addressed. Full- | |||
featured devices construct the names of the SRV, TXT, and PTR records | featured devices construct the names of the SRV, TXT, and PTR records | |||
describing their service(s) as subdomains of the chosen service | describing their service(s) as subdomains of the chosen service | |||
registration domain. For these names they then discover the zone | registration domain. For these names they then discover the zone | |||
apex of the closest enclosing DNS zone using SOA queries | apex of the closest enclosing DNS zone using SOA queries | |||
[I-D.ietf-dnssd-push]. Having discovered the enclosing DNS zone, | [I-D.ietf-dnssd-push]. Having discovered the enclosing DNS zone, | |||
they query for the "_dnssd-srp._tcp<zone>" SRV record to discover the | they query for the "_dnssd-srp._tcp<zone>" SRV record to discover the | |||
server to which they should send DNS updates. | server to which they should send DNS updates. Hosts that support SRP | |||
updates using TLS use the "_dnssd-srp-tls._tcp<zone>" SRV record | ||||
instead. | ||||
For devices designed for Constrained-Node Networks [RFC7228] some | For devices designed for Constrained-Node Networks [RFC7228] some | |||
simplifications are available. Instead of being configured with (or | simplifications are available. Instead of being configured with (or | |||
discovering) the service registration domain, the (proposed) special- | discovering) the service registration domain, the (proposed) special- | |||
use domain name [RFC6761] "default.services.arpa" is used. Instead | use domain name (see [RFC6761]) "default.service.arpa" is used. | |||
of learning the server to which they should send DNS updates, a fixed | Instead of learning the server to which they should send DNS updates, | |||
IPv6 anycast address is used (value TBD). Anycasts are sent using | a fixed IPv6 anycast address is used (value TBD). Anycasts are sent | |||
UDP unless TCP is required due to the size of the update. It is the | using UDP unless TCP is required due to the size of the update. It | |||
responsibility of a Constrained-Node Network supporting SRP to | is the responsibility of a Constrained-Node Network supporting SRP to | |||
provide appropriate anycast routing to deliver the DNS updates to the | provide appropriate anycast routing to deliver the DNS updates to the | |||
appropriate server. It is the responsibility of the SRP server | appropriate server. It is the responsibility of the SRP server | |||
supporting a Constrained-Node Network to handle the updates | supporting a Constrained-Node Network to handle the updates | |||
appropriately. In some network environments, updates may be accepted | appropriately. In some network environments, updates may be accepted | |||
directly into a local "default.services.arpa" zone, which has only | directly into a local "default.service.arpa" zone, which has only | |||
local visibility. In other network environments, updates for names | local visibility. In other network environments, updates for names | |||
ending in "default.services.arpa" may be rewritten internally to | ending in "default.service.arpa" may be rewritten internally to names | |||
names with broader visibility. | with broader visibility. | |||
The reason for these different assumptions is that Constrained-Node | The reason for these different assumptions is that Constrained-Node | |||
Networks generally require special egress support, and Anycast | Networks generally require special egress support, and Anycast | |||
packets captured at the Constrained-Node Network egress can be | packets captured at the Constrained-Node Network egress can be | |||
assumed to have originated locally. Low-power devices that typically | assumed to have originated locally. Low-power devices that typically | |||
use Constrained-Node Networks may have very limited battery power. | use Constrained-Node Networks may have very limited battery power. | |||
The additional DNS lookups required to discover an SRP server and | The additional DNS lookups required to discover an SRP server and | |||
then communicate with it will increase the power required to | then communicate with it will increase the power required to | |||
advertise a service; for low-power devices, the additional | advertise a service; for low-power devices, the additional | |||
flexibility this provides does not justify the additional use of | flexibility this provides does not justify the additional use of | |||
skipping to change at page 5, line 48 ¶ | skipping to change at page 5, line 50 ¶ | |||
We refer to the DNS Update message sent by services using SRP as an | We refer to the DNS Update message sent by services using SRP as an | |||
SRP update. Three types of updates appear in an SRP update: Service | SRP update. Three types of updates appear in an SRP update: Service | |||
Discovery records, Service Description records, and Host Description | Discovery records, Service Description records, and Host Description | |||
records. | records. | |||
o Service Discovery records are one or more PTR RRs, mapping from | o Service Discovery records are one or more PTR RRs, mapping from | |||
the generic service type (or subtype) to the specific Service | the generic service type (or subtype) to the specific Service | |||
Instance Name. | Instance Name. | |||
o Service Description records are exactly one SRV RR, exactly one | o Service Description records are exactly one SRV RR, exactly one | |||
KEY RR, and one or more TXT RRs, both with the same name, the | KEY RR, and one or more TXT RRs, all with the same name, the | |||
Service Instance Name ([RFC6763] section 4.1). In principle | Service Instance Name ([RFC6763] section 4.1). In principle | |||
Service Description records can include other record types, with | Service Description records can include other record types, with | |||
the same Service Instance Name, though in practice they rarely do. | the same Service Instance Name, though in practice they rarely do. | |||
The Service Instance Name MUST be referenced by one or more | The Service Instance Name MUST be referenced by one or more | |||
Service Discovery PTR records, unless it is a placeholder service | Service Discovery PTR records, unless it is a placeholder service | |||
registration for an intentionally non-discoverable service name. | registration for an intentionally non-discoverable service name. | |||
o The Host Description records for a service are a KEY RR, used to | o The Host Description records for a service are a KEY RR, used to | |||
claim exclusive ownership of the service registration, and one or | claim exclusive ownership of the service registration, and one or | |||
more RRs of type A or AAAA, giving the IPv4 or IPv6 address(es) of | more RRs of type A or AAAA, giving the IPv4 or IPv6 address(es) of | |||
the host where the service resides. | the host where the service resides. | |||
RFC 6763 describes the details of what each of these types of updates | RFC 6763 describes the details of what each of these types of updates | |||
skipping to change at page 6, line 33 ¶ | skipping to change at page 6, line 34 ¶ | |||
2.2. Where to publish it | 2.2. Where to publish it | |||
Multicast DNS uses a single namespace, ".local", which is valid on | Multicast DNS uses a single namespace, ".local", which is valid on | |||
the local link. This convenience is not available for DNS-SD using | the local link. This convenience is not available for DNS-SD using | |||
the DNS protocol: services must exist in some specific unicast | the DNS protocol: services must exist in some specific unicast | |||
namespace. | namespace. | |||
As described above, full-featured devices are responsible for knowing | As described above, full-featured devices are responsible for knowing | |||
in what domain they should register their services. Devices made for | in what domain they should register their services. Devices made for | |||
Constrained-Node Networks register in the (proposed) special use | Constrained-Node Networks register in the (proposed) special use | |||
domain name [RFC6761] "default.services.arpa", and let the SRP server | domain name [RFC6761] "default.service.arpa", and let the SRP server | |||
handle rewriting that to a different domain if necessary. | handle rewriting that to a different domain if necessary. | |||
2.3. How to publish it | 2.3. How to publish it | |||
It is possible to issue a DNS Update that does several things at | It is possible to issue a DNS Update that does several things at | |||
once; this means that it's possible to do all the work of adding a | once; this means that it's possible to do all the work of adding a | |||
PTR resource record to the PTR RRset on the Service Name if it | PTR resource record to the PTR RRset on the Service Name, and | |||
already exists, or creating one if it doesn't, and creating or | creating or updating the Service Instance Name and Host Description, | |||
updating the Service Instance Name and Host Description in a single | in a single transaction. | |||
transaction. | ||||
An SRP update is therefore implemented as a single DNS Update message | An SRP update takes advantage of this: it is implemented as a single | |||
that contains a service's Service Discovery records, Service | DNS Update message that contains a service's Service Discovery | |||
Description records, and Host Description records. | records, Service Description records, and Host Description records. | |||
Updates done according to this specification are somewhat different | Updates done according to this specification are somewhat different | |||
than regular DNS Updates as defined in RFC2136. RFC2136 uses a | than regular DNS Updates as defined in RFC2136. RFC2136 uses a | |||
fairly heavyweight process for updating: you might first attempt to | fairly heavyweight process for updating: you might first attempt to | |||
add a name if it doesn't exist; if that fails, then in a second | add a name if it doesn't exist; if that fails, then in a second | |||
message you might update the name if it does exist but matches | message you might update the name if it does exist but matches | |||
certain preconditions. Because the registration protocol uses a | certain preconditions. Because the registration protocol uses a | |||
single transaction, some of this adaptability is lost. | single transaction, some of this adaptability is lost. | |||
In order to allow updates to happen in a single transaction, SRP | In order to allow updates to happen in a single transaction, SRP | |||
updates do not include update constraints. The constraints specified | updates do not include update prerequisites. The specified in | |||
in Section 2.4.2 are implicit in the processing of SRP updates, and | Section 2.4.2 are implicit in the processing of SRP updates, and so | |||
so there is no need for the service sending the SRP update to put in | there is no need for the service sending the SRP update to put in any | |||
any explicit constraints. | explicit prerequisites. | |||
2.3.1. How DNS-SD Service Registration differs from standard RFC2136 | 2.3.1. How DNS-SD Service Registration differs from standard RFC2136 | |||
DNS Update | DNS Update | |||
DNS-SD Service Registration is based on standard RFC2136 DNS Update, | DNS-SD Service Registration is based on standard RFC2136 DNS Update, | |||
with some differences: | with some differences: | |||
o It implements first-come first-served name allocation, protected | o It implements first-come first-served name allocation, protected | |||
using SIG(0) [RFC2931]. | using SIG(0) [RFC2931]. | |||
o It enforces policy about what updates are allowed. | o It enforces policy about what updates are allowed. | |||
o It optionally performs rewriting of "default.services.arpa" to | o It optionally performs rewriting of "default.service.arpa" to some | |||
some other domain. | other domain. | |||
o It optionally performs automatic population of the address-to-name | o It optionally performs automatic population of the address-to-name | |||
reverse mapping domains. | reverse mapping domains. | |||
o An SRP server is not required to implement general DNS Update | o An SRP server is not required to implement general DNS Update | |||
prerequsite processing. | prerequsite processing. | |||
o Simplified clients are allowed to send updates to an anycast | o Simplified clients are allowed to send updates to an anycast | |||
address, for names ending in "default.services.arpa" | address, for names ending in "default.service.arpa" | |||
2.3.2. Testing using standard RFC2136-compliant servers | 2.3.2. Testing using standard RFC2136-compliant servers | |||
It may be useful to set up a DNS server for testing that does not | It may be useful to set up a DNS server for testing that does not | |||
implement SRP. This can be done by configuring the server to listen | implement SRP. This can be done by configuring the server to listen | |||
on the anycast address, or advertising it in the | on the anycast address, or advertising it in the | |||
_dnssd-srp._tcp.<zone> SRV record. It must be configured to be | _dnssd-srp._tcp.<zone> SRV and _dnssd-srp-tls._tcp.<zone> record. It | |||
authoritative for "default.services.arpa", and to accept updates from | must be configured to be authoritative for "default.service.arpa", | |||
hosts on local networks for names under "default.services.arpa" | and to accept updates from hosts on local networks for names under | |||
without authentication, since such servers will not have support for | "default.service.arpa" without authentication, since such servers | |||
FCFS authentication Section 2.4.1. | will not have support for FCFS authentication Section 2.4.1. | |||
A server configured in this way will be able to successfully accept | A server configured in this way will be able to successfully accept | |||
and process SRP updates from services that send SRP updates. | and process SRP updates from services that send SRP updates. | |||
However, no constraints will be applied, and this means that the test | However, no prerequisites will be applied, and this means that the | |||
server will accept internally inconsistent SRP updates, and will not | test server will accept internally inconsistent SRP updates, and will | |||
stop two SRP updates, sent by different services, that claim the same | not stop two SRP updates, sent by different services, that claim the | |||
name(s), from overwriting each other. | same name(s), from overwriting each other. | |||
Since SRP updates are signed with keys, validation of the SIG(0) | Since SRP updates are signed with keys, validation of the SIG(0) | |||
algorithm used by the client can be done by manually installing the | algorithm used by the client can be done by manually installing the | |||
client public key on the DNS server that will be receiving the | client public key on the DNS server that will be receiving the | |||
updates. The key can then be used to authenticate the client, and | updates. The key can then be used to authenticate the client, and | |||
can be used as a requirement for the update. An example | can be used as a requirement for the update. An example | |||
configuration for testing SRP using BIND 9 is given in Appendix A. | configuration for testing SRP using BIND 9 is given in Appendix A. | |||
2.3.3. How to allow services to update standard RFC2136-compliant | 2.3.3. How to allow services to update standard RFC2136-compliant | |||
servers | servers | |||
Ordinarily SRP updates will fail when sent to an RFC 2136-compliant | Ordinarily SRP updates will fail when sent to an RFC 2136-compliant | |||
server that does not implement SRP because the zone being updated is | server that does not implement SRP because the zone being updated is | |||
"default.services.arpa", and no DNS server that is not an SRP server | "default.service.arpa", and no DNS server that is not an SRP server | |||
should normally be configured to be authoritative for | should normally be configured to be authoritative for | |||
"default.services.arpa". Therefore, a service that sends an SRP | "default.service.arpa". Therefore, a service that sends an SRP | |||
update can tell that the receiving server does not support SRP, but | update can tell that the receiving server does not support SRP, but | |||
does support RFC2136, because the RCODE will either be NOTZONE, | does support RFC2136, because the RCODE will either be NOTZONE, | |||
NOTAUTH or REFUSED, or because there is no response to the update | NOTAUTH or REFUSED, or because there is no response to the update | |||
request (when using the anycast address) | request (when using the anycast address) | |||
In this case a service MAY attempt to register itself using regular | In this case a service MAY attempt to register itself using regular | |||
RFC2136 DNS updates. To do so, it must discover the default | RFC2136 DNS updates. To do so, it must discover the default | |||
registration zone and the DNS server designated to receive updates | registration zone and the DNS server designated to receive updates | |||
for that zone, as described earlier using the _dns-update._udp SRV | for that zone, as described earlier, using the _dns-update._udp SRV | |||
record. It can then make the update using the port and host pointed | record. It can then make the update using the port and host pointed | |||
to by the SRV record, and should use appropriate constraints to avoid | to by the SRV record, and should use appropriate prerequisites to | |||
overwriting competing records. Such updates are out of scope for | avoid overwriting competing records. Such updates are out of scope | |||
SRP, and a service that implements SRP MUST first attempt to use SRP | for SRP, and a service that implements SRP MUST first attempt to use | |||
to register itself, and should only attempt to use RFC2136 backwards | SRP to register itself, and should only attempt to use RFC2136 | |||
compatibility if that fails. Although the owner name for the SRV | backwards compatibility if that fails. Although the owner name for | |||
record specifies the UDP protocol for updates, it is also possible to | the SRV record specifies the UDP protocol for updates, it is also | |||
use TCP, when the update is too large. | possible to use TCP, and TCP should be required to prevent spoofing. | |||
2.4. How to secure it | 2.4. How to secure it | |||
Traditional DNS update is secured using the TSIG protocol, which uses | Traditional DNS update is secured using the TSIG protocol, which uses | |||
a secret key shared between the client (which issues the update) and | a secret key shared between the client (which issues the update) and | |||
the server (which authenticates it). This model does not work for | the server (which authenticates it). This model does not work for | |||
automatic service registration. | automatic service registration. | |||
The goal of securing the DNS-SD Registration Protocol is to provide | The goal of securing the DNS-SD Registration Protocol is to provide | |||
the best possible security given the constraint that service | the best possible security given the constraint that service | |||
skipping to change at page 9, line 34 ¶ | skipping to change at page 9, line 35 ¶ | |||
pair MUST be unique to the device. | pair MUST be unique to the device. | |||
When sending DNS updates, the service includes a KEY record | When sending DNS updates, the service includes a KEY record | |||
containing the public portion of the key in each Host Description | containing the public portion of the key in each Host Description | |||
update and each Service Description update. Each KEY record MUST | update and each Service Description update. Each KEY record MUST | |||
contain the same public key. The update is signed using SIG(0), | contain the same public key. The update is signed using SIG(0), | |||
using the private key that corresponds to the public key in the KEY | using the private key that corresponds to the public key in the KEY | |||
record. The lifetimes of the records in the update is set using the | record. The lifetimes of the records in the update is set using the | |||
EDNS(0) Update Lease option [I-D.sekar-dns-ul]. | EDNS(0) Update Lease option [I-D.sekar-dns-ul]. | |||
The KEY record in service description updates MAY be omitted for | The KEY record in Service Description updates MAY be omitted for | |||
brevity; if it is omitted, the SRP server MUST behave as if the same | brevity; if it is omitted, the SRP server MUST behave as if the same | |||
KEY record that is given for the Host Description is also given for | KEY record that is given for the Host Description is also given for | |||
each Service Description for which no KEY record is provided. | each Service Description for which no KEY record is provided. | |||
Omitted KEY records are not used when computing the SIG(0) signature. | Omitted KEY records are not used when computing the SIG(0) signature. | |||
The lifetime of the DNS-SD PTR, SRV, A, AAAA and TXT records | The lifetime of the DNS-SD PTR, SRV, A, AAAA and TXT records | |||
[RFC6763] uses the LEASE field of the Update Lease option, and is | [RFC6763] uses the LEASE field of the Update Lease option, and is | |||
typically set to two hours. This means that if a device is | typically set to two hours. This means that if a device is | |||
disconnected from the network, it does not appear in the user | disconnected from the network, it does not appear in the user | |||
interfaces of devices looking for services of that type for too long. | interfaces of devices looking for services of that type for too long. | |||
skipping to change at page 10, line 26 ¶ | skipping to change at page 10, line 26 ¶ | |||
RFC2136. | RFC2136. | |||
The SRP server checks each update in the SRP update to see that it | The SRP server checks each update in the SRP update to see that it | |||
contains a Service Discovery update, a Service Description update, | contains a Service Discovery update, a Service Description update, | |||
and a Host Description update. Order matters in DNS updates. | and a Host Description update. Order matters in DNS updates. | |||
Specifically, deletes must precede adds for records that the deletes | Specifically, deletes must precede adds for records that the deletes | |||
would affect; otherwise the add will have no effect. This is the | would affect; otherwise the add will have no effect. This is the | |||
only ordering constraint; aside from this constraint, updates may | only ordering constraint; aside from this constraint, updates may | |||
appear in whatever order is convenient when constructing the update. | appear in whatever order is convenient when constructing the update. | |||
Because the SRP update is a DNS update, it MUST contain a single | ||||
question that indicates the zone to be updated. Every delete and | ||||
update in an SRP update MUST be within the zone that is specified for | ||||
the SRP Update. | ||||
An update is a Service Discovery update if it contains | An update is a Service Discovery update if it contains | |||
o exactly one RRset update, | o exactly one RRset update, | |||
o which is for a PTR RR, | o which is for a PTR RR, | |||
o which points to a Service Instance Name | o which points to a Service Instance Name | |||
o for which an update is present in the SRP update. | o for which an update is present in the SRP update. | |||
o Service Discovery updates do not contain any deletes, and do not | o Service Discovery updates do not contain any deletes, and do not | |||
contain any other updates. | contain any other updates. | |||
An update is a Service Description update if, for the appropriate | An update is a Service Description update if, for the appropriate | |||
skipping to change at page 11, line 16 ¶ | skipping to change at page 11, line 21 ¶ | |||
public key corresponding to the private key that was used to sign | public key corresponding to the private key that was used to sign | |||
the message, | the message, | |||
o there is a Service Instance Name update in the SRP update that | o there is a Service Instance Name update in the SRP update that | |||
updates an SRV RR so that it points to the hostname being updated | updates an SRV RR so that it points to the hostname being updated | |||
by this update. | by this update. | |||
o Host Description updates do not update any other records. | o Host Description updates do not update any other records. | |||
An SRP update MUST include at least one Service Discovery update, at | An SRP update MUST include at least one Service Discovery update, at | |||
least one Service Description update, and exactly one Host | least one Service Description update, and exactly one Host | |||
Description update. An update message that does not is not an SRP | Description update. An update message that does not is not an SRP | |||
update. An update message that contains any other updates, or any | update. An update message that contains any other updates, any other | |||
update constraints, is not an SRP update. Such messages should | deletes, or any update prerequisites, is not an SRP update. Such | |||
either be processed as regular RFC2136 updates, including access | messages should either be processed as regular RFC2136 updates, | |||
control checks and constraint checks, if supported, or else rejected | including access control checks and constraint checks, if supported, | |||
with RCODE=REFUSED. | or else rejected with RCODE=REFUSED. | |||
Note that if the definitions of each of these update types are | Note that if the definitions of each of these update types are | |||
followed carefully, this means that many things that look very much | followed carefully, this means that many things that look very much | |||
like SRP updates nevertheless are not. For example, a DNS update | like SRP updates nevertheless are not. For example, a DNS update | |||
that contains an update to a Service Name and an update to a Service | that contains an update to a Service Name and an update to a Service | |||
Instance Name, where the Service Name does not reference the Service | Instance Name, where the Service Name does not reference the Service | |||
Instance Name, is not a valid SRP update message, but may be a valid | Instance Name, is not a valid SRP update message, but may be a valid | |||
RFC2136 update. | RFC2136 update. | |||
Assuming that an update message has been validated with these | Assuming that an update message has been validated with these | |||
skipping to change at page 12, line 10 ¶ | skipping to change at page 12, line 14 ¶ | |||
KEY record updates omitted from Service Description update are | KEY record updates omitted from Service Description update are | |||
processed as if they had been explicitly present: every Service | processed as if they had been explicitly present: every Service | |||
Description that is updated MUST, after the update, have a KEY RR, | Description that is updated MUST, after the update, have a KEY RR, | |||
and it must be the same KEY RR that is present in the Host | and it must be the same KEY RR that is present in the Host | |||
Description to which the Service Description refers. | Description to which the Service Description refers. | |||
The status that is returned depends on the result of processing the | The status that is returned depends on the result of processing the | |||
update, and can be either SUCCESS or SERVFAIL: all other possible | update, and can be either SUCCESS or SERVFAIL: all other possible | |||
outcomes should already have been accounted for when applying the | outcomes should already have been accounted for when applying the | |||
constraints. | constraints that qualify the update as an SRP Update. | |||
The server MAY add a Reverse Mapping that corresponds to the Host | The server MAY add a Reverse Mapping that corresponds to the Host | |||
Description. This is not required because the Reverse Mapping serves | Description. This is not required because the Reverse Mapping serves | |||
no protocol function, but it may be useful for debugging, e.g. in | no protocol function, but it may be useful for debugging, e.g. in | |||
annotating network packet traces or logs. | annotating network packet traces or logs. In order for the server to | |||
add a reverse mapping update, it must be authoritative for the zone | ||||
or have credentials to do the update. The client MAY also do a | ||||
reverse mapping update if it has credentials to do so. | ||||
The server MAY apply additional criteria when accepting updates. In | The server MAY apply additional criteria when accepting updates. In | |||
some networks, it may be possible to do out-of-band registration of | some networks, it may be possible to do out-of-band registration of | |||
keys, and only accept updates from pre-registered keys. In this | keys, and only accept updates from pre-registered keys. In this | |||
case, an update for a key that has not been registered should be | case, an update for a key that has not been registered should be | |||
rejected with the REFUSED RCODE. | rejected with the REFUSED RCODE. | |||
There are at least two benefits to doing this rather than simply | There are at least two benefits to doing this rather than simply | |||
using normal SIG(0) DNS updates. First, the same registration | using normal SIG(0) DNS updates. First, the same registration | |||
protocol can be used in both cases, so both use cases can be | protocol can be used in both cases, so both use cases can be | |||
skipping to change at page 16, line 43 ¶ | skipping to change at page 16, line 50 ¶ | |||
For validation, SRP Servers MUST implement the ECDSAP256SHA256 | For validation, SRP Servers MUST implement the ECDSAP256SHA256 | |||
signature algorithm. SRP servers SHOULD implement the algorithms | signature algorithm. SRP servers SHOULD implement the algorithms | |||
specified in [I-D.ietf-dnsop-algorithm-update] section 3.1, in the | specified in [I-D.ietf-dnsop-algorithm-update] section 3.1, in the | |||
validation column of the table, starting with algorithm number 13. | validation column of the table, starting with algorithm number 13. | |||
SRP clients MUST NOT assume that any algorithm numbered lower than 13 | SRP clients MUST NOT assume that any algorithm numbered lower than 13 | |||
is available for use in validating SIG(0) signatures. | is available for use in validating SIG(0) signatures. | |||
4. Privacy Considerations | 4. Privacy Considerations | |||
5. Delegation of 'services.arpa.' | Because DNSSD SRP updates can be sent off-link, the privacy | |||
implications of SRP are different than for multicast DNS responses. | ||||
Host implementations that are using TCP SHOULD also use TLS if | ||||
available. Server implementations MUST offer TLS support. The use | ||||
of TLS with DNS is described in [RFC7858] and [RFC8310]. | ||||
Hosts that implement TLS support SHOULD NOT fall back to TCP; since | ||||
servers are required to support TLS, it is entirely up to the host | ||||
implementation whether to use it. | ||||
5. Delegation of 'service.arpa.' | ||||
In order to be fully functional, there must be a delegation of | In order to be fully functional, there must be a delegation of | |||
'services.arpa.' in the '.arpa.' zone [RFC3172]. This delegation | 'service.arpa.' in the '.arpa.' zone [RFC3172]. This delegation | |||
should be set up as was done for 'home.arpa', as a result of the | should be set up as was done for 'home.arpa', as a result of the | |||
specification in [RFC8375]Section 7. | specification in [RFC8375]Section 7. | |||
6. IANA Considerations | 6. IANA Considerations | |||
6.1. Registration and Delegation of 'services.arpa' as a Special-Use | 6.1. Registration and Delegation of 'service.arpa' as a Special-Use | |||
Domain Name | Domain Name | |||
IANA is requested to record the domain name 'services.arpa.' in the | IANA is requested to record the domain name 'service.arpa.' in the | |||
Special-Use Domain Names registry [SUDN]. IANA is requested, with | Special-Use Domain Names registry [SUDN]. IANA is requested, with | |||
the approval of IAB, to implement the delegation requested in | the approval of IAB, to implement the delegation requested in | |||
Section 5. | Section 5. | |||
IANA is further requested to add a new entry to the "Transport- | IANA is further requested to add a new entry to the "Transport- | |||
Independent Locally-Served Zones" subregistry of the the "Locally- | Independent Locally-Served Zones" subregistry of the the "Locally- | |||
Served DNS Zones" registry[LSDZ]. The entry will be for the domain | Served DNS Zones" registry[LSDZ]. The entry will be for the domain | |||
'services.arpa.' with the description "DNS-SD Registration Protocol | 'service.arpa.' with the description "DNS-SD Registration Protocol | |||
Special-Use Domain", listing this document as the reference. | Special-Use Domain", listing this document as the reference. | |||
6.2. 'dnssd-srp' Service Name | 6.2. 'dnssd-srp' Service Name | |||
IANA is also requested to add a new entry to the Service Names and | IANA is also requested to add a new entry to the Service Names and | |||
Port Numbers registry for dnssd-srp with a transport type of tcp. No | Port Numbers registry for dnssd-srp with a transport type of tcp. No | |||
port number is to be assigned. The reference should be to this | port number is to be assigned. The reference should be to this | |||
document, and the Assignee and Contact information should reference | document, and the Assignee and Contact information should reference | |||
the authors of this document. The Description should be as follows: | the authors of this document. The Description should be as follows: | |||
Availability of DNS Service Discovery Service Registration Protocol | Availability of DNS Service Discovery Service Registration Protocol | |||
Service for a given domain is advertised using the | Service for a given domain is advertised using the | |||
"_dnssd-srp._tcp.<domain>." SRV record gives the target host and | "_dnssd-srp._tcp.<domain>." SRV record gives the target host and | |||
port where DNSSD Service Registration Service is provided for the | port where DNSSD Service Registration Service is provided for the | |||
named domain. | named domain. | |||
6.3. Anycast Address | 6.3. 'dnssd-srp-tls' Service Name | |||
IANA is also requested to add a new entry to the Service Names and | ||||
Port Numbers registry for dnssd-srp with a transport type of tcp. No | ||||
port number is to be assigned. The reference should be to this | ||||
document, and the Assignee and Contact information should reference | ||||
the authors of this document. The Description should be as follows: | ||||
Availability of DNS Service Discovery Service Registration Protocol | ||||
Service for a given domain over TLS is advertised using the | ||||
"_dnssd-srp-tls._tcp.<domain>." SRV record gives the target host and | ||||
port where DNSSD Service Registration Service is provided for the | ||||
named domain. | ||||
6.4. Anycast Address | ||||
IANA is requested to allocate an IPv6 Anycast address from the IPv6 | IANA is requested to allocate an IPv6 Anycast address from the IPv6 | |||
Special-Purpose Address Registry, similar to the Port Control | Special-Purpose Address Registry, similar to the Port Control | |||
Protocol anycast address, 2001:1::1. This address is referred to | Protocol anycast address, 2001:1::1. This address is referred to | |||
within the document as TBD1, and the document should be updated to | within the document as TBD1, and the document should be updated to | |||
reflect the address that was allocated. | reflect the address that was allocated. | |||
7. Acknowledgments | 7. Acknowledgments | |||
Thanks to Toke Hoeiland-Joergensen for a thorough technical review, | Thanks to Toke Hoeiland-Joergensen for a thorough technical review, | |||
skipping to change at page 18, line 38 ¶ | skipping to change at page 19, line 22 ¶ | |||
RFC 8106, DOI 10.17487/RFC8106, March 2017, | RFC 8106, DOI 10.17487/RFC8106, March 2017, | |||
<https://www.rfc-editor.org/info/rfc8106>. | <https://www.rfc-editor.org/info/rfc8106>. | |||
[RFC8375] Pfister, P. and T. Lemon, "Special-Use Domain | [RFC8375] Pfister, P. and T. Lemon, "Special-Use Domain | |||
'home.arpa.'", RFC 8375, DOI 10.17487/RFC8375, May 2018, | 'home.arpa.'", RFC 8375, DOI 10.17487/RFC8375, May 2018, | |||
<https://www.rfc-editor.org/info/rfc8375>. | <https://www.rfc-editor.org/info/rfc8375>. | |||
[I-D.ietf-dnsop-algorithm-update] | [I-D.ietf-dnsop-algorithm-update] | |||
Wouters, P. and O. Sury, "Algorithm Implementation | Wouters, P. and O. Sury, "Algorithm Implementation | |||
Requirements and Usage Guidance for DNSSEC", draft-ietf- | Requirements and Usage Guidance for DNSSEC", draft-ietf- | |||
dnsop-algorithm-update-06 (work in progress), February | dnsop-algorithm-update-10 (work in progress), April 2019. | |||
2019. | ||||
[SUDN] "Special-Use Domain Names Registry", July 2012, | [SUDN] "Special-Use Domain Names Registry", July 2012, | |||
<https://www.iana.org/assignments/special-use-domain- | <https://www.iana.org/assignments/special-use-domain- | |||
names/special-use-domain-names.xhtml>. | names/special-use-domain-names.xhtml>. | |||
[LSDZ] "Locally-Served DNS Zones Registry", July 2011, | [LSDZ] "Locally-Served DNS Zones Registry", July 2011, | |||
<https://www.iana.org/assignments/locally-served-dns- | <https://www.iana.org/assignments/locally-served-dns- | |||
zones/locally-served-dns-zones.xhtml>. | zones/locally-served-dns-zones.xhtml>. | |||
8.2. Informative References | 8.2. Informative References | |||
skipping to change at page 20, line 10 ¶ | skipping to change at page 20, line 39 ¶ | |||
[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-editor.org/info/rfc6762>. | <https://www.rfc-editor.org/info/rfc6762>. | |||
[RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | |||
Constrained-Node Networks", RFC 7228, | Constrained-Node Networks", RFC 7228, | |||
DOI 10.17487/RFC7228, May 2014, | DOI 10.17487/RFC7228, May 2014, | |||
<https://www.rfc-editor.org/info/rfc7228>. | <https://www.rfc-editor.org/info/rfc7228>. | |||
[RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., | ||||
and P. Hoffman, "Specification for DNS over Transport | ||||
Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May | ||||
2016, <https://www.rfc-editor.org/info/rfc7858>. | ||||
[RFC8310] Dickinson, S., Gillmor, D., and T. Reddy, "Usage Profiles | ||||
for DNS over TLS and DNS over DTLS", RFC 8310, | ||||
DOI 10.17487/RFC8310, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8310>. | ||||
[I-D.ietf-dnssd-hybrid] | [I-D.ietf-dnssd-hybrid] | |||
Cheshire, S., "Discovery Proxy for Multicast DNS-Based | Cheshire, S., "Discovery Proxy for Multicast DNS-Based | |||
Service Discovery", draft-ietf-dnssd-hybrid-08 (work in | Service Discovery", draft-ietf-dnssd-hybrid-10 (work in | |||
progress), March 2018. | progress), March 2019. | |||
[I-D.ietf-dnssd-push] | [I-D.ietf-dnssd-push] | |||
Pusateri, T. and S. Cheshire, "DNS Push Notifications", | Pusateri, T. and S. Cheshire, "DNS Push Notifications", | |||
draft-ietf-dnssd-push-17 (work in progress), March 2019. | draft-ietf-dnssd-push-21 (work in progress), July 2019. | |||
[I-D.cheshire-dnssd-roadmap] | [I-D.cheshire-dnssd-roadmap] | |||
Cheshire, S., "Service Discovery Road Map", draft- | Cheshire, S., "Service Discovery Road Map", draft- | |||
cheshire-dnssd-roadmap-03 (work in progress), October | cheshire-dnssd-roadmap-03 (work in progress), October | |||
2018. | 2018. | |||
[I-D.cheshire-edns0-owner-option] | [I-D.cheshire-edns0-owner-option] | |||
Cheshire, S. and M. Krochmal, "EDNS0 OWNER Option", draft- | Cheshire, S. and M. Krochmal, "EDNS0 OWNER Option", draft- | |||
cheshire-edns0-owner-option-01 (work in progress), July | cheshire-edns0-owner-option-01 (work in progress), July | |||
2017. | 2017. | |||
[ZC] Cheshire, S. and D. Steinberg, "Zero Configuration | [ZC] Cheshire, S. and D. Steinberg, "Zero Configuration | |||
Networking: The Definitive Guide", O'Reilly Media, Inc. , | Networking: The Definitive Guide", O'Reilly Media, Inc. , | |||
ISBN 0-596-10100-7, December 2005. | ISBN 0-596-10100-7, December 2005. | |||
Appendix A. Sample BIND9 configuration for default.services.arpa. | Appendix A. Sample BIND9 configuration for default.service.arpa. | |||
zone "default.services.arpa." { | zone "default.service.arpa." { | |||
type master; | type master; | |||
file "/etc/bind/master/service.db"; | file "/etc/bind/master/service.db"; | |||
allow-update { key demo.default.services.arpa.; }; | allow-update { key demo.default.service.arpa.; }; | |||
}; | }; | |||
Zone Configuration in named.conf | Zone Configuration in named.conf | |||
$ORIGIN . | $ORIGIN . | |||
$TTL 57600 ; 16 hours | $TTL 57600 ; 16 hours | |||
default.services.arpa IN SOA ns3.default.services.arpa. postmaster.default.services.arpa. ( | default.service.arpa IN SOA ns3.default.service.arpa. postmaster.default.service.arpa. ( | |||
2951053287 ; serial | 2951053287 ; serial | |||
3600 ; refresh (1 hour) | 3600 ; refresh (1 hour) | |||
1800 ; retry (30 minutes) | 1800 ; retry (30 minutes) | |||
604800 ; expire (1 week) | 604800 ; expire (1 week) | |||
3600 ; minimum (1 hour) | 3600 ; minimum (1 hour) | |||
) | ) | |||
NS ns3.default.services.arpa. | NS ns3.default.service.arpa. | |||
SRV 0 0 53 ns3.default.services.arpa. | SRV 0 0 53 ns3.default.service.arpa. | |||
$ORIGIN default.services.arpa. | $ORIGIN default.service.arpa. | |||
$TTL 3600 ; 1 hour | $TTL 3600 ; 1 hour | |||
_ipps._tcp PTR demo._ipps._tcp | _ipps._tcp PTR demo._ipps._tcp | |||
$ORIGIN _ipps._tcp.default.services.arpa. | $ORIGIN _ipps._tcp.default.service.arpa. | |||
demo TXT "0" | demo TXT "0" | |||
SRV 0 0 9992 demo.default.services.arpa. | SRV 0 0 9992 demo.default.service.arpa. | |||
$ORIGIN _udp.default.services.arpa. | $ORIGIN _udp.default.service.arpa. | |||
$TTL 3600 ; 1 hour | $TTL 3600 ; 1 hour | |||
_dns-update PTR ns3.default.services.arpa. | _dns-update PTR ns3.default.service.arpa. | |||
$ORIGIN _tcp.default.services.arpa. | $ORIGIN _tcp.default.service.arpa. | |||
_dnssd-srp PTR ns3.default.services.arpa. | _dnssd-srp PTR ns3.default.service.arpa. | |||
$ORIGIN default.services.arpa. | $ORIGIN default.service.arpa. | |||
$TTL 300 ; 5 minutes | $TTL 300 ; 5 minutes | |||
ns3 AAAA 2001:db8:0:1::1 | ns3 AAAA 2001:db8:0:1::1 | |||
$TTL 3600 ; 1 hour | $TTL 3600 ; 1 hour | |||
demo AAAA 2001:db8:0:2::1 | demo AAAA 2001:db8:0:2::1 | |||
KEY 513 3 13 ( | KEY 513 3 13 ( | |||
qweEmaaq0FAWok5//ftuQtZgiZoiFSUsm0srWREdywQU | qweEmaaq0FAWok5//ftuQtZgiZoiFSUsm0srWREdywQU | |||
9dpvtOhrdKWUuPT3uEFF5TZU6B4q1z1I662GdaUwqg== | 9dpvtOhrdKWUuPT3uEFF5TZU6B4q1z1I662GdaUwqg== | |||
); alg = ECDSAP256SHA256 ; key id = 15008 | ); alg = ECDSAP256SHA256 ; key id = 15008 | |||
AAAA ::1 | AAAA ::1 | |||
End of changes. 48 change blocks. | ||||
89 lines changed or deleted | 130 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/ |