| < draft-ietf-p2psip-sip-20.txt | draft-ietf-p2psip-sip-21.txt > | |||
|---|---|---|---|---|
| P2PSIP C. Jennings | P2PSIP C. Jennings | |||
| Internet-Draft Cisco | Internet-Draft Cisco | |||
| Intended status: Standards Track B. Lowekamp | Intended status: Standards Track B. Lowekamp | |||
| Expires: October 21, 2016 Skype | Expires: October 29, 2016 Skype | |||
| E. Rescorla | E. Rescorla | |||
| RTFM, Inc. | RTFM, Inc. | |||
| S. Baset | S. Baset | |||
| H. Schulzrinne | H. Schulzrinne | |||
| Columbia University | Columbia University | |||
| T. Schmidt, Ed. | T. Schmidt, Ed. | |||
| HAW Hamburg | HAW Hamburg | |||
| April 19, 2016 | April 27, 2016 | |||
| A SIP Usage for RELOAD | A SIP Usage for RELOAD | |||
| draft-ietf-p2psip-sip-20 | draft-ietf-p2psip-sip-21 | |||
| Abstract | Abstract | |||
| This document defines a SIP Usage for REsource LOcation And Discovery | This document defines a SIP Usage for REsource LOcation And Discovery | |||
| (RELOAD). The SIP Usage provides the functionality of a SIP proxy or | (RELOAD). The SIP Usage provides the functionality of a SIP proxy or | |||
| registrar in a fully-distributed system and includes a lookup service | registrar in a fully-distributed system and includes a lookup service | |||
| for Address of Records (AORs) stored in the overlay. It also defines | for Address of Records (AORs) stored in the overlay. It also defines | |||
| Globally Routable User Agent URIs (GRUUs) that allow the | Globally Routable User Agent URIs (GRUUs) that allow the | |||
| registrations to map an AOR to a specific node reachable through the | registrations to map an AOR to a specific node reachable through the | |||
| overlay. After such initial contact of a peer, the RELOAD AppAttach | overlay. After such initial contact of a peer, the RELOAD AppAttach | |||
| skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 46 ¶ | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 October 21, 2016. | This Internet-Draft will expire on October 29, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 36 ¶ | skipping to change at page 2, line 36 ¶ | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Registering AORs in the Overlay . . . . . . . . . . . . . . . 5 | 3. Registering AORs in the Overlay . . . . . . . . . . . . . . . 6 | |||
| 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. Data Structure . . . . . . . . . . . . . . . . . . . . . 6 | 3.2. Data Structure . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3. Access Control . . . . . . . . . . . . . . . . . . . . . 8 | 3.3. Access Control . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. Overlay Configuration Document Extension . . . . . . . . 9 | 3.4. Overlay Configuration Document Extension . . . . . . . . 9 | |||
| 4. Looking up an AOR . . . . . . . . . . . . . . . . . . . . . . 10 | 4. Looking up an AOR . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 4.1. Finding a Route to an AOR . . . . . . . . . . . . . . . . 10 | 4.1. Finding a Route to an AOR . . . . . . . . . . . . . . . . 10 | |||
| 4.2. Resolving an AOR . . . . . . . . . . . . . . . . . . . . 11 | 4.2. Resolving an AOR . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5. Forming a Direct Connection . . . . . . . . . . . . . . . . . 11 | 5. Forming a Direct Connection . . . . . . . . . . . . . . . . . 11 | |||
| 5.1. Setting Up a Connection . . . . . . . . . . . . . . . . . 11 | 5.1. Setting Up a Connection . . . . . . . . . . . . . . . . . 11 | |||
| 5.2. Keeping a Connection Alive . . . . . . . . . . . . . . . 12 | 5.2. Keeping a Connection Alive . . . . . . . . . . . . . . . 12 | |||
| skipping to change at page 3, line 29 ¶ | skipping to change at page 3, line 29 ¶ | |||
| B.4. Changes since draft-ietf-p2psip-sip-06 . . . . . . . . . 19 | B.4. Changes since draft-ietf-p2psip-sip-06 . . . . . . . . . 19 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 1. Introduction | 1. Introduction | |||
| REsource LOcation And Discovery (RELOAD) [RFC6940] specifies a peer- | REsource LOcation And Discovery (RELOAD) [RFC6940] specifies a peer- | |||
| to-peer (P2P) signaling protocol for the general use on the Internet. | to-peer (P2P) signaling protocol for the general use on the Internet. | |||
| This document defines a SIP Usage of RELOAD that allows SIP [RFC3261] | This document defines a SIP Usage of RELOAD that allows SIP [RFC3261] | |||
| user agents (UAs) to establish peer-to-peer SIP (or SIPS) sessions | user agents (UAs) to establish peer-to-peer SIP (or SIPS) sessions | |||
| without the requirement for permanent proxy or registration servers, | without the requirement for permanent proxy or registration servers, | |||
| e.g., a fully distributed telephony service. In such a network, the | e.g., a fully distributed telephony service. This service | |||
| RELOAD overlay itself performs the registration and rendezvous | transparently supports SIP addressing including telephone numbers. | |||
| functions ordinarily associated with such servers. | In such a network, the RELOAD overlay itself performs the | |||
| registration and rendezvous functions ordinarily associated with such | ||||
| servers. | ||||
| The SIP Usage involves two basic functions. | The SIP Usage involves two basic functions. | |||
| Registration: SIP UAs can use the RELOAD data storage functionality | Registration: SIP UAs can use the RELOAD data storage functionality | |||
| to store a mapping from their address-of-record (AOR) to their | to store a mapping from their address-of-record (AOR) to their | |||
| Node-ID in the overlay, and to retrieve the Node-ID of other UAs. | Node-ID in the overlay, and to retrieve the Node-ID of other UAs. | |||
| Rendezvous: Once a SIP UA has identified the Node-ID for an AOR it | Rendezvous: Once a SIP UA has identified the Node-ID for an AOR it | |||
| wishes to call, it can use the RELOAD message routing system to | wishes to call, it can use the RELOAD message routing system to | |||
| set up a direct connection for exchanging SIP messages. | set up a direct connection for exchanging SIP messages. | |||
| skipping to change at page 5, line 14 ¶ | skipping to change at page 5, line 16 ¶ | |||
| In addition to mappings from AORs to Node-IDs, the SIP Usage also | In addition to mappings from AORs to Node-IDs, the SIP Usage also | |||
| allows mappings from AORs to other AORs. This enables an indirection | allows mappings from AORs to other AORs. This enables an indirection | |||
| useful for call forwarding. For instance, if Bob wants his phone | useful for call forwarding. For instance, if Bob wants his phone | |||
| calls temporarily forwarded to Charlie, he can store the mapping | calls temporarily forwarded to Charlie, he can store the mapping | |||
| "bob@dht.example.com -> charlie@dht.example.com". When Alice wants | "bob@dht.example.com -> charlie@dht.example.com". When Alice wants | |||
| to call Bob, she retrieves this mapping and can then fetch Charlie's | to call Bob, she retrieves this mapping and can then fetch Charlie's | |||
| AOR to retrieve his Node-ID. These mechanisms are described in | AOR to retrieve his Node-ID. These mechanisms are described in | |||
| Section 3. | Section 3. | |||
| Alternatively, Globally Routable User Agent URIs (GRUUs) can be used | Alternatively, Globally Routable User Agent URIs (GRUUs) [RFC5627] | |||
| for directly accessing peers. They are handled via a separate | can be used for directly accessing peers. They are handled via a | |||
| mechanism, as described in Section 6. | separate mechanism, as described in Section 6. | |||
| The SIP Usage for RELOAD addresses a fully distributed deployment of | The SIP Usage for RELOAD addresses a fully distributed deployment of | |||
| session-based services among overlay peers. This RELOAD usage may be | session-based services among overlay peers. This RELOAD usage may be | |||
| relevant in a variety of environments, including a highly regulated | relevant in a variety of environments, including a highly regulated | |||
| environment of a "single provider" that admits parties using AORs | environment of a "single provider" that admits parties using AORs | |||
| with domains from controlled namespace(s) only, or an open, multi- | with domains from controlled namespace(s) only, or an open, multi- | |||
| party infrastructure that liberally allows a registration and | party infrastructure that liberally allows a registration and | |||
| rendezvous for various or any domain namespace. It is noteworthy in | rendezvous for various or any domain namespace. It is noteworthy in | |||
| this context that - in contrast to regular SIP - domain names play no | this context that - in contrast to regular SIP - domain names play no | |||
| role in routing to a proxy server. Once connectivity to an overlay | role in routing to a proxy server. Once connectivity to an overlay | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at page 6, line 6 ¶ | |||
| In addition, term definitions from SIP [RFC3261] apply to this memo. | In addition, term definitions from SIP [RFC3261] apply to this memo. | |||
| The term AOR is the SIP "Address of Record" used to identify a user | The term AOR is the SIP "Address of Record" used to identify a user | |||
| in SIP. For example, alice@example.com could be the AOR for Alice. | in SIP. For example, alice@example.com could be the AOR for Alice. | |||
| For the purposes of this specification, an AOR is considered not to | For the purposes of this specification, an AOR is considered not to | |||
| include the scheme (e.g. sip:) as the AOR needs to match the | include the scheme (e.g. sip:) as the AOR needs to match the | |||
| rfc822Name in the X509v3 certificates [RFC5280]. It is worth noting | rfc822Name in the X509v3 certificates [RFC5280]. It is worth noting | |||
| that SIP and SIPS are distinguished in P2PSIP by the Application-ID. | that SIP and SIPS are distinguished in P2PSIP by the Application-ID. | |||
| 3. Registering AORs in the Overlay | 3. Registering AORs in the Overlay | |||
| 3.1. Overview | 3.1. Overview | |||
| In ordinary SIP, a UA registers its AOR and location with a | In ordinary SIP, a UA registers the user's AOR and its network | |||
| registrar. In RELOAD, this registrar function is provided by the | location with a registrar. In RELOAD, this registrar function is | |||
| overlay as a whole. To register its location, a RELOAD peer stores a | provided by the overlay as a whole. To register its location, a | |||
| SipRegistration Resource Record under its own AOR using the SIP- | RELOAD peer stores a SipRegistration Resource Record under its own | |||
| REGISTRATION Kind, which is formally defined in Section 7. Note that | AOR using the SIP-REGISTRATION Kind, which is formally defined in | |||
| the registration lifetime known from the regular SIP REGISTER method | Section 7. Note that the registration lifetime known from the | |||
| is inherited from the lifetime attribute of the basic RELOAD | regular SIP REGISTER method is inherited from the lifetime attribute | |||
| StoredData structure (see Section 7 in [RFC6940]). | of the basic RELOAD StoredData structure (see Section 7 in | |||
| [RFC6940]). | ||||
| A RELOAD overlay MAY restrict the storage of AORs. Namespaces (i.e., | A RELOAD overlay MAY restrict the storage of AORs. Namespaces (i.e., | |||
| the right hand side of the AOR) that are supported for registration | the right hand side of the AOR) that are supported for registration | |||
| and lookup can be configured for each RELOAD deployment as described | and lookup can be configured for each RELOAD deployment as described | |||
| in Section 3.4. | in Section 3.4. | |||
| As a simple example, consider Alice with AOR "alice@dht.example.org" | As a simple example, consider Alice with AOR "alice@dht.example.org" | |||
| at Node-ID "1234". She might store the mapping | at Node-ID "1234". She might store the mapping | |||
| "alice@dht.example.org -> 1234" telling anyone who wants to call her | "alice@dht.example.org -> 1234" telling anyone who wants to call her | |||
| to contact node "1234". | to contact node "1234". | |||
| skipping to change at page 8, line 6 ¶ | skipping to change at page 8, line 6 ¶ | |||
| the length of the rest of the PDU | the length of the rest of the PDU | |||
| data | data | |||
| the registration data | the registration data | |||
| o If the registration is of type "sip_registration_uri", then the | o If the registration is of type "sip_registration_uri", then the | |||
| contents are an opaque string containing the AOR. | contents are an opaque string containing the AOR. | |||
| o If the registration is of type "sip_registration_route", then the | o If the registration is of type "sip_registration_route", then the | |||
| contents are an opaque string containing the callee's contact | contents are an opaque string containing the registrant's contact | |||
| preferences and a destination list for the peer. | preferences and a destination list for the peer. | |||
| The callee expresses its capabilities within the contact preferences | The callee expresses its capabilities within the contact preferences | |||
| as specified in [RFC3840]. It encodes a media feature set comprised | as specified in [RFC3840]. It encodes a media feature set comprised | |||
| of its capabilities as a contact predicate, i.e., a string of feature | of its capabilities as a contact predicate, i.e., a string of feature | |||
| parameters that appear as part of the Contact header field. Feature | parameters that appear as part of the Contact header field. Feature | |||
| parameters are derived from the media feature set syntax of [RFC2533] | parameters are derived from the media feature set syntax of [RFC2533] | |||
| (see also [RFC2738]) as described in [RFC3840]. | (see also [RFC2738]) as described in [RFC3840]. | |||
| This encoding covers all SIP User Agent capabilities, as defined in | This encoding covers all SIP User Agent capabilities, as defined in | |||
| skipping to change at page 12, line 12 ¶ | skipping to change at page 12, line 12 ¶ | |||
| use, the responding peer MUST present a certificate with a Node-ID | use, the responding peer MUST present a certificate with a Node-ID | |||
| matching the terminal entry in the destination list. Otherwise, the | matching the terminal entry in the destination list. Otherwise, the | |||
| connection MUST NOT be used and MUST be closed. Note that it is | connection MUST NOT be used and MUST be closed. Note that it is | |||
| possible that the peers already have a RELOAD connection mutually | possible that the peers already have a RELOAD connection mutually | |||
| established. This MUST NOT be used for SIP messages unless it is a | established. This MUST NOT be used for SIP messages unless it is a | |||
| SIP connection. A previously established SIP connection MAY be used | SIP connection. A previously established SIP connection MAY be used | |||
| for a new call. | for a new call. | |||
| Once the AppAttach succeeds, the peer sends plain or (D)TLS encrypted | Once the AppAttach succeeds, the peer sends plain or (D)TLS encrypted | |||
| SIP messages over the connection as in normal SIP. A caller MAY | SIP messages over the connection as in normal SIP. A caller MAY | |||
| choose to contact the callee using SIP or secure SIPS, but SHOULD | choose to contact the callee using SIP or SIPS, but SHOULD follow a | |||
| follow a preference indicated by the callee in its contact_prefs | preference indicated by the callee in its contact_prefs attribute | |||
| attribute (see Section 3.2). A callee MAY choose to listen on both | (see Section 3.2). A callee MAY choose to listen on both SIP and | |||
| SIP and SIPS ports and accept calls from either SIP scheme, or select | SIPS ports and accept calls from either SIP scheme, or select a | |||
| a single one. However, a callee that decides to accept SIPS calls, | single one. However, a callee that decides to accept SIPS calls, | |||
| only, SHOULD indicate its choice by setting the corresponding | only, SHOULD indicate its choice by setting the corresponding | |||
| attribute in its contact_prefs. It is noteworthy that according to | attribute in its contact_prefs. It is noteworthy that according to | |||
| [RFC6940] all overlay links are built on (D)TLS secured transport. | [RFC6940] all overlay links are built on (D)TLS secured transport. | |||
| While hop-wise encrypted paths do not prevent the use of plain SIP, | While hop-wise encrypted paths do not prevent the use of plain SIP, | |||
| SIPS requires protection of all links that may include client links | SIPS requires protection of all links that may include client links | |||
| (if present) and endpoint certificates. | (if present) and endpoint certificates. | |||
| SIP messages carry the SIP URIs of actual overlay endpoints (e.g., | SIP messages carry the SIP URIs of actual overlay endpoints (e.g., | |||
| "sip:alice@dht.example.com") in the Via and Contact headers, while | "sip:alice@dht.example.com") in the Via and Contact headers, while | |||
| the communication continues via the RELOAD connection. However, a UA | the communication continues via the RELOAD connection. However, a UA | |||
| skipping to change at page 12, line 46 ¶ | skipping to change at page 12, line 46 ¶ | |||
| alive. Keepalives are a mandatory component of ICE (see Section 10 | alive. Keepalives are a mandatory component of ICE (see Section 10 | |||
| of [RFC5245]) and no further operations are required. Applications | of [RFC5245]) and no further operations are required. Applications | |||
| that want to assure maintenance of sessions individually need to | that want to assure maintenance of sessions individually need to | |||
| follow regular SIP means. Accordingly, a SIP Peer MAY apply keep- | follow regular SIP means. Accordingly, a SIP Peer MAY apply keep- | |||
| alive techniques in agreement with its transport binding as defined | alive techniques in agreement with its transport binding as defined | |||
| in Section 3.5 of [RFC5626]. | in Section 3.5 of [RFC5626]. | |||
| 6. Using GRUUs | 6. Using GRUUs | |||
| Globally Routable User Agent URIs (GRUUs) [RFC5627] have been | Globally Routable User Agent URIs (GRUUs) [RFC5627] have been | |||
| designed to allow direct routing without the indirection of a SIP | designed to allow direct routing to a specific UA instance without | |||
| proxy function. The concept is transferred to RELOAD overlays as | the need for dereferencing by a domain-specific SIP proxy function. | |||
| follows. GRUUs in RELOAD are constructed by embedding a | The concept is transferred to RELOAD overlays as follows. GRUUs in | |||
| base64-encoded destination list in the "gr" URI parameter of the | RELOAD are constructed by embedding a base64-encoded destination list | |||
| GRUU. The base64 encoding is done with the alphabet specified in | in the "gr" URI parameter of the GRUU. The base64 encoding is done | |||
| table 1 of [RFC4648] with the exception that ~ is used in place of =. | with the alphabet specified in table 1 of [RFC4648] with the | |||
| exception that ~ is used in place of =. | ||||
| Example of a RELOAD GRUU: | Example of a RELOAD GRUU: | |||
| alice@example.com;gr=MDEyMzQ1Njc4OTAxMjM0NTY3ODk~ | alice@example.com;gr=MDEyMzQ1Njc4OTAxMjM0NTY3ODk~ | |||
| GRUUs do not require to store data in the Overlay Instance. Rather | GRUUs do not require to store data in the Overlay Instance. Rather | |||
| when a peer needs to route a message to a GRUU in the same P2P | when a peer needs to route a message to a GRUU in the same P2P | |||
| overlay, it simply uses the destination list and connects to that | overlay, it simply uses the destination list and connects to that | |||
| peer. Because a GRUU contains a destination list, it can have the | peer. Because a GRUU contains a destination list, it can have the | |||
| same contents as a destination list stored elsewhere in the resource | same contents as a destination list stored elsewhere in the resource | |||
| dictionary. | dictionary. | |||
| skipping to change at page 18, line 16 ¶ | skipping to change at page 18, line 16 ¶ | |||
| "IEEE Standard for Information Technology - Portable | "IEEE Standard for Information Technology - Portable | |||
| Operating System Interface (POSIX) - Part 2: Shell and | Operating System Interface (POSIX) - Part 2: Shell and | |||
| Utilities (Vol. 1)", IEEE Std 1003.2-1992, ISBN | Utilities (Vol. 1)", IEEE Std 1003.2-1992, ISBN | |||
| 1-55937-255-9, January 1993. | 1-55937-255-9, January 1993. | |||
| 11.2. Informative References | 11.2. Informative References | |||
| [I-D.ietf-p2psip-concepts] | [I-D.ietf-p2psip-concepts] | |||
| Bryan, D., Matthews, P., Shim, E., Willis, D., and S. | Bryan, D., Matthews, P., Shim, E., Willis, D., and S. | |||
| Dawkins, "Concepts and Terminology for Peer to Peer SIP", | Dawkins, "Concepts and Terminology for Peer to Peer SIP", | |||
| draft-ietf-p2psip-concepts-08 (work in progress), February | draft-ietf-p2psip-concepts-09 (work in progress), April | |||
| 2016. | 2016. | |||
| [RFC5767] Munakata, M., Schubert, S., and T. Ohba, "User-Agent- | [RFC5767] Munakata, M., Schubert, S., and T. Ohba, "User-Agent- | |||
| Driven Privacy Mechanism for SIP", RFC 5767, | Driven Privacy Mechanism for SIP", RFC 5767, | |||
| DOI 10.17487/RFC5767, April 2010, | DOI 10.17487/RFC5767, April 2010, | |||
| <http://www.rfc-editor.org/info/rfc5767>. | <http://www.rfc-editor.org/info/rfc5767>. | |||
| [I-D.ietf-p2psip-share] | [I-D.ietf-p2psip-share] | |||
| Knauf, A., Schmidt, T., Hege, G., and M. Waehlisch, "A | Knauf, A., Schmidt, T., Hege, G., and M. Waehlisch, "A | |||
| Usage for Shared Resources in RELOAD (ShaRe)", draft-ietf- | Usage for Shared Resources in RELOAD (ShaRe)", draft-ietf- | |||
| End of changes. 13 change blocks. | ||||
| 32 lines changed or deleted | 37 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||