draft-ietf-p2psip-service-discovery-03.txt   draft-ietf-p2psip-service-discovery-04.txt 
P2PSIP Working Group J. Maenpaa P2PSIP Working Group J. Maenpaa
Internet-Draft G. Camarillo Internet-Draft G. Camarillo
Intended status: Standards Track Ericsson Intended status: Standards Track Ericsson
Expires: January 6, 2012 July 5, 2011 Expires: July 9, 2012 January 6, 2012
Service Discovery Usage for REsource LOcation And Discovery (RELOAD) Service Discovery Usage for REsource LOcation And Discovery (RELOAD)
draft-ietf-p2psip-service-discovery-03.txt draft-ietf-p2psip-service-discovery-04.txt
Abstract Abstract
REsource LOcation and Discovery (RELOAD) does not define a generic REsource LOcation and Discovery (RELOAD) does not define a generic
service discovery mechanism as part of the base protocol. This service discovery mechanism as part of the base protocol. This
document defines how the Recursive Distributed Rendezvous (ReDiR) document defines how the Recursive Distributed Rendezvous (ReDiR)
service discovery mechanism used in OpenDHT can be applied to RELOAD service discovery mechanism used in OpenDHT can be applied to RELOAD
overlays to provide a generic service discovery mechanism. overlays to provide a generic service discovery mechanism.
Status of this Memo Status of this Memo
skipping to change at page 1, line 34 skipping to change at page 1, line 34
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 January 6, 2012. This Internet-Draft will expire on July 9, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2012 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
skipping to change at page 2, line 22 skipping to change at page 2, line 22
4.2. Selecting the Starting Level . . . . . . . . . . . . . . . 7 4.2. Selecting the Starting Level . . . . . . . . . . . . . . . 7
4.3. Service Provider Registration . . . . . . . . . . . . . . 7 4.3. Service Provider Registration . . . . . . . . . . . . . . 7
4.4. Refreshing Registrations . . . . . . . . . . . . . . . . . 8 4.4. Refreshing Registrations . . . . . . . . . . . . . . . . . 8
4.5. Service Lookups . . . . . . . . . . . . . . . . . . . . . 8 4.5. Service Lookups . . . . . . . . . . . . . . . . . . . . . 8
4.6. Removing Registrations . . . . . . . . . . . . . . . . . . 9 4.6. Removing Registrations . . . . . . . . . . . . . . . . . . 9
5. Access Control Rules . . . . . . . . . . . . . . . . . . . . . 9 5. Access Control Rules . . . . . . . . . . . . . . . . . . . . . 9
6. REDIR Kind Definition . . . . . . . . . . . . . . . . . . . . 10 6. REDIR Kind Definition . . . . . . . . . . . . . . . . . . . . 10
7. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 7. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8. Overlay Configuration Document Extension . . . . . . . . . . . 12 8. Overlay Configuration Document Extension . . . . . . . . . . . 12
9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 9. Security Considerations . . . . . . . . . . . . . . . . . . . 12
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
10.1. Access Control Policies . . . . . . . . . . . . . . . . . 12 10.1. Access Control Policies . . . . . . . . . . . . . . . . . 13
10.2. Data Kind-ID . . . . . . . . . . . . . . . . . . . . . . . 12 10.2. Data Kind-ID . . . . . . . . . . . . . . . . . . . . . . . 13
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.3. ReDiR Namespaces . . . . . . . . . . . . . . . . . . . . . 13
11.1. Normative References . . . . . . . . . . . . . . . . . . . 13 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13
11.2. Informative References . . . . . . . . . . . . . . . . . . 13 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13 12.1. Normative References . . . . . . . . . . . . . . . . . . . 14
12.2. Informative References . . . . . . . . . . . . . . . . . . 14
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 14
1. Introduction 1. Introduction
REsource LOcation And Discovery (RELOAD) [I-D.ietf-p2psip-base] is a REsource LOcation And Discovery (RELOAD) [I-D.ietf-p2psip-base] is a
peer-to-peer signaling protocol that can be used to maintain an peer-to-peer signaling protocol that can be used to maintain an
overlay network, and to store data in and retrieve data from the overlay network, and to store data in and retrieve data from the
overlay. Although RELOAD defines a Traversal Using Relays around overlay. Although RELOAD defines a Traversal Using Relays around
Network Address Translation (TURN) specific service discovery Network Address Translation (TURN) specific service discovery
mechanism, it does not define a generic service discovery mechanism mechanism, it does not define a generic service discovery mechanism
as part of the base protocol. This document defines how the as part of the base protocol. This document defines how the
skipping to change at page 3, line 52 skipping to change at page 3, line 52
ReDiR implements service discovery by building a tree structure of ReDiR implements service discovery by building a tree structure of
the nodes that provide a particular service and embedding it into the the nodes that provide a particular service and embedding it into the
RELOAD Overlay Instance using RELOAD Store and Fetch requests. Each RELOAD Overlay Instance using RELOAD Store and Fetch requests. Each
service provided in the Overlay Instance has its own tree. The nodes service provided in the Overlay Instance has its own tree. The nodes
in a ReDiR tree contain pointers to service providers. During in a ReDiR tree contain pointers to service providers. During
service discovery, a peer wishing to use a given service fetches service discovery, a peer wishing to use a given service fetches
ReDiR tree nodes one-by-one from the RELOAD Overlay Instance until it ReDiR tree nodes one-by-one from the RELOAD Overlay Instance until it
finds a service provider responsible for its Node-ID. It has been finds a service provider responsible for its Node-ID. It has been
proved that ReDiR can find a service provider using only a constant proved that ReDiR can find a service provider using only a constant
number of fetch operations [Redir]. number of Fetch operations [Redir].
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].
This document uses the terminology and definitions from the Concepts This document uses the terminology and definitions from the Concepts
and Terminology for Peer to Peer SIP [I-D.ietf-p2psip-concepts] and Terminology for Peer to Peer SIP [I-D.ietf-p2psip-concepts]
draft. draft.
skipping to change at page 4, line 31 skipping to change at page 4, line 31
H(x): Hash calculated over x. H(x): Hash calculated over x.
I(l,k): The unique interval at level l in the ReDiR tree that I(l,k): The unique interval at level l in the ReDiR tree that
encloses key k. encloses key k.
n.id: Node-ID of node n. n.id: Node-ID of node n.
Namespace: An arbitrary identifier that identifies a service Namespace: An arbitrary identifier that identifies a service
provided in the RELOAD Overlay Instance. An example of a provided in the RELOAD Overlay Instance. An example of a
namespace is "voice-mail". namespace is "voice-mail". The namespace is an UTF-8 text string.
numBitsInNodeId: Number of bits in a Node-ID. numBitsInNodeId: Number of bits in a Node-ID.
ReDiR tree: A tree structure of the nodes that provide a particular ReDiR tree: A tree structure of the nodes that provide a particular
service. The nodes embed the ReDiR tree into the RELOAD Overlay service. The nodes embed the ReDiR tree into the RELOAD Overlay
Instance using RELOAD Store and Fetch requests. Instance using RELOAD Store and Fetch requests.
Successor: The successor of identifier k in namespace ns is the node Successor: The successor of identifier k in namespace ns is the node
that has joined ns whose identifier most immediately follows k. that has joined ns whose identifier most immediately follows k.
skipping to change at page 5, line 7 skipping to change at page 5, line 7
Recursive Distributed Rendezvous (ReDiR) [Redir] does not require new Recursive Distributed Rendezvous (ReDiR) [Redir] does not require new
functionality from the RELOAD base protocol. This is possible since functionality from the RELOAD base protocol. This is possible since
ReDiR interacts with the RELOAD overlay through a put/get API using ReDiR interacts with the RELOAD overlay through a put/get API using
RELOAD Store and Fetch requests. ReDiR builds a tree structure of RELOAD Store and Fetch requests. ReDiR builds a tree structure of
the nodes that provide a particular service and embeds it into the the nodes that provide a particular service and embeds it into the
RELOAD Overlay Instance using the Store and Fetch requests. ReDiR RELOAD Overlay Instance using the Store and Fetch requests. ReDiR
performs lookup in a logarithmic number of Fetch operations with high performs lookup in a logarithmic number of Fetch operations with high
probability. Further, if the tree's height is estimated based on probability. Further, if the tree's height is estimated based on
past lookups, the average lookup can be reduced to a constant number past lookups, the average lookup can be reduced to a constant number
of fetch operations assuming that Node-IDs are distributed uniformly of Fetch operations assuming that Node-IDs are distributed uniformly
at random. at random.
In ReDiR, each service provided in the overlay is identified by an In ReDiR, each service provided in the overlay is identified by an
arbitrary identifier, called its namespace. All service providers arbitrary identifier, called its namespace. All service providers
join a namespace and peers wishing to use a service perform lookups join a namespace and peers wishing to use a service perform lookups
within the namespace of the service. A ReDiR lookup for identifier k within the namespace of the service. A ReDiR lookup for identifier k
in namespace ns returns a node that has joined ns whose identifier is in namespace ns returns a node that has joined ns whose identifier is
the closest successor of k. the closest successor of k.
Each tree node in the ReDiR tree contains a list of Node-IDs of peers Each tree node in the ReDiR tree contains a list of Node-IDs of peers
skipping to change at page 5, line 33 skipping to change at page 5, line 33
the tree, there are at most branching-factor^i nodes. The nodes at the tree, there are at most branching-factor^i nodes. The nodes at
any level are labeled from left to right, such that a pair (i,j) any level are labeled from left to right, such that a pair (i,j)
uniquely identifies the jth node from the left at level i. This tree uniquely identifies the jth node from the left at level i. This tree
is embedded into the RELOAD Overlay Instance node by node, by storing is embedded into the RELOAD Overlay Instance node by node, by storing
the values of node (i,j) at key H(namespace,i,j). As an example, the the values of node (i,j) at key H(namespace,i,j). As an example, the
root of the tree for a voice mail service is stored at H("voice- root of the tree for a voice mail service is stored at H("voice-
mail",0,0). Each node (i,j) in the tree is associated with mail",0,0). Each node (i,j) in the tree is associated with
branching-factor intervals of the DHT keyspace as follows: branching-factor intervals of the DHT keyspace as follows:
[2^numBitsInNodeID*b^(-i)*(j+(b'/b)), [2^numBitsInNodeID*b^(-i)*(j+(b'/b)),
2^numBitsInNodeID*b^(-i)*(j+((b'+1)/b))], for 0<=b'<b, 2^numBitsInNodeID*b^(-i)*(j+((b'+1)/b))), for 0<=b'<b,
where b is the branching-factor. where b is the branching-factor.
Figure 1 shows an example of a ReDiR tree with a branching factor of Figure 1 shows an example of a ReDiR tree with a branching factor of
2. Each node is shown as two horizontal lines separated by a 2. Each node is shown as two horizontal lines separated by a
vertical bar. The lines represent the two intervals each node is vertical bar. The lines represent the two intervals each node is
responsible for. At level 0, there is only one node, (0,0) responsible for. At level 0, there is only one node, (0,0)
responsible for two intervals that together cover the entire responsible for two intervals that together cover the entire
identifier space of the RELOAD Overlay Instance. At level 1, there identifier space of the RELOAD Overlay Instance. At level 1, there
are two nodes, (1,0) and (1,1), each of which is responsible for half are two nodes, (1,0) and (1,1), each of which is responsible for half
skipping to change at page 6, line 21 skipping to change at page 6, line 21
Level 3 _|_ _|_ _|_ _|_ _|_ _|_ _|_ _|_ Level 3 _|_ _|_ _|_ _|_ _|_ _|_ _|_ _|_
Figure 1: ReDiR tree Figure 1: ReDiR tree
4. Using ReDiR in a RELOAD Overlay Instance 4. Using ReDiR in a RELOAD Overlay Instance
4.1. Data Structure 4.1. Data Structure
ReDiR tree nodes are stored using the dictionary data model defined ReDiR tree nodes are stored using the dictionary data model defined
in RELOAD base [I-D.ietf-p2psip-base]. The data stored is a in RELOAD base [I-D.ietf-p2psip-base]. The data stored is a
RedirServiceProvider structure: RedirServiceProvider Resource Record:
struct {
NodeId serviceProvider;
opaque namespace<0..2^16-1>;
uint16 level;
uint16 node;
/* This type can be extended */
} RedirServiceProviderData; enum { none(0), (255) }
RedirServiceProviderExtType;
struct { struct {
uint16 length; RedirServiceProviderExtType type;
RedirServiceProviderData data; NodeId serviceProvider;
} RedirServiceProvider; opaque namespace<0..2^16-1>;
uint16 level;
The contents of the RedirServiceProvider structure are as follows: uint16 node;
uint16 length;
length select (type) {
The length of the rest of the structure. /* This type may be extended */
} extension;
data } RedirServiceProvider;
The service provider data.
The contents of the RedirServiceProviderData structure are as The contents of the RedirServiceProvider Resource Record are as
follows: follows:
type
The type of an extension to the RedirServiceProvider Resource
Record. Unknown types are allowed.
serviceProvider serviceProvider
The Node-ID of a service provider. The Node-ID of a service provider.
namespace namespace
An opaque string containing the namespace. An opaque string containing the namespace.
level level
The level in the ReDiR tree. The level in the ReDiR tree.
node node
The position of the node storing this RedirServiceProvider record The position of the node storing this RedirServiceProvider record
at the current level in the ReDiR tree. at the current level in the ReDiR tree.
The RedirServiceProviderData structure can be extended to include for length
instance service or service provider specific information. The length of the rest of the Resource Record.
extension
An extension value. The RedirServiceProvider Resource Record can
be extended to include for instance service or service provider
specific information.
4.2. Selecting the Starting Level 4.2. Selecting the Starting Level
Before registering as a service provider or performing a service Before registering as a service provider or performing a service
lookup, a peer needs to determine the starting level Lstart for the lookup, a peer needs to determine the starting level Lstart for the
registration or lookup operation in the ReDiR tree. It is registration or lookup operation in the ReDiR tree. It is
RECOMMENDED that Lstart is initially set to 2. In subsequent RECOMMENDED that Lstart is initially set to 2. In subsequent
registrations, Lstart MUST be set to the lowest level at which registrations, Lstart MUST be set to the lowest level at which
registration last completed. registration last completed.
skipping to change at page 7, line 43 skipping to change at page 8, line 4
4.3. Service Provider Registration 4.3. Service Provider Registration
A node MUST use the following procedure to register as a service A node MUST use the following procedure to register as a service
provider in the RELOAD Overlay Instance: provider in the RELOAD Overlay Instance:
1. A node n with Node-ID n.id wishing to register as a service 1. A node n with Node-ID n.id wishing to register as a service
provider starts from level Lstart (see Section 4.2 for the provider starts from level Lstart (see Section 4.2 for the
details on selecting the starting level). Therefore, node n sets details on selecting the starting level). Therefore, node n sets
level=Lstart. level=Lstart.
2. Node n MUST send a RELOAD Fetch request to fetch the contents of 2. Node n MUST send a RELOAD Fetch request to fetch the contents of
the tree node associated with I(level,n.id). An interval I(l,k) the tree node associated with I(level,n.id). An interval I(l,k)
is defined as the unique interval at level l in the ReDiR tree is defined as the unique interval at level l in the ReDiR tree
that encloses key k. The fetch MUST be a wildcard fetch. that encloses key k. The fetch MUST be a wildcard fetch.
3. Node n MUST send a RELOAD Store request to add its 3. Node n MUST send a RELOAD Store request to add its
RedirServiceProvider entry to the dictionary stored in the tree RedirServiceProvider entry to the dictionary stored in the tree
node associated with I(level,n.id) node associated with I(level,n.id)
4. If node n's Node-ID is the numerically lowest or highest among 4. If node n's Node-ID is the numerically lowest or highest among
the Node-IDs stored in the tree node associated with the Node-IDs stored in the tree node associated with
I(Lstart,n.id), node n MUST continue up the tree towards the root I(Lstart,n.id), node n MUST continue up the tree towards the root
(level 0), repeating steps 2 and 3. Node n MUST continue this (level 0), repeating steps 2 and 3. Node n MUST continue this
until it reaches either the root or a level at which n.id is not until it reaches either the root or a level at which n.id is not
the lowest or highest Node-ID in the interval I(level,n.id). the lowest or highest Node-ID in the interval I(level,n.id).
5. Node n MUST also walk down the tree through tree nodes associated 5. Node n MUST also walk down the tree through tree nodes associated
with the intervals I(Lstart,n.id),I(Lstart+1,n.id),..., at each with the intervals I(Lstart,n.id),I(Lstart+1,n.id),..., at each
step fetching the current contents of the tree node, and storing step fetching the current contents of the tree node, and storing
its redirServiceProvider record if n.id is the lowest or highest its RedirServiceProvider record if n.id is the lowest or highest
Node-ID in the interval. Node n MUST end this downward walk when Node-ID in the interval. Node n MUST end this downward walk when
it reaches a level at which it is the only service provider in it reaches a level at which it is the only service provider in
the interval. the interval.
Note that above, when we refer to 'the tree node associated with Note that above, when we refer to 'the tree node associated with
I(l,k)', we mean the entire tree node (that is, all the intervals I(l,k)', we mean the entire tree node (that is, all the intervals
within the tree node) responsible for interval I(l,k). In contrast, within the tree node) responsible for interval I(l,k). In contrast,
I(l,k) refers to a specific interval within a tree node. I(l,k) refers to a specific interval within a tree node.
4.4. Refreshing Registrations 4.4. Refreshing Registrations
All state in the ReDiR tree is soft. If an entry (Node-ID) is not All state in the ReDiR tree is soft. Therefore, a service provider
refreshed for refresh-period seconds, it MUST be dropped from the needs to periodically repeat the registration process to refresh its
dictionary by the peer storing the tree node. refresh-period is a new RedirServiceProvider Resource Record. If a record expires, it MUST
element in the RELOAD overlay configuration document (see Section 8). be dropped from the dictionary by the peer storing the tree node.
Every service provider MUST repeat the entire registration process Deciding an appropriate lifetime for the RedirServiceProvider
periodically until it leaves the RELOAD Overlay Instance. Resource Records is up to each service provider. Every service
provider MUST repeat the entire registration process periodically
until it leaves the RELOAD Overlay Instance.
Note that no new mechanisms are needed to keep track of the remaining Note that no new mechanisms are needed to keep track of the remaining
lifetime of RedirServiceProvider records. The 'storage_time' and lifetime of RedirServiceProvider records. The 'storage_time' and
'lifetime' fields of RELOAD's StoredData structure can be used for 'lifetime' fields of RELOAD's StoredData structure can be used for
this purpose in the usual way. this purpose in the usual way.
4.5. Service Lookups 4.5. Service Lookups
The purpose of a service lookup on identifier k in namespace ns is to The purpose of a service lookup on identifier k in namespace ns is to
find the node that has joined ns whose identifier most immediately find the node that has joined ns whose identifier most immediately
skipping to change at page 9, line 25 skipping to change at page 9, line 33
successor of n.id, and the lookup is done. successor of n.id, and the lookup is done.
Note that above, when we refer to 'the tree node associated with Note that above, when we refer to 'the tree node associated with
I(l,k)', we mean the entire tree node (that is, all the intervals I(l,k)', we mean the entire tree node (that is, all the intervals
within the tree node) responsible for interval I(l,k). In contrast, within the tree node) responsible for interval I(l,k). In contrast,
I(l,k) refers to a specific interval within a tree node. I(l,k) refers to a specific interval within a tree node.
4.6. Removing Registrations 4.6. Removing Registrations
Before leaving the RELOAD Overlay Instance, a service provider MUST Before leaving the RELOAD Overlay Instance, a service provider MUST
remove the redirServiceProvider records it has stored by storing remove the RedirServiceProvider records it has stored by storing
"nonexistent" values in their place, as described in exists=False values in their place, as described in
[I-D.ietf-p2psip-base]. [I-D.ietf-p2psip-base].
5. Access Control Rules 5. Access Control Rules
As specified in RELOAD base [I-D.ietf-p2psip-base], every kind which As specified in RELOAD base [I-D.ietf-p2psip-base], every kind which
is storable in an overlay must be associated with an access control is storable in an overlay must be associated with an access control
policy. This policy defines whether a request from a given node to policy. This policy defines whether a request from a given node to
operate on a given value should succeed or fail. Usages can define operate on a given value should succeed or fail. Usages can define
any access control rules they choose, including publicly writable any access control rules they choose, including publicly writable
values. values.
ReDiR requires an access control policy that allows multiple nodes in ReDiR requires an access control policy that allows multiple nodes in
the overlay read and write access to the ReDiR tree nodes stored in the overlay read and write access to the ReDiR tree nodes stored in
the overlay. Therefore, none of the access control policies the overlay. Therefore, none of the access control policies
specified in RELOAD base [I-D.ietf-p2psip-base] is sufficient. specified in RELOAD base [I-D.ietf-p2psip-base] is sufficient.
This document defines a new access control policy, called NODE-ID- This document defines a new access control policy, called NODE-ID-
MATCH. In this policy, a given value MUST be written and overwritten MATCH. In this policy, a given value MUST be written and overwritten
only if the the request is signed with a key associated with a only if the the request is signed with a key associated with a
certificate whose Node-ID is equal to the dictionary key. In certificate whose Node-ID is equal to the dictionary key. In
addition, the Node-ID MUST belong to one of the intervals associated addition, provided that exists=TRUE, the Node-ID MUST belong to one
with the tree node (the number of intervals each tree node has is of the intervals associated with the tree node (the number of
determined by the branching-factor parameter). Finally, intervals each tree node has is determined by the branching-factor
parameter). Finally, provided that exists=TRUE,
H(namespace,level,node), where namespace, level, and node are taken H(namespace,level,node), where namespace, level, and node are taken
from the RedirServiceProvider structure being stored, MUST be equal from the RedirServiceProvider structure being stored, MUST be equal
to the Resource-ID for the resource. The NODE-ID-MATCH policy may to the Resource-ID for the resource. The NODE-ID-MATCH policy may
only be used with dictionary types. only be used with dictionary types.
6. REDIR Kind Definition 6. REDIR Kind Definition
This section defines the REDIR kind. This section defines the REDIR kind.
Name Name
REDIR REDIR
Kind IDs Kind IDs
The Resource Name for the REDIR Kind-ID is created by The Resource Name for the REDIR Kind-ID is created by
concatenating three pieces of information: service name, level, concatenating three pieces of information: namespace, level, and
and node number. Service name is a string identifying a service, node number. Namespace is a string identifying a service, such as
such as "voice-mail". Level is an integer specifying a level in "voice-mail". Level is an integer specifying a level in the ReDiR
the ReDiR tree. Node number is an integer identifying a ReDiR tree. Node number is an integer identifying a ReDiR tree node at
tree node at a specific level. The data stored is a a specific level. The data stored is a RedirServiceProvider
RedirServiceProvider structure that was defined in Section 4.1. structure that was defined in Section 4.1.
Data Model Data Model
The data model for the REDIR Kind-ID is dictionary. The The data model for the REDIR Kind-ID is dictionary. The
dictionary key is the Node-ID of the service provider. dictionary key is the Node-ID of the service provider.
Access Control Access Control
The access control policy for the REDIR kind is the NODE-ID-MATCH The access control policy for the REDIR kind is the NODE-ID-MATCH
policy that was defined in Section 5. policy that was defined in Section 5.
7. Example 7. Example
Figure 2 shows an example of a ReDiR tree containing information Figure 2 shows an example of a ReDiR tree containing information
about four different service providers whose Node-IDs are 2, 3, 4, about four different service providers whose Node-IDs are 2, 3, 4,
and 7. Initially, the ReDiR tree is empty. and 7. In the example, numBitsInNodeID=4. Initially, the ReDiR tree
is empty.
Level 0 ____2_3___4_____7_|__________________ Level 0 ____2_3___4_____7_|__________________
| | | |
Level 1 ____2_3_|_4_____7 ________|________ Level 1 ____2_3_|_4_____7 ________|________
| | | | | | | |
Level 2 ___|2_3 4__|__7 ___|___ ___|___ Level 2 ___|2_3 4__|__7 ___|___ ___|___
| | | | | | | | | | | | | | | |
Level 3 _|_ _|3 _|_ _|_ _|_ _|_ _|_ _|_ Level 3 _|_ _|3 _|_ _|_ _|_ _|_ _|_ _|_
Figure 2: Example of a ReDiR tree Figure 2: Example of a ReDiR tree
skipping to change at page 12, line 15 skipping to change at page 12, line 27
with interval I(1,4) because it has the numerically lowest Node-ID in with interval I(1,4) because it has the numerically lowest Node-ID in
that interval. Next, peer 4 continues to the root level, at which it that interval. Next, peer 4 continues to the root level, at which it
stores its RedirServiceProvider record and finishes the upward walk stores its RedirServiceProvider record and finishes the upward walk
since the root level was reached. Peer 4 also does a downward walk since the root level was reached. Peer 4 also does a downward walk
starting from level 2. The downward walk stops at level 2 because starting from level 2. The downward walk stops at level 2 because
peer 4 is the only peer in the interval I(2,4). peer 4 is the only peer in the interval I(2,4).
8. Overlay Configuration Document Extension 8. Overlay Configuration Document Extension
This document extends the RELOAD overlay configuration document by This document extends the RELOAD overlay configuration document by
adding two new elements inside the new "REDIR" kind element. adding a new element "branching-factor" inside the new "REDIR" kind
element:
redir:branching-factor: The branching factor of the ReDir tree. The redir:branching-factor: The branching factor of the ReDir tree. The
default value is 10. default value is 10.
redir:refresh-period: The interval at which a service provider needs This new element is formally defined as follows:
to repeat the ReDiR registration process.
namespace redir = "urn:ietf:params:xml:ns:p2p:service-discovery"
parameter &= element redir:branching-factor { xsd:unsignedInt }
The 'redir' namespace is added into the <mandatory-extension> element
in the overlay configuration file.
9. Security Considerations 9. Security Considerations
There are no new security considerations introduced in this document. There are no new security considerations introduced in this document.
The security considerations of RELOAD [I-D.ietf-p2psip-base] apply. The security considerations of RELOAD [I-D.ietf-p2psip-base] apply.
10. IANA Considerations 10. IANA Considerations
10.1. Access Control Policies 10.1. Access Control Policies
This document introduces one additional access control policy to the This document introduces one additional access control policy to the
"RELOAD Access Control Policy" Registry: "RELOAD Access Control Policy" Registry:
NODE-ID-MATCH NODE-ID-MATCH
This access control policy was described in Section 5. This access control policy was described in Section 5.
10.2. Data Kind-ID 10.2. Data Kind-ID
This document introduces one additional data kind-ID to the "RELOAD This document introduces one additional data Kind-ID to the "RELOAD
Data Kind-ID" Registry: Data Kind-ID" Registry:
+--------------+------------+----------+ +--------------+------------+----------+
| Kind | Kind-ID | RFC | | Kind | Kind-ID | RFC |
+--------------+------------+----------+ +--------------+------------+----------+
| REDIR | 104 | RFC-AAAA | | REDIR | 104 | RFC-AAAA |
+--------------+------------+----------+ +--------------+------------+----------+
This kind-ID was defined in Section 6. This Kind-ID was defined in Section 6.
11. References 10.3. ReDiR Namespaces
11.1. Normative References IANA SHALL create a "ReDiR Namespaces" Registry. Entries in this
registry are strings denoting ReDiR namespace values. The initial
contents of this registry are:
+----------------+----------+
| Namespace | RFC |
+----------------+----------+
| turn-server | RFC-AAAA |
+----------------+----------+
| voice-mail | RFC-AAAA |
+----------------+----------+
11. Acknowledgments
The authors would like to thank Marc Petit-Huguenin for his comments
on the draft.
12. References
12.1. Normative References
[I-D.ietf-p2psip-base] [I-D.ietf-p2psip-base]
Jennings, C., Lowekamp, B., Rescorla, E., Baset, S., and Jennings, C., Lowekamp, B., Rescorla, E., Baset, S., and
H. Schulzrinne, "REsource LOcation And Discovery (RELOAD) H. Schulzrinne, "REsource LOcation And Discovery (RELOAD)
Base Protocol", draft-ietf-p2psip-base-15 (work in Base Protocol", draft-ietf-p2psip-base-19 (work in
progress), May 2011. progress), October 2011.
[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, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
11.2. Informative References 12.2. Informative References
[I-D.ietf-p2psip-concepts] [I-D.ietf-p2psip-concepts]
Bryan, D., Matthews, P., Shim, E., Willis, D., and S. Bryan, D., Matthews, P., Shim, E., Willis, D., and S.
Dawkins, "Concepts and Terminology for Peer to Peer SIP", Dawkins, "Concepts and Terminology for Peer to Peer SIP",
draft-ietf-p2psip-concepts-03 (work in progress), draft-ietf-p2psip-concepts-04 (work in progress),
October 2010. October 2011.
[Redir] Rhea, S., Godfrey, P., Karp, B., Kubiatowicz, J., [Redir] Rhea, S., Godfrey, P., Karp, B., Kubiatowicz, J.,
Ratnasamy, S., Shenker, S., Stoica, I., and H. Yu, "Open Ratnasamy, S., Shenker, S., Stoica, I., and H. Yu, "Open
DHT: A Public DHT Service and Its Uses". DHT: A Public DHT Service and Its Uses".
Authors' Addresses Authors' Addresses
Jouni Maenpaa Jouni Maenpaa
Ericsson Ericsson
Hirsalantie 11 Hirsalantie 11
 End of changes. 34 change blocks. 
69 lines changed or deleted 104 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/