Internet DRAFT - draft-pusateri-hybridproxy-impl

draft-pusateri-hybridproxy-impl







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

Abstract

   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.

Status of This Memo

   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 Notice

   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.



Pusateri                 Expires October 3, 2015                [Page 1]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Delegating DNS Server . . . . . . . . . . . . . . . . . . . .   3
     2.1.  @delegating_server.subdomain_ns . . . . . . . . . . . . .   3
     2.2.  @delegating_server.subdomain_browse_ptr . . . . . . . . .   3
   3.  Hybrid Proxy Configuration  . . . . . . . . . . . . . . . . .   4
     3.1.  @hybrid_proxy.subdomain . . . . . . . . . . . . . . . . .   4
     3.2.  @hybrid_proxy.ns_delegation_name  . . . . . . . . . . . .   5
     3.3.  @hybrid_proxy.ns_delegation_name_address_records  . . . .   5
     3.4.  Hybrid Proxy Records  . . . . . . . . . . . . . . . . . .   5
     3.5.  @hybrid_proxy.udp_port  . . . . . . . . . . . . . . . . .   6
     3.6.  @hybrid_proxy.udp_llq_port  . . . . . . . . . . . . . . .   6
     3.7.  @hybrid_proxy.tcp_llq_port  . . . . . . . . . . . . . . .   6
     3.8.  @hybrid_proxy.tcp_push_port . . . . . . . . . . . . . . .   6
   4.  Client Configuration  . . . . . . . . . . . . . . . . . . . .   7
     4.1.  @unicast_client.search_domains  . . . . . . . . . . . . .   7
   5.  Hybrid Proxy Startup  . . . . . . . . . . . . . . . . . . . .   7
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .   8
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   8
     8.2.  Informative References  . . . . . . . . . . . . . . . . .   8
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   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.








Pusateri                 Expires October 3, 2015                [Page 2]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


2.  Delegating DNS Server

   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.

2.1.  @delegating_server.subdomain_ns

   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. |
       +-------------------------+-------+------+------------------+

                        Table 1: Example NS Records

   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.

2.2.  @delegating_server.subdomain_browse_ptr

   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. |
        +----------------+-------+------+-------------------------+

                       Table 2: Example PTR Records







Pusateri                 Expires October 3, 2015                [Page 3]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


3.  Hybrid Proxy Configuration

3.1.  @hybrid_proxy.subdomain

   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.

   1.  The subdomain name can be configured manually or distributed by
       an out of band method.

   2.  The hybrid proxy can query legacy browse domain PTR records for
       the network portion of the interface address.  Suppose an
       interface on the hybrid proxy is configured with IP address
       192.0.2.1/24.  The network portion is 192.0.2.0/24.  A query is
       made for lb._dns-sd._udp.0.2.0.192.in-addr.arpa.  For IPv6, the
       extension for PTR address queries is ip6.arpa.  All hybrid
       proxies on the IP subnet will make the same query since the
       network portion is the same for all of them.  The returned name
       will be <subdomain>.<zone>, where <zone> is the delegating zone.
       As an example, this could be foo.example.com where example.com is
       the domain name distributed through DHCP or SLAAC and foo is the
       assigned subdomain.  If the hybrid proxy does not know the base
       domain name or know which domain name from a list of search
       domains to respond to, the domain name returned from this query
       can be used as a indicator.  The left most label is the subdomain
       and the remainder is the base domain name or zone.  This domain
       name could be different on each connected IP subnet of a
       particular hybrid proxy, especially in a multi-tenant
       environment.

   3.  The hybrid proxy can use a naming algorithm where each proxy will
       arrive at the same value using the supplied algorithm.  The
       hybrid proxy will have to learn the zone through another means
       such as DHCP or SLAAC.  No particular algorithm should be
       mandated but an example of such an algorithm would be to create a
       hexadecimal string based on the network portion of the interface
       IP address.  For the example above with interface IP address
       192.0.2.1/24, the hexadecimal string of the network portion would
       be C0000200.  This string could be prefixed with ASCII characters
       if desired resulting in a subdomain of netc0000200.example.com.
       All hybrid proxies with an interface on the same subnet can



Pusateri                 Expires October 3, 2015                [Page 4]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


       independently compute the same subdomain name.  This might be
       challenging in a multi-vendor environment.

3.2.  @hybrid_proxy.ns_delegation_name

   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.

3.3.  @hybrid_proxy.ns_delegation_name_address_records

   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.

3.4.  Hybrid Proxy Records

   The hybrid proxy must answer the following resource records when
   queried:

   1.  SOA record - SOA for <subdomain>.<zone> with MNAME the same as
       the NS delegation name.

   2.  Browse domain record - PTR b._dns-sd._udp.<subdomain>.<zone> with
       NAME pointing to the fully qualified <subdomain>.<zone>.

   3.  Legacy browse domain record - PTR lb._dns-
       sd._udp.<subdomain>.<zone> with NAME pointing to the fully
       qualified <subdomain>.<zone>.

   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:




Pusateri                 Expires October 3, 2015                [Page 5]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


   1.  LLQ over UDP - SRV _dns-llq._udp.<subdomain>.<zone> with target
       as NS delegation name

   2.  LLQ over TCP - SRV _dns-llq._tcp.<subdomain>.<zone> with target
       as NS delegation name

   3.  DNS Push - SRV _dns-push._tcp.<subdomain>.<zone> with target as
       NS delegation name

   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.

3.5.  @hybrid_proxy.udp_port

   Port 53, forwarded to by delegating DNS server

3.6.  @hybrid_proxy.udp_llq_port

   Port 53, 5352, or custom, advertised in SRV record

3.7.  @hybrid_proxy.tcp_llq_port

   Port 53, 5352, or custom, advertised in SRV record

3.8.  @hybrid_proxy.tcp_push_port

   Random port, advertised in SRV record, one will be assigned in DPRIVE
   for TLS/TCP







Pusateri                 Expires October 3, 2015                [Page 6]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


4.  Client Configuration

4.1.  @unicast_client.search_domains

   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.

5.  Hybrid Proxy Startup

   Can we auto-configure?

   1.  query PTR for each local interface address looking for name

   2.  query PTR for legacy browseable reverse network name looking for
       subdomain

   Otherwise, we receive local configuration by other means.

   Are the DNS records in the delegating zone setup correctly for the
   hybrid proxy to function?

   1.  query through a local resolver for PTR records for b._dns-
       sd._udp.<zone>, noting connected subdomains

   2.  query through a local resolver for NS record for each local
       subdomain that is connected and make sure the query arrives back
       to the hybrid proxy, send the response, and verify that the
       response is received.  If these PTR and NS records are not in
       place, the hybrid proxy may wish to install the records through
       DNS Update if this option is available.  The hybrid proxy may
       choose to not listen for queries until these records are present.




Pusateri                 Expires October 3, 2015                [Page 7]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


   3.  query through a local resolver for PTR record for b._dns-
       sd._udp.<subdomain>.<zone> for each connected subdomain that
       passed the NS record test.  This request will also be answered by
       the hybrid proxy.

   4.  ensure that one and only one hybrid proxy on the IP subnet
       responds as the SOA for the subdomain.  (TBD)

   5.  If LLQ is supported over UDP, install _dns-
       llq._udp.<subdomain>.<zone> SRV and advertise _dns-llq._udp.local
       on IP subnet corresponding to <subdomain>.

   6.  If LLQ is supported over TCP, install _dns-
       llq._tcp.<subdomain>.<zone> SRV and advertise _dns-llq._tcp.local
       on IP subnet corresponding to <subdomain>.

   7.  If DNS Push is supported, install _dns-
       push._tcp.<subdomain>.<zone> SRV and advertise _dns-
       push._tcp.local on IP subnet corresponding to <subdomain>.

   8.  Whether or not a hybrid proxy supports LLQ or DNS Push, the proxy
       must listen for other hybrid proxies on each IP subnet
       advertising the LLQ and DNS Push records and cache these for
       future SRV queries that may be forwarded to a hybrid proxy.

6.  IANA Considerations

   This document has no IANA considerations.

7.  Security Considerations

   There are no security considerations at this time.

8.  References

8.1.  Normative References

   [I-D.ietf-dnssd-hybrid]
              Cheshire, S., "Hybrid Unicast/Multicast DNS-Based Service
              Discovery", draft-ietf-dnssd-hybrid-00 (work in progress),
              November 2014.

8.2.  Informative References

   [I-D.ietf-dnssd-push]
              Pusateri, T. and S. Cheshire, "DNS Push Notifications",
              draft-ietf-dnssd-push-00 (work in progress), March 2015.




Pusateri                 Expires October 3, 2015                [Page 8]

Internet-Draft           DNSSD-HybridProxy-Impl               April 2015


   [I-D.sekar-dns-llq]
              Sekar, K., "DNS Long-Lived Queries", draft-sekar-dns-
              llq-01 (work in progress), August 2006.

Author's Address

   Tom Pusateri
   Seeking affiliation
   Hilton Head Island, SC
   USA

   Phone: +1 843 473 7394
   Email: pusateri@bangj.com






































Pusateri                 Expires October 3, 2015                [Page 9]