draft-ietf-p2psip-rpr-11.original | draft-ietf-p2psip-rpr-12.original.txt | |||
---|---|---|---|---|
P2PSIP N. Zong, Ed. | P2PSIP N. Zong | |||
Internet-Draft X. Jiang | Internet-Draft X. Jiang | |||
Intended status: Standards Track R. Even | Intended status: Standards Track R. Even | |||
Expires: April 24, 2014 Huawei Technologies | Expires: August 29, 2014 Huawei Technologies | |||
Y. Zhang | Y. Zhang | |||
CoolPad | CoolPad | |||
October 21, 2013 | February 25, 2014 | |||
An Extension to REsource LOcation And Discovery (RELOAD) Protocol to | An Extension to REsource LOcation And Discovery (RELOAD) Protocol to | |||
Support Relay Peer Routing | Support Relay Peer Routing | |||
draft-ietf-p2psip-rpr-11 | draft-ietf-p2psip-rpr-12 | |||
Abstract | Abstract | |||
This document proposes an optional extension to REsource LOcation And | This document proposes an optional extension to REsource LOcation And | |||
Discovery (RELOAD) protocol to support relay peer routing mode. | Discovery (RELOAD) protocol to support relay peer routing mode. | |||
RELOAD recommends symmetric recursive routing for routing messages. | RELOAD recommends symmetric recursive routing for routing messages. | |||
The new optional extension provides a shorter route for responses | The new optional extension provides a shorter route for responses | |||
reducing the overhead on intermediate peers and describes the | reducing the overhead on intermediate peers and describes the | |||
potential use cases where this extension can be used. | potential use cases where this extension can be used. | |||
skipping to change at page 1, line 39 | skipping to change at page 1, line 39 | |||
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 April 24, 2014. | This Internet-Draft will expire on August 29, 2014. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2014 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. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. RPR . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. RPR . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Scenarios where RPR can be used . . . . . . . . . . . . . 5 | 3.2. Scenarios where RPR can be used . . . . . . . . . . . . . 5 | |||
3.2.1. Managed or closed P2P systems . . . . . . . . . . . . 5 | 3.2.1. Managed or closed P2P systems . . . . . . . . . . . . 5 | |||
3.2.2. Using bootstrap nodes as relay peers . . . . . . . . 5 | 3.2.2. Using bootstrap nodes as relay peers . . . . . . . . 6 | |||
3.2.3. Wireless scenarios . . . . . . . . . . . . . . . . . 6 | 3.2.3. Wireless scenarios . . . . . . . . . . . . . . . . . 6 | |||
4. Relationship between SRR and RPR . . . . . . . . . . . . . . 6 | 4. Relationship between SRR and RPR . . . . . . . . . . . . . . 6 | |||
4.1. How RPR works . . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. How RPR works . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.2. How SRR and RPR work together . . . . . . . . . . . . . . 6 | 4.2. How SRR and RPR work together . . . . . . . . . . . . . . 6 | |||
5. Comparison on cost of SRR and RPR . . . . . . . . . . . . . . 7 | 5. RPR extensions to RELOAD . . . . . . . . . . . . . . . . . . 7 | |||
5.1. Closed or managed networks . . . . . . . . . . . . . . . 7 | 5.1. Basic requirements . . . . . . . . . . . . . . . . . . . 7 | |||
5.2. Open networks . . . . . . . . . . . . . . . . . . . . . . 7 | 5.2. Modification to RELOAD message structure . . . . . . . . 7 | |||
6. RPR extensions to RELOAD . . . . . . . . . . . . . . . . . . 8 | 5.2.1. Extensive routing mode . . . . . . . . . . . . . . . 7 | |||
6.1. Basic requirements . . . . . . . . . . . . . . . . . . . 8 | 5.3. Creating a request . . . . . . . . . . . . . . . . . . . 8 | |||
6.2. Modification to RELOAD message structure . . . . . . . . 8 | 5.3.1. Creating a request for RPR . . . . . . . . . . . . . 8 | |||
6.2.1. State-keeping flag . . . . . . . . . . . . . . . . . 8 | 5.4. Request and response processing . . . . . . . . . . . . . 8 | |||
6.2.2. Extensive routing mode . . . . . . . . . . . . . . . 9 | 5.4.1. Destination peer: receiving a request and sending a | |||
6.3. Creating a request . . . . . . . . . . . . . . . . . . . 9 | response . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6.3.1. Creating a request for RPR . . . . . . . . . . . . . 9 | 5.4.2. Sending peer: receiving a response . . . . . . . . . 9 | |||
6.4. Request and response processing . . . . . . . . . . . . . 10 | 5.4.3. Relay peer processing . . . . . . . . . . . . . . . . 9 | |||
6.4.1. Destination peer: receiving a request and sending a | 6. Overlay configuration extension . . . . . . . . . . . . . . . 9 | |||
response . . . . . . . . . . . . . . . . . . . . . . 10 | 7. Discovery of relay peers . . . . . . . . . . . . . . . . . . 10 | |||
6.4.2. Sending peer: receiving a response . . . . . . . . . 11 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
6.4.3. Relay peer processing . . . . . . . . . . . . . . . . 11 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
7. Overlay configuration extension . . . . . . . . . . . . . . . 11 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
8. Discovery of relay peers . . . . . . . . . . . . . . . . . . 11 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 11.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
10.1. A new RELOAD Forwarding Option . . . . . . . . . . . . . 12 | Appendix A. Optional methods to investigate peer connectivity . 11 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12 | Appendix B. Comparison on cost of SRR and RPR . . . . . . . . . 12 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | B.1. Closed or managed networks . . . . . . . . . . . . . . . 12 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 12 | B.2. Open networks . . . . . . . . . . . . . . . . . . . . . . 13 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | ||||
Appendix A. Optional methods to investigate peer connectivity . 13 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
1. Introduction | 1. Introduction | |||
REsource LOcation And Discovery (RELOAD) protocol [I-D.ietf-p2psip- | REsource LOcation And Discovery (RELOAD) protocol [RFC6940] | |||
base] recommends symmetric recursive routing (SRR) for routing | recommends symmetric recursive routing (SRR) for routing messages and | |||
messages and describes the extensions that would be required to | describes the extensions that would be required to support additional | |||
support additional routing algorithms. Other than SRR, two other | routing algorithms. Other than SRR, two other routing options: | |||
routing options: direct response routing (DRR) and relay peer routing | direct response routing (DRR) and relay peer routing (RPR) are also | |||
(RPR) are also discussed in Appendix A of [I-D.ietf-p2psip-base]. As | discussed in Appendix A of [RFC6940]. As we show in Section 3, RPR | |||
we show in section 3, RPR is advantageous over SRR in some scenarios | is advantageous over SRR in some scenarios reducing load (CPU and | |||
reducing load (CPU and link bandwidth) on intermediate peers. RPR | link bandwidth) on intermediate peers. RPR works better in a network | |||
works better in a network where relay peers are provisioned in | where relay peers are provisioned in advance so that relay peers are | |||
advance so that relay peers are publicly reachable in the P2P system. | publicly reachable in the P2P system. In other scenarios, using a | |||
In other scenarios, using a combination of RPR and SRR together is | combination of RPR and SRR together is more likely to bring benefits | |||
more likely to bring benefits than if SRR is used alone. | than if SRR is used alone. | |||
Note that in this document, we focus on RPR routing mode and its | Note that in this document, we focus on RPR routing mode and its | |||
extensions to RELOAD to produce a standalone solution. Please refer | extensions to RELOAD to produce a standalone solution. Please refer | |||
to DRR document [I-D.ietf-p2psip-drr] for DRR routing mode. | to DRR document [I-D.ietf-p2psip-drr] for DRR routing mode. | |||
We first discuss the problem statement in Section 3, then how to | We first discuss the problem statement in Section 3, then how to | |||
combine RPR and SRR is presented in Section 4. In Section 5, we give | combine RPR and SRR is presented in Section 4. An extension to | |||
comparison on the cost of SRR and RPR in both managed and open | RELOAD to support RPR is defined in Section 5. Discovery of relay | |||
networks. An extension to RELOAD to support RPR is proposed in | peers is introduced in Section 6. Some optional methods to check | |||
Section 6. Discovery of relay peers is introduced in Section 7. | peer connectivity are introduced in Appendix A. In Appendix B, we | |||
Some optional methods to check peer connectivity are introduced in | give comparison on the cost of SRR and RPR in both managed and open | |||
Appendix A. | networks. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
We use the terminology and definitions from the RELOAD base draft | We use the terminology and definitions from the RELOAD base draft | |||
[I-D.ietf-p2psip-base] extensively in this document. We also use | [RFC6940] extensively in this document. We also use terms defined in | |||
terms defined in NAT behavior discovery [RFC5780]. Other terms used | NAT behavior discovery [RFC5780]. Other terms used in this document | |||
in this document are defined inline when used and are also defined | are defined inline when used and are also defined below for | |||
below for reference. | reference. | |||
Publicly Reachable: A peer is publicly reachable if it can receive | Publicly Reachable: A peer is publicly reachable if it can receive | |||
unsolicited messages from any other peer in the same overlay. | unsolicited messages from any other peer in the same overlay. | |||
Note: "publicly" does not mean that the peers must be on the | Note: "publicly" does not mean that the peers must be on the | |||
public Internet, because the RELOAD protocol may be used in a | public Internet, because the RELOAD protocol may be used in a | |||
closed network. | closed network. | |||
Relay Peer: A type of publicly reachable peer that can receive | Relay Peer: A type of publicly reachable peer that can receive | |||
unsolicited messages from all other peers in the overlay and | unsolicited messages from all other peers in the overlay and | |||
forward the responses from destination peers towards the sender of | forward the responses from destination peers towards the sender of | |||
skipping to change at page 4, line 21 | skipping to change at page 4, line 18 | |||
responses to P2PSIP requests are sent by the destination peer to a | responses to P2PSIP requests are sent by the destination peer to a | |||
relay peer transport address who will forward the responses | relay peer transport address who will forward the responses | |||
towards the sending peer. For simplicity, the abbreviation RPR is | towards the sending peer. For simplicity, the abbreviation RPR is | |||
used instead in the rest of the document. | used instead in the rest of the document. | |||
Symmetric Recursive Routing (SRR): refers to a routing mode in | Symmetric Recursive Routing (SRR): refers to a routing mode in | |||
which responses follow the reverse path of the request to get to | which responses follow the reverse path of the request to get to | |||
the sending peer. For simplicity, the abbreviation SRR is used | the sending peer. For simplicity, the abbreviation SRR is used | |||
instead in the rest of the document. | instead in the rest of the document. | |||
Direct Response Routing (DRR): refers to a routing mode in which | ||||
responses to P2PSIP requests are returned to the sending peer | ||||
directly from the destination peer based on the sending peer's own | ||||
local transport address(es). For simplicity, the abbreviation DRR | ||||
is used instead in the rest of the document. | ||||
3. Overview | 3. Overview | |||
RELOAD is expected to work under a great number of application | RELOAD is expected to work under a great number of application | |||
scenarios. The situations where RELOAD is to be deployed differ | scenarios. The situations where RELOAD is to be deployed differ | |||
greatly. For instance, some deployments are global, such as a Skype- | greatly. For instance, some deployments are global, such as a Skype- | |||
like system intended to provide public service, while others run in | like system intended to provide public service, while others run in | |||
closed networks of small scale. SRR works in any situation, but RPR | closed networks of small scale. SRR works in any situation, but RPR | |||
may work better in some specific scenarios. | may work better in some specific scenarios. | |||
3.1. RPR | 3.1. RPR | |||
skipping to change at page 4, line 49 | skipping to change at page 5, line 5 | |||
If peer A knows it is behind a NAT or NATs, and knows one or more | If peer A knows it is behind a NAT or NATs, and knows one or more | |||
relay peers with whom they have a prior connections, peer A can try | relay peers with whom they have a prior connections, peer A can try | |||
RPR. Assume A is associated with relay peer R. When sending the | RPR. Assume A is associated with relay peer R. When sending the | |||
request, peer A includes information describing peer R transport | request, peer A includes information describing peer R transport | |||
address in the request. When peer X receives the request, peer X | address in the request. When peer X receives the request, peer X | |||
sends the response to peer R, which forwards it directly to Peer A on | sends the response to peer R, which forwards it directly to Peer A on | |||
the existing connection. Figure 1 illustrates RPR. Note that RPR | the existing connection. Figure 1 illustrates RPR. Note that RPR | |||
also allows a shorter route for responses compared to SRR, which | also allows a shorter route for responses compared to SRR, which | |||
means less overhead on intermediate peers. Establishing a connection | means less overhead on intermediate peers. Establishing a connection | |||
to the relay with TLS requires multiple round trips. Please refer to | to the relay with TLS requires multiple round trips. Please refer to | |||
Section 5 for cost comparison between SRR and RPR. | Appendix B for cost comparison between SRR and RPR. | |||
A B C D X R | A B C D X R | |||
| Request | | | | | | | Request | | | | | | |||
|----------->| | | | | | |----------->| | | | | | |||
| | Request | | | | | | | Request | | | | | |||
| |----------->| | | | | | |----------->| | | | | |||
| | | Request | | | | | | | Request | | | | |||
| | |----------->| | | | | | |----------->| | | | |||
| | | | Request | | | | | | | Request | | | |||
| | | |----------->| | | | | | |----------->| | | |||
skipping to change at page 6, line 28 | skipping to change at page 6, line 31 | |||
4.1. How RPR works | 4.1. How RPR works | |||
Peers using RPR MUST maintain a connection with their relay peer(s). | Peers using RPR MUST maintain a connection with their relay peer(s). | |||
This can be done in the same way as establishing a neighbor | This can be done in the same way as establishing a neighbor | |||
connection between peers by using the Attach method. | connection between peers by using the Attach method. | |||
A requirement for RPR is for the source peer to convey their relay | A requirement for RPR is for the source peer to convey their relay | |||
peer (or peers) transport address in the request, so the destination | peer (or peers) transport address in the request, so the destination | |||
peer knows where the relay peer are and send the response to a relay | peer knows where the relay peer are and send the response to a relay | |||
peer first. The request SHOULD include also the requesting peer | peer first. The request MUST include also the requesting peer node | |||
information enabling the relay peer to route the response back to the | ID or IP address enabling the relay peer to route the response back | |||
right peer. | to the right peer. | |||
Note that being a relay peer does not require that the relay peer has | Note that being a relay peer does not require that the relay peer has | |||
more functionality than an ordinary peer. As discussed later, relay | more functionality than an ordinary peer. As discussed later, relay | |||
peers comply with the same procedure as an ordinary peer to forward | peers comply with the same procedure as an ordinary peer to forward | |||
messages. The only difference is that there may be a larger traffic | messages. The only difference is that there may be a larger traffic | |||
burden on relay peers. Relay peers can decide whether to accept a | burden on relay peers. Relay peers can decide whether to accept a | |||
new connection based on their current burden. | new connection based on their current burden. | |||
4.2. How SRR and RPR work together | 4.2. How SRR and RPR work together | |||
RPR is not intended to replace SRR. It is better to use these two | RPR is not intended to replace SRR. It is better to use these two | |||
modes together to adapt to each peer's specific situation. Note that | modes together to adapt to each peer's specific situation. Note that | |||
the informative suggestions on how to transition between SRR and RPR | the informative suggestions on how to transition between SRR and RPR | |||
are the same with that of DRR. Please refer to DRR document [I-D | are the same with that of DRR. Please refer to Section 4.2 of DRR | |||
.ietf-p2psip-drr] for more details. If a relay peer is provided by | document [I-D.ietf-p2psip-drr] for more details. If a relay peer is | |||
the service provider, peers MAY prefer RPR over SRR. Otherwise, | provided by the service provider, peers SHOULD prefer RPR over SRR. | |||
using RPR SHOULD be discouraged in the open Internet or if the | Otherwise, using RPR SHOULD not be used in the open Internet or if | |||
administrator does not feel he have enough information about the | the administrator does not feel he have enough information about the | |||
overlay. A new overlay configuration element specifying the usage of | overlay. A new overlay configuration element specifying the usage of | |||
DRR is defined in Section 7. | DRR is defined in Section 6. | |||
5. Comparison on cost of SRR and RPR | ||||
The major advantage of the use of RPR is that it reduces the number | ||||
of intermediate peers traversed by the response. By doing that, it | ||||
reduces the load on those peers' resources like processing and | ||||
communication bandwidth. | ||||
5.1. Closed or managed networks | ||||
As described in Section 3, many P2P systems run in a closed or | ||||
managed environment (e.g., carrier networks) so that network | ||||
administrators would know that they could safely use RPR. | ||||
The number of hops for a response in SRR and RPR are listed in the | ||||
following table. Note that the same illustrative settings can be | ||||
found in DRR document [I-D.ietf-p2psip-drr]. | ||||
Mode | Success | No. of Hops | No. of Msgs | ||||
---------------------------------------------------- | ||||
SRR | Yes | log(N) | log(N) | ||||
RPR | Yes | 2 | 2 | ||||
RPR(DTLS) | Yes | 2 | 7+2 | ||||
Table 1. Comparison of SRR and RPR in closed networks | ||||
From the above comparison, it is clear that: | ||||
1) In most cases when N > 4 (2^2), RPR uses fewer hops than SRR. | ||||
Using a shorter route means less overhead and resource usage on | ||||
intermediate peers, which is an important consideration for adopting | ||||
RPR in the cases where the resources such as CPU and bandwidth are | ||||
limited, e.g., the case of mobile, wireless networks. | ||||
2) In the cases when N > 512 (2^9), RPR also uses fewer messages than | ||||
SRR. | ||||
3) In the cases when N < 512, RPR uses more messages than SRR (but | ||||
still uses fewer hops than SRR). So the consideration on whether | ||||
using RPR or SRR depends on other factors like using less resources | ||||
(bandwidth and processing) from the intermediate peers. Section 4 | ||||
provides use cases where RPR has better chance to work or where the | ||||
intermediary resources considerations are important. | ||||
5.2. Open networks | ||||
In open networks (e.g., Internet) where RPR is not guaranteed to | ||||
work, RPR can fall back to SRR if it fails after trial, as described | ||||
in Section 4. Based on the same settings of Section 5.1, the number | ||||
of hops, number of messages for a response in SRR and RPR are listed | ||||
in the following table. | ||||
Mode | Success | No. of Hops | No. of Msgs | ||||
----------------------------------------------------------- | ||||
SRR | Yes | log(N) | log(N) | ||||
RPR | Yes | 2 | 2 | ||||
| Fail&Fall back to SRR | 2+log(N)| 2+log(N) | ||||
RPR(DTLS) | Yes | 2 | 7+2 | ||||
| Fail&Fall back to SRR | 2+log(N)| 9+log(N) | ||||
Table 2. Comparison of SRR and RPR in open networks | ||||
From the above comparison, it can be observed that trying to first | ||||
use RPR could still provide an overall number of hops lower than | ||||
directly using SRR. The detailed analysis is same as DRR case and | ||||
can be found in DRR document [I-D.ietf-p2psip-drr]. | ||||
6. RPR extensions to RELOAD | 5. RPR extensions to RELOAD | |||
Adding support for RPR requires extensions to the current RELOAD | Adding support for RPR requires extensions to the current RELOAD | |||
protocol. In this section, we define the extensions required to the | protocol. In this section, we define the extensions required to the | |||
protocol, including extensions to message structure and to message | protocol, including extensions to message structure and to message | |||
processing. | processing. | |||
6.1. Basic requirements | 5.1. Basic requirements | |||
All peers MUST be able to process requests for routing in SRR, and | All peers MUST be able to process requests for routing in SRR, and | |||
MAY support RPR routing requests. | MAY support RPR routing requests. | |||
6.2. Modification to RELOAD message structure | 5.2. Modification to RELOAD message structure | |||
RELOAD provides an extensible framework to accommodate future | RELOAD provides an extensible framework to accommodate future | |||
extensions. In this section, we define a ForwardingOption structure | extensions. In this section, we define an RPR routing option to the | |||
and present a state-keeping flag to support RPR mode. | extensive routing mode specified in [DRR]. The state-keeping flag | |||
from [DRR] is needed to support RPR mode. | ||||
6.2.1. State-keeping flag | ||||
flag : 0x08 IGNORE-STATE-KEEPING | ||||
If IGNORE-STATE-KEEPING is set, any peer receiving this message and | ||||
which is not the destination of the message SHOULD forward the | ||||
message with the full via_list and SHOULD NOT maintain any internal | ||||
state. | ||||
6.2.2. Extensive routing mode | ||||
We first define a new type to define the new option, | 5.2.1. Extensive routing mode | |||
extensive_routing_mode: | ||||
The option value is illustrated as below, defining the | The new RouteMode value for RPR is defined below for the | |||
ExtensiveRoutingModeOption structure: | ExtensiveRoutingModeOption structure: | |||
enum {(0),DRR(1),RPR(2),(255)} RouteMode; | enum {(0),DRR(1),RPR(2),(255)} RouteMode; | |||
struct { | struct { | |||
RouteMode routemode; | RouteMode routemode; | |||
OverlayLinkType transport; | OverlayLinkType transport; | |||
IpAddressPort ipaddressport; | IpAddressPort ipaddressport; | |||
Destination destinations<1..2^8-1>; | Destination destinations<1..2^8-1>; | |||
} ExtensiveRoutingModeOption; | } ExtensiveRoutingModeOption; | |||
skipping to change at page 9, line 38 | skipping to change at page 8, line 9 | |||
deliver responses from the destination peer to the relay peer. | deliver responses from the destination peer to the relay peer. | |||
IpAddressPort: refers to the transport address that the destination | IpAddressPort: refers to the transport address that the destination | |||
peer should use to send the response to. This will be a relay peer | peer should use to send the response to. This will be a relay peer | |||
address for RPR. | address for RPR. | |||
Destination: refers to the relay peer itself. If the routing mode is | Destination: refers to the relay peer itself. If the routing mode is | |||
RPR, then the destination contains two destinations, which are the | RPR, then the destination contains two destinations, which are the | |||
relay peer's Node-ID and the sending peer's Node-ID. | relay peer's Node-ID and the sending peer's Node-ID. | |||
6.3. Creating a request | 5.3. Creating a request | |||
6.3.1. Creating a request for RPR | 5.3.1. Creating a request for RPR | |||
When using RPR for a transaction, the sending peer MUST set the | When using RPR for a transaction, the sending peer MUST set the | |||
IGNORE-STATE-KEEPING flag in the ForwardingHeader. Additionally, the | IGNORE-STATE-KEEPING flag in the ForwardingHeader. Additionally, the | |||
peer MUST construct and include a ForwardingOptions structure in the | peer MUST construct and include a ForwardingOptions structure in the | |||
ForwardingHeader. When constructing the ForwardingOption structure, | ForwardingHeader. When constructing the ForwardingOption structure, | |||
the fields MUST be set as follows: | the fields MUST be set as follows: | |||
1) The type MUST be set to extensive_routing_mode. | 1) The type MUST be set to extensive_routing_mode. | |||
2) The ExtensiveRoutingModeOption structure MUST be used for the | 2) The ExtensiveRoutingModeOption structure MUST be used for the | |||
skipping to change at page 10, line 21 | skipping to change at page 8, line 37 | |||
2.2) transport set as appropriate for the relay peer. | 2.2) transport set as appropriate for the relay peer. | |||
2.3) ipaddressport set to the transport address of the relay peer | 2.3) ipaddressport set to the transport address of the relay peer | |||
that the sender wishes the message to be relayed through. | that the sender wishes the message to be relayed through. | |||
2.4) destination structure MUST contain two values. The first MUST | 2.4) destination structure MUST contain two values. The first MUST | |||
be defined as type node and set with the values for the relay peer. | be defined as type node and set with the values for the relay peer. | |||
The second MUST be defined as type node and set with the sending | The second MUST be defined as type node and set with the sending | |||
peer's own values. | peer's own values. | |||
6.4. Request and response processing | 5.4. Request and response processing | |||
This section gives normative text for message processing after RPR is | This section gives normative text for message processing after RPR is | |||
introduced. Here, we only describe the additional procedures for | introduced. Here, we only describe the additional procedures for | |||
supporting RPR. Please refer to [I-D.ietf-p2psip-base] for RELOAD | supporting RPR. Please refer to [RFC6940] for RELOAD base | |||
base procedures. | procedures. | |||
6.4.1. Destination peer: receiving a request and sending a response | 5.4.1. Destination peer: receiving a request and sending a response | |||
When the destination peer receives a request, it will check the | When the destination peer receives a request, it will check the | |||
options in the forwarding header. If the destination peer can not | options in the forwarding header. If the destination peer can not | |||
understand extensive_routing_mode option in the request, it MUST | understand extensive_routing_mode option in the request, it MUST | |||
attempt using SRR to return an "Error_Unknown_Extension" response | attempt using SRR to return an "Error_Unknown_Extension" response | |||
(defined in Section 6.3.3.1 and Section 14.9 of [I-D.ietf-p2psip- | (defined in Section 6.3.3.1 and Section 14.9 of [RFC6940]) to the | |||
base]) to the sending peer. | sending peer. | |||
If the routing mode is RPR, the destination peer MUST construct a | If the routing mode is RPR, the destination peer MUST construct a | |||
destination_list for the response with two entries. The first MUST | destination_list for the response with two entries as defined in | |||
be set to the relay peer Node-ID from the option in the request and | [RFC6940]. The first MUST be set to the relay peer Node-ID from the | |||
the second MUST be the sending peer Node-ID from the option of the | option in the request and the second MUST be the sending peer Node-ID | |||
request. | from the option of the request. | |||
In the event that the routing mode is set to RPR and there are not | In the event that the routing mode is set to RPR and there are not | |||
exactly two destinations, the destination peer MUST try to send an | exactly two destinations, the destination peer MUST try to send an | |||
"Error_Unknown_Extension" response (defined in Section 6.3.3.1 and | "Error_Unknown_Extension" response (defined in Section 6.3.3.1 and | |||
Section 14.9 of [I-D.ietf-p2psip-base]) to the sending peer using | Section 14.9 of [RFC6940]) to the sending peer using SRR. | |||
SRR. | ||||
After the peer constructs the destination_list for the response, it | After the peer constructs the destination_list for the response, it | |||
sends the response to the transport address which is indicated in the | sends the response to the transport address which is indicated in the | |||
ipaddressport field in the option using the specific transport mode | ipaddressport field in the option using the specific transport mode | |||
in the Forwardingoption. If the destination peer receives a | in the Forwardingoption. If the destination peer receives a | |||
retransmit with SRR preference on the message it is trying to | retransmit with SRR preference on the message it is trying to | |||
response to now, the responding peer SHOULD abort the RPR response | response to now, the responding peer SHOULD abort the RPR response | |||
and use SRR. | and use SRR. | |||
6.4.2. Sending peer: receiving a response | 5.4.2. Sending peer: receiving a response | |||
Upon receiving a response, the peer follows the rules in [I-D.ietf- | Upon receiving a response, the peer follows the rules in [RFC6940]. | |||
p2psip-base]. If the sender used RPR and does not get a response | If the sender used RPR and does not get a response until the timeout, | |||
until the timeout, it MAY either resend the message using RPR but | it MAY either resend the message using RPR but with a different relay | |||
with a different relay peer (if available), or resend the message | peer (if available), or resend the message using SRR. | |||
using SRR. | ||||
6.4.3. Relay peer processing | 5.4.3. Relay peer processing | |||
Relay peers are designed to forward responses to peers who are not | Relay peers are designed to forward responses to peers who are not | |||
publicly reachable. For the routing of the response, this document | publicly reachable. For the routing of the response, this document | |||
still uses the destination_list. The only difference from SRR is | still uses the destination_list. The only difference from SRR is | |||
that the destination_list is not the reverse of the via_list. | that the destination_list is not the reverse of the via_list. | |||
Instead, it is constructed from the forwarding option as described | Instead, it is constructed from the forwarding option as described | |||
below. | below. | |||
When a relay peer receives a response, it MUST follow the rules in | When a relay peer receives a response, it MUST follow the rules in | |||
[I-D.ietf-p2psip-base]. It receives the response, validates the | [RFC6940]. It receives the response, validates the message, re- | |||
message, re-adjust the destination_list and forward the response to | adjust the destination_list and forward the response to the next hop | |||
the next hop in the destination_list based on the connection table. | in the destination_list based on the connection table. There is no | |||
There is no added requirement for relay peer. | added requirement for relay peer. | |||
7. Overlay configuration extension | 6. Overlay configuration extension | |||
This document uses the new RELOAD overlay configuration element, | This document uses the new RELOAD overlay configuration element, | |||
"route-mode", inside each "configuration" element, as defined in | "route-mode", inside each "configuration" element, as defined in | |||
Section 7 of the DRR document [I-D.ietf-p2psip-drr]. | Section 6 of the DRR document [I-D.ietf-p2psip-drr]. The route mode | |||
MUST be "RPR". | ||||
8. Discovery of relay peers | 7. Discovery of relay peers | |||
There are several ways to distribute the information about relay | There are several ways to distribute the information about relay | |||
peers throughout the overlay. P2P network providers can deploy some | peers throughout the overlay. P2P network providers can deploy some | |||
relay peers and advertise them in the configuration file. With the | relay peers and advertise them in the configuration file. With the | |||
configuration file at hand, peers can get relay peers to try RPR. | configuration file at hand, peers can get relay peers to try RPR. | |||
Another way is to consider relay peer as a service and then some | Another way is to consider relay peer as a service and then some | |||
service advertisement and discovery mechanism can also be used for | service advertisement and discovery mechanism can also be used for | |||
discovering relay peers, for example, using the same mechanism as | discovering relay peers, for example, using the same mechanism as | |||
used in TURN server discovery in base RELOAD [I-D.ietf-p2psip-base]. | used in TURN server discovery in base RELOAD [RFC6940]. Another | |||
Another option is to let a peer advertise its capability to be a | option is to let a peer advertise its capability to be a relay in the | |||
relay in the response to ATTACH or JOIN. | response to ATTACH or JOIN. | |||
9. Security Considerations | 8. Security Considerations | |||
The normative security recommendations of Section 13 of base draft | ||||
[I-D.ietf-p2psip-base] are applicable to this document. As a routing | ||||
alternative, the security part of RPR conforms to Section 13.6 of the | ||||
base draft which describes routing security. RPR behaves like a DRR | ||||
requesting node towards the destination node. The RPR relay node is | ||||
not an arbitrary node but SHOULD be a trusted one (managed network, | ||||
bootstrap nodes or configured relay) which will make it less of a | ||||
risk as outlined in section13 of the based draft. | ||||
10. IANA Considerations | The normative security recommendations of Section 13 of base draft | |||
[RFC6940] are applicable to this document. As a routing alternative, | ||||
the security part of RPR conforms to Section 13.6 of the base draft | ||||
which describes routing security. RPR behaves like a DRR requesting | ||||
node towards the destination node. The RPR relay node may be not an | ||||
arbitrary node, for example, managed network, bootstrap nodes or | ||||
configured relay which will make it less of a risk as outlined in | ||||
Section 13 of the based draft [RFC6940]. | ||||
10.1. A new RELOAD Forwarding Option | In order to address possible DOS attacks, the relay SHOULD also limit | |||
the number of maximum connections, this is required also to reduce to | ||||
load on the relay as explained in Section 4.1. | ||||
A new RELOAD Forwarding Option type is added to the Forwarding Option | 9. IANA Considerations | |||
Registry defined in [I-D.ietf-p2psip-base]. | ||||
Type: 0x02 - extensive_routing_mode | No IANA update. | |||
11. Acknowledgments | 10. Acknowledgments | |||
David Bryan has helped extensively with this document, and helped | David Bryan has helped extensively with this document, and helped | |||
provide some of the text, analysis, and ideas contained here. The | provide some of the text, analysis, and ideas contained here. The | |||
authors would like to thank Ted Hardie, Narayanan Vidya, Dondeti | authors would like to thank Ted Hardie, Narayanan Vidya, Dondeti | |||
Lakshminath, Bruce Lowekamp, Stephane Bryant, Marc Petit-Huguenin and | Lakshminath, Bruce Lowekamp, Stephane Bryant, Marc Petit-Huguenin and | |||
Carlos Jesus Bernardos Cano for their constructive comments. | Carlos Jesus Bernardos Cano for their constructive comments. | |||
12. References | 11. References | |||
12.1. Normative References | 11.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC2119, March 1997. | Requirement Levels", BCP 14, RFC2119, March 1997. | |||
[I-D.ietf-p2psip-base] Jennings, C., Lowekamp, B., Rescorla, E., | [RFC6940] Jennings, C., Lowekamp, B., Rescorla, E., Baset, S., and H. | |||
Baset, S., and H. Schulzrinne, "REsource LOcation And Discovery | Schulzrinne, "REsource LOcation And Discovery (RELOAD) Base | |||
(RELOAD) Base Protocol", draft-ietf-p2psip-base-26 (work in | Protocol", RFC6940, January 2014. | |||
progress), February 2013. | ||||
[I-D.ietf-p2psip-drr] Zong, N., Jiang, X., Even, R. and Zhang, Y., | [I-D.ietf-p2psip-drr] Zong, N., Jiang, X., Even, R. and Zhang, Y., | |||
"An extension to RELOAD to support Direct Response Routing", draft- | "An extension to RELOAD to support Direct Response Routing", draft- | |||
ietf-p2psip-drr-11 (work in progress), October 2013. | ietf-p2psip-drr-12 (work in progress), February 2014. | |||
12.2. Informative References | 11.2. Informative References | |||
[RFC5780] MacDonald, D. and B. Lowekamp, "NAT Behavior Discovery | [RFC5780] MacDonald, D. and B. Lowekamp, "NAT Behavior Discovery | |||
Using STUN", RFC5780, May 2010. | Using STUN", RFC5780, May 2010. | |||
[RFC3424] Daigle, L., "IAB Considerations for UNilateral Self-Address | [RFC3424] Daigle, L., "IAB Considerations for UNilateral Self-Address | |||
Fixing (UNSAF) Across Network Address Translation", RFC3424, November | Fixing (UNSAF) Across Network Address Translation", RFC3424, November | |||
2002. | 2002. | |||
13. References | ||||
Appendix A. Optional methods to investigate peer connectivity | Appendix A. Optional methods to investigate peer connectivity | |||
This section is for informational purposes only for providing some | This section is for informational purposes only for providing some | |||
mechanisms that can be used when the configuration information does | mechanisms that can be used when the configuration information does | |||
not specify if RPR can be used. It summarizes some methods which can | not specify if RPR can be used. It summarizes some methods which can | |||
be used for a peer to determine its own network location compared | be used for a peer to determine its own network location compared | |||
with NAT. These methods may help a peer to decide which routing mode | with NAT. These methods may help a peer to decide which routing mode | |||
it may wish to try. Note that there is no foolproof way to determine | it may wish to try. Note that there is no foolproof way to determine | |||
if a peer is publically reachable, other than via out-of-band | if a peer is publically reachable, other than via out-of-band | |||
mechanisms. This document addresses the UNSAF [RFC3424] concerns by | mechanisms. This document addresses the UNSAF [RFC3424] concerns by | |||
specifying a fallback plan to SRR [p2psip-base-draft]. SRR is not an | specifying a fallback plan to SRR [RFC6940]. SRR is not an UNSAF | |||
UNSAF mechanism. The document does not define any new UNSAF | mechanism. The document does not define any new UNSAF mechanisms. | |||
mechanisms. | ||||
For RPR to function correctly, a peer may attempt to determine | For RPR to function correctly, a peer may attempt to determine | |||
whether it is publicly reachable. If it is not, RPR may be chosen to | whether it is publicly reachable. If it is not, RPR may be chosen to | |||
route the response with the help from relay peers, or the peers | route the response with the help from relay peers, or the peers | |||
should fall back to SRR. NATs and firewalls are two major | should fall back to SRR. NATs and firewalls are two major | |||
contributors preventing RPR from functioning properly. There are a | contributors preventing RPR from functioning properly. There are a | |||
number of techniques by which a peer can get its reflexive address on | number of techniques by which a peer can get its reflexive address on | |||
the public side of the NAT. After obtaining the reflexive address, a | the public side of the NAT. After obtaining the reflexive address, a | |||
peer can perform further tests to learn whether the reflexive address | peer can perform further tests to learn whether the reflexive address | |||
is publicly reachable. If the address appears to be publicly | is publicly reachable. If the address appears to be publicly | |||
skipping to change at page 14, line 5 | skipping to change at page 12, line 13 | |||
peers in the overlay. P2P routing algorithms can easily deliver a | peers in the overlay. P2P routing algorithms can easily deliver a | |||
request from a sending peer to a peer with whom the sending peer has | request from a sending peer to a peer with whom the sending peer has | |||
no direct connection. This makes it easy for a peer to ask other | no direct connection. This makes it easy for a peer to ask other | |||
peers to send unsolicited messages back to the requester. | peers to send unsolicited messages back to the requester. | |||
The approaches for a peer to get the addresses needed for the further | The approaches for a peer to get the addresses needed for the further | |||
tests, as well as the test for learning whether a peer may be | tests, as well as the test for learning whether a peer may be | |||
publicly reachable is same as the DRR case. Please refer to DRR | publicly reachable is same as the DRR case. Please refer to DRR | |||
document [I-D.ietf-p2psip-drr] for more details. | document [I-D.ietf-p2psip-drr] for more details. | |||
Appendix B. Comparison on cost of SRR and RPR | ||||
The major advantage of the use of RPR is that it reduces the number | ||||
of intermediate peers traversed by the response. By doing that, it | ||||
reduces the load on those peers' resources like processing and | ||||
communication bandwidth. | ||||
B.1. Closed or managed networks | ||||
As described in Section 3, many P2P systems run in a closed or | ||||
managed environment (e.g., carrier networks) so that network | ||||
administrators would know that they could safely use RPR. | ||||
The number of hops for a response in SRR and RPR are listed in the | ||||
following table. Note that the same illustrative settings can be | ||||
found in DRR document [I-D.ietf-p2psip-drr]. | ||||
Mode | Success | No. of Hops | No. of Msgs | ||||
---------------------------------------------------- | ||||
SRR | Yes | log(N) | log(N) | ||||
RPR | Yes | 2 | 2 | ||||
RPR(DTLS) | Yes | 2 | 7+2 | ||||
Table 1. Comparison of SRR and RPR in closed networks | ||||
From the above comparison, it is clear that: | ||||
1) In most cases when the number of peers N > 4 (2^2), RPR uses fewer | ||||
hops than SRR. Using a shorter route means less overhead and | ||||
resource usage on intermediate peers, which is an important | ||||
consideration for adopting RPR in the cases where the resources such | ||||
as CPU and bandwidth are limited, e.g., the case of mobile, wireless | ||||
networks. | ||||
2) In the cases when N > 512 (2^9), RPR also uses fewer messages than | ||||
SRR. | ||||
3) In the cases when N < 512, RPR uses more messages than SRR (but | ||||
still uses fewer hops than SRR). So the consideration on whether | ||||
using RPR or SRR depends on other factors like using less resources | ||||
(bandwidth and processing) from the intermediate peers. Section 4 | ||||
provides use cases where RPR has better chance to work or where the | ||||
intermediary resources considerations are important. | ||||
B.2. Open networks | ||||
In open networks (e.g., Internet) where RPR is not guaranteed to | ||||
work, RPR can fall back to SRR if it fails after trial, as described | ||||
in Section 4. Based on the same settings of Section B.1, the number | ||||
of hops, number of messages for a response in SRR and RPR are listed | ||||
in the following table. | ||||
Mode | Success | No. of Hops | No. of Msgs | ||||
----------------------------------------------------------- | ||||
SRR | Yes | log(N) | log(N) | ||||
RPR | Yes | 2 | 2 | ||||
| Fail&Fall back to SRR | 2+log(N)| 2+log(N) | ||||
RPR(DTLS) | Yes | 2 | 7+2 | ||||
| Fail&Fall back to SRR | 2+log(N)| 9+log(N) | ||||
Table 2. Comparison of SRR and RPR in open networks | ||||
From the above comparison, it can be observed that trying to first | ||||
use RPR could still provide an overall number of hops lower than | ||||
directly using SRR. The detailed analysis is same as DRR case and | ||||
can be found in DRR document [I-D.ietf-p2psip-drr]. | ||||
Authors' Addresses | Authors' Addresses | |||
Ning Zong (editor) | Ning Zong | |||
Huawei Technologies | Huawei Technologies | |||
Email: zongning@huawei.com | Email: zongning@huawei.com | |||
Xingfeng Jiang | Xingfeng Jiang | |||
Huawei Technologies | Huawei Technologies | |||
Email: jiang.x.f@huawei.com | Email: jiang.x.f@huawei.com | |||
Roni Even | Roni Even | |||
End of changes. 53 change blocks. | ||||
211 lines changed or deleted | 199 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |