draft-ietf-drinks-spprov-10.txt | draft-ietf-drinks-spprov-11.txt | |||
---|---|---|---|---|
DRINKS J-F. Mule | DRINKS J-F. Mule | |||
Internet-Draft CableLabs | Internet-Draft CableLabs | |||
Intended status: Standards Track K. Cartwright | Intended status: Standards Track K. Cartwright | |||
Expires: March 12, 2012 TNS | Expires: May 3, 2012 TNS | |||
S. Ali | S. Ali | |||
NeuStar | NeuStar | |||
A. Mayrhofer | A. Mayrhofer | |||
enum.at GmbH | enum.at GmbH | |||
September 9, 2011 | October 31, 2011 | |||
Session Peering Provisioning Protocol | Session Peering Provisioning Protocol Data Model | |||
draft-ietf-drinks-spprov-10 | draft-ietf-drinks-spprov-11 | |||
Abstract | Abstract | |||
This document defines a protocol for provisioning session | This document specifies the data model and the overall structure for | |||
establishment data into Session Data Registries and SIP Service | a protocol to provision session establishment data into Session Data | |||
Provider data stores. The provisioned data is typically used by | Registries and SIP Service Provider data stores. The protocol is | |||
various network elements for session peering. | called the Session Peering Provisioning Protocol (SPPP). The | |||
provisioned data is typically used by network elements for session | ||||
This document describes the Session Peering Provisioning Protocol | peering. | |||
used by clients to provision registries. The document provides a set | ||||
of guiding principles for the design of this protocol including | ||||
extensibility and independent transport definitions, a basic data | ||||
model and an XML Schema Document. | ||||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 March 12, 2012. | This Internet-Draft will expire on May 3, 2012. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2011 IETF Trust and the persons identified as the | Copyright (c) 2011 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Protocol High Level Design . . . . . . . . . . . . . . . . . . 9 | 3. Protocol High Level Design . . . . . . . . . . . . . . . . . . 8 | |||
3.1. Protocol Layering . . . . . . . . . . . . . . . . . . . . 9 | 3.1. Protocol Data Model . . . . . . . . . . . . . . . . . . . 8 | |||
3.2. Protocol Data Model . . . . . . . . . . . . . . . . . . . 10 | 3.2. Time Value . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.3. Time Value . . . . . . . . . . . . . . . . . . . . . . . . 13 | 4. Transport Protocol Requirements . . . . . . . . . . . . . . . 12 | |||
4. Transport Protocol Requirements . . . . . . . . . . . . . . . 14 | 4.1. Connection Oriented . . . . . . . . . . . . . . . . . . . 12 | |||
4.1. Connection Oriented . . . . . . . . . . . . . . . . . . . 14 | 4.2. Request and Response Model . . . . . . . . . . . . . . . . 12 | |||
4.2. Request and Response Model . . . . . . . . . . . . . . . . 14 | 4.3. Connection Lifetime . . . . . . . . . . . . . . . . . . . 12 | |||
4.3. Connection Lifetime . . . . . . . . . . . . . . . . . . . 14 | 4.4. Authentication . . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.4. Authentication . . . . . . . . . . . . . . . . . . . . . . 14 | 4.5. Authorization . . . . . . . . . . . . . . . . . . . . . . 13 | |||
4.5. Authorization . . . . . . . . . . . . . . . . . . . . . . 15 | 4.6. Confidentiality and Integrity . . . . . . . . . . . . . . 13 | |||
4.6. Confidentiality and Integrity . . . . . . . . . . . . . . 15 | 4.7. Near Real Time . . . . . . . . . . . . . . . . . . . . . . 13 | |||
4.7. Near Real Time . . . . . . . . . . . . . . . . . . . . . . 15 | 4.8. Request and Response Sizes . . . . . . . . . . . . . . . . 13 | |||
4.8. Request and Response Sizes . . . . . . . . . . . . . . . . 15 | 4.9. Request and Response Correlation . . . . . . . . . . . . . 13 | |||
4.9. Request and Response Correlation . . . . . . . . . . . . . 15 | 4.10. Request Acknowledgement . . . . . . . . . . . . . . . . . 13 | |||
4.10. Request Acknowledgement . . . . . . . . . . . . . . . . . 15 | 4.11. Mandatory Transport . . . . . . . . . . . . . . . . . . . 14 | |||
4.11. Mandatory Transport . . . . . . . . . . . . . . . . . . . 16 | 5. Base Protocol Data Structures . . . . . . . . . . . . . . . . 15 | |||
5. Base Protocol Data Structures . . . . . . . . . . . . . . . . 17 | 5.1. Basic Object Type and Organization Identifiers . . . . . . 15 | |||
5.1. Request and Response Structures . . . . . . . . . . . . . 17 | 5.2. Object Key Type . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.1.1. Update Request and Response Structures . . . . . . . . 17 | 6. Protocol Data Model Objects . . . . . . . . . . . . . . . . . 17 | |||
5.1.2. Query Request and Response Structures . . . . . . . . 20 | 6.1. Destination Group . . . . . . . . . . . . . . . . . . . . 17 | |||
5.2. Response Codes and Messages . . . . . . . . . . . . . . . 23 | 6.2. Public Identifier . . . . . . . . . . . . . . . . . . . . 18 | |||
5.3. Basic Object Type and Organization Identifiers . . . . . . 25 | 6.3. Route Group . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
6. Protocol Commands . . . . . . . . . . . . . . . . . . . . . . 26 | 6.4. Route Record . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
6.1. Add Destination Group Operation . . . . . . . . . . . . . 26 | 6.5. Route Group Offer . . . . . . . . . . . . . . . . . . . . 30 | |||
6.2. Get Destination Groups Operation . . . . . . . . . . . . . 27 | 6.6. Egress Route . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
6.3. Add Public Identifier Operation . . . . . . . . . . . . . 28 | 7. XML Considerations . . . . . . . . . . . . . . . . . . . . . . 35 | |||
6.4. Get Public Identifiers Operation . . . . . . . . . . . . . 33 | 7.1. Namespaces . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
6.5. Add Route Group Operation . . . . . . . . . . . . . . . . 33 | 7.2. Versioning and Character Encoding . . . . . . . . . . . . 35 | |||
6.6. Get Route Groups Operation . . . . . . . . . . . . . . . . 38 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 36 | |||
6.7. Add Route Record Operation . . . . . . . . . . . . . . . . 39 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | |||
6.8. Get Route Records Operation . . . . . . . . . . . . . . . 43 | 10. Formal Specification . . . . . . . . . . . . . . . . . . . . . 39 | |||
6.9. Add Route Group Offer Operation . . . . . . . . . . . . . 44 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
6.10. Accept Route Group Offer Operation . . . . . . . . . . . . 46 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
6.11. Reject Route Group Offer Operation . . . . . . . . . . . . 47 | 12.1. Normative References . . . . . . . . . . . . . . . . . . . 48 | |||
6.12. Get Route Group Offers Operation . . . . . . . . . . . . . 48 | 12.2. Informative References . . . . . . . . . . . . . . . . . . 48 | |||
6.13. Egress Route Operations . . . . . . . . . . . . . . . . . 50 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
6.14. Delete Operation . . . . . . . . . . . . . . . . . . . . . 52 | ||||
7. SPPP Examples . . . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
7.1. Add Destination Group . . . . . . . . . . . . . . . . . . 54 | ||||
7.2. Add Route Records . . . . . . . . . . . . . . . . . . . . 55 | ||||
7.3. Add Route Records -- URIType . . . . . . . . . . . . . . . 56 | ||||
7.4. Add Route Group . . . . . . . . . . . . . . . . . . . . . 57 | ||||
7.5. Add Public Identity -- Successful COR claim . . . . . . . 58 | ||||
7.6. Add LRN . . . . . . . . . . . . . . . . . . . . . . . . . 60 | ||||
7.7. Add TN Range . . . . . . . . . . . . . . . . . . . . . . . 61 | ||||
7.8. Add TN Prefix . . . . . . . . . . . . . . . . . . . . . . 62 | ||||
7.9. Enable Peering -- Route Group Offer . . . . . . . . . . . 63 | ||||
7.10. Enable Peering -- Route Group Offer Accept . . . . . . . . 64 | ||||
7.11. Add Egress Route . . . . . . . . . . . . . . . . . . . . . 65 | ||||
7.12. Get Destination Group . . . . . . . . . . . . . . . . . . 66 | ||||
7.13. Get Public Identity . . . . . . . . . . . . . . . . . . . 67 | ||||
7.14. Get Route Group Request . . . . . . . . . . . . . . . . . 68 | ||||
7.15. Get Route Group Offers Request . . . . . . . . . . . . . . 70 | ||||
7.16. Get Egress Route . . . . . . . . . . . . . . . . . . . . . 71 | ||||
7.17. Delete Destination Group . . . . . . . . . . . . . . . . . 72 | ||||
7.18. Delete Public Identity . . . . . . . . . . . . . . . . . . 73 | ||||
7.19. Delete Route Group Request . . . . . . . . . . . . . . . . 74 | ||||
7.20. Delete Route Group Offers Request . . . . . . . . . . . . 75 | ||||
7.21. Delete Egress Route . . . . . . . . . . . . . . . . . . . 75 | ||||
8. XML Considerations . . . . . . . . . . . . . . . . . . . . . . 77 | ||||
8.1. Namespaces . . . . . . . . . . . . . . . . . . . . . . . . 77 | ||||
8.2. Versioning and Character Encoding . . . . . . . . . . . . 77 | ||||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 78 | ||||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80 | ||||
11. Formal Specification . . . . . . . . . . . . . . . . . . . . . 81 | ||||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 94 | ||||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 95 | ||||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 95 | ||||
13.2. Informative References . . . . . . . . . . . . . . . . . . 95 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 97 | ||||
1. Introduction | 1. Introduction | |||
Service providers and enterprises use registries to make session | Service providers and enterprises use registries to make session | |||
routing decisions for Voice over IP, SMS and MMS traffic exchanges. | routing decisions for Voice over IP, SMS and MMS traffic exchanges. | |||
This document is narrowly focused on the provisioning protocol for | This document is narrowly focused on the provisioning protocol for | |||
these registries. This protocol prescribes a way for an entity to | these registries. This protocol prescribes a way for an entity to | |||
provision session-related data into a registry. The data being | provision session-related data into a registry. The data being | |||
provisioned can be optionally shared with other participating peering | provisioned can be optionally shared with other participating peering | |||
entities. The requirements and use cases driving this protocol have | entities. The requirements and use cases driving this protocol have | |||
skipping to change at page 6, line 12 | skipping to change at page 5, line 12 | |||
comprises of the target domain to assist in call routing (as | comprises of the target domain to assist in call routing (as | |||
described in [RFC5486]). In this case, the querying entity may | described in [RFC5486]). In this case, the querying entity may | |||
use other means to perform the Location Routing Function (LRF) | use other means to perform the Location Routing Function (LRF) | |||
which in turn helps determine the actual location of the | which in turn helps determine the actual location of the | |||
Signaling Function in that domain. | Signaling Function in that domain. | |||
2. A resolution system returns both a Look-Up function (LUF) and | 2. A resolution system returns both a Look-Up function (LUF) and | |||
Location Routing Function (LRF) to locate the SED data fully. | Location Routing Function (LRF) to locate the SED data fully. | |||
In terms of protocol design, SPPP is agnostic to the transport. This | In terms of protocol design, SPPP is agnostic to the transport. This | |||
document includes the description of the data model and the means to | document includes the specification of the data model and identifies, | |||
enable protocol operations within a request and response structure. | but does not specify, the means to enable protocol operations within | |||
a request and response structure. That aspcect of the specificaiton | ||||
has been delegated to the "transport" specification for the protocol. | ||||
To encourage interoperability, the protocol supports extensibility | To encourage interoperability, the protocol supports extensibility | |||
aspects. | aspects. | |||
Transport requirements are provided in this document to help with the | Transport requirements are provided in this document to help with the | |||
selection of the optimum transport mechanism. | selection of the optimum transport mechanism. | |||
([I-D.ietf-drinks-sppp-over-soap]) identifies a SOAP transport | ([I-D.ietf-drinks-sppp-over-soap]) identifies a SOAP transport | |||
mechanism for SPPP. | mechanism for SPPP. | |||
This document is organized as follows: | This document is organized as follows: | |||
o Section 2 provides the terminology; | o Section 2 provides the terminology; | |||
o Section 3 provides an overview of the SPPP, including the | o Section 3 provides an overview of SPPP, including the functional | |||
layering approach, functional entities and data model; | entities and data model; | |||
o Section 4 specifies requirements for SPPP transport protocols; | o Section 4 specifies requirements for SPPP transport protocols; | |||
o Section 5 describes the base protocol data structures including | o Section 5 describes the base protocol data structures, the | |||
the request and response elements (Section 5.1), the response | generic response codes and messages, and the basic object type | |||
codes and messages (Section 5.2) and the basic object type most | most first class objects extend from; | |||
first class objects extend from; | ||||
o Section 6 and Section 7 describe the main protocol commands and | o Section 6 detailed descriptoins of the data model object | |||
examples; | specifications; | |||
o Section 8 defines XML considerations that XML parsers must meet | o Section 7 defines XML considerations that XML parsers must meet | |||
to conform to this specification; | to conform to this specification; | |||
o Section 11 normatively defines the SPPP protocol using its XML | o Section 10 normatively defines the SPPP protocol using its XML | |||
Schema Definition. | Schema Definition. | |||
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 [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
This document reuses terms from [RFC3261], [RFC5486], use cases and | This document reuses terms from [RFC3261], [RFC5486], use cases and | |||
requirements documented in [I-D.ietf-drinks-usecases-requirements] | requirements documented in [I-D.ietf-drinks-usecases-requirements] | |||
skipping to change at page 9, line 13 | skipping to change at page 8, line 13 | |||
of SPPP. | of SPPP. | |||
3. Protocol High Level Design | 3. Protocol High Level Design | |||
This section introduces the structure of the data model and provides | This section introduces the structure of the data model and provides | |||
the information framework for the SPPP. An overview of the protocol | the information framework for the SPPP. An overview of the protocol | |||
operations is first provided with a typical deployment scenario. The | operations is first provided with a typical deployment scenario. The | |||
data model is then defined along with all the objects manipulated by | data model is then defined along with all the objects manipulated by | |||
the protocol and their relationships. | the protocol and their relationships. | |||
3.1. Protocol Layering | 3.1. Protocol Data Model | |||
SPPP is a simple request/reply protocol that allows a client | ||||
application to submit provisioning data and query requests to a | ||||
server. The SPPP data structures are designed to be protocol | ||||
agnostic. Concerns regarding encryption, non-repudiation, and | ||||
authentication are beyond the scope of this document. For more | ||||
details, please refer to the Transport Protocol Requirements section. | ||||
Layer Example | ||||
+-------------+ +-----------------------------+ | ||||
(5) |Data Objects | | RteGrpType, etc. | | ||||
+-------------+ +-----------------------------+ | ||||
| | | ||||
+-------------+ +-----------------------------+ | ||||
(4) | Operations | | AddRteGrpRqstType, etc. | | ||||
+-------------+ +-----------------------------+ | ||||
| | | ||||
+-------------+ +-----------------------------+ | ||||
(3) | Message | | spppUpdateRequest, | | ||||
| | | spppUpdateResponse, | | ||||
| | | spppQueryRequest, | | ||||
| | | spppQueryResponse | | ||||
+-------------+ +-----------------------------+ | ||||
| | | ||||
+-------------+ +-----------------------------+ | ||||
(2) | Message | | HTTP, SOAP, None, etc. | | ||||
| Envelope | | | | ||||
+-------------+ +-----------------------------+ | ||||
| | | ||||
+-------------+ +-----------------------------+ | ||||
(1) | Transport | | TCP, TLS, BEEP, etc. | | ||||
| Protocol | | | | ||||
+-------------+ +-----------------------------+ | ||||
SPPP Layering | ||||
Figure 2 | ||||
SPPP can be viewed as a set of layers that collectively define the | ||||
structure of an SPPP request and response. Layers 1 and 2, as | ||||
detailed below, are left to separate specifications to allow for | ||||
potentially multiple SPPP transport, envelope, and authentication | ||||
technologies. This document defines layers 3, 4, and 5 below. | ||||
1. The transport protocol layer provides a communication mechanism | ||||
between the client and server. SPPP can be layered over any | ||||
transport protocol that provides a set of basic requirements | ||||
defined in the Transport Protocol Requirements section. | ||||
2. The message envelope layer is optional, but can provide features | ||||
that are above the transport technology layer but below the | ||||
application messaging layer. Technologies such as HTTP and SOAP | ||||
are examples of messaging envelope technologies. | ||||
3. The message layer provides a simple, envelope-independent and | ||||
transport-independent, SPPP wrapper for SPPP request and response | ||||
messages. | ||||
4. The operation layer defines the set of base SPPP actions that can | ||||
be invoked for a given object data type using an SPPP message. | ||||
Operations are encoded using XML encoded actions and objects. | ||||
5. The data object layer defines the base set of SPPP data objects | ||||
that can be included in update operations or returned in | ||||
operation responses. | ||||
3.2. Protocol Data Model | ||||
The data model illustrated and described in Figure 3 defines the | The data model illustrated and described in Figure 2 defines the | |||
logical objects and the relationships between these objects that the | logical objects and the relationships between these objects that the | |||
SPPP protocol supports. SPPP defines the protocol operations through | SPPP protocol supports. SPPP defines the protocol operations through | |||
which an SPPP client populates a registry with these logical objects. | which an SPPP client populates a registry with these logical objects. | |||
Various clients belonging to different registrars may use the | Various clients belonging to different registrars may use the | |||
protocol for populating the registry's data. | protocol for populating the registry's data. | |||
The logical structure presented below is consistent with the | The logical structure presented below is consistent with the | |||
terminology and requirements defined in | terminology and requirements defined in | |||
[I-D.ietf-drinks-usecases-requirements]. | [I-D.ietf-drinks-usecases-requirements]. | |||
skipping to change at page 11, line 51 | skipping to change at page 9, line 51 | |||
|of Public | |of Public | |||
|Identifiers... | |Identifiers... | |||
+---------+-------+------------... | +---------+-------+------------... | |||
| | | | | | | | | | |||
+------+ +-----+ +-----+ +-----+ | +------+ +-----+ +-----+ +-----+ | |||
| TN | | TNP | | TNR | | RN | | | TN | | TNP | | TNR | | RN | | |||
+------+ +-----+ +-----+ +-----+ | +------+ +-----+ +-----+ +-----+ | |||
SPPP Data Model | SPPP Data Model | |||
Figure 3 | Figure 2 | |||
The objects and attributes that comprise the data model can be | The objects and attributes that comprise the data model can be | |||
described as follows (objects listed from the bottom up): | described as follows (objects listed from the bottom up): | |||
o Public Identifier: | o Public Identifier: | |||
From a broad perspective a public identifier is a well-known | From a broad perspective a public identifier is a well-known | |||
attribute that is used as the key to perform resolution lookups. | attribute that is used as the key to perform resolution lookups. | |||
Within the context of SPPP, a public identifier object can be a | Within the context of SPPP, a public identifier object can be a | |||
telephone number, a range of telephone numbers, a PSTN Routing | telephone number, a range of telephone numbers, a PSTN Routing | |||
Number (RN), or a TN prefix. | Number (RN), or a TN prefix. | |||
skipping to change at page 13, line 30 | skipping to change at page 11, line 30 | |||
that identify the peering organization(s) whose resolution query | that identify the peering organization(s) whose resolution query | |||
responses may include the routing information (SED) defined in the | responses may include the routing information (SED) defined in the | |||
Route Records within that Route Group. A peering organization is | Route Records within that Route Group. A peering organization is | |||
an entity that the registrant intends to share the SED data with. | an entity that the registrant intends to share the SED data with. | |||
A route group SPPP object is associated with a set of zero or more | A route group SPPP object is associated with a set of zero or more | |||
organization identifiers that identify the peering organizations | organization identifiers that identify the peering organizations | |||
whose resolution query responses may include the routing | whose resolution query responses may include the routing | |||
information (SED) defined in the route records within that route | information (SED) defined in the route records within that route | |||
group. | group. | |||
3.3. Time Value | 3.2. Time Value | |||
Some SPPP request and response messages include time value(s) defined | Some SPPP request and response messages include time value(s) defined | |||
as type xs:dateTime, a built-in W3C XML Schema Datatype. Use of | as type xs:dateTime, a built-in W3C XML Schema Datatype. Use of | |||
unqualified local time value is discouraged as it can lead to | unqualified local time value is discouraged as it can lead to | |||
interoperability issues. The value of time attribute MUST BE | interoperability issues. The value of time attribute MUST BE | |||
expressed in Coordinated Universal Time (UTC) format without the | expressed in Coordinated Universal Time (UTC) format without the | |||
timezone digits. | timezone digits. | |||
"2010-05-30T09:30:10Z" is an example of an acceptable time value for | "2010-05-30T09:30:10Z" is an example of an acceptable time value for | |||
use in SPPP messages. "2010-05-30T06:30:10+3:00" is a valid UTC time, | use in SPPP messages. "2010-05-30T06:30:10+3:00" is a valid UTC time, | |||
skipping to change at page 17, line 7 | skipping to change at page 15, line 7 | |||
At the time of this writing, a choice of transport protocol has been | At the time of this writing, a choice of transport protocol has been | |||
provided in [I-D.ietf-drinks-sppp-over-soap]. To encourage | provided in [I-D.ietf-drinks-sppp-over-soap]. To encourage | |||
interoperability, the SPPP server MUST provide support for this | interoperability, the SPPP server MUST provide support for this | |||
transport protocol. With time, it is possible that other transport | transport protocol. With time, it is possible that other transport | |||
layer choices may surface that agree with the requirements discussed | layer choices may surface that agree with the requirements discussed | |||
above. | above. | |||
5. Base Protocol Data Structures | 5. Base Protocol Data Structures | |||
SPPP uses a common model and a common set of data structures for most | SPPP contains some common data structures for most of the supported | |||
of the supported operations and object types. This section describes | object types. This section describes these common data structures. | |||
these common data structures. | ||||
5.1. Request and Response Structures | ||||
An SPPP client interacts with an SPPP server by using one of the | ||||
supported transport mechanisms to send one or more requests to the | ||||
server and receive corresponding replies from the server. There are | ||||
two generalized types of operations that an SPPP client can submit to | ||||
an SPPP server, updates and queries. The following two sub-sections | ||||
describe the generalized data structures that are used for each of | ||||
these two types of operations. | ||||
5.1.1. Update Request and Response Structures | ||||
An SPPP update request is wrapped within the <spppUpdateRequest> | ||||
element while an SPPP update response is wrapped within an | ||||
<spppUpdateResponse> element. The following two sub-sections | ||||
describe these two elements. | ||||
5.1.1.1. Update Request | ||||
An SPPP update request object is contained within the generic | ||||
<spppUpdateRequest> element. | ||||
<element name="spppUpdateRequest"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="clientTransId" type="spppb:TransIdType" | ||||
minOccurs="0"/> | ||||
<element name="minorVer" type="spppb:MinorVerType" | ||||
minOccurs="0"/> | ||||
<element name="rqst" type="spppb:BasicUpdateRqstType" | ||||
maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
<simpleType name="TransIdType"> | ||||
<restriction base="string"/> | ||||
</simpleType> | ||||
<simpleType name="MinorVerType"> | ||||
<restriction base="unsignedLong"/> | ||||
</simpleType> | ||||
The data elements within the <spppUpdateRequest> element are | ||||
described as follows: | ||||
o clientTransId: Zero or one client-generated transaction ID that, | ||||
within the context of the SPPP client, identifies this request. | ||||
This value can be used at the discretion of the SPPP client to | ||||
track, log or correlate requests and their responses. SPPP | ||||
server MUST echo back this value to the client in the | ||||
corresponding response to the incoming request. SPPP server | ||||
will not check this value for uniqueness. | ||||
o minorVer: Zero or one minor version identifier, indicating the | ||||
minor version of the SPPP API that the client is attempting to | ||||
use. This is used in conjunction with the major version | ||||
identifier in the XML namespace to identify the version of SPPP | ||||
that the client is using. If the element is not present, the | ||||
server assumes that the client is using the latest minor version | ||||
supported by the SPPP server for the given major version. The | ||||
versions supported by a given SPPP server can be retrieved by | ||||
the client using the SPPP server menu operation described later | ||||
in the document. | ||||
o rqst: One or more BasicUpdateRqstType objects. These are the | ||||
actions that the client is requesting the SPPP server perform. | ||||
They are processed by the SPPP server in the order in which they | ||||
are included in the request. And with respect to handling error | ||||
conditions, it is a matter of policy whether the objects are | ||||
processed in a "stop and rollback" fashion or in a "stop and | ||||
commit" fashion. In the "stop and rollback" scenario, the SPPP | ||||
server would stop processing BasicUpdateRqstType object | ||||
instances in the request at the first error and roll back any | ||||
BasicUpdateRqstType object instances that had already been | ||||
processed for that update request. In the "stop and commit" | ||||
scenario the SPPP server would stop processing | ||||
BasicUpdateRqstType object instances in the request at the first | ||||
error but commit any BasicUpdateRqstType object instances that | ||||
had already been processed for that update request. | ||||
All update request objects extend the base type BasicUpdateRqstType. | ||||
This base type is defined as follows: | ||||
<complexType name="BasicUpdateRqstType" abstract="true"> | ||||
<sequence> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
The BasicUpdateRqstType object primarily acts as an abstract base | ||||
type, and its only data element is described as follows: | ||||
o ext: This is the standard extension element for this object. | ||||
Refer to the Extensibility section of this document for more | ||||
details. | ||||
5.1.1.2. Update Response | ||||
An SPPP update response object is contained within the generic | ||||
<spppUpdateResponse> element. | ||||
<element name="spppUpdateResponse"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="overallResult" type="spppb:ResultCodeType"/> | ||||
<element name="rqstObjResult" type="spppb:RqstObjResultCodeType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="clientTransId" type="spppb:TransIdType" | ||||
minOccurs="0"/> | ||||
<element name="serverTransId" type="spppb:TransIdType"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
<complexType name="ResultCodeType"> | ||||
<sequence> | ||||
<element name="code" type="int"/> | ||||
<element name="msg" type="string"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="RqstObjResultCodeType"> | ||||
<complexContent> | ||||
<extension base="spppb:ResultCodeType"> | ||||
<sequence> | ||||
<element name="rqstObj" type="spppb:BasicUpdateRqstType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
An <spppUpdateResponse> contains the elements necessary for the SPPP | ||||
client to precisely determine the overall result of the request, and | ||||
if an error occurred, it provides information about the specific | ||||
object, data element, or condition caused the error. | ||||
The data elements within the SPPP update response are described as | ||||
follows: | ||||
o clientTransId: Zero or one client transaction ID. This value is | ||||
simply an echo of the client transaction ID that SPPP client | ||||
passed into the SPPP update request. When included in the | ||||
request, the SPPP server MUST return it in the corresponding | ||||
response message. | ||||
o serverTransId: Exactly one server transaction ID that identifies | ||||
this request for tracking purposes. This value MUST be unique | ||||
for a given SPPP server. | ||||
o overallResult: Exactly one response code and message pair that | ||||
explicitly identifies the result of the request. See the | ||||
Response Code section for further details. | ||||
o rqstObjResult: An optional response code, response message, and | ||||
BasicRqstObject triplet. This element will be present only if | ||||
an object level error has occurred. It indicates the error | ||||
condition and the exact request object that contributed to the | ||||
error. The response code will reflect the exact error. See the | ||||
Response Code section for further details. | ||||
o ext: This is the standard extension element for this object. | ||||
Refer to the Extensibility section for more details. | ||||
5.1.2. Query Request and Response Structures | ||||
At times, on behalf of the registrant, the registrar may need to have | ||||
access to SPPP objects that were previously provisioned in the | ||||
registry. A few examples include logging, auditing, and pre- | ||||
provisioning dependency checking. This query mechanism is limited to | ||||
aid provisioning scenarios and should not be confused with query | ||||
protocols provided as part of the resolution system (e.g. ENUM and | ||||
SIP). | ||||
An SPPP query request is wrapped within the <spppQueryRequest> | ||||
element while an SPPP query response is wrapped within an | ||||
<spppQueryResponse> element. The following two sub-sections describe | ||||
these two element structures. | ||||
5.1.2.1. Query Request | ||||
An SPPP query request object is contained within the generic | ||||
<spppQueryRequest> element. | ||||
<element name="spppQueryRequest"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="minorVer" type="spppb:MinorVerType" | ||||
minOccurs="0"/> | ||||
<element name="rqst" type="spppb:BasicQueryRqstType"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
The data elements within the <spppQueryRequest> element are described | ||||
as follows: | ||||
o minorVer: Zero or one minor version identifier, indicating the | ||||
minor version of the SPPP API that the client is attempting to | ||||
use. This is used in conjunction with the major version | ||||
identifier in the XML namespace to identify the version of SPPP | ||||
that the client is using. If the element is not present, the | ||||
server assumes that the client is using the latest minor version | ||||
supported by the SPPP server for the given major version. The | ||||
versions supported by a given SPPP server can be retrieved by | ||||
the client using the SPPP server menu operation described later | ||||
in the document. | ||||
o rqst: One BasicQueryRqstType objects. This is the query that | ||||
the client is requesting the SPPP server perform. | ||||
All query request objects extend the base type BasicQueryRqstType. | ||||
This base type is defined as follows: | ||||
<complexType name="BasicQueryRqstType" abstract="true"> | ||||
<sequence> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
The BasicQueryRqstType object primarily acts as an abstract base | ||||
type, and its only data element is described as follows: | ||||
o ext: This is the standard extension element for this object. | ||||
Refer to the Extensibility section of this document for more | ||||
details. | ||||
5.1.2.2. Query Response | ||||
An SPPP query response object is contained within the generic | ||||
<spppQueryResponse> element. | ||||
<element name="spppQueryResponse"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="overallResult" type="spppb:ResultCodeType"/> | ||||
<element name="resultSet" type="spppb:BasicObjType" | ||||
minOccurs="0" maxOccurs=" unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
An <spppQueryResponse> contains the elements necessary for the SPPP | ||||
client to precisely determine the overall result of the query, and if | ||||
an error occurred, exactly what condition caused the error. | ||||
The data elements within the SPPP query response are described as | ||||
follows: | ||||
o overallResult: Exactly one response code and message pair that | ||||
explicitly identifies the result of the request. See the | ||||
Response Code section for further details. | ||||
o resultSet: The set of zero or more objects that matched the | ||||
query criteria. If no objects matched the query criteria then | ||||
this result set MUST be empty and the overallResult value MUST | ||||
indicate success (if no matches are found for the query | ||||
criteria, the response is considered a success). | ||||
5.2. Response Codes and Messages | ||||
This section contains the listing of response codes and their | ||||
corresponding human-readable text. | ||||
The response code numbering scheme generally adheres to the theory | ||||
formalized in section 4.2.1 of [RFC5321]: | ||||
o The first digit of the response code can only be 1 or 2: 1 = a | ||||
positive result, 2 = a negative result. | ||||
o The second digit of the response code indicates the category: 0 | ||||
= Protocol Syntax, 1 = Implementation Specific Business Rule, 2 | ||||
= Security, 3 = Server System. | ||||
o The third and fourth digits of the response code indicate the | ||||
individual message event within the category defines by the | ||||
first two digits. | ||||
The response codes are also categorized as to whether they are | ||||
overall response codes that may only be returned in the | ||||
"overallResult" data element in SPPP responses, of object level | ||||
response codes that may only be returned in the "rqstObjResult" | ||||
element of the SPPP responses. | ||||
+--------+--------------------------+-------------------------------+ | ||||
| Result | Result Message | Overall or Object Level | | ||||
| Code | | | | ||||
+--------+--------------------------+-------------------------------+ | ||||
| 1000 | Request Succeeded. | Overall Response Code | | ||||
| | | | | ||||
| 2001 | Request syntax invalid. | Overall Response Code | | ||||
| | | | | ||||
| 2002 | Request too large. | Overall Response Code | | ||||
| | | | | ||||
| 2003 | Version not supported. | Overall Response Code | | ||||
| | | | | ||||
| 2103 | Command invalid. | Overall Response Code | | ||||
| | | | | ||||
| 2301 | System temporarily | Overall Response Code | | ||||
| | unavailable. | | | ||||
| | | | | ||||
| 2302 | Unexpected internal | Overall Response Code | | ||||
| | system or server error. | | | ||||
| | | | | ||||
| 2104 | Attribute value invalid. | Object Level Response Code | | ||||
| | | | | ||||
| | AttrName:[AttributeName] | | | ||||
| | AttrVal:[AttributeValue] | | | ||||
| | | | | ||||
| 2105 | Object does not exist. | Object Level Response Code | | ||||
| | AttrName:[AttributeName] | | | ||||
| | AttrVal:[AttributeValue] | | | ||||
| | | | | ||||
| 2106 | Object status or | Object Level Response Code | | ||||
| | ownership does not allow | | | ||||
| | for operation. | | | ||||
| | AttrName:[AttributeName] | | | ||||
| | AttrVal:[AttributeValue] | | | ||||
+--------+--------------------------+-------------------------------+ | ||||
Table 1: Response Codes Numbering Scheme and Messages | ||||
Each of the object level response messages are "parameterized" with | ||||
the following parameters: "AttributeName" and "AttributeValue". | ||||
The use of these parameters MUST adhere to the following rules: | ||||
o All parameters within a response message are mandatory and MUST | ||||
be present. | ||||
o Any value provided for the "AttributeName" parameter MUST be an | ||||
exact XSD element name of the protocol data element that the | ||||
response message is referring to. For example, valid values for | ||||
"attribute name" are "dgName", "rgName", "rteRec", etc. | ||||
o The value for "AttributeValue" MUST be the value of the data | ||||
element to which the preceding "AttributeName" refers. | ||||
o Result code 2104 SHOULD be used whenever an element value does | ||||
not adhere to data validation rules. | ||||
o Result codes 2104 and 2105 MUST NOT be used interchangeably. | ||||
Response code 2105 SHOULD be returned by an update operation | ||||
when the data element(s) used to uniquely identify a pre- | ||||
existing object do not exist. If the data elements used to | ||||
uniquely identify an object are malformed, then response code | ||||
2104 SHOULD be returned. | ||||
5.3. Basic Object Type and Organization Identifiers | 5.1. Basic Object Type and Organization Identifiers | |||
This section introduces the basic object type that most first class | This section introduces the basic object type that most first class | |||
objects derive from. | objects derive from. | |||
All first class objects extend the basic object type BasicObjType | All first class objects extend the basic object type BasicObjType | |||
that contains the identifier of the registrant organization that owns | that contains the identifier of the registrant organization that owns | |||
this object, the date and time that the object was created by the | this object, the identifier of the registrar organization that | |||
server, and the date and time that the object was last modified. | created this object, the date and time that the object was created by | |||
the server, and the date and time that the object was last modified. | ||||
<complexType name="BasicObjType" abstract="true"> | <complexType name="BasicObjType" abstract="true"> | |||
<sequence> | <sequence> | |||
<element name="rant" type="spppb:OrgIdType"/> | <element name="rant" type="spppb:OrgIdType"/> | |||
<element name="cDate" type="dateTime" minOccurs="0"/> | <element name="rar" type="spppb:OrgIdType"/> | |||
<element name="mDate" type="dateTime" minOccurs="0"/> | <element name="cDate" type="dateTime" | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | minOccurs="0"/> | |||
</sequence> | <element name="mDate" type="dateTime" | |||
</complexType> | minOccurs="0"/> | |||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
The identifiers used for registrants (rant) and peering organizations | The identifiers used for registrants (rant), registrars (rar), and | |||
(peeringOrg) are instances of OrgIdType. The OrgIdType is defined as | peering organizations (peeringOrg) are instances of OrgIdType. The | |||
a string and all OrgIdType instances SHOULD follow the textual | OrgIdType is defined as a string and all OrgIdType instances SHOULD | |||
convention: "namespace:value" (for example "iana-en:32473"). See the | follow the textual convention: "namespace:value" (for example "iana- | |||
IANA Consideration section for more details. | en:32473"). See the IANA Consideration section for more details. | |||
6. Protocol Commands | 5.2. Object Key Type | |||
This section provides a description of each supported protocol | The SPPP data model contains some object relationships. In some | |||
command. | cases these object relationships are established by embedding the | |||
unique identity of the related object inside the relating object. | ||||
The abstract type called ObjKeyType is where this unique identity is | ||||
housed. Because this objec type is abstract, it MUST be specifid in | ||||
a concrete form in any conforming SPPP "transport specification". | ||||
This may also be used in query/getter operaitons. | ||||
6.1. Add Destination Group Operation | <complexType name="ObjKeyType" abstract="true"> | |||
<annotation> | ||||
<documentation> | ||||
-- Generic type that represents the | ||||
key for various objects in SPPP. -- | ||||
</documentation> | ||||
</annotation> | ||||
</complexType> | ||||
As described in the introductory sections, a Destination Group | 6. Protocol Data Model Objects | |||
represents a set of Public Identifiers with common routing | ||||
information. | ||||
The AddDestGrpRqstType operation creates or overwrites a Destination | This section provides a description of the specification of each | |||
Group object. If a Destination Group with the given name and | supported data model object (the nouns) and identifies the commands | |||
registrant ID (which together comprise the unique key for a | (the verbs) that MUST be supported for each data model object. | |||
Destination Group) does not exist, then the server MUST create the | However, the specification of the data structures necessary to | |||
Destination Group. If a Destination Group with the given name and | support each command is delegated to the transport specification. | |||
registrant ID does exist, then the server MUST replace the current | ||||
properties of the Destination Group with the properties passed into | ||||
the AddDestGrpsRqstType operation. The XSD declarations of the | ||||
operation request object are as follows: | ||||
<complexType name="AddDestGrpRqstType"> | 6.1. Destination Group | |||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="destGrp" type="spppb:DestGrpType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The element passed into the spppUpdateRequest element for this | As described in the introductory sections, a Destination Group | |||
operation is an element of type AddDestGrpRqsttype, which extends | represents a set of Public Identifiers with common routing | |||
BasicUpdateRqstType and contains a DestGrpType object. The | information. The transport protocol MUST support the ability to | |||
DestGrpType object structure is defined as follows: | Create, Modify, Get, and Delete Destination Groups. The DestGrpType | |||
object structure is defined as follows: | ||||
<complexType name="DestGrpType"> | <complexType name="DestGrpType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:BasicObjType"> | <extension base="spppb:BasicObjType"> | |||
<sequence> | <sequence> | |||
<element name="dgName" type="spppb:ObjNameType"/> | <element name="dgName" type="spppb:ObjNameType"/> | |||
</sequence> | </sequence> | |||
</extension> | </extension> | |||
</complexContent> | </complexContent> | |||
</complexType> | </complexType> | |||
The DestGrpType object is composed of the following elements: | The DestGrpType object is composed of the following elements: | |||
o base: All first class objects extend BasicObjType that contains | o base: All first class objects extend BasicObjType that contains | |||
the ID of the registrant organization that owns this object, the | the ID of the registrant organization that owns this object, the | |||
date and time that the object was created by the server, and the | date and time that the object was created by the server, and the | |||
date and time that the object was last modified. If the client | date and time that the object was last modified. If the client | |||
passed in either the created date or the modification date, the | passed in either the created date or the modification date, the | |||
skipping to change at page 27, line 26 | skipping to change at page 18, line 5 | |||
values. | values. | |||
o dgName: The character string that contains the name of the | o dgName: The character string that contains the name of the | |||
Destination Group. This uniquely identifies this object within | Destination Group. This uniquely identifies this object within | |||
the context of the registrant ID (a child element of the base | the context of the registrant ID (a child element of the base | |||
element as described above). | element as described above). | |||
o ext: Point of extensibility described in a previous section of | o ext: Point of extensibility described in a previous section of | |||
this document. | this document. | |||
As with the responses to all update operations, the result of the | 6.2. Public Identifier | |||
AddDestGrpRqstType operation is contained in the generic | ||||
spppUpdateResponse data structure described in an earlier sections of | ||||
this document. For a detailed description of the spppUpdateResponse | ||||
data structure refer to that section of the document. | ||||
6.2. Get Destination Groups Operation | ||||
The getDestGrpsRqst operation allows an SPPP client to get the | ||||
properties of Destination Group objects that a registrar is | ||||
authorized to view on behalf of the registrant. The server will | ||||
attempt to find a Destination Group object that has the registrant ID | ||||
and destination group name pair contained in each ObjKeyType object | ||||
instance. If there are no matching Destination Groups found then an | ||||
empty result set will be returned. If no ObjKeyType objects are | ||||
found in the request then the server will return the list of all | ||||
Destination Group objects in the registry. If no matching records | ||||
can be located then an empty result set will be returned. | ||||
The element passed into the spppQueryRequest element for this | ||||
operation is an instance of type GetDestGrpsRqstType, which extends | ||||
BasicQueryRqstType and contains zero or more ObjKeyType objects. Any | ||||
limitation on the maximum number of objects that may be passed into | ||||
or returned by this operation is a policy decision and not limited by | ||||
the protocol. The XSD declaration of the operation is as follows: | ||||
<complexType name="GetDestGrpsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
As described in an earlier section of this document, the result of | ||||
any spppQueryRequest operation is an spppQueryResponse element that | ||||
contains the overall response code and the query result set, if any. | ||||
Refer to that section of the document for a detailed description of | ||||
the spppQueryResponse element. | ||||
6.3. Add Public Identifier Operation | ||||
A Public Identifier is the search key used for locating the session | A Public Identifier is the search key used for locating the session | |||
establishment data (SED). In many cases, a Public Identifier is | establishment data (SED). In many cases, a Public Identifier is | |||
attributed to the end user who has a retail relationship with the | attributed to the end user who has a retail relationship with the | |||
service provider or registrant organization. SPPP supports the | service provider or registrant organization. SPPP supports the | |||
notion of the carrier-of-record as defined in [RFC5067]. Therefore, | notion of the carrier-of-record as defined in [RFC5067]. Therefore, | |||
the registrant under whom the Public Identity is being created can | the registrant under whom the Public Identity is being created can | |||
optionally claim to be a carrier-of-record. | optionally claim to be a carrier-of-record. | |||
SPPP identifies two types of Public Identifiers: telephone numbers | SPPP identifies two types of Public Identifiers: telephone numbers | |||
(TN), and the routing numbers (RN). SPPP provides structures to | (TN), and the routing numbers (RN). SPPP provides structures to | |||
manage a single TN, a contiguous range of TNs, and a TN prefix. | manage a single TN, a contiguous range of TNs, and a TN prefix. The | |||
transport protocol MUST support the ability to Create, Modify, Get, | ||||
and Delete Public Identifiers. | ||||
The abstract XML schema type definition PubIDType is a generalization | The abstract XML schema type definition PubIDType is a generalization | |||
for the concrete the Public Identifier schema types. PubIDType | for the concrete the Public Identifier schema types. PubIDType | |||
element 'dgName' represents the name of the destination group that a | element 'dgName' represents the name of the destination group that a | |||
given Public Identifier is a member of. Because a Destination Group | given Public Identifier is a member of. Because a Destination Group | |||
is uniquely identified by its composite business key, which is | is uniquely identified by its composite business key, which is | |||
comprised of its registrant ID, rantId, and its name, dgName, the | comprised of its registrant ID, rantId, and its name, dgName, the | |||
Public Identity's containing Destination Group is identified by the | Public Identity's containing Destination Group is identified by the | |||
Public Identity's dgName element and the Public Identity's registrant | Public Identity's dgName element and the Public Identity's registrant | |||
ID, rantId, element. The PubIDType object structure is defined as | ID, rantId, element. The PubIDType object structure is defined as | |||
follows: | follows: | |||
<complexType name="PubIdType" abstract="true"> | <complexType name="PubIdType" abstract="true"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:BasicObjType"> | <extension base="spppb:BasicObjType"> | |||
<sequence> | <sequence> | |||
<element name="dgName" type="spppb:ObjNameType" minOccurs="0"/> | <element name="dgName" type="spppb:ObjNameType" | |||
</sequence> | minOccurs="0"/> | |||
</extension> | </sequence> | |||
</complexContent> | </extension> | |||
</complexType> | </complexContent> | |||
</complexType> | ||||
A registrant can add a Public Identifier using the AddPubIdRqstType | A Public Identifier may be provisioned as a member of a Destination | |||
operation. To complete the add request, AddPubIdRqstType XML | Group or provisioned outside of a Destination Group. A Public | |||
instance is populated into the <spppUpdateRequest> element. A Public | Identifier that is provisioned as a member of a Destination Group is | |||
Identifier may be provisioned as a member of a Destination Group or | intended to be associated with its SED through the Route Group(s) | |||
provisioned outside of a Destination Group. A Public Identifier that | that are associated with its containing Destination Group. A Public | |||
is provisioned as a member of a Destination Group is intended to be | ||||
associated with its SED through the Route Group(s) that are | ||||
associated with its containing Destination Group. A Public | ||||
Identifier that is not provisioned as a member of a Destination Group | Identifier that is not provisioned as a member of a Destination Group | |||
is intended to be associated with its SED through the Route Records | is intended to be associated with its SED through the Route Records | |||
that are directly associated with the Public Identifier. If a Public | that are directly associated with the Public Identifier. | |||
Identifier being added already exists then that Public Identifier | ||||
will be replaced with the newly provisioned Public Identifier. | ||||
A telephone number is provisioned using the TNType, an extension of | A telephone number is provisioned using the TNType, an extension of | |||
PubIDType. Each TNType object is uniquely identified by the | PubIDType. Each TNType object is uniquely identified by the | |||
combination of its <tn> element, and the unique key of its parent | combination of its <tn> element, and the unique key of its parent | |||
Destination Group (dgName and rantId). In other words a given | Destination Group (dgName and rantId). In other words a given | |||
telephone number string may exist within one or more Destination | telephone number string may exist within one or more Destination | |||
Groups, but must not exist more than once within a Destination Group. | Groups, but must not exist more than once within a Destination Group. | |||
TNType is defined as follows: | TNType is defined as follows: | |||
<complexType name="TNType"> | <complexType name="TNType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:PubIdType"> | <extension base="spppb:PubIdType"> | |||
<sequence> | <sequence> | |||
<element name="tn" type="string"/> | <element name="tn" type="spppb:NumberType"/> | |||
<element name="rrRef" type="spppb:RteRecRefType" | <element name="rrRef" type="spppb:RteRecRefType" | |||
minOccurs="0" maxOccurs="unbounded"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
<element name="corInfo" type="spppb:CORInfoType" | <element name="corInfo" type="spppb:CORInfoType" | |||
minOccurs="0"/> | minOccurs="0"/> | |||
</sequence> | </sequence> | |||
</extension> | </extension> | |||
</complexContent> | </complexContent> | |||
</complexType> | </complexType> | |||
<simpleType name="NumberType"> | ||||
<restriction base="token"> | ||||
<maxLength value="20"/> | ||||
<pattern value="\+?\d\d*"/> | ||||
</restriction> | ||||
</simpleType> | ||||
TNType consists of the following attributes: | TNType consists of the following attributes: | |||
o tn: Telephone number to be added to the registry. | o tn: Telephone number to be added to the registry. | |||
o rrRef: Optional reference to route records that are directly | o rrRef: Optional reference to route records that are directly | |||
associated with the TN Public Identifier. Following the SPPP | associated with the TN Public Identifier. Following the SPPP | |||
data model, the route record could be a protocol agnostic | data model, the route record could be a protocol agnostic | |||
URIType or another type. | URIType or another type. | |||
skipping to change at page 31, line 5 | skipping to change at page 20, line 30 | |||
to leverage the RN search key to discover the ingress routes for | to leverage the RN search key to discover the ingress routes for | |||
session establishment. Therefore, the registrant organization can | session establishment. Therefore, the registrant organization can | |||
add the RN and associate it with the appropriate destination group to | add the RN and associate it with the appropriate destination group to | |||
share the route information. Each RNType object is uniquely | share the route information. Each RNType object is uniquely | |||
identified by the combination of its <rn> element, and the unique key | identified by the combination of its <rn> element, and the unique key | |||
of its parent Destination Group (dgName and rantId). In other words | of its parent Destination Group (dgName and rantId). In other words | |||
a given routing number string may exist within one or more | a given routing number string may exist within one or more | |||
Destination Groups, but must not exist more than once within a | Destination Groups, but must not exist more than once within a | |||
Destination Group. RNType is defined as follows: | Destination Group. RNType is defined as follows: | |||
<complexType name="RNType"> | <complexType name="RNType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:PubIdType"> | <extension base="spppb:PubIdType"> | |||
<sequence> | <sequence> | |||
<element name="rn" type="string"/> | <element name="rn" type="spppb:NumberType"/> | |||
<element name="corInfo" type="spppb:CORInfoType" | <element name="corInfo" type="spppb:CORInfoType" | |||
minOccurs="0"/> | minOccurs="0"/> | |||
</sequence> | </sequence> | |||
</extension> | </extension> | |||
</complexContent> | </complexContent> | |||
</complexType> | </complexType> | |||
RNType has the following attributes: | RNType has the following attributes: | |||
o rn: Routing Number used as the search key | o rn: Routing Number used as the search key. | |||
o corInfo: Optional <corInfo> element of type CORInfoType. | o corInfo: Optional <corInfo> element of type CORInfoType. | |||
TNRType structure is used to provision a contiguous range of | TNRType structure is used to provision a contiguous range of | |||
telephone numbers. The object definition requires a starting TN and | telephone numbers. The object definition requires a starting TN and | |||
an ending TN that together define the span of the TN range. Use of | an ending TN that together define the span of the TN range. Use of | |||
TNRType is particularly useful when expressing a TN range that does | TNRType is particularly useful when expressing a TN range that does | |||
not include all the TNs within a TN block or prefix. The TNRType | not include all the TNs within a TN block or prefix. The TNRType | |||
definition accommodates the open number plan as well such that the | definition accommodates the open number plan as well such that the | |||
TNs that fall between the start and end TN range may include TNs with | TNs that fall between the start and end TN range may include TNs with | |||
different length variance. Whether the registry can accommodate the | different length variance. Whether the registry can accommodate the | |||
open number plan semantics is a matter of policy and is beyond the | open number plan semantics is a matter of policy and is beyond the | |||
scope of this document. Each TNRType object is uniquely identified | scope of this document. Each TNRType object is uniquely identified | |||
by the combination of its <startTn> and <endTn> elements, and the | by the combination of its <startTn> and <endTn> elements, and the | |||
unique key of its parent Destination Group (dgName and rantId). In | unique key of its parent Destination Group (dgName and rantId). In | |||
other words a given TN Range may exist within one or more Destination | other words a given TN Range may exist within one or more Destination | |||
Groups, but must not exist more than once within a Destination Group. | Groups, but must not exist more than once within a Destination Group. | |||
TNRType object structure definition is as follows: | TNRType object structure definition is as follows: | |||
<complexType name="TNRType"> | <complexType name="TNRType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:PubIdType"> | <extension base="spppb:PubIdType"> | |||
<sequence> | <sequence> | |||
<element name="startTn" type="string"/> | <element name="startTn" type="spppb:NumberType"/> | |||
<element name="endTn" type="string"/> | <element name="endTn" type="spppb:NumberType"/> | |||
<element name="corInfo" type="spppb:CORInfoType" | <element name="corInfo" type="spppb:CORInfoType" | |||
minOccurs="0"/> | minOccurs="0"/> | |||
</sequence> | </sequence> | |||
</extension> | </extension> | |||
</complexContent> | </complexContent> | |||
</complexType> | ||||
</complexType> | ||||
TNRType has the following attributes: | TNRType has the following attributes: | |||
o startTn: Starting TN in the TN range | o startTn: Starting TN in the TN range | |||
o endTn: The last TN in the TN range | o endTn: The last TN in the TN range | |||
o corInfo: Optional <corInfo> element of type CORInfoType | o corInfo: Optional <corInfo> element of type CORInfoType | |||
In some cases, it is useful to describe a set of TNs with the help of | In some cases, it is useful to describe a set of TNs with the help of | |||
skipping to change at page 32, line 27 | skipping to change at page 22, line 7 | |||
telephone number prefix or a block. A given TN prefix may include | telephone number prefix or a block. A given TN prefix may include | |||
TNs with different length variance in support of open number plan. | TNs with different length variance in support of open number plan. | |||
Once again, whether the registry supports the open number plan | Once again, whether the registry supports the open number plan | |||
semantics is a matter of policy and it is beyond the scope of this | semantics is a matter of policy and it is beyond the scope of this | |||
document. The TNPType data structure is used to provision a TN | document. The TNPType data structure is used to provision a TN | |||
prefix. Each TNPType object is uniquely identified by the | prefix. Each TNPType object is uniquely identified by the | |||
combination of its <tnPrefix> element, and the unique key of its | combination of its <tnPrefix> element, and the unique key of its | |||
parent Destination Group (dgName and rantId). TNPType is defined as | parent Destination Group (dgName and rantId). TNPType is defined as | |||
follows: | follows: | |||
<complexType name="TNPType"> | <complexType name="TNPType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:PubIdType"> | <extension base="spppb:PubIdType"> | |||
<sequence> | <sequence> | |||
<element name="tnPrefix" type="string"/> | <element name="tnPrefix" type="spppb:NumberType"/> | |||
<element name="corInfo" type="spppb:CORInfoType" | <element name="corInfo" type="spppb:CORInfoType" | |||
minOccurs="0"/> | minOccurs="0"/> | |||
</sequence> | </sequence> | |||
</extension> | </extension> | |||
</complexContent> | </complexContent> | |||
</complexType> | </complexType> | |||
TNPType consists of the following attributes: | TNPType consists of the following attributes: | |||
o tnPrefix: The telephone number prefix | o tnPrefix: The telephone number prefix | |||
o corInfo: Optional <corInfo> element of type CORInfoType. | o corInfo: Optional <corInfo> element of type CORInfoType. | |||
The object structure of AddPubIdRqstType is used to add Public | 6.3. Route Group | |||
Identifiers is as follows | ||||
<complexType name="AddPubIdRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="pi" type="spppb:PubIdType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
6.4. Get Public Identifiers Operation | ||||
The SPPP client can use the GetPubIdsRqstType in the | ||||
<spppQueryRequest> structure to obtain information about one or more | ||||
<pi> objects. If no matching Public Identifiers are found, then an | ||||
empty result set is returned. | ||||
GetPubIdsRqstType object structure is as follows: | ||||
<complexType name="GetPubIdsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="pi" type="spppb:PubIdType" | ||||
maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
As described earlier in the document, the result of any | ||||
spppQueryRequest operation is a spppQueryResponse that contains the | ||||
response code and the query result set, if any. | ||||
6.5. Add Route Group Operation | ||||
As described in the introductory sections, a Route Group represents a | As described in the introductory sections, a Route Group represents a | |||
combined grouping of Route Records that define route information, | combined grouping of Route Records that define route information, | |||
Destination Groups that contain a set of Public Identifiers with | Destination Groups that contain a set of Public Identifiers with | |||
common routing information, and the list of peer organizations that | common routing information, and the list of peer organizations that | |||
have access to these public identifiers using this route information. | have access to these public identifiers using this route information. | |||
It is this indirect linking of public identifiers to their route | It is this indirect linking of public identifiers to their route | |||
information that significantly improves the scalability and | information that significantly improves the scalability and | |||
manageability of the peering data. Additions and changes to routing | manageability of the peering data. Additions and changes to routing | |||
information are reduced to a single operation on a Route Group or | information are reduced to a single operation on a Route Group or | |||
Route Record , rather than millions of data updates to individual | Route Record , rather than millions of data updates to individual | |||
public identifier records that individually contain their peering | public identifier records that individually contain their peering | |||
data. | data. The transport protocol MUST support the ability to Create, | |||
Modify, Get, and Delete Route Groups. The RteGrpType object | ||||
The AddRteGrpRqstType operation creates or overwrites a Route Group | structure is defined as follows: | |||
object. If a Route Group with the given name and registrant ID | ||||
(which together comprise the unique key or a Route Group) does not | ||||
exist, then the server MUST create the Route Group. If a Route Group | ||||
with the given name and registrant ID does exist, then the server | ||||
MUST replace the current properties of the Route Group with the | ||||
properties passed into the AddRteGrpRqstType operation. The XSD | ||||
declarations of the AddRteGrpRqstType operation request object are as | ||||
follows: | ||||
<complexType name="AddRteGrpRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrp" type="spppb:RteGrpType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The element passed into the spppUpdateRequest element for this | ||||
operation is an instance of AddRteGrpRqstType, which extends | ||||
BasicUpdateRqstType and contains one RteGrpType object. The | ||||
RteGrpType object structure is defined as follows: | ||||
<complexType name="RteGrpType"> | <complexType name="RteGrpType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:BasicObjType"> | <extension base="spppb:BasicObjType"> | |||
<sequence> | <sequence> | |||
<element name="rgName" type="spppb:ObjNameType"/> | <element name="rgName" type="spppb:ObjNameType"/> | |||
<element name="rrRef" type="spppb:RteRecRefType" | <element name="rrRef" type="spppb:RteRecRefType" | |||
minOccurs="0" maxOccurs="unbounded"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
<element name="dgName" type="spppb:ObjNameType" minOccurs="0" | <element name="dgName" type="spppb:ObjNameType" | |||
maxOccurs="unbounded"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
<element name="peeringOrg" type="spppb:OrgIdType" | <element name="peeringOrg" type="spppb:OrgIdType" | |||
minOccurs="0" maxOccurs="unbounded"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
<element name="sourceIdent" type="spppb:SourceIdentType" | <element name="sourceIdent" | |||
minOccurs="0" maxOccurs="unbounded"/> | type="spppb:SourceIdentType" | |||
<element name="isInSvc" type="boolean"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
<element name="priority" type="unsignedShort"/> | <element name="isInSvc" type="boolean"/> | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | <element name="priority" type="unsignedShort"/> | |||
</sequence> | <element name="ext" type="spppb:ExtAnyType" | |||
</extension> | minOccurs="0"/> | |||
</complexContent> | </sequence> | |||
</complexType> | </extension> | |||
</complexContent> | ||||
</complexType> | ||||
<complexType name="RteRecRefType"> | <complexType name="RteRecRefType"> | |||
<sequence> | <sequence> | |||
<element name="rrKey" type="spppb:ObjKeyType"/> | <element name="rrKey" type="spppb:ObjKeyType"/> | |||
<element name="priority" type="unsignedShort"/> | <element name="priority" type="unsignedShort"/> | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | <element name="ext" type="spppb:ExtAnyType" | |||
minOccurs="0"/> | ||||
</sequence> | </sequence> | |||
</complexType> | </complexType> | |||
The RteGrpType object is composed of the following elements: | The RteGrpType object is composed of the following elements: | |||
o base: All first class objects extend BasicObjType that contains | o base: All first class objects extend BasicObjType that contains | |||
the ID of the registrant organization that owns this object, the | the ID of the registrant organization that owns this object, the | |||
date and time that the object was created by the server, and the | date and time that the object was created by the server, and the | |||
date and time that the object was last modified. If the client | date and time that the object was last modified. If the client | |||
passes in either the created date or the modification date, the | passes in either the created date or the modification date, the | |||
skipping to change at page 37, line 27 | skipping to change at page 25, line 30 | |||
characteristics of the Source URI, and Source IP address, and root | characteristics of the Source URI, and Source IP address, and root | |||
domain of the lookup key being queried. The resolution server then | domain of the lookup key being queried. The resolution server then | |||
compares these criteria against the source identity criteria | compares these criteria against the source identity criteria | |||
associated with the Route Groups. The routing information contained | associated with the Route Groups. The routing information contained | |||
in Route Groups that have source based routing criteria will only be | in Route Groups that have source based routing criteria will only be | |||
included in the resolution response if one or more of the criteria | included in the resolution response if one or more of the criteria | |||
matches the source criteria from the resolution request. The Source | matches the source criteria from the resolution request. The Source | |||
Identity data element is of type SourceIdentType, whose structure is | Identity data element is of type SourceIdentType, whose structure is | |||
defined as follows: | defined as follows: | |||
<complexType name="SourceIdentType"> | <complexType name="SourceIdentType"> | |||
<sequence> | <sequence> | |||
<element name="sourceIdentLabel" type="string"/> | <element name="sourceIdentLabel" type="token"/> | |||
<element name="sourceIdentScheme" | <element name="sourceIdentScheme" | |||
type="spppb:SourceIdentSchemeType"/> | type="spppb:SourceIdentSchemeType"/> | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | <element name="ext" type="spppb:ExtAnyType" | |||
</sequence> | minOccurs="0"/> | |||
</complexType> | </sequence> | |||
</complexType> | ||||
<simpleType name="SourceIdentSchemeType"> | <simpleType name="SourceIdentSchemeType"> | |||
<restriction base="token"> | <restriction base="token"> | |||
<enumeration value="uri"/> | <enumeration value="uri"/> | |||
<enumeration value="ip"/> | <enumeration value="ip"/> | |||
<enumeration value="rootDomain"/> | <enumeration value="rootDomain"/> | |||
</restriction> | </restriction> | |||
</simpleType> | </simpleType> | |||
The SourceIdentType object is composed of the following data | The SourceIdentType object is composed of the following data | |||
elements: | elements: | |||
o sourceIdentScheme: The source identification scheme that this | o sourceIdentScheme: The source identification scheme that this | |||
source identification criteria applies to and that the | source identification criteria applies to and that the | |||
associated sourceIdentRegex should be matched against. | associated sourceIdentRegex should be matched against. | |||
o sourceIdentRegex: The regular expression that should be used to | o sourceIdentRegex: The regular expression that should be used to | |||
test for a match against the portion of the resolution request | test for a match against the portion of the resolution request | |||
skipping to change at page 38, line 18 | skipping to change at page 26, line 23 | |||
o ext: Point of extensibility described in a previous section of | o ext: Point of extensibility described in a previous section of | |||
this document. | this document. | |||
As with the responses to all update operations, the result of the | As with the responses to all update operations, the result of the | |||
AddRteGrpRqstType operation is contained in the generic | AddRteGrpRqstType operation is contained in the generic | |||
spppUpdateResponse data structure described in an earlier sections of | spppUpdateResponse data structure described in an earlier sections of | |||
this document. For a detailed description of the spppUpdateResponse | this document. For a detailed description of the spppUpdateResponse | |||
data structure refer to that section of the document. | data structure refer to that section of the document. | |||
6.6. Get Route Groups Operation | 6.4. Route Record | |||
The getRteGrpsRqst operation allows an SPPP client to get the | ||||
properties of Route Group objects that the registrar is authorized to | ||||
view on behalf of the registrant. The server will attempt to find a | ||||
Route Group object that has the registrant ID and route group name | ||||
pair contained in each ObjKeyType object instance. If no ObjKeyType | ||||
objects are found in the request then the server will return the list | ||||
of all Route Group objects that belongs to the registrant. If there | ||||
are no matching Route Groups found then an empty result set will be | ||||
returned. | ||||
The element passed into the spppQueryRequest element for this | ||||
operation is an instance of type GetRteGrpsRqstType, which extends | ||||
BasicUpdateRqstType and contains zero or more ObjKeyType objects. | ||||
Any limitation on the maximum number of objects that may be passed | ||||
into or returned by this operation is a policy decision and not | ||||
limited by the protocol. The XSD declaration of the operation is as | ||||
follows: | ||||
<complexType name="GetRteGrpsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
As described in an earlier section of this document, the result of | ||||
any spppQueryRequest operation is an spppQueryResponse element that | ||||
contains the overall response code and the query result set, if any. | ||||
Refer to that section of the document for a detailed description of | ||||
the spppQueryResponse element. | ||||
6.7. Add Route Record Operation | ||||
As described in the introductory sections, a Route Group represents a | As described in the introductory sections, a Route Group represents a | |||
combined grouping of Route Records that define route information. | combined grouping of Route Records that define route information. | |||
However, Route Records need not be created to just serve a single | However, Route Records need not be created to just serve a single | |||
Route Group. Route Records can be created and managed to serve | Route Group. Route Records can be created and managed to serve | |||
multiple Route Groups. As a result, a change to the properties of a | multiple Route Groups. As a result, a change to the properties of a | |||
network node used for multiple routes, would necessitate just a | network node used for multiple routes, would necessitate just a | |||
single update operation to change the properties of that node. The | single update operation to change the properties of that node. The | |||
change would then be reflected in all the Route Groups whose route | change would then be reflected in all the Route Groups whose route | |||
record set contains a reference to that node. | record set contains a reference to that node. The transport protocol | |||
MUST support the ability to Create, Modify, Get, and Delete Route | ||||
The AddRteRecRqstType operation creates or overwrites a Route Record | Records. The RteRecType object structure is defined as follows: | |||
object. If a Route Record with the given name and registrant ID | ||||
(which together comprise the unique key or a Route Record) does not | ||||
exist, then the server MUST create the Route Record. If a Route | ||||
Record with the given name and registrant ID does exist, then the | ||||
server MUST replace the current properties of the Route Record with | ||||
the properties passed into the AddRteRecRqstType operation. The XSD | ||||
declarations of the AddRteRecRqstType operation request object are as | ||||
follows: | ||||
<complexType name="AddRteRecRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteRec" type="spppb:RteRecType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The element passed into the spppUpdateRequest element for this | ||||
operation is an instance of AddRteRecRqstType, which extends | ||||
BasicUpdateRqstType and contains one RteRecType object. The | ||||
RteRecType object structure is defined as follows: | ||||
<complexType name="RteRecType" abstract="true"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicObjType"> | ||||
<sequence> | ||||
<element name="rrName" type="spppb:ObjNameType"/> | ||||
<element name="priority" type="unsignedShort" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="RteRecType" abstract="true"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicObjType"> | ||||
<sequence> | ||||
<element name="rrName" type="spppb:ObjNameType"/> | ||||
<element name="priority" type="unsignedShort" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The RteRecType object is composed of the following elements: | The RteRecType object is composed of the following elements: | |||
o base: All first class objects extend BasicObjType that contains | o base: All first class objects extend BasicObjType that contains | |||
the ID of the registrant organization that owns this object, the | the ID of the registrant organization that owns this object, the | |||
date and time that the object was created by the server, and the | date and time that the object was created by the server, and the | |||
date and time that the object was last modified. If the client | date and time that the object was last modified. If the client | |||
passes in either the created date or the modification date, the | passes in either the created date or the modification date, the | |||
server will ignore them. The server sets these two date/time | server will ignore them. The server sets these two date/time | |||
values. | values. | |||
skipping to change at page 41, line 13 | skipping to change at page 27, line 49 | |||
SIP and ENUM protocols. When a given URIType is associated to a | SIP and ENUM protocols. When a given URIType is associated to a | |||
destination group, the user part of the replacement string <uri> that | destination group, the user part of the replacement string <uri> that | |||
may require the Public Identifier cannot be preset. As a SIP | may require the Public Identifier cannot be preset. As a SIP | |||
Redirect, the resolution server will apply <ere> pattern on the input | Redirect, the resolution server will apply <ere> pattern on the input | |||
Public Identifier in the query and process the replacement string by | Public Identifier in the query and process the replacement string by | |||
substituting any back reference(s) in the <uri> to arrive at the | substituting any back reference(s) in the <uri> to arrive at the | |||
final URI that is returned in the SIP Contact header. For an ENUM | final URI that is returned in the SIP Contact header. For an ENUM | |||
query, the resolution server will simply return the value of the | query, the resolution server will simply return the value of the | |||
<ere> and <uri> members of the URIType in the NAPTR REGEX parameter. | <ere> and <uri> members of the URIType in the NAPTR REGEX parameter. | |||
<complexType name="NAPTRType"> | <complexType name="NAPTRType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:RteRecType"> | <extension base="spppb:RteRecType"> | |||
<sequence> | <sequence> | |||
<element name="order" type="unsignedShort"/> | <element name="order" type="unsignedShort"/> | |||
<element name="flags" type="string" minOccurs="0"/> | <element name="flags" type="spppb:FlagsType" | |||
<element name="svcs" type="string"/> | minOccurs="0"/> | |||
<element name="regx" type="spppb:RegexParamType" | <element name="svcs" type="spppb:SvcType"/> | |||
minOccurs="0"/> | <element name="regx" type="spppb:RegexParamType" | |||
<element name="repl" type="string" minOccurs="0"/> | minOccurs="0"/> | |||
<element name="ttl" type="positiveInteger" minOccurs="0"/> | <element name="repl" type="spppb:ReplType" | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | minOccurs="0"/> | |||
</sequence> | <element name="ttl" type="positiveInteger" | |||
</extension> | minOccurs="0"/> | |||
</complexContent> | <element name="ext" type="spppb:ExtAnyType" | |||
</complexType> | minOccurs="0"/> | |||
</sequence> | ||||
<complexType name="NSType"> | </extension> | |||
<complexContent> | </complexContent> | |||
<extension base="spppb:RteRecType"> | </complexType> | |||
<sequence> | ||||
<element name="hostName" type="string"/> | ||||
<element name="ipAddr" type="spppb:IPAddrType" minOccurs="0" | ||||
maxOccurs="unbounded"/> | ||||
<element name="ttl" type="positiveInteger" minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="IPAddrType"> | <complexType name="NSType"> | |||
<sequence> | <complexContent> | |||
<element name="addr" type="string"/> | <extension base="spppb:RteRecType"> | |||
<element name="type" type="spppb:IPType"/> | <sequence> | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | <element name="hostName" type="token"/> | |||
</sequence> | <element name="ipAddr" type="spppb:IPAddrType" | |||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="ttl" type="positiveInteger" | ||||
minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
</complexType> | <complexType name="IPAddrType"> | |||
<sequence> | ||||
<element name="addr" type="spppb:AddrStringType"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
<attribute name="type" type="spppb:IPType" | ||||
default="v4"/> | ||||
</complexType> | ||||
<simpleType name="IPType"> | <simpleType name="IPType"> | |||
<restriction base="token"> | <restriction base="token"> | |||
<enumeration value="IPv4"/> | <enumeration value="IPv4"/> | |||
<enumeration value="IPv6"/> | <enumeration value="IPv6"/> | |||
</restriction> | </restriction> | |||
</simpleType> | </simpleType> | |||
<complexType name="URIType"> | <complexType name="URIType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:RteRecType"> | <extension base="spppb:RteRecType"> | |||
<sequence> | <sequence> | |||
<element name="ere" type="string" default="^(.*)$"/> | <element name="ere" type="token" | |||
<element name="uri" type="string"/> | default="^(.*)$"/> | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | <element name="uri" type="anyURI"/> | |||
</sequence> | <element name="ext" type="spppb:ExtAnyType" | |||
</extension> | minOccurs="0"/> | |||
</complexContent> | </sequence> | |||
</complexType> | </extension> | |||
</complexContent> | ||||
</complexType> | ||||
<simpleType name="flagsType"> | ||||
<restriction base="token"> | ||||
<length value="1"/> | ||||
<pattern value="[A-Z]|[a-z]|[0-9]"/> | ||||
</restriction> | ||||
</simpleType> | ||||
The NAPTRType object is composed of the following elements: | The NAPTRType object is composed of the following elements: | |||
o order: Order value in an ENUM NAPTR, relative to other NAPTRType | o order: Order value in an ENUM NAPTR, relative to other NAPTRType | |||
objects in the same Route Group. | objects in the same Route Group. | |||
o svcs: ENUM service(s) that are served by the SBE. This field's | o svcs: ENUM service(s) that are served by the SBE. This field's | |||
value must be of the form specified in [RFC6116] (e.g., E2U+ | value must be of the form specified in [RFC6116] (e.g., E2U+ | |||
pstn:sip+sip). The allowable values are a matter of policy and | pstn:sip+sip). The allowable values are a matter of policy and | |||
not limited by this protocol. | not limited by this protocol. | |||
skipping to change at page 43, line 25 | skipping to change at page 30, line 30 | |||
The URIType object is composed of the following elements: | The URIType object is composed of the following elements: | |||
o ere: The POSIX Extended Regular Expression (ere) as defined in | o ere: The POSIX Extended Regular Expression (ere) as defined in | |||
[RFC3986]. | [RFC3986]. | |||
o uri: the URI as defined in [RFC3986]. In some cases, this will | o uri: the URI as defined in [RFC3986]. In some cases, this will | |||
serve as the replacement string and it will be left to the | serve as the replacement string and it will be left to the | |||
resolution server to arrive at the final usable URI. | resolution server to arrive at the final usable URI. | |||
As with the responses to all update operations, the result of the | 6.5. Route Group Offer | |||
AddRteRecRqstType operation is contained in the generic | ||||
spppUpdateResponse data structure described in an earlier sections of | ||||
this document. For a detailed description of the spppUpdateResponse | ||||
data structure refer to that section of the document. | ||||
6.8. Get Route Records Operation | ||||
The getRteRecsRqst operation allows an SPPP client to get the | ||||
properties of Route Record objects that a registrar is authorized to | ||||
view on behalf of the registrant. The server will attempt to find a | ||||
Route Record object that has the registrant ID and route record name | ||||
pair contained in each ObjKeyType object instance. If no ObjKeyType | ||||
objects are found in the request then the server will return the list | ||||
of all Route Record that belongs to the registrant. If there are no | ||||
matching Route Record found then an empty result set will be | ||||
returned. | ||||
The element passed into the spppQueryRequest element for this | ||||
operation is an instance of type GetRteRecsRqstType, which extends | ||||
BasicUpdateRqstType and contains zero or more ObjKeyType objects. | ||||
Any limitation on the maximum number of objects that may be passed | ||||
into or returned by this operation is a policy decision and not | ||||
limited by the protocol. The XSD declaration of the operation is as | ||||
follows: | ||||
<complexType name="GetRteRecsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
As described in an earlier section of this document, the result of | ||||
any spppQueryRequest operation is an spppQueryResponse element that | ||||
contains the overall response code and the query result set, if any. | ||||
Refer to that section of the document for a detailed description of | ||||
the spppQueryResponse element. | ||||
6.9. Add Route Group Offer Operation | ||||
The list of peer organizations whose resolution responses can include | The list of peer organizations whose resolution responses can include | |||
the routing information contained in a given Route Group is | the routing information contained in a given Route Group is | |||
controlled by the organization to which a Route Group object belongs | controlled by the organization to which a Route Group object belongs | |||
(its registrant), and the peer organization that submits resolution | (its registrant), and the peer organization that submits resolution | |||
requests (a data recipient, also know as a peering organization). | requests (a data recipient, also know as a peering organization). | |||
The registrant offers access to a Route Group by submitting a Route | The registrant offers access to a Route Group by submitting a Route | |||
Group Offer. The data recipient can then accept or reject that | Group Offer. The data recipient can then accept or reject that | |||
offer. Not until access to a Route Group has been offered and | offer. Not until access to a Route Group has been offered and | |||
accepted will the data recipient's organization ID be included in the | accepted will the data recipient's organization ID be included in the | |||
peeringOrg list in a Route Group object, and that Route Group's | peeringOrg list in a Route Group object, and that Route Group's | |||
peering information become a candidate for inclusion in the responses | peering information become a candidate for inclusion in the responses | |||
to the resolution requests submitted by that data recipient. The | to the resolution requests submitted by that data recipient. The | |||
AddRteGrpOffersRqstType operation creates or overwrites one or more | transport protocol MUST support the ability to Create, Modify, Get, | |||
Route Group Offer objects. If a Route Group Offer for the given | Delete, Accept and Reject Route Group Offers. The RteGrpOfferType | |||
Route Group object key and the <offeredTo> Org ID does not exist, | object structure is defined as follows: | |||
then the server creates the Route Group Offer object. If a such a | ||||
Route Group Offer does exist, then the server replaces the current | ||||
object with the new object. The XSD declarations of the operation | ||||
request object are as follows: | ||||
<complexType name="AddRteGrpOfferRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrpOffer" type="spppb:RteGrpOfferType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The element passed into the spppUpdateRequest element for this | ||||
operation is an instance of AddRteGrpOfferRqstType, which extends | ||||
BasicUpdateRqstType and contains a RteGrpOfferType object. The XSD | ||||
declaration of the RteGrpOfferType is as follows: | ||||
<complexType name="RteGrpOfferType"> | <complexType name="RteGrpOfferType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:BasicObjType"> | <extension base="spppb:BasicObjType"> | |||
<sequence> | <sequence> | |||
<element name="rteGrpOfferKey" | <element name="rteGrpOfferKey" | |||
type="spppb:RteGrpOfferKeyType"/> | type="spppb:RteGrpOfferKeyType"/> | |||
<element name="status" type="spppb:RteGrpOfferStatusType"/> | <element name="status" | |||
<element name="offerDateTime" type="dateTime"/> | type="spppb:RteGrpOfferStatusType"/> | |||
<element name="acceptDateTime" type="dateTime" minOccurs="0"/> | <element name="offerDateTime" type="dateTime"/> | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | <element name="acceptDateTime" type="dateTime" | |||
</sequence> | minOccurs="0"/> | |||
</extension> | <element name="ext" type="spppb:ExtAnyType" | |||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | </complexContent> | |||
</complexType> | </complexType> | |||
<complexType name="RteGrpOfferKeyType"> | <complexType name="RteGrpOfferKeyType" abstract="true"> | |||
<sequence> | <annotation> | |||
<element name="rteGrpKey" type="spppb:ObjKeyType"/> | <documentation> | |||
<element name="offeredTo" type="spppb:OrgIdType"/> | -- Generic type that represents the key for a route | |||
</sequence> | route group offer. Must be defined in concrete form | |||
in the transport specificaiton. -- | ||||
</documentation> | ||||
</annotation> | ||||
</complexType> | </complexType> | |||
<simpleType name="RteGrpOfferStatusType"> | <simpleType name="RteGrpOfferStatusType"> | |||
<restriction base="token"> | <restriction base="token"> | |||
<enumeration value="offered"/> | <enumeration value="offered"/> | |||
<enumeration value="accepted"/> | <enumeration value="accepted"/> | |||
</restriction> | </restriction> | |||
</simpleType> | </simpleType> | |||
The RteGrpOfferType object is composed of the following elements: | The RteGrpOfferType object is composed of the following elements: | |||
o base: All first class objects extend BasicObjType that contains | o base: All first class objects extend BasicObjType that contains | |||
the ID of the registrant organization that owns this object, the | the ID of the registrant organization that owns this object, the | |||
date and time that the object was created by the server, and the | date and time that the object was created by the server, and the | |||
date and time that the object was last modified. If the client | date and time that the object was last modified. If the client | |||
passed in either the created date or the modification date, the | passed in either the created date or the modification date, the | |||
will ignore them. The server sets these two date/time values. | will ignore them. The server sets these two date/time values. | |||
o rteGrpOfferKey: The object that identifies the route that is or | o rteGrpOfferKey: The object that identifies the route that is or | |||
has been offered and the organization that it is or has been | has been offered and the organization that it is or has been | |||
offered to. The combination of these three data elements | offered to. | |||
uniquely identify a Route Group Offer. | ||||
o status: The status of the offer, offered or accepted. The | o status: The status of the offer, offered or accepted. The | |||
server controls the status. It is automatically set to | server controls the status. It is automatically set to | |||
"offered" when ever a new Route Group Offer is added, and is | "offered" when ever a new Route Group Offer is added, and is | |||
automatically set to "accepted" if and when that offer is | automatically set to "accepted" if and when that offer is | |||
accepted. The value of the element is ignored when passed in by | accepted. The value of the element is ignored when passed in by | |||
the client. | the client. | |||
o offerDateTime: Date and time in UTC when the Route Group Offer | o offerDateTime: Date and time in UTC when the Route Group Offer | |||
was added. | was added. | |||
o acceptDateTime: Date and time in UTC when the Route Group Offer | o acceptDateTime: Date and time in UTC when the Route Group Offer | |||
was accepted. | was accepted. | |||
As with the responses to all update operations, the result of the | Accepting a Route Group Offer: Not until access to a Route Group has | |||
AddRteGrpOfferRqstType operation is contained in the generic | been offered and accepted will the registrant's organization ID be | |||
spppUpdateResponse data structure described in an earlier sections of | included in the peeringOrg list in that Route Group object, and that | |||
this document. For a detailed description of the spppUpdateResponse | Route Group's peering information become a candidate for inclusion in | |||
data structure refer to that section of the document. | the responses to the resolution requests submitted by that | |||
registrant. A Route Group Offer that is in the "offered" status is | ||||
6.10. Accept Route Group Offer Operation | accepted by, or on behalf of, the registrant to which it has been | |||
offered. When the Route Group Offer is accepted the the Route Group | ||||
Not until access to a Route Group has been offered and accepted will | Offer is moved to the "accepted" status and adds that data | |||
the data recipient's organization ID will it be included in the | recipient's organization ID into the list of peerOrgIds for that | |||
peeringOrg list in that Route Group object, and that Route Group's | Route Group. | |||
peering information become a candidate for inclusion in the responses | ||||
to the resolution requests submitted by that data recipient. The | ||||
AcceptRteGrpOffersRqstType operation is called by, or on behalf of, | ||||
the data recipient to accept a Route Group Offer that is pending in | ||||
the "offered" status for the data recipient's organization ID. If a | ||||
Route Group Offer for the given Route Group Offer key (route name, | ||||
route registrant ID, data recipient's organization ID) exists, then | ||||
the server moves the Route Group Offer to the "accepted" status and | ||||
adds that data recipient's organization ID into the list of | ||||
peerOrgIds for that Route Group. If a such a Route Group Offer does | ||||
not exist, then the server returns the appropriate error code, 2105. | ||||
The XSD declarations for the operation request object are as follows: | ||||
<complexType name="AcceptRteGrpOfferRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The element passed into the spppUpdateRequest element for this | ||||
operation is an instance of AcceptRteGrpOffersRqstType, which extends | ||||
BasicUpdateRqstType and contains a RteGrpOfferKeyType object. | ||||
As with the responses to all update operations, the result of the | ||||
AcceptRteGrpOfferRqstType operation is contained in the generic | ||||
spppUpdateResponse data structure described in an earlier sections of | ||||
this document. For a detailed description of the spppUpdateResponse | ||||
data structure refer to that section of the document. | ||||
6.11. Reject Route Group Offer Operation | ||||
The data recipient to which a Route Group has been offered has the | ||||
option of rejecting a Route Group Offer. Furthermore, that offer may | ||||
be rejected, regardless of whether or not it has been previously | ||||
accepted. The RejectRteGrpOffersRqstType operation is used for these | ||||
purposes and is called by, or on behalf of, the data recipient to | ||||
accept a Route Group Offer that is pending in the "offered" status or | ||||
is in the "accepted" status for the data recipient's organization ID. | ||||
If a Route Group Offer for the given Route Group Offer key (route | ||||
name, route registrant ID, data recipient's organization ID) exists | ||||
in either the offered or accepted status, then the server deletes | ||||
that Route Group Offer object, and, if appropriate, removes the data | ||||
recipient's organization ID from the list of peeringOrg IDs for that | ||||
Route Group. If the Route Group Offer does not exist, then the | ||||
server returns the appropriate error code, 2105. The XSD | ||||
declarations for the operation request object are as follows: | ||||
<complexType name="RejectRteGrpOfferRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The element passed into the spppUpdateRequest element for this | ||||
operation is an instance of RejectRteGrpOffersRqstType, which extends | ||||
BasicUpdateRqstType and contains a RteGrpOfferKeyType object. | ||||
As with the responses to all update operations, the result of the | ||||
RejectRteGrpOfferRqstType operation is contained in the generic | ||||
spppUpdateResponse data structure described in an earlier sections of | ||||
this document. For a detailed description of the spppUpdateResponse | ||||
data structure refer to that section of the document. | ||||
6.12. Get Route Group Offers Operation | ||||
The getRteGrpOffersRqst operation allows an SPPP client to get the | ||||
properties of zero or more Route Group Offer objects that registrar | ||||
is authorized to view on behalf of the registrant. The server will | ||||
attempt to find Route Group Offer objects that have all the | ||||
properties specified in the criteria passed into the operation. If | ||||
no criteria is passed in then the server will return the list of | ||||
Route Group Offer objects that belongs to the registrant. If there | ||||
are no matching Route Group Offers found then an empty result set | ||||
will be returned. | ||||
The element passed into the spppQueryRequest element for this | ||||
operation is an instance of GetRteGrpOffersRqstType, which extends | ||||
BasicQueryRqstType and contains the criteria that the returned Route | ||||
Group Offer objects must match. Any limitation on the maximum number | ||||
of objects that may be returned by this operation is a policy | ||||
decision and not limited by the protocol. The XSD declaration of the | ||||
operation is as follows: | ||||
<complexType name="GetRteGrpOffersRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="offeredBy" type="spppb:OrgIdType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="offeredTo" type="spppb:OrgIdType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="status" type="spppb:RteGrpOfferStatusType" | ||||
minOccurs="0"/> | ||||
<element name="rteGrpOfferKey" | ||||
type="spppb:RteGrpOfferKeyType" minOccurs="0" | ||||
maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
The GetRteGrpOffersRqstType object is composed of the following | ||||
elements: | ||||
o offeredBy: Zero or more organization IDs. Only offers that are | ||||
offered to the organization IDs in this list should be included | ||||
in the result set. The result set is also subject to other | ||||
query criteria in the request. | ||||
o offeredTo: Zero or more organization IDs. Only offers that are | ||||
offered by the organization IDs in this list should be included | ||||
in the result set. The result set is also subject to other | ||||
query criteria in the request. | ||||
o status: The status of the offer, offered or accepted. Only | ||||
offers in the specified status should be included in the result | ||||
set. If this element is not present then the status of the | ||||
offer should not be considered in the query. The result set is | ||||
also subject to other query criteria in the request. | ||||
o rteGrpOfferKey: Zero or more Route Group Offer Keys. Only | ||||
offers having one of these keys should be included in the result | ||||
set. The result set is also subject to other query criteria in | ||||
the request. | ||||
As described in an earlier section of this document, the result of | Rejecting a Route Group Offer: The registrant to which a Route Group | |||
any spppQueryRequest operation is an spppQueryResponse element that | has been offered has the option of rejecting a Route Group Offer. | |||
contains the overall response code and the query result set, if any. | Furthermore, that offer may be rejected, regardless of whether or not | |||
Refer to that section of the document for a detailed description of | it has been previously accepted. A Route Group Offer that is in the | |||
the spppQueryResponse element. | "offered" or "accepted" status is rejected by, or on behalf of, the | |||
registrant to which it has been offered. When the Route Group Offer | ||||
is rejected that Route Group Offer is deleted, and, if appropriate, | ||||
the data recipient's organization ID is removed from the list of | ||||
peeringOrg IDs for that Route Group. | ||||
6.13. Egress Route Operations | 6.6. Egress Route | |||
In a high-availability environment, the originating SSP likely has | In a high-availability environment, the originating SSP likely has | |||
more than one egress paths to the ingress SBE of the target SSP. If | more than one egress paths to the ingress SBE of the target SSP. If | |||
the originating SSP wants to exercise greater control and choose a | the originating SSP wants to exercise greater control and choose a | |||
specific egress SBE to be associated to the target ingress SBE, it | specific egress SBE to be associated to the target ingress SBE, it | |||
can do so using the AddEgrRteRqstType object. | can do so using the AddEgrRteRqstType object. | |||
Lets assume that the target SSP has offered to share one or more | Lets assume that the target SSP has offered to share one or more | |||
ingress route information and that the originating SSP has accepted | ingress route information and that the originating SSP has accepted | |||
the offer. In order to add the egress route to the registry, the | the offer. In order to add the egress route to the registry, the | |||
originating SSP uses a valid regular expression to rewrite ingress | originating SSP uses a valid regular expression to rewrite ingress | |||
route in order to include the egress SBE information. Also, more | route in order to include the egress SBE information. Also, more | |||
than one egress route can be associated with a given ingress route in | than one egress route can be associated with a given ingress route in | |||
support of fault-tolerant configurations. The supporting SPPP | support of fault-tolerant configurations. The supporting SPPP | |||
structure provides a way to include route precedence information to | structure provides a way to include route precedence information to | |||
help manage traffic to more than one outbound egress SBE. | help manage traffic to more than one outbound egress SBE. | |||
An egress route is identified by type EgrRteType and its object | The transport protocol MUST support the ability to Create, Modify, | |||
structure is shown below: | Get, and Delete Egress Routes. The EgrRteType object structure is | |||
defined as follows: | ||||
<complexType name="EgrRteType"> | <complexType name="EgrRteType"> | |||
<complexContent> | <complexContent> | |||
<extension base="spppb:BasicObjType"> | <extension base="spppb:BasicObjType"> | |||
<sequence> | <sequence> | |||
<element name="egrRteName" type="spppb:ObjNameType"/> | <element name="egrRteName" type="spppb:ObjNameType"/> | |||
<element name="pref" type="unsignedShort"/> | <element name="pref" type="unsignedShort"/> | |||
<element name="regxRewriteRule" type="spppb:RegexParamType"/> | <element name="regxRewriteRule" | |||
<element name="ingrRteRec" type="spppb:ObjKeyType" | type="spppb:RegexParamType"/> | |||
minOccurs="0" maxOccurs="unbounded"/> | <element name="ingrRteRec" type="spppb:ObjKeyType" | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
</sequence> | <element name="ext" type="spppb:ExtAnyType" | |||
</extension> | minOccurs="0"/> | |||
</complexContent> | </sequence> | |||
</complexType> | </extension> | |||
</complexContent> | ||||
</complexType> | ||||
The EgrRteType object is composed of the following elements: | The EgrRteType object is composed of the following elements: | |||
o base: All first class objects extend BasicObjType that contains | o base: All first class objects extend BasicObjType that contains | |||
the ID of the registrant organization that owns this object, the | the ID of the registrant organization that owns this object, the | |||
date and time that the object was created by the server, and the | date and time that the object was created by the server, and the | |||
date and time that the object was last modified. If the client | date and time that the object was last modified. If the client | |||
passes in either the created date or the modification date, the | passes in either the created date or the modification date, the | |||
server will ignore them. The server sets these two date/time | server will ignore them. The server sets these two date/time | |||
values. | values. | |||
skipping to change at page 51, line 21 | skipping to change at page 35, line 5 | |||
o regxRewriteRule: The regular expression re-write rule that | o regxRewriteRule: The regular expression re-write rule that | |||
should be applied to the regular expression of the ingress | should be applied to the regular expression of the ingress | |||
NAPTR(s) that belong to the ingress route. | NAPTR(s) that belong to the ingress route. | |||
o ingrRteRec: The ingress route records that the egress route | o ingrRteRec: The ingress route records that the egress route | |||
should be used for. | should be used for. | |||
o ext: Point of extensibility described in a previous section of | o ext: Point of extensibility described in a previous section of | |||
this document. | this document. | |||
The AddEgrRteRqstType request is used to create or overwrite an | 7. XML Considerations | |||
egress route. | ||||
<complexType name="AddEgrRteRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="egrRte" type="spppb:EgrRteType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
An instance of AddEgrRtesRqstType is added in the spppUpdateRequest | ||||
element in order to send a valid request to the server. Any | ||||
limitation on the maximum number of AddEgrRteRqstType instances is a | ||||
matter of policy and is not limited by the specification. | ||||
The response from the server is returned in addEgrRteRspns element, | ||||
which is defined as the element of type BasicRspnsType. | ||||
The GetEgrRtesRqstType is used by an authorized entity to fetch the | ||||
well-known egress route data. | ||||
<complexType name="GetEgrRtesRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
6.14. Delete Operation | ||||
In order to remove an object from the registry, an authorized entity | ||||
can send the <spppUpdateRequest> to the registry with a corresponding | ||||
delete BasicUpdateRqstType object. Each 'Add' operation in SPPP has | ||||
a corresponding 'Del' operation, which is used to delete the | ||||
respective object type from the registry. If the entity that issued | ||||
the command is not authorized to perform this operation an | ||||
appropriate error code will be returned in the <spppUpdateRespnonse> | ||||
message. | ||||
As an example, DelPubIdRqstType is used to delete Public Identifiers | ||||
The DelPubIdsRqstType object definition is shown below: | ||||
<complexType name="DelPubIdRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="pi" type="spppb:PubIdType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
When an object is deleted, any references to that object must of | ||||
course also be removed as the SPPP server implementation fulfills the | ||||
deletion request. Furthermore, the deletion of a composite object | ||||
must also result in the deletion of the objects it contains. As a | ||||
result, the following rules apply to the deletion of SPPP object | ||||
types: | ||||
o Destination Groups: When a destination group is deleted all | ||||
public identifiers within that destination group must also be | ||||
automatically deleted by the SPPP implementation as part of | ||||
fulfilling the deletion request. And any references between | ||||
that destination group and any route group must be automatically | ||||
removed by the SPPP implementation as part of fulfilling the | ||||
deletion request. | ||||
o Route Groups: When a route group is deleted any references | ||||
between that route group and any destination group must be | ||||
automatically removed by the SPPP implementation as part of | ||||
fulfilling the deletion request. Similarly any references | ||||
between that route group and any route records must be removed | ||||
by the SPPP implementation as part of fulfilling the deletion | ||||
request. Furthermore, route group offers relating that route | ||||
group must also be deleted as part of fulfilling the deletion | ||||
request. | ||||
o Route Records: When a route record is deleted any references | ||||
between that route record and any route group must be removed by | ||||
the SPPP implementation as part of fulfilling the deletion | ||||
request. | ||||
o Public Identifiers: When a public identifier is deleted any | ||||
references between that public identifier and its containing | ||||
destination group must be removed by the SPPP implementation as | ||||
part of fulfilling the deletion request. And any route records | ||||
contained directly within that Public Identifier must be deleted | ||||
by the SPPP implementation as part of fulfilling the deletion | ||||
request. | ||||
7. SPPP Examples | ||||
This section shows XML message exchange between two SIP Service | ||||
Providers (SSP) and a registry. For the sake of simplicity, the | ||||
transport wrapper for the SPPP is left out. The SPPP messages in | ||||
this section are valid XML instances that conform to the SPPP schema | ||||
version within this document. | ||||
In this sample use case scenario, SSP1 and SSP2 provision resource | ||||
data in the registry and use SPPP constructs to selectively share the | ||||
route groups. In the figure below, SSP2 has two ingress SBE | ||||
instances that are associated with the public identities that SSP2 | ||||
has the retail relationship with. Also, the two SBE instances for | ||||
SSP1 are used to show how to use SPPP to associate route preferences | ||||
for the destination ingress routes and exercise greater control on | ||||
outbound traffic to the peer's ingress SBEs. | ||||
---------------+ +------------------ | ||||
| | | ||||
+------+ +------+ | ||||
| sbe1 | | sbe2 | | ||||
+------+ +------+ | ||||
SSP1 | | SSP2 | ||||
+------+ +------+ | ||||
| sbe3 | | sbe4 | | ||||
+------+ +------+ | ||||
iana-en:111 | | iana-en:222 | ||||
---------------+ +------------------ | ||||
| | | ||||
| | | ||||
| SPPP +------------------+ SPPP | | ||||
+------->| Registry |<--------+ | ||||
+------------------+ | ||||
7.1. Add Destination Group | ||||
SSP2 adds a destination group to the registry for use later. The | ||||
SSP2 SPPP client sets a unique transaction identifier 'tx_7777' for | ||||
tracking purposes. The name of the destination group is set to | ||||
DEST_GRP_SSP2_1 | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<clientTransId>txid-5555</clientTransId> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddDestGrpRqstType"> | ||||
<destGrp> | ||||
<ns1:rant>iana-en:222</ns1:rant> | ||||
<dgName>DEST_GRP_SSP2_1</dgName> | ||||
</destGrp> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
The registry processes the request and return a favorable response | ||||
confirming successful creation of the named destination group. Also, | ||||
besides returning a unique transaction identifier, Registry also | ||||
returns the matching client transaction identifier from the request | ||||
message back to the SPPP client. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<clientTransId>tx_5555</clientTransId> | ||||
<serverTransId>tx_id_12346</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.2. Add Route Records | ||||
SSP2 adds an ingress routes in the registry. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddRteRecRqstType"> | ||||
<rteRec xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:NAPTRType"> | ||||
<rant>iana-en:222</rant> | ||||
<ns1:rrName>RTE_SSP2_SBE2</ns1:rrName> | ||||
<order>10</order> | ||||
<flags>u</flags> | ||||
<svcs>E2U+sip</svcs> | ||||
<regx> | ||||
<ere>^(.*)$</ere> | ||||
<repl>sip:\1@sbe2.ssp2.example.com</repl> | ||||
</regx> | ||||
</rteRec> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
The registry returns a success response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_11145</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.3. Add Route Records -- URIType | ||||
SSP2 adds another ingress routes in the registry and makes use of | ||||
URIType | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest> | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddRteRecRqstType"> | ||||
<rteRec xsi:type="ns1:URIType"> | ||||
<rant>iana-en:222</rant> | ||||
<rrName>RTE_SSP2_SBE4</rrName> | ||||
<ere>^(.*)$</ere> | ||||
<uri>sip:\1;npdi@sbe4.ssp2.example.com</uri> | ||||
</rteRec> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
The registry returns a success response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_11145</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.4. Add Route Group | ||||
SSP2 creates the grouping of the ingress routes and choses higher | ||||
precedence for RTE_SSP2_SBE2 by setting a lower number for the | ||||
"priority" attribute, a protocol agnostic precedence indicator. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddRteGrpRqstType"> | ||||
<rteGrp> | ||||
<rant>iana-en:222</rant> | ||||
<rgName>RTE_GRP_SSP2_1</rgName> | ||||
<rrRef> | ||||
<rrKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_SSP2_SBE2</name> | ||||
</rrKey> | ||||
<priority>100</priority> | ||||
</rrRef> | ||||
<dgName>DEST_GRP_SSP2_1</dgName> | ||||
<isInSvc>true</isInSvc> | ||||
<ns1:priority>10</ns1:priority> | ||||
</rteGrp> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
To confirm successful processing of this request, registry returns a | ||||
well-known resolution code '1000' to the SSP2 client. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_12345</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.5. Add Public Identity -- Successful COR claim | ||||
SSP2 activates a TN public identity by associating it with a valid | ||||
destination group. Further, SSP2 puts forth a claim that it is the | ||||
carrier-of-record for the TN. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<clientTransId>txid-5577</clientTransId> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddPubIdRqstType"> | ||||
<pi xsi:type="ns1:TNType"> | ||||
<rant>iana-en:222</rant> | ||||
<cDate>2010-05-30T09:30:10Z</cDate> | ||||
<dgName>DEST_GRP_SSP2_1</dgName> | ||||
<tn>+12025556666</tn> | ||||
<corInfo> | ||||
<corClaim>true</corClaim> | ||||
</corInfo> | ||||
</pi> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Assuming that the registry has access to TN authority data and it | ||||
performs the required checks to verify that SSP2 is in fact the | ||||
service provider of record for the given TN, the request is processed | ||||
successfully. In the response message, the registry sets the value | ||||
of <cor> to "true" in order to confirm SSP2 claim as the carrier of | ||||
record and the <corDate> reflects the time when the carrier of record | ||||
claim is processed. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<clientTransId>txid-5577</clientTransId> | ||||
<serverTransId>tx_id_12345</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
<rqstObjResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
<rqstObj xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddPubIdRqstType"> | ||||
<pi xsi:type="ns1:TNType"> | ||||
<rant>iana-en:222</rant> | ||||
<cDate>2010-05-30T09:30:10Z</cDate> | ||||
<dgName>DEST_GRP_SSP2_1</dgName> | ||||
<tn>+12025556666</tn> | ||||
<corInfo> | ||||
<corClaim>true</corClaim> | ||||
<cor>true</cor> | ||||
<corDate>2010-05-30T09:30:11Z</corDate> | ||||
</corInfo> | ||||
</pi> | ||||
</rqstObj> | ||||
</rqstObjResult> | ||||
</spppUpdateResponse> | ||||
7.6. Add LRN | ||||
If another entity that SSP2 shares the routes with has access to | ||||
Number Portability data, it may choose to perform route lookups by | ||||
routing number. Therefore, SSP2 associates a routing number to a | ||||
destination group in order to facilitate ingress route discovery. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddPubIdRqstType"> | ||||
<pi xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:RNType"> | ||||
<rant>iana-en:222</rant> | ||||
<ns1:dgName>DEST_GRP_SSP2_1</ns1:dgName> | ||||
<rn>2025550000</rn> | ||||
</pi> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response to the SPPP client. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_12345</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.7. Add TN Range | ||||
Next, SSP2 activates a block of ten thousand TNs and associate it to | ||||
a destination group. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddPubIdRqstType"> | ||||
<pi xsi:type="ns1:TNRType"> | ||||
<rant>iana-en:222</rant> | ||||
<dgName>DEST_GRP_SSP2_1</dgName> | ||||
<startTn>+12026660000</startTn> | ||||
<endTn>+12026669999</endTn> | ||||
</pi> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_12244498</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.8. Add TN Prefix | ||||
Next, SSP2 activates a block of ten thousand TNs using the TNPType | ||||
structure and identifying a TN prefix. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddPubIdRqstType"> | ||||
<pi xsi:type="ns1:TNPType"> | ||||
<rant>iana-en:222</rant> | ||||
<ns1:dgName>DEST_GRP_SSP2_1</ns1:dgName> | ||||
<tnPrefix>+1202777</tnPrefix> | ||||
</pi> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_12387698</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.9. Enable Peering -- Route Group Offer | ||||
In order for SSP1 to complete session establishment for a destination | ||||
TN where the target subscriber has a retail relationship with SSP2, | ||||
it first requires an asynchronous bi-directional handshake to show | ||||
mutual consent. To start the process, SSP2 initiates the peering | ||||
handshake by offering SSP1 access to its route group. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddRteGrpOfferRqstType"> | ||||
<rteGrpOffer> | ||||
<rant>iana-en:222</rant> | ||||
<rteGrpOfferKey> | ||||
<rteGrpKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_GRP_SSP2_1</name> | ||||
</rteGrpKey> | ||||
<offeredTo>iana-en:111</offeredTo> | ||||
</rteGrpOfferKey> | ||||
<status>offered</status> | ||||
<offerDateTime>2006-05-04T18:13:51.0Z</offerDateTime> | ||||
</rteGrpOffer> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and confirms that the | ||||
SSP1 will now have the opportunity to weigh in on the offer and | ||||
either accept or reject it. The registry may employ out-of-band | ||||
notification mechanisms for quicker updates to SSP1 so they can act | ||||
faster, though this topic is beyond the scope of this document. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_12277798</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.10. Enable Peering -- Route Group Offer Accept | ||||
SSP1 responds to the offer from SSP2 and agrees to have visibility to | ||||
SSP2 ingress routes. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AcceptRteGrpOfferRqstType"> | ||||
<rteGrpOfferKey> | ||||
<rteGrpKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_GRP_SSP2_1</name> | ||||
</rteGrpKey> | ||||
<offeredTo>iana-en:111</offeredTo> | ||||
</rteGrpOfferKey> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry confirms that the request has been processed successfully. | ||||
From this point forward, if SSP1 looks up a public identity through | ||||
the query resolution server, where the public identity is part of the | ||||
destination group by way of "RTE_GRP_SSP2_1" route association, SSP2 | ||||
ingress SBE information will be shared with SSP1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<serverTransId>tx_id_12333798</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.11. Add Egress Route | ||||
SSP1 wants to prioritize all outbound traffic to routes associated | ||||
with "RTE_GRP_SSP2_1" route group through "sbe1.ssp1.example.com". | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<clientTransId>tx_9000</clientTransId> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:AddEgrRteRqstType"> | ||||
<egrRte> | ||||
<rant>iana-en:111</rant> | ||||
<egrRteName>EGR_RTE_01</egrRteName> | ||||
<pref>50</pref> | ||||
<regxRewriteRule> | ||||
<ere>^(.*@)(.*)$</ere> | ||||
<repl>\1\2?route=sbe1.ssp1.example.com</repl> | ||||
</regxRewriteRule> | ||||
<ingrRteRec> | ||||
<rant>iana-en:222</rant> | ||||
<name>SSP2_RTE_REC_3</name> | ||||
</ingrRteRec> | ||||
</egrRte> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Since peering has already been established, the request to add the | ||||
egress route has been successfully completed. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd" | ||||
xmlns="urn:ietf:params:xml:ns:sppp:base:1"> | ||||
<clientTransId>tx_9000</clientTransId> | ||||
<serverTransId>tx_id_12388898</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Request successful</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.12. Get Destination Group | ||||
SSP2 uses the 'GetDestGrpsRqstType' operation to tally the last | ||||
provisioned record for destination group DEST_GRP_SSP2_1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:GetDestGrpsRqstType"> | ||||
<objKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>DEST_GRP_SSP2_1</name> | ||||
</objKey> | ||||
</rqst> | ||||
</spppQueryRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
<resultSet xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:DestGrpType"> | ||||
<rant>iana-en:222</rant> | ||||
<dgName>DEST_GRP_SSP2_1</dgName> | ||||
</resultSet> | ||||
</spppQueryResponse> | ||||
7.13. Get Public Identity | ||||
SSP2 obtains the last provisioned record associated with a given TN. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:GetPubIdsRqstType"> | ||||
<pi xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:TNType"> | ||||
<rant>iana-en:222</rant> | ||||
<tn>+12025556666</tn> | ||||
</pi> | ||||
</rqst> | ||||
</spppQueryRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
<resultSet xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:TNType"> | ||||
<rant>iana-en:222</rant> | ||||
<dgName>DEST_GRP_1</dgName> | ||||
<tn>+12025556666</tn> | ||||
<corInfo> | ||||
<corClaim>true</corClaim> | ||||
<cor>true</cor> | ||||
<corDate>2010-05-30T09:30:10Z</corDate> | ||||
</corInfo> | ||||
</resultSet> | ||||
</spppQueryResponse> | ||||
7.14. Get Route Group Request | ||||
SSP2 obtains the last provisioned record for the route group | ||||
RTE_GRP_SSP2_1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:GetRteGrpsRqstType"> | ||||
<objKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_GRP_SSP2_1</name> | ||||
</objKey> | ||||
</rqst> | ||||
</spppQueryRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
<resultSet xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:RteGrpType"> | ||||
<rant>iana-en:222</rant> | ||||
<rgName>RTE_GRP_SSP2_1</rgName> | ||||
<rrRef> | ||||
<rrKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_SSP2_SBE2</name> | ||||
</rrKey> | ||||
<priority>100</priority> | ||||
</rrRef> | ||||
<rrRef> | ||||
<rrKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_SSP2_SBE4</name> | ||||
</rrKey> | ||||
<priority>101</priority> | ||||
</rrRef> | ||||
<dgName>DEST_GRP_SSP2_1</dgName> | ||||
<isInSvc>true</isInSvc> | ||||
<priority>10</priority> | ||||
</resultSet> | ||||
</spppQueryResponse> | ||||
7.15. Get Route Group Offers Request | ||||
SSP2 fetches the last provisioned route group offer to the | ||||
<peeringOrg> SSP1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:GetRteGrpOffersRqstType"> | ||||
<offeredTo>iana-en:111</offeredTo> | ||||
</rqst> | ||||
</spppQueryRequest> | ||||
Registry processes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
<resultSet xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:RteGrpOfferType"> | ||||
<rant>iana-en:222</rant> | ||||
<rteGrpOfferKey> | ||||
<rteGrpKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_GRP_SSP2_1</name> | ||||
</rteGrpKey> | ||||
<offeredTo>iana-en:111</offeredTo> | ||||
</rteGrpOfferKey> | ||||
<status>offered</status> | ||||
<offerDateTime>2006-05-04T18:13:51.0Z</offerDateTime> | ||||
</resultSet> | ||||
</spppQueryResponse> | ||||
7.16. Get Egress Route | ||||
SSP1 wants to verify the last provisioned record for the egress route | ||||
called EGR_RTE_01. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:GetEgrRtesRqstType"> | ||||
<objKey> | ||||
<rant>iana-en:111</rant> | ||||
<name>EGR_RTE_01</name> | ||||
</objKey> | ||||
</rqst> | ||||
</spppQueryRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppQueryResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
<resultSet xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:EgrRteType"> | ||||
<rant>iana-en:111</rant> | ||||
<egrRteName>EGR_RTE_01</egrRteName> | ||||
<pref>50</pref> | ||||
<svcs>E2U+sip</svcs> | ||||
<regxRewriteRule> | ||||
<ere>^(.*)$</ere> | ||||
<repl>sip:\1@sbe1.ssp1.example.com</repl> | ||||
</regxRewriteRule> | ||||
<ingressRte> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_GRP_SSP2_1</name> | ||||
</ingressRte> | ||||
</resultSet> | ||||
</spppQueryResponse> | ||||
7.17. Delete Destination Group | ||||
SSP2 initiates a request to delete the destination group | ||||
DEST_GRP_SSP2_1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:DelDestGrpRqstType"> | ||||
<objKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>DEST_GRP_SSP2_1</name> | ||||
</objKey> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<serverTransId>txid-982543123</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Success</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.18. Delete Public Identity | ||||
SSP2 choses to de-activate the TN and remove it from the registry. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:DelPubIdRqstType"> | ||||
<pi xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:TNType"> | ||||
<rant>iana-en:222</rant> | ||||
<tn>+12025556666</tn> | ||||
</pi> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<serverTransId>txid-98298273123</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>success</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.19. Delete Route Group Request | ||||
SSP2 removes the route group called RTE_GRP_SSP2_1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:DelRteGrpRqstType"> | ||||
<objKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_GRP_SSP2_1</name> | ||||
</objKey> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<serverTransId>txid-982543123</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>msg</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.20. Delete Route Group Offers Request | ||||
SSP2 no longer wants to share route group RTE_GRP_SSP2_1 with SSP1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:DelRteGrpOfferRqstType"> | ||||
<rteGrpOfferKey> | ||||
<rteGrpKey> | ||||
<rant>iana-en:222</rant> | ||||
<name>RTE_GRP_SSP2_1</name> | ||||
</rteGrpKey> | ||||
<offeredTo>iana-en:111</offeredTo> | ||||
</rteGrpOfferKey> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. Restoring this resource sharing will require a new route | ||||
group offer from SSP2 to SSP1 followed by a successful route group | ||||
accept request from SSP1. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<serverTransId>txid-982543123</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Success</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
7.21. Delete Egress Route | ||||
SSP1 decides to remove the egress route with the label EGR_RTE_01. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateRequest xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<rqst xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xsi:type="ns1:DelEgrRteRqstType"> | ||||
<objKey> | ||||
<rant>iana-en:111</rant> | ||||
<name>EGR_RTE_01</name> | ||||
</objKey> | ||||
</rqst> | ||||
</spppUpdateRequest> | ||||
Registry completes the request successfully and returns a favorable | ||||
response. | ||||
<?xml version="1.0" encoding="UTF-8"?> | ||||
<spppUpdateResponse xmlns="urn:ietf:params:xml:ns:sppp:base:1" | ||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
xsi:schemaLocation="urn:ietf:params:xml:ns:sppp:base:1 sppp.xsd"> | ||||
<serverTransId>txid-982543123</serverTransId> | ||||
<overallResult> | ||||
<code>1000</code> | ||||
<msg>Success</msg> | ||||
</overallResult> | ||||
</spppUpdateResponse> | ||||
8. XML Considerations | ||||
XML serves as the encoding format for SPPP, allowing complex | XML serves as the encoding format for SPPP, allowing complex | |||
hierarchical data to be expressed in a text format that can be read, | hierarchical data to be expressed in a text format that can be read, | |||
saved, and manipulated with both traditional text tools and tools | saved, and manipulated with both traditional text tools and tools | |||
specific to XML. | specific to XML. | |||
XML is case sensitive. Unless stated otherwise, XML specifications | XML is case sensitive. Unless stated otherwise, XML specifications | |||
and examples provided in this document MUST be interpreted in the | and examples provided in this document MUST be interpreted in the | |||
character case presented to develop a conforming implementation. | character case presented to develop a conforming implementation. | |||
This section discusses a small number of XML-related considerations | This section discusses a small number of XML-related considerations | |||
pertaining to SPPP. | pertaining to SPPP. | |||
8.1. Namespaces | 7.1. Namespaces | |||
All SPPP elements are defined in the namespaces in the IANA | All SPPP elements are defined in the namespaces in the IANA | |||
Considerations section and in the Formal Protocol Specification | Considerations section and in the Formal Protocol Specification | |||
section of this document. | section of this document. | |||
8.2. Versioning and Character Encoding | 7.2. Versioning and Character Encoding | |||
All XML instances SHOULD begin with an <?xml?> declaration to | All XML instances SHOULD begin with an <?xml?> declaration to | |||
identify the version of XML that is being used, optionally identify | identify the version of XML that is being used, optionally identify | |||
use of the character encoding used, and optionally provide a hint to | use of the character encoding used, and optionally provide a hint to | |||
an XML parser that an external schema file is needed to validate the | an XML parser that an external schema file is needed to validate the | |||
XML instance. | XML instance. | |||
Conformant XML parsers recognize both UTF-8 (defined in [RFC3629]) | Conformant XML parsers recognize both UTF-8 (defined in [RFC3629]) | |||
and UTF-16 (defined in [RFC2781]); per [RFC2277] UTF-8 is the | and UTF-16 (defined in [RFC2781]); per [RFC2277] UTF-8 is the | |||
RECOMMENDED character encoding for use with SPPP. | RECOMMENDED character encoding for use with SPPP. | |||
skipping to change at page 78, line 5 | skipping to change at page 36, line 5 | |||
UTF-8 is the default encoding assumed by XML in the absence of an | UTF-8 is the default encoding assumed by XML in the absence of an | |||
"encoding" attribute or a byte order mark (BOM); thus, the "encoding" | "encoding" attribute or a byte order mark (BOM); thus, the "encoding" | |||
attribute in the XML declaration is OPTIONAL if UTF-8 encoding is | attribute in the XML declaration is OPTIONAL if UTF-8 encoding is | |||
used. SPPP clients and servers MUST accept a UTF-8 BOM if present, | used. SPPP clients and servers MUST accept a UTF-8 BOM if present, | |||
though emitting a UTF-8 BOM is NOT RECOMMENDED. | though emitting a UTF-8 BOM is NOT RECOMMENDED. | |||
Example XML declarations: | Example XML declarations: | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
9. Security Considerations | 8. Security Considerations | |||
Many SPPP implementations manage data that is considered confidential | Many SPPP implementations manage data that is considered confidential | |||
and critical. Furthermore, SPPP implementations can support | and critical. Furthermore, SPPP implementations can support | |||
provisioning activities for multiple registrars and registrants. As | provisioning activities for multiple registrars and registrants. As | |||
a result any SPPP implementation must address the requirements for | a result any SPPP implementation must address the requirements for | |||
confidentiality, authentication, and authorization. | confidentiality, authentication, and authorization. | |||
With respect to confidentiality and authentication, the transport | With respect to confidentiality and authentication, the transport | |||
protocol requirements section of this document contains security | protocol requirements section of this document contains security | |||
properties that the transport protocol must provide so that | properties that the transport protocol must provide so that | |||
skipping to change at page 80, line 5 | skipping to change at page 38, line 5 | |||
The SPPP client or registrar can be a separate entity acting on | The SPPP client or registrar can be a separate entity acting on | |||
behalf of the registrant in facilitating provisioning transactions to | behalf of the registrant in facilitating provisioning transactions to | |||
the registry. Further, the transport layer provides end-to-end | the registry. Further, the transport layer provides end-to-end | |||
connection protection between SPPP client and the SPPP server. | connection protection between SPPP client and the SPPP server. | |||
Therefore, man-in-the-middle attack is a possibility that may affect | Therefore, man-in-the-middle attack is a possibility that may affect | |||
the integrity of the data that belongs to the registrant and/or | the integrity of the data that belongs to the registrant and/or | |||
expose peer data to unintended actors in case well-established | expose peer data to unintended actors in case well-established | |||
peering relationships already exist. | peering relationships already exist. | |||
10. IANA Considerations | 9. IANA Considerations | |||
This document uses URNs to describe XML namespaces and XML schemas | This document uses URNs to describe XML namespaces and XML schemas | |||
conforming to a registry mechanism described in [RFC3688]. | conforming to a registry mechanism described in [RFC3688]. | |||
Two URI assignments are requested. | Two URI assignments are requested. | |||
Registration request for the SPPP XML namespace: | Registration request for the SPPP XML namespace: | |||
urn:ietf:params:xml:ns:sppp:base:1 | urn:ietf:params:xml:ns:sppp:base:1 | |||
Registrant Contact: IESG | Registrant Contact: IESG | |||
XML: None. Namespace URIs do not represent an XML specification. | XML: None. Namespace URIs do not represent an XML specification. | |||
Registration request for the XML schema: | Registration request for the XML schema: | |||
URI: urn:ietf:params:xml:schema:sppp:1 | URI: urn:ietf:params:xml:schema:sppp:1 | |||
Registrant Contact: IESG | Registrant Contact: IESG | |||
XML: See the "Formal Specification" section of this document | XML: See the "Formal Specification" section of this document | |||
(Section 11). | (Section 10). | |||
IANA is requested to create a new SPPP registry for Organization | IANA is requested to create a new SPPP registry for Organization | |||
Identifiers that will indicate valid strings to be used for well- | Identifiers that will indicate valid strings to be used for well- | |||
known enterprise namespaces. | known enterprise namespaces. | |||
This document makes the following assignments for the OrgIdType | This document makes the following assignments for the OrgIdType | |||
namespaces: | namespaces: | |||
Namespace OrgIdType namespace string | Namespace OrgIdType namespace string | |||
---- ---------------------------- | ---- ---------------------------- | |||
IANA Enterprise Numbers iana-en | IANA Enterprise Numbers iana-en | |||
11. Formal Specification | 10. Formal Specification | |||
This section provides the draft XML Schema Definition for SPPP. | This section provides the draft XML Schema Definition for SPPP. | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<schema xmlns:spppb="urn:ietf:params:xml:ns:sppp:base:1" | <schema xmlns:spppb="urn:ietf:params:xml:ns:sppp:base:1" | |||
xmlns="http://www.w3.org/2001/XMLSchema" | xmlns="http://www.w3.org/2001/XMLSchema" | |||
targetNamespace="urn:ietf:params:xml:ns:sppp:base:1" | targetNamespace="urn:ietf:params:xml:ns:sppp:base:1" | |||
elementFormDefault="qualified" xml:lang="EN"> | elementFormDefault="qualified" xml:lang="EN"> | |||
<annotation> | <annotation> | |||
<documentation> | <documentation> | |||
------------------ Object Type Definitions -------------- | ---- Generic Object key types to be defined by | |||
</documentation> | specific Transport/Architecture. The types | |||
</annotation> | defined here can be extended by the | |||
<complexType name="RteGrpType"> | specific architecture to define the Object | |||
<complexContent> | Identifiers. ---- | |||
<extension base="spppb:BasicObjType"> | </documentation> | |||
<sequence> | </annotation> | |||
<element name="rgName" type="spppb:ObjNameType"/> | <complexType name="ObjKeyType" abstract="true"> | |||
<element name="rrRef" type="spppb:RteRecRefType" | <annotation> | |||
minOccurs="0" maxOccurs="unbounded"/> | <documentation> | |||
<element name="dgName" type="spppb:ObjNameType" minOccurs="0" | ---- Generic type that represents the key for various | |||
maxOccurs="unbounded"/> | objects in SPPP. ---- | |||
<element name="peeringOrg" type="spppb:OrgIdType" minOccurs="0" | </documentation> | |||
maxOccurs="unbounded"/> | </annotation> | |||
<element name="sourceIdent" type="spppb:SourceIdentType" | </complexType> | |||
minOccurs="0" maxOccurs="unbounded"/> | <complexType name="RteGrpOfferKeyType" abstract="true"> | |||
<element name="isInSvc" type="boolean"/> | <annotation> | |||
<element name="priority" type="unsignedShort"/> | <documentation> | |||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ---- Generic type that represents the key for a route | |||
</sequence> | group offer. ---- | |||
</extension> | </documentation> | |||
</complexContent> | </annotation> | |||
</complexType> | </complexType> | |||
<complexType name="DestGrpType"> | <annotation> | |||
<complexContent> | <documentation> | |||
<extension base="spppb:BasicObjType"> | ---- Object Type Definitions ---- | |||
<sequence> | </documentation> | |||
<element name="dgName" type="spppb:ObjNameType"/> | </annotation> | |||
</sequence> | <complexType name="RteGrpType"> | |||
</extension> | <complexContent> | |||
</complexContent> | <extension base="spppb:BasicObjType"> | |||
</complexType> | <sequence> | |||
<complexType name="PubIdType" abstract="true"> | <element name="rgName" type="spppb:ObjNameType"/> | |||
<complexContent> | <element name="rrRef" type="spppb:RteRecRefType" | |||
<extension base="spppb:BasicObjType"> | minOccurs="0" maxOccurs="unbounded"/> | |||
<sequence> | <element name="dgName" type="spppb:ObjNameType" | |||
<element name="dgName" type="spppb:ObjNameType" minOccurs="0"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
</sequence> | <element name="peeringOrg" type="spppb:OrgIdType" | |||
</extension> | minOccurs="0" maxOccurs="unbounded"/> | |||
</complexContent> | <element name="sourceIdent" | |||
</complexType> | type="spppb:SourceIdentType" | |||
<complexType name="TNType"> | minOccurs="0" maxOccurs="unbounded"/> | |||
<complexContent> | <element name="isInSvc" type="boolean"/> | |||
<extension base="spppb:PubIdType"> | <element name="priority" type="unsignedShort"/> | |||
<sequence> | <element name="ext" type="spppb:ExtAnyType" | |||
<element name="tn" type="string"/> | minOccurs="0"/> | |||
<element name="rrRef" type="spppb:RteRecRefType" | </sequence> | |||
minOccurs="0" maxOccurs="unbounded"/> | </extension> | |||
<element name="corInfo" type="spppb:CORInfoType" | </complexContent> | |||
minOccurs="0"/> | </complexType> | |||
</sequence> | <complexType name="DestGrpType"> | |||
</extension> | <complexContent> | |||
</complexContent> | <extension base="spppb:BasicObjType"> | |||
</complexType> | <sequence> | |||
<complexType name="TNRType"> | <element name="dgName" type="spppb:ObjNameType"/> | |||
<complexContent> | </sequence> | |||
<extension base="spppb:PubIdType"> | </extension> | |||
<sequence> | </complexContent> | |||
<element name="startTn" type="string"/> | </complexType> | |||
<element name="endTn" type="string"/> | <complexType name="PubIdType" abstract="true"> | |||
<element name="corInfo" type="spppb:CORInfoType" | <complexContent> | |||
minOccurs="0"/> | <extension base="spppb:BasicObjType"> | |||
</sequence> | <sequence> | |||
</extension> | <element name="dgName" type="spppb:ObjNameType" | |||
</complexContent> | minOccurs="0"/> | |||
</complexType> | </sequence> | |||
<complexType name="TNPType"> | </extension> | |||
<complexContent> | </complexContent> | |||
<extension base="spppb:PubIdType"> | </complexType> | |||
<sequence> | <complexType name="TNType"> | |||
<element name="tnPrefix" type="string"/> | <complexContent> | |||
<element name="corInfo" type="spppb:CORInfoType" | <extension base="spppb:PubIdType"> | |||
minOccurs="0"/> | <sequence> | |||
</sequence> | <element name="tn" type="spppb:NumberType"/> | |||
</extension> | <element name="rrRef" | |||
</complexContent> | type="spppb:RteRecRefType" minOccurs="0" | |||
</complexType> | maxOccurs="unbounded"/> | |||
<complexType name="RNType"> | <element name="corInfo" | |||
<complexContent> | type="spppb:CORInfoType" minOccurs="0"/> | |||
<extension base="spppb:PubIdType"> | </sequence> | |||
<sequence> | </extension> | |||
<element name="rn" type="string"/> | ||||
<element name="corInfo" type="spppb:CORInfoType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="RteRecType" abstract="true"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicObjType"> | ||||
<sequence> | ||||
<element name="rrName" type="spppb:ObjNameType"/> | ||||
<element name="priority" type="unsignedShort" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="NAPTRType"> | ||||
<complexContent> | ||||
<extension base="spppb:RteRecType"> | ||||
<sequence> | ||||
<element name="order" type="unsignedShort"/> | ||||
<element name="flags" type="string" minOccurs="0"/> | ||||
<element name="svcs" type="string"/> | ||||
<element name="regx" type="spppb:RegexParamType" | ||||
minOccurs="0"/> | ||||
<element name="repl" type="string" minOccurs="0"/> | ||||
<element name="ttl" type="positiveInteger" minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="NSType"> | ||||
<complexContent> | ||||
<extension base="spppb:RteRecType"> | ||||
<sequence> | ||||
<element name="hostName" type="string"/> | ||||
<element name="ipAddr" type="spppb:IPAddrType" minOccurs="0" | ||||
maxOccurs="unbounded"/> | ||||
<element name="ttl" type="positiveInteger" minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="URIType"> | ||||
<complexContent> | ||||
<extension base="spppb:RteRecType"> | ||||
<sequence> | ||||
<element name="ere" type="string" default="^(.*)$"/> | ||||
<element name="uri" type="string"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="RteGrpOfferType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicObjType"> | ||||
<sequence> | ||||
<element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType" | ||||
/> | ||||
<element name="status" type="spppb:RteGrpOfferStatusType"/> | ||||
<element name="offerDateTime" type="dateTime"/> | ||||
<element name="acceptDateTime" type="dateTime" minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="EgrRteType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicObjType"> | ||||
<sequence> | ||||
<element name="egrRteName" type="spppb:ObjNameType"/> | ||||
<element name="pref" type="unsignedShort"/> | ||||
<element name="regxRewriteRule" type="spppb:RegexParamType"/> | ||||
<element name="ingrRteRec" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<annotation> | ||||
<documentation> ------------------ Abstract Object and Element | ||||
Type Definitions -------------- </documentation> | ||||
</annotation> | ||||
<complexType name="BasicObjType" abstract="true"> | ||||
<sequence> | ||||
<element name="rant" type="spppb:OrgIdType"/> | ||||
<element name="cDate" type="dateTime" minOccurs="0"/> | ||||
<element name="mDate" type="dateTime" minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="RegexParamType"> | ||||
<sequence> | ||||
<element name="ere" type="string" default="^(.*)$"/> | ||||
<element name="repl" type="string"/> | ||||
</sequence> | ||||
</complexType> | ||||
<simpleType name="OrgIdType"> | ||||
<restriction base="string"/> | ||||
</simpleType> | ||||
<simpleType name="ObjNameType"> | ||||
<restriction base="string"/> | ||||
</simpleType> | ||||
<simpleType name="TransIdType"> | ||||
<restriction base="string"/> | ||||
</simpleType> | ||||
<simpleType name="MinorVerType"> | ||||
<restriction base="unsignedLong"/> | ||||
</simpleType> | ||||
<complexType name="ObjKeyType"> | ||||
<sequence> | ||||
<element name="rant" type="spppb:OrgIdType"/> | ||||
<element name="name" type="spppb:ObjNameType"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="IPAddrType"> | ||||
<sequence> | ||||
<element name="addr" type="string"/> | ||||
<element name="type" type="spppb:IPType"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<simpleType name="IPType"> | ||||
<restriction base="token"> | ||||
<enumeration value="IPv4"/> | ||||
<enumeration value="IPv6"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<complexType name="RteRecRefType"> | ||||
<sequence> | ||||
<element name="rrKey" type="spppb:ObjKeyType"/> | ||||
<element name="priority" type="unsignedShort"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="SourceIdentType"> | ||||
<sequence> | ||||
<element name="sourceIdentLabel" type="string"/> | ||||
<element name="sourceIdentScheme" | ||||
type="spppb:SourceIdentSchemeType"/> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<simpleType name="SourceIdentSchemeType"> | ||||
<restriction base="token"> | ||||
<enumeration value="uri"/> | ||||
<enumeration value="ip"/> | ||||
<enumeration value="rootDomain"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<complexType name="CORInfoType"> | ||||
<sequence> | ||||
<element name="corClaim" type="boolean" default="true"/> | ||||
<element name="cor" type="boolean" default="false" | ||||
minOccurs="0"/> | ||||
<element name="corDate" type="dateTime" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="SvcMenuType"> | ||||
<sequence> | ||||
<element name="serverStatus" type="spppb:ServerStatusType"/> | ||||
<element name="majMinVersion" type="string" | ||||
maxOccurs="unbounded"/> | ||||
<element name="objURI" type="anyURI" maxOccurs="unbounded"/> | ||||
<element name="extURI" type="anyURI" minOccurs="0" | ||||
maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
<simpleType name="ServerStatusType"> | ||||
<restriction base="token"> | ||||
<enumeration value="inService"/> | ||||
<enumeration value="outOfService"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<complexType name="RteGrpOfferKeyType"> | ||||
<sequence> | ||||
<element name="rteGrpKey" type="spppb:ObjKeyType"/> | ||||
<element name="offeredTo" type="spppb:OrgIdType"/> | ||||
</sequence> | ||||
</complexType> | ||||
<simpleType name="RteGrpOfferStatusType"> | ||||
<restriction base="token"> | ||||
<enumeration value="offered"/> | ||||
<enumeration value="accepted"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<complexType name="ExtAnyType"> | ||||
<sequence> | ||||
<any namespace="##other" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
<annotation> | ||||
<documentation> -------------- Operation Request and Response | ||||
Object Type Definitions ------------ </documentation> | ||||
</annotation> | ||||
<complexType name="ResultCodeType"> | ||||
<sequence> | ||||
<element name="code" type="int"/> | ||||
<element name="msg" type="string"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="RqstObjResultCodeType"> | ||||
<complexContent> | ||||
<extension base="spppb:ResultCodeType"> | ||||
<sequence> | ||||
<element name="rqstObj" type="spppb:BasicUpdateRqstType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="BasicUpdateRqstType" abstract="true"> | ||||
<sequence> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="BasicQueryRqstType" abstract="true"> | ||||
<sequence> | ||||
<element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="AddRteGrpRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrp" type="spppb:RteGrpType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="DelRteGrpRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="GetRteGrpsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="AddRteRecRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteRec" type="spppb:RteRecType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="DelRteRecRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="GetRteRecsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="AddDestGrpRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="destGrp" type="spppb:DestGrpType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="DelDestGrpRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="GetDestGrpsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="objKey" type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="AddPubIdRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="pi" type="spppb:PubIdType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="DelPubIdRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="pi" type="spppb:PubIdType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="GetPubIdsRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="pi" type="spppb:PubIdType" | ||||
maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="AddRteGrpOfferRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrpOffer" type="spppb:RteGrpOfferType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="DelRteGrpOfferRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrpOfferKey" | ||||
type="spppb:RteGrpOfferKeyType" /> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="AcceptRteGrpOfferRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrpOfferKey" | ||||
type="spppb:RteGrpOfferKeyType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="RejectRteGrpOfferRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicUpdateRqstType"> | ||||
<sequence> | ||||
<element name="rteGrpOfferKey" | ||||
type="spppb:RteGrpOfferKeyType"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="GetRteGrpOffersRqstType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicQueryRqstType"> | ||||
<sequence> | ||||
<element name="offeredBy" type="spppb:OrgIdType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="offeredTo" type="spppb:OrgIdType" | </complexContent> | |||
minOccurs="0" maxOccurs="unbounded"/> | </complexType> | |||
<element name="status" type="spppb:RteGrpOfferStatusType" | <complexType name="TNRType"> | |||
minOccurs="0"/> | <complexContent> | |||
<element name="rteGrpOfferKey" | <extension base="spppb:PubIdType"> | |||
type="spppb:RteGrpOfferKeyType" minOccurs="0" | <sequence> | |||
maxOccurs="unbounded"/> | <element name="startTn" type="spppb:NumberType"/> | |||
</sequence> | <element name="endTn" type="spppb:NumberType"/> | |||
</extension> | <element name="corInfo" type="spppb:CORInfoType" | |||
</complexContent> | minOccurs="0"/> | |||
</complexType> | </sequence> | |||
<complexType name="AddEgrRteRqstType"> | </extension> | |||
<complexContent> | </complexContent> | |||
<extension base="spppb:BasicUpdateRqstType"> | </complexType> | |||
<sequence> | <complexType name="TNPType"> | |||
<element name="egrRte" type="spppb:EgrRteType"/> | <complexContent> | |||
</sequence> | <extension base="spppb:PubIdType"> | |||
</extension> | <sequence> | |||
</complexContent> | <element name="tnPrefix" type="spppb:NumberType"/> | |||
</complexType> | <element name="corInfo" type="spppb:CORInfoType" | |||
<complexType name="DelEgrRteRqstType"> | minOccurs="0"/> | |||
<complexContent> | </sequence> | |||
<extension base="spppb:BasicUpdateRqstType"> | </extension> | |||
<sequence> | </complexContent> | |||
<element name="objKey" type="spppb:ObjKeyType"/> | </complexType> | |||
</sequence> | <complexType name="RNType"> | |||
</extension> | <complexContent> | |||
</complexContent> | <extension base="spppb:PubIdType"> | |||
</complexType> | <sequence> | |||
<complexType name="GetEgrRtesRqstType"> | <element name="rn" type="spppb:NumberType"/> | |||
<complexContent> | <element name="corInfo" type="spppb:CORInfoType" | |||
<extension base="spppb:BasicQueryRqstType"> | minOccurs="0"/> | |||
<sequence> | </sequence> | |||
<element name="objKey" type="spppb:ObjKeyType" | </extension> | |||
minOccurs="0" maxOccurs="unbounded"/> | </complexContent> | |||
</sequence> | </complexType> | |||
</extension> | <complexType name="RteRecType" abstract="true"> | |||
</complexContent> | <complexContent> | |||
</complexType> | <extension base="spppb:BasicObjType"> | |||
<annotation> | <sequence> | |||
<documentation> -------- Generic Request and Response Definitions | <element name="rrName" type="spppb:ObjNameType"/> | |||
--------------- </documentation> | <element name="priority" type="unsignedShort" | |||
</annotation> | minOccurs="0"/> | |||
<element name="spppUpdateRequest"> | </sequence> | |||
<complexType> | </extension> | |||
<sequence> | </complexContent> | |||
<element name="clientTransId" type="spppb:TransIdType" | </complexType> | |||
minOccurs="0"/> | <complexType name="NAPTRType"> | |||
<complexContent> | ||||
<extension base="spppb:RteRecType"> | ||||
<sequence> | ||||
<element name="order" type="unsignedShort"/> | ||||
<element name="flags" type="spppb:FlagsType" | ||||
minOccurs="0"/> | ||||
<element name="svcs" type="spppb:SvcType"/> | ||||
<element name="regx" type="spppb:RegexParamType" | ||||
minOccurs="0"/> | ||||
<element name="repl" type="spppb:ReplType" | ||||
minOccurs="0"/> | ||||
<element name="ttl" type="positiveInteger" | ||||
minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="NSType"> | ||||
<complexContent> | ||||
<extension base="spppb:RteRecType"> | ||||
<sequence> | ||||
<element name="hostName" type="token"/> | ||||
<element name="ipAddr" type="spppb:IPAddrType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="ttl" type="positiveInteger" | ||||
minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="URIType"> | ||||
<complexContent> | ||||
<extension base="spppb:RteRecType"> | ||||
<sequence> | ||||
<element name="ere" type="token" | ||||
default="^(.*)$"/> | ||||
<element name="uri" type="anyURI"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="RteGrpOfferType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicObjType"> | ||||
<sequence> | ||||
<element name="rteGrpOfferKey" | ||||
type="spppb:RteGrpOfferKeyType"/> | ||||
<element name="status" | ||||
type="spppb:RteGrpOfferStatusType"/> | ||||
<element name="offerDateTime" type="dateTime"/> | ||||
<element name="acceptDateTime" type="dateTime" | ||||
minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<complexType name="EgrRteType"> | ||||
<complexContent> | ||||
<extension base="spppb:BasicObjType"> | ||||
<sequence> | ||||
<element name="egrRteName" | ||||
type="spppb:ObjNameType"/> | ||||
<element name="pref" type="unsignedShort"/> | ||||
<element name="regxRewriteRule" | ||||
type="spppb:RegexParamType"/> | ||||
<element name="ingrRteRec" | ||||
type="spppb:ObjKeyType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</extension> | ||||
</complexContent> | ||||
</complexType> | ||||
<annotation> | ||||
<documentation> | ||||
-- Abstract Object and Element Type Defs -- | ||||
</documentation> | ||||
</annotation> | ||||
<complexType name="BasicObjType" abstract="true"> | ||||
<sequence> | ||||
<element name="rant" type="spppb:OrgIdType"/> | ||||
<element name="rar" type="spppb:OrgIdType"/> | ||||
<element name="cDate" type="dateTime" | ||||
minOccurs="0"/> | ||||
<element name="mDate" type="dateTime" | ||||
minOccurs="0"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="RegexParamType"> | ||||
<sequence> | ||||
<element name="ere" type="spppb:RegexType" | ||||
default="^(.*)$"/> | ||||
<element name="repl" type="spppb:ReplType"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="IPAddrType"> | ||||
<sequence> | ||||
<element name="addr" type="spppb:AddrStringType"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
<attribute name="type" type="spppb:IPType" | ||||
default="v4"/> | ||||
</complexType> | ||||
<complexType name="RteRecRefType"> | ||||
<sequence> | ||||
<element name="rrKey" type="spppb:ObjKeyType"/> | ||||
<element name="priority" type="unsignedShort"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="SourceIdentType"> | ||||
<sequence> | ||||
<element name="sourceIdentLabel" type="token"/> | ||||
<element name="sourceIdentScheme" | ||||
type="spppb:SourceIdentSchemeType"/> | ||||
<element name="ext" type="spppb:ExtAnyType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="CORInfoType"> | ||||
<sequence> | ||||
<element name="corClaim" type="boolean" | ||||
default="true"/> | ||||
<element name="cor" type="boolean" | ||||
default="false" minOccurs="0"/> | ||||
<element name="corDate" type="dateTime" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="SvcMenuType"> | ||||
<sequence> | ||||
<element name="serverStatus" | ||||
type="spppb:ServerStatusType"/> | ||||
<element name="majMinVersion" type="token" | ||||
maxOccurs="unbounded"/> | ||||
<element name="objURI" type="anyURI" | ||||
maxOccurs="unbounded"/> | ||||
<element name="extURI" type="anyURI" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
<complexType name="ExtAnyType"> | ||||
<sequence> | ||||
<any namespace="##other" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
<simpleType name="FlagsType"> | ||||
<restriction base="token"> | ||||
<length value="1"/> | ||||
<pattern value="[A-Z]|[a-z]|[0-9]"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="SvcType"> | ||||
<restriction base="token"> | ||||
<minLength value="1"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="RegexType"> | ||||
<restriction base="token"> | ||||
<minLength value="1"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="ReplType"> | ||||
<restriction base="token"> | ||||
<minLength value="1"/> | ||||
<maxLength value="255"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="OrgIdType"> | ||||
<restriction base="token"/> | ||||
</simpleType> | ||||
<simpleType name="ObjNameType"> | ||||
<restriction base="token"> | ||||
<minLength value="3"/> | ||||
<maxLength value="80"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="TransIdType"> | ||||
<restriction base="token"> | ||||
<minLength value="3"/> | ||||
<maxLength value="120"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="MinorVerType"> | ||||
<restriction base="unsignedLong"/> | ||||
</simpleType> | ||||
<simpleType name="AddrStringType"> | ||||
<restriction base="token"> | ||||
<minLength value="3"/> | ||||
<maxLength value="45"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="IPType"> | ||||
<restriction base="token"> | ||||
<enumeration value="v4"/> | ||||
<enumeration value="v6"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="SourceIdentSchemeType"> | ||||
<restriction base="token"> | ||||
<enumeration value="uri"/> | ||||
<enumeration value="ip"/> | ||||
<enumeration value="rootDomain"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="ServerStatusType"> | ||||
<restriction base="token"> | ||||
<enumeration value="inService"/> | ||||
<enumeration value="outOfService"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="RteGrpOfferStatusType"> | ||||
<restriction base="token"> | ||||
<enumeration value="offered"/> | ||||
<enumeration value="accepted"/> | ||||
</restriction> | ||||
</simpleType> | ||||
<simpleType name="NumberType"> | ||||
<restriction base="token"> | ||||
<maxLength value="20"/> | ||||
<pattern value="\+?\d\d*"/> | ||||
</restriction> | ||||
</simpleType> | ||||
</schema> | ||||
<element name="minorVer" type="spppb:MinorVerType" | 11. Acknowledgments | |||
minOccurs="0"/> | ||||
<element name="rqst" type="spppb:BasicUpdateRqstType" | ||||
maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
<element name="spppUpdateResponse"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="clientTransId" type="spppb:TransIdType" | ||||
minOccurs="0"/> | ||||
<element name="serverTransId" type="spppb:TransIdType"/> | ||||
<element name="overallResult" type="spppb:ResultCodeType"/> | ||||
<element name="rqstObjResult" | ||||
type="spppb:RqstObjResultCodeType" minOccurs="0" | ||||
maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
<element name="spppQueryRequest"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="minorVer" type="spppb:MinorVerType" | ||||
minOccurs="0"/> | ||||
<element name="rqst" type="spppb:BasicQueryRqstType"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
<element name="spppQueryResponse"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="overallResult" type="spppb:ResultCodeType"/> | ||||
<element name="resultSet" type="spppb:BasicObjType" | ||||
minOccurs="0" maxOccurs="unbounded"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
<element name="spppServerStatusRequest"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="minorVer" type="spppb:MinorVerType" | ||||
minOccurs="0"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
<element name="spppServerStatusResponse"> | ||||
<complexType> | ||||
<sequence> | ||||
<element name="overallResult" type="spppb:ResultCodeType"/> | ||||
<element name="svcMenu" type="spppb:SvcMenuType"/> | ||||
</sequence> | ||||
</complexType> | ||||
</element> | ||||
</schema> | ||||
12. Acknowledgments | ||||
This document is a result of various discussions held in the DRINKS | This document is a result of various discussions held in the DRINKS | |||
working group and within the DRINKS protocol design team, which is | working group and within the DRINKS protocol design team, which is | |||
comprised of the following individuals, in alphabetical order: | comprised of the following individuals, in alphabetical order: | |||
Alexander Mayrhofer, Deborah A Guyton, David Schwartz, Lisa | Alexander Mayrhofer, Deborah A Guyton, David Schwartz, Lisa | |||
Dusseault, Manjul Maharishi, Mickael Marrache, Otmar Lendl, Richard | Dusseault, Manjul Maharishi, Mickael Marrache, Otmar Lendl, Richard | |||
Shockey, Samuel Melloul, and Sumanth Channabasappa. | Shockey, Samuel Melloul, and Sumanth Channabasappa. | |||
13. References | 12. References | |||
13.1. Normative References | 12.1. Normative References | |||
[I-D.ietf-drinks-sppp-over-soap] | [I-D.ietf-drinks-sppp-over-soap] | |||
Cartwright, K., "SPPP Over SOAP and HTTP", | Cartwright, K., "SPPP Over SOAP and HTTP", | |||
draft-ietf-drinks-sppp-over-soap-05 (work in progress), | draft-ietf-drinks-sppp-over-soap-05 (work in progress), | |||
September 2011. | September 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. | |||
[RFC2277] Alvestrand, H., "IETF Policy on Character Sets and | [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and | |||
skipping to change at page 95, line 36 | skipping to change at page 48, line 36 | |||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, January 2005. | RFC 3986, January 2005. | |||
[RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | |||
RFC 4949, August 2007. | RFC 4949, August 2007. | |||
[RFC5067] Lind, S. and P. Pfautz, "Infrastructure ENUM | [RFC5067] Lind, S. and P. Pfautz, "Infrastructure ENUM | |||
Requirements", RFC 5067, November 2007. | Requirements", RFC 5067, November 2007. | |||
13.2. Informative References | 12.2. Informative References | |||
[I-D.ietf-drinks-usecases-requirements] | [I-D.ietf-drinks-usecases-requirements] | |||
Channabasappa, S., "Data for Reachability of Inter/ | Channabasappa, S., "Data for Reachability of Inter/ | |||
tra-NetworK SIP (DRINKS) Use cases and Protocol | tra-NetworK SIP (DRINKS) Use cases and Protocol | |||
Requirements", draft-ietf-drinks-usecases-requirements-06 | Requirements", draft-ietf-drinks-usecases-requirements-06 | |||
(work in progress), August 2011. | (work in progress), August 2011. | |||
[RFC2781] Hoffman, P. and F. Yergeau, "UTF-16, an encoding of ISO | [RFC2781] Hoffman, P. and F. Yergeau, "UTF-16, an encoding of ISO | |||
10646", RFC 2781, February 2000. | 10646", RFC 2781, February 2000. | |||
End of changes. 76 change blocks. | ||||
2722 lines changed or deleted | 772 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/ |