draft-ietf-p2psip-concepts-09.txt | rfc7890.txt | |||
---|---|---|---|---|
P2PSIP Working Group D. Bryan | Internet Engineering Task Force (IETF) D. Bryan | |||
Internet-Draft Cogent Force, LLC | Request for Comments: 7890 Cogent Force, LLC | |||
Intended status: Informational P. Matthews | Category: Informational P. Matthews | |||
Expires: October 23, 2016 Alcatel-Lucent | ISSN: 2070-1721 Nokia | |||
E. Shim | E. Shim | |||
Samsung Electronics Co., Ltd. | Samsung Electronics Co., Ltd. | |||
D. Willis | D. Willis | |||
Softarmor Systems | Softarmor Systems | |||
S. Dawkins | S. Dawkins | |||
Huawei (USA) | Huawei (USA) | |||
April 21, 2016 | June 2016 | |||
Concepts and Terminology for Peer to Peer SIP | Concepts and Terminology for Peer-to-Peer SIP (P2PSIP) | |||
draft-ietf-p2psip-concepts-09 | ||||
Abstract | Abstract | |||
This document defines concepts and terminology for the use of the | This document defines concepts and terminology for using the Session | |||
Session Initiation Protocol in a peer-to-peer environment where the | Initiation Protocol in a peer-to-peer environment where the | |||
traditional proxy-registrar and message routing functions are | traditional proxy-registrar and message-routing functions are | |||
replaced by a distributed mechanism. These mechanisms may be | replaced by a distributed mechanism. These mechanisms may be | |||
implemented using a distributed hash table or other distributed data | implemented using a Distributed Hash Table or other distributed data | |||
mechanism with similar external properties. This document includes a | mechanism with similar external properties. This document includes a | |||
high-level view of the functional relationships between the network | high-level view of the functional relationships between the network | |||
elements defined herein, a conceptual model of operations, and an | elements defined herein, a conceptual model of operations, and an | |||
outline of the related problems addressed by the P2PSIP working group | outline of the related problems addressed by the P2PSIP working | |||
and the RELOAD protocol and SIP usage document defined by the working | group, the REsource LOcation And Discovery (RELOAD) protocol, and the | |||
group. | SIP usage document defined by the working group. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
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 | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are a candidate for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on October 23, 2016. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc7890. | ||||
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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Background . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. High-Level Description . . . . . . . . . . . . . . . . . . . 3 | 2. High-Level Description . . . . . . . . . . . . . . . . . . . 4 | |||
2.1. Services . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Services . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.2. Clients . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Clients . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.3. Relationship Between P2PSIP and RELOAD . . . . . . . . . 5 | 2.3. Relationship between P2PSIP and RELOAD . . . . . . . . . 5 | |||
2.4. Relationship Between P2PSIP and SIP . . . . . . . . . . . 5 | 2.4. Relationship between P2PSIP and SIP . . . . . . . . . . . 5 | |||
2.5. Relationship Between P2PSIP and Other AoR Dereferencing | 2.5. Relationship between P2PSIP and Other AoR-Dereferencing | |||
Approaches . . . . . . . . . . . . . . . . . . . . . . . 5 | Approaches . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2.6. NAT Issues . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.6. NAT Issues . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Reference Model . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Reference Model . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
5. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 5. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
5.1. The Distributed Database Function . . . . . . . . . . . . 12 | 5.1. The Distributed Database Function . . . . . . . . . . . . 12 | |||
5.2. Using the Distributed Database Function . . . . . . . . . 13 | 5.2. Using the Distributed Database Function . . . . . . . . . 13 | |||
5.3. NAT Traversal . . . . . . . . . . . . . . . . . . . . . . 14 | 5.3. NAT Traversal . . . . . . . . . . . . . . . . . . . . . . 14 | |||
5.4. Locating and Joining an Overlay . . . . . . . . . . . . . 14 | 5.4. Locating and Joining an Overlay . . . . . . . . . . . . . 14 | |||
5.5. Clients and Connecting Unmodified SIP Devices . . . . . . 15 | 5.5. Clients and Connecting Unmodified SIP Devices . . . . . . 15 | |||
5.6. Architecture . . . . . . . . . . . . . . . . . . . . . . 16 | 5.6. Architecture . . . . . . . . . . . . . . . . . . . . . . 16 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 7. Informative References . . . . . . . . . . . . . . . . . . . 16 | |||
8. Informative References . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
1. Background | 1. Background | |||
One of the fundamental problems in multimedia communication between | One of the fundamental problems in multimedia communication between | |||
Internet nodes is the rendezvous problem, or discovering the host at | Internet nodes is the rendezvous problem, or discovering the host at | |||
which a given user can be reached. In the Session Initiation | which a given user can be reached. In the Session Initiation | |||
Protocol (SIP) [RFC3261] this problem is expressed as the problem of | Protocol (SIP) [RFC3261], this problem is expressed as the problem of | |||
mapping an Address of Record (AoR) for a user into one or more | mapping an Address of Record (AoR) for a user into one or more | |||
Contact URIs [RFC3986]. The AoR is a name for the user that is | Contact URIs [RFC3986]. The AoR is a name for the user that is | |||
independent of the host or hosts where the user can be contacted, | independent of the host or hosts where the user can be contacted, | |||
while a Contact URI indicates the host where the user can be | while a Contact URI indicates the host where the user can be | |||
contacted. | contacted. | |||
In the common SIP-using architectures that we refer to as | In the common SIP-using architectures that we refer to as | |||
"Conventional SIP" or "Client/Server SIP", there is a relatively | "Conventional SIP" or "Client/Server SIP", there is a relatively | |||
fixed hierarchy of SIP routing proxies and SIP user agents. To | fixed hierarchy of SIP routing proxies and SIP user agents. To | |||
deliver a SIP INVITE to the host or hosts at which the user can be | deliver a SIP INVITE to the host or hosts at which the user can be | |||
contacted, a SIP UA follows the procedures specified in [RFC3263] to | contacted, a SIP UA follows the procedures specified in [RFC3263] to | |||
determine the IP address of a SIP proxy, and then sends the INVITE to | determine the IP address of a SIP proxy, and then sends the INVITE to | |||
that proxy. The proxy will then, in turn, deliver the SIP INVITE to | that proxy. The proxy will then, in turn, deliver the SIP INVITE to | |||
the hosts where the user can be contacted. | the hosts where the user can be contacted. | |||
This document gives a high-level description of an alternative | This document gives a high-level description of an alternative | |||
solution to this problem. In this alternative solution, the | solution to this problem. In this alternative solution, the | |||
relatively fixed hierarchy of Client/Server SIP is replaced by a | relatively fixed hierarchy of Client/Server SIP is replaced by a | |||
peer-to-peer overlay network. In this peer-to-peer overlay network, | peer-to-peer overlay network. In this peer-to-peer overlay network, | |||
the various AoR to Contact URI mappings are not centralized at proxy/ | the various mappings of AoRs to Contact URIs are not centralized at | |||
registrar nodes but are instead distributed amongst the peers in the | proxy/registrar nodes but are instead distributed amongst the peers | |||
overlay. | in the overlay. | |||
The details of this alternative solution are specified by the RELOAD | The details of this alternative solution are specified by the RELOAD | |||
protocol [RFC6940], which defines a mechanism to distribute using a | protocol [RFC6940], which defines a mechanism for distribution using | |||
Distributed Hash Table (DHT) and specifies the wire protocol, | a Distributed Hash Table (DHT) and specifies the wire protocol, | |||
security, and authentication mechanisms needed to convey this | security, and authentication mechanisms needed to convey this | |||
information. This DHT protocol was designed specifically with the | information. This DHT protocol was designed specifically with the | |||
purpose of enabling a distributed SIP registrar in mind. While | purpose of enabling a distributed SIP registrar in mind. While | |||
designing the protocol other applications were considered, and when | designing the protocol, other applications were considered, and then | |||
possible design decisions were made that allow RELOAD to be used in | design decisions were made that allow RELOAD to be used in other | |||
other instances where a DHT is desirable, but only when making such | instances where a DHT is desirable, but only when such decisions did | |||
decisions did not add undue complexity to the RELOAD protocol. The | not add undue complexity to the RELOAD protocol. The RELOAD SIP | |||
RELOAD sip draft [I-D.ietf-p2psip-sip] specifies how RELOAD is used | document [P2PSIP] specifies how RELOAD is used with the SIP protocol | |||
with the SIP protocol to enable a distributed, server-less SIP | to enable a distributed, server-less SIP solution. | |||
solution. | ||||
2. High-Level Description | 2. High-Level Description | |||
A P2PSIP Overlay is a collection of nodes organized in a peer-to-peer | A Peer-to-Peer SIP (P2PSIP) Overlay is a collection of nodes | |||
fashion for the purpose of enabling real-time communication using the | organized in a peer-to-peer fashion for the purpose of enabling real- | |||
Session Initiation Protocol (SIP). Collectively, the nodes in the | time communication using the Session Initiation Protocol (SIP). | |||
overlay provide a distributed mechanism for mapping names to overlay | Collectively, the nodes in the Overlay provide a distributed | |||
locations. This provides for the mapping of Addresses of Record | mechanism for mapping names to Overlay locations. This provides for | |||
(AoRs) to Contact URIs, thereby providing the "location server" | the mapping of Addresses of Record (AoRs) to Contact URIs, thereby | |||
function of [RFC3261]. An Overlay also provides a transport function | providing the "location server" function of [RFC3261]. An Overlay | |||
by which SIP messages can be transported between any two nodes in the | also provides a transport function by which SIP messages can be | |||
overlay. | transported between any two nodes in the Overlay. | |||
A P2PSIP Overlay consists of one or more nodes called Peers. The | A P2PSIP Overlay consists of one or more nodes called "Peers". The | |||
nodes in the overlay collectively run a distributed database | nodes in the Overlay collectively run a distributed database | |||
algorithm. This distributed database algorithm allows data to be | algorithm. This distributed database algorithm allows data to be | |||
stored on nodes and retrieved in an efficient manner. It may also | stored on nodes and retrieved in an efficient manner. It may also | |||
ensure that a copy of a data item is stored on more than one node, so | ensure that a copy of a data item is stored on more than one node, so | |||
that the loss of a node does not result in the loss of the data item | that the loss of a node does not result in the loss of the data item | |||
to the overlay. | to the Overlay. | |||
One use of this distributed database is to store the information | One use of this distributed database is to store the information | |||
required to provide the mapping between AoRs and Contact URIs for the | required to provide the mapping between AoRs and Contact URIs for the | |||
distributed location function. This provides a location function | distributed location function. This provides a location function | |||
within each overlay that is an alternative to the location functions | within each Overlay that is an alternative to the location functions | |||
described in [RFC3263]. However, the model of [RFC3263] is used | described in [RFC3263]. However, the model of [RFC3263] is used | |||
between overlays. | between Overlays. | |||
2.1. Services | 2.1. Services | |||
The nature of peer-to-peer computing is that each peer offers | The nature of peer-to-peer computing is that each peer offers | |||
services to other peers to allow the overlay to collectively provide | services to other peers to allow the overlay to collectively provide | |||
larger functions. In P2PSIP, peers offer both distributed storage | larger functions. In P2PSIP, Peers offer both distributed storage | |||
and distributed message routing services, allowing these functions to | and distributed message-routing services, allowing these functions to | |||
be implemented across the overlay. Additionally, the RELOAD protocol | be implemented across the Overlay. Additionally, the RELOAD protocol | |||
offers a simplistic discovery mechanism specific to the TURN | offers a simplistic discovery mechanism specific to the Traversal | |||
[RFC5766] protocol used for NAT traversal. Individual peers may also | Using Relays around NAT (TURN) [RFC5766] protocol used for NAT | |||
offer other services as an enhancement to P2PSIP functionality (for | traversal. Individual Peers may also offer other services as an | |||
example to support voicemail) or to support other applications beyond | enhancement to P2PSIP functionality (for example, to support | |||
SIP. To support these additional services, peers may need to store | voicemail) or to support other applications beyond SIP. To support | |||
additional information in the overlay. [RFC7374] describes the | these additional services, Peers may need to store additional | |||
mechanism used in P2PSIP for resource discovery. | information in the Overlay. [RFC7374] describes the mechanism used | |||
in P2PSIP for resource discovery. | ||||
2.2. Clients | 2.2. Clients | |||
An overlay may or may not also include one or more nodes called | An Overlay may or may not also include one or more nodes called | |||
clients. Clients are supported in the RELOAD protocol as peers that | "Clients". Clients are supported in the RELOAD protocol as peers | |||
have not joined the overlay, and therefore do not route messages or | that have not joined the Overlay, and therefore do not route messages | |||
store information. Clients access the services of the RELOAD | or store information. Clients access the services of the RELOAD | |||
protocol by connecting to a peer which performs operations on the | protocol by connecting to a Peer that performs operations on the | |||
behalf of the client. Note that in RELOAD there is no distinct | behalf of the Client. Note that in RELOAD, there is no distinct | |||
client protocol. Instead, a client connects using the same protocol, | client protocol. Instead, a Client connects using the same protocol, | |||
but never joins the overlay as a peer. For more information, see | but never joins the Overlay as a Peer. For more information, see | |||
[RFC6940]. | [RFC6940]. | |||
A special peer may also be a member of the P2PSIP overlay and may | A special Peer may also be a member of the P2PSIP Overlay and may | |||
present the functionality of one or all of a SIP registrar, proxy or | present the functionality of one or all of a SIP registrar, proxy, or | |||
redirect server to conventional SIP devices (i.e., unmodified SIP UA | redirect server to conventional SIP devices (i.e., unmodified SIP | |||
or client). In this way, existing, unmodified SIP clients may | user agent (UA) or client). In this way, existing, unmodified SIP | |||
connect to the P2PSIP network. Note that in the context of P2PSIP, | clients may connect to the P2PSIP network. Note that in the context | |||
the unmodified SIP client is also sometimes referred to as a client. | of P2PSIP, the unmodified SIP client is also sometimes referred to as | |||
a "client". These unmodified SIP devices do not speak the RELOAD | ||||
These unmodified SIP devices do not speak the RELOAD protocol, and | protocol, and this is a distinct concept from the notion of "Client" | |||
this is a distinct concept from the notion of client discussed in the | discussed in the previous paragraph. | |||
previous paragraph. | ||||
2.3. Relationship Between P2PSIP and RELOAD | 2.3. Relationship between P2PSIP and RELOAD | |||
The RELOAD protocol defined by the P2PSIP working group implements a | The RELOAD protocol defined by the P2PSIP working group implements a | |||
DHT primarily for use by server-less, peer-to-peer SIP deployments. | DHT primarily for use by server-less, peer-to-peer SIP deployments. | |||
However, the RELOAD protocol could be used for other applications as | However, the RELOAD protocol could be used for other applications as | |||
well. As such, a "P2PSIP" deployment is generally assumed to be a | well. As such, a "P2PSIP" deployment is generally assumed to be a | |||
use of RELOAD to implement distributed SIP, but it is possible that | use of RELOAD to implement distributed SIP, but it is possible that | |||
RELOAD is used as a mechanism to distribute other applications, | RELOAD is used as a mechanism to distribute other applications, | |||
completely unrelated to SIP. | completely unrelated to SIP. | |||
2.4. Relationship Between P2PSIP and SIP | 2.4. Relationship between P2PSIP and SIP | |||
Since P2PSIP is about peer-to-peer networks for real-time | Since P2PSIP is about peer-to-peer networks for real-time | |||
communication, it is expected that most peers and clients will be | communication, it is expected that most Peers and Clients will be | |||
coupled with SIP entities (although RELOAD may be used for other | coupled with SIP entities (although RELOAD may be used for other | |||
applications than P2PSIP). For example, one peer might be coupled | applications than P2PSIP). For example, one Peer might be coupled | |||
with a SIP UA, another might be coupled with a SIP proxy, while a | with a SIP UA, another might be coupled with a SIP proxy, while a | |||
third might be coupled with a SIP-to-PSTN gateway. For such nodes, | third might be coupled with a SIP-to-PSTN gateway. For such nodes, | |||
the peer or client portion of the node is logically distinct from the | the Peer or Client portion of the node is logically distinct from the | |||
SIP entity portion. However, there is no hard requirement that every | SIP entity portion. However, there is no hard requirement that every | |||
P2PSIP node (peer or client) be coupled to a SIP entity. As an | P2PSIP node (Peer or Client) be coupled to a SIP entity. As an | |||
example, additional peers could be placed in the overlay to provide | example, additional Peers could be placed in the Overlay to provide | |||
additional storage or redundancy for the RELOAD overlay, but might | additional storage or redundancy for the RELOAD Overlay, but might | |||
not have any direct SIP capabilities. | not have any direct SIP capabilities. | |||
2.5. Relationship Between P2PSIP and Other AoR Dereferencing Approaches | 2.5. Relationship between P2PSIP and Other AoR-Dereferencing Approaches | |||
As noted above, the fundamental task of P2PSIP is turning an AoR into | As noted above, the fundamental task of P2PSIP is to turn an AoR into | |||
a Contact. This task might be approached using zero configuration | a Contact. This task might be approached using zero configuration | |||
techniques such as multicast DNS and DNS Service Discovery | techniques such as multicast DNS (mDNS) and DNS Service Discovery | |||
[RFC6762][RFC6763], link-local multicast name resolution [RFC4795], | (DNS-SD) [RFC6762] [RFC6763], Link-Local Multicast Name Resolution | |||
and dynamic DNS [RFC2136]. | [RFC4795], and dynamic DNS [RFC2136]. | |||
These alternatives were discussed in the P2PSIP Working Group, and | These alternatives were discussed in the P2PSIP working group, and | |||
not pursued as a general solution for a number of reasons related to | not pursued as a general solution for a number of reasons related to | |||
scalability, the ability to work in a disconnected state, partition | scalability, the ability to work in a disconnected state, partition | |||
recovery, and so on. However, there does seem to be some continuing | recovery, and so on. However, there does seem to be some continuing | |||
interest in the possibility of using DNS-SD and mDNS for | interest in the possibility of using mDNS and DNS-SD for the | |||
bootstrapping of P2PSIP overlays. | bootstrapping of P2PSIP overlays. | |||
2.6. NAT Issues | 2.6. NAT Issues | |||
Network Address Translators (NATs) are impediments to establishing | Network Address Translators (NATs) are impediments to establishing | |||
and maintaining peer-to-peer networks, since NATs hinder direct | and maintaining peer-to-peer networks, since NATs hinder direct | |||
communication between nodes. Some peer-to-peer network architectures | communication between nodes. Some peer-to-peer network architectures | |||
avoid this problem by insisting that all nodes exist in the same | avoid this problem by insisting that all nodes exist in the same | |||
address space. However, RELOAD provides capabilities that allow | address space. However, RELOAD provides capabilities that allow | |||
nodes to be located in multiple address spaces interconnected by | nodes to be located in multiple address spaces interconnected by | |||
NATs, to allow RELOAD messages to traverse NATs, and to assist in | NATs, to allow RELOAD messages to traverse NATs, and to assist in | |||
transmitting application-level messages (for example SIP messages) | transmitting application-level messages (for example, SIP messages) | |||
across NATs. | across NATs. | |||
3. Reference Model | 3. Reference Model | |||
The following diagram shows a P2PSIP Overlay consisting of a number | The following diagram shows a P2PSIP Overlay consisting of a number | |||
of Peers, one Client, and an ordinary SIP UA. It illustrates a | of Peers, one Client, and an ordinary SIP UA. It illustrates a | |||
typical P2PSIP overlay but does not limit other compositions or | typical P2PSIP Overlay but does not limit other compositions or | |||
variations; for example, Proxy Peer P might also talk to a ordinary | variations; for example, Proxy Peer P might also talk to an ordinary | |||
SIP proxy as well. The figure is not intended to cover all possible | SIP proxy as well. The figure is not intended to cover all possible | |||
architecture variations, but simply to show a deployment with many | architecture variations, but simply to show a deployment with many | |||
common P2PSIP elements. | common P2PSIP elements. | |||
--->PSTN | --->PSTN | |||
+------+ N +------+ +---------+ / | +------+ N +------+ +---------+ / | |||
| | A | | | Gateway |-/ | | | A | | | Gateway |-/ | |||
| UA |####T#####| UA |#####| Peer |######## | | UA |####T#####| UA |#####| Peer |######## | |||
| Peer | N | Peer | | G | # RELOAD | | Peer | N | Peer | | G | # RELOAD | |||
| E | A | F | +---------+ # P2PSIP | | E | A | F | +---------+ # P2PSIP | |||
skipping to change at page 7, line 41 ¶ | skipping to change at page 7, line 41 ¶ | |||
T +-------+ +-------+ | T +-------+ +-------+ | |||
| / | | / | |||
| SIP / | | SIP / | |||
\__/ / / | \__/ / / | |||
/\ / ______________/ SIP | /\ / ______________/ SIP | |||
/ \/ / | / \/ / | |||
/ UA \/ | / UA \/ | |||
/______\ | /______\ | |||
SIP UA A | SIP UA A | |||
Figure: P2PSIP Overlay Reference Model | Figure 1: P2PSIP Overlay Reference Model | |||
Here, the large perimeter depicted by "#" represents a stylized view | Here, the large perimeter depicted by "#" represents a stylized view | |||
of the Overlay (the actual connections could be a mesh, a ring, or | of the Overlay (the actual connections could be a mesh, a ring, or | |||
some other structure). Around the periphery of the Overlay | some other structure). Around the periphery of the Overlay | |||
rectangle, we have a number of Peers. Each peer is labeled with its | rectangle, we have a number of Peers. Each Peer is labeled with its | |||
coupled SIP entity -- for example, "Proxy Peer P" means that peer P | coupled SIP entity -- for example, "Proxy Peer P" means that Peer P | |||
which is coupled with a SIP proxy. In some cases, a peer or client | is coupled with a SIP proxy. In some cases, a Peer or Client might | |||
might be coupled with two or more SIP entities. In this diagram we | be coupled with two or more SIP entities. In this diagram, we have a | |||
have a PSTN gateway coupled with peer "G", three peers ("D", "E" and | Public Switched Telephone Network (PSTN) gateway coupled with Peer | |||
"F") which are each coupled with a UA, a peer "P" which is coupled | "G", three Peers ("D", "E", and "F") that are each coupled with a UA, | |||
with a SIP proxy, an ordinary peer "Q" with no SIP capabilities, and | a Peer "P" that is coupled with a SIP proxy, an ordinary Peer "Q" | |||
one peer "R" which is coupled with a SIP Redirector. Note that | with no SIP capabilities, and one Peer "R" that is coupled with a SIP | |||
because these are all Peers, each is responsible for storing Resource | redirector. Note that because these are all Peers, each is | |||
Records and transporting messages around the Overlay. | responsible for storing Resource Records and transporting messages | |||
around the Overlay. | ||||
To the left, two of the peers ("D" and "E") are behind network | To the left, two of the Peers ("D" and "E") are behind network | |||
address translators (NATs). These peers are included in the P2PSIP | address translators (NATs). These Peers are included in the P2PSIP | |||
overlay and thus participate in storing resource records and routing | Overlay, and thus participate in storing resource records and routing | |||
messages, despite being behind the NATs. | messages, despite being behind the NATs. | |||
On the right side, we have a client "C", which uses the RELOAD | On the right side, we have a Client "C", which uses the RELOAD | |||
Protocol to communicate with Proxy Peer "Q". The Client "C" uses | Protocol to communicate with Proxy Peer "Q". The Client "C" uses | |||
RELOAD to obtain information from the overlay, but has not inserted | RELOAD to obtain information from the Overlay, but has not inserted | |||
itself into the overlay, and therefore does not participate in | itself into the Overlay, and therefore does not participate in | |||
routing messages or storing information. | routing messages or storing information. | |||
Below the Overlay, we have a conventional SIP UA "A" which is not | Below the Overlay, we have a conventional SIP UA "A" that is not part | |||
part of the Overlay, either directly as a peer or indirectly as a | of the Overlay, either directly as a Peer or indirectly as a Client. | |||
client. It does not speak the RELOAD P2PSIP protocol, and is not | It does not speak the RELOAD P2PSIP protocol and is not participating | |||
participating in the overlay as either a Peer nor Client. Instead, | in the Overlay as a Peer or a Client. Instead, it uses SIP to | |||
it uses SIP to interact with the Overlay via an adapter peer or peers | interact with the Overlay via an adapter Peer or Peers that | |||
which communicate with the overlay using RELOAD. | communicate with the Overlay using RELOAD. | |||
Both the SIP proxy coupled with peer "P" and the SIP redirector | Both the SIP proxy coupled with Peer "P" and the SIP redirector | |||
coupled with peer "R" can serve as adapters between ordinary SIP | coupled with Peer "R" can serve as adapters between ordinary SIP | |||
devices and the Overlay. Each accepts standard SIP requests and | devices and the Overlay. Each accepts standard SIP requests and | |||
resolves the next-hop by using the P2PSIP protocol to interact with | resolves the next hop by using the P2PSIP protocol to interact with | |||
the routing knowledge of the Overlay, then processes the SIP requests | the routing knowledge of the Overlay, and then processes the SIP | |||
as appropriate (proxying or redirecting towards the next-hop). Note | requests as appropriate (proxying or redirecting towards the next | |||
that proxy operation is bidirectional - the proxy may be forwarding a | hop). Note that proxy operation is bidirectional -- the proxy may be | |||
request from an ordinary SIP device to the Overlay, or from the | forwarding a request from an ordinary SIP device to the Overlay, or | |||
P2PSIP overlay to an ordinary SIP device. | from the P2PSIP Overlay to an ordinary SIP device. | |||
The PSTN Gateway at peer "G" provides a similar sort of adaptation to | The PSTN Gateway at Peer "G" provides a similar sort of adaptation to | |||
and from the public switched telephone network (PSTN). | and from the PSTN. | |||
4. Definitions | 4. Definitions | |||
This section defines a number of concepts that are key to | This section defines a number of concepts that are key to | |||
understanding the P2PSIP work. | understanding the P2PSIP work. | |||
Overlay Network: An overlay network is a computer network which is | Overlay Network: An overlay network is a computer network that is | |||
built on top of another network. Nodes in the overlay can be | built on top of another network. Nodes in the overlay can be | |||
thought of as being connected by virtual or logical links, each of | thought of as being connected by virtual or logical links, each of | |||
which corresponds to a path, perhaps through many physical links, | which corresponds to a path, perhaps through many physical links, | |||
in the underlying network. For example, many peer-to-peer | in the underlying network. For example, many peer-to-peer | |||
networks are overlay networks because they run on top of the | networks are overlay networks because they run on top of the | |||
Internet. Dial-up Internet is an overlay upon the telephone | Internet. Dial-up Internet is an overlay upon the telephone | |||
network. | network. | |||
P2P Network: A peer-to-peer (or P2P) computer network is a network | P2P Network: A peer-to-peer (or P2P) computer network is a network | |||
that relies primarily on the computing power and bandwidth of the | that relies primarily on the computing power and bandwidth of the | |||
participants in the network rather than concentrating it in a | participants in the network rather than concentrating it in a | |||
relatively low number of servers. P2P networks are typically used | relatively low number of servers. P2P networks are typically used | |||
for connecting nodes via largely ad hoc connections. Such | for connecting nodes via largely ad hoc connections. Such | |||
networks are useful for many purposes. Sharing content files | networks are useful for many purposes. Sharing content files | |||
containing audio, video, data or anything in digital format is | containing audio, video, data, or anything in digital format is | |||
very common, and real-time data, such as telephony traffic, is | very common, and real-time data, such as telephony traffic, is | |||
also exchanged using P2P technology. A P2P Network may also be | also exchanged using P2P technology. A P2P Network may also be | |||
called a "P2P Overlay" or "P2P Overlay Network" or "P2P Network | called a "P2P Overlay", a "P2P Overlay Network", or a "P2P Network | |||
Overlay", since its organization is not at the physical layer, but | Overlay", since its organization is not at the physical layer, but | |||
is instead "on top of" an existing Internet Protocol network. | is instead "on top of" an existing Internet Protocol network. | |||
P2PSIP: A suite of communications protocols related to the Session | P2PSIP: A suite of communications protocols related to the Session | |||
Initiation Protocol (SIP) [RFC3261] that enable SIP to use peer- | Initiation Protocol (SIP) [RFC3261] that enable SIP to use peer- | |||
to-peer techniques for resolving the targets of SIP requests, | to-peer techniques for resolving the targets of SIP requests, | |||
providing SIP message transport, and providing other SIP-related | providing SIP message transport, and providing other SIP-related | |||
functions. At present, these protocols include [RFC6940], | functions. At present, these protocols include [RFC6940], | |||
[I-D.ietf-p2psip-sip], [I-D.ietf-p2psip-diagnostics], [RFC7374] | [RFC7363], [RFC7374], [RFC7851] and [P2PSIP]. | |||
and [RFC7363]. | ||||
User: A human that interacts with the overlay through SIP UAs | User: A human that interacts with the Overlay through SIP UAs | |||
located on peers and clients (and perhaps other ways). | located on Peers and Clients (and perhaps in other ways). | |||
The following terms are defined here only within the scope of | The following terms are defined here only within the scope of P2PSIP. | |||
P2PSIP. These terms may have conflicting definitions in other | These terms may have conflicting definitions in other bodies of | |||
bodies of literature. Some earlier versions of this document | literature. Some draft versions of this document prefixed each term | |||
prefixed each term with "P2PSIP" to clarify the term's scope. | with "P2PSIP" to clarify the term's scope. This prefixing has been | |||
This prefixing has been eliminated from the text; however the | eliminated from the text; however, the scoping still applies. | |||
scoping still applies. | ||||
Overlay Name: A human-friendly name that identifies a specific | Overlay Name: A human-friendly name that identifies a specific | |||
P2PSIP Overlay. This is in the format of (a portion of) a URI, | P2PSIP Overlay. This is in the format of (a portion of) a URI, | |||
but may or may not have a related record in the DNS. | but may or may not have a related record in the DNS. | |||
Peer: A node participating in a P2PSIP Overlay that provides storage | Peer: A node participating in a P2PSIP Overlay that provides storage | |||
and transport services to other nodes in that P2PSIP Overlay. | and transport services to other nodes in that P2PSIP Overlay. | |||
Each Peer has a unique identifier, known as a Peer-ID, within the | Each Peer has a unique identifier, known as a Peer-ID, within the | |||
Overlay. Each Peer may be coupled to one or more SIP entities. | Overlay. Each Peer may be coupled to one or more SIP entities. | |||
Within the Overlay, the peer is capable of performing several | Within the Overlay, the Peer is capable of performing several | |||
different operations, including: joining and leaving the overlay, | different operations, including: joining and leaving the Overlay, | |||
transporting SIP messages within the overlay, storing information | transporting SIP messages within the Overlay, storing information | |||
on behalf of the overlay, putting information into the overlay, | on behalf of the Overlay, putting information into the Overlay, | |||
and getting information from the overlay. | and getting information from the Overlay. | |||
Node-ID: Information that uniquely identifies each Node within a | Node-ID: Information that uniquely identifies each Node within a | |||
given Overlay. This value is not human-friendly -- in a DHT | given Overlay. This value is not human-friendly -- in a DHT | |||
approach, this is a numeric value in the hash space. These Node- | approach, this is a numeric value in the hash space. These Node- | |||
IDs are completely independent of the identifier of any user of a | IDs are completely independent of the identifier of any user of a | |||
user agent associated with a peer. | user agent associated with a Peer. | |||
Client: A node participating in a P2PSIP Overlay but that does not | Client: A node that participates in a P2PSIP Overlay but does not | |||
store information or forward messages. A client can also be | store information or forward messages. A Client can also be | |||
thought of as a peer that has not joined the overlay. Clients can | thought of as a peer that has not joined the Overlay. Clients can | |||
store and retrieve information from the overlay. | store and retrieve information from the Overlay. | |||
User Name: A human-friendly name for a user. This name must be | User Name: A human-friendly name for a user. This name must be | |||
unique within the overlay, but may be unique in a wider scope. | unique within the Overlay, but may be unique in a wider scope. | |||
User Names are formatted so that they can be used within a URI | User Names are formatted so that they can be used within a URI | |||
(likely a SIP URI), perhaps in combination with the Overlay Name. | (likely a SIP URI), perhaps in combination with the Overlay Name. | |||
Service: A capability contributed by a peer to an overlay or to the | Service: A capability contributed by a Peer to an Overlay or to the | |||
members of an overlay. Not all peers and clients will offer the | members of an Overlay. Not all Peers and Clients will offer the | |||
same set of services, and P2PSIP provides service discovery | same set of services, and P2PSIP provides service discovery | |||
mechanisms to locate services. | mechanisms to locate services. | |||
Service Name: A unique, human-friendly, name for a service. | Service Name: A unique, human-friendly name for a service. | |||
Resource: Anything about which information can be stored in the | Resource: Anything about which information can be stored in the | |||
overlay. Both Users and Services are examples of Resources. | Overlay. Both Users and Services are examples of Resources. | |||
Resource-ID: A non-human-friendly value that uniquely identifies a | Resource-ID: A non-human-friendly value that uniquely identifies a | |||
resource and which is used as a key for storing and retrieving | resource and that is used as a key for storing and retrieving data | |||
data about the resource. One way to generate a Resource-ID is by | about the resource. One way to generate a Resource-ID is by | |||
applying a mapping function to some other unique name (e.g., User | applying a mapping function to some other unique name (e.g., User | |||
Name or Service Name) for the resource. The Resource-ID is used | Name or Service Name) for the resource. The Resource-ID is used | |||
by the distributed database algorithm to determine the peer or | by the distributed database algorithm to determine the Peer or | |||
peers that are responsible for storing the data for the overlay. | Peers that are responsible for storing data for the Overlay. | |||
Resource Record: A block of data, stored using distributed database | Resource Record: A block of data, stored using the distributed | |||
mechanism of the Overlay, that includes information relevant to a | database mechanism of the Overlay, that includes information | |||
specific resource. We presume that there may be multiple types of | relevant to a specific resource. We presume that there may be | |||
resource records. Some may hold data about Users, and others may | multiple types of resource records. Some may hold data about | |||
hold data about Services, and the working group may define other | Users, and others may hold data about Services, and the working | |||
types. The types, usages, and formats of the records are a | group may define other types. The types, usages, and formats of | |||
question for future study. | the records are a question for future study. | |||
Responsible Peer The Peer that is responsible for storing the | Responsible Peer The Peer that is responsible for storing the | |||
Resource Record for a Resource. In the literature, the term "Root | Resource Record for a Resource. In the literature, the term "Root | |||
Peer" is also used for this concept. | Peer" is also used for this concept. | |||
Peer Protocol: The protocol spoken between P2PSIP Overlay peers to | Peer Protocol: The protocol spoken between P2PSIP Overlay Peers to | |||
share information and organize the P2PSIP Overlay Network. In | share information and organize the P2PSIP Overlay Network. In | |||
P2PSIP, this is implemented using the RELOAD [RFC6940] protocol. | P2PSIP, this is implemented using the RELOAD protocol [RFC6940]. | |||
Client Protocol: The protocol spoken between Clients and Peers. In | Client Protocol: The protocol spoken between Clients and Peers. In | |||
P2PSIP and RELOAD, this is the same protocol syntactically as the | P2PSIP and RELOAD, this is syntactically the same protocol as the | |||
Peer Protocol. The only difference is that Clients are not | Peer Protocol. The only difference is that Clients are not | |||
routing messages or routing information, and have not (or can not) | routing messages or routing information, and have not (or cannot) | |||
insert themselves into the overlay. | insert themselves into the Overlay. | |||
Peer Protocol Connection / P2PSIP Client Protocol Connection: | Peer Protocol Connection / P2PSIP Client Protocol Connection: | |||
The TLS, DTLS, TCP, UDP or other transport layer protocol | The Transport Layer Security (TLS), Datagram Transport Layer | |||
Security (DTLS), TCP, UDP, or other transport-layer protocol | ||||
connection over which the RELOAD Peer Protocol messages are | connection over which the RELOAD Peer Protocol messages are | |||
transported. | transported. | |||
Neighbors: The set of P2PSIP Peers that a Peer or Client know of | Neighbors: The set of P2PSIP Peers that a Peer or Client know of | |||
directly and can reach without further lookups. | directly and can reach without further lookups. | |||
Joining Peer: A node that is attempting to become a Peer in a | Joining Peer: A node that is attempting to become a Peer in a | |||
particular Overlay. | particular Overlay. | |||
Bootstrap Peer: A Peer in the Overlay that is the first point of | Bootstrap Peer: A Peer in the Overlay that is the first point of | |||
contact for a Joining Peer. It selects the peer that will serve | contact for a Joining Peer. It selects the Peer that will serve | |||
as the Admitting Peer and helps the joining peer contact the | as the Admitting Peer and helps the Joining Peer contact the | |||
admitting peer. | Admitting Peer. | |||
Admitting Peer: A Peer in the Overlay which helps the Joining Peer | Admitting Peer: A Peer in the Overlay that helps the Joining Peer | |||
join the Overlay. The choice of the admitting peer may depend on | join the Overlay. The choice of the Admitting Peer may depend on | |||
the joining peer (e.g., depend on the joining peer's Peer-ID). | the Joining Peer (e.g., depend on the Joining Peer's Peer-ID). | |||
For example, the admitting peer might be chosen as the peer which | For example, the Admitting Peer might be chosen as the Peer which | |||
is "closest" in the logical structure of the overlay to the future | is "closest" in the logical structure of the Overlay to the future | |||
position of the joining peer. The selection of the admitting peer | position of the Joining Peer. The selection of the Admitting Peer | |||
is typically done by the bootstrap peer. It is allowable for the | is typically done by the Bootstrap Peer. It is allowable for the | |||
bootstrap peer to select itself as the admitting peer. | Bootstrap Peer to select itself as the Admitting Peer. | |||
Bootstrap Server: A network node used by Joining Peers to locate a | Bootstrap Server: A network node used by Joining Peers to locate a | |||
Bootstrap Peer. A Bootstrap Server may act as a proxy for | Bootstrap Peer. A Bootstrap Server may act as a proxy for | |||
messages between the Joining Peer and the Bootstrap Peer. The | messages between the Joining Peer and the Bootstrap Peer. The | |||
Bootstrap Server itself is typically a stable host with a DNS name | Bootstrap Server itself is typically a stable host with a DNS name | |||
that is somehow communicated (for example, through configuration, | that is somehow communicated (for example, through configuration, | |||
specification on a web page, or using DHCP) to peers that want to | specification on a web page, or using DHCP) to Peers that want to | |||
join the overlay. A Bootstrap Server is NOT required to be a peer | join the Overlay. A Bootstrap Server is NOT required to be a Peer | |||
or client, though it may be if desired. | or Client, though it may be if desired. | |||
Peer Admission: The act of admitting a node (the "Joining Peer") | Peer Admission: The act of admitting a node (the "Joining Peer") | |||
into an Overlay as a Peer. After the admission process is over, | into an Overlay as a Peer. After the admission process is over, | |||
the joining peer is a fully-functional peer of the overlay. | the Joining Peer is a fully functional Peer of the Overlay. | |||
During the admission process, the joining peer may need to present | During the admission process, the Joining Peer may need to present | |||
credentials to prove that it has sufficient authority to join the | credentials to prove that it has sufficient authority to join the | |||
overlay. | Overlay. | |||
Resource Record Insertion: The act of inserting a P2PSIP Resource | Resource Record Insertion: The act of inserting a P2PSIP Resource | |||
Record into the distributed database. Following insertion, the | Record into the distributed database. Following insertion, the | |||
data will be stored at one or more peers. The data can be | data will be stored at one or more Peers. The data can be | |||
retrieved or updated using the Resource-ID as a key. | retrieved or updated using the Resource-ID as a key. | |||
5. Discussion | 5. Discussion | |||
5.1. The Distributed Database Function | 5.1. The Distributed Database Function | |||
A P2PSIP Overlay functions as a distributed database. The database | A P2PSIP Overlay functions as a distributed database. The database | |||
serves as a way to store information about Resources. A piece of | serves as a way to store information about Resources. A piece of | |||
information, called a Resource Record, can be stored by and retrieved | information, called a "Resource Record", can be stored by and | |||
from the database using a key associated with the Resource Record | retrieved from the database using a key associated with the Resource | |||
called its Resource-ID. Each Resource must have a unique Resource- | Record called its "Resource-ID". Each Resource must have a unique | |||
ID. In addition to uniquely identifying the Resource, the Resource- | Resource-ID. In addition to uniquely identifying the Resource, the | |||
ID is also used by the distributed database algorithm to determine | Resource-ID is also used by the distributed database algorithm to | |||
the peer or peers that store the Resource Record in the overlay. | determine the Peer or Peers that store the Resource Record in the | |||
Overlay. | ||||
Users are humans that can use the overlay to do things like making | Users are humans that can use the Overlay to do things like making | |||
and receiving calls. Information stored in the resource record | and receiving calls. Information stored in the resource record | |||
associated with a user can include things like the full name of the | associated with a user can include things like the full name of the | |||
user and the location of the UAs that the user is using (the users | user and the location of the UAs that the user is using (the user's | |||
SIP AoR). Full details of how this is implemented using RELOAD are | SIP AoR). Full details of how this is implemented using RELOAD are | |||
provided in [I-D.ietf-p2psip-sip] | provided in [P2PSIP]. | |||
Before information about a user can be stored in the overlay, a user | Before information about a user can be stored in the Overlay, a user | |||
needs a User Name. The User Name is a human-friendly identifier that | needs a User Name. The User Name is a human-friendly identifier that | |||
uniquely identifies the user within the overlay. In RELOAD, users | uniquely identifies the user within the Overlay. In RELOAD, users | |||
are issued certificates, which in the case of centrally signed | are issued certificates, which in the case of centrally signed | |||
certificates, identify the User Name as well as a certain number of | certificates, identify the User Name as well as a certain number of | |||
Resource-IDs where the user may store their information. For more | Resource-IDs where the user may store their information. For more | |||
information, see [RFC6940]. | information, see [RFC6940]. | |||
The P2PSIP suite of protocols also standardizes information about how | The P2PSIP suite of protocols also standardizes information about how | |||
to locate services. Services represent actions that a peer (and | to locate services. Services represent actions that a Peer (and | |||
perhaps a client) can do to benefit other peers and clients in the | perhaps a Client) can do to benefit other Peers and Clients in the | |||
overlay. Information that might be stored in the resource record | Overlay. Information that might be stored in the resource record | |||
associated with a service might include the peers (and perhaps | associated with a service might include the Peers (and perhaps | |||
clients) offering the service. Service discovery for P2PSIP is | Clients) offering the service. Service discovery for P2PSIP is | |||
defined in [RFC7374]. | defined in [RFC7374]. | |||
Each service has a human-friendly Service Name that uniquely | Each service has a human-friendly Service Name that uniquely | |||
identifies the service. Like User Names, the Service Name is not a | identifies the service. Like User Names, the Service Name is not a | |||
resource-id, rather the resource-id is derived from the service name | Resource-ID, rather the Resource-ID is derived from the service name | |||
using some function defined by the distributed database algorithm | using some function defined by the distributed database algorithm | |||
used by the overlay. | used by the Overlay. | |||
A class of algorithms known as Distributed Hash Tables are one way to | A class of algorithms known as Distributed Hash Tables (DHTs) are one | |||
implement the Distributed Database. The RELOAD protocol is | way to implement the distributed database. The RELOAD protocol is | |||
extensible and allows many different DHTs to be implemented, but | extensible and allows many different DHTs to be implemented, but | |||
specifies a mandatory to implement DHT in the form of a modified | specifies a mandatory-to-implement DHT in the form of a modified | |||
Chord DHT. For more information, see [Chord] | Chord DHT. For more information, see [Chord]. | |||
5.2. Using the Distributed Database Function | 5.2. Using the Distributed Database Function | |||
While there are a number of ways the distributed database described | While there are a number of ways the distributed database described | |||
in the previous section can be used to establish multimedia sessions | in the previous section can be used to establish multimedia sessions | |||
using SIP, the basic mechanism defined in the RELOAD protocol and SIP | using SIP, the basic mechanism defined in the RELOAD protocol and SIP | |||
usage is summarized below. This is a very simplistic overview. For | usage is summarized below. This is a very simplistic overview. For | |||
more detailed information, please see the RELOAD protocol document. | more detailed information, please see the RELOAD protocol [RFC6940]. | |||
Contact information for a user is stored in the resource record for | Contact information for a user is stored in the resource record for | |||
that user. Assume that a user is using a device, here called peer A, | that user. Assume that a user is using a device, here called "Peer | |||
which serves as the contact point for this user. The user adds | A", that serves as the contact point for this user. The user adds | |||
contact information to this resource record, as authorized by the | contact information to this resource record, as authorized by the | |||
RELOAD certificate mechanism. The resource record itself is stored | RELOAD certificate mechanism. The resource record itself is stored | |||
with peer Z in the network, where peer Z is chosen by the particular | with Peer Z in the network, where Peer Z is chosen by the particular | |||
distributed database algorithm in use by the overlay. | distributed database algorithm in use by the Overlay. | |||
When the SIP entity coupled with peer B has an INVITE message | When the SIP entity coupled with Peer B has an INVITE message | |||
addressed to this user, it retrieves the resource record from peer Z. | addressed to this user, it retrieves the resource record from Peer Z. | |||
It then extracts the contact information for the various peers that | It then extracts the contact information for the various Peers that | |||
are a contact point for the user, including peer A, and uses the | are a contact point for the user, including Peer A, and uses the | |||
overlay to establish a connection to peer A, including any | Overlay to establish a connection to Peer A, including any | |||
appropriate NAT traversal (the details of which are not shown). | appropriate NAT traversal (the details of which are not shown). | |||
Note that RELOAD is used only to establish the connection. Once the | Note that RELOAD is used only to establish the connection. Once the | |||
connection is established, messages between the peers are sent using | connection is established, messages between the Peers are sent using | |||
ordinary SIP. | ordinary SIP. | |||
This exchange is illustrated in the following figure. The notation | This exchange is illustrated in the following figure. The notation | |||
"Store(U@A)" is used to show the distributed database operation of | "Store(U@A)" is used to show the distributed database operation of | |||
updating the resource record for user U with the contract A, and | updating the resource record for user U with the contract A, and | |||
"Fetch(U)" illustrates the distributed database operation of | "Fetch(U)" illustrates the distributed database operation of | |||
retrieving the resource record for user U. Note that the messages | retrieving the resource record for user U. Note that the messages | |||
between the peers A, B and Z may actually travel via intermediate | between the Peers A, B, and Z may actually travel via intermediate | |||
peers (not shown) as part of the distributed lookup process or so as | Peers (not shown) as part of the distributed lookup process or so as | |||
to traverse intervening NATs. | to traverse intervening NATs. | |||
Peer B Peer Z Peer A | Peer B Peer Z Peer A | |||
| | | | | | | | |||
| | Store(U@Y)| | | | Store(U@A)| | |||
| |<------------------| | | |<------------------| | |||
| |Store-Resp(OK) | | | |Store-Resp(OK) | | |||
| |------------------>| | | |------------------>| | |||
| | | | | | | | |||
|Fetch(U) | | | |Fetch(U) | | | |||
|------------------->| | | |------------------->| | | |||
| Fetch-Resp(U@Y)| | | | Fetch-Resp(U@A)| | | |||
|<-------------------| | | |<-------------------| | | |||
| | | | | | | | |||
(RELOAD IS USED TO ESTABLISH CONNECTION) | (RELOAD IS USED TO ESTABLISH CONNECTION) | |||
| | | | | | | | |||
| SIP INVITE(To:U) | | | | SIP INVITE(To:U) | | | |||
|--------------------------------------->| | |--------------------------------------->| | |||
| | | | | | | | |||
Figure 2: SIP Exchange Using Distributed Database Function | ||||
5.3. NAT Traversal | 5.3. NAT Traversal | |||
NAT Traversal in P2PSIP using RELOAD treats all peers as equal and | NAT traversal in P2PSIP using RELOAD treats all Peers as equal and | |||
establishes a partial mesh of connections between them. Messages | establishes a partial mesh of connections between them. Messages | |||
from one peer to another are routed along the edges in the mesh of | from one Peer to another are routed along the edges in the mesh of | |||
connections until they reach their destination. To make the routing | connections until they reach their destination. To make the routing | |||
efficient and to avoid the use of standard Internet routing | efficient and to avoid the use of standard Internet routing | |||
protocols, the partial mesh is organized in a structured manner. If | protocols, the partial mesh is organized in a structured manner. If | |||
the structure is based on any one of a number of common DHT | the structure is based on any one of a number of common DHT | |||
algorithms, then the maximum number of hops between any two peers is | algorithms, then the maximum number of hops between any two Peers is | |||
log N, where N is the number of peers in the overlay. Existing | log N, where N is the number of peers in the overlay. Existing | |||
connections, along with the ICE NAT traversal techniques [RFC5245], | connections, along with the Interactive Connectivity Establishment | |||
are used to establish new connections between peers, and also to | (ICE) NAT traversal techniques [RFC5245], are used to establish new | |||
allow the applications running on peers to establish a connection to | connections between Peers, and also to allow the applications running | |||
communicate with one another. | on Peers to establish a connection to communicate with one another. | |||
5.4. Locating and Joining an Overlay | 5.4. Locating and Joining an Overlay | |||
Before a peer can attempt to join a P2PSIP overlay, it must first | Before a Peer can attempt to join a P2PSIP Overlay, it must first | |||
obtain a Node-ID, configuration information, and optionally a set of | obtain a Node-ID, configuration information, and optionally a set of | |||
credentials. The Node-ID is an identifier that will uniquely | credentials. The Node-ID is an identifier that uniquely identifies | |||
identify the peer within the overlay, while the credentials show that | the Peer within the Overlay, while the credentials show that the Peer | |||
the peer is allowed to join the overlay. | is allowed to join the Overlay. | |||
The P2PSIP WG does not impose a particular mechanism for how the | The P2PSIP WG does not impose a particular mechanism for how the | |||
peer-ID and the credentials are obtained, but the RELOAD protocol | Peer-ID and the credentials are obtained, but the RELOAD protocol | |||
does specify the format for the configuration information, and | does specify the format for the configuration information and how | |||
specifies how this information may be obtained, along with | this information may be obtained, along with credentials and a | |||
credentials and a Node-ID, from an offline enrollment server. | Node-ID, from an offline enrollment server. | |||
Once the configuration information is obtained, RELOAD specifies a | Once the configuration information is obtained, RELOAD specifies a | |||
mechanism whereby a peer may obtain a multicast-bootstrap address in | mechanism whereby a Peer may obtain a multicast-bootstrap address in | |||
the configuration file, and can broadcast to this address to attempt | the configuration file and broadcast to this address to attempt | |||
to locate a bootstrap peer. Additionally, the peer may store | locating a Bootstrap Peer. Additionally, the Peer may store previous | |||
previous peers it has seen and attempt to use these as bootstrap | Peers it has seen and attempt using these as Bootstrap Peers, or it | |||
peers, or may obtain an address for a bootstrap peer by some other | may obtain an address for a Bootstrap Peer by some other mechanism. | |||
mechanism. For more information, see the RELOAD protocol. | For more information, see the RELOAD protocol. | |||
The job of the bootstrap peer is simple: refer the joining peer to a | The job of the Bootstrap Peer is simple: refer the Joining Peer to a | |||
peer (called the "admitting peer") that will help the joining peer | Peer (called the "Admitting Peer") that will help the Joining Peer | |||
join the network. The choice of admitting peer will often depend on | join the network. The choice of the Admitting Peer will often depend | |||
the joining node - for example, the admitting peer may be a peer that | on the Joining Peer -- for example, the Admitting Peer may be a Peer | |||
will become a neighbor of the joining peer in the overlay. It is | that will become a neighbor of the Joining Peer in the Overlay. It | |||
possible that the bootstrap peer might also serve as the admitting | is possible that the Bootstrap Peer might also serve as the Admitting | |||
peer. | Peer. | |||
The admitting peer will help the joining peer learn about other peers | The Admitting Peer will help the Joining Peer learn about other Peers | |||
in the overlay and establish connections to them as appropriate. The | in the Overlay and establish connections to them as appropriate. The | |||
admitting peer and/or the other peers in the overlay will also do | Admitting Peer and/or the other Peers in the Overlay will also do | |||
whatever else is required to help the joining peer become a fully- | whatever else is required to help the Joining Peer become a fully | |||
functional peer. The details of how this is done will depend on the | functional Peer. The details of how this is done will depend on the | |||
distributed database algorithm used by the overlay. | distributed database algorithm used by the Overlay. | |||
At various stages in this process, the joining peer may be asked to | At various stages in this process, the Joining Peer may be asked to | |||
present its credentials to show that it is authorized to join the | present its credentials to show that it is authorized to join the | |||
overlay. Similarly, the various peers contacted may be asked to | Overlay. Similarly, the various Peers contacted may be asked to | |||
present their credentials so the joining peer can verify that it is | present their credentials so the Joining Peer can verify that it is | |||
really joining the overlay it wants to. | really joining the Overlay it wants to. | |||
5.5. Clients and Connecting Unmodified SIP Devices | 5.5. Clients and Connecting Unmodified SIP Devices | |||
As mentioned above, in RELOAD, from the perspective of the protocol, | As mentioned above, in RELOAD, from the perspective of the protocol, | |||
clients are simply peers that do not store information, do not route | Clients are simply peers that do not store information, do not route | |||
messages, and which have not inserted themselves into the overlay. | messages, and have not inserted themselves into the Overlay. The | |||
The same protocol is used for the actual message exchanged. Note | same protocol is used for the actual message exchanged. Note that | |||
that while the protocol is the same, the client need not implement | while the protocol is the same, the Client need not implement all the | |||
all the capabilities of a peer. If, for example, it never routes | capabilities of a Peer. If, for example, it never routes messages, | |||
messages, it will not need to be capable of processing such messages, | it will not need to be capable of processing such messages or | |||
or understanding a DHT. | understanding a DHT. | |||
For SIP devices, another way to realize this functionality is for a | For SIP devices, another way to realize this functionality is for a | |||
Peer to behave as a [RFC3261] proxy/registrar. SIP devices then use | Peer to behave as a proxy/registrar as specified in [RFC3261]. SIP | |||
standard SIP mechanisms to add, update, and remove registrations and | devices then use standard SIP mechanisms to add, update, and remove | |||
to send SIP messages to peers and other clients. The authors here | registrations and to send SIP messages to Peers and other Clients. | |||
refer to these devices simply as a "SIP UA", not a "P2PSIP Client", | The authors here refer to these devices simply as a "SIP UA", not a | |||
to distinguish it from the concept described above. | "P2PSIP Client", to distinguish it from the concept described above. | |||
5.6. Architecture | 5.6. Architecture | |||
The architecture adopted by RELOAD to implement P2PSIP is shown | The architecture adopted by RELOAD to implement P2PSIP is shown | |||
below. An application, for example SIP (or another application using | below. An application (for example, SIP or another application using | |||
RELOAD) uses RELOAD to locate other peers and (optionally) to | RELOAD) uses RELOAD to locate other Peers and (optionally) to | |||
establish connections to those peers, potentially across NATs. | establish connections to those Peers, potentially across NATs. | |||
Messages may still be exchanged directly between the peers. The | Messages may still be exchanged directly between the Peers. The | |||
overall block diagram for the architecture is as follows: | overall block diagram for the architecture is as follows: | |||
__________________________ | __________________________ | |||
| | | | | | |||
| SIP, other apps... | | | SIP, other apps... | | |||
| ___________________| | | ___________________| | |||
| | RELOAD Layer | | | | RELOAD Layer | | |||
|______|___________________| | |______|___________________| | |||
| Transport Layer | | | Transport Layer | | |||
|__________________________| | |__________________________| | |||
Figure 3: Architecture for Implementing P2PSIP | ||||
6. Security Considerations | 6. Security Considerations | |||
This specification is an overview of existing specifications and does | This specification is an overview of existing specifications and does | |||
not introduce any security considerations on its own. Please refer | not introduce any security considerations on its own. Please refer | |||
to the security considerations of the respective specifications, | to the security considerations of the respective specifications, | |||
particularly the RELOAD protocol specification ([RFC6940]) for | particularly the RELOAD protocol specification ([RFC6940]) for | |||
further details. | further details. | |||
7. IANA Considerations | 7. Informative References | |||
This document has no actions for IANA. | ||||
8. Informative References | ||||
[Chord] Singh, K., Stoica, I., Morris, R., Karger, D., Kaashock, | ||||
M., Dabek, F., and H. Balakrishman, "Chord: A scalable | ||||
peer-to-peer lookup protocol for internet applications", | ||||
IEEE/ACM Transactions on Neworking Volume 11 Issue 1, pp. | ||||
17-32, Feb. 2003, August 2001. | ||||
Copy available at http://pdos.csail.mit.edu/chord/papers/ | ||||
paper-ton.pdf | ||||
[I-D.ietf-p2psip-diagnostics] | [Chord] Stoica, I., Morris, R., Liben-Nowell, D., Karger, D., | |||
Song, H., Xingfeng, J., Even, R., Bryan, D., and Y. Sun, | Kaashoek, M., Dabek, F., and H. Balakrishnan, "Chord: A | |||
"P2P Overlay Diagnostics", draft-ietf-p2psip- | scalable peer-to-peer lookup protocol for internet | |||
diagnostics-22 (work in progress), March 2016. | applications", IEEE/ACM Transactions on Networking, | |||
Volume 11, Issue 1, pp. 17-32, | ||||
DOI 10.1109/TNET.2002.808407, February 2003. | ||||
[I-D.ietf-p2psip-sip] | [P2PSIP] Jennings, C., Lowekamp, B., Rescorla, E., Baset, S., | |||
Jennings, C., Lowekamp, B., Rescorla, E., Baset, S., | ||||
Schulzrinne, H., and T. Schmidt, "A SIP Usage for RELOAD", | Schulzrinne, H., and T. Schmidt, "A SIP Usage for RELOAD", | |||
draft-ietf-p2psip-sip-20 (work in progress), April 2016. | Work in Progress, draft-ietf-p2psip-sip-21, April 2016. | |||
[RFC2136] Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound, | [RFC2136] Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound, | |||
"Dynamic Updates in the Domain Name System (DNS UPDATE)", | "Dynamic Updates in the Domain Name System (DNS UPDATE)", | |||
RFC 2136, DOI 10.17487/RFC2136, April 1997, | RFC 2136, DOI 10.17487/RFC2136, April 1997, | |||
<http://www.rfc-editor.org/info/rfc2136>. | <http://www.rfc-editor.org/info/rfc2136>. | |||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
DOI 10.17487/RFC3261, June 2002, | DOI 10.17487/RFC3261, June 2002, | |||
skipping to change at page 18, line 24 ¶ | skipping to change at page 18, line 20 ¶ | |||
[RFC7363] Maenpaa, J. and G. Camarillo, "Self-Tuning Distributed | [RFC7363] Maenpaa, J. and G. Camarillo, "Self-Tuning Distributed | |||
Hash Table (DHT) for REsource LOcation And Discovery | Hash Table (DHT) for REsource LOcation And Discovery | |||
(RELOAD)", RFC 7363, DOI 10.17487/RFC7363, September 2014, | (RELOAD)", RFC 7363, DOI 10.17487/RFC7363, September 2014, | |||
<http://www.rfc-editor.org/info/rfc7363>. | <http://www.rfc-editor.org/info/rfc7363>. | |||
[RFC7374] Maenpaa, J. and G. Camarillo, "Service Discovery Usage for | [RFC7374] Maenpaa, J. and G. Camarillo, "Service Discovery Usage for | |||
REsource LOcation And Discovery (RELOAD)", RFC 7374, | REsource LOcation And Discovery (RELOAD)", RFC 7374, | |||
DOI 10.17487/RFC7374, October 2014, | DOI 10.17487/RFC7374, October 2014, | |||
<http://www.rfc-editor.org/info/rfc7374>. | <http://www.rfc-editor.org/info/rfc7374>. | |||
[RFC7851] Song, H., Jiang, X., Even, R., Bryan, D., and Y. Sun, | ||||
"Peer-to-Peer (P2P) Overlay Diagnostics", RFC 7851, | ||||
DOI 10.17487/RFC7851, May 2016, | ||||
<http://www.rfc-editor.org/info/rfc7851>. | ||||
Authors' Addresses | Authors' Addresses | |||
David A. Bryan | David A. Bryan | |||
Cogent Force, LLC | Cogent Force, LLC | |||
Cedar Park, TX, Texas | Cedar Park, Texas | |||
USA | United States | |||
Email: dbryan@ethernot.org | Email: dbryan@ethernot.org | |||
Philip Matthews | Philip Matthews | |||
Alcatel-Lucent | Nokia | |||
600 March Road | 600 March Road | |||
Ottawa, Ontario K2K 2E6 | Ottawa, Ontario K2K 2E6 | |||
Canada | Canada | |||
Phone: +1 613 784 3139 | Phone: +1 613 784 3139 | |||
Email: philip_matthews@magma.ca | Email: philip_matthews@magma.ca | |||
Eunsoo Shim | Eunsoo Shim | |||
Samsung Electronics Co., Ltd. | Samsung Electronics Co., Ltd. | |||
San 14, Nongseo-dong, Giheung-gu, | San 14, Nongseo-dong, Giheung-gu | |||
Yongin-si, Gyeonggi-do, 446-712 | Yongin-si, Gyeonggi-do 446-712 | |||
South Korea | South Korea | |||
Email: eunsooshim@gmail.com | Email: eunsooshim@gmail.com | |||
Dean Willis | Dean Willis | |||
Softarmor Systems | Softarmor Systems | |||
3100 Independence Pkwy #311-164 | 3100 Independence Pkwy #311-164 | |||
Plano, Texas 75075 | Plano, Texas 75075 | |||
USA | United States | |||
Phone: +1 214 504 1987 | Phone: +1 214 504 1987 | |||
Email: dean.willis@softarmor.com | Email: dean.willis@softarmor.com | |||
Spencer Dawkins | Spencer Dawkins | |||
Huawei Technologies (USA) | Huawei Technologies (USA) | |||
Phone: +1 214 755 3870 | Phone: +1 214 755 3870 | |||
Email: spencerdawkins.ietf@gmail.com | Email: spencerdawkins.ietf@gmail.com | |||
End of changes. 119 change blocks. | ||||
331 lines changed or deleted | 326 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |