Internet Engineering Task Force | T. Pusateri |
Internet-Draft | Seeking affiliation |
Intended status: Standards Track | April 1, 2015 |
Expires: October 3, 2015 |
DNS-SD Hybrid Proxy Implementation Advice
draft-pusateri-hybridproxy-impl-00
This document provides advice on the implementation of a DNS Service Discovery Hybrid Proxy Server. It describes the configuration parameters at the delegating DNS server, the hybrid proxy itself, and the client. It also describes the resource records required of the delegating DNS server and the hybrid proxy.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 3, 2015.
Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
A hybrid proxy [I-D.ietf-dnssd-hybrid] dynamically maps between the multicast DNS link-local infrastructure and the wide-area unicast DNS infrastructure. Externally, it looks like a standard unicast DNS server. Internally, instead of static resource records, it builds a cache of resource records that it learns dynamically on an interface where mDNS is used. These resource records are mapped to a location in the unicast DNS hierarchy by associating a subdomain with each IP subnet.
Responses to queries made for resource records in the subdomain are filled by a dynamic cache of records learned dynamically from the IP subnet. Unicast queries received by the hybrid proxy may trigger mDNS queries from the hybrid proxy to the IP subnet associated with the subdomain. If subscriptions are active for the record in a query, the hybrid proxy will already have an up to date cache and no mDNS queries are triggered.
The delegating DNS server requires configuration of the subdomain delegations and the browse PTR records for each subdomain. All configuration parameters are in the form '@entity.parameter' for easy identification.
This configuration item is for each hybrid proxy on each subdomain.
The delegating DNS server will have NS records for each hybrid proxy for the subdomain on each IP subnet it is connected. There maybe multiple NS records for the same subdomain for each hybrid proxy.
Delegation | Class | Type | Hybrid Proxy |
---|---|---|---|
subdomain1.example.com. | IN | NS | foo.example.com. |
subdomain1.example.com. | IN | NS | bar.example.com. |
subdomain2.example.com. | IN | NS | hba.example.com. |
If the DNS name of the hybrid proxy is within the delegating server's zone, it will also have address records for the hybrid proxy.
This configuration item is for each subdomain.
In order for clients to learn about all of the subdomains it should browse for services, the delegating DNS server should have a browse PTR record for each subdomain.
Browse Service | Class | Type | Delegation |
---|---|---|---|
b._dns-sd._udp | IN | PTR | subdomain1.example.com. |
b._dns-sd._udp | IN | PTR | subdomain2.example.com. |
This configuration item is for each IP subnet.
The hybrid proxy must determine which subdomain name to associate with each connected IP subnet. If multiple hybrid proxies exist on the same IP subnet, this subdomain name should be consistent across all hybrid proxies on that IP subnet.
There are several different ways that a hybrid proxy can determine the subdomain name of it's connected IP subnets.
This configuration item is for each IP subnet.
In order for the hybrid to function as an authoritative server for a subdomain, the subdomain must be delegated by the DNS server responsible for the zone it is delegated from.
The hybrid proxy must know the NS record delegation name and the address for which to listen for queries that are forwarded. Before the delegation server will forward queries to the delegated hybrid proxy for a subdomain, it will query the NS record for the subdomain from the hybrid proxy to ensure it will accept queries for the subdomain.
In the case of multiple hybrid proxies, the delegating server will have multiple NS record delegations and will select one based on local policy to forward requests to.
This configuration item is for each @hybrid_proxy.ns_delegation_name
The address records must refer to active addresses (IPv4 or IPv6) on the hybrid proxy.
The hybrid proxy must answer the following resource records when queried:
Additionally, if LLQ [I-D.sekar-dns-llq] and/or DNS Push [I-D.ietf-dnssd-push] is supported, the hybrid proxy must answer to these additional records:
Since there may be multiple LLQ and/or DNS Push SRV records for each subdomain (one for each hybrid proxy), each hybrid proxy should return all of the SRV records from each hybrid proxy on the IP subnet. Otherwise only a subset of SRV records may be cached and load balancing may not be effective.
In order for each hybrid proxy to learn about the other hybrid proxy's SRV records, each hybrid proxy should advertise its own SRV records for LLQ and/or DNS Push through mDNS on the shared IP subnet.
Because there should only be one SOA record for the delegated subdomain, a mechanism is needed to ensure only one hybrid proxy advertises the SOA record for the delegated subdomain. (TBD)
This satisfies the minimum configuration requirements but it is likely that additional parameters will be desired. Examples include the port numbers to listen for mandatory TLS or policy to determine which services get advertised to which unicast clients.
Port 53, forwarded to by delegating DNS server
Port 53, 5352, or custom, advertised in SRV record
Port 53, 5352, or custom, advertised in SRV record
Random port, advertised in SRV record, one will be assigned in DPRIVE for TLS/TCP
A unicast client will not necessarily need to know the name or IP address of the hybrid proxy. It can send unicast queries to the local resolver learned through DHCP or SLAAC. However, if long-lived queries (LLQ) or DNS Push Notifications are wanted, a direct connection from the client to the hybrid proxy is needed. This will require discovery of the name and IP address of a hybrid proxy for the subdomain.
Based on the search domains learned (typically via DHCP or SLAAC), the client will want to query for the list of subdomains that are browseable. This is a PTR query for b._dns-sd._udp.<zone> for each search domain. This will return the list of subdomains to browse. The client can then make sure each subdomain is browseable with a PTR query to b._dns-sd._udp.<subdomain>.<zone>. Responses to this query will enable the client to then search for services in that subdomain using PTR queries for the service name. Clients may also query lb._dns-sd._udp.<subdomain>.<zone> for legacy browsing of the subdomain.
Can we auto-configure?
Otherwise, we receive local configuration by other means.
Are the DNS records in the delegating zone setup correctly for the hybrid proxy to function?
This document has no IANA considerations.
There are no security considerations at this time.
[I-D.ietf-dnssd-hybrid] | Cheshire, S., "Hybrid Unicast/Multicast DNS-Based Service Discovery", Internet-Draft draft-ietf-dnssd-hybrid-00, November 2014. |
[I-D.ietf-dnssd-push] | Pusateri, T. and S. Cheshire, "DNS Push Notifications", Internet-Draft draft-ietf-dnssd-push-00, March 2015. |
[I-D.sekar-dns-llq] | Sekar, K., "DNS Long-Lived Queries", Internet-Draft draft-sekar-dns-llq-01, August 2006. |