| draft-ietf-drinks-spprov-01.txt | | draft-ietf-drinks-spprov-02.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: January 13, 2011 TNS | | Expires: April 15, 2011 TNS | |
| S. Ali | | S. Ali | |
| NeuStar | | NeuStar | |
| A. Mayrhofer | | A. Mayrhofer | |
| enum.at GmbH | | enum.at GmbH | |
|
| July 12, 2010 | | October 12, 2010 | |
| | | | |
| Session Peering Provisioning Protocol | | Session Peering Provisioning Protocol | |
|
| draft-ietf-drinks-spprov-01 | | draft-ietf-drinks-spprov-02 | |
| | | | |
| Abstract | | Abstract | |
| | | | |
| This document defines a protocol for provisioning session | | This document defines a protocol for provisioning session | |
| establishment data into Session Data Registries and SIP Service | | establishment data into Session Data Registries and SIP Service | |
| Provider data stores. The provisioned data is typically used by | | Provider data stores. The provisioned data is typically used by | |
| various network elements for session peering. | | various network elements for session peering. | |
| | | | |
| This document describes the Session Peering Provisioning Protocol | | This document describes the Session Peering Provisioning Protocol | |
| used by clients to provision registries. The document provides a set | | used by clients to provision registries. The document provides a set | |
| | | | |
| skipping to change at page 1, line 44 | | skipping to change at page 1, line 44 | |
| Internet-Drafts are working documents of the Internet Engineering | | Internet-Drafts are working documents of the Internet Engineering | |
| Task Force (IETF). Note that other groups may also distribute | | Task Force (IETF). Note that other groups may also distribute | |
| working documents as Internet-Drafts. The list of current Internet- | | working documents as Internet-Drafts. The list of current Internet- | |
| Drafts is at http://datatracker.ietf.org/drafts/current/. | | Drafts is at http://datatracker.ietf.org/drafts/current/. | |
| | | | |
| Internet-Drafts are draft documents valid for a maximum of six months | | Internet-Drafts are draft documents valid for a maximum of six months | |
| and may be updated, replaced, or obsoleted by other documents at any | | and may be updated, replaced, or obsoleted by other documents at any | |
| time. It is inappropriate to use Internet-Drafts as reference | | time. It is inappropriate to use Internet-Drafts as reference | |
| material or to cite them other than as "work in progress." | | material or to cite them other than as "work in progress." | |
| | | | |
|
| This Internet-Draft will expire on January 13, 2011. | | This Internet-Draft will expire on April 15, 2011. | |
| | | | |
| Copyright Notice | | Copyright Notice | |
| | | | |
| Copyright (c) 2010 IETF Trust and the persons identified as the | | Copyright (c) 2010 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 | | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |
|
| 3. Protocol Definition . . . . . . . . . . . . . . . . . . . . . 9 | | 3. Protocol High Level Design . . . . . . . . . . . . . . . . . . 9 | |
| 3.1. Protocol Overview and Layering . . . . . . . . . . . . . . 9 | | 3.1. Protocol Layering . . . . . . . . . . . . . . . . . . . . 9 | |
| 3.2. Data Model . . . . . . . . . . . . . . . . . . . . . . . . 10 | | 3.2. Protocol Data Model . . . . . . . . . . . . . . . . . . . 10 | |
| 3.2.1. Structure of the SPPP Data Model . . . . . . . . . . . 10 | | 4. Transport Protocol Requirements . . . . . . . . . . . . . . . 14 | |
| 3.2.2. Data Model Objects and Attributes . . . . . . . . . . 12 | | 4.1. Connection Oriented . . . . . . . . . . . . . . . . . . . 15 | |
| 3.2.3. Applicability for LUF-only Data Provisioning . . . . . 13 | | 4.2. Request and Response Model . . . . . . . . . . . . . . . . 15 | |
| 3.2.4. Applicability for LUF+LRF data Provisioning . . . . . 15 | | 4.3. Connection Lifetime . . . . . . . . . . . . . . . . . . . 15 | |
| 3.3. Common Attributes . . . . . . . . . . . . . . . . . . . . 17 | | 4.4. Authentication . . . . . . . . . . . . . . . . . . . . . . 15 | |
| 3.4. Known Issues and Current Limitations of the Data Model . . 17 | | 4.5. Confidentiality and Integrity . . . . . . . . . . . . . . 16 | |
| 4. Transport Protocol Requirements . . . . . . . . . . . . . . . 18 | | 4.6. Near Real Time . . . . . . . . . . . . . . . . . . . . . . 16 | |
| 4.1. Connection Oriented . . . . . . . . . . . . . . . . . . . 19 | | 4.7. Request and Response Sizes . . . . . . . . . . . . . . . . 16 | |
| 4.2. Request & Response Model . . . . . . . . . . . . . . . . . 19 | | 4.8. Request and Response Correlation . . . . . . . . . . . . . 16 | |
| 4.3. Connection Lifetime . . . . . . . . . . . . . . . . . . . 19 | | 4.9. Request Acknowledgement . . . . . . . . . . . . . . . . . 16 | |
| 4.4. Authentication . . . . . . . . . . . . . . . . . . . . . . 19 | | 4.10. Mandatory Transport . . . . . . . . . . . . . . . . . . . 17 | |
| 4.5. Confidentiality & Integrity . . . . . . . . . . . . . . . 20 | | 5. Base Protocol Data Structures . . . . . . . . . . . . . . . . 18 | |
| 4.6. Near Real Time . . . . . . . . . . . . . . . . . . . . . . 20 | | 5.1. Request and Response Structures . . . . . . . . . . . . . 18 | |
| 4.7. Request & Response Sizes . . . . . . . . . . . . . . . . . 20 | | 5.1.1. Update Request and Response Structures . . . . . . . . 18 | |
| 4.8. Request and Response Correlation . . . . . . . . . . . . . 20 | | 5.1.2. Query Request and Response Structures . . . . . . . . 21 | |
| 4.9. Request Acknowledgement . . . . . . . . . . . . . . . . . 20 | | 5.2. Response Codes and Messages . . . . . . . . . . . . . . . 23 | |
| 4.10. Mandatory Transport . . . . . . . . . . . . . . . . . . . 21 | | 5.3. Basic Object Type and Organization Identifiers . . . . . . 25 | |
| 5. XML Considerations . . . . . . . . . . . . . . . . . . . . . . 22 | | 6. Protocol Commands . . . . . . . . . . . . . . . . . . . . . . 27 | |
| 5.1. Namespaces . . . . . . . . . . . . . . . . . . . . . . . . 22 | | 6.1. Add Route Group Operation . . . . . . . . . . . . . . . . 27 | |
| 5.2. Versioning . . . . . . . . . . . . . . . . . . . . . . . . 22 | | 6.2. Get Route Groups Operation . . . . . . . . . . . . . . . . 31 | |
| 6. Request and Reply Model . . . . . . . . . . . . . . . . . . . 23 | | 6.3. Add Destination Group Operation . . . . . . . . . . . . . 32 | |
| 6.1. Request . . . . . . . . . . . . . . . . . . . . . . . . . 23 | | 6.4. Get Destination Groups Operation . . . . . . . . . . . . . 33 | |
| 6.2. Reply . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | | 6.5. Add Route Group Offer Operation . . . . . . . . . . . . . 34 | |
| 7. Response Codes and Messages . . . . . . . . . . . . . . . . . 27 | | 6.6. Accept Route Group Offer Operation . . . . . . . . . . . . 36 | |
| 8. Protocol Commands . . . . . . . . . . . . . . . . . . . . . . 29 | | 6.7. Reject Route Group Offer Operation . . . . . . . . . . . . 37 | |
| 8.1. Add Route Group Operation . . . . . . . . . . . . . . . . 29 | | 6.8. Get Route Group Offers Operation . . . . . . . . . . . . . 38 | |
| 8.2. Get Route Groups Operation . . . . . . . . . . . . . . . . 36 | | 6.9. Public Identifier Operations . . . . . . . . . . . . . . . 40 | |
| 8.3. Add Route Group Offers Operation . . . . . . . . . . . . . 38 | | 6.10. Egress Route Operations . . . . . . . . . . . . . . . . . 44 | |
| 8.4. Accept Route Group Offers Operation . . . . . . . . . . . 41 | | 6.11. Add Route Record Operation . . . . . . . . . . . . . . . . 46 | |
| 8.5. Reject Route Group Offers Operation . . . . . . . . . . . 42 | | 6.12. Get Route Records Operation . . . . . . . . . . . . . . . 51 | |
| 8.6. Get Route Group Offers Operation . . . . . . . . . . . . . 44 | | 6.13. Delete Operation . . . . . . . . . . . . . . . . . . . . . 52 | |
| 8.7. Public Identifier Operations . . . . . . . . . . . . . . . 47 | | 7. SPPP Examples . . . . . . . . . . . . . . . . . . . . . . . . 53 | |
| 8.7.1. Add Public Identifier . . . . . . . . . . . . . . . . 47 | | 7.1. Add Destination Group . . . . . . . . . . . . . . . . . . 53 | |
| 8.7.2. Get Public Identifier . . . . . . . . . . . . . . . . 50 | | 7.2. Add Route Records . . . . . . . . . . . . . . . . . . . . 54 | |
| 8.7.3. Delete Public Identifier . . . . . . . . . . . . . . . 51 | | 7.3. Add Route Records -- URIType . . . . . . . . . . . . . . . 55 | |
| 8.8. Egress Route Operations . . . . . . . . . . . . . . . . . 52 | | 7.4. Add Route Group . . . . . . . . . . . . . . . . . . . . . 56 | |
| 8.8.1. Add Egress Route . . . . . . . . . . . . . . . . . . . 53 | | 7.5. Add Public Identity -- Successful COR claim . . . . . . . 58 | |
| 8.8.2. Get Egress Route . . . . . . . . . . . . . . . . . . . 54 | | 7.6. Add LRN . . . . . . . . . . . . . . . . . . . . . . . . . 59 | |
| 8.8.3. Delete Egress Route . . . . . . . . . . . . . . . . . 55 | | 7.7. Add TN Range . . . . . . . . . . . . . . . . . . . . . . . 60 | |
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 56 | | 7.8. Add TN Range with Open Number Plan support . . . . . . . . 61 | |
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 57 | | 7.9. Enable Peering -- Route Group Offer . . . . . . . . . . . 62 | |
| 11. Formal Specification . . . . . . . . . . . . . . . . . . . . . 58 | | 7.10. Enable Peering -- Route Group Offer Accept . . . . . . . . 64 | |
| 12. Specification Extensibility . . . . . . . . . . . . . . . . . 71 | | 7.11. Add Egress Route . . . . . . . . . . . . . . . . . . . . . 65 | |
| 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 72 | | 7.12. Get Destination Group . . . . . . . . . . . . . . . . . . 66 | |
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 73 | | 7.13. Get Public Identity . . . . . . . . . . . . . . . . . . . 67 | |
| 14.1. Normative References . . . . . . . . . . . . . . . . . . . 73 | | 7.14. Get Route Group Request . . . . . . . . . . . . . . . . . 68 | |
| 14.2. Informative References . . . . . . . . . . . . . . . . . . 73 | | 7.15. Get Route Group Offers Request . . . . . . . . . . . . . . 69 | |
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 75 | | 7.16. Get Egree Route . . . . . . . . . . . . . . . . . . . . . 70 | |
| | | 7.17. Delete Destination Group . . . . . . . . . . . . . . . . . 72 | |
| | | 7.18. Delete Public Identity . . . . . . . . . . . . . . . . . . 72 | |
| | | 7.19. Delete Route Group Request . . . . . . . . . . . . . . . . 73 | |
| | | 7.20. Delete Route Group Offers Request . . . . . . . . . . . . 74 | |
| | | 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 . . . . . . . . . . . . . . . . . . . . . 79 | |
| | | 11. Formal Specification . . . . . . . . . . . . . . . . . . . . . 80 | |
| | | 12. Specification Extensibility . . . . . . . . . . . . . . . . . 93 | |
| | | 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 94 | |
| | | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 95 | |
| | | 14.1. Normative References . . . . . . . . . . . . . . . . . . . 95 | |
| | | 14.2. Informative References . . . . . . . . . . . . . . . . . . 95 | |
| | | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 97 | |
| | | | |
| 1. Introduction | | 1. Introduction | |
| | | | |
| Service providers and enterprises use registries to make call or | | Service providers and enterprises use registries to make call or | |
| session routing decisions for Voice over IP, SMS and MMS traffic | | session routing decisions for Voice over IP, SMS and MMS traffic | |
| exchanges. This document is narrowly focused on the provisioning | | exchanges. This document is narrowly focused on the provisioning | |
| protocol for these registries. This protocol prescribes a way for an | | protocol for these registries. This protocol prescribes a way for an | |
| entity to provision session-related data into a registry. The data | | entity to provision session-related data into a registry. The data | |
| being provisioned can be optionally shared with other participating | | being provisioned can be optionally shared with other participating | |
| peering entities. The requirements and use cases driving this | | peering entities. The requirements and use cases driving this | |
| protocol have been documented in | | protocol have been documented in | |
| [I-D.ietf-drinks-usecases-requirements]. The reader is expected to | | [I-D.ietf-drinks-usecases-requirements]. The reader is expected to | |
| be familiar with the terminology defined in the previously mentioned | | be familiar with the terminology defined in the previously mentioned | |
| document. | | document. | |
| | | | |
| Three types of provisioning flows have been described in the use case | | Three types of provisioning flows have been described in the use case | |
| document: client to registry provisioning, registry to local data | | document: client to registry provisioning, registry to local data | |
| repository and registry-to-registry. This document addresses a | | repository and registry-to-registry. This document addresses a | |
| subset (client-to-registry provisioning) by defining a Session | | subset (client-to-registry provisioning) by defining a Session | |
| Peering Provisioning Protocol (SPPP) for provisioning Session | | Peering Provisioning Protocol (SPPP) for provisioning Session | |
|
| Establishment Data (SED) into a Registry (arrow numbered one in the | | Establishment Data (SED) into a Registry (arrow "1" in the figure | |
| figure below). While the other "provisioning flows" are shown below | | below). While the other "provisioning flows" are shown below as | |
| as separate message flows, no determination has been made for whether | | separate message flows, no determination has been made for whether | |
| one common baseline protocol could be used for all three, or whether | | one common baseline protocol could be used for all three, or whether | |
| distinct protocols are required. | | distinct protocols are required. | |
| | | | |
| *------------* *------------* | | *------------* *------------* | |
| (1). Provisioning SED | | (3).Registry | | | | (1). Provisioning SED | | (3).Registry | | | |
| -----------------------> | Registry |<------------->| Registry | | | -----------------------> | Registry |<------------->| Registry | | |
| data into Registries| | to Registry | | | | data into Registries| | to Registry | | | |
| *------------* exchanges *------------* | | *------------* exchanges *------------* | |
| / \ \ | | / \ \ | |
| / \ \ | | / \ \ | |
| | | | |
| skipping to change at page 5, line 49 | | skipping to change at page 5, line 49 | |
| Subsequently, a Registry may distribute the provisioned data into | | Subsequently, a Registry may distribute the provisioned data into | |
| local Data Repositories used for look-up queries (identifier -> URI) | | local Data Repositories used for look-up queries (identifier -> URI) | |
| or for lookup and location resolution (identifier -> URI -> ingress | | or for lookup and location resolution (identifier -> URI -> ingress | |
| SBE of terminating SSP). In some cases, the Registry may | | SBE of terminating SSP). In some cases, the Registry may | |
| additionally offer a central query resolution service (not shown in | | additionally offer a central query resolution service (not shown in | |
| the above figure). | | the above figure). | |
| | | | |
| A key requirement for the SPPP protocol is to be able to accommodate | | A key requirement for the SPPP protocol is to be able to accommodate | |
| two basic deployment scenarios: | | two basic deployment scenarios: | |
| | | | |
|
| 1. A Look-Up Function (LUF) to determine the target domain to assist | | 1. A Local Data Repository serves a Look-Up Function (LUF) to | |
| in call routing (as described in [RFC5486]). In this case, the | | determine the target domain to assist in call routing (as | |
| querying entity may use other means to perform the Location | | described in [RFC5486]). In this case, the querying entity may | |
| Routing Function (LRF) which in turn helps determine the actual | | use other means to perform the Location Routing Function (LRF) | |
| location of the Signaling Function in that domain. | | which in turn helps determine the actual location of the | |
| | | Signaling Function in that domain. | |
| | | | |
|
| 2. Both Look-Up function (LUF) and Location Routing Function (LRF) | | 2. A Local Data Repository serves both a Look-Up function (LUF) and | |
| to locate the SED data fully. | | Location Routing Function (LRF) to locate the SED data fully. | |
| | | | |
| In terms of protocol design, SPPP protocol is agnostic to the | | In terms of protocol design, SPPP protocol is agnostic to the | |
| transport. This document includes the description of the data model | | transport. This document includes the description of the data model | |
| and the means to enable protocol operations within a request and | | and the means to enable protocol operations within a request and | |
| response structure. To encourage interoperability, the protocol | | response structure. To encourage interoperability, the protocol | |
| supports extensibility aspects. | | supports extensibility 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 3 provides an overview of the SPPP protocol, including | | o Section 3 provides an overview of the SPPP protocol, including | |
| the layering approach, functional entities and data model; | | the layering approach, functional entities and data model; | |
| | | | |
|
| o Section 4 defines requirements for SPPP transport protocols; | | o Section 4 specifies requirements for SPPP transport protocols; | |
| | | | |
|
| o Section 5 defines XML considerations that XML parsers must meet | | o Section 5 describes the base protocol data structures including | |
| to conform to this specification. | | the request and response elements (Section 5.1), the response | |
| | | codes and messages (Section 5.2) and the basic object type most | |
| | | first class objects extend from; | |
| | | | |
|
| o Section 6 describes the protocol request-reply model; | | o Section 6 and Section 7 describe the main protocol commands and | |
| | | examples; | |
| | | | |
|
| o Section 8 defines the protocol commands for this version of | | o Section 8 defines XML considerations that XML parsers must meet | |
| SPPP, and how to extend them; | | to conform to this specification; | |
| | | | |
| | | o Section 11 normatively defines the SPPP protocol using its XML | |
| | | 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] | |
| and the ENUM Validation Architecture [RFC4725]. | | and the ENUM Validation Architecture [RFC4725]. | |
| | | | |
| skipping to change at page 7, line 41 | | skipping to change at page 7, line 41 | |
| | | | |
| A Registry acts as an SPPP Server. | | A Registry acts as an SPPP Server. | |
| | | | |
| Registrant: In this document, we extend the definition of a | | Registrant: In this document, we extend the definition of a | |
| Registrant based on [RFC4725]. The Registrant is the end-user, | | Registrant based on [RFC4725]. The Registrant is the end-user, | |
| the person or organization who is the "holder" of the Session | | the person or organization who is the "holder" of the Session | |
| Establishment Data being provisioned into the Registry. For | | Establishment Data being provisioned into the Registry. For | |
| example, in [I-D.ietf-drinks-usecases-requirements], a Registrant | | example, in [I-D.ietf-drinks-usecases-requirements], a Registrant | |
| is pictured as a SIP Service Provider in Figure 2. | | is pictured as a SIP Service Provider in Figure 2. | |
| | | | |
|
| A Registrant is identified by its name in the data model. | | A Registrant is identified by its name and an identifier in the | |
| | | data model. | |
| | | | |
| Registrar: In this document, we also extend the definition of a | | Registrar: In this document, we also extend the definition of a | |
| Registrar from [RFC4725]. A Registrar performs provisioning | | Registrar from [RFC4725]. A Registrar performs provisioning | |
| operations on behalf of a Registrant by interacting with the | | operations on behalf of a Registrant by interacting with the | |
| Registry, in our case via the SPPP protocol defined in this | | Registry, in our case via the SPPP protocol defined in this | |
| document. | | document. | |
| | | | |
|
| A Registrar is identified by its name in the data model. | | A Registrar is identified by its name and an identifier in the | |
| | | data model. | |
| | | | |
|
| 3. Protocol Definition | | 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 protocol. An overview of the | | the information framework for the SPPP protocol. An overview of the | |
| protocol operations is first provided with a typical deployment | | protocol operations is first provided with a typical deployment | |
| scenario. The data model is then defined along with all the objects | | scenario. The data model is then defined along with all the objects | |
| manipulated by the protocol and their relationships. | | manipulated by the protocol and their relationships. | |
| | | | |
|
| 3.1. Protocol Overview and Layering | | 3.1. Protocol Layering | |
| | | | |
| SPPP is a simple request/reply protocol that allows a client | | SPPP is a simple request/reply protocol that allows a client | |
| application to submit provisioning data and query requests to a | | application to submit provisioning data and query requests to a | |
| server. The SPPP data structures are designed to be protocol | | server. The SPPP data structures are designed to be protocol | |
| agnostic. Concerns regarding encryption, non-repudiation, and | | agnostic. Concerns regarding encryption, non-repudiation, and | |
| authentication are beyond the scope of this document. For more | | authentication are beyond the scope of this document. For more | |
| details, please refer to the Transport Protocol Requirements section. | | details, please refer to the Transport Protocol Requirements section. | |
| | | | |
| Layer Example | | Layer Example | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
| (5) |Data Objects | | RteGrpType, etc. | | | (5) |Data Objects | | RteGrpType, etc. | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
| | | | | | | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
|
| (4) | Operations | | addRteGrpsRqst, etc. | | | (4) | Operations | | AddRteGrpRqstType, etc. | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
| | | | | | | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
|
| (3) | Message | | spppRequest, spppResponse | | | (3) | Message | | spppUpdateRequest, | | |
| | | | | | spppUpdateResponse, | | |
| | | | | | spppQueryRequest, | | |
| | | | | | spppQueryResponse | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
| | | | | | | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
| (2) | Message | | HTTP, SOAP, None, etc. | | | (2) | Message | | HTTP, SOAP, None, etc. | | |
| | Envelope | | | | | | Envelope | | | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
| | | | | | | | |
| +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | |
| (1) | Transport | | TCP, TLS, BEEP, etc. | | | (1) | Transport | | TCP, TLS, BEEP, etc. | | |
| | Protocol | | | | | | Protocol | | | | |
| | | | |
| skipping to change at page 10, line 23 | | skipping to change at page 10, line 26 | |
| 2. The message envelope layer is optional, but can provide features | | 2. The message envelope layer is optional, but can provide features | |
| that are above the transport technology layer but below the | | that are above the transport technology layer but below the | |
| application messaging layer. Technologies such as HTTP and SOAP | | application messaging layer. Technologies such as HTTP and SOAP | |
| are examples of messaging envelope technologies. | | are examples of messaging envelope technologies. | |
| | | | |
| 3. The message layer provides a simple, envelope-independent and | | 3. The message layer provides a simple, envelope-independent and | |
| transport-independent, SPPP wrapper for SPPP request and response | | transport-independent, SPPP wrapper for SPPP request and response | |
| messages. | | messages. | |
| | | | |
| 4. The operation layer defines the set of base SPPP actions that can | | 4. The operation layer defines the set of base SPPP actions that can | |
|
| be invoked using an SPPP message. Operations are encoded using | | be invoked for a given object data type using an SPPP message. | |
| XML encoded actions and objects. | | Operations are encoded using XML encoded actions and objects. | |
| | | | |
| 5. The data object layer defines the base set of SPPP data objects | | 5. The data object layer defines the base set of SPPP data objects | |
| that can be included in update operations or returned in | | that can be included in update operations or returned in | |
| operation responses. | | operation responses. | |
| | | | |
|
| 3.2. Data Model | | 3.2. Protocol Data Model | |
| | | | |
| The data model illustrated and described in Figure 3 defines the | | The data model illustrated and described in Figure 3 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 Registrants and distinct | | Various clients belonging to different Registrars may use the | |
| Registrars may use the protocol for populating the Registry's data. | | protocol for populating the Registry's data. | |
| | | | |
| 3.2.1. Structure of the SPPP Data Model | | | |
| | | | |
| 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]. Note that the current | | [I-D.ietf-drinks-usecases-requirements]. | |
| version of this data model does not yet address the notion of Data | | | |
| Recipient Groups (left for a future revision of this document). | | | |
| | | | |
| +-------------+ +------------------+ | | +-------------+ +------------------+ | |
| | all object | |Organization: | | | | all object | |Organization: | | |
| | types | |orgId, | | | | types | |orgId, | | |
| +------+------+ |orgName, | | | +------+------+ |orgName, | | |
|
| +------------>| | | | +------------>|extension | | |
| |extension | | | | | | |
| | | | |
| All objects are | | | | All objects are | | | |
| associated with 2 | | | | associated with 2 | | | |
| Organizations to +------------------+ | | Organizations to +------------------+ | |
| identify the ^ | | identify the ^ | |
| registrant and |A Route Group is | | registrant and |A Route Group is | |
| the registrar |associated with | | the registrar |associated with | |
|
| |zero or more | | |zero or more Peering | |
| |Organizations | | |Organizations | |
| | | | | | |
| +--------+--------------+ | | +--------+--------------+ | |
| |Route Group: | +-----[abstract]-+ | | |Route Group: | +-----[abstract]-+ | |
|
| | rantId*, | | | | | | rantId, | | Route Record: | | |
| | rarId, | | | | | | rarId, | | | | |
|
| | rteGrpName*, | | Route Record: | | | | rteGrpName, | | rrName, | | |
| | dgName*, +------->| priority, | | | | destGrpRef, +------->| priority, | | |
| | isInSvc, | | extension | | | | isInSvc, | | extension | | |
|
| | rteRec*, | | | | | | rteRecRef, | | | | |
| | peeringOrg, | +----------------+ | | | peeringOrg, | +----------------+ | |
| | sourceIdent, | ^ | | | sourceIdent, | ^ | |
|
| | | | priority, | | | |
| | extension | |Various types | | | extension | |Various types | |
| +-----------------------+ |of Route | | +-----------------------+ |of Route | |
| ^ |Records... | | ^ |Records... | |
| | +------+------------... | | | +------+------------... | |
| | | | | | | | | | | | |
| | +----+ +-------+ +----+ | | | +----+ +-------+ +----+ | |
| | | URI| | NAPTR | | NS | | | | | URI| | NAPTR | | NS | | |
| +----------------+-----+ +----+ +-------+ +----+ | | +----------------+-----+ +----+ +-------+ +----+ | |
| |Destination | | | |Destination | | |
| |Group: | +----------[abstract]-+ | | |Group: | +----------[abstract]-+ | |
|
| | rantId*, | |Public | | | | rantId, | |Public Identifier: | | |
| | rarId, | |Identifier: | | | | rarId, | | | | |
| | dgName*, | | rantId*, | | | | dgName, | | rantId, | | |
| | extension |<----+ rarId, | | | | extension |<----+ rarId, | | |
|
| +----------------------+ | publicIdentifier*, | | | +----------------------+ | publicIdentifier, | | |
| | dgName*, | | | | destGrpRef, | | |
| | | | rteRec, | | |
| | extension | | | | extension | | |
| +---------------------+ | | +---------------------+ | |
| ^ | | ^ | |
| |Various types | | |Various types | |
| |of Public | | |of Public | |
| |Identifiers... | | |Identifiers... | |
| +------+------------... | | +------+------------... | |
| | | | | | | | | | |
| +-----+ +----+ +-----+ | | +-----+ +----+ +-----+ | |
|
| |Email| | TN | | TNR | | | | TN | |TNR | | RN | | |
| +-----+ +----+ +-----+ ... | | +-----+ +----+ +-----+ ... | |
| | | | |
| SPPP Data Model | | SPPP Data Model | |
| | | | |
| Figure 3 | | Figure 3 | |
| | | | |
|
| Note that the attributes whose names end with the character * are | | | |
| mandatory attributes. | | | |
| | | | |
| 3.2.2. Data Model Objects and Attributes | | | |
| | | | |
| 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 (publicIdentifier): | | o Public Identifier: | |
| A public identifier is a well known attribute that is often used | | A public identifier is a well known attribute that is used as the | |
| to perform lookup functions. For the purposes of this document, a | | key to perform lookup functions. For the purposes of this | |
| Public Identifier can be an email address, a telephone number, a | | document, a Public Identifier can be a telephone number, a range | |
| range of telephone numbers or a PSTN Routing Number (RN). | | of telephone numbers, a PSTN Routing Number (RN), or perhaps | |
| | | another type of lookup key. | |
| | | | |
|
| A Destination Group may be associated with a Public Identifier to | | A Public Identifier may be associated with a Destination Group to | |
| create a logical grouping and share a common set of Routes. | | create a logical grouping of Public Identifiers that share a | |
| | | common set of Routes. | |
| | | | |
| A Public Identifier may optionally be associated with zero or more | | A Public Identifier may optionally be associated with zero or more | |
|
| individual route records. This ability for a Public Identifier to | | individual Route Records. This ability for a Public Identifier to | |
| be directly associated with a set of routes (e.g. target URI), as | | be directly associated with a set of Route Records (e.g. target | |
| opposed to being associated with a Destination Group, supports the | | URI), as opposed to being associated with a Destination Group, | |
| use cases where the target URI contains data specifically tailored | | supports the use cases where the target URI contains data | |
| to an individual Public Identifier. | | specifically tailored to an individual Public Identifier. | |
| | | | |
|
| o Telephone Number Range (TNRType, tn, endTn): | | o Telephone Number Range: | |
| A public identifier may represent an inclusive range of telephone | | A public identifier may represent an inclusive range of telephone | |
| numbers. The TN range is defined by the first and last telephone | | numbers. The TN range is defined by the first and last telephone | |
|
| number of the inclusive range. For example, a TN range of | | number of the inclusive range. For example, a TN range defined by | |
| (tn=12125550000, endTn=12125560000) means all the TNs from | | tn=12125550000 and endTn=12125560000 means all the TNs from | |
| 12125550000 to 12125560000 are included. | | 12125550000 to 12125560000 inclusive are included. | |
| | | | |
| o Destination Group (dgName): | | | |
| A collection of zero or more Public Identifiers that are related | | | |
| to one or more Route Group relationships. | | | |
| | | | |
|
| o Route Group (rteGrpName): | | o Destination Group: | |
| A Route Group contains a set of route records (RteRecs) that are | | A name collection of zero or more Public Identifiers that can be | |
| associated with Public Identifiers. To support the use cases | | associated with one or more Route Groups for the purpose of | |
| defined in [I-D.ietf-drinks-usecases-requirements], this document | | facilitating the management of thier common routing information. | |
| defines the following types of RteRecs: NAPTRType, NSType, and | | | |
| URIType. To support the Look-Up Function resolution, it is | | | |
| assumed that the administrative domain will be defined as a URI | | | |
| and it can be expressed as a URIType or a NAPTRType. | | | |
| A Route Group can be either in or out of service (as indicated by | | | |
| 'isInService' attribute). It also contains a list of | | | |
| organizations that can query the object (peeringOrg) and have | | | |
| access to its content (sourceIdent). | | | |
| | | | |
|
| o Source Identity (SourceIdentType, sourceIdentLabels, | | o Route Group: | |
| sourceIdentScheme): | | A Route Group contains a set of references to Route Records, a set | |
| In some scenarios, it is important to identify the source of a | | of Destination Group references, and a set of peering organization | |
| query. The source identity label is a character string that | | identifiers. This is used to establishe a three part | |
| identifies the source of a resolution lookup and can be used for | | relationships between a set of Public Identifiers and their common | |
| source-based routing. We define several ways of identifying the | | routing information (SED), and the list of peering organizations | |
| source: by IP address, by the source URI or a domain name. | | whose query responses may include that routing information in | |
| | | their query responses. To support the use cases defined in | |
| | | [I-D.ietf-drinks-usecases-requirements], this document defines the | |
| | | following types of Route Records: NAPTRType, NSType, and URIType. | |
| | | The sourceIdent element within a Route Group, in concert with the | |
| | | set of peering organization identifiers enables fine grained | |
| | | source based routing. Further details about the Route Group and | |
| | | source based routing refer to the definitions and descriptions of | |
| | | the Route Group operations found later in this document. | |
| | | | |
|
| o Route Record (RteRecType): | | o Route Record: | |
| A Route Record is the data that the resolution systems return in | | A Route Record contains the data that a resolution system returns | |
| response to a successful query with the Public Identifier as the | | in response to a successful query for a Public Identifier. Route | |
| query string. It is associated with a Route Group for routes that | | Recoords are associated with a Route Group for SED that is not | |
| are not specific to a Public Identifier. | | specific to a Public Identifier. | |
| To support the use cases defined in | | To support the use cases defined in | |
| [I-D.ietf-drinks-usecases-requirements], SPPP protocol defines | | [I-D.ietf-drinks-usecases-requirements], SPPP protocol defines | |
| three type of Route Records: URIType, NAPTRType, and NSType. | | three type of Route Records: URIType, NAPTRType, and NSType. | |
| These Route Records extend the abstract type RteRecType and | | These Route Records extend the abstract type RteRecType and | |
| inherit the common attribute 'priority' that is meant for setting | | inherit the common attribute 'priority' that is meant for setting | |
| precedence across the route records defined within a Route Group | | precedence across the route records defined within a Route Group | |
| in a protocol agnostic fashion. | | in a protocol agnostic fashion. | |
| | | | |
|
| o Organization (OrgIdType): | | o Organization: | |
| An Organization represents an entity that is authorized to access | | An Organization is an entity that may fulfill any combination of | |
| given data elements. All objects are associated with two | | three roles: Registrant, Registrar, and Peering Organization. All | |
| organizations to identify the registrant and the registrar. An | | SPPP objects are associated with two organization identifiers to | |
| entity authorized to view a Route Group (typically a SSP peering | | identify each object's registrant and the registrar. A Route | |
| partner) is identified a peering Organization (peeringOrg). | | Group object is also associated with a set of zero or more | |
| | | organization identifiers that identify the peering organizations | |
| 3.2.3. Applicability for LUF-only Data Provisioning | | whose query responses may include the routing information (SED) | |
| | | defined in the Route Records within that Route Group. | |
| This section describes the data model for SPPP clients that only | | | |
| provision data for LUF resolution. | | | |
| | | | |
| The purpose of LUF data provisioning is to provide the administrative | | | |
| domain given a destination group. As such, a client provisioning | | | |
| LUF-only data only needs to provide one or more route groups that | | | |
| contain a route group name and a URI for the target domain. | | | |
| | | | |
| Note that source-based routing is supported: depending on what entity | | | |
| requests the look-up resolution (sourceIdent), a different URI may be | | | |
| returned by using different Route Groups. | | | |
| | | | |
| Certain protocol operations could be added in future revisions of | | | |
| this document as "short-cuts" for LUF related data provisioning. | | | |
| | | | |
| +-----------------------+ | | | |
| |Route Group: | | | | |
| | rteGrpName*, | | | | |
| | isInService, | | | | |
| | URI , | | | | |
| | extension | | | | |
| | | | | | |
| +-----------------------+ | | | |
| ^ | | | |
| | | | | |
| +---------+------------+ | | | |
| |Destination | | | | |
| |Group: | | | | |
| | dgName*, |<----+ | | | |
| | extension | | | | | |
| +----------------------+ | | | | |
| | | | | |
| +-------------+---------+ | | | |
| |Public | | | | |
| |Identifier: | | | | |
| | publicIdentifier*, | | | | |
| | dgName*, | | | | |
| | extension | | | | |
| +-----------------------+ | | | |
| | | | |
| LUF-only Data Model Example for SPPP | | | |
| | | | |
| Figure 4 | | | |
| | | | |
| As an example, a request to add a route group where public | | | |
| identifiers resolve into the URI sip:ssp1.example.com during look-up | | | |
| resolution would be: | | | |
| | | | |
| <?xml version="1.0" encoding="UTF-8"?> | | | |
| <addRteGrpsRqst | | | |
| xmlns="urn:ietf:params:xml:ns:sppp:base:1" | | | |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | | | |
| <clientTransId>id-12317123</clientTransId> | | | |
| <minorVer>20</minorVer> | | | |
| <rteGrp> | | | |
| <base> | | | |
| <rantId>registrantID123</rantId> | | | |
| <rarId>registrarId0</rarId> | | | |
| </base> | | | |
| <rteGrpName>route_grp_1</rteGrpName> | | | |
| <rteRec xsi:type="URIType"> | | | |
| <ere>^(.*)$</ere> | | | |
| <uri>urn:ssp1.example.com</uri> | | | |
| </rteRec> | | | |
| <isInSvc>true</isInSvc> | | | |
| </rteGrp> | | | |
| </addRteGrpsRqst> | | | |
| | | | |
| Figure 5 | | | |
| | | | |
| 3.2.4. Applicability for LUF+LRF data Provisioning | | | |
| | | | |
| This section provides a read-out of the data model for SPPP clients | | | |
| that provision data for both LUF and LRF resolution. | | | |
| | | | |
| The purpose of LUF+LRF data provisioning is to provide a URI given a | | | |
| destination group as well as the location routing for that target | | | |
| domain. As such, a client provisioning LUF+LRF data provides one or | | | |
| more route groups that contain a route group name and a URI for the | | | |
| target domain and each route group is associated with a Route Record | | | |
| which can be in the form of a URI, NAPTR or NS resource record. | | | |
| | | | |
| +-----------------------+ | | | |
| |Route Group: | +-----[abstract]-+ | | | |
| | rteGrpName*, | | | | | | |
| | isInSvc, | | Route Record: | | | | |
| | rteRec, +------->| NAPTR | | | | |
| | extension | | priority, | | | | |
| | | | extension | | | | |
| +-----------------------+ | | | | | |
| ^ +----------------+ | | | |
| | | | | |
| +---------+------------+ | | | |
| |Destination | | | | |
| |Group: | | | | |
| | dgName*, |<----+ | | | |
| | extension | | | | | |
| +----------------------+ | | | | |
| | | | | |
| +-------------+-[abstract]-+ | | | |
| |Public | | | | |
| |Identifier: | | | | |
| | publicIdentifier*, | | | | |
| | dgName*, | | | | |
| | extension | | | | |
| +--------------------------+ | | | |
| | | | |
| LUF+LRF Data Model Example for SPPP | | | |
| | | | |
| Figure 6 | | | |
| | | | |
| As an example, a request to add a route group where public | | | |
| identifiers resolve into the URI ssp1.example.com and NAPTR | | | |
| associated with that domain based on the source Organization would | | | |
| be: | | | |
| | | | |
| <?xml version="1.0" encoding="UTF-8"?> | | | |
| <addRteGrpsRqst xmlns="urn:ietf:params:xml:ns:sppp:base:1" | | | |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | | | |
| <clientTransId>id-12317123</clientTransId> | | | |
| <minorVer>20</minorVer> | | | |
| <rteGrp> | | | |
| <base> | | | |
| <rantId>registrantID123</rantId> | | | |
| <rarId>registrarId0</rarId> | | | |
| </base> | | | |
| <rteGrpName>route_grp_1</rteGrpName> | | | |
| <isInSvc>true</isInSvc> | | | |
| <rteRec xsi:type="URIType"> | | | |
| <ere>^(.*)$</ere> | | | |
| <uri>urn:ssp1.example.com</uri> | | | |
| </rteRec> | | | |
| <isInSvc>true</isInSvc> | | | |
| </rteGrp> | | | |
| </addRteGrpsRqst> | | | |
| | | | |
| Figure 7 | | | |
| | | | |
| 3.3. Common Attributes | | | |
| | | | |
| This section defines common object attributes. The protocol | | | |
| exchanges and operations in SPPP take various parameters. Some of | | | |
| these are common to several objects. | | | |
| | | | |
| Two organization roles have been identified in the use cases and in | | | |
| this protocol. A registrant is the organization or business entity | | | |
| that "owns" the object while a registrar is an entity that can | | | |
| provision an object. | | | |
| | | | |
| 3.4. Known Issues and Current Limitations of the Data Model | | | |
| | | | |
| The data model described in Figure 3 does not yet address all of the | | | |
| requirements and use cases defined in | | | |
| [I-D.ietf-drinks-usecases-requirements]. | | | |
| | | | |
| This section will list known protocol issues to be addressed in | | | |
| future revisions. | | | |
| | | | |
| 4. Transport Protocol Requirements | | 4. Transport Protocol Requirements | |
| | | | |
| This section provides requirements for transport protocols suitable | | This section provides requirements for transport protocols suitable | |
| for SPPP. More specifically, this section specifies the services, | | for SPPP. More specifically, this section specifies the services, | |
| features, and assumptions that SPPP delegates to the chosen transport | | features, and assumptions that SPPP delegates to the chosen transport | |
| and envelope technologies. | | and envelope technologies. | |
| | | | |
| Two different groups of use cases are specified in | | Two different groups of use cases are specified in | |
| [I-D.ietf-drinks-usecases-requirements]. One group of use cases | | [I-D.ietf-drinks-usecases-requirements]. One group of use cases | |
| | | | |
| skipping to change at page 19, line 19 | | skipping to change at page 15, line 19 | |
| transactions over such point-to-point connection. A transport | | transactions over such point-to-point connection. A transport | |
| protocol for SPPP MUST therefore be connection oriented. | | protocol for SPPP MUST therefore be connection oriented. | |
| | | | |
| Note that the role of the "Client" and the "Server" only applies to | | Note that the role of the "Client" and the "Server" only applies to | |
| the connection, and those roles are not related in any way to the | | the connection, and those roles are not related in any way to the | |
| type of entity that participates in a protocol exchange. For | | type of entity that participates in a protocol exchange. For | |
| example, a Registry might also include a "Client" when such a | | example, a Registry might also include a "Client" when such a | |
| Registry initiates a connection (for example, for data distribution | | Registry initiates a connection (for example, for data distribution | |
| to SSP). | | to SSP). | |
| | | | |
|
| 4.2. Request & Response Model | | 4.2. Request and Response Model | |
| | | | |
| Provisioning operations in SPPP follow the request - response model, | | Provisioning operations in SPPP follow the request - response model, | |
| where a transaction is initiated by a Client using a Request command, | | where a transaction is initiated by a Client using a Request command, | |
| and the Server responds to the Client by means of a Response. | | and the Server responds to the Client by means of a Response. | |
| | | | |
| Multiple subsequent request-response exchanges MAY be performed over | | Multiple subsequent request-response exchanges MAY be performed over | |
| a single connection. | | a single connection. | |
| | | | |
| Therefore, a transport protocol for SPPP MUST follow the request- | | Therefore, a transport protocol for SPPP MUST follow the request- | |
| response model by allowing a response to be sent to the request | | response model by allowing a response to be sent to the request | |
| | | | |
| skipping to change at page 20, line 12 | | skipping to change at page 16, line 12 | |
| Client by the Server is expected to be used to identify and further | | Client by the Server is expected to be used to identify and further | |
| authorize the Client to certain resources on the Server. | | authorize the Client to certain resources on the Server. | |
| | | | |
| Therefore, an SPPP transport protocol MUST provide means for a Server | | Therefore, an SPPP transport protocol MUST provide means for a Server | |
| to authenticate and authorize a Client, and MAY provide means for | | to authenticate and authorize a Client, and MAY provide means for | |
| Clients to authenticate a Server. | | Clients to authenticate a Server. | |
| | | | |
| However, SPPP transport SHOULD also allow for unauthenticated | | However, SPPP transport SHOULD also allow for unauthenticated | |
| connections. | | connections. | |
| | | | |
|
| 4.5. Confidentiality & Integrity | | 4.5. Confidentiality and Integrity | |
| | | | |
| Data that is transported over the protocol is deemed confidential. | | Data that is transported over the protocol is deemed confidential. | |
| Therefore, a transport protocol suitable for SPPP MUST ensure | | Therefore, a transport protocol suitable for SPPP MUST ensure | |
| confidentiality and integrity protection by providing encryption | | confidentiality and integrity protection by providing encryption | |
| capabilities. | | capabilities. | |
| | | | |
| Additionally, a DRINKS protocol MUST NOT use an unreliable lower- | | Additionally, a DRINKS protocol MUST NOT use an unreliable lower- | |
| layer transport protocol that does not provide confidentiality and | | layer transport protocol that does not provide confidentiality and | |
| integrity protection. | | integrity protection. | |
| | | | |
| 4.6. Near Real Time | | 4.6. Near Real Time | |
| | | | |
| Many use cases require near real-time responses from the Server. | | Many use cases require near real-time responses from the Server. | |
| Therefore, a DRINKS transport protocol MUST support near-real-time | | Therefore, a DRINKS transport protocol MUST support near-real-time | |
| response to requests submitted by the Client. | | response to requests submitted by the Client. | |
| | | | |
|
| 4.7. Request & Response Sizes | | 4.7. Request and Response Sizes | |
| | | | |
| SPPP covers a range of use cases - from cases where provisioning a | | SPPP covers a range of use cases - from cases where provisioning a | |
| single public identifier will create very small request and response | | single public identifier will create very small request and response | |
| sizes to cases where millions of data records are submitted or | | sizes to cases where millions of data records are submitted or | |
| retrieved in one transaction. Therefore, a transport protocol | | retrieved in one transaction. Therefore, a transport protocol | |
| suitable for SPPP MUST support a great variety of request and | | suitable for SPPP MUST support a great variety of request and | |
| response sizes. | | response sizes. | |
| | | | |
| A transport protocol MAY allow splitting large chunks of data into | | A transport protocol MAY allow splitting large chunks of data into | |
| several smaller chunks. | | several smaller chunks. | |
| | | | |
| skipping to change at page 22, line 5 | | skipping to change at page 18, line 5 | |
| succeeded or failed. | | succeeded or failed. | |
| | | | |
| 4.10. Mandatory Transport | | 4.10. Mandatory Transport | |
| | | | |
| As of this writing of this revision, one transport protocol proposal | | As of this writing of this revision, one transport protocol proposal | |
| has been provided in [I-D.ietf-drinks-sppp-over-soap]. | | has been provided in [I-D.ietf-drinks-sppp-over-soap]. | |
| | | | |
| This section will define a mandatory transport protocol to be | | This section will define a mandatory transport protocol to be | |
| compliant with this RFC. | | compliant with this RFC. | |
| | | | |
|
| 5. XML Considerations | | 5. Base Protocol Data Structures | |
| | | | |
|
| XML serves as the encoding format for SPPP, allowing complex | | SPPP uses a common model and a common set of data structures for most | |
| hierarchical data to be expressed in a text format that can be read, | | of the supported operations and object types. This section describes | |
| saved, and manipulated with both traditional text tools and tools | | these common data structures. | |
| specific to XML. | | | |
| | | | |
|
| XML is case sensitive. Unless stated otherwise, XML specifications | | 5.1. Request and Response Structures | |
| and examples provided in this document MUST be interpreted in the | | | |
| character case presented to develop a conforming implementation. | | | |
| | | | |
|
| This section discusses a small number of XML-related considerations | | An SPPP client interacts with an SPPP server by using one of the | |
| pertaining to SPPP. | | 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. Namespaces | | 5.1.1. Update Request and Response Structures | |
| | | | |
|
| All SPPP protocol elements are defined in the following namespace: | | An SPPP update request is wrapped within the <spppUpdateRequest> | |
| urn:ietf:params:xml:ns:sppp:base:1 | | element while an SPPP update response is wrapped within an | |
| | | <spppUpdateResponse> element. The following two sub-sections | |
| | | describe these two elements. | |
| | | | |
|
| Namespace and schema definitions are used to identify both the base | | 5.1.1.1. Update Request | |
| protocol schema and the schemas for managed objects. | | | |
| | | | |
|
| 5.2. Versioning | | An SPPP update request object is contained within the generic | |
| | | <spppUpdateRequest> element. | |
| | | | |
|
| All XML instances SHOULD begin with an <?xml?> declaration to | | <element name="spppUpdateRequest"> | |
| identify the version of XML that is being used, optionally identify | | <complexType> | |
| use of the character encoding used, and optionally provide a hint to | | <sequence> | |
| an XML parser that an external schema file is needed to validate the | | <element name="clientTransId" type="spppb:TransIdType" | |
| XML instance. | | minOccurs="0"/> | |
| | | <element name="minorVer" type="spppb:MinorVerType" | |
| | | minOccurs="0"/> | |
| | | <element name="rqst" type="spppb:BasicRqstType" | |
| | | maxOccurs="unbounded"/> | |
| | | </sequence> | |
| | | </complexType> | |
| | | </element> | |
| | | | |
|
| Conformant XML parsers recognize both UTF-8 (defined in [RFC3629]) | | <simpleType name="TransIdType"> | |
| and UTF-16 (defined in [RFC2781]); per [RFC2277] UTF-8 is the | | <restriction base="string"/> | |
| RECOMMENDED character encoding for use with SPPP. | | </simpleType> | |
| | | <simpleType name="MinorVerType"> | |
| | | <restriction base="unsignedLong"/> | |
| | | </simpleType> | |
| | | | |
|
| Character encodings other than UTF-8 and UTF-16 are allowed by XML. | | The data elements within the <spppUpdateRequest> element are | |
| UTF-8 is the default encoding assumed by XML in the absence of an | | described as follows: | |
| "encoding" attribute or a byte order mark (BOM); thus, the "encoding" | | | |
| 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, | | | |
| though emitting a UTF-8 BOM is NOT RECOMMENDED. | | | |
| | | | |
|
| Example XML declarations: | | 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. This | |
| | | value is also echoed back to the client in the SPPP update | |
| | | response. An SPPP server will not check this value for | |
| | | uniqueness. | |
| | | | |
|
| <?xml?> version="1.0" encoding="UTF-8" standalone="no"?> | | 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. | |
| | | | |
|
| 6. Request and Reply Model | | o rqst: One or more BasicRqstType 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 BasicRqstType object instances in | |
| | | the request at the first error and roll back any BasicRqstType | |
| | | object instances that had already been processed for that update | |
| | | request. In the "stop and commit" scenario the SPPP server | |
| | | would stop processing BasicRqstType object instances in the | |
| | | request at the first error but commit any BasicRqstType object | |
| | | instances that had already been processed for that update | |
| | | request. | |
| | | | |
|
| An SPPP client interacts with an SPPP server by using one of the | | All update request objects extend the base type BasicRqstType. This | |
| supported transport mechanisms to send one or more requests to the | | base type is defined as follows: | |
| server and receive corresponding replies from the server. An SPPP | | | |
| request is wrapped within the <spppRequest> element while an SPPP | | | |
| reply is wrapped within an <spppReply> element. Furthermore, fully | | | |
| formed SPPP requests and replies are comprised of constructs required | | | |
| by the chosen transport technology, and the chosen envelope | | | |
| technology. The supported transport technology and envelope | | | |
| technology specifications will be defined in separate documents, and | | | |
| are not discussed here. | | | |
| | | | |
|
| 6.1. Request | | <complexType name="BasicRqstType" abstract="true"> | |
| | | <sequence> | |
| | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </complexType> | |
| | | | |
|
| An SPPP request object, common to any transport and envelope | | The BasicRqstType object primarily acts as an abstract base type, and | |
| technology, is contained within the generic <spppRequest> element. | | its only data element is described as follows: | |
| | | | |
|
| <element name="spppRequest"> | | o ext: This is the standard extension element for this object. | |
| <complexType> | | Refer to the Extensibility section of this document for more | |
| <sequence> | | details. | |
| <any/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| </element> | | | |
| | | | |
|
| Within any <spppRequest> element is the request object specific to | | 5.1.1.2. Update Response | |
| the type of object(s) being operated on and the action(s) being | | | |
| performed on that object. For example, the addRteGroupRqst object, | | | |
| used to create Route Groups, that would be passed within an | | | |
| <spppRequest> is defined as follows: | | | |
| | | | |
|
| <element name="addRteGrpsRqst"> | | An SPPP update response object is contained within the generic | |
| <complexType> | | <spppUpdateResponse> element. | |
| <sequence> | | | |
| <element name="basicRqst" | | | |
| type="spppb:BasicRqstType"/> | | | |
| <element name="rteGrp" | | | |
| type="spppb:RteGrpType" | | | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| </element> | | | |
| | | | |
|
| All update requests contain a BasicRqstType object. This object is | | <element name="spppUpdateResponse"> | |
| defined as follows: | | <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="BasicRqstType"> | | <complexType name="ResultCodeType"> | |
| <sequence> | | <sequence> | |
| <element name="clientTransId " | | <element name="code" type="int"/> | |
| type="spppb:TransIdType"/> | | <element name="msg" type="string"/> | |
| <element name="minorVer" | | </sequence> | |
| type="spppb:MinorVerType"/> | | </complexType> | |
| <element name="ext" | | | |
| type="spppb:ExtAnyType" | | | |
| minOccurs="0"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| | | | |
|
| <simpleType name="TransIdType"> | | <complexType name="RqstObjResultCodeType"> | |
| <restriction base="string"/> | | <complexContent> | |
| </simpleType> | | <extension base="spppb:ResultCodeType"> | |
| | | <sequence> | |
| | | <element name="rqstObj" type="spppb:BasicRqstType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | | |
|
| <simpleType name="MinorVerType"> | | </complexContent> | |
| <restriction base="unsignedLong"/> | | </complexType> | |
| </simpleType> | | | |
| | | | |
|
| The data elements within the BasicRqstType object are primarily | | An <spppUpdateResponse> contains the elements necessary for the SPPP | |
| "house keeping" data elements. They are described as follows: | | client to precisely determine the overal result of the request, and | |
| | | if an error occurred, it provides information about the specific | |
| | | object, data element, or condition caused the error. | |
| | | | |
|
| o clientTransId: The client generated transaction ID that | | The data elements within the SPPP update response are described as | |
| identifies this request for tracking purposes. This value is | | follows: | |
| also echoed back to the client in the response. This value will | | | |
| not be checked for uniqueness. | | | |
| | | | |
|
| o minorVer: This identifies the minor version of the SPPP API that | | o clientTransId: Zero or one client transaction ID. This value is | |
| the client is attempting to use. This is used in conjunction | | simply an echo of the client transaction ID that SPPP client | |
| with the major version identifier in the XML namespace. Refer | | passed into the SPPP update request. | |
| to the Versioning section of this document for more detail. | | | |
| | | o serverTransId: Exactly one server transaction ID that identifies | |
| | | this request for tracking purposes. This value is guaranteed to | |
| | | 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 condition occurs, and indicates exactly | |
| | | which error condition occurred and exactly which request object | |
| | | that was passed in caused the error condition. The contained | |
| | | BasicRqstObject is simply an echo of the request object instance | |
| | | that caused the error, while the response code and message | |
| | | indicate the error condition for this object. See the Response | |
| | | Code section for further details. | |
| | | | |
| o ext: This is the standard extension element for this object. | | o ext: This is the standard extension element for this object. | |
|
| Refer to the Extensibility section of this document for more | | Refer to the Extensibility section for more details. | |
| details. | | | |
| | | | |
|
| 6.2. Reply | | 5.1.2. Query Request and Response Structures | |
| | | | |
|
| An SPPP reply object, common to any transport and envelope | | An SPPP query request is wrapped within the <spppQueryRequest> | |
| technology, is contained within the generic <spppReply> element. | | element while an SPPP query response is wrapped within an | |
| | | <spppQueryResponse> element. The following two sub-sections describe | |
| | | these two element structures. | |
| | | | |
|
| <element name="spppReply"> | | 5.1.2.1. Query Request | |
| <complexType> | | | |
| <sequence> | | | |
| <any/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| </element> | | | |
| | | | |
|
| Within any <spppReply> element is the reply object containing the | | An SPPP query request object is contained within the generic | |
| result of the request. All create, update, and delete operations | | <spppQueryRequest> element. | |
| result in a common response object structure, defined as follows: | | | |
| | | | |
|
| <element name="cmnRspns"> | | <element name="spppQueryRequest"> | |
| <complexType> | | <complexType> | |
| <sequence> | | <sequence> | |
| <element name="rspns" type="spppb:BasicRspnsType"/> | | <element name="minorVer" type="spppb:MinorVerType" | |
| </sequence> | | minOccurs="0"/> | |
| </complexType> | | <element name="rqst" type="spppb:BasicQueryRqstType"/> | |
| </element> | | </sequence> | |
| | | </complexType> | |
| | | </element> | |
| | | | |
|
| <complexType name="BasicRspnsType"> | | The data elements within the <spppQueryRequest> element are described | |
| <sequence> | | as follows: | |
| <element name="clientTransId" | | | |
| type="TransIdType"/> | | | |
| <element name="serverTransId" | | | |
| type="TransIdType"/> | | | |
| <element name="resCode" | | | |
| type="int"/> | | | |
| <element name="resMsg" | | | |
| type="string"/> | | | |
| <element name="ext" | | | |
| type="spppb:ExtAnyType" | | | |
| minOccurs="0"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| | | | |
|
| The data elements within the BasicRspnseType object are described as | | o minorVer: Zero or one minor version identifier, indicating the | |
| follows: | | 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 clientTransId: The echoed back client transaction ID that | | o rqst: One BasicQueryRqstType objects. This is the query that | |
| explicitly identifies this request for tracking purposes. This | | the client is requesting the SPPP server perform. | |
| value is not guaranteed to be unique. | | | |
| | | | |
|
| o serverTransId: The server transaction ID that identifies this | | All query request objects extend the base type BasicQueryRqstType. | |
| request for tracking purposes. This value is guaranteed to be | | This base type is defined as follows: | |
| unique. | | | |
| | | | |
|
| o resCode: The response code that explicitly identifies the result | | <complexType name="BasicQueryRqstType" abstract="true"> | |
| of the request. See the Response Code section for further | | <sequence> | |
| details. | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </complexType> | |
| | | | |
|
| o resMsg: The human readable response message that accompanies the | | The BasicQueryRqstType object primarily acts as an abstract base | |
| response code. See the Response Code section for further | | type, and its only data element is described as follows: | |
| details. | | | |
| | | | |
| o ext: This is the standard extension element for this object. | | o ext: This is the standard extension element for this object. | |
|
| Refer to the Extensibility section for more details. | | Refer to the Extensibility section of this document for more | |
| | | details. | |
| | | | |
|
| 7. Response Codes and Messages | | 5.1.2.2. Query Response | |
| | | | |
|
| This section contains an initial listing of response codes and their | | An SPPP query response object is contained within the generic | |
| corresponding human readable text. | | <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 overal 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 | | The response code numbering scheme generally adheres to the theory | |
| formalized in section 4.2.1 of [RFC2821]: | | formalized in section 4.2.1 of [RFC2821]: | |
| | | | |
| o The first digit of the response code can only be 1 or 2: 1 = a | | o The first digit of the response code can only be 1 or 2: 1 = a | |
| positive result, 2 = a negative result. | | positive result, 2 = a negative result. | |
| | | | |
| o The second digit of the response code indicates the category: 0 | | o The second digit of the response code indicates the category: 0 | |
| = Protocol Syntax, 1 = Implementation Specific Business Rule, 2 | | = Protocol Syntax, 1 = Implementation Specific Business Rule, 2 | |
| = Security, 3 = Server System. | | = Security, 3 = Server System. | |
| | | | |
| o The third and fourth digits of the response code indicate the | | o The third and fourth digits of the response code indicate the | |
| individual message event within the category defines by the | | individual message event within the category defines by the | |
| first two digits. | | first two digits. | |
| | | | |
|
| +--------+----------------------------------------------------------+ | | The response codes are also categorized as to whether they are | |
| | Result | Text | | | overall response codes that may only be returned in the | |
| | Code | | | | "overallResult" data element in SPPP responses, of object level | |
| +--------+----------------------------------------------------------+ | | response codes that may only be returned in the "rqstObjResult" | |
| | 1000 | Request Succeeded. | | | element of the SPPP responses. | |
| | | | | | | |
| | 2001 | Request syntax invalid. | | | +--------+--------------------------+-------------------------------+ | |
| | | | | | | Result | Text | Overall or Object Level | | |
| | 2002 | Request too large. | | | | Code | | | | |
| | | | | | +--------+--------------------------+-------------------------------+ | |
| | 2003 | Version not supported. | | | | 1000 | Request Succeeded. | Overall Response Code | | |
| | | | | | | | | | | |
| | 2103 | Command invalid. | | | | 2001 | Request syntax invalid. | Overall Response Code | | |
| | | | | | | | | | | |
| | 2104 | Attribute value invalid: [ObjecTypeName]:[Object's | | | | 2002 | Request too large. | Overall Response Code | | |
| | | rantId]:[Object's name]:{[Embedded | | | | | | | | |
| | | ObjecTypeName]}:[attribute name]:[attribute value]. | | | | 2003 | Version not supported. | Overall Response Code | | |
| | | | | | | | | | | |
| | 2105 | Object does not exist: [ObjecTypeName]:[Object's | | | | 2103 | Command invalid. | Overall Response Code | | |
| | | rantId]:[Object's name]. | | | | | | | | |
| | | | | | | 2301 | System temporarily | Overall Response Code | | |
| | 2106 | Object status or ownership does not allow for operation: | | | | | unavailable. | | | |
| | | [OperationName]:[ObjecTypeName]:[Object's | | | | | | | | |
| | | rantId]:[Object's name]. | | | | 2302 | Unexpected internal | Overall Response Code | | |
| | | | | | | | system or server error. | | | |
| | 2301 | System temporarily unavailable. | | | | | | | | |
| | | | | | | 2104 | Attribute value invalid. | Object Level Response Code | | |
| | 2302 | Unexpected internal system or server error. | | | | | | | | |
| +--------+----------------------------------------------------------+ | | | | 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 | | Table 1: Response Codes Numbering Scheme and Messages | |
| | | | |
|
| Some response messages are "parameterized" with one or more of the | | Each of the object level response messages are "parameterized" with | |
| following parameters: "attribute name", "attribute value", | | the following parameters: "AttributeName" and "AttributeValue". | |
| "objectType-objectId", and "operation name". | | | |
| | | | |
| The use of these parameters MUST adhere to the following rules: | | The use of these parameters MUST adhere to the following rules: | |
| | | | |
| o All parameters within a response message are mandatory and MUST | | o All parameters within a response message are mandatory and MUST | |
|
| be present. Parameters within a response message MUST NOT be | | be present. | |
| left empty. | | | |
| | | | |
|
| o Any value provided for the "attribute name" parameter MUST be an | | o Any value provided for the "AttributeName" parameter MUST be an | |
| exact element name of the protocol data element that the | | exact XSD element name of the protocol data element that the | |
| response message is referring to. For example, valid values for | | response message is referring to. For example, valid values for | |
|
| "attribute name" are "destGrpName", "rteGrpName", etc. | | "attribute name" are "dgName", "rteGrpName", "rteRec", etc. | |
| | | | |
| o A value provided for the "command/request type" parameter MUST | | | |
| be an exact request object name that the response message is | | | |
| referring to. For example, a valid value for "request object | | | |
| name" is "delRteGrpsRqst". | | | |
| | | | |
|
| o The value for "attribute value" MUST be the value of the data | | o The value for "AttributeValue" MUST be the value of the data | |
| element to which the preceding "attribute name" refers. | | element to which the preceding "AttributeName" refers. | |
| | | | |
| o Result code 2104 SHOULD be used whenever an element value does | | o Result code 2104 SHOULD be used whenever an element value does | |
| not adhere to data validation rules. | | not adhere to data validation rules. | |
| | | | |
| o Result codes 2104 and 2105 MUST NOT be used interchangeably. | | o Result codes 2104 and 2105 MUST NOT be used interchangeably. | |
|
| Response code 2105 SHOULD be returned when the data element(s) | | Response code 2105 SHOULD be returned by an update operation | |
| used to uniquely identify a pre-existing object do not exist. | | when the data element(s) used to uniquely identify a pre- | |
| If the data elements used to uniquely identify an object are | | existing object do not exist. If the data elements used to | |
| malformed, then response code 2104 SHOULD be returned. | | uniquely identify an object are malformed, then response code | |
| | | 2104 SHOULD be returned. | |
| | | | |
|
| 8. Protocol Commands | | 5.3. Basic Object Type and Organization Identifiers | |
| | | | |
|
| This section provides a preliminary list of SPPP protocol commands. | | This section introduces the basic object type that most first class | |
| At this early stage of the protocol development, the commands are | | objects derive from. | |
| only listed with a brief description. | | | |
| | | | |
|
| 8.1. Add Route Group Operation | | All first class objects extend the basic object type BasicObjType | |
| | | which contains the identifier of the registrant organization that | |
| | | owns this object, the identifier of the registrar organization that | |
| | | provisioned 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"> | |
| | | <sequence> | |
| | | <element name="rantId" type="spppb:OrgIdType"/> | |
| | | <element name="rarId" type="spppb:OrgIdType"/> | |
| | | <element name="crtDate" type="dateTime" minOccurs="0"/> | |
| | | <element name="modDate" type="dateTime" minOccurs="0"/> | |
| | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </complexType> | |
| | | | |
| | | The identifiers used for registrants (rantId), registrars (rarId) and | |
| | | peering organizations (peeringOrg) are instances of OrgIdType. The | |
| | | OrgIdType is defined as a string and all OrgIdType instances SHOULD | |
| | | follow the textual convention: "namespace:value" (for example "iana- | |
| | | en:32473"). See the IANA Consideration section for more details. | |
| | | | |
| | | 6. Protocol Commands | |
| | | | |
| | | This section provides a description of each supported protocol | |
| | | command. | |
| | | | |
| | | 6.1. 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 identities to route information | | It is this indirect linking of public identifiers to their route | |
| that significantly improves the scalability and manageability of the | | information that significantly improves the scalability and | |
| peering data. Additions and changes to routing information are | | manageability of the peering data. Additions and changes to routing | |
| reduced to a single operation on a Route Group, rather than millions | | information are reduced to a single operation on a Route Group or | |
| of data updates to individual public identity records that | | Route Record , rather than millions of data updates to individual | |
| individually contain their peering point data. | | public identifier records that individually contain their peering | |
| | | data. | |
| | | | |
|
| The addRteGrpsRqst operation creates or overwrites one or more Route | | The AddRteGrpRqstType operation creates or overwrites a Route Group | |
| Group objects. If a Route Group with the given name and registrant | | object. If a Route Group with the given name and registrant ID | |
| ID does not exist, then the server MUST create the Route Group. If a | | (which together comprise the unique key or a Route Group) does not | |
| Route Group with the given name and registrant does exist, then the | | exist, then the server MUST create the Route Group. If a Route Group | |
| server MUST replace the current properties of the Route Group with | | with the given name and registrant ID does exist, then the server | |
| the properties passed into the addRteGrpsRqst operation. The XSD | | MUST replace the current properties of the Route Group with the | |
| declarations of the operation request object are as follows: | | properties passed into the AddRteGrpRqstType operation. The XSD | |
| | | declarations of the AddRteGrpRqstType operation request object are as | |
| | | follows: | |
| | | | |
|
| <element name="addRteGrpsRqst" type="spppb:AddRteGrpsRqstType"/> | | <complexType name="AddRteGrpRqstType"> | |
| <complexType name="AddRteGrpsRqstType"> | | <complexContent> | |
| <complexContent> | | <extension base="spppb:BasicRqstType"> | |
| <extension base="spppb:BasicRqstType"> | | <sequence> | |
| <sequence> | | <element name="rteGrp" type="spppb:RteGrpType"/> | |
| <element name="rteGrp" type="spppb:RteGrpType" | | </sequence> | |
| maxOccurs="unbounded"/> | | </extension> | |
| </sequence> | | </complexContent> | |
| </extension> | | </complexType> | |
| </complexContent> | | | |
| </complexType> | | | |
| | | | |
|
| The element passed into the spppRequest element for this operation is | | The element passed into the spppUpdateRequest element for this | |
| the addRteGrpsRqst element. This element is of type | | operation is an instance of AddRteGrpRqstType, which extends | |
| AddRteGrpsRqstType, which extends BasicRqstType and contains one or | | BasicRqstType and contains one RteGrpType object. The RteGrpType | |
| more RteGrpType objects. Any limitation on the maximum number of | | object structure is defined as follows: | |
| RteGrpType objects that may be passed into this operation is a policy | | | |
| decision and is not limited by the protocol. The RteGrpType object | | | |
| structure is defined as follows: | | | |
| | | | |
|
| <complexType name="RteGrpType"> | | <complexType name="RteGrpType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicObjType"> | |
| <sequence> | | <sequence> | |
|
| <element name="base" type="spppb:BasicObjType"/> | | | |
| <element name="rteGrpName" type="spppb:ObjNameType"/> | | <element name="rteGrpName" type="spppb:ObjNameType"/> | |
|
| <element name="rteRec" type="spppb:RteRecType" | | <element name="rteRecRef" type="spppb:RteRecRefType" | |
| minOccurs="0" maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| <element name="dgName" type="spppb:ObjNameType" | | <element name="dgName" type="spppb:ObjNameType" minOccurs="0" | |
| minOccurs="0" maxOccurs="unbounded"/> | | 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" type="spppb:SourceIdentType" | |
|
| minOccurs="0" maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| <element name="isInSvc" type="boolean"/> | | <element name="isInSvc" type="boolean"/> | |
|
| <element name="ext" type="spppb:ExtAnyType" | | <element name="priority" type="unsignedShort"/> | |
| s="0"/> | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| </sequence> | | </sequence> | |
|
| </complexType> | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
| | | <complexType name="RteRecRefType"> | |
| | | <sequence> | |
| | | <element name="rteRec" type="spppb:ObjKeyType"/> | |
| | | <element name="priority" type="unsignedShort"/> | |
| | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </complexType> | |
| | | | |
| The RteGrpType object is composed of the following elements: | | The RteGrpType object is composed of the following elements: | |
| | | | |
|
| o base: As described in previous sections, most objects contain | | o base: All first class objects extend BasicObjType which contains | |
| exactly one instance of BasicObjType which contains the ID of | | the ID of the registrant organization that owns this object, the | |
| the registrant organization that owns this object and the ID of | | ID of the registrar organization that provisioned this object, | |
| the registrar organization that provisioned 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. If the | |
| | | client passes in either the created date or the modification | |
| | | date, the server will ignore them. The server sets these two | |
| | | date/time values. | |
| | | | |
| o rteGrpName: The character string that contains the name of the | | o rteGrpName: The character string that contains the name of the | |
| Route Group. It uniquely identifies this object within the | | Route Group. It uniquely identifies this object within the | |
| context of the registrant ID (a child element of the base | | context of the registrant ID (a child element of the base | |
| element as described above). | | element as described above). | |
| | | | |
|
| o rteRec: Set of zero or more objects of type RteRecType that | | o rteRecRef: Set of zero or more objects of type RteRecRefType | |
| house the routing information, sometimes referred to as SED, | | that house the unique keys of the Route Records that the the | |
| that the RteGrpType object contains. | | RteGrpType object refers to and their relative priority within | |
| | | the context of a given route group. The associated Route | |
| | | Records contain the routing information, sometimes called SED, | |
| | | associated with this Roue Group. | |
| | | | |
| o dgName: Set of zero or more names of DestGrpType object | | o dgName: Set of zero or more names of DestGrpType object | |
| instances. Each dgName name, in association with this Route | | instances. Each dgName name, in association with this Route | |
| Group's registrant ID, uniquely identifies a DestGrpType object | | Group's registrant ID, uniquely identifies a DestGrpType object | |
|
| instance whose public identities are reachable using the routing | | instance whose public identifiers are reachable using the | |
| information housed in this Route Group. | | routing information housed in this Route Group. An intended | |
| | | side affect of this is that a Route Group cannot provide routing | |
| | | information for a Destination Group belonging to another | |
| | | registrant. | |
| | | | |
| o peeringOrg: Set of zero or more peering organization IDs that | | o peeringOrg: Set of zero or more peering organization IDs that | |
| have accepted an offer to receive this Route Group's | | have accepted an offer to receive this Route Group's | |
| information. The set of peering organizations in this list is | | information. The set of peering organizations in this list is | |
| not directly settable or modifiable using the addRteGrpsRqst | | not directly settable or modifiable using the addRteGrpsRqst | |
| operation. This set is instead controlled using the route offer | | operation. This set is instead controlled using the route offer | |
| and accept operations. | | and accept operations. | |
| | | | |
| o sourceIdent: Set of zero or more SourceIdentType object | | o sourceIdent: Set of zero or more SourceIdentType object | |
| instances. These objects, described further below, house the | | instances. These objects, described further below, house the | |
| source identification schemes and identifiers that are applied | | source identification schemes and identifiers that are applied | |
| at resolution time as part of source based routing algorithms | | at resolution time as part of source based routing algorithms | |
| for the Route Group. | | for the Route Group. | |
| | | | |
| o isInSvc: A boolean element that defines whether this Route Group | | o isInSvc: A boolean element that defines whether this Route Group | |
| is in service. The routing information contained in a Route | | is in service. The routing information contained in a Route | |
| Group that is in service is a candidate for inclusion in | | Group that is in service is a candidate for inclusion in | |
| resolution responses for public identities residing in the | | resolution responses for public identities residing in the | |
| Destination Group associated with this Route Group. The routing | | Destination Group associated with this Route Group. The routing | |
| information contained in a Route Group that is not in service is | | information contained in a Route Group that is not in service is | |
|
| not a candidate for inclusion is resolution responses. | | not a candidate for inclusion in resolution responses. | |
| | | | |
| o ext: Point of extensibility described in a previous section of | | | |
| this document. | | | |
| | | | |
| As described above, the Route Group contains a set of route record | | | |
| objects. A route record object is based on an abstract type: | | | |
| RteRecType. The concrete types that use RteRecType as an extension | | | |
| base are NAPTRType, NSType, and URIType. The definitions of these | | | |
| types are included below. The NAPTRType object is comprised of the | | | |
| data elements necessary for a NAPTR that contains routing information | | | |
| the Route Group. The NSType object is comprised of the data elements | | | |
| necessary for a Name Server that points to another DNS server that | | | |
| contains the desired routing information. The URIType object is | | | |
| comprised of the data elements necessary to house a URI. | | | |
| | | | |
| The data provisioned in a Registry can be leveraged for many purposes | | | |
| and queried using various protocols including SIP, ENUM and others. | | | |
| It is for this reason that a route record type offers a choice of | | | |
| URI, and DNS resource record types. The URIType is commonly used to | | | |
| provision data related to the SIP route in registries. The use of | | | |
| DNS resource record types is also relevant to the scenario where the | | | |
| data provisioned in the registry is used to answer ENUM queries but | | | |
| the provisioning protocol should be agnostic to a particular | | | |
| resolution protocol. | | | |
| | | | |
| <complexType name="RteRecType" abstract="true"> | | | |
| <sequence> | | | |
| <element name="priority" type="positiveInteger" | | | |
| default="100"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| | | | |
| <complexType name="NAPTRType"> | | | |
| <complexContent> | | | |
| <extension base="spppb:RteRecType"> | | | |
| <sequence> | | | |
| <element name="order" type="unsignedShort"/> | | | |
| <element name="pref" 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="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="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> | | | |
| | | | |
| The NAPTRType object is composed of the following elements: | | | |
| | | | |
| o order: Order value in an ENUM NAPTR, relative to other NAPTRType | | | |
| objects in the same Route Group. | | | |
| | | | |
| o pref: Preference value in an ENUM NAPTR. | | | |
| | | | |
| o svcs: ENUM service(s) that are served by the SBE. This field's | | | |
| value must be of the form specified in RFC 3761 (e.g., E2U+ | | | |
| pstn:sip+sip). The allowable values are a matter of policy and | | | |
| not limited by this protocol. | | | |
| | | | |
| o regx: NAPTR's regular expression field. If this is not included | | | |
| then the Repl field must be included. | | | |
| | | | |
| o repl: NAPTR replacement field, should only be provided if the | | | |
| Regex field is not provided, otherwise it will be ignored by the | | | |
| server. | | | |
| | | | |
| o ttl: Number of seconds that an addressing server may cache this | | | |
| NAPTR. | | | |
| | | | |
| o ext: Point of extensibility described in a previous section of | | | |
| this document. | | | |
| | | | |
| The NSType object is composed of the following elements: | | | |
| | | | |
| o hostName: Fully qualified host name of the name server. | | | |
| | | | |
| o ipAddr: Zero or more objects of type IpAddrType. Each object | | | |
| holds an IP Address and the IP Address type, IPv4 or IP v6. | | | |
| | | | |
|
| o ttl: Number of seconds that an addressing server may cache this | | o priority: Zero or one priority value that can be used to provide | |
| Name Server. | | a relative value weighting of one Route Group over another. The | |
| | | manner in which this value is used, perhaps in conjunction with | |
| | | other factors, is a matter of policy. | |
| | | | |
| 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 URIType object is composed of the following elements: | | As described above, the Route Group contains a set of references to | |
| | | route record objects. A route record object is based on an abstract | |
| o ere: The POSIX Extended Regular Expression (ere) as defined in | | type: RteRecType. The concrete types that use RteRecType as an | |
| [RFC3986] | | extension base are NAPTRType, NSType, and URIType. The definitions | |
| | | of these types are included the Route Record section of this | |
| o uri: the URI as defined in [RFC3986] | | document. | |
| | | | |
| The RteGrpType object provides support for source-based routing via | | The RteGrpType object provides support for source-based routing via | |
|
| the source identity element. The source-based routing criteria | | the peeringOrg data element and more granular source base routing via | |
| provides the ability to specify zero or more of the following in | | the source identity element. The source identity element provides | |
| association with a given Route Group: a regular expression that is | | the ability to specify zero or more of the following in association | |
| matched against the resolution client IP address, a regular | | with a given Route Group: a regular expression that is matched | |
| expression that is matched against the root domain name(s), and/or a | | against the resolution client IP address, a regular expression that | |
| regular expression that is matched against the calling party URI(s). | | is matched against the root domain name(s), and/or a regular | |
| The result will be that, after identifying the visible Route Groups | | expression that is matched against the calling party URI(s). The | |
| whose associated Destination Group(s) contain the lookup key being | | result will be that, after identifying the visible Route Groups whose | |
| queried, the resolution server will evaluate the characteristics of | | associated Destination Group(s) contain the lookup key being queried | |
| the Source URI, and Source IP address, and root domain of the lookup | | and whose peeringOrg list contains the querying organizations | |
| key being queried. The resolution server compares these criteria | | organization ID, the resolution server will evaluate the | |
| against source based routing criteria associated with the Route | | characteristics of the Source URI, and Source IP address, and root | |
| Groups. The routing information contained in Route Groups that have | | domain of the lookup key being queried. The resolution server then | |
| source based routing criteria will only be included in the resolution | | compares these criteria against the source identity criteria | |
| response if one or more of the criteria matches the source criteria | | associated with the Route Groups. The routing information contained | |
| from the resolution request. | | in Route Groups that have source based routing criteria will only be | |
| | | included in the resolution response if one or more of the criteria | |
| | | matches the source criteria from the resolution request. The Source | |
| | | Identity data element is of type SourceIdentType, whose structure is | |
| | | defined as follows: | |
| | | | |
|
| <complexType name="SourceIdentType"> | | <complexType name="SourceIdentType"> | |
| <sequence> | | <sequence> | |
| <element name="sourceIdentRegex" type="string"/> | | <element name="sourceIdentLabel" type="string"/> | |
| <element name="sourceIdentScheme" | | <element name="sourceIdentScheme" | |
| type="spppb:SourceIdentSchemeType"/> | | type="spppb:SourceIdentSchemeType"/> | |
| <element name="ext" type="spppb:ExtAnyType" | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| minOccurs="0"/> | | </sequence> | |
| </sequence> | | </complexType> | |
| </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 | |
| that is dictated by the associated sourceIdentScheme. | | that is dictated by the associated sourceIdentScheme. | |
| | | | |
| 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 result of the addRteGrpsRqst operation is the addRteGrpsRspns | | As with the responses to all update operations, the result of the | |
| element defined below. As with all SPPP requests, the result is all- | | AddRteGrpRqstType operation is contained in the generic | |
| or-nothing. If more than one RteRecType is passed into this request, | | spppUpdateResponse data structure described in an earlier sections of | |
| then they will either all succeed or all fail. In the case of | | this document. For a detailed description of the spppUpdateResponse | |
| failure, the failure response code(s) and message(s) will indicate | | data structure refer to that section of the document. | |
| the reason for the failure and the object(s) that caused the failure. | | | |
| | | | |
| <element name="addRteGrpsRspns" type="spppb:BasicRspnsType"/> | | | |
| | | | |
| The response codes that the addRteGrpsRqst operation can return are | | | |
| as follows: | | | |
| | | | |
| o 1000: Request Succeeded. | | | |
| | | | |
| o 2001: Request syntax invalid. | | | |
| | | | |
| o 2002: Request too large. | | | |
| | | | |
| o 2003: Version not supported. | | | |
| | | | |
| o 2103: Command invalid. | | | |
| | | | |
| o 2104: Attribute value invalid. | | | |
| | | | |
| o 2105: Object does not exist. | | | |
| | | | |
| o 2106: Object status or ownership does not allow for request. | | | |
| | | | |
| o 2301: System temporarily unavailable. | | | |
| | | | |
| o 2302: Unexpected internal system or server error. | | | |
| | | | |
|
| 8.2. Get Route Groups Operation | | 6.2. Get Route Groups Operation | |
| | | | |
| The getRteGrpsRqst operation allows a client to get the properties of | | The getRteGrpsRqst operation allows a client to get the properties of | |
| Route Group objects that a registrar organization is authorized to | | Route Group objects that a registrar organization is authorized to | |
| view. The server will attempt to find a Route Group object that has | | view. The server will attempt to find a Route Group object that has | |
| the registrant ID and route group name pair contained in each | | the registrant ID and route group name pair contained in each | |
| ObjKeyType object instance. If the set of ObjKeyType objects is | | ObjKeyType object instance. If the set of ObjKeyType objects is | |
| empty then the server will return the list of Route Group objects | | empty then the server will return the list of Route Group objects | |
| that the querying client has the authority to view. If there are no | | that the querying client has the authority to view. If there are no | |
| matching Route Groups found then an empty result set will be | | matching Route Groups found then an empty result set will be | |
| returned. | | returned. | |
| | | | |
|
| The element passed into the spppRequest element for this operation is | | The element passed into the spppQueryRequest element for this | |
| the getRteGrpsRqst element. This element is of type | | operation is an instance of type GetRteGrpsRqstType, which extends | |
| GetRteGrpsRqstType, which extends BasicRqstType and contains zero or | | BasicRqstType and contains zero or more ObjKeyType objects. Any | |
| more ObjKeyType objects. Any limitation on the maximum number of | | limitation on the maximum number of objects that may be passed into | |
| objects that may be passed into or returned by this operation is a | | or returned by this operation is a policy decision and not limited by | |
| policy decision and not limited by the protocol. The XSD declaration | | the protocol. The XSD declaration of the operation is as follows: | |
| of the operation is as follows: | | | |
| | | | |
|
| <element name="getRteGrpsRqst" type="spppb:GetRteGrpsRqstType"/> | | <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="GetRteGrpsRqstType"> | | As described in an earlier section of this document, the result of | |
| <complexContent> | | any spppQueryRequest operation is an spppQueryResponse element that | |
| <extension base="spppb:BasicRqstType"> | | contains the overall response code and the query result set, if any. | |
| <sequence> | | Refer to that section of the document for a detailed description of | |
| <element name="objectKey" type="spppb:ObjKeyType" | | the spppQueryResponse element. | |
| minOccurs="0" maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| | | | |
|
| The result of the getRteGrpsRqst operation returned in the | | 6.3. Add Destination Group Operation | |
| spppResponse element is the getRteGrpsRspns element defined below. | | | |
| This object contains the resulting set of RteGrpType objects, or an | | | |
| empty set if there were no matches. | | | |
| | | | |
|
| <element name="getRteGrpsRspns" | | As described in the introductory sections, a Destination Group | |
| type="spppb:GetRteGrpsRspnsType"/> | | represents a set of Public Identifiers with common routing | |
| | | information. | |
| | | | |
|
| <complexType name="GetRteGrpsRspnsType"> | | The AddDestGrpRqstType operation creates or overwrites a Destination | |
| <complexContent> | | Group object. If a Destination Group with the given name and | |
| <extension base="spppb:BasicRspnsType"> | | registrant ID (which together comprise the unique key for a | |
| <sequence> | | Destination Group) does not exist, then the server MUST create the | |
| <element name="rteGrp" type="spppb:RteGrpType" | | Destination Group. If a Destination Group with the given name and | |
| minOccurs="0" maxOccurs="unbounded"/> | | registrant ID does exist, then the server MUST replace the current | |
| </sequence> | | properties of the Destination Group with the properties passed into | |
| </extension> | | the AddDestGrpsRqstType operation. The XSD declarations of the | |
| </complexContent> | | operation request object are as follows: | |
| </complexType> | | | |
| | | | |
|
| The response codes that the getRteGrpsRqst operation can return are | | <complexType name="AddDestGrpRqstType"> | |
| as follows: | | <complexContent> | |
| | | <extension base="spppb:BasicRqstType"> | |
| | | <sequence> | |
| | | <element name="destGrp" type="spppb:DestGrpType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| o 1000: Request Succeeded. | | The element passed into the spppUpdateRequest element for this | |
| | | operation is an element of type AddDestGrpRqsttype, which extends | |
| | | BasicRqstType and contains a DestGrpType object. The DestGrpType | |
| | | object structure is defined as follows: | |
| | | | |
|
| o 2001: Request syntax invalid. | | <complexType name="DestGrpType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicObjType"> | |
| | | <sequence> | |
| | | <element name="dgName" type="spppb:ObjNameType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| o 2002: Request too large. | | The DestGrpType object is composed of the following elements: | |
| | | | |
|
| o 2003: Version not supported. | | o base: All first class objects extend BasicObjType which contains | |
| | | the ID of the registrant organization that owns this object, the | |
| | | ID of the registrar organization that provisioned 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. If the | |
| | | client passed in either the created date or the modification | |
| | | date, the server will ignore them. The server sets these two | |
| | | date/time values. | |
| | | | |
|
| o 2103: Command invalid. | | o dgName: The character string that contains the name of the | |
| | | Destination Group. This uniquely identifies this object within | |
| | | the context of the registrant ID (a child element of the base | |
| | | element as described above). | |
| | | | |
|
| o 2104: Attribute value invalid. | | o ext: Point of extensibility described in a previous section of | |
| | | this document. | |
| | | | |
|
| o 2301: System temporarily unavailable. | | As with the responses to all update operations, the result of the | |
| | | 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. | |
| | | | |
|
| o 2302: Unexpected internal system or server error. | | 6.4. Get Destination Groups Operation | |
| | | | |
|
| 8.3. Add Route Group Offers Operation | | The getDestGrpsRqst operation allows a client to get the properties | |
| | | of Destination Group objects that a registrar organization is | |
| | | authorized to view. 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 the set of ObjKeyType objects passed in is empty then | |
| | | the server will return the list of Destination Group objects that the | |
| | | querying registrar has the authority to view. | |
| | | | |
| | | 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.5. 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 or peering organization. The registrant | | requests (a data recipient, also know as a peering organization). | |
| offers access to a Route Group by submitting a Route Group Offer and | | The registrant offers access to a Route Group by submitting a Route | |
| the data recipient can then accept or reject that offer. Not until | | Group Offer. The data recipient can then accept or reject that | |
| access to a Route Group has been offered and accepted will the data | | offer. Not until access to a Route Group has been offered and | |
| recipient's organization ID be included in the peeringOrg list in a | | accepted will the data recipient's organization ID be included in the | |
| Route Group object, and that Route Group's peering information become | | peeringOrg list in a Route Group object, and that Route Group's | |
| a candidate for inclusion in the responses to the resolution requests | | peering information become a candidate for inclusion in the responses | |
| submitted by that data recipient. The addRteGrpOffersRqst operation | | to the resolution requests submitted by that data recipient. The | |
| creates or overwrites one or more Route Group Offer objects. If a | | AddRteGrpOffersRqstType operation creates or overwrites one or more | |
| Route Group Offer for the given Route key (route name and registrant | | Route Group Offer objects. If a Route Group Offer for the given | |
| ID) and offeredToOrg ID does not exist, then the server creates the | | Route Group object key and the offeredToOrg ID does not exist, then | |
| Route Group Offer object. If a such a Route Group Offer does exist, | | the server creates the Route Group Offer object. If a such a Route | |
| then the server replaces the current object with the new object. The | | Group Offer does exist, then the server replaces the current object | |
| XSD declarations of the operation request object are as follows: | | with the new object. The XSD declarations of the operation request | |
| | | object are as follows: | |
| <element name="addRteGrpOffersRqst" | | | |
| type="spppb:AddRteGrpOffersRqstType"/> | | | |
| | | | |
|
| <complexType name="AddRteGrpOffersRqstType"> | | <complexType name="AddRteGrpOfferRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
| <element name="rteGrpOffer" type="spppb:RteGrpOfferType" | | <element name="rteGrpOffer" type="spppb:RteGrpOfferType"/> | |
| maxOccurs="unbounded"/> | | </sequence> | |
| </sequence> | | </extension> | |
| </extension> | | </complexContent> | |
| </complexContent> | | </complexType> | |
| </complexType> | | | |
| | | | |
|
| The element passed into the spppRequest element for this operation is | | The element passed into the spppUpdateRequest element for this | |
| the addRteGrpOffersRqst element. This element is of type | | operation is an instance of AddRteGrpOfferRqstType, which extends | |
| AddRteGrpOffersRqstType, which extends BasicRqstType and contains one | | BasicRqstType and contains a RteGrpOfferType object. The XSD | |
| or more RteGrpOfferType objects. Any limitation on the maximum | | declaration of the RteGrpOfferType is as follows: | |
| 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="RteGrpOfferType"> | | <complexType name="RteGrpOfferType"> | |
| <sequence> | | <complexContent> | |
| <element name="base" type="spppb:BasicObjType"/> | | <extension base="spppb:BasicObjType"> | |
| <element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType"/> | | <sequence> | |
| <element name="status" type="spppb:RteGrpOfferStatusType"/> | | <element name="rteGrpOfferKey" | |
| <element name="offerDateTime" type="dateTime"/> | | type="spppb:RteGrpOfferKeyType"/> | |
| <element name="acceptDateTime" type="dateTime" minOccurs="0"/> | | <element name="status" type="spppb:RteGrpOfferStatusType"/> | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | <element name="offerDateTime" type="dateTime"/> | |
| </sequence> | | <element name="acceptDateTime" type="dateTime" minOccurs="0"/> | |
| </complexType> | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| <complexType name="RteGrpOfferKeyType"> | | </sequence> | |
| <sequence> | | </extension> | |
| <element name="rteGrpKey" type="spppb:ObjKeyType"/> | | </complexContent> | |
| <element name="offeredTo" type="spppb:OrgIdType"/> | | </complexType> | |
| </sequence> | | | |
| </complexType> | | | |
| | | | |
|
| <simpleType name="RteGrpOfferStatusType"> | | <complexType name="RteGrpOfferKeyType"> | |
| <restriction base="token"> | | <sequence> | |
| <enumeration value="offered"/> | | <element name="rteGrpKey" type="spppb:ObjKeyType"/> | |
| <enumeration value="accepted"/> | | <element name="offeredTo" type="spppb:OrgIdType"/> | |
| </restriction> | | </sequence> | |
| </simpleType> | | </complexType> | |
| | | | |
|
| | | <simpleType name="RteGrpOfferStatusType"> | |
| | | <restriction base="token"> | |
| | | <enumeration value="offered"/> | |
| | | <enumeration value="accepted"/> | |
| | | </restriction> | |
| | | </simpleType> | |
| The RteGrpOfferType object is composed of the following elements: | | The RteGrpOfferType object is composed of the following elements: | |
| | | | |
|
| o base: As described in previous sections, most objects contain | | o base: All first class objects extend BasicObjType which contains | |
| exactly one instance of BasicObjType which contains the ID of | | the ID of the registrant organization that owns this object, the | |
| the registrant organization that owns this object and the ID of | | ID of the registrar organization that provisioned this object, | |
| the registrar organization that provisioned 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. If the | |
| | | client passed in either the created date or the modification | |
| | | date, the 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. The combination of these three data elements | |
| uniquely identify a Route Group Offer. | | uniquely identify a Route Group Offer. | |
| | | | |
| o status: The status of the offer, offered or accepted. This | | o status: The status of the offer, offered or accepted. This | |
| status is controlled by the server. It is automatically set to | | status is controlled by the server. 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 GMT when the Route Group Offer | | o offerDateTime: Date and time in GMT when the Route Group Offer | |
| was added. | | was added. | |
| | | | |
| o acceptDateTime: Date and time in GMT when the Route Group Offer | | o acceptDateTime: Date and time in GMT when the Route Group Offer | |
| was accepted. | | was accepted. | |
| | | | |
|
| The result of addRteGrpOffersRqst is the addRteGrpOffersRspns element | | As with the responses to all update operations, the result of the | |
| defined below. As with all SPPP requests, the result is all-or- | | AddRteGrpOfferRqstType operation is contained in the generic | |
| nothing. If more than one RteGrpOfferType is passed into this | | spppUpdateResponse data structure described in an earlier sections of | |
| request, then they will either all succeed or all fail. In the case | | this document. For a detailed description of the spppUpdateResponse | |
| of failure, the failure response code(s) and message(s) will indicate | | data structure refer to that section of the document. | |
| the reason for the failure and the object(s) that caused the failure. | | | |
| | | | |
| <element name="addRteGrpOffersRspns" type="spppb:BasicRspnsType"/> | | | |
| | | | |
| The response codes that the addRteGrpOffersRqst operation can return | | | |
| are as follows: | | | |
| | | | |
| o 1000: Request Succeeded. | | | |
| | | | |
| o 2001: Request syntax invalid. | | | |
| | | | |
| o 2002: Request too large. | | | |
| | | | |
| o 2003: Version not supported. | | | |
| | | | |
| o 2103: Command invalid. | | | |
| | | | |
| o 2104: Attribute value invalid. | | | |
| | | | |
| o 2105: Object does not exist. | | | |
| | | | |
| o 2106: Object status or ownership does not allow for request. | | | |
| | | | |
| o 2301: System temporarily unavailable. | | | |
| | | | |
| o 2302: Unexpected internal system or server error. | | | |
| | | | |
| 8.4. Accept Route Group Offers Operation | | | |
| | | | |
| Not until access to a Route Group has been offered and accepted will | | | |
| the data recipient's organization ID be included in the peeringOrg | | | |
| list in that Route Group object, and that Route Group's peering | | | |
| information become a candidate for inclusion in the responses to the | | | |
| resolution requests submitted by that data recipient.The | | | |
| acceptRteGrpOffersRqst operation is called by, or on behalf of, the | | | |
| data recipient to accept one or more Route Group Offers that are | | | |
| 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: | | | |
| | | | |
| <element name="acceptRteGrpOffersRqst" | | | |
| type="spppb:AcceptRteGrpOffersRqstType"/> | | | |
| | | | |
| <complexType name="AcceptRteGrpOffersRqstType"> | | | |
| <complexContent> | | | |
| <extension base="spppb:BasicRqstType"> | | | |
| <sequence> | | | |
| <element name="rteGrpOfferKey" | | | |
| type="spppb:RteGrpOfferKeyType" maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| | | | |
| The element passed into the spppRequest element for this operation is | | | |
| the acceptRteGrpOffersRqst element. This element is of type | | | |
| AcceptRteGrpOffersRqstType, which extends BasicRqstType and contains | | | |
| one or more RteGrpOfferKeyType 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 result of acceptRteGrpOffersRqst is the acceptRteGrpOffersRspns | | | |
| element defined below. As with all SPPP requests, the result is all- | | | |
| or-nothing. If more than one RteGrpOfferKeyType is passed into this | | | |
| request, then they will either all succeed or all fail. In the case | | | |
| of failure, the failure response code(s) and message(s) will indicate | | | |
| the reason for the failure and the object(s) that caused the failure. | | | |
| | | | |
| <element name="acceptRteGrpOffersRspns" | | | |
| type="spppb:BasicRspnsType"/> | | | |
| | | | |
| The response codes that the acceptRteGrpOffersRspns operation can | | | |
| return are as follows: | | | |
| | | | |
| o 1000: Request Succeeded. | | | |
| | | | |
| o 2001: Request syntax invalid. | | | |
| | | | |
| o 2002: Request too large. | | | |
| | | | |
| o 2003: Version not supported. | | | |
| | | | |
| o 2103: Command invalid. | | | |
| | | | |
| o 2104: Attribute value invalid. | | | |
| | | | |
| o 2105: Object does not exist. | | | |
| | | | |
| o 2106: Object status or ownership does not allow for request. | | | |
| | | | |
| o 2301: System temporarily unavailable. | | | |
| | | | |
| o 2302: Unexpected internal system or server error. | | | |
| | | | |
|
| 8.5. Reject Route Group Offers Operation | | 6.6. Accept Route Group Offer Operation | |
| | | | |
| Not until access to a Route Group has been offered and accepted will | | Not until access to a Route Group has been offered and accepted will | |
|
| the data recipient's organization ID be included in the peeringOrg | | the data recipient's organization ID will it be included in the | |
| list in that Route Group object, and that Route Group's peering | | peeringOrg list in that Route Group object, and that Route Group's | |
| information become a candidate for inclusion in the responses to the | | peering information become a candidate for inclusion in the responses | |
| resolution requests submitted by that data recipient. However, the | | to the resolution requests submitted by that data recipient. The | |
| data recipient that the Route Group has been offered to has the | | AcceptRteGrpOffersRqstType operation is called by, or on behalf of, | |
| option of rejecting a Route Group Offer that has been offered but not | | the data recipient to accept a Route Group Offer that is pending in | |
| accepted or that has been offered and accepted. The | | the "offered" status for the data recipient's organization ID. If a | |
| rejectRteGrpOffersRqst operation is used for these purposes and is | | | |
| called by, or on behalf of, the data recipient to accept one or more | | | |
| Route Group Offers that are pending in the "offered" status or 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 Group Offer for the given Route Group Offer key (route name, | |
|
| route registrant ID, data recipient's organization ID) exists in | | route registrant ID, data recipient's organization ID) exists, then | |
| either the offered or accepted status, then the server deletes that | | the server moves the Route Group Offer to the "accepted" status and | |
| Route Group Offer object , and, if appropriate, removes the data | | adds that data recipient's organization ID into the list of | |
| recipients organization ID from the list of peerOrgIds for that Route | | peerOrgIds for that Route Group. If a such a Route Group Offer does | |
| Group. If the Route Group Offer does not exist, then the server | | not exist, then the server returns the appropriate error code, 2105. | |
| returns the appropriate error code 2105. The XSD declarations for | | The XSD declarations for the operation request object are as follows: | |
| the operation request object are as follows: | | | |
| | | | |
| <element name="rejectRteGrpOffersRqst" | | | |
| type="spppb:RejectRteGrpOffersRqstType"/> | | | |
| | | | |
| <complexType name="RejectRteGrpOffersRqstType"> | | | |
| <complexContent> | | | |
| <extension base="spppb:BasicRqstType"> | | | |
| <sequence> | | | |
| <element name="rteGrpOfferKey" | | | |
| type="spppb:RteGrpOfferKeyType" maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| | | | |
| The element passed into the spppRequest element for this operation is | | | |
| the rejectRteGrpOffersRqst element. This element is of type | | | |
| RejectRteGrpOffersRqstType, which extends BasicRqstType and contains | | | |
| one or more RteGrpOfferKeyType 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 result of rejectRteGrpOffersRqst is the rejectRteGrpOffersRspns | | | |
| element defined below. As with all SPPP requests, the result is all- | | | |
| or-nothing. If more than one RteGrpOfferKeyType is passed into this | | | |
| request, then they will either all succeed or all fail. In the case | | | |
| of failure, the failure response code(s) and message(s) will indicate | | | |
| the reason for the failure and the object(s) that caused the failure. | | | |
| | | | |
| <element name="rejectRteGrpOffersRspns" | | | |
| type="spppb:BasicRspnsType"/> | | | |
| | | | |
| The response codes that the rejectRteGrpOffersRspns operation can | | | |
| return are as follows: | | | |
| | | | |
| o 1000: Request Succeeded. | | | |
| | | | |
| o 2001: Request syntax invalid. | | | |
| | | | |
|
| o 2002: Request too large. | | <complexType name="AcceptRteGrpOfferRqstType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicRqstType"> | |
| | | <sequence> | |
| | | <element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| o 2003: Version not supported. | | The element passed into the spppUpdateRequest element for this | |
| | | operation is an instance of AcceptRteGrpOffersRqstType, which extends | |
| | | BasicRqstType and contains a RteGrpOfferKeyType object. | |
| | | | |
|
| o 2103: Command invalid. | | 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. | |
| | | | |
|
| o 2104: Attribute value invalid. | | 6.7. Reject Route Group Offer Operation | |
| | | | |
|
| o 2105: Object does not exist. | | 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 | |
| | | recipients 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: | |
| | | | |
|
| o 2106: Object status or ownership does not allow for request. | | <complexType name="RejectRteGrpOfferRqstType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicRqstType"> | |
| | | <sequence> | |
| | | <element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| o 2301: System temporarily unavailable. | | The element passed into the spppUpdateRequest element for this | |
| | | operation is an instance of RejectRteGrpOffersRqstType, which extends | |
| | | BasicRqstType and contains a RteGrpOfferKeyType object. | |
| | | | |
|
| o 2302: Unexpected internal system or server error. | | 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. | |
| | | | |
|
| 8.6. Get Route Group Offers Operation | | 6.8. Get Route Group Offers Operation | |
| | | | |
| The getRteGrpOffersRqst operation allows a client to get the | | The getRteGrpOffersRqst operation allows a client to get the | |
|
| properties of zero or more Route Group Offer objects that that | | properties of zero or more Route Group Offer objects that registrar | |
| registrar is authorized to view. The server will attempt to find | | is authorized to view. The server will attempt to find Route Group | |
| Route Group Offer objects that has all the properties specified in | | Offer objects that have all the properties specified in the criteria | |
| the criteria passed into the operation. If no criteria is passed in | | passed into the operation. If no criteria is passed in then the | |
| then the server will return the list of Route Group Offer objects | | server will return the list of Route Group Offer objects that the | |
| that the querying client has the authority to view. If there are no | | querying client has the authority to view. If there are no matching | |
| matching Route Group Offers found then an empty result set will be | | Route Group Offers found then an empty result set will be returned. | |
| returned. | | | |
| | | | |
| The element passed into the spppRequest element for this operation is | | | |
| the getRteGrpOffersRqst element. This element is of type | | | |
| GetRteGrpOffersRqstType, which extends BasicRqstType and contains the | | | |
| criteria that the returnedRoute Group Offer objects must match. 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: | | | |
| | | | |
|
| <element name="getRteGrpOffersRqst" | | The element passed into the spppQueryRequest element for this | |
| type="spppb:GetRteGrpOffersRqstType"/> | | 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"> | | <complexType name="GetRteGrpOffersRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
| <element name="offeredByPeers" type="boolean" | | <element name="offeredByPeers" type="boolean" minOccurs="0"/> | |
| minOccurs="0"/> | | <element name="offeredToPeers" type="boolean" minOccurs="0"/> | |
| <element name="offeredToPeers" type="boolean" | | <element name="status" type="spppb:RteGrpOfferStatusType" | |
| minOccurs="0"/> | | minOccurs="0"/> | |
| <element name="status" type="spppb:RteGrpOfferStatusType" | | <element name="peeringOrg" type="spppb:OrgIdType" | |
| minOccurs="0"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| <element name="peeringOrg" type="spppb:OrgIdType" | | <element name="rteGrpOfferKey" | |
| minOccurs="0" maxOccurs="unbounded"/> | | type="spppb:RteGrpOfferKeyType" minOccurs="0" | |
| <element name="rteGrpOfferKey" | | maxOccurs="unbounded"/> | |
| type="spppb:RteGrpOfferKeyType" minOccurs="0" maxOccurs="unbounded"/> | | </sequence> | |
| </sequence> | | </extension> | |
| </extension> | | </complexContent> | |
| </complexContent> | | </complexType> | |
| </complexType> | | | |
| | | | |
| The GetRteGrpOffersRqstType object is composed of the following | | The GetRteGrpOffersRqstType object is composed of the following | |
| elements: | | elements: | |
| | | | |
| o offeredByPeers: Zero or one boolean value that, if true, | | o offeredByPeers: Zero or one boolean value that, if true, | |
| indicates that only offers that are offered by peering | | indicates that only offers that are offered by peering | |
| organizations to the querying registrant should be included in | | organizations to the querying registrant should be included in | |
| the result set. If this value is false, the offers by peering | | the result set. If this value is false, the offers by peering | |
| organizations to the querying registrant should not be included | | organizations to the querying registrant should not be included | |
| in the result set. The result set is also subject to other | | in the result set. The result set is also subject to other | |
| | | | |
| skipping to change at page 46, line 15 | | skipping to change at page 40, line 10 | |
| o peeringOrg: Zero or more organization IDs. Only offers that are | | o peeringOrg: Zero or more organization IDs. Only offers that are | |
| offered to or offered by the organization IDs in this list | | offered to or offered by the organization IDs in this list | |
| should be included in the result set. The result set is also | | should be included in the result set. The result set is also | |
| subject to other query criteria in the request. | | subject to other query criteria in the request. | |
| | | | |
| o rteGrpOfferKey: Zero or more Route Group Offer Keys. Only | | o rteGrpOfferKey: Zero or more Route Group Offer Keys. Only | |
| offers having one of these keys should be included in the result | | offers having one of these keys should be included in the result | |
| set. The result set is also subject to other query criteria in | | set. The result set is also subject to other query criteria in | |
| the request. | | the request. | |
| | | | |
|
| The result of the getRteGrpOffersRqst operation returned in the | | As described in an earlier section of this document, the result of | |
| spppResponse element is the getRteGrpOffersRspns element defined | | any spppQueryRequest operation is an spppQueryResponse element that | |
| below. This object contains the resulting set of RteGrpOfferType | | contains the overall response code and the query result set, if any. | |
| objects, or an empty set if there were no matches. | | Refer to that section of the document for a detailed description of | |
| | | the spppQueryResponse element. | |
| | | | |
|
| <element name="getRteGrpOffersRspns" | | 6.9. Public Identifier Operations | |
| type="spppb:GetRteGrpOffersRspnsType"/> | | | |
| | | | |
|
| <complexType name="GetRteGrpOffersRspnsType"> | | Public Identifier is the search key used for locating the session | |
| <complexContent> | | establishment data (SED). In many cases, a Public Identifier is | |
| <extension base="spppb:BasicRspnsType"> | | attributed to the end user who has a retail relationship with the | |
| <sequence> | | service provider or registrant organization. In SPPP, SED can be | |
| <element name="rteGrpOffer" type="spppb:RteGrpOfferType" | | provisioned by the registrant, or by the registrar on behalf of the | |
| minOccurs="0" maxOccurs="unbounded"/> | | registrant. Also, SPPP supports the notion of the carrier-of-record | |
| </sequence> | | as defined in RFC 5067. Therefore, the entity adding the Public | |
| </extension> | | Identity in the Registry can optionally claim to be a carrier-of- | |
| </complexContent> | | record. | |
| </complexType> | | | |
| | | | |
|
| The response codes that the getRteGrpOffersRqst operation can return | | SPPP identifies three types of Public Identifiers: telephone number | |
| are as follows: | | (TN), email address, and the routing number (RN). SPPP also supports | |
| | | the requirement of adding a contiguous range of TNs including the | |
| | | length variance associated to the Open Number Plan. | |
| | | | |
|
| o 1000: Request Succeeded. | | The XML schema type definition PubIDType is the generalization of the | |
| | | Public Identifier. PubIDType is an abstract type. In agreement with | |
| | | the data model, PubIDType member 'dgName' represents the name of the | |
| | | destination group that a given Public Identifier is associated to. | |
| | | The PubIDType object structure is defined as follows: | |
| | | | |
|
| o 2001: Request syntax invalid. | | <complexType name="PubIdType" abstract="true"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicObjType"> | |
| | | <sequence> | |
| | | <element name="dgName" type="spppb:ObjNameType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| o 2002: Request too large. | | A registrant can add a Public Identifier with the help of a | |
| | | BasicRqstType called AddPubIdRqstType. To complete the add request, | |
| | | AddPubIdRqstType XML instance is added to <spppUpdateRequest> root | |
| | | element. If there is a conflict and a Public Identifier already | |
| | | exists in the Registry, the old entry will be replaced with the newly | |
| | | provisioned entry. For the add or update operation, the destination | |
| | | group name is a mandatory parameter. Not including a valid | |
| | | destination group name in the update request will cause the Registry | |
| | | to return an appropriate error. | |
| | | | |
|
| o 2003: Version not supported. | | Telephone number is identified by TNType, an extension of PubIDType. | |
| | | TNType is composed of the following attributes: | |
| | | | |
|
| o 2103: Command invalid. | | o tn: Telephone number to be added to the Registry. | |
| | | | |
|
| o 2104: Attribute value invalid. | | o rteRecRef: Optional reference to the route record that is | |
| | | directly associated with the TN Public Identifier. Following | |
| | | the SPPP data model, the route record could be a protocol | |
| | | agnostic URIType or another type. | |
| | | | |
|
| o 2301: System temporarily unavailable. | | o corInfo: corInfo is an optional parameter of type CORInfoType | |
| | | that allows the registrant organization to set forth a claim to | |
| | | be the carrier-of-record [see RFC 5067]. This is done by | |
| | | setting the <corClaim> element of the CORInfoType object | |
| | | structure to true. The other two parameters of the CORInfoType, | |
| | | <cor> and <corDateTime> are meant to be set by the Registry to | |
| | | relay the outcome of the carrier-of-record claim by the | |
| | | registrant. In general, inclusion of <corInfo> parameter is | |
| | | useful if the Registry has the authority information, such as, | |
| | | the number portability, etc., in order to qualify whether the | |
| | | registrant claim can be satisfied. If the carrier-of-record | |
| | | claim disagrees with the authority data of the Registry, whether | |
| | | the TN add operation fails or not is a matter of policy and it | |
| | | is beyond the scope of this document. In the response message | |
| | | <spppUpdateResponse>, the SPPP Server must include the <cor> | |
| | | parameter of the <corInfo> element to let the registrant know | |
| | | the outcome of the claim. | |
| | | | |
|
| o 2302: Unexpected internal system or server error. | | TNType object definition is as follows: | |
| | | | |
|
| 8.7. Public Identifier Operations | | <complexType name="TNType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:PubIdType"> | |
| | | <sequence> | |
| | | <element name="tn" type="string"/> | |
| | | <element name="rteRecRef" type="spppb:RteRecRefType" | |
| | | minOccurs="0" maxOccurs="unbounded"/> | |
| | | <element name="corInfo" type="spppb:CORInfoType" | |
| | | minOccurs="0"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| Public Identifier is a well-known attribute that is used as the | | Routing number is identified by RNType. SSPs that possess the number | |
| search key to find the routes associated with it. There are three | | portability data may be able to leverage the RN search key to | |
| types of public identifiers defined in this document: TNType for the | | discover the ingress routes for session establishment. Therefore, | |
| telephone number, EmailType for the email address, and RNType for | | the registrant organization can add the RN and associate it with the | |
| PSTN routing number. Further, TNRangeType is used to add a range of | | appropriate destination group to share the route information. | |
| telephone numbers. | | | |
| | | | |
|
| 8.7.1. Add Public Identifier | | RNType is composed of the following attributes: | |
| | | | |
|
| addPubIdsRqst operation is used to create or overwrite one or more | | o rn: Routing Number used as the search key | |
| public identifier(s). When activating a new public identifier that | | | |
| can be reached using a common set of routes, it is often associated | | | |
| with a well-known destination group. In some cases, such as the | | | |
| email public identifier, the routing information is unique, and | | | |
| therefore, addPubIdsRqst allows the public identifier to be directly | | | |
| associated with a route record. | | | |
| | | | |
|
| PubIdType in the schema represents the public identifier and it is | | o corInfo: Optional <corInfo> element of type CORInfoType. | |
| defined as an abstract type. TNType, EmailType, and RNType, the | | | |
| concrete types of PubIdType, are inputs to 'addPubIdRqst' operation. | | | |
| The declaration of 'addPubIdsRqst' is as follows: | | | |
| | | | |
|
| <element name="addPubIdsRqst" type="spppb:AddPubIdsRqstType"/> | | RNType object information is as follows: | |
| <complexType name="AddPubIdsRqstType"> | | | |
| <complexContent> | | | |
| <extension base="spppb:BasicRqstType"> | | | |
| <sequence> | | | |
| <element name="pi" type="spppb:PubIdType" | | | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| | | | |
|
| For the 'addPubIdsRqst' operation to succeed, each public identifier | | <complexType name="RNType"> | |
| should be associated with at least a valid destination group or a | | <complexContent> | |
| valid route type as defined within the PubIdType definition. If not, | | <extension base="spppb:PubIdType"> | |
| the provisioning server will deem the request a failure and return an | | <sequence> | |
| appropriate failure code in the response. | | <element name="rn" type="string" default="true"/> | |
| | | <element name="corInfo" type="spppb:CORInfoType" | |
| | | minOccurs="0"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| TNType is a concrete public identifier that extends PubIdType | | A contiguous range of TNs is added with the help of TNRType. This | |
| definition. If the entity provisioning the telephone number is the | | object type includes an optional "prefix" attribute to indicate that | |
| carrier of record [see RFC 5067], then it SHOULD include the | | a given TN range qualifies for the Open Number Plan (ONP). In order | |
| 'corClaim' element with a value 'true'. If the SPPP server records | | to correctly expand the number range that qualifies for Open Number | |
| disagree with the COR claim of the provisioning entity, an | | Plan, the Registry must have the required data about the national | |
| appropriate failure response MUST be returned. | | significant number length for the TN prefix included in the TN range | |
| | | object. If the Registry encounters an error in adding even a single | |
| | | TN that is part of the TN range, the whole request will be deemed a | |
| | | failure. In other words, the TNRType add request is transactional in | |
| | | nature, and the partial success case is not supported. | |
| | | | |
|
| <complexType name="PubIdType" abstract="true"> | | TNRType is composed of the following attributes: | |
| <sequence> | | | |
| <element name="base" type="spppb:BasicObjType"/> | | o endTn: The last number in the TN range | |
| <element name="dgName" type="spppb:ObjNameType" minOccurs="0"/> | | | |
| <element name="rteRec" type="spppb:RteRecType" minOccurs="0" | | o corInfo: Optional <corInfo> element of type CORInfoType. | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | o prefix: Optional attribute, when set to "true", indicates that | |
| </complexType> | | the included TN Range falls under the Open Number Plan. | |
| <complexType name="TNType"> | | | |
| | | TNRange object structure is as follows: | |
| | | | |
| | | <complexType name="TNRType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:PubIdType"> | | <extension base="spppb:TNType"> | |
| <sequence> | | <sequence> | |
|
| <element name="tn" type="string"/> | | <element name="endTn" type="string"/> | |
| <element name="corClaim" type="spppb:CORInfoType" | | <element name="corInfo" type="spppb:CORInfoType" | |
| minOccurs="0"/> | | minOccurs="0"/> | |
| </sequence> | | </sequence> | |
|
| | | <attribute name="prefix" type="boolean" default="false" /> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| | | | |
|
| For added flexibility, there is support to add a range of telephone | | The object structure of AddPubIdRqstType used to add Public | |
| numbers and associate them with a destination group. TNRType extends | | Identifiers is as follows | |
| TNType and adds the 'endTn' attribute to mark the end of the range. | | | |
| In the TNRType context, the extended 'tn' attribute is used for the | | | |
| starting TN of a given telephone number range. | | | |
| | | | |
|
| <complexType name="TNRType"> | | <complexType name="AddPubIdRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:TNType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
| <element name="endTn" type="string"/> | | <element name="pi" type="spppb:PubIdType"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| | | | |
|
| The element passed into the spppRequest element for this operation is | | The client can set the GetPubIdsRqstType in the <spppQueryRequest> | |
| the addPubIdsRqst element. This element is of type | | structure to obtain information about one or more <pi> objects that | |
| AddPubIdsRqstType, which extends BasicRqstType and contians one or | | were successfully provisioned earlier and that the calling entity is | |
| more PubIdType objects. Any limitation on the maximum number of | | privileged to see. If the GetPubIdsRqstType object does not include | |
| PubIdType objects that may be passed into this operatoin is a policy | | <pi> data, then all authorized Public Identity data will be returned | |
| decision and is not limited by the protocol. | | by the Registry in the response. If no matching Public Identifiers | |
| | | are found, then an empty result set will be returned. | |
| | | | |
|
| The response from the server is returned in addPubIdsRspns element. | | GetPubIdsRqstType object structure is as follows: | |
| If more than one public identifiers are passed in the addPubIdsRqst, | | | |
| then a failure to add one will result in the failure of addPubIdsRqst | | | |
| operation. If the 'transactional' attribute is set to 'true' in the | | | |
| root element spppRequest and more than one operation request elements | | | |
| are included, then a failure of any one operation will result in the | | | |
| overall failure of spppRequest. In the case of a failure, the | | | |
| response code(s) and message(s) will indicate the reason of failure. | | | |
| | | | |
|
| <element name="addRteGrpsRspns" type="spppb:BasicRspnsType"/> | | <complexType name="GetPubIdsRqstType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicQueryRqstType"> | |
| | | <sequence> | |
| | | <element name="pi" type="spppb:PubIdType" minOccurs="0" | |
| | | maxOccurs="unbounded"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| The response codes that the addRteGrpsRqst operation can return are | | As described in an earlier section of this document, the result of | |
| as follows: | | any spppQueryRequest operation is a spppQueryResponse that contains | |
| | | the response code and the query result set, if any. | |
| | | | |
|
| o 1000: Request Succeeded. | | 6.10. Egress Route Operations | |
| | | | |
|
| o 2001: Request syntax invalid. | | The egress route add operation allows a call originating SSP to | |
| | | define a preferred egress route in an attempt to reach the ingress | |
| | | SBE of the target SSP. The need arises when there is a choice of | |
| | | egress SBE and an SSP wants to exercise greater control in deciding | |
| | | how to route the outbound session establishment request. | |
| | | | |
|
| o 2002: Request too large. | | As a first step, it is assumed that the target SSP has offered to | |
| | | share the route group that consists of the ingress route information | |
| | | to the SBE(s) and the originating SSP has accepted the offer. Next, | |
| | | the originating SSP can add the egress route in the Registry, with | |
| | | appropriate regular expression, to rewrite ingress route information | |
| | | from the target SSP and include the egress SBE information. In high- | |
| | | availability configurations, the originating SSP will likely add a | |
| | | secondary egress route object re-writing the same ingress route from | |
| | | the target SSP with a secondary choice of egress SBE as a backup. In | |
| | | this case, the backup egress route definition will carry the higher | |
| | | integer value for the "pref" parameter to indicate a lower priority. | |
| | | | |
|
| o 2003: Version not supported. | | An egress route is identified by type EgrRteType and its object | |
| | | structure is shown below: | |
| | | | |
|
| o 2103: Command invalid. | | <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> | |
| | | | |
|
| o 2104: Attribute value invalid. | | The EgrRteType object is composed of the following elements: | |
| | | | |
|
| o 2105: Object does not exist. | | o base: All first class objects extend BasicObjType which contains | |
| | | the ID of the registrant organization that owns this object, the | |
| | | ID of the registrar organization that provisioned 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. If the | |
| | | client passes in either the created date or the modification | |
| | | date, the server will ignore them. The server sets these two | |
| | | date/time values. | |
| | | | |
|
| o 2106: Object status or ownership does not allow for request. | | o egrRteName: The name of the egress route. | |
| | | | |
|
| o 2301: System temporarily unavailable. | | o pref: The preference of this egress route relative to other | |
| | | egress routes that may get selected when responding to a | |
| | | resolution request. | |
| | | | |
|
| o 2302: Unexpected internal system or server error. | | o regxRewriteRule: The regular expression re-write rule that | |
| | | should be applied to the regular expression of the ingress | |
| | | NAPTR(s) that belong to the ingress route. | |
| | | | |
|
| 8.7.2. Get Public Identifier | | o ingrRteRec: The ingress route records that the egress route | |
| | | should be used for. | |
| | | | |
|
| The getPubIdsRqst can be used by an authorized entity to obtain the | | o ext: Point of extensibility described in a previous section of | |
| properties of one or more public identifiers. In case of an | | this document. | |
| authorization failure or if no matching public identifiers are found, | | | |
| an appropriate failure code will be returned. | | | |
| | | | |
|
| To make a successful query, getPubIdsRqst element is set within the | | The AddEgrRteRqstType request is used to create or overwrite an | |
| spppRequest root element. getPubIdsRqst is of type GetPubIdsRqstType, | | egress route. | |
| which extends from the common BasicRqstType. | | | |
| | | | |
|
| <element name="getPubIdsRqst" type="spppb:GetPubIdsRqstType"/> | | <complexType name="AddEgrRteRqstType"> | |
| <complexType name="AddPubIdsRqstType"> | | <complexContent> | |
| <complexContent> | | <extension base="spppb:BasicRqstType"> | |
| <extension base="spppb:BasicRqstType"> | | <sequence> | |
| <sequence> | | <element name="egrRte" type="spppb:EgrRteType"/> | |
| <element name="pi" type="spppb:PubIdType" | | </sequence> | |
| maxOccurs="unbounded"/> | | </extension> | |
| </sequence> | | </complexContent> | |
| </extension> | | </complexType> | |
| </complexContent> | | | |
| </complexType> | | | |
| | | | |
|
| The result of the getPubIdsRqst operation returned in the | | An instance of AddEgrRtesRqstType is added in the spppUpdateRequest | |
| spppResponse element is the getPubIdsRspns element of type | | element in order to send a valid request to the server. Any | |
| GetPubIdsRspnsType. If the matching record is found, getPubIdsRspns | | limitation on the maximum number of AddEgrRteRqstType instances is a | |
| element will include one or more pi elements with destination group | | matter of policy and is not limited by the specification. | |
| name and/or the route record associations. | | | |
| | | | |
|
| <element name="getPubIdsRspns" type="spppb:GetPubIdsRspnsType"/> | | The response from the server is returned in addEgrRteRspns element, | |
| <complexType name="GetPubIdsRspnsType"> | | which is defined as the element of type BasicRspnsType. | |
| <complexContent> | | | |
| <extension base="spppb:BasicRspnsType"> | | | |
| <sequence> | | | |
| <element name="pi" type="spppb:PubIdType" minOccurs="0" | | | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| | | | |
|
| The response codes that the addRteGrpsRqst operation can return are | | The GetEgrRtesRqstType is used by an authorized entity to fetch the | |
| as follows: | | well-known egress route data. | |
| | | | |
|
| o 1000: Request Succeeded. | | <complexType name="GetEgrRtesRqstType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicQueryRqstType"> | |
| | | <sequence> | |
| | | <element name="objKey" type="spppb:ObjKeyType" | |
| | | minOccurs="0" maxOccurs="unbounded"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| o 2001: Request syntax invalid. | | 6.11. Add Route Record Operation | |
| | | | |
|
| o 2002: Request too large. | | As described in the introductory sections, a Route Group represents a | |
| | | combined grouping of Route Records that define route information. | |
| | | However, Route Records need not be created to just server a single | |
| | | Route Group. Route Records can be created and managed to serve | |
| | | multiple Route Groups. As a result, a change to the properties of a | |
| | | network node, for example, that is used for multiple routes, would | |
| | | necessitate just a single update operation to change the properties | |
| | | of that node. The change would then be reflected in all the Route | |
| | | Groups whose route record set contains a reference to that node. | |
| | | | |
|
| o 2003: Version not supported. | | The AddRteRecRqstType operation creates or overwrites a Route Record | |
| | | 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: | |
| | | | |
|
| o 2103: Command invalid. | | <complexType name="AddRteRecRqstType"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicRqstType"> | |
| | | <sequence> | |
| | | <element name="rteRec" type="spppb:RteRecType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
|
| o 2104: Attribute value invalid. | | The element passed into the spppUpdateRequest element for this | |
| | | operation is an instance of AddRteRecRqstType, which extends | |
| | | BasicRqstType and contains one RteRecType object. The RteRecType | |
| | | object structure is defined as follows: | |
| | | | |
|
| o 2105: Object does not exist. | | <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> | |
| | | | |
|
| o 2106: Object status or ownership does not allow for request. | | The RteRecType object is composed of the following elements: | |
| | | | |
|
| o 2301: System temporarily unavailable. | | o base: All first class objects extend BasicObjType which contains | |
| | | the ID of the registrant organization that owns this object, the | |
| | | ID of the registrar organization that provisioned 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. If the | |
| | | client passes in either the created date or the modification | |
| | | date, the server will ignore them. The server sets these two | |
| | | date/time values. | |
| | | | |
|
| o 2302: Unexpected internal system or server error. | | o rrName: The character string that contains the name of the Route | |
| | | Record. It uniquely identifies this object within the context | |
| | | of the registrant ID (a child element of the base element as | |
| | | described above). | |
| | | | |
|
| 8.7.3. Delete Public Identifier | | o priority: Zero or one priority value that can be used to provide | |
| | | a relative value weighting of one Route Record over another. | |
| | | The manner in which this value is used, perhaps in conjunction | |
| | | with other factors, is a matter of policy. | |
| | | | |
|
| In order to remove the public identifier, an authorized entity can | | o ext: Point of extensibility described in a previous section of | |
| use the delPubIdsRqst operation. If the entity that issued the | | this document. | |
| command is not authorized to perform this operation or if the public | | | |
| identifier doesn't exist, an appropriate error code will be returned | | | |
| in the response. | | | |
| | | | |
|
| delPubIdsRqst element is set in the root spppRequest element. | | As described above, route records are based on an abstract type: | |
| delPubIdsRqst element is of type DelPubIdsRqstType as shown below: | | RteRecType. The concrete types that use RteRecType as an extension | |
| | | base are NAPTRType, NSType, and URIType. The definitions of these | |
| | | types are included below. The NAPTRType object is comprised of the | |
| | | data elements necessary for a NAPTR that contains routing information | |
| | | for a Route Group. The NSType object is comprised of the data | |
| | | elements necessary for a Name Server that points to another DNS | |
| | | server that contains the desired routing information. The URIType | |
| | | object is comprised of the data elements necessary to house a URI. | |
| | | | |
|
| <element name="getPubIdsRqst" type="spppb:GetPubIdsRqstType"/> | | The data provisioned in a Registry can be leveraged for many purposes | |
| <complexType name="DelPubIdsRqstType"> | | and queried using various protocols including SIP, ENUM and others. | |
| <complexContent> | | It is for this reason that a route record type offers a choice of URI | |
| <extension base="spppb:BasicRqstType"> | | and DNS resource record types. URIType fulfills the need for both | |
| <sequence> | | SIP and ENUM protocols. When a given URIType is associated to a | |
| <element name="pi" type="spppb:PubIdType" | | destination group, the user part of the replacement string <uri> that | |
| maxOccurs="unbounded"/> | | may require the Public Identifier cannot be preset. As a SIP | |
| </sequence> | | Redirect, the resolution server will apply <ere> pattern on the input | |
| </extension> | | Public Identifier in the query and process the replacement string by | |
| </complexContent> | | substituting any back reference(s) in the <uri> to arrive at the | |
| </complexType> | | final URI that is returned in the SIP Contact header. For an ENUM | |
| | | query, the resolution server will simply return the value of the | |
| | | <ere> and <uri> members of the URIType in the NAPTR REGEX parameter. | |
| | | | |
|
| The result of the delPubIdsRqst operation returned in the | | <complexType name="RteRecType" abstract="true"> | |
| spppResponse element is the getPubIdsRspns element of type | | <sequence> | |
| GetPubIdsRspnsType. | | <element name="rrName" type="spppb:ObjNameType"/> | |
| | | <element name="priority" type="unsignedShort"/> | |
| | | </sequence> | |
| | | </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> | |
| | | | |
|
| <element name="delPubIdsRspns" type="spppb:BasicRspnsType"/> | | <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> | |
| | | | |
|
| 8.8. Egress Route Operations | | <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="IPAddrType"> | |
| | | <sequence> | |
| | | <element name="addr" type="string"/> | |
| | | <element name="type" type="spppb:IPType"/> | |
| | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </complexType> | |
| | | | |
|
| This section describes the operations related to egress routes. In | | <simpleType name="IPType"> | |
| this version, egress routes are only defined for route records of | | <restriction base="token"> | |
| NAPTR type (future versions may expand this notion to URI types). | | <enumeration value="IPv4"/> | |
| | | <enumeration value="IPv6"/> | |
| | | </restriction> | |
| | | </simpleType> | |
| | | | |
|
| The egress route functionality allows a call originating SSP to | | The NAPTRType object is composed of the following elements: | |
| define its egress route in an attempt to reach the ingress SBE of the | | | |
| target SSP. In some cases, the call originating SSP has more than | | | |
| one choice of egress SBEs and intends to selectively use one of these | | | |
| route elements for call termination to the target SSP. | | | |
| | | | |
|
| An egress route simply allows an organization to re-write the route | | o order: Order value in an ENUM NAPTR, relative to other NAPTRType | |
| records provided by a peer in a given Route Group. If a terminating | | objects in the same Route Group. | |
| SSP has provided a route group with at least one route record in the | | | |
| form of an ingress DNS NAPTR record, then the egress route allows the | | | |
| originating SSP to re-write the regular expression of the matching | | | |
| ingress NAPTR. The SPPP protocol allows a client to add, get and | | | |
| delete egress route objects based on a given peer's ingress route | | | |
| group. | | | |
| | | | |
|
| An egress route is of type EgrRteType as shown below: | | o svcs: ENUM service(s) that are served by the SBE. This field's | |
| | | value must be of the form specified in RFC 3761 (e.g., E2U+ | |
| | | pstn:sip+sip). The allowable values are a matter of policy and | |
| | | not limited by this protocol. | |
| | | | |
|
| <complexType name="EgrRteType"> | | o regx: NAPTR's regular expression field. If this is not included | |
| <sequence> | | then the Repl field must be included. | |
| <element name="base" type="spppb:BasicObjType"/> | | | |
| <element name="egrRteName" type="spppb:ObjNameType"/> | | | |
| <element name="pref" type="unsignedShort"/> | | | |
| <element name="svcs" type="string"/> | | | |
| <element name="regxRewriteRule" type="spppb:RegexParamType"/> | | | |
| <element name="ingressRte" type="spppb:ObjKeyType" minOccurs="0"/> | | | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| | | | |
|
| The EgrRteType object is composed of the following elements: | | o repl: NAPTR replacement field, should only be provided if the | |
| | | Regex field is not provided, otherwise it will be ignored by the | |
| | | server. | |
| | | | |
|
| o base: As described in previous sections, most objects contain | | o ttl: Number of seconds that an addressing server may cache this | |
| exactly one instance of BasicObjType which contains the ID of | | NAPTR. | |
| the registrant organization that owns this object and the ID of | | | |
| the registrar organization that provisioned this object. | | | |
| | | | |
|
| o egrRteName: The name of the egress route. | | o ext: Point of extensibility described in a previous section of | |
| | | this document. | |
| | | | |
|
| o pref: | | The NSType object is composed of the following elements: | |
| | | | |
|
| o svcs: The ENUM services that the egress route should be used for | | o hostName: Fully qualified host name of the name server. | |
| if the route record is a NAPTR. | | | |
| | | | |
|
| o regxRewriteRule: The regular expression re-write rule that | | o ipAddr: Zero or more objects of type IpAddrType. Each object | |
| should be applied to the regular expression of the ingress | | holds an IP Address and the IP Address type, IPv4 or IP v6. | |
| NAPTR(s) that belong to the ingress route and that have the | | | |
| given ENUM service (ere + repl). | | | |
| | | | |
|
| o ingressRte: The ingress route group name that the egress route | | o ttl: Number of seconds that an addressing server may cache this | |
| should be used for. | | Name Server. | |
| | | | |
| 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. | |
| | | | |
|
| 8.8.1. Add Egress Route | | The URIType object is composed of the following elements: | |
| | | | |
|
| addEgrRtesRqst operation is used to create or overwrite one or more | | o ere: The POSIX Extended Regular Expression (ere) as defined in | |
| egress routes. | | [RFC3986]. | |
| | | | |
|
| <element name="addEgrRtesRqst" type="spppb:AddEgrRtesRqstType"/> | | o uri: the URI as defined in [RFC3986]. In some cases, this will | |
| <complexType name="AddEgrRtesRqstType"> | | serve as the replacement string and it will be left to the | |
| <complexContent> | | resolution server to arrive at the final usable URI. | |
| <extension base="spppb:BasicRqstType"> | | | |
| <sequence> | | | |
| <element name="egrRte" type="spppb:EgrRteType" | | | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| <complexType name="EgrRteType"> | | | |
| <sequence> | | | |
| <element name="base" type="spppb:BasicObjType"/> | | | |
| <element name="egrRteName" type="spppb:ObjNameType"/> | | | |
| <element name="pref" type="unsignedShort"/> | | | |
| <element name="svcs" type="string"/> | | | |
| <element name="regxRewriteRule" type="spppb:RegexParamType"/> | | | |
| <element name="ingressRte" type="spppb:ObjKeyType" minOccurs="0"/> | | | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| | | | |
|
| addEgrRtesRqst is added in the spppRequest root element in order to | | As with the responses to all update operations, the result of the | |
| send a valid request to the server. A limitation on the maximum | | AddRteRecRqstType operation is contained in the generic | |
| number of EgrRteType is enforced by the registry and will vary from | | spppUpdateResponse data structure described in an earlier sections of | |
| one implementation to the next. | | this document. For a detailed description of the spppUpdateResponse | |
| | | data structure refer to that section of the document. | |
| | | | |
|
| The response from the server is returned in addEgrRtesRspns element, | | 6.12. Get Route Records Operation | |
| which is defined as the element of type BasicRspnsType. | | | |
| | | | |
|
| 8.8.2. Get Egress Route | | The getRteRecsRqst operation allows a client to get the properties of | |
| | | Route Record objects that a registrar organization is authorized to | |
| | | view. 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 the set of ObjKeyType objects is | |
| | | empty then the server will return the list of Route Record objects | |
| | | that the querying client has the authority to view. If there are no | |
| | | matching Route Record found then an empty result set will be | |
| | | returned. | |
| | | | |
|
| The getEgrRtesRqst is used by an authorized entity to fetch the well- | | The element passed into the spppQueryRequest element for this | |
| known egress route data. | | operation is an instance of type GetRteRecsRqstType, which extends | |
| | | BasicRqstType 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: | |
| | | | |
|
| <element name="getEgrRtesRqst" type="spppb:GetEgrRtesRqstType"/> | | <complexType name="GetRteRecsRqstType"> | |
| <complexType name="GetEgrRtesRqstType"> | | | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="objKey" type="spppb:ObjKeyType" | |
| minOccurs="0" maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
|
| | | | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| | | | |
|
| 8.8.3. Delete Egress Route | | 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. | |
| | | | |
|
| delEgressRte is used by authorized entities to remove a well-know | | 6.13. Delete Operation | |
| route. | | | |
| | | | |
|
| <element name="delEgrRtesRqst" type="spppb:DelEgrRtesRqstType"/> | | In order to remove an object from the Registry, an authorized entity | |
| <complexType name="DelEgrRtesRqstType"> | | can send the <spppUpdateRequest> to the Registry with a corresponding | |
| | | delete BasicRqstType object. If the entity that issued the command | |
| | | is not authorized to perform this operation or if the public | |
| | | identifier doesn't exist, an appropriate error code will be returned | |
| | | in the <spppUpdateRespnonse> message. | |
| | | | |
| | | As an example, DelPubIdRqstType aids in identifying the Public | |
| | | Identifier that is used to delete a Public Identifier from the | |
| | | Registry. DelPubIdsRqstType object definition is shown below: | |
| | | | |
| | | <complexType name="DelPubIdRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="pi" type="spppb:PubIdType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| | | | |
|
| | | Similarly, each 'Add' operation in the SP protocol has a | |
| | | corresponding 'Del' operation used to delete the respective object | |
| | | type from the Registry. | |
| | | | |
| | | 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 protocol is left out. The SPPP | |
| | | protocol 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 protocol to associate route | |
| | | preferences for the destination ingress routes and exercise greater | |
| | | control on outbound traffic to the peer's ingress SBEs. | |
| | | | |
| | | ---------------+ +------------------ | |
| | | | | | |
| | | +---------------+ +---------------+ | |
| | | | sbe1.ssp1.com | | sbe2.ssp2.com | | |
| | | +---------------+ +---------------+ | |
| | | SSP1 | | SSP2 | |
| | | +---------------+ +---------------+ | |
| | | | sbe3.ssp1.com | | sbe4.ssp2.com | | |
| | | +---------------+ +---------------+ | |
| | | 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:rantId>iana-en:222</ns1:rantId> | |
| | | <ns1:rarId>iana-en:222</ns1:rarId> | |
| | | <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_7777</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"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <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.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 xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | |
| | | xsi:type="ns1:URIType"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <ns1:rrName>RTE_SSP2_SBE4</ns1:rrName> | |
| | | <ns1:ere>^(.*)$</ns1:ere> | |
| | | <ns1:uri>sip:\1;npdi@sbe4.ssp2.com</ns1: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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <rteGrpName>RTE_GRP_SSP2_1</rteGrpName> | |
| | | <ns1:rteRecRef> | |
| | | <ns1:rteRec> | |
| | | <ns1:rantId>iana-en:222</ns1:rantId> | |
| | | <ns1:name>RTE_SSP2_SBE2</ns1:name> | |
| | | </ns1:rteRec> | |
| | | <ns1:priority>100</ns1:priority> | |
| | | </ns1:rteRecRef> | |
| | | <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 xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | |
| | | xsi:type="ns1:TNType"> | |
| | | <ns1:rantId>iana-en:222</ns1:rantId> | |
| | | <ns1:rarId>iana-en:222</ns1:rarId> | |
| | | <ns1:crtDate>2010-05-30T09:30:10Z</ns1:crtDate> | |
| | | <ns1:dgName>DEST_GRP_SSP2_1</ns1:dgName> | |
| | | <tn>+12025556666</tn> | |
| | | <ns1:corInfo> | |
| | | <ns1:corClaim>true</ns1:corClaim> | |
| | | </ns1: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 was | |
| | | processed successfully. <cor> element confirms SSP2 claim to be the | |
| | | carrier of record has been accepted and the processing time is | |
| | | reflected by <corDateTime> data element. | |
| | | | |
| | | <?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 xmlns:ns1="urn:ietf:params:xml:ns:sppp:base:1" | |
| | | xsi:type="ns1:TNType"> | |
| | | <ns1:rantId>iana-en:222</ns1:rantId> | |
| | | <ns1:rarId>iana-en:222</ns1:rarId> | |
| | | <ns1:crtDate>2010-05-30T09:30:10Z</ns1:crtDate> | |
| | | <ns1:dgName>DEST_GRP_SSP2_1</ns1:dgName> | |
| | | <tn>+12025556666</tn> | |
| | | <ns1:corInfo> | |
| | | <ns1:corClaim>true</ns1:corClaim> | |
| | | <ns1:cor>true</ns1:cor> | |
| | | <ns1:corDateTime>2006-05-04T18:13:51.0Z | |
| | | </ns1:corDateTime> | |
| | | </ns1: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"> | |
| | | <rantId>rantId0</rantId> | |
| | | <rarId>rarId0</rarId> | |
| | | <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. Since the 'prefix' public identity attribute is | |
| | | not set to 'true', this means that the TNs belong to a closed number | |
| | | plan. | |
| | | | |
| | | <?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:TNRType"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <ns1:dgName>DEST_GRP_SSP2_1</ns1:dgName> | |
| | | <tn>+12026660000</tn> | |
| | | <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 Range with Open Number Plan support | |
| | | | |
| | | In this case, open number plan refers to TN length variance. | |
| | | Inclusion of "prefix" attribute of TNRType with its value set to true | |
| | | indicates that the start TN range identified by the <tn> element is | |
| | | not necessarily a subscriber number and the Registry will have to | |
| | | consult the number plan data for the respective country to know how | |
| | | to expand the number range. <endTn> attribute marks the end of the TN | |
| | | range. | |
| | | | |
| | | <?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:TNRType" prefix="true"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <ns1:dgName>DEST_GRP_SSP2_1</ns1:dgName> | |
| | | <tn>+4312315566</tn> | |
| | | <endTn>+4312315567</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_12255598</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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <rteGrpOfferKey> | |
| | | <rteGrpKey> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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.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> | |
| | | <rantId>iana-en:111</rantId> | |
| | | <rarId/> | |
| | | <egrRteName>EGR_RTE_01</egrRteName> | |
| | | <pref>50</pref> | |
| | | <regxRewriteRule> | |
| | | <ere>^(.*@)(.*)$</ere> | |
| | | <repl>\1\2?route=sbe1.ssp1.com</repl> | |
| | | </regxRewriteRule> | |
| | | <ns1:ingrRteRec> | |
| | | <ns1:rantId>iana-en:222</ns1:rantId> | |
| | | <ns1:name>SSP2_RTE_REC_3</ns1:name> | |
| | | </ns1: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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <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"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <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"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <ns1:dgName>DEST_GRP_1</ns1:dgName> | |
| | | <tn>+12025556666</tn> | |
| | | <ns1:corInfo> | |
| | | <ns1:corClaim>true</ns1:corClaim> | |
| | | <ns1:cor>true</ns1:cor> | |
| | | <ns1:corDateTime>2010-05-30T09:30:10Z</ns1:corDateTime> | |
| | | </ns1: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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <rteGrpName>RTE_GRP_SSP2_1</rteGrpName> | |
| | | <ns1:rteRecRef> | |
| | | <ns1:rteRec> | |
| | | <ns1:rantId>iana-en:222</ns1:rantId> | |
| | | <ns1:name>RTE_SSP2_SBE2</ns1:name> | |
| | | </ns1:rteRec> | |
| | | <ns1:priority>100</ns1:priority> | |
| | | </ns1:rteRecRef> | |
| | | <ns1:rteRecRef> | |
| | | <ns1:rteRec> | |
| | | <ns1:rantId>iana-en:222</ns1:rantId> | |
| | | <ns1:name>RTE_SSP2_SBE4</ns1:name> | |
| | | </ns1:rteRec> | |
| | | <ns1:priority>101</ns1:priority> | |
| | | </ns1:rteRecRef> | |
| | | <dgName>DEST_GRP_SSP2_1</dgName> | |
| | | <isInSvc>true</isInSvc> | |
| | | <ns1:priority>10</ns1:priority> | |
| | | </resultSet> | |
| | | </spppQueryResponse> | |
| | | | |
| | | 7.15. Get Route Group Offers Request | |
| | | | |
| | | SSP2 choses to fetch the last provisioned route group sharing 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"> | |
| | | <ns1:offeredToPeers>true</ns1:offeredToPeers> | |
| | | <ns1:peeringOrg>ssp1</ns1:peeringOrg> | |
| | | </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:RteGrpOfferType"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <rteGrpOfferKey> | |
| | | <rteGrpKey> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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 Egree 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"> | |
| | | <ns1:objKey> | |
| | | <rantId>iana-en:111</rantId> | |
| | | <name>EGR_RTE_01</name> | |
| | | </ns1: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"> | |
| | | <rantId>iana-en:111</rantId> | |
| | | <rarId>iana-en:111</rarId> | |
| | | <egrRteName>EGR_RTE_01</egrRteName> | |
| | | <pref>50</pref> | |
| | | <svcs>E2U+sip</svcs> | |
| | | <regxRewriteRule> | |
| | | <ere>^(.*)$</ere> | |
| | | <repl>sip:\1@sbe1.ssp1.com</repl> | |
| | | </regxRewriteRule> | |
| | | <ingressRte> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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"> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <rarId>iana-en:222</rarId> | |
| | | <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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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> | |
| | | <rantId>iana-en:222</rantId> | |
| | | <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> | |
| | | <rantId>iana-en:111</rantId> | |
| | | <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 | |
| | | hierarchical data to be expressed in a text format that can be read, | |
| | | saved, and manipulated with both traditional text tools and tools | |
| | | specific to XML. | |
| | | | |
| | | XML is case sensitive. Unless stated otherwise, XML specifications | |
| | | and examples provided in this document MUST be interpreted in the | |
| | | character case presented to develop a conforming implementation. | |
| | | | |
| | | This section discusses a small number of XML-related considerations | |
| | | pertaining to SPPP. | |
| | | | |
| | | 8.1. Namespaces | |
| | | | |
| | | All SPPP protocol elements are defined in the namespaces in te IANA | |
| | | Considerations section and in the Formal Protocol Specification | |
| | | section of this document. | |
| | | | |
| | | 8.2. Versioning and Character Encoding | |
| | | | |
| | | All XML instances SHOULD begin with an <?xml?> declaration to | |
| | | identify the version of XML that is being used, optionally identify | |
| | | 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 | |
| | | XML instance. | |
| | | | |
| | | Conformant XML parsers recognize both UTF-8 (defined in [RFC3629]) | |
| | | and UTF-16 (defined in [RFC2781]); per [RFC2277] UTF-8 is the | |
| | | RECOMMENDED character encoding for use with SPPP. | |
| | | | |
| | | Character encodings other than UTF-8 and UTF-16 are allowed by XML. | |
| | | 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" | |
| | | 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, | |
| | | though emitting a UTF-8 BOM is NOT RECOMMENDED. | |
| | | | |
| | | Example XML declarations: | |
| | | | |
| | | <?xml?> version="1.0" encoding="UTF-8" standalone="no"?> | |
| | | | |
| 9. Security Considerations | | 9. Security Considerations | |
| | | | |
| The transport protocol section contains some security properties that | | The transport protocol section contains some security properties that | |
| the transport protocol must provide so that authenticated endpoints | | the transport protocol must provide so that authenticated endpoints | |
| can exchange data confidentially and with integrity protection. | | can exchange data confidentially and with integrity protection. | |
| | | | |
| More details will be provided in a future revision of this document. | | More details will be provided in a future revision of this document. | |
| | | | |
| 10. IANA Considerations | | 10. IANA Considerations | |
| | | | |
| | | | |
| skipping to change at page 58, line 5 | | skipping to change at page 79, line 23 | |
| 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 11). | |
| | | | |
|
| | | IANA is requested to create a new SPPP registry for Organization | |
| | | Identifiers that will indicate valid strings to be used for well- | |
| | | known enterprise namespaces. | |
| | | This document makes the following assignments for the OrgIdType | |
| | | namespaces: | |
| | | | |
| | | Namespace OrgIdType namespace string | |
| | | ---- ---------------------------- | |
| | | IANA Enterprise Numbers iana-en | |
| | | | |
| 11. Formal Specification | | 11. Formal Specification | |
| | | | |
| This section provides the draft XML Schema Definition for the SPPP | | This section provides the draft XML Schema Definition for the SPPP | |
|
| protocol. Please read Section 3.4 for known issues. | | protocol. | |
| | | | |
| <?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> ------------------ Object Type Definitions | | <documentation> | |
| -------------- </documentation> | | ------------------ Object Type Definitions -------------- | |
| | | </documentation> | |
| </annotation> | | </annotation> | |
| <complexType name="RteGrpType"> | | <complexType name="RteGrpType"> | |
|
| <sequence> | | <complexContent> | |
| <element name="base" type="spppb:BasicObjType"/> | | <extension base="spppb:BasicObjType"> | |
| <element name="rteGrpName" type="spppb:ObjNameType"/> | | <sequence> | |
| <element name="rteRec" type="spppb:RteRecType" minOccurs="0" | | <element name="rteGrpName" type="spppb:ObjNameType"/> | |
| maxOccurs="unbounded"/> | | <element name="rteRecRef" type="spppb:RteRecRefType" | |
| <element name="dgName" type="spppb:ObjNameType" minOccurs="0" | | minOccurs="0" maxOccurs="unbounded"/> | |
| maxOccurs="unbounded"/> | | <element name="dgName" type="spppb:ObjNameType" minOccurs="0" | |
| <element name="peeringOrg" type="spppb:OrgIdType" minOccurs="0" | | maxOccurs="unbounded"/> | |
| maxOccurs="unbounded"/> | | <element name="peeringOrg" type="spppb:OrgIdType" minOccurs="0" | |
| <element name="sourceIdent" type="spppb:SourceIdentType" | | maxOccurs="unbounded"/> | |
| minOccurs="0" maxOccurs="unbounded"/> | | <element name="sourceIdent" type="spppb:SourceIdentType" | |
| <element name="isInSvc" type="boolean"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | <element name="isInSvc" type="boolean"/> | |
| </sequence> | | <element name="priority" type="unsignedShort"/> | |
| | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="DestGrpType"> | | <complexType name="DestGrpType"> | |
|
| <sequence> | | <complexContent> | |
| <element name="base" type="spppb:BasicObjType"/> | | <extension base="spppb:BasicObjType"> | |
| <element name="dgName" type="spppb:ObjNameType"/> | | <sequence> | |
| </sequence> | | <element name="dgName" type="spppb:ObjNameType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="PubIdType" abstract="true"> | | <complexType name="PubIdType" abstract="true"> | |
|
| <sequence> | | <complexContent> | |
| <element name="base" type="spppb:BasicObjType"/> | | <extension base="spppb:BasicObjType"> | |
| <element name="dgName" type="spppb:ObjNameType" minOccurs="0"/> | | <sequence> | |
| <element name="rteRec" type="spppb:RteRecType" minOccurs="0" | | <element name="dgName" type="spppb:ObjNameType" minOccurs="0"/> | |
| maxOccurs="unbounded"/> | | </sequence> | |
| </sequence> | | </extension> | |
| | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="EmailType"> | | <complexType name="EmailType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:PubIdType"> | | <extension base="spppb:PubIdType"> | |
| <sequence> | | <sequence> | |
| <element name="email" type="string"/> | | <element name="email" type="string"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| <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="string"/> | |
|
| <element name="corClaim" type="spppb:CORInfoType" | | <element name="rteRecRef" type="spppb:RteRecRefType" | |
| minOccurs="0"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| | | <element name="corInfo" type="spppb:CORInfoType" | |
| | | minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="TNRType"> | | <complexType name="TNRType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:TNType"> | | <extension base="spppb:TNType"> | |
| <sequence> | | <sequence> | |
| <element name="endTn" type="string"/> | | <element name="endTn" type="string"/> | |
|
| <element name="corClaim" type="spppb:CORInfoType" | | <element name="corInfo" type="spppb:CORInfoType" | |
| minOccurs="0"/> | | minOccurs="0"/> | |
| </sequence> | | </sequence> | |
|
| | | <attribute name="prefix" type="boolean" default="false"> | |
| | | </attribute> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="RNType"> | | <complexType name="RNType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:PubIdType"> | | <extension base="spppb:PubIdType"> | |
| <sequence> | | <sequence> | |
| <element name="rn" type="string" default="true"/> | | <element name="rn" type="string" default="true"/> | |
|
| | | <element name="corInfo" type="spppb:CORInfoType" | |
| | | minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| | | <complexType name="RteRecType" abstract="true"> | |
| | | <complexContent> | |
| | | <extension base="spppb:BasicObjType"> | |
| | | <sequence> | |
| | | <element name="rrName" type="spppb:ObjNameType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| <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="pref" type="unsignedShort"/> | | | |
| <element name="flags" type="string" minOccurs="0"/> | | <element name="flags" type="string" minOccurs="0"/> | |
| <element name="svcs" type="string"/> | | <element name="svcs" type="string"/> | |
| <element name="regx" type="spppb:RegexParamType" | | <element name="regx" type="spppb:RegexParamType" | |
| minOccurs="0"/> | | minOccurs="0"/> | |
| <element name="repl" type="string" minOccurs="0"/> | | <element name="repl" type="string" minOccurs="0"/> | |
| <element name="ttl" type="positiveInteger" minOccurs="0"/> | | <element name="ttl" type="positiveInteger" minOccurs="0"/> | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| | | | |
| skipping to change at page 60, line 37 | | skipping to change at page 83, line 11 | |
| <extension base="spppb:RteRecType"> | | <extension base="spppb:RteRecType"> | |
| <sequence> | | <sequence> | |
| <element name="ere" type="string" default="^(.*)$"/> | | <element name="ere" type="string" default="^(.*)$"/> | |
| <element name="uri" type="string"/> | | <element name="uri" type="string"/> | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="RteGrpOfferType"> | | <complexType name="RteGrpOfferType"> | |
|
| <sequence> | | <complexContent> | |
| <element name="base" type="spppb:BasicObjType"/> | | <extension base="spppb:BasicObjType"> | |
| <element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType"/> | | <sequence> | |
| <element name="status" type="spppb:RteGrpOfferStatusType"/> | | <element name="rteGrpOfferKey" type="spppb:RteGrpOfferKeyType" | |
| <element name="offerDateTime" type="dateTime"/> | | /> | |
| <element name="acceptDateTime" type="dateTime" minOccurs="0"/> | | <element name="status" type="spppb:RteGrpOfferStatusType"/> | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | <element name="offerDateTime" type="dateTime"/> | |
| </sequence> | | <element name="acceptDateTime" type="dateTime" minOccurs="0"/> | |
| | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="EgrRteType"> | | <complexType name="EgrRteType"> | |
|
| <sequence> | | <complexContent> | |
| <element name="base" type="spppb:BasicObjType"/> | | <extension base="spppb:BasicObjType"> | |
| <element name="egrRteName" type="spppb:ObjNameType"/> | | <sequence> | |
| <element name="pref" type="unsignedShort"/> | | <element name="egrRteName" type="spppb:ObjNameType"/> | |
| <element name="svcs" type="string"/> | | <element name="pref" type="unsignedShort"/> | |
| <element name="regxRewriteRule" type="spppb:RegexParamType"/> | | <element name="regxRewriteRule" type="spppb:RegexParamType"/> | |
| <element name="ingressRte" type="spppb:ObjKeyType" minOccurs="0"/> | | <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" minOccurs="0"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| </complexType> | | </complexType> | |
| <annotation> | | <annotation> | |
| <documentation> ------------------ Abstract Object and Element | | <documentation> ------------------ Abstract Object and Element | |
| Type Definitions -------------- </documentation> | | Type Definitions -------------- </documentation> | |
| </annotation> | | </annotation> | |
|
| <complexType name="BasicObjType"> | | <complexType name="BasicObjType" abstract="true"> | |
| <sequence> | | <sequence> | |
| <element name="rantId" type="spppb:OrgIdType"/> | | <element name="rantId" type="spppb:OrgIdType"/> | |
| <element name="rarId" type="spppb:OrgIdType"/> | | <element name="rarId" type="spppb:OrgIdType"/> | |
|
| | | <element name="crtDate" type="dateTime" minOccurs="0"/> | |
| | | <element name="modDate" type="dateTime" minOccurs="0"/> | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </complexType> | |
|
| <complexType name="RteRecType" abstract="true"> | | | |
| <sequence> | | | |
| <element name="priority" type="positiveInteger" default="100"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| <complexType name="RegexParamType"> | | <complexType name="RegexParamType"> | |
| <sequence> | | <sequence> | |
| <element name="ere" type="string" default="^(.*)$"/> | | <element name="ere" type="string" default="^(.*)$"/> | |
| <element name="repl" type="string"/> | | <element name="repl" type="string"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </complexType> | |
| <simpleType name="OrgIdType"> | | <simpleType name="OrgIdType"> | |
| <restriction base="string"/> | | <restriction base="string"/> | |
| </simpleType> | | </simpleType> | |
| <simpleType name="ObjNameType"> | | <simpleType name="ObjNameType"> | |
| | | | |
| skipping to change at page 61, line 49 | | skipping to change at page 84, line 27 | |
| </simpleType> | | </simpleType> | |
| <simpleType name="MinorVerType"> | | <simpleType name="MinorVerType"> | |
| <restriction base="unsignedLong"/> | | <restriction base="unsignedLong"/> | |
| </simpleType> | | </simpleType> | |
| <complexType name="ObjKeyType"> | | <complexType name="ObjKeyType"> | |
| <sequence> | | <sequence> | |
| <element name="rantId" type="spppb:OrgIdType"/> | | <element name="rantId" type="spppb:OrgIdType"/> | |
| <element name="name" type="spppb:ObjNameType"/> | | <element name="name" type="spppb:ObjNameType"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </complexType> | |
|
| <complexType name="RteGrpOfferKeyType"> | | | |
| <sequence> | | | |
| <element name="rteGrpKey" type="spppb:ObjKeyType"/> | | | |
| <element name="offeredTo" type="spppb:OrgIdType"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| <complexType name="BasicRqstType"> | | | |
| <sequence> | | | |
| <element name="clientTransId" type="spppb:TransIdType" | | | |
| minOccurs="0"/> | | | |
| <element name="minorVer" type="spppb:MinorVerType" minOccurs="0"/> | | | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | | |
| </sequence> | | | |
| </complexType> | | | |
| <complexType name="BasicRspnsType"> | | | |
| <sequence> | | | |
| <element name="clientTransId" type="spppb:TransIdType" | | | |
| minOccurs="0"/> | | | |
| <element name="serverTransId" type="spppb:TransIdType"/> | | | |
| <element name="resCode" type="int"/> | | | |
| <element name="resMsg" type="string"/> | | | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | | |
| </sequence> | | | |
| <attribute name="clientTransId" type="spppb:TransIdType"/> | | | |
| <attribute name="serverTransId" type="spppb:TransIdType"/> | | | |
| </complexType> | | | |
| <complexType name="IPAddrType"> | | <complexType name="IPAddrType"> | |
| <sequence> | | <sequence> | |
| <element name="addr" type="string"/> | | <element name="addr" type="string"/> | |
| <element name="type" type="spppb:IPType"/> | | <element name="type" type="spppb:IPType"/> | |
| <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </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="RteRecRefType"> | |
| | | <sequence> | |
| | | <element name="rteRec" type="spppb:ObjKeyType"/> | |
| | | <element name="priority" type="unsignedShort"/> | |
| | | <element name="ext" type="spppb:ExtAnyType" minOccurs="0"/> | |
| | | </sequence> | |
| | | </complexType> | |
| <complexType name="SourceIdentType"> | | <complexType name="SourceIdentType"> | |
| <sequence> | | <sequence> | |
| <element name="sourceIdentLabel" type="string"/> | | <element name="sourceIdentLabel" type="string"/> | |
| <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" minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </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> | |
| | | | |
| skipping to change at page 63, line 10 | | skipping to change at page 85, line 18 | |
| <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> | |
| <complexType name="CORInfoType"> | | <complexType name="CORInfoType"> | |
| <sequence> | | <sequence> | |
| <element name="corClaim" type="boolean" default="true"/> | | <element name="corClaim" type="boolean" default="true"/> | |
|
| <element name="corClaimApproved" type="boolean" default="false" | | <element name="cor" type="boolean" default="false" | |
| /> | | minOccurs="0"/> | |
| | | <element name="corDateTime" type="dateTime" minOccurs="0"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </complexType> | |
| <complexType name="SvcMenuType"> | | <complexType name="SvcMenuType"> | |
| <sequence> | | <sequence> | |
| <element name="serverStatus" type="spppb:ServerStatusType"/> | | <element name="serverStatus" type="spppb:ServerStatusType"/> | |
| <element name="majMinVersion" type="string" | | <element name="majMinVersion" type="string" | |
| maxOccurs="unbounded"/> | | maxOccurs="unbounded"/> | |
| <element name="objURI" type="anyURI" maxOccurs="unbounded"/> | | <element name="objURI" type="anyURI" maxOccurs="unbounded"/> | |
| <element name="extURI" type="anyURI" minOccurs="0" | | <element name="extURI" type="anyURI" minOccurs="0" | |
| maxOccurs="unbounded"/> | | maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </complexType> | |
| <simpleType name="ServerStatusType"> | | <simpleType name="ServerStatusType"> | |
| <restriction base="token"> | | <restriction base="token"> | |
| <enumeration value="inService"/> | | <enumeration value="inService"/> | |
| <enumeration value="outOfService"/> | | <enumeration value="outOfService"/> | |
| </restriction> | | </restriction> | |
| </simpleType> | | </simpleType> | |
|
| | | <complexType name="RteGrpOfferKeyType"> | |
| | | <sequence> | |
| | | <element name="rteGrpKey" type="spppb:ObjKeyType"/> | |
| | | <element name="offeredTo" type="spppb:OrgIdType"/> | |
| | | </sequence> | |
| | | </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> | |
| <complexType name="ExtAnyType"> | | <complexType name="ExtAnyType"> | |
| <sequence> | | <sequence> | |
| <any namespace="##other" maxOccurs="unbounded"/> | | <any namespace="##other" maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </complexType> | | </complexType> | |
| <annotation> | | <annotation> | |
| <documentation> -------------- Operation Request and Response | | <documentation> -------------- Operation Request and Response | |
| Object Type Definitions ------------ </documentation> | | Object Type Definitions ------------ </documentation> | |
| </annotation> | | </annotation> | |
|
| <complexType name="AddRteGrpsRqstType"> | | <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:BasicRqstType"/> | |
| | | </sequence> | |
| | | </extension> | |
| | | </complexContent> | |
| | | </complexType> | |
| | | | |
| | | <complexType name="BasicRqstType" 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> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="rteGrp" type="spppb:RteGrpType" | | <element name="rteGrp" type="spppb:RteGrpType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
|
| | | | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="DelRteGrpsRqstType"> | | <complexType name="DelRteGrpRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="objKey" type="spppb:ObjKeyType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="GetRteGrpsRqstType"> | | <complexType name="GetRteGrpsRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="objKey" type="spppb:ObjKeyType" | |
| minOccurs="0" maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="GetRteGrpsRspnsType"> | | <complexType name="AddRteRecRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRspnsType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="rteGrp" type="spppb:RteGrpType" minOccurs="0" | | <element name="rteRec" type="spppb:RteRecType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="AddDestGroupsRqstType"> | | <complexType name="DelRteRecRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="destGrp" type="spppb:DestGrpType" | | <element name="objKey" type="spppb:ObjKeyType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="DelDestGroupsRqstType"> | | <complexType name="GetRteRecsRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="objKey" type="spppb:ObjKeyType" | |
| maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="GetDestGroupsRqstType"> | | | |
| | | <complexType name="AddDestGrpRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="destGrp" type="spppb:DestGrpType"/> | |
| minOccurs="0" maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="GetDestGroupsRspnsType"> | | <complexType name="DelDestGrpRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRspnsType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="destGrp" type="spppb:DestGrpType" | | <element name="objKey" type="spppb:ObjKeyType"/> | |
| minOccurs="0" maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="AddPubIdsRqstType"> | | <complexType name="GetDestGrpsRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="pi" type="spppb:PubIdType" | | <element name="objKey" type="spppb:ObjKeyType" | |
| maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="DelPubIdsRqstType"> | | <complexType name="AddPubIdRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="pi" type="spppb:PubIdType" | | <element name="pi" type="spppb:PubIdType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="GetPubIdsRqstType"> | | <complexType name="DelPubIdRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="pi" type="spppb:PubIdType" minOccurs="0" | | <element name="pi" type="spppb:PubIdType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="GetPubIdsRspnsType"> | | <complexType name="GetPubIdsRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRspnsType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
| <element name="pi" type="spppb:PubIdType" minOccurs="0" | | <element name="pi" type="spppb:PubIdType" minOccurs="0" | |
| maxOccurs="unbounded"/> | | maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
|
| | | | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="AddRteGrpOffersRqstType"> | | <complexType name="AddRteGrpOfferRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="rteGrpOffer" type="spppb:RteGrpOfferType" | | <element name="rteGrpOffer" type="spppb:RteGrpOfferType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="DelRteGrpOffersRqstType"> | | <complexType name="DelRteGrpOfferRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
| <element name="rteGrpOfferKey" | | <element name="rteGrpOfferKey" | |
|
| type="spppb:RteGrpOfferKeyType" maxOccurs="unbounded"/> | | type="spppb:RteGrpOfferKeyType" /> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="AcceptRteGrpOffersRqstType"> | | <complexType name="AcceptRteGrpOfferRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
| <element name="rteGrpOfferKey" | | <element name="rteGrpOfferKey" | |
|
| type="spppb:RteGrpOfferKeyType" maxOccurs="unbounded"/> | | type="spppb:RteGrpOfferKeyType"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="RejectRteGrpOffersRqstType"> | | <complexType name="RejectRteGrpOfferRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
| <element name="rteGrpOfferKey" | | <element name="rteGrpOfferKey" | |
|
| type="spppb:RteGrpOfferKeyType" maxOccurs="unbounded"/> | | type="spppb:RteGrpOfferKeyType"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="GetRteGrpOffersRqstType"> | | <complexType name="GetRteGrpOffersRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="offeredByPeers" type="boolean" minOccurs="0"/> | | <element name="offeredByPeers" type="boolean" | |
| <element name="offeredToPeers" type="boolean" minOccurs="0"/> | | minOccurs="0"/> | |
| | | | |
| | | <element name="offeredToPeers" type="boolean" | |
| | | minOccurs="0"/> | |
| <element name="status" type="spppb:RteGrpOfferStatusType" | | <element name="status" type="spppb:RteGrpOfferStatusType" | |
| minOccurs="0"/> | | minOccurs="0"/> | |
| <element name="peeringOrg" type="spppb:OrgIdType" | | <element name="peeringOrg" type="spppb:OrgIdType" | |
| minOccurs="0" maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| <element name="rteGrpOfferKey" | | <element name="rteGrpOfferKey" | |
| type="spppb:RteGrpOfferKeyType" minOccurs="0" | | type="spppb:RteGrpOfferKeyType" minOccurs="0" | |
| maxOccurs="unbounded"/> | | maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="GetRteGrpOffersRspnsType"> | | <complexType name="AddEgrRteRqstType"> | |
| <complexContent> | | | |
| <extension base="spppb:BasicRspnsType"> | | | |
| <sequence> | | | |
| <element name="rteGrpOffer" type="spppb:RteGrpOfferType" | | | |
| minOccurs="0" maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| <complexType name="AddEgrRtesRqstType"> | | | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="egrRte" type="spppb:EgrRteType" | | <element name="egrRte" type="spppb:EgrRteType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="DelEgrRtesRqstType"> | | <complexType name="DelEgrRteRqstType"> | |
| <complexContent> | | <complexContent> | |
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="objKey" type="spppb:ObjKeyType"/> | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
| <complexType name="GetEgrRtesRqstType"> | | <complexType name="GetEgrRtesRqstType"> | |
| <complexContent> | | <complexContent> | |
|
| <extension base="spppb:BasicRqstType"> | | <extension base="spppb:BasicQueryRqstType"> | |
| <sequence> | | <sequence> | |
|
| <element name="objectKey" type="spppb:ObjKeyType" | | <element name="objKey" type="spppb:ObjKeyType" | |
| minOccurs="0" maxOccurs="unbounded"/> | | minOccurs="0" maxOccurs="unbounded"/> | |
| </sequence> | | </sequence> | |
| </extension> | | </extension> | |
| </complexContent> | | </complexContent> | |
| </complexType> | | </complexType> | |
|
| <complexType name="GetEgrRtesRspnsType"> | | | |
| <complexContent> | | | |
| <extension base="spppb:BasicRspnsType"> | | | |
| <sequence> | | | |
| <element name="rteGrp" type="spppb:RteGrpType" minOccurs="0" | | | |
| maxOccurs="unbounded"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| <complexType name="GetSvcMenuRqstType"> | | | |
| <complexContent> | | | |
| <extension base="spppb:BasicRqstType"/> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| <complexType name="GetSvcMenuRspnsType"> | | | |
| <complexContent> | | | |
| <extension base="spppb:BasicRspnsType"> | | | |
| <sequence> | | | |
| <element name="svcMenu" type="spppb:SvcMenuType"/> | | | |
| </sequence> | | | |
| </extension> | | | |
| </complexContent> | | | |
| </complexType> | | | |
| <annotation> | | | |
| <documentation> -------------- Operation Request and Response | | | |
| Element Definitions ------------ </documentation> | | | |
| </annotation> | | | |
| <annotation> | | | |
| <documentation> -------------- Manage Route Groups | | | |
| </documentation> | | | |
| </annotation> | | | |
| <element name="addRteGrpsRqst" type="spppb:AddRteGrpsRqstType"/> | | | |
| <element name="delRteGrpsRqst" type="spppb:DelRteGrpsRqstType"/> | | | |
| <element name="getRteGrpsRqst" type="spppb:GetRteGrpsRqstType"/> | | | |
| <element name="addRteGrpsRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="delRteGrpsRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="getRteGrpsRspns" type="spppb:GetRteGrpsRspnsType"/> | | | |
| <annotation> | | | |
| <documentation> -------------- Manage Destination Groups | | | |
| </documentation> | | | |
| </annotation> | | | |
| <element name="addDestGroupsRqst" type="spppb:AddDestGroupsRqstType"/> | | | |
| <element name="delDestGroupsRqst" type="spppb:DelDestGroupsRqstType"/> | | | |
| <element name="getDestGroupsRqst" type="spppb:GetDestGroupsRqstType"/> | | | |
| <element name="addDestGroupsRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="delDestGroupsRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="getDestGroupsRspns" | | | |
| type="spppb:GetDestGroupsRspnsType"/> | | | |
| <annotation> | | | |
| <documentation> -------------- Manage Public Identifiers | | | |
| </documentation> | | | |
| </annotation> | | | |
| <element name="addPubIdsRqst" type="spppb:AddPubIdsRqstType"/> | | | |
| <element name="delPubIdsRqst" type="spppb:DelPubIdsRqstType"/> | | | |
| <element name="getPubIdsRqst" type="spppb:GetPubIdsRqstType"/> | | | |
| <element name="addPubIdsRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="delPubIdsRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="getPubIdsRspns" type="spppb:GetPubIdsRspnsType"/> | | | |
| <annotation> | | | |
| <documentation> -------------- Manage Route Group Offers | | | |
| </documentation> | | | |
| </annotation> | | | |
| <element name="addRteGrpOffersRqst" | | | |
| type="spppb:AddRteGrpOffersRqstType"/> | | | |
| <element name="delRteGrpOffersRqst" | | | |
| type="spppb:DelRteGrpOffersRqstType"/> | | | |
| <element name="acceptRteGrpOffersRqst" | | | |
| type="spppb:AcceptRteGrpOffersRqstType"/> | | | |
| <element name="rejectRteGrpOffersRqst" | | | |
| type="spppb:RejectRteGrpOffersRqstType"/> | | | |
| <element name="getRteGrpOffersRqst" | | | |
| type="spppb:GetRteGrpOffersRqstType"/> | | | |
| <element name="addRteGrpOffersRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="delRteGrpOffersRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="acceptRteGrpOffersRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="rejectRteGrpOffersRspns" type="spppb:BasicRspnsType"/> | | | |
| <element name="getRteGrpOffersRspns" | | | |
| type="spppb:GetRteGrpOffersRspnsType"/> | | | |
| <annotation> | | | |
| <documentation> -------------- Manage Egress Routes | | | |
| </documentation> | | | |
| </annotation> | | | |
| <element name="addEgrRtesRqst" type="spppb:AddEgrRtesRqstType"/> | | | |
| <element name="delEgrRtesRqst" type="spppb:DelEgrRtesRqstType"/> | | | |
| <element name="getEgrRtesRqst" type="spppb:GetEgrRtesRqstType"/> | | | |
| <element name="addEgrRtesRspns" type="spppb:BasicRspnsType"/> | | | |