P2PSIP                                                         G. Garcia
Internet-Draft                                            Telefonica I+D
Intended status: Standards Track                        October 22, 2007
Expires: April 24, 2008

                   P2PSIP bootstrapping using DNS-SD

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-

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

   The list of current Internet-Drafts can be accessed at

   The list of Internet-Draft Shadow Directories can be accessed at

   This Internet-Draft will expire on April 24, 2008.

Copyright Notice

   Copyright (C) The IETF Trust (2007).


   This document describes a DNS-based bootstrap mechanism to discover
   the initial peer or peers needed to join a P2PSIP Overlay.  The
   document specifies the use of DNS Service Discovery (DNS-SD) and the
   format of the required resource records to support the discovery of
   P2PSIP peers.  This mechanism can be applied in scenarios with DNS
   servers or combined with multicast DNS to fulfill different proposed
   P2PSIP use cases.

Garcia                   Expires April 24, 2008                 [Page 1]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  Why DNS? . . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.2.  Requirements Language  . . . . . . . . . . . . . . . . . .  4
   2.  Description  . . . . . . . . . . . . . . . . . . . . . . . . .  4
     2.1.  Domain . . . . . . . . . . . . . . . . . . . . . . . . . .  5
     2.2.  Service Identifier . . . . . . . . . . . . . . . . . . . .  6
     2.3.  Instance Identifier  . . . . . . . . . . . . . . . . . . .  6
     2.4.  TXT Record fields  . . . . . . . . . . . . . . . . . . . .  6
     2.5.  Other use cases beyond peer discovery  . . . . . . . . . .  7
   3.  Security Considerations  . . . . . . . . . . . . . . . . . . .  8
   4.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  8
   5.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  8
   6.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  9
     6.1.  Normative References . . . . . . . . . . . . . . . . . . .  9
     6.2.  Informative References . . . . . . . . . . . . . . . . . .  9
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 10
   Intellectual Property and Copyright Statements . . . . . . . . . . 11

Garcia                   Expires April 24, 2008                 [Page 2]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

1.  Introduction

   A P2PSIP Overlay [I-D.ietf-p2psip-concepts] is a collection of peers
   working together to provide the location service needed to establish
   SIP [RFC3261] sessions between endpoints.  In order to join this
   overlay, a peer needs to discover other peer or peers before starting
   the joining process; this discovery is what it is called the
   bootstrap process.

   [I-D.ietf-p2psip-concepts] enumerates different procedures to locate
   a bootstrap peer, namely: remembering peers found in previous
   executions, manual configuration, multicast discovery, or using a
   centalized server.

   This document addresses the last two procedures, describing an
   approach for the bootstrapping in a P2PSIP Overlay based on DNS-
   Service Discovery (DSN-SD) [I-D.cheshire-dnsext-dns-sd].  According
   to the terminology defined in [I-D.ietf-p2psip-concepts] this
   document describes the use of DNS [RFC1035] servers as P2PSIP
   Bootstrapping servers to find P2PSIP Admitting peers, and also the
   use of multicast-DNS to find P2PSIP Admitting peers without the need
   of a P2PSIP Bootstrapping server.

   DNS-based Service Discovery specifies conventions for how existing
   DNS resource record types can be used to discover instances of a
   desired service.  For the P2PSIP bootstrapping use case described in
   this document, the service to be discovered is a P2PSIP peer.  DNS-SD
   does not change the DNS arquitecture or protocol but defines the use
   and syntax of SRV, PTR and TXT records for this service discovery

   Multicast DNS (mDNS) [I-D.cheshire-dnsext-multicastdns] can be
   combined with DNS-SD to allow sending DNS queries via multicast to
   avoid the necessity of any specific infrastructure.  This solution
   provides support for scenarios without connectivity to any
   centralized DNS server.

   P2PSIP working group is currently specifying the P2PSIP peer
   protocol.  The bootstrap mechanism specified here is independent of
   the peer protocol and can be defined in parallel and applied to any
   proposal.  In the context of this draft the protocol identifier is
   named as "p2psip" because the final protocol is under discussion, but
   the identifier should reflect the name of the finally selected
   protocol (for example p2pp).  Regarding the related work in the
   P2PSIP group, [I-D.matthews-p2psip-bootstrap-mechanisms] describes
   other bootstrap mechanism making use of SIP, and other drafts have
   already mentioned DNS/DNS-SD as a candidate solution
   [I-D.ietf-p2psip-concepts] [I-D.bryan-p2psip-reload]

Garcia                   Expires April 24, 2008                 [Page 3]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

   [I-D.jennings-p2psip-asp] [I-D.hautakorpi-p2psip-hip].

1.1.  Why DNS?

   There are other protocols that could be suitable for the discovery of
   P2PSIP peers such as HTTP [RFC2616], SIP [RFC3261], SLP [RFC2165] or
   SSDP [spec.SSDP].  The selection of a DNS-based approach over those
   ones is based on these points:

   o  DNS provides support for different P2PSIP use cases: scenarios
      where connectivity to a centralized infrastructure is available
      and scenarios where multicast-DNS is available.

   o  It's a lightweight protocol.

   o  DNS infrastructure is widely deployed, probed and available.

   o  Most of the end user equipment already include DNS protocol

   o  DNS/DNS-SD is already used in the SIP ecosystem [RFC3263]

1.2.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   document are to be interpreted as described in [RFC2119].

2.  Description

   DNS-SD specifies the use of PTR records as an indirection mechanism
   to enumerate the service instances registered for a specific service
   type in a domain.  A DNS-SD client sends a PTR query for the name
   "<Service> . <Domain>" to obtain the service instances that are named
   following the structure "<Instance> . <Service> . <Domain>"

   After the discovery of an instance using those PTR records, the host
   name and port number for that specific service instance are provided
   by a SRV record [RFC2782], and additional information can be provided
   by a TXT record [RFC1035].

   The following example shows some PTR, SRV and TXT DNS records to
   illustrate the concept:

Garcia                   Expires April 24, 2008                 [Page 4]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

       _p2psip._udp.example.com.  PTR  ABCDEF._p2psip._udp.example.com.
       _p2psip._udp.example.com.  PTR  123456._p2psip._udp.example.com.

                    TXT  txtvers=1 peerid=AABBCCDDEEFF
                         overlayid=example.com algorithm=chord

                    SRV  0 0 7080 bootstrap1.example.com.

   A peer willing to join an overlay with name "example.com" will send a
   PTR query for the name "_p2psip._udp.example.com" to obtain the
   service instances registered for the "p2psip" service type in the
   domain "example.com" ("ABCDEF._p2psip._udp.example.com." and
   "123456._p2psip._udp.example.com.").  After this, the joining peer
   will select randomly one of those instances and will ask for the
   associated TXT record to obtain additional attributes.  If the
   service instance is considered a valid bootstrap peer, the joining
   peer will finally ask for a SRV record to obtain the host name and
   port (in this example bootstrap1.example.com and 7080) and initiate
   the joining process.

   A peer has two alternatives to send the DNS-SD queries: using a DNS
   server or using mDNS.  They are not incompatible and can be used in
   parallel.  A possible approach is to first try the server mechanism,
   and try the multicast mechanism only if the first one did not
   returned any valid result.

2.1.  Domain

   The <Domain> portion of the Service Instance Name contains the DNS
   domain name where the service instance is registered that can be a
   conventional subdomain such as "example.com." or "local." if mDNS is

   This field is tied to the P2PSIP Overlay Name
   [I-D.ietf-p2psip-concepts].  In case of querying a DNS server, the
   domain used in the PTR query MUST be the Overlay Name corresponding
   to the overlay that the peer is willing to join (appending the
   trailing "." if it is not included in the Overlay Name).  In case of
   using mDNS the domain will be "local." and the selection of a peer
   belonging to the desired overlay MUST be done based on the overlayid
   attribute included in the TXT record as defined in Section 2.4.

   This behaviour requires that P2PSIP Overlay Names must be valid
   domain names.

   In the example shown in Section 2 the Domain portion is

Garcia                   Expires April 24, 2008                 [Page 5]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007


2.2.  Service Identifier

   The <Service> portion of the Service Instance Name consists of a pair
   of DNS labels following the established convention for SRV records
   [RFC2782], namely: the first label of the pair is the Application
   Protocol Name, and the second label is either "_tcp" or "_udp",
   depending on the transport protocol used by the application.

   The Application Protocol Name MUST be "_p2psip".  [To be changed when
   the final P2PSIP Peer Protocol will be selected]

   The service MUST be published as "_p2psip._tcp" and/or "_p2psip._udp"
   depending on the supported transport protocols in the P2PSIP Peer
   Protocol.  A client requesting instances of this service can start
   querying for the default transport protocol according to the Peer
   Protocol (for example "_p2psip._udp") or querying for both in
   parallel ("_p2psip._udp" and "_p2psip._tcp").

   In the example shown in Section 2 the Service Identifier portion is

2.3.  Instance Identifier

   The <Instance> portion is a DNS label, containing UTF-8-encoded text,
   limited to 63 octets in length [I-D.cheshire-dnsext-dns-sd].  The
   recommendation of using a user-friendly name is not important in this
   context because the results are not intended to be shown to the

   The <Instance> portion MUST be filled with the first 30 bytes of the
   P2PSIP Peer-ID [I-D.ietf-p2psip-concepts] encoded as hexadecimal.  If
   the size of the P2PSIP Peer-ID is bigger than 30 bytes, the first 30
   bytes MUST be used.

   In the example shown in Section 2 the Instance Identifier portion is
   "ABCDEF" for the first instance and "123456" for the second one.

2.4.  TXT Record fields

   DNS-SD requires to provide TXT records for the service instances.  A
   TXT record includes name/value pairs to store additional information
   about the named service instance.  Each attribute is encoded in the
   form "name=value", where the name is a case-insensitive string and
   the value is opaque binary data, and the total length is 0-255 bytes

Garcia                   Expires April 24, 2008                 [Page 6]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

   The attributes specified in this document for the P2PSIP peer
   discovery are:


   The "txtvers" attribute MUST be "txtvers=1" and MUST be the first
   attribute in the TXT record.

   The "peerid" attribute is used to include the P2PSIP Peer-ID as a
   binary value.  This attribute is only REQUIRED if the P2PSIP Peer-ID
   did not fit in the Instance Identifier as described in Section 2.3.

   The "overlayid" attribute is used to include the P2PSIP Overlay Name.
   The format of this value is the same used for any DNS subdomain
   excluding the trailing ".".  This attribute is only REQUIRED in case
   of using multicast DNS and MAY be empty to indicate a default
   overlay.  This attribute SHOULD NOT be included when DNS servers are

   The "algorithm" attribute is used to specify the distributed database
   algorithm [I-D.ietf-p2psip-concepts] employed by this P2PSIP Overlay.
   [Format/Values: To be Defined] This algorithm parameter could be also
   provided by the bootstrap peer as proposed in [I-D.baset-p2psip-p2pp]
   or by the enrollmeent server as proposed in
   [I-D.jennings-p2psip-asp].  Including it in the TXT records allows
   discarding quickly overlays using unsupported algorithms, and offers
   support for scenarios where no enrollment server is available.  The
   algorithm attribute could include up to two comma-separated
   algorithms to be used as an algorithm migration procedure.

   Additional attributes specifying other overlay configuration
   parameters could be included in future versions of this
   specification.  Vendor-specific extensions should be given names of
   the form "keyname.company.com=value", using a domain name
   legitimately registered to the person or organization creating the
   vendor-specific key [I-D.cheshire-dnsext-dns-sd].

   Attributes to include security credentials could be added, but they
   are excluded in this version to keep low the size of the TXT records
   as recommended in [I-D.cheshire-dnsext-dns-sd].

2.5.  Other use cases beyond peer discovery

   In addition to the P2PSIP peer discovery, the described procedure
   also provides these additional features:

Garcia                   Expires April 24, 2008                 [Page 7]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

   o       P2PSIP Overlay Names discovery in multicast-enabled
           scenarios, using the overlayid attribute included in the TXT

   o       P2PSIP Overlay parameters configuration.  In addition to the
           algorithm attribute, the TXT record could include additional
           overlay configuration parameters (such as the identifiers
           size or the hashing algorithm).  [To be Elaborated].

3.  Security Considerations

   In multicast DNS environments any endpoint can advertise a P2PSIP
   service without any restriction.  A malicious node could potentially
   block the access to the overlay advertising the service and
   simulating a misbehaving overlay later.  This specification doesn't
   define any security mechanism to check the credentials of the
   discovered peers, delegating that responsability to the P2PSIP Peer
   Protocol that will be used to join the overlay after the bootstrap
   process.  If the Peer Protocol does not include any security
   mechanism either, the application should warn about the lack of
   security in this overlay using some kind of visual notification.

4.  IANA Considerations

   [I-D.cheshire-dnsext-dns-sd], Section 19, proposes an IANA allocation
   policy to assign unique application protocol names.  Until the
   proposal is adopted and in force, Section 19 points to
   [WWW.DnsSdServiceTypes] for instruction on how to register a unique
   service type name for DNS-SD.

   The final P2PSIP Peer Protocol name should be registered as a service
   type according to the instructions ("p2psip" is used in this document
   as a generic name until the P2PSIP Peer Protocol will be selected).

5.  Acknowledgements

   The author thanks the review and comments from Santiago Prieto, Jesse
   Kaijen and, Jose Manuel Grosso.

6.  References

Garcia                   Expires April 24, 2008                 [Page 8]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

6.1.  Normative References

              Krochmal, M. and S. Cheshire, "DNS-Based Service
              Discovery", draft-cheshire-dnsext-dns-sd-04 (work in
              progress), August 2006.

              Cheshire, S. and M. Krochmal, "Multicast DNS",
              draft-cheshire-dnsext-multicastdns-06 (work in progress),
              August 2006.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, November 1987.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2782]  Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
              specifying the location of services (DNS SRV)", RFC 2782,
              February 2000.


6.2.  Informative References

              Baset, S. and H. Johnston, "Peer-to-Peer Protocol (P2PP)",
              july 2007.

              Bryan, D., Zangrilli, M., and B. Lowekamp, "REsource
              LOcation And Discovery (RELOAD)", july 2007.

              Bryan, D., Shim, E., and B. Lowekamp, "Use Cases for Peer-
              to-Peer Session Initiation Protocol (P2P SIP)", july 2007.

              Hautakorpi, J. and J. Koskela, "Utilizing HIP (Host
              Identity Protocol) for P2PSIP (Peer-to-peer Session
              Initiation Protocol)", july 2007.

              Bryan, D., "Concepts and Terminology for Peer to Peer
              SIP", draft-ietf-p2psip-concepts-00 (work in progress),
              July 2007.

Garcia                   Expires April 24, 2008                 [Page 9]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

              Jennings, C., Rosenberg, J., and E. Rescola, "Address
              Settlement by Peer to Peer", july 2007.

              Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
              specifying the location of services (DNS SRV)",
              february 2000.

              Cooper, E., Johnston, A., and P. Matthews, "Bootstrap
              Mechanisms for P2PSIP", february 2007.

   [RFC2165]  Veizades, J., Guttman, E., Perkins, C., and S. Kaplan,
              "Service Location Protocol", RFC 2165, June 1997.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
              A., Peterson, J., Sparks, R., Handley, M., and E.
              Schooler, "SIP: Session Initiation Protocol", RFC 3261,
              June 2002.

   [RFC3263]  Rosenberg, J. and H. Schulzrinne, "Session Initiation
              Protocol (SIP): Locating SIP Servers", RFC 3263,
              June 2002.

              "Simple Service Discovery Protocol".

Author's Address

   Gustavo Garcia
   Telefonica I+D
   Emilio Vargas
   Madrid, Madrid

   Phone: +34 913129826
   Email: ggb@tid.es

Garcia                   Expires April 24, 2008                [Page 10]

Internet-Draft      P2PSIP bootstrapping using DNS-SD       October 2007

Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at


   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).

Garcia                   Expires April 24, 2008                [Page 11]