MIF Working Group M. Stenberg Internet-Draft S. Barth Intended status: Standards Track Independent Expires: April 17, 2016 October 15, 2015 Multiple Provisioning Domains using Domain Name System draft-stenberg-mif-mpvd-dns-00 Abstract This document describes a mechanism to transmit and secure provisioning domain information for IPv6 and IPv4 addresses by using reverse DNS resolution. In addition it specifies backwards- compatible extensions to IPv6 host configuration to support special- purpose global IPv6 prefixes which can only be used to access certain isolated services. 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 April 17, 2016. 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 Stenberg & Barth Expires April 17, 2016 [Page 1] Internet-Draft MPVD using DNS October 2015 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 3. PVD information discovery using DNS . . . . . . . . . . . . . 3 3.1. PVD TXT Record Fomat . . . . . . . . . . . . . . . . . . 4 3.2. PVD TXT Record Keys . . . . . . . . . . . . . . . . . . . 4 3.2.1. Reachable Services . . . . . . . . . . . . . . . . . 4 3.2.2. DNS Configuration . . . . . . . . . . . . . . . . . . 5 3.2.3. Connectivity Characteristics . . . . . . . . . . . . 5 3.2.4. Private Extensions . . . . . . . . . . . . . . . . . 6 4. Special-purpose IPv6 prefixes . . . . . . . . . . . . . . . . 6 4.1. Extensions to Stateless Address Autoconfiguration . . . . 6 4.2. Extensions to DHCPv6 . . . . . . . . . . . . . . . . . . 7 5. Security Considerations . . . . . . . . . . . . . . . . . . . 9 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 7.1. Normative references . . . . . . . . . . . . . . . . . . 10 7.2. Informative references . . . . . . . . . . . . . . . . . 11 Appendix A. This solution compared to doing this in DHCPv6/NDP [RFC Editor: please remove] . . 11 Appendix B. Discussion Points [RFC Editor: please remove] . . . 12 Appendix C. Changelog [RFC Editor: please remove] . . . . . . . 13 Appendix D. Draft Source [RFC Editor: please remove] . . . . . . 13 Appendix E. Acknowledgements . . . . . . . . . . . . . . . . . . 13 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 1. Introduction Given multiple address prefixes or multiple interfaces, hosts require more information to make educated choices about the interfaces and addresses to use. [RFC7556] describes the provision domains (PVDs) that provide the additional information the hosts need. This document describes where and how the provision domain information is encoded in the Domain Name System (DNS). For optional authentication DNSSEC is used. A backwards compatible way of adding IPv6 prefixes without generic internet connectivity is also provided so that the hosts that are not aware of the provisioning domain prefixes do not inadvertly use those for general network access. Stenberg & Barth Expires April 17, 2016 [Page 2] Internet-Draft MPVD using DNS October 2015 2. Terminology PVD a provisioning domain, usually with a set of provisioning domain information; for more information, see [RFC7556]. special-purpose a global IPv6 source prefix that cannot be used to IPv6 prefix reach the public IPv6 internet but instead only allows access to certain special services (e.g., VoIP, IPTV). 2.1. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 3. PVD information discovery using DNS Each PVD is stored within the DNS, encoded as a single TXT record [RFC1035]. Section 3.1 describes the syntax and Section 3.2 the semantics of the enclosed data. To find the per-PVD TXT records that apply to a source address, the host queries the DNS for PTR records of the domain _pvd.. is a .arpa domain for reverse lookups derived from the respective prefix or subnet the source address is assigned from and generated as specified in [RFC3596] for IPv6 addresses and [RFC1034] for IPv4 addresses respectively. If the query returned any PTR records the host then subsequently queries the DNS for TXT records located in each domain indicated in the PTR records and handles their contents as individual PVDs. As prefixes can be sub-delegated arbitrarily, PTR records SHOULD be provided for any subprefixes contained within a particular prefix. For example, given a prefix 2001:db8:8765:4321::/64, a host with an address of 2001:db8:8765:4321:1234:5678:abcd:beef queries for PTR records in _pvd.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.2.3.4.5.6.7.8.8.b.d .0.1.0.0.2.ip6.arpa However, if the address is assigned from 2001:db8:8765:4321:1234::/80, the request would be made for _pvd.0.0. 0.0.0.0.0.0.0.0.0.0.4.3.2.1.1.2.3.4.5.6.7.8.8.b.d.0.1.0.0.2.ip6.arpa instead. If for example, the retrieved PTR record is assumed to point at the FQDN _pvd.example.com. The next query is then sent for TXT records in this domain, and if successful, the node has retrieved up-to-date information about PVDs applicable to that particular address. Stenberg & Barth Expires April 17, 2016 [Page 3] Internet-Draft MPVD using DNS October 2015 A host MUST support handling multiple PTR records for the initial .arpa domain as well as multiple TXT records for all domains pointed to by the PTR records. This facilitates handling of multiple PVDs with minimal amount of state in the network. A host MUST honor both the time-to-live of the received records, and negative replies that conform to [RFC2308]. A host MUST NOT use addresses from a prefix as the source for new packet flows once the TTL has passed until it did successfully retrieve updated PVD information. 3.1. PVD TXT Record Fomat PVD information within DNS is encoded using TXT records, similar to those of DNS-SD [RFC6763] and defined as follows. TXT records consist of key/value pairs, each encoded as a string of up to 255 octets preceded by a length byte storing the number of octets. The strings are in the form "key=value" or simply "key" (without quotation marks) where everything up to the first '=' character (if any, otherwise the whole string) is the key and everything after it (if any, including subsequent '=' characters) is the value. Due to the use of a length byte, quotation marks or similar are not required around the value. Keys are case-sensitive. Hosts MUST ignore TXT records which do not conform to these rules. 3.2. PVD TXT Record Keys The following keys are defined to be used inside PVD TXT records. Unknown keys inside PVD Information MUST be ignored. 3.2.1. Reachable Services The following set of keys can be used to specify the set of services for which the respective PVD should be used. If present they MUST be honored by the client, i.e., if the PVD is marked as not usable for internet access it MUST NOT be used for internet access, if the usability is limited to a certain set of domain or address prefixes, then a different PVD MUST be used for other destinations. Stenberg & Barth Expires April 17, 2016 [Page 4] Internet-Draft MPVD using DNS October 2015 +-----+---------------+-----------------+---------------------------+ | Key | Description | Value | Example | +-----+---------------+-----------------+---------------------------+ | n | User-visible | human-readable | n=Foobar Service | | | service name | UTF-8 string | | | s | Internet | (none) | s | | | inaccessible | | | | z | DNS zones | comma-separated | z=foo.com,sub.bar.com | | | accessible | list of DNS | | | | | zone | | | 6 | IPv6-prefixes | comma-separated | 6=2001:db8:a::/48,2001:db | | | accessible | list of IPv6 | 8:b:c::/64 | | | | prefixes | | | 4 | IPv4-prefixes | comma-separated | 4=1.2.3.0/24,2.3.0.0/16 | | | accessible | list of IPv4 | | | | | prefixes in | | | | | CIDR | | +-----+---------------+-----------------+---------------------------+ 3.2.2. DNS Configuration The following set of keys can be used to specify the DNS configuration for the respective PVD. If present, they MUST be honored and used by the client whenever it wishes to access a resource of the PVD. +-----+-------------+---------------------+-------------------------+ | Key | Description | Value | Example | +-----+-------------+---------------------+-------------------------+ | r | Recursive | comma-separated | r=2001:db8::1,192.0.2.2 | | | DNS server | list of IPv6 and | | | | | IPv4 addresses | | | d | DNS search | comma-separated | d=foo.com,sub.bar.com | | | domains | list of search | | | | | domains | | +-----+-------------+---------------------+-------------------------+ 3.2.3. Connectivity Characteristics The following set of keys can be used to signal certain characteristics of the connection towards the PVD. Stenberg & Barth Expires April 17, 2016 [Page 5] Internet-Draft MPVD using DNS October 2015 +-----+------------------+---------------------------+--------------+ | Key | Description | Value | Example | +-----+------------------+---------------------------+--------------+ | bw | Maximum | 1 symmetrical or 2 comma- | bw=5000 or | | | achievable | separated ingress, egress | bw=1000,100 | | | bandwidth | values in kilobits per | | | | | second | | | lt | Minimum | 1 symmetrical or 2 comma- | lt=20 ot | | | achievable | separated ingress, egress | lt=20,100 | | | latency | values in milliseconds | | | rl | Maximum | 1 symmetrical or 2 comma- | rl=1000 or | | | achievable | separated ingress, egress | rl=900,800 | | | reliability | values in 1/1000 | | | tm | Traffic metered | (none) or traffic | tm or | | | (cut-off / | threshold in kilobytes | tm=1000000 | | | limited over | | | | | threshold) | | | | cp | Captive portal | (none) | cp | | nat | IPv4 NAT in | (none) | nat | | | place | | | +-----+------------------+---------------------------+--------------+ 3.2.4. Private Extensions keys starting with "x-" are reserved for private use and can be utilized to provide vendor-, user- or enterprise-specific information. It is RECOMMENDED to use one of the patterns "x-FQDN- KEY[=VALUE]" or "x-PEN-KEY[=VALUE]" where FQDN is a fully qualified domain name or PEN is a private enterprise number [PEN] under control of the author of the extension to avoid collisions. 4. Special-purpose IPv6 prefixes A service provider might wish to assign certain global unicast address prefixes which can be used to reach a limited set of services only. In the presence of legacy hosts it must be ensured however that these prefixes are not mistakenly used as source addresses for other destinations. This section therefore defines optional extensions to NDP [RFC4861], DHCPv6 [RFC3315] and DHCPv6-PD [RFC3633] to indicate this state. 4.1. Extensions to Stateless Address Autoconfiguration NDP [RFC4861] defines the Prefix Information option to announce prefixes for stateless address configuration. The "A-bit" is set, whenever hosts may autonomously derive addresses from a given prefix. For special-purpose prefixes this document defines the first bit of the Reserved1-field as the "S-Bit". Stenberg & Barth Expires April 17, 2016 [Page 6] Internet-Draft MPVD using DNS October 2015 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Prefix Length |L|A|S|Reserved1| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | The following additional requirements apply to hosts intending to support global special-purpose IPv6 prefixes: Upon reception of a Prefix Information Option with the S-Bit set, it should behave as if the A-Bit was set, however (unless the A-Bit was actually set by the sending router) it MUST delay using any addresses derived from the prefix until it has queried, retrieved and honored (see Section 3) at least all mandatory provisioning domain information related to the given prefix. A host SHOULD NOT interpret the S-Bit being clear as an indicator that no provisioning domain information is available for a given prefix. The following additional requirements apply to routers: A router MUST NOT set the A-Bit for global unicast address prefixes which cannot be used to reach the public IPv6 internet. A router SHOULD use the S-Bit to indicate that PVD-aware hosts can statelessly assign themselves addresses from a given prefix. It MAY use the S-Bit in addition to the A-Bit to indicate that a prefix usable to reach the public IPv6 internet has additional (optional) provisioning domain information. A router announcing one or more Prefix Information options with the S-Bit set MUST also announce one or more recursive DNS servers using a Recursive DNS Server Option [RFC6106]. If none of the Prefix Information Options it announces have the A-Bit set then at least one of these recursive DNS servers MUST be reachable using a link-local address. 4.2. Extensions to DHCPv6 Using DHCPv6 [RFC3315] and DHCPv6-PD [RFC3633] servers can actively decide which addresses or prefixes are assigned to clients and requesting routers, however a mechanism is needed to distinguish PVD- aware devices and in the same sense PVD-aware devices need to be able to detect which prefixes and addresses are special-purpose. Therefore, a zero-length DHCPv6 option OPTION_SPECIAL_PURPOSE is Stenberg & Barth Expires April 17, 2016 [Page 7] Internet-Draft MPVD using DNS October 2015 defined to be added as a suboption to OPTION_IAADDR and OPTION_IAPREFIX options. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTION_SPECIAL_PURPOSE (TBD) | 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The following additional requirements apply to clients and requesting routers intending to support global special-purpose IPv6 prefixes via DHCPv6: A client or requesting router MUST include the option code OPTION_SPECIAL_PURPOSE in an option OPTION_ORO in its SOLICIT and REQUEST messages, whenever it wishes to accept special-purpose prefixes in its identity associations. Upon reception of an OPTION_IAADDR or OPTION_IAPREFIX option having an embedded OPTION_SPECIAL_PURPOSE option it MUST delay using any addresses derived from the prefix as source address for its own communication until it has queried, retrieved and honored (see Section 3) at least all mandatory provisioning domain information related to the given prefix or address. If it is a requesting router, it MAY however subdelegate prefixes or assign addresses from special-purpose prefixes to clients without doing so as long as the requirements in the following paragraph are honored. The following additional requirements apply to routers assigning addresses from or delegating (parts of) special-purpose prefixes using DHCPv6: A router MUST include a zero-length suboption of type OPTION_SPECIAL_PURPOSE in every OPTION_IAADDR and OPTION_IAPREFIX option it assigns or delegates containing a global unicast address or prefix which cannot be used to reach the public IPv6 internet. It MUST NOT assign or delegate such an address or prefix to a client or requesting router not including the option code of OPTION_SPECIAL_PURPOSE inside an OPTION_ORO option. A router announcing one or more addresses or prefixes with an embedded OPTION_SPECIAL_PURPOSE option MUST also announce one or more recursive DNS servers using a OPTION_DNS_SERVERS option [RFC3646]. If all of the addresses in a DHCPv6 reply carry the embedded OPTION_SPECIAL_PURPOSE option then at least one of the announced recursive DNS servers MUST be reachable using a link- local address. Stenberg & Barth Expires April 17, 2016 [Page 8] Internet-Draft MPVD using DNS October 2015 5. Security Considerations The security implications of using PVDs in general depend on two factors: what they are allowed to do, and whether or not the authentication and authorization of the PVD information received is sufficient for the particular usecase. As the defined scheme uses DNS for retrieval of the connection parameters, the retrieval of both the PTR and the TXT records should be secured, if they are to be trusted. The PVD information allows for the following types of attacks: o Traffic redirection, both by providing custom DNS server, as well as actual potentially different next-hop and/or source address selection. o Faking of connection capabilities to e.g. prefer some connection fraudulently over others. If a host requires DNSSEC authentication and the retrieved information is not sufficiently secured, they MUST be ignored as the defined way of using them in Section 3.2 requires honoring the supplied information. Security properties of NDP and DHCPv6 are inherited for the respective extensions, therefore relevant sections of [RFC4861] and [RFC3315] should be consulted. In any case, signaling addresses and prefixes to be special-purpose does not have a significant impact on the underlying assignment and delegation mechanisms. 6. IANA Considerations IANA is requested to setup a PVD DNS TXT Record Key registry with the initial types: s, z, 6, 4 (Section 3.2.1); r, d (Section 3.2.2); bw, lt, rl, tm, cp, nat (Section 3.2.3) and a prefix x- (Section 3.2.4) for Private Use [RFC5226]. The policy for further additions to the registry is requested to be RFC Required [RFC5226]. This document defines a new bit for the NDP Prefix Information Option (the S-bit). There is currently no registration procedure for such bits, so IANA should not take any action on this matter. IANA should assign a DHCPv6 option code OPTION_SPECIAL_PURPOSE to the DHCPv6 option code space defined in [RFC3315]. Stenberg & Barth Expires April 17, 2016 [Page 9] Internet-Draft MPVD using DNS October 2015 7. References 7.1. Normative references [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, . [RFC1035] Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, November 1987, . [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ RFC2119, March 1997, . [RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998, . [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, DOI 10.17487/RFC4861, September 2007, . [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July 2003, . [RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6", RFC 3633, DOI 10.17487/RFC3633, December 2003, . [RFC3646] Droms, R., Ed., "DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3646, DOI 10.17487/RFC3646, December 2003, . [RFC6106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli, "IPv6 Router Advertisement Options for DNS Configuration", RFC 6106, DOI 10.17487/RFC6106, November 2010, . Stenberg & Barth Expires April 17, 2016 [Page 10] Internet-Draft MPVD using DNS October 2015 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, DOI 10.17487/RFC5226, May 2008, . [RFC7556] Anipko, D., Ed., "Multiple Provisioning Domain Architecture", RFC 7556, DOI 10.17487/RFC7556, June 2015, . [RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi, "DNS Extensions to Support IP Version 6", RFC 3596, DOI 10.17487/RFC3596, October 2003, . 7.2. Informative references [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013, . [PEN] IANA, "Private Enterprise Numbers", . Appendix A. This solution compared to doing this in DHCPv6/NDP [RFC Editor: please remove] The angle of attack of the MIF work to date (autumn 2015) has been to add container options and their transfer mechanisms to DHCPv6 and NDP. This document details a different approach, and therefore it is sensible to compare it to to the existing solutions in terms of (highly subjective) pros and cons. The authors consider pros of this proposal to be: o No overhead for hosts that do not care (possibly most; no spurious RA options, ...) o No problems with relaying data; if the first-hop device does not care, DNS requests propagate onward. o Little/no changes to DHCP, DHCPv6, DHCPv6-PD or RA. o Much more scalable; no worries about multicast packet size limits. o No duplication of specifications / TLVs for DHCP, DHCPv6 and RA. o Solves m:n prefix <-> PVD elegantly: no need to either duplicate applying prefix for each PVD or duplicate each PVD for each applying prefix. Stenberg & Barth Expires April 17, 2016 [Page 11] Internet-Draft MPVD using DNS October 2015 o Easily extensible (TXT records, no TLV definitions, parsing and generation necessary) o Probably not affected by IPR on draft-ietf-mif-mpvd-dhcp-support o Reuses the existing reverse DNS infrastructure The authors consider cons of this proposal to be: o This scheme requires DNS servers 'close' on the path to the user, if changed information is to be sent; otherwise centralized solution would work (with some synthesized records). o Security using either DNSSEC or in-band hashes is rather painful (but possibly not more than the scheme in the current DHCP/RA drafts), so the default would most likely be insecure. That is not much different from DHCP*/RA, which are also 99.999...% of the time not secured. Appendix B. Discussion Points [RFC Editor: please remove] o Besides special purpose prefixes, it might be desirable to have special purpose routers which only provide access to certain services but not the entire internet. These services could be announced by only using more-specific routes, however if the destination addresses are possibly changing, extension of the RIO mechanism might be needed. One possibility would be to add a new RIO S-flag with semantics like: "When the host receives a Route Information Option with the S-Bit set, it MUST ignore the value in the Prf-field (even if it is (10)) and instead assume the preference to have a value greater than (11). However, it MUST only use the route for packets having a source prefix announced by the same router.". This would allow selective routes (Prf=(10)) only applying to MIF-hosts. o DNSSEC delegation of reverse zones might be difficult in some cases. It is debatable, whether we want a complementary in-band signing mechanism as well, e.g., pre-shared public keys associated the domain name of the TXT records and "sig-X=..." keys (where X identifies the specific key) and ... is an EdDSA or ECDSA signature over all records not starting with "sig-". Care would need to be taken wrt. TTL and negative caching though. o Should PVD-aware hosts be recommended or even required to always prefer routers that announced the respective source address in a PIO over those that didn't when making routing decisions? This takes on the points made in draft-baker-6man-multi-homed-host. Stenberg & Barth Expires April 17, 2016 [Page 12] Internet-Draft MPVD using DNS October 2015 Appendix C. Changelog [RFC Editor: please remove] draft-stenberg-mif-mpvd-dns-00: o Initial version. Appendix D. Draft Source [RFC Editor: please remove] As usual, this draft is available at https://github.com/fingon/ietf- drafts/ in source format (with nice Makefile too). Feel free to send comments and/or pull requests if and when you have changes to it! Appendix E. Acknowledgements Thanks to Eric Vyncke for the original idea of using DNS for transmitting PVD information. Authors' Addresses Markus Stenberg Independent Helsinki 00930 Finland Email: markus.stenberg@iki.fi Steven Barth Independent Halle 06114 Germany Email: cyrus@openwrt.org Stenberg & Barth Expires April 17, 2016 [Page 13]