Internet DRAFT - draft-petithuguenin-vipr-reload-usage
draft-petithuguenin-vipr-reload-usage
VIPR M. Petit-Huguenin
Internet-Draft Unaffiliated
Intended status: Standards Track J. Rosenberg
Expires: September 13, 2012 jdrosen.net
C. Jennings
Cisco
March 12, 2012
A Usage of Resource Location and Discovery (RELOAD) for Public Switched
Telephone Network (PSTN) Verification
draft-petithuguenin-vipr-reload-usage-04
Abstract
Verification Involving PSTN Reachability (VIPR) is a technique for
inter-domain SIP federation. VIPR makes use of the RELOAD protocol
to store unverified mappings from phone numbers to RELOAD nodes, with
whom a validation process can be run. This document defines the
usage of RELOAD for this purpose.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
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
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 13, 2012.
Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
Petit-Huguenin, et al. Expires September 13, 2012 [Page 1]
Internet-Draft VIPR Reload Usage March 2012
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Registering an E.164 number . . . . . . . . . . . . . . . . . 3
4. Fetching a registration . . . . . . . . . . . . . . . . . . . 4
5. VIPR-REGISTRATION Kind Definition . . . . . . . . . . . . . . 5
6. Overlay Configuration Document Extension . . . . . . . . . . . 6
7. Security Considerations . . . . . . . . . . . . . . . . . . . 6
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
8.1. Access Control Policies . . . . . . . . . . . . . . . . . 6
8.2. Application-ID . . . . . . . . . . . . . . . . . . . . . . 6
8.3. Data Kind-ID . . . . . . . . . . . . . . . . . . . . . . . 7
8.4. IETF XML Namespaces Registry . . . . . . . . . . . . . . . 7
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 7
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8
10.1. Normative References . . . . . . . . . . . . . . . . . . . 8
10.2. Informative References . . . . . . . . . . . . . . . . . . 8
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 8
Appendix B. Release notes . . . . . . . . . . . . . . . . . . . . 9
B.1. Modifications between vipr-04 and vipr-03 . . . . . . . . 9
B.2. Modifications between vipr-03 and vipr-02 . . . . . . . . 9
B.3. Modifications between vipr-02 and vipr-01 . . . . . . . . 9
B.4. Modifications between vipr-01 and vipr-00 . . . . . . . . 10
B.5. Modifications between vipr-00 and dispatch-03 . . . . . . 10
B.6. Modifications between dispatch-03 and dispatch-02 . . . . 10
B.7. Running Code Considerations . . . . . . . . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 11
Petit-Huguenin, et al. Expires September 13, 2012 [Page 2]
Internet-Draft VIPR Reload Usage March 2012
1. Introduction
This document relies heavily on the concepts and terminology defined
in [VIPR-OVERVIEW] and will not make sense if you have not read that
document first. As it defines a usage for RELOAD [P2PSIP-BASE], it
assumes the reader is also familiar with that specification.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
3. Registering an E.164 number
To register an E.164 number a VIPR server stores a ViprRegistration
structure using the fully qualified E.164 based number without any
non-digit characters but the '+' character as Resource Name.
The contents of the ViprRegistration structure are as follow:
enum { reserved(0), node_id(8200), (65535) } ViprRegistrationType;
struct {
opaque name<0..2^8-1>;
} Method;
struct {
select (ViprRegistrationType) {
case node_id:
Destination pvp_provider<0..2^16-1>;
Method methods<0..2^16-1>;
/* This type can be extended */
} ViprRegistrationData;
struct {
ViprRegistrationType type;
uint16 length;
ViprRegistrationData data;
} ViprRegistration;
The ViprRegistration structure contains the following values:
Petit-Huguenin, et al. Expires September 13, 2012 [Page 3]
Internet-Draft VIPR Reload Usage March 2012
type
The type of the registration
length
The length of the data structure, i.e. not counting the type and
length fields
pvp_provider
A sequence of destinations to which an AppAttach request should be
sent to initiate the PVP protocol
methods
The set of methods that the PVP client can try to validate a PSTN
call to the E.164 number used as Resource Name. The format of the
method name is defined in [VIPR-PVP].
The Node-ID used in the key MUST be ready to process AppAttach
requests for Application-ID 8470 at the time the registration is
done.
VIPR supports multiple registrations for a single E.164 number by
using a Dictionary Data Model. The dictionary key is the
concatenation of the Node-ID and the VServiceId, resulting in a 24
bytes long value. Using the Node-ID of the node performing the store
segments the keyspace of the dictionary so that no two peers ever
store using the same key. Using the VService allows for a single
VIPR server to service multiple clusters, and to ensure that numbers
published by one cluster (using one VServiceID) do not clobber or
step on numbers published by another cluster (using a different
VServiceID).
The Store operations are paced into the overlay at a fixed rate. The
VIPR server maintains a queue that is filled with store requests.
The VIPR server services that queue at a fixed, provisioned rate,
which is stored in a kind configuration variable named <store-rate-
limit>.
4. Fetching a registration
A VIPR server wishing to validate a E.164 number will start a Fetch
transaction using the fully qualified E.164 based number without any
non-digit characters but the '+' character as Resource Name. The
VIPR server will also retrieves the two replicas of the resource
record just retrieved.
The VIPR server will then inspects the elements in the 3 resource
Petit-Huguenin, et al. Expires September 13, 2012 [Page 4]
Internet-Draft VIPR Reload Usage March 2012
record returned and will keep only the registrations that have the
same key in at least 2 of the 3 resource records returned. For each
registration kept, the VIPR server will fetch the certificates
associated with the Node-ID in the key using the CERTIFICATE_BY_NODE
usage and will verify that the signature of the registration is
valid.
The VIPR server can then send an AppAttach to the Node-ID found in
the key and registration, using the Application-ID 8470. After the
connection is established, the VIPR server can start PVP as specified
in [VIPR-PVP].
5. VIPR-REGISTRATION Kind Definition
Name VIPR-REGISTRATION
Kind Ids The Resource Name for the VIPR-REGISTRATION Kind-ID is a
fully qualified E.164 based number without any non-digit
characters but the '+' character. The data stored is a
ViprRegistration, which contains the Node-ID of the peer to which
an AppAttach request should be sent to initiate the PVP protocol.
Data Model The data model for the VIPR Kind-ID is dictionary. The
dictionary key is the concatenation of the Node-ID and the
VServiceId, resulting in a 24 bytes long value. Using the Node-ID
of the node performing the store segments the keyspace of the
dictionary so that no two peers ever store using the same key and
using the VService allows for a single VIPR server to service
multiple clusters, and to ensure that numbers published by one
cluster (using one VServiceID) do not clobber or step on numbers
published by another cluster (using a different VServiceID).
Access Control The VIPR-MATCH policy can only be used with a VIPR-
REGISTRATION Kind-ID. In this policy, a given value MUST be
written (or overwritten) if and only if the first 16 bytes of the
dictionary key is equal to the Node-ID is indicated in the
SignerIdentity of the value. Note that VIPR always let the values
stored expire, so the exists field is always equal to TRUE.
Quota This kind MUST use the proportional quota algorithm described
in [RELOAD-QUOTA] by adding the <max-count-per> element with a
value of "SIGNER" to the configuration file. A VIPR server MUST
provide enough Node-IDs to store all the E.164 numbers it is
responsible for by dividing this count by the <max-count> value,
itself adjusted by an additional 3x factor to make sure that the
probability is low that a rejection occurs due to imperfect
distribution of Resource-IDs across the ring.
Petit-Huguenin, et al. Expires September 13, 2012 [Page 5]
Internet-Draft VIPR Reload Usage March 2012
[[Open Issue: need to adjust the multiplier - basically birthday
problem!]]
The method for merging data after a partition follows the normal
RELOAD rules around temporal ordering.
6. Overlay Configuration Document Extension
This document extends the overlay configuration document by defining
a new element in the "urn:ietf:params:xml:ns:p2p:vipr" namespace.
The <store-rate-limit> defines the maximum rate in seconds that a
VIPR server must use to execute Store requests.
The Compact Relax NG Grammar for this element is:
namespace vipr = "urn:ietf:params:xml:ns:p2p:vipr"
parameter &= element vipr:store-rate-limit { xsd:unsignedInt }
7. Security Considerations
TBD
8. IANA Considerations
8.1. Access Control Policies
This document adds a new access control policy to the "RELOAD Access
Control Policy" Registry:
+---------------+---------------+
| Access-Policy | RFC |
+---------------+---------------+
| VIPR-MATCH | This document |
+---------------+---------------+
This access control policy was described in Section 5.
8.2. Application-ID
This document adds a new application ID to the "RELOAD
Application-ID" Registry:
Petit-Huguenin, et al. Expires September 13, 2012 [Page 6]
Internet-Draft VIPR Reload Usage March 2012
+-------------+----------------+---------------+
| Application | Application-ID | Specification |
+-------------+----------------+---------------+
| PVP | 8470 | This document |
+-------------+----------------+---------------+
This access control policy was described in Section 5.
8.3. Data Kind-ID
This document adds a new Data Kind-ID to the "RELOAD Data Kind-ID
Registry":
+-------------------+---------+---------------+
| KIND | Kind-ID | RFC |
+-------------------+---------+---------------+
| VIPR-REGISTRATION | 17 | This document |
+-------------------+---------+---------------+
This Kind-ID was defined in Section 5.
8.4. IETF XML Namespaces Registry
This document adds the following URN to the "XML Namespaces" class of
the "IETF XML Registry":
urn:ietf:params:xml:ns:p2p:vipr
9. Acknowledgements
This document was improved by the input from the VIPR Design Team:
Mary Barnes
Daryl Malas
Hakim Mehmood
Muthu Arul Mozhi Perumal
Jon Peterson
Marc Petit-Huguenin
Michael Procter
John Ward
Dean Willis
This document was written with the xml2rfc tool described in
[RFC2629].
10. References
Petit-Huguenin, et al. Expires September 13, 2012 [Page 7]
Internet-Draft VIPR Reload Usage March 2012
10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[P2PSIP-BASE]
Jennings, C., Lowekamp, B., Rescorla, E., Baset, S., and
H. Schulzrinne, "REsource LOcation And Discovery (RELOAD)
Base Protocol", draft-ietf-p2psip-base-20 (work in
progress), January 2012.
[VIPR-OVERVIEW]
Barnes, M., Jennings, C., Rosenberg, J., and M. Petit-
Huguenin, "Verification Involving PSTN Reachability:
Requirements and Architecture Overview",
draft-jennings-vipr-overview-02 (work in progress),
September 2011.
[VIPR-PVP]
Petit-Huguenin, M., Rosenberg, J., and C. Jennings, "The
Public Switched Telephone Network (PSTN) Validation
Protocol (PVP)", draft-petithuguenin-vipr-pvp-04 (work in
progress), March 2012.
[RELOAD-QUOTA]
Petit-Huguenin, M., Rosenberg, J., and C. Jennings,
"Proportional Quota in REsource LOcation And Discovery
(RELOAD)", draft-petithuguenin-vipr-proportional-quota-00
(work in progress), October 2011.
10.2. Informative References
[RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
June 1999.
[ACCESS-CONTROL]
Petit-Huguenin, M., "Configuration of Access Control
Policy in REsource LOcation And Discovery (RELOAD) Base
Protocol", draft-petithuguenin-p2psip-access-control-04
(work in progress), October 2011.
Appendix A. Examples
The Resource Name and Resource-ID for the E.164 number +1 408 555
5432 are:
Petit-Huguenin, et al. Expires September 13, 2012 [Page 8]
Internet-Draft VIPR Reload Usage March 2012
+---------------+---------------------------------+
| Resource Name | Resource-ID |
+---------------+---------------------------------+
| +14085555432 | 6abaec4308294521e2f600ab5fd01e5 |
+---------------+---------------------------------+
The VIPR-MATCH access control can be implemented with the following
code (Using the notation in [ACCESS-CONTROL]):
var equals = function(a, b) {
if (a.length !== b.length) return false;
for (var i = 0; i < a.length; i++) {
if (a[i] !== b[i]) return false;
}
return true;
};
var length = configuration.node_id_length;
return equals(entry.key.slice(0, length), signature.node_id);
Appendix B. Release notes
This section must be removed before publication as an RFC.
B.1. Modifications between vipr-04 and vipr-03
o The ViprRegistration record now contains a destination list
instead of a Node-ID.
B.2. Modifications between vipr-03 and vipr-02
o The E.164 number is no longer stored 3 times.
o Moved the <store-rate-limit> parameter under the <configuration>
element.
o The VIPR registration now also contains the list of supported PVP
methods.
B.3. Modifications between vipr-02 and vipr-01
o Made clear in the access control policy that exists is always
equal to TRUE.
o Updated with new version of proportional-quota.
o The access control code now uses the configuration parameter.
o Assigned values to Application-ID and Kind-ID.
o Added running code section.
Petit-Huguenin, et al. Expires September 13, 2012 [Page 9]
Internet-Draft VIPR Reload Usage March 2012
o Nits
B.4. Modifications between vipr-01 and vipr-00
o Moved most of the quota algorithm to a separate I-D named
draft-petithuguenin-p2psip-proportional-quota.
o Removed the text saying that the same DHT can also be used for a
RELOAD SIP usage, as it contradicts text in overview. Also the
quota algorithm does not work with clients, but SIP registration
uses clients.
o Added Terminology section
o Converted the TLV value stored to a structure using the syntax
described in p2psip-base to not be dependent on VAP. The new
structure is bit compatible with the old definition.
o Changed the dictionary key to be binary based instead of text
based.
o Copied text from VAP explaining that the Store operations are
queued and that the rate is limited.
o Added voting algorithm when fetch returns different results for
the 3 copies.
o Added explanation on how to verify the signatures.
o Added text on how to form the PVP connection
o Rewrote some of the text so it looks more like a regular RELOAD
usage.
o Removed section 3 "PeerID Shim" now that support for multiple
Node-ID in certificates in fully integrated in RELOAD base.
o Filled IANA section
o Added examples of conversion from E.164 number to Resource-ID
o Added example code for the VIPR access control
B.5. Modifications between vipr-00 and dispatch-03
o Moved to new Working Group.
B.6. Modifications between dispatch-03 and dispatch-02
o Nits.
o Shorter I-Ds references.
o Fixed the peerID and VServiceID to be hexadecimal.
o Fixed the description of the dictionary entry
o Fixed the description of the TLV.
o Used +1 408 555 prefix for phone numbers in examples.
o Replaced peerId by Node-ID
o Replaced resourceID by Resource-ID
Petit-Huguenin, et al. Expires September 13, 2012 [Page 10]
Internet-Draft VIPR Reload Usage March 2012
B.7. Running Code Considerations
o Reference Implementation for the kind and access control policy
(<http://debian.implementers.org/testing/source/reload.tar.gz>).
Marc Petit-Huguenin. Implements version -02.
Authors' Addresses
Marc Petit-Huguenin
Unaffiliated
Email: petithug@acm.org
Jonathan Rosenberg
jdrosen.net
Monmouth, NJ
US
Email: jdrosen@jdrosen.net
URI: http://www.jdrosen.net
Cullen Jennings
Cisco
170 West Tasman Drive
San Jose, CA 95134
USA
Phone: +1 408 421-9990
Email: fluffy@cisco.com
Petit-Huguenin, et al. Expires September 13, 2012 [Page 11]