idnits 2.17.1 draft-ietf-alto-unified-props-new-24.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 1514 has weird spacing: '...rtyName prop...' == Line 1764 has weird spacing: '...trycode stat...' -- The document date (28 February 2022) is 786 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO3166-1' == Outdated reference: A later version (-22) exists of draft-ietf-alto-cdni-request-routing-alto-16 == Outdated reference: A later version (-25) exists of draft-ietf-alto-path-vector-13 Summary: 0 errors (**), 0 flaws (~~), 5 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 ALTO WG W. Roome 3 Internet-Draft S. Randriamasy 4 Intended status: Standards Track Nokia Bell Labs 5 Expires: 1 September 2022 Y. Yang 6 Yale University 7 J. Zhang 8 Tongji University 9 K. Gao 10 Sichuan University 11 28 February 2022 13 An ALTO Extension: Entity Property Maps 14 draft-ietf-alto-unified-props-new-24 16 Abstract 18 This document specifies an extension to the base Application-Layer 19 Traffic Optimization (ALTO) protocol that generalizes the concept of 20 "endpoint properties", which were so far tied to IP addresses, to 21 entities defined by a wide set of objects. Further, these properties 22 are presented as maps, similar to the network and cost maps in the 23 base ALTO protocol. While supporting the endpoints and related 24 endpoint property service defined in RFC7285, the ALTO protocol is 25 extended in two major directions. First, from endpoints restricted 26 to IP addresses to entities covering a wider and extensible set of 27 objects; second, from properties on specific endpoints to entire 28 entity property maps. These extensions introduce additional features 29 allowing entities and property values to be specific to a given 30 information resource. This is made possible by a generic and 31 flexible design of entity and property types. 33 Status of This Memo 35 This Internet-Draft is submitted in full conformance with the 36 provisions of BCP 78 and BCP 79. 38 Internet-Drafts are working documents of the Internet Engineering 39 Task Force (IETF). Note that other groups may also distribute 40 working documents as Internet-Drafts. The list of current Internet- 41 Drafts is at https://datatracker.ietf.org/drafts/current/. 43 Internet-Drafts are draft documents valid for a maximum of six months 44 and may be updated, replaced, or obsoleted by other documents at any 45 time. It is inappropriate to use Internet-Drafts as reference 46 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on 1 September 2022. 50 Copyright Notice 52 Copyright (c) 2022 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 57 license-info) in effect on the date of publication of this document. 58 Please review these documents carefully, as they describe your rights 59 and restrictions with respect to this document. Code Components 60 extracted from this document must include Revised BSD License text as 61 described in Section 4.e of the Trust Legal Provisions and are 62 provided without warranty as described in the Revised BSD License. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 67 1.1. Terminology and notation . . . . . . . . . . . . . . . . 6 68 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 6 69 3. Basic Features of the Entity Property Map Extension . . . . . 7 70 3.1. Entity . . . . . . . . . . . . . . . . . . . . . . . . . 7 71 3.2. Entity Domain . . . . . . . . . . . . . . . . . . . . . . 8 72 3.2.1. Entity Domain Type . . . . . . . . . . . . . . . . . 8 73 3.2.2. Entity Domain Name . . . . . . . . . . . . . . . . . 8 74 3.3. Entity Property Type . . . . . . . . . . . . . . . . . . 9 75 3.4. New Information Resource and Media Type: ALTO Property 76 Map . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 77 4. Advanced Features of the Entity Property Map Extension . . . 10 78 4.1. Entity Identifier and Entity Domain Name . . . . . . . . 10 79 4.2. Resource-Specific Entity Domain Name . . . . . . . . . . 11 80 4.3. Resource-Specific Entity Property Value . . . . . . . . . 12 81 4.4. Entity Hierarchy and Property Inheritance . . . . . . . . 13 82 4.4.1. Entity Hierarchy . . . . . . . . . . . . . . . . . . 13 83 4.4.2. Property Inheritance . . . . . . . . . . . . . . . . 14 84 4.4.3. Property Value Unicity . . . . . . . . . . . . . . . 14 85 4.5. Supported Properties on Entity Domains in Property Map 86 Capabilities . . . . . . . . . . . . . . . . . . . . . . 15 87 4.6. Defining Information Resource for Resource-Specific Entity 88 Domains . . . . . . . . . . . . . . . . . . . . . . . . . 15 89 4.6.1. Defining Information Resource and its Media Type . . 16 90 4.6.2. Examples of Defining Information Resources and Their 91 Media Type . . . . . . . . . . . . . . . . . . . . . 17 92 4.7. Defining Information Resource for Resource-Specific 93 Property Values . . . . . . . . . . . . . . . . . . . . . 18 94 5. Protocol Specification: Basic Data Types . . . . . . . . . . 19 95 5.1. Entity Domain . . . . . . . . . . . . . . . . . . . . . . 19 96 5.1.1. Entity Domain Type . . . . . . . . . . . . . . . . . 19 97 5.1.2. Entity Domain Name . . . . . . . . . . . . . . . . . 20 98 5.1.3. Entity Identifier . . . . . . . . . . . . . . . . . . 22 99 5.1.4. Hierarchy and Inheritance . . . . . . . . . . . . . . 23 100 5.2. Entity Property . . . . . . . . . . . . . . . . . . . . . 23 101 5.2.1. Entity Property Type . . . . . . . . . . . . . . . . 23 102 5.2.2. Entity Property Name . . . . . . . . . . . . . . . . 24 103 5.2.3. Format for Entity Property Value . . . . . . . . . . 25 104 6. Entity Domain Types Defined in this Document . . . . . . . . 25 105 6.1. Internet Address Domain Types . . . . . . . . . . . . . . 25 106 6.1.1. Entity Domain Type: IPv4 . . . . . . . . . . . . . . 25 107 6.1.2. Entity Domain Type: IPv6 . . . . . . . . . . . . . . 26 108 6.1.3. Hierarchy and Inheritance of Internet Address 109 Domains . . . . . . . . . . . . . . . . . . . . . . . 26 110 6.1.4. Defining Information Resource Media Type for domain 111 types IPv4 and IPv6 . . . . . . . . . . . . . . . . . 28 112 6.2. Entity Domain Type: PID . . . . . . . . . . . . . . . . . 28 113 6.2.1. Entity Domain Type Identifier . . . . . . . . . . . . 28 114 6.2.2. Domain-Specific Entity Identifiers . . . . . . . . . 28 115 6.2.3. Hierarchy and Inheritance . . . . . . . . . . . . . . 28 116 6.2.4. Defining Information Resource Media Type for Domain 117 Type PID . . . . . . . . . . . . . . . . . . . . . . 28 118 6.2.5. Relationship To Internet Addresses Domains . . . . . 29 119 6.3. Internet Address Properties vs. PID Properties . . . . . 29 120 7. Property Map . . . . . . . . . . . . . . . . . . . . . . . . 29 121 7.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 30 122 7.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 30 123 7.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 30 124 7.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 30 125 7.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 30 126 7.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 30 127 8. Filtered Property Map . . . . . . . . . . . . . . . . . . . . 32 128 8.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 32 129 8.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 32 130 8.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 32 131 8.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 34 132 8.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 34 133 8.6. Filtered Property Map Response . . . . . . . . . . . . . 34 134 8.7. Entity Property Type Defined in This Document . . . . . . 36 135 8.7.1. Entity Property Type: pid . . . . . . . . . . . . . . 36 136 9. Impact on Legacy ALTO Servers and ALTO Clients . . . . . . . 37 137 9.1. Impact on Endpoint Property Service . . . . . . . . . . . 37 138 9.2. Impact on Resource-Specific Properties . . . . . . . . . 37 139 9.3. Impact on Other Properties . . . . . . . . . . . . . . . 37 140 10. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 38 141 10.1. Network Map . . . . . . . . . . . . . . . . . . . . . . 38 142 10.2. Property Definitions . . . . . . . . . . . . . . . . . . 38 143 10.3. Information Resource Directory (IRD) . . . . . . . . . . 39 144 10.4. Full Property Map Example . . . . . . . . . . . . . . . 42 145 10.5. Filtered Property Map Example #1 . . . . . . . . . . . . 43 146 10.6. Filtered Property Map Example #2 . . . . . . . . . . . . 44 147 10.7. Filtered Property Map Example #3 . . . . . . . . . . . . 45 148 10.8. Filtered Property Map Example #4 . . . . . . . . . . . . 47 149 10.9. Filtered Property Map for ANEs Example #5 . . . . . . . 47 150 11. Security Considerations . . . . . . . . . . . . . . . . . . . 48 151 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 50 152 12.1. application/alto-propmap+json Media Type . . . . . . . . 51 153 12.2. alto-propmapparams+json Media Type . . . . . . . . . . . 52 154 12.3. ALTO Entity Domain Type Registry . . . . . . . . . . . . 53 155 12.3.1. Consistency Procedure between ALTO Address Type 156 Registry and ALTO Entity Domain Type Registry . . . . 54 157 12.3.2. ALTO Entity Domain Type Registration Process . . . . 56 158 12.4. ALTO Entity Property Type Registry . . . . . . . . . . . 57 159 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 58 160 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 59 161 14.1. Normative References . . . . . . . . . . . . . . . . . . 59 162 14.2. Informative References . . . . . . . . . . . . . . . . . 60 163 Appendix A. Features introduced with the Entity Property Maps 164 extension . . . . . . . . . . . . . . . . . . . . . . . . 61 165 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62 167 1. Introduction 169 The ALTO protocol [RFC7285] introduces the concept of "properties" 170 attached to "endpoint addresses". It also defines the Endpoint 171 Property Service (EPS) to allow ALTO clients to retrieve those 172 properties. While useful, the EPS, as defined in [RFC7285], has at 173 least three limitations that are further elaborated hereafter. 175 First, the EPS allows properties to be associated with only endpoints 176 that are identified by individual communication addresses like IPv4 177 and IPv6 addresses. It is reasonable to think that collections of 178 endpoints or Provider-Defined Identifiers (PIDs), may also have 179 properties. Furthermore, recent ALTO use cases show that properties 180 of entities such as abstracted network elements as defined in 181 [I-D.ietf-alto-path-vector] are also useful. However, the current 182 EPS is restricted to individual endpoints and cannot be applied to 183 those entities. 185 Second, the EPS only allows endpoints identified by global 186 communication addresses. However, an endpoint address may be a local 187 IP address or an anycast IP address that may not be globally unique. 188 Additionally, an entity such as a PID may have an identifier that is 189 not globally unique. That is, a same PID may be used in multiple 190 network maps, while in each network map, this PID points to a 191 different set of addresses. 193 Third, in section 11.4 of [RFC7285], the EPS is only defined as a 194 POST-mode service. ALTO clients must request the properties for an 195 explicit set of endpoint addresses. By contrast, [RFC7285], in 196 section 11.2.3, defines a GET-mode cost map resource which returns 197 all available costs, so an ALTO Client can retrieve a full set of 198 costs once, and then process cost lookups without querying the ALTO 199 server. [RFC7285] does not define a similar service for endpoint 200 properties. At first, a map of endpoint properties might seem 201 impractical, because it could require enumerating the property value 202 for every possible endpoint. In particular, the number of endpoint 203 addresses involved by an ALTO server can be quite large. To avoid 204 enumerating a large number of endpoint addresses inefficiently, the 205 ALTO server might define properties for a sufficiently large subset 206 of endpoints and uses an aggregation representation to reference 207 endpoints to allow efficient enumeration. This is particularly true 208 if blocks of endpoint addresses with a common prefix have the same 209 value for a property. Entities in other domains may very well allow 210 aggregated representation and hence be enumerable as well. 212 To address these three limitations, this document specifies an ALTO 213 protocol extension for defining and retrieving ALTO properties: 215 * The first limitation is addressed by introducing a generic concept 216 called ALTO Entity, which generalizes an endpoint and may 217 represent a PID, a network element, a cell in a cellular network, 218 an abstracted network element [I-D.ietf-alto-path-vector], or 219 other physical or logical objects involved in a network topology. 220 Each entity is included in a collection called an ALTO entity 221 domain. Since each ALTO entity domain includes only one type of 222 entities, each entity domain can be classified by the type of 223 enclosed entities. 225 * The second limitation is addressed by using resource-specific 226 entity domains. A resource-specific entity domain contains 227 entities that are defined and identified with respect to a given 228 ALTO information resource, which provides scoping. For example, 229 an entity domain containing PIDs is identified with respect to the 230 network map in which these PIDs are defined. Likewise, an entity 231 domain containing local IP addresses may be defined with respect 232 to a local network map. 234 * The third limitation is addressed by defining two new types of 235 ALTO information resources: Property Map (Section 7) and Filtered 236 Property Map (Section 8). The former is a resource that is 237 requested using the HTTP GET method, returns the property values 238 for all entities in one or more entity domains, and is analogous 239 to a network map or a cost map in Section 11.2 of [RFC7285]. The 240 latter is a resource that that is requested using the HTTP POST 241 method, returns the values for sets of properties and entities 242 requested by the client, and is analogous to a filtered network 243 map or a filtered cost map. 245 The Entity Property Maps extension described in this document 246 introduces a number of features that are summarized in Appendix A, 247 where Table 4 lists the features and references the sections in this 248 document that give their high-level and their normative description. 250 The protocol extension defined in this document is augmentable. New 251 entity domain types can be defined without revising the present 252 specification. Similarly, new cost metrics and new endpoint 253 properties can be defined in other documents without revising the 254 protocol specification defined in [RFC7285]. 256 1.1. Terminology and notation 258 This document uses the following terms and abbreviations, that will 259 be further defined in the document. While this document introduces 260 the feature "entity property map", it will use both the term 261 "property map" and "entity property map" to refer to this feature. 263 * Transaction: A request/response exchange between an ALTO client 264 and an ALTO server. 266 * Client: When used with a capital "C", this term refers to an ALTO 267 client. Note that expressions "ALTO client", "ALTO Client" and 268 "Client" are equivalent. 270 * Server: When used with a capital "S", this term refers to an ALTO 271 server. Note that expressions "ALTO server", "ALTO Server" and 272 "Server" are equivalent. 274 * EPS: An abbreviation for Endpoint Property Service. 276 This document uses the semi-formal notation defined in Section 8.2 of 277 [RFC7285]. 279 2. Requirements Language 281 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 282 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 283 "OPTIONAL" in this document are to be interpreted as described in BCP 284 14 [RFC2119] [RFC8174] when, and only when, they appear in all 285 capitals, as shown here. When the words appear in lower case, they 286 are to be interpreted with their natural language meanings. 288 3. Basic Features of the Entity Property Map Extension 290 This section gives a high-level overview of the basic features 291 involved in ALTO Entity Property Maps. It assumes the reader is 292 familiar with the ALTO protocol [RFC7285]. The purpose of this 293 extension is to convey properties on objects that extend ALTO 294 Endpoints and are called ALTO Entities, or entities for short. 296 The features introduced in this section can be used as standalone. 297 However, in some cases, these features may depend on particular 298 information resources and need to be defined with respect to them. 299 To this end, Section 4 introduces additional features that extend the 300 ones presented in the present section. 302 3.1. Entity 304 The concept of an ALTO Entity generalizes the concept of an ALTO 305 Endpoint defined in Section 2.1 of [RFC7285]. An entity is an object 306 that can be an endpoint defined by its network address, but can also 307 be an object that has a defined mapping to a set of one or more 308 network addresses or an object that is not even related to any 309 network address. Thus, whereas all endpoints are entities, not all 310 entities are endpoints. 312 Examples of entities are: 314 * an ALTO endpoint that represents an application or a host 315 identified by a communication address (e.g., an IPv4 or IPv6 316 address) in a network, 318 * a PID, defined in [RFC7285], that has a provider defined human- 319 readable identifier specified by an ALTO network map, which maps a 320 PID to a set of IPv4 and IPv6 addresses, 322 * an Autonomous System (AS), that has an AS number (ASN) as its 323 identifier and maps to a set of IPv4 and IPv6 addresses, that is 324 defined in [I-D.ietf-alto-cdni-request-routing-alto], 326 * a country with a code specified in [ISO3166-1], to which 327 applications such as CDN providers associate properties and 328 capabilities, that is defined in 329 [I-D.ietf-alto-cdni-request-routing-alto], 331 * a TCP/UDP network flow, that is identified by a TCP/UDP 5-tuple 332 specifying its source and destination addresses and port numbers, 333 and the IP protocol, 335 * a routing element, that is specified in [RFC7921] and is 336 associated with routing capabilities information, 338 * an abstract network element, that is specified in 339 [I-D.ietf-alto-path-vector] and that represents an abstraction of 340 a network part such as a router, one or more links, a network 341 domain or their aggregation. 343 Some of the example entities listed above have already been 344 documented as ALTO entities. The other examples are provided for 345 illustration as potential entities. 347 3.2. Entity Domain 349 An entity domain defines a set of entities of the same semantic type. 350 An entity domain is characterized by a type and identified by a name. 352 In this document, an entity is owned by exactly one entity domain 353 name. An entity identifier points to exactly one entity. If two 354 entities in two different entity domains refer to the same physical 355 or logical object, they are treated as different entities. For 356 example, if an end host has both an IPv4 and an IPv6 address, these 357 two addresses will be treated as two entities, defined respectively 358 in the "ipv4" and "ipv6" entity domains. 360 3.2.1. Entity Domain Type 362 The type of an entity domain type defines the semantics of a type of 363 entity. Entity domain types can be defined in different documents. 364 For example: the present document defines entity domain types "ipv4", 365 "ipv6" and "pid" in Section 6.1 and Section 6.2. The entity domain 366 type "ane", that defines Abstract Network Elements (ANEs), is 367 introduced in [I-D.ietf-alto-path-vector]. The entity domain type 368 that defines country codes is introduced in 369 [I-D.ietf-alto-cdni-request-routing-alto]. An entity domain type 370 MUST be registered at the IANA, as specified in Section 12.3.2. 372 3.2.2. Entity Domain Name 374 In this document, the identifier of an entity domain is mostly called 375 "entity domain name". The identifier of an entity domain is defined 376 in the scope of an ALTO server. An entity domain identifier can 377 sometimes be identical to the identifier of its relevant entity 378 domain type. This is the case when the entities of a domain have an 379 identifier that points to the same object throughout all the 380 information resources of the Server that provide entity properties 381 for this domain. For example, a domain of type "ipv4" containing 382 entities that are identified by a public IPv4 address can be named 383 "ipv4" because its entities are uniquely identified by all the Server 384 resources. 386 In some cases, the name of an entity domain cannot be simply its 387 entity domain type. Indeed, for some domain types, entities are 388 defined relative to a given information resource. This is the case 389 for entities of domain type "pid". A PID is defined relative to a 390 network map. For example, an entity "mypid10" of domain type "pid" 391 may be defined in a given network map and be undefined in other 392 network maps. Or "mypid10" may even be defined in two different 393 network maps and map, in each of these network maps, to a different 394 set of endpoint addresses. In this case, naming an entity domain 395 only by its type "pid" does not guarantee that its set of entities is 396 owned by exactly one entity domain. 398 Section 4.2 and Section 5.1.2 describe how a domain is uniquely 399 identified, across the ALTO server, by a name that associates the 400 domain type and the related information resource. 402 3.3. Entity Property Type 404 An entity property defines a property of an entity. This is similar 405 to the endpoint property defined in Section 7.1 of [RFC7285]. An 406 entity property can convey either network-aware or network-agnostic 407 information. Similar to an entity domain, an entity property is 408 characterized by a type and identified by a name. An entity property 409 type MUST be registered at the IANA, as specified in Section 12.4. 411 Below are listed some examples with real and fictitious entity domain 412 and property names: 414 * an entity in the "ipv4" domain type may have a property whose 415 value is an Autonomous System (AS) number indicating the AS to 416 which this IPv4 address belongs and another property named 417 "countrycode" indicating a country code mapping to this address, 419 * an entity identified by its country code in the entity domain type 420 "countrycode", defined in 421 [I-D.ietf-alto-cdni-request-routing-alto] may have a property 422 indicating what delivery protocol is used by a CDN, 424 * an entity in the "netmap1.pid" domain may have a property that 425 indicates the central geographical location of the endpoints it 426 includes. 428 It should be noted that some identifiers may be used for both an 429 entity domain type and a property type. For example: 431 * the identifier "countrycode" may point to both the entity domain 432 type "countrycode" and the fictitious property type "countrycode". 434 * the identifier "pid" may point to both the entity domain type 435 "pid" and the property type "pid". 437 Likewise, the same identifier may point to both a domain name and a 438 property name. For example: the identifier "netmap10.pid" may point 439 to either the domain defined by the PIDs of network map "netmap10" or 440 to a property that returns, for an entity defined by its IPv4 441 address, the PID of netmap10 that contains this entity. Such cases 442 will be further explained in Section 4. 444 3.4. New Information Resource and Media Type: ALTO Property Map 446 This document introduces a new ALTO information resource named 447 Property Map. An ALTO property map provides a set of properties on 448 one or more sets of entities. A property may apply to different 449 entity domain types and names. For example, an ALTO property map may 450 define the "ASN" property for both "ipv4" and "ipv6" entity domains. 452 The present extension also introduces a new media type. 454 This document uses the same definition of an information resource as 455 Section 9.1 of [RFC7285]. ALTO uses media types to uniquely indicate 456 the data format used to encode the content to be transmitted between 457 an ALTO server and an ALTO client in the HTTP entity body. In the 458 present case, an ALTO property map resource is defined by the media 459 type "application/alto-propmap+json". 461 A Property Map can be queried as a GET-mode resource, thus conveying 462 all properties on all entities indicated in its capabilities. It can 463 also be queried as a POST-mode resource, thus conveying a selection 464 of properties on a selection of entities. 466 4. Advanced Features of the Entity Property Map Extension 468 This section gives a high-level overview of the advanced features 469 involved in ALTO Entity Property Maps. Most of these features are 470 defined to extend the ones defined in Section 3. 472 4.1. Entity Identifier and Entity Domain Name 474 In [RFC7285], an endpoint has an identifier that is explicitly 475 associated with the "ipv4" or "ipv6" address domain. Examples are 476 "ipv4:192.0.2.14" and "ipv6:2001:db8::12". 478 In this document, example IPv4 and IPv6 addresses and prefixes are 479 taken from the address ranges reserved for documentation by [RFC5737] 480 and [RFC3849]. 482 In this document, an entity must be owned by exactly one entity 483 domain name and an entity identifier must point to exactly one 484 entity. To ensure this, an entity identifier is explicitly attached 485 to the name of its entity domain and an entity domain type 486 characterizes the semantics and identifier format of its entities. 488 The encoding format of an entity identifier is further specified in 489 Section 5.1.3 of this document. 491 For instance: 493 * if an entity is an endpoint with IPv4 address "192.0.2.14", its 494 identifier is associated with entity domain name "ipv4" and is 495 "ipv4:192.0.2.14", 497 * if an entity is a PID named "mypid10" in network map resource 498 "netmap2", its identifier is associated with entity domain name 499 "netmap2.pid" and is "netmap2.pid:mypid10". 501 4.2. Resource-Specific Entity Domain Name 503 Some entities are defined and identified uniquely and globally in the 504 context of an ALTO server. This is the case for instance when 505 entities are endpoints that are identified by a reachable IPv4 or 506 IPv6 address. The entity domain for such entities can be globally 507 defined and named "ipv4" or "ipv6". Those entity domains are called 508 resource-agnostic entity domains in this document, as they are not 509 associated with any specific ALTO information resources. 511 Some other entities and entity types are only defined relative to a 512 given information resource. This is the case for entities of domain 513 type "pid", that can only be understood with respect to the network 514 map where they are defined. For example, a PID named "mypid10" may 515 be defined to represent a set S1 of IP addresses in a network map 516 resource named "netmap1". Another network map "netmap2" may use the 517 same name "mypid10" and define it to represent another set S2 of IP 518 addresses. The identifier "pid:mypid10" may thus point to different 519 objects because the information on the originating information 520 resource is lost. 522 To solve this ambiguity, the present extension introduces the concept 523 of resources-specific entity domain. This concept applies to domain 524 types where entities are defined relative to a given information 525 resource. It can also apply to entity domains that are defined 526 locally, such as local networks of objects identified with a local 527 IPv4 address. 529 In such cases, an entity domain type is explicitly associated with an 530 identifier of the information resource where these entities are 531 defined. Such an information resource is referred to as the 532 "specific information resource". Using a resource-aware entity 533 domain name, an ALTO property map can unambiguously identify distinct 534 entity domains of the same type, on which entity properties may be 535 queried. Examples of resource-specific entity domain names may look 536 like: "netmap1.pid" or "netmap2.pid". Thus, a name association such 537 as "netmap1.pid:mypid10" and "netmap2.pid:mypid10" allows to 538 distinguish the two abovementioned PIDs that are both named "mypid10" 539 but in two different resources, "netmap1" and "netmap2". 541 An information resource is defined in the scope of an ALTO Server and 542 so is an entity domain name. The format of a resource-specific 543 entity domain name is further specified in Section 5.1.2. 545 4.3. Resource-Specific Entity Property Value 547 Like entity domains, some types of properties are defined relative to 548 an information resource. That is, an entity may have a property of a 549 given type, whose values are associated to different information 550 resources. 552 For example, suppose entity "192.0.2.34" defined in the "ipv4" domain 553 has a property of type "pid", whose value is the PID to which address 554 "192.0.2.34" is attached in a network map. The mapping of network 555 addresses to PIDs is specific to a network map and probably different 556 from one network map resource to another one. Thus, if a property 557 "pid" is defined for entity "192.0.2.34" in two different network 558 maps "netmap1" and "netmap2", the value for this property can be a 559 different value in "netmap1" and "netmap2". 561 To support information resource dependent property values, this 562 document uses the same approach as in Section 10.8.1 of [RFC7285] 563 entitled "Resource-Specific Endpoint Properties". When a property 564 value depends on a given information resource, the name of this 565 property MUST be explicitly associated with the information resource 566 that defines it. 568 For example, the property "pid" queried on entity "ipv4:192.0.2.34" 569 and defined in both "netmap1" and "netmap2", can be named 570 "netmap1.pid" and "netmap2.pid". This allows a Client to get a 571 property of the same type but defined in different information 572 resources with a single query. Specifications on the property name 573 format are provided in Section 5.2. 575 4.4. Entity Hierarchy and Property Inheritance 577 For some domain types, there is an underlying structure that allows 578 entities to efficiently be grouped into a set and be defined by the 579 identifier of this set. This is the case for domain types "ipv4" and 580 "ipv6", where individual Internet addresses can be grouped in blocks. 581 When the same property value applies to a whole set, a Server can 582 define a property for the identifier of this set instead of 583 enumerating all the entities and their properties. This allows a 584 substantial reduction of transmission payload both for the Server and 585 the Client. For example, all the entities included in the set 586 defined by the address block "ipv6:2001:db8::1/64" share the same 587 properties and values defined for this block. 589 Additionally, entity sets sometimes are related by inclusion, 590 hierarchy or other relations. This allows defining inheritance rules 591 for entity properties that propagate properties among related entity 592 sets. The Server and the Client can use these inheritance rules for 593 further payload savings. Entity hierarchy and property inheritance 594 rules are specified in the documents that define the applicable 595 domain types. The present document defines these rules for the 596 "ipv4" and "ipv6" domain types. 598 This document introduces, for applicable domain types, "Entity 599 Property Inheritance rules", with the following concepts: Entity 600 Hierarchy, Property Inheritance and Property Value Unicity. A 601 detailed specification of entity hierarchy and property inheritance 602 rules is provided in Section 5.1.4. 604 4.4.1. Entity Hierarchy 606 An entity domain may allow using a single identifier to identify a 607 set of related individual entities. For example, a CIDR block can be 608 used to identify a set of IPv4 or IPv6 entities. A CIDR block is 609 called a hierarchical entity identifier, as it can reflect inclusion 610 relations among entity sets. That is, in an entity hierarchy, 611 "supersets" are defined at upper levels and include "subsets" defined 612 at lower levels." For example, the CIDR "ipv4:192.0.1.0/24" includes 613 all the individual IPv4 entities identified by the CIDR 614 "ipv4:192.0.1.0/26". This document will sometimes use the term 615 "hierarchical address" to refer to a hierarchical entity identifier. 617 4.4.2. Property Inheritance 619 A property may be defined for a hierarchical entity identifier, while 620 it may be undefined for individual entities covered by this 621 identifier. In this case, these individual entities inherit the 622 property value defined for the identifier that covers them. For 623 example, suppose a property map defines a property P for which it 624 assigns value V1 only for the hierarchical entity identifier 625 "ipv4:192.0.1.0/24" but not for individual entities in this block. 626 Suppose also that inheritance rules are specified for CIDR blocks in 627 the "ipv4" domain type. When receiving this property map, a Client 628 can infer that entity "ipv4:192.0.1.1" inherits the property value V1 629 of block "ipv4:192.0.1.0/24" because the address "ipv4:192.0.1.1" is 630 included in the CIDR block "ipv4:192.0.1.0/24". 632 Property value inheritance rules also apply among entity sets. A 633 property map may define values for an entity set belonging to a 634 hierarchy but not for "subsets" that are covered by this set 635 identifier. In this case, inheritance rules must specify how 636 entities in "subsets" inherit property values from their "superset". 637 For instance, suppose a property P is defined only for the entity set 638 defined by address block "ipv4:192.0.1.0/24". We know that entity 639 set "ipv4:192.0.1.0/30" is included in "ipv4:192.0.1.0/24". 640 Therefore, the entities of "ipv4:192.0.1.0/30" may inherit the value 641 of property P from set "ipv4:192.0.1.0/24", if an inheritance rule 642 from "ipv4" CIDR blocks to included "ipv4" CIDR blocks, is specified. 644 4.4.3. Property Value Unicity 646 The inheritance rules must ensure that an entity belonging to a 647 hierarchical set of entities inherits no more than one property 648 value, for the sake of consistency. Indeed, a property map may 649 define a property on a hierarchy of entity sets that inherit property 650 values from one or more supersets (located at upper levels). On the 651 other hand, a property value, defined on a subset (located at a lower 652 level) may be different from the value defined on a superset. In 653 such a case, subsets may potentially end up with different property 654 values. This may be the case for address blocs with increasing 655 prefix length, on which a property value gets increasingly accurate 656 and thus may differ. For example, a fictitious property such as 657 "geo-location" or "average transfer volume" may be defined at a 658 progressively finer grain for lower level subsets of entities, 659 defined with progressively longer CIDR prefixes. It seems more 660 interesting to have property values of progressively higher accuracy. 661 A unicity rule, applied to the entity domain type must specify an 662 arbitration rule among the different property values for an entity. 663 An example illustrating the need for such rules is provided in 664 Section 6.1.3. 666 4.5. Supported Properties on Entity Domains in Property Map 667 Capabilities 669 A property type is not necessarily applicable to any domain type, or 670 an ALTO Server may choose not to provide a property on all applicable 671 domains. For instance, a property type reflecting link bandwidth is 672 likely not defined on entities of a domain of type "countrycode". 673 Therefore, an ALTO server providing Property Maps needs to specify 674 the properties that can be queried on the different entity domains it 675 supports. 677 This document explains how the Information Resources Directory (IRD) 678 capabilities of a Property Map resource unambiguously expose what 679 properties a Client can query on a given entity domain: 681 * a field named "mappings" lists the names of the entity domains 682 supported by the Property Map, 684 * for each listed entity domain, a list of the names of the 685 applicable properties is provided. 687 An example is provided in Section 10.3. The "mappings" field 688 associates entity domains and properties that can be resource- 689 agnostic or resource-specific. This allows a Client to formulate 690 compact and unambiguous entity property queries, possibly relating to 691 one or more information resources. In particular: 693 * it prevents a Client from querying a property on entity domains on 694 which it is not defined, 696 * it allows a Client to query, for an entity E, values for a 697 property P that are defined in several information resources, 699 * it allows a Client to query a property P on entities that are 700 defined in several information resources. 702 Further details are provided in Section 7.4. 704 4.6. Defining Information Resource for Resource-Specific Entity Domains 706 A Client willing to query properties on entities belonging to a 707 domain needs to know how to retrieve these entities. To this end, 708 the Client can look up the "mappings" field exposed in IRD 709 capabilities of a property map, see Section 4.5. This field, in its 710 keys, exposes all the entity domains supported by the property map. 711 The syntax of the entity domain identifier specified in Section 5.1.2 712 allows the client to infer whether the entity domain is resource- 713 specific or not. The Client can extract, if applicable, the 714 identifier of the specific resource, query the resource and retrieve 715 the entities. For example: 717 * an entity domain named "netmap1.ipv4" includes the IPv4 addresses 718 that appear in the "ipv4" field of the endpoint address group of 719 each PID in the network map "netmap1", and that have no meaning 720 outside "netmap1" because, for instance, these are local addresses 721 not reachable outside some private network, 723 * an entity domain named "netmap1.pid" includes the PIDs listed in 724 network map "netmap1". 726 * an entity domain named "ipv4" is resource-agnostic and covers all 727 the reachable IPv4 addresses. 729 Besides, it is not possible to prevent a Server from mistakenly 730 exposing inappropriate associations of information resources and 731 entity domain types. To prevent failures due to invalid queries, it 732 is necessary to inform the Client about which associations are 733 allowed. An informed Client will just ignore inappropriate 734 associations exposed by a Server and avoid error-prone transactions 735 with the Server. 737 For example, the association "costmap3.pid" is not allowed for the 738 following reason: although a cost map exposes PID identifiers, it 739 does not define the set of addresses included in this PID. Neither 740 does a cost map list all the PIDs on which properties can be queried, 741 because a cost map only exposes PID pairs on which a queried cost 742 type is defined. Therefore, the resource "costmap3" does not enable 743 a Client to extract information on the existing PID entities or on 744 the addresses they contain. 746 Instead, the cost map uses a network map, where all the PIDs used in 747 a cost map are defined together with the addresses contained by the 748 PIDs. This network map is qualified in this document as the Defining 749 Information Resource for the entity domain of type "pid" and this 750 concept is explained in Section 4.6.1. 752 4.6.1. Defining Information Resource and its Media Type 754 For the reasons explained in Section 4.6, this document introduces 755 the concept of "Defining Information Resource and its Media Type". 757 A defining information resource for an entity domain D is the 758 information resource where entities of D are defined. That is, all 759 the information on the entities of D can be retrieved in this 760 resource. A defining information resource is defined for resource- 761 specific entity domains. It does not exist for entity domains that 762 are not resource-specific such as "ipv4" or "ipv6". Neither does it 763 exist for entity domains that are covering entity identifiers already 764 defined in other standardization documents, at it is the case for 765 country code identifiers standardized in [ISO3166-1] or AS numbers 766 allocated by the IANA. This is useful for entity domain types that 767 are by essence domain-specific, such as the "pid" domain type. It is 768 also useful for resource-specific entity domains constructed from 769 resource-agnostic domain types, such as network map specific domains 770 of local IPv4 addresses. 772 The defining information resource of a resource-specific entity 773 domain D, when it exists, is unique and has the following 774 specificities: 776 * it has an entry in the IRD, 778 * it defines the entities of D, 780 * it does not use another information resource that defines these 781 entities, 783 * it defines and exposes entity identifiers that are all persistent, 785 * its media type is equal to the one that is specified for the 786 defining information resource of an entity domain type. 788 A fundamental characteristic of a defining information resource is 789 its media type. There is a unique association between an entity 790 domain type and the media type of its defining information resource. 791 When an entity domain type allows associations with defining 792 information resources, the media type of the potential defining 793 information resource MUST be specified: 795 * in the document that defines this entity domain type, 797 * in the IANA ALTO Entity Domain Type Registry and related 798 information. 800 When the Client wants to use a resource-specific entity domain, it 801 needs to be cognizant of the media-type of its defining information 802 resource. If the Server exposes a resource-specific entity domain 803 with a non-compliant media type for the defining resource, the Client 804 MUST ignore the entities from that entity domain to avoid errors. 806 4.6.2. Examples of Defining Information Resources and Their Media Type 808 Here are examples of defining information resource types and their 809 media types associated to different entity domain types: 811 * For entity domain type "pid": the media type of the specific 812 resource is "application/alto-networkmap+json", because PIDs are 813 defined in network map resources. 815 * For entity domain types "ipv4" and "ipv6": the media type of the 816 specific resource is "application/alto-networkmap+json", because 817 IPv4 and IPv6 addresses covered by the Server are defined in 818 network map resources. 820 * For entities of domain type "ane": [I-D.ietf-alto-path-vector] 821 defines entities named "ANE", where ANE stands for Abstracted 822 Network Element, and the entity domain type "ane". An ANE may 823 have a persistent identifier, say, "entity-4", that is provided by 824 the Server as a value of the "persistent-entity-id" property of 825 this ANE. Further properties may then be queried on an ANE by 826 using its persistent entity ID. These properties are available 827 from a persistent property map, that defines properties on a 828 specific "ane" domain. Together with the persistent identifier, 829 the Server also provides the property map resource identifier 830 where the "ane" domain containing "entity-4" is defined. The 831 definition of the "ane" entity domain containing "entity-4" is 832 thus specific to the property map. Therefore, for entities of 833 domain type "ane" that have a persistent identifier, the media 834 type of the defining information resource is "application/alto- 835 propmap+json". 837 * Last, the entity domain types "asn" and "countrycode" defined in 838 [I-D.ietf-alto-cdni-request-routing-alto] do not have a defining 839 information resource. Indeed, the entity identifiers in these two 840 entity domain types are already standardized in documents that the 841 Client can use. 843 4.7. Defining Information Resource for Resource-Specific Property 844 Values 846 As explained in Section 4.3, a property type may take values that are 847 resource-specific. This is the case for property type "pid", whose 848 values are by essence defined relative to a specific network map. 849 That is, the PID value returned for an IPv4 address is specific to 850 the network map defining this PID and may differ from one network map 851 to another one. 853 Another example is provided in 854 [I-D.ietf-alto-cdni-request-routing-alto] that defines property type 855 "cdni-capabilities". The value of this property is specific to a 856 CDNI advertisement resource, that provides a list of CDNI 857 capabilities. The property is provided for entity domain types 858 "ipv4", "ipv6", "asn" and "countrycode". A CDNI Advertisement 859 resource does however not define PID values for IPv4 addresses while 860 a network map does not define CDNI capabilities for IPv4 addresses. 862 Similar to resource-specific entity domains, the Client needs to be 863 cognizant of appropriate associations of information resource and 864 property types. Therefore, when specifying and registering a 865 property type whose values are resource-specific, the media type of 866 its defining information resource needs to be specified. For 867 example: 869 * The media type of the defining information resource for property 870 type "pid" is "application/alto-networkmap+json". 872 * The media type of the defining information resource for property 873 type "cdni-capabilities" defined in 874 [I-D.ietf-alto-cdni-request-routing-alto] is "application/alto- 875 cdni+json". 877 5. Protocol Specification: Basic Data Types 879 5.1. Entity Domain 881 5.1.1. Entity Domain Type 883 An entity domain has a type, which is uniquely identified by a string 884 that MUST be no more than 64 characters, and MUST NOT contain 885 characters other than US-ASCII alphanumeric characters 886 (U+0030-U+0039, U+0041-U+005A, and U+0061-U+007A), the hyphen ('-', 887 U+002D), the colon (':', U+003A), or the low line ('_', U+005F). 889 The usage of colon (':', U+003A) MUST obey the rules below: 891 * The colon (':', U+003A) character MUST NOT appear more than once, 893 * The colon character MUST NOT be used unless within the string 894 "priv:", 896 * The string "priv:" MUST NOT be used unless it starts the string 897 that identifies an entity domain type, 899 * For an entity domain type identifier with the "priv:" prefix , an 900 additional string (e.g., company identifier or random string) MUST 901 follow "priv:", to reduce potential collisions. 903 For example, the strings "ipv4", "ipv6", "pid" and "priv:example- 904 test-edt", are valid entity domain types. "ipv4.anycast", "pid.local" 905 and "priv:" are invalid. 907 Although "_", "-", "__--" are valid entity domain types, it is 908 desirable to add characters such as alphanumeric ones, for better 909 intelligibility. 911 The type EntityDomainType is used in this document to denote a JSON 912 string meeting the preceding requirements. 914 An entity domain type defines the semantics of a type of entity, 915 independently of any specifying resource. All entity domain types 916 that are not prefixed with "priv:" MUST be registered with the IANA, 917 in the "ALTO Entity Domain Type Registry", defined in Section 12.3, 918 following the procedure specified in Section 12.3.2 of this document. 919 The format of the entity identifiers (see Section 5.1.3) in that 920 entity domain type, as well as any hierarchical or inheritance rules 921 (see Section 5.1.4) for those entities, MUST be specified in the IANA 922 registration. 924 Entity domain type identifiers prefixed with "priv:" are reserved for 925 Private Use (see [RFC8126]) without a need to register with IANA. 926 The definition of a private use entity domain type MUST apply the 927 same way in all property maps of an IRD where it is present. 929 5.1.2. Entity Domain Name 931 As discussed in Section 3.2, an entity domain is characterized by a 932 type and identified by a name. 934 This document distinguishes three categories of entity domains: 935 resource-specific entity domains, resource-agnostic entity domains 936 and self-defined entity domains. Their entity domain names are 937 constructed as specified in the following sub-sections. 939 Each entity domain is identified by a unique entity domain name. 940 Borrowing the symbol "::=" from the Backus-Naur Form notation 941 [RFC5511], the format of an entity domain name is defined as follows: 943 EntityDomainName ::= [ [ ResourceID ] '.' ] EntityDomainType 945 The presence and construction of the component 946 "[ [ ResourceID ] '.' ]" 948 depends on the category of entity domain. 950 Note that the '.' separator is not allowed in EntityDomainType and 951 hence there is no ambiguity on whether an entity domain name refers 952 to a resource-agnostic entity domain or a resource-specific entity 953 domain. 955 Note also that Section 10.1 of [RFC7285] specifies the format of the 956 PID name which is the format of the resource ID including the 957 following specification: "the '.' separator is reserved for future 958 use and MUST NOT be used unless specifically indicated in this 959 document, or an extension document". The present extension keeps the 960 format specification of [RFC7285], hence the '.' separator MUST NOT 961 be used in an information resource ID. 963 5.1.2.1. Resource-specific Entity Domain 965 A resource-specific entity domain is identified by an entity domain 966 name constructed as follows. It MUST start with a resource ID using 967 the ResourceID type defined in Section 10.2 of [RFC7285], followed by 968 the '.' separator (U+002E), followed by a string of the type 969 EntityDomainType specified in Section 5.1.1. 971 For example, if an ALTO server provides two network maps "netmap-1" 972 and "netmap-2", these network maps can define two resource-specific 973 domains of type "pid", respectively identified by "netmap-1.pid" and 974 "netmap-2.pid". 976 5.1.2.2. Resource-agnostic Entity Domain 978 A resource-agnostic entity domain contains entities that are 979 identified independently of any information resource. The identifier 980 of a resource-agnostic entity domain is simply the identifier of its 981 entity domain type. For example, "ipv4" and "ipv6" identify the two 982 resource-agnostic Internet address entity domains defined in 983 Section 6.1. 985 5.1.2.3. Self-defined Entity Domain 987 A property map can define properties on entities that are specific to 988 a unique information resource, which is the property map itself. 989 This may be the case when an ALTO Server provides properties on a set 990 of entities that are defined only in this property map, are not 991 relevant to another one and do not depend on another specific 992 resource. 994 For example: a specialised property map may define a domain of type 995 "ane", defined in [I-D.ietf-alto-path-vector], that contains a set of 996 ANEs representing data centers, that each have a persistent 997 identifier and are relevant only to this property map. 999 In this case, the entity domain is qualified as "self-defined". The 1000 identifier of a self-defined entity domain can be of the format: 1002 EntityDomainName ::= '.' EntityDomainType 1004 where '.' indicates that the entity domain only exists within the 1005 property map resource using it. 1007 A self-defined entity domain can be viewed as a particular case of 1008 resource-specific entity domain, where the specific resource is the 1009 current resource that uses this entity domain. In that case, for the 1010 sake of simplification, the component "ResourceID" MUST be omitted in 1011 its entity domain name. 1013 5.1.3. Entity Identifier 1015 Entities in an entity domain are identified by entity identifiers 1016 (EntityID) of the following format: 1018 EntityID ::= EntityDomainName ':' DomainTypeSpecificEntityID 1020 Examples from the Internet address entity domains include individual 1021 IP addresses such as "net1.ipv4:192.0.2.14" and 1022 "net1.ipv6:2001:db8::12", as well as address blocks such as 1023 "net1.ipv4:192.0.2.0/26" and "net1.ipv6:2001:db8::/48". 1025 The format of the second part of an entity identifier, 1026 DomainTypeSpecificEntityID, depends on the entity domain type, and 1027 MUST be specified when defining a new entity domain type and 1028 registering it with the IANA. Identifiers MAY be hierarchical, and 1029 properties MAY be inherited based on that hierarchy. The rules 1030 defining any hierarchy or inheritance MUST be defined when the entity 1031 domain type is registered. 1033 The type EntityID is used in this document to denote a JSON string 1034 representing an entity identifier in this format. 1036 Note that two entity identifiers with different valid textual 1037 representations may refer to the same entity, for a given entity 1038 domain. For example, the strings "net1.ipv6:2001:db8::1" and 1039 "net1.ipv6:2001:db8:0:0:0:0:0:1" refer to the same entity in the 1040 "ipv6" entity domain. Such equivalences should be established by the 1041 object represented by DomainTypeSpecificEntityID, for example, 1042 [RFC5952] establishes equivalence for IPv6 addresses, while [RFC4632] 1043 does so for IPv4 addresses. 1045 5.1.4. Hierarchy and Inheritance 1047 To simplify the representation, some types of entity domains allow 1048 the ALTO Client and Server to use a hierarchical entity identifier 1049 format to represent a block of individual entities. For instance, in 1050 an IPv4 domain "net1.ipv4", a CIDR "net1.ipv4:192.0.2.0/26" covers 64 1051 individual IPv4 entities. In this case, the corresponding property 1052 inheritance rule MUST be defined for the entity domain type. The 1053 hierarchy and inheritance rule MUST have no ambiguity. 1055 5.2. Entity Property 1057 Each entity property has a type to indicate the encoding and the 1058 semantics of the value of this entity property, and has a name to 1059 identify it. 1061 5.2.1. Entity Property Type 1063 The type EntityPropertyType is used in this document to indicate a 1064 string denoting an entity property type. The string MUST be no more 1065 than 32 characters, and it MUST NOT contain characters other than US- 1066 ASCII alphanumeric characters (U+0030-U+0039, U+0041-U+005A, and 1067 U+0061-U+007A), the hyphen ('-', U+002D), the colon (':', U+003A), or 1068 the low line ('_', U+005F). Note that the '.' separator is not 1069 allowed because it is reserved to separate an entity property type 1070 and an information resource identifier when an entity property is 1071 resource-specific. 1073 While, in Section 5.1.1, character ":" is allowed with restrictions 1074 on entity domain identifiers, it can be used without restrictions on 1075 entity property type identifiers. This relates to [RFC7285], where a 1076 Server can define properties on endpoints "ipv4" and "ipv6". In the 1077 present extension, there is a mapping of ALTO entity domain types 1078 "ipv4" and "ipv6", to ALTO address types "ipv4" and "ipv6". 1079 Properties defined on "ipv4" and "ipv6" endpoints should be re-usable 1080 on "ipv4" and "ipv6" entities. Forbidding the usage of ":" in a non- 1081 private entity property type identifier would not allow to use 1082 properties previously defined on "ipv4" and "ipv6" endpoints because 1083 their identifiers would be invalid. 1085 Although ":" or "_::-" are valid entity domain types, it is desirable 1086 to add characters such as alphanumeric ones, for better 1087 intelligibility. 1089 Identifiers prefixed with "priv:" are reserved for Private Use 1090 [RFC8126] without a need to register with IANA. All other 1091 identifiers for entity property types MUST be registered in the "ALTO 1092 Entity Property Type Registry", defined in Section 12.4. The 1093 intended semantics of the entity property type MUST be specified in 1094 the IANA registration. 1096 For an entity property identifier with the "priv:" prefix, an 1097 additional string (e.g., company identifier or random string) MUST 1098 follow the prefix to reduce potential collisions, that is, the string 1099 "priv:" alone is not a valid entity property identifier. The 1100 definition of a private use entity property type must apply the same 1101 way in all property maps of an IRD where it is present. 1103 To distinguish from the endpoint property type, the entity property 1104 type has the following characteristics: 1106 * Some entity property types are applicable to entities in 1107 particular entity domain types only. For example, the property 1108 type "pid" is applicable to entities in the entity domain types 1109 "ipv4" or "ipv6" while is not applicable to entities in an entity 1110 domain of type "pid". 1112 * The intended semantics of the value of an entity property may also 1113 depend on the entity domain type. For example, suppose that a 1114 property named "geo-location" is defined as the coordinates of a 1115 point, encoded as: "latitude longitude [altitude]." When applied 1116 to an entity that represents a specific host computer, identified 1117 by an address in an entity domain of type "ipv4" or "ipv6", the 1118 "geo-location" property would define the host's location. 1119 However, when applied to an entity in a "pid" domain type, the 1120 property would indicate a location representative of all hosts in 1121 this "pid" entity. 1123 5.2.2. Entity Property Name 1125 Each entity property is identified by an entity property name, which 1126 is a string of the following format: 1128 EntityPropertyName ::= [ [ ResourceID ] '.' ] EntityPropertyType 1129 Similar to the endpoint property type defined in Section 10.8 of 1130 [RFC7285], each entity property may be defined by either the property 1131 map itself (self-defined) or some other specific information resource 1132 (resource-specific). 1134 The entity property name of a resource-specific entity property 1135 starts with a string of the type ResourceID defined in [RFC7285], 1136 followed by the '.' separator (U+002E) and a EntityDomainType typed 1137 string. For example, the "pid" properties of an "ipv4" entity 1138 defined by two different maps "net-map-1" and "net-map-2" are 1139 identified by "net-map-1.pid" and "net-map-2.pid" respectively. 1141 The specific information resource of an entity property may be the 1142 current information resource itself, that is, the property map 1143 defining the property. In that case, the ResourceID in the property 1144 name SHOULD be omitted. For example, the property name ".asn" 1145 applied to an entity identified by its IPv4 address, indicates the AS 1146 number of the AS that "owns" the entity, where the returned AS number 1147 is defined by the property map itself. 1149 5.2.3. Format for Entity Property Value 1151 Section 11.4.1.6 of [RFC7285] specifies that an implementation of the 1152 Endpoint Property Service specified in [RFC7285] SHOULD assume that 1153 the property value is a JSONString and fail to parse if it is not. 1154 This document extends the format of a property value by allowing it 1155 to be a JSONValue instead of just a JSONString. 1157 6. Entity Domain Types Defined in this Document 1159 The definition of each entity domain type MUST include (1) the entity 1160 domain type name and (2) domain-specific entity identifiers, and MAY 1161 include (3) hierarchy and inheritance semantics optionally. This 1162 document defines three initial entity domain types as follows. 1164 6.1. Internet Address Domain Types 1166 The document defines two entity domain types (IPv4 and IPv6) for 1167 Internet addresses. Both types are resource-agnostic entity domain 1168 types and hence define corresponding resource-agnostic entity domains 1169 as well. Since the two domains use the same hierarchy and 1170 inheritance semantics, we define the semantics together, instead of 1171 repeating for each. 1173 6.1.1. Entity Domain Type: IPv4 1174 6.1.1.1. Entity Domain Type Identifier 1176 The identifier for this Entity Domain Type is "ipv4". 1178 6.1.1.2. Domain-Specific Entity Identifiers 1180 Individual addresses are strings as specified by the IPv4address rule 1181 in Section 3.2.2 of [RFC3986]; Hierarchical addresses are strings as 1182 specified by the prefix notation in Section 3.1 of [RFC4632]. To 1183 define properties, an individual Internet address and the 1184 corresponding full-length prefix are considered aliases for the same 1185 entity on which to define properties. Thus, "ipv4:192.0.2.0" and 1186 "ipv4:192.0.2.0/32" are equivalent. 1188 6.1.2. Entity Domain Type: IPv6 1190 6.1.2.1. Entity Domain Type Identifier 1192 The identifier for this Entity Domain Type is "ipv6". 1194 6.1.2.2. Domain-Specific Entity Identifiers 1196 Individual addresses are strings as specified by Section 4 of 1197 [RFC5952]; Hierarchical addresses are strings as specified by IPv6 1198 address prefixes notation in Section 2.3 of [RFC4291]. To define 1199 properties, an individual Internet address and the corresponding 1200 128-bit prefix are considered aliases for the same entity. That is, 1201 "ipv6:2001:db8::1" and "ipv6:2001:db8::1/128" are equivalent, and 1202 have the same set of properties. 1204 6.1.3. Hierarchy and Inheritance of Internet Address Domains 1206 Both Internet address domains allow property values to be inherited. 1207 Specifically, if a property P is not defined for a specific Internet 1208 address I, but P is defined for a hierarchical Internet address C 1209 which represents a set of addresses containing I, then the address I 1210 inherits the value of P defined for the hierarchical address C. If 1211 more than one such hierarchical addresses define a value for P, I 1212 inherits the value of P in the hierarchical address with the longest 1213 prefix. Note that this longest prefix rule ensures no multiple value 1214 inheritances, and hence no ambiguity. 1216 Hierarchical addresses can also inherit properties: if a property P 1217 is not defined for the hierarchical address C, but is defined for a 1218 set of hierarchical addresses, where each address C' in the set 1219 contains all IP addresses in C, and C' has a shorter prefix length 1220 than C, then C MUST inherit the property P from the C' having the 1221 longest prefix length. 1223 As an example, suppose that a server defines a property P for the 1224 following entities: 1226 ipv4:192.0.2.0/26: P=v1 1227 ipv4:192.0.2.0/28: P=v2 1228 ipv4:192.0.2.0/30: P=v3 1229 ipv4:192.0.2.0: P=v4 1231 Figure 1: Defined Property Values. 1233 Then the following entities have the indicated values: 1235 ipv4:192.0.2.0: P=v4 1236 ipv4:192.0.2.1: P=v3 1237 ipv4:192.0.2.16: P=v1 1238 ipv4:192.0.2.32: P=v1 1239 ipv4:192.0.2.64: (not defined) 1240 ipv4:192.0.2.0/32: P=v4 1241 ipv4:192.0.2.0/31: P=v3 1242 ipv4:192.0.2.0/29: P=v2 1243 ipv4:192.0.2.0/27: P=v1 1244 ipv4:192.0.2.0/25: (not defined) 1246 Figure 2: Inherited Property Values. 1248 An ALTO server MAY explicitly indicate a property as not having a 1249 value for a particular entity. That is, a server MAY say that 1250 property P of entity X is "defined to have no value", instead of 1251 "undefined". To indicate "no value", a server MAY perform different 1252 behaviors: 1254 * If entity X would inherit a value for property P, and if the ALTO 1255 server decides to say that "X has no value for P", then the ALTO 1256 server MUST return a "null" value for that property on X. In this 1257 case, the ALTO client MUST recognize the JSON "null" value as "no 1258 value" and interpret it as "do not apply the inheritance rules for 1259 this property on X". 1261 * If the entity would not inherit a value, then the ALTO server MAY 1262 return "null" or just omit the property. In this case, the ALTO 1263 client cannot infer the value for this property of this entity 1264 from the Inheritance rules. So, the client MUST interpret that 1265 this property has no value. 1267 If the ALTO server does not define any properties for an entity, then 1268 the server MAY omit that entity from the response. 1270 6.1.4. Defining Information Resource Media Type for domain types IPv4 1271 and IPv6 1273 Entity domain types "ipv4" and "ipv6" both allow to define resource 1274 specific entity domains. When resource specific domains are defined 1275 with entities of domain type "ipv4" or "ipv6", the defining 1276 information resource for an entity domain of type "ipv4" or "ipv6" 1277 MUST be a Network Map. The media type of a defining information 1278 resource is therefore: 1280 application/alto-networkmap+json 1282 6.2. Entity Domain Type: PID 1284 The PID entity domain associates property values with the PIDs in a 1285 network map. Accordingly, this entity domain always depends on a 1286 network map. 1288 6.2.1. Entity Domain Type Identifier 1290 The identifier for this Entity Domain Type is "pid" 1292 6.2.2. Domain-Specific Entity Identifiers 1294 The entity identifiers are the PID names of the associated network 1295 map. 1297 6.2.3. Hierarchy and Inheritance 1299 There are no hierarchy or inheritance for properties associated with 1300 PIDs. 1302 6.2.4. Defining Information Resource Media Type for Domain Type PID 1304 The entity domain type "pid" allows to define resource specific 1305 entity domains. When resource specific domains are defined with 1306 entities of domain type "pid", the defining information resource for 1307 entity domain type "pid" MUST be a Network Map. The media type of a 1308 defining information resource is therefore: 1310 application/alto-networkmap+json 1312 6.2.5. Relationship To Internet Addresses Domains 1314 The PID domain and the Internet address domains are completely 1315 independent; the properties associated with a PID have no relation to 1316 the properties associated with the prefixes or endpoint addresses in 1317 that PID. An ALTO server MAY choose to assign all the properties of 1318 a PID to the prefixes in that PID or only some of these properties. 1320 For example, suppose "PID1" consists of the prefix 1321 "ipv4:192.0.2.0/24", and has the property "P" with value "v1". The 1322 Internet address entities "ipv4:192.0.2.0" and "ipv4:192.0.2.0/24" in 1323 the IPv4 domain MAY have a value for the property "P", and if they 1324 do, it is not necessarily "v1". 1326 6.3. Internet Address Properties vs. PID Properties 1328 Because the Internet address and PID domains relate to completely 1329 distinct domain types, the question may arise as to which entity 1330 domain type is the best for a property. In general, the Internet 1331 address domain types are RECOMMENDED for properties that are closely 1332 related to the Internet address, or are associated with, and 1333 inherited through, hierarchical addresses. 1335 The PID domain type is RECOMMENDED for properties that arise from the 1336 definition of the PID, rather than from the Internet address prefixes 1337 in that PID. 1339 For example, because Internet addresses are allocated to service 1340 providers by blocks of prefixes, an "ISP" property would be best 1341 associated with Internet address domain types. On the other hand, a 1342 property that explains why a PID was formed, or how it relates to a 1343 provider's network, would best be associated with the PID domain 1344 type. 1346 7. Property Map 1348 A property map returns the properties defined for all entities in one 1349 or more domains, e.g., the "location" property of entities in "pid" 1350 domain, and the "ASN" property of entities in "ipv4" and "ipv6" 1351 domains. Section 10.4 gives an example of a property map request and 1352 its response. 1354 Downloading the whole property map is a way for the Client to obtain 1355 the Entity IDs that can be used as input for a Filtered Property Map 1356 request. However, a whole property map may be too voluminous for a 1357 Client that only wants the list of applicable Entity IDs. How to 1358 obtain the list of entities of a filtered property map in a 1359 simplified response is specified in Section 8. 1361 7.1. Media Type 1363 The media type of a property map is "application/alto-propmap+json". 1365 7.2. HTTP Method 1367 The property map is requested using the HTTP GET method. 1369 7.3. Accept Input Parameters 1371 A Property Map has no Accept Input parameters. 1373 7.4. Capabilities 1375 The capabilities are defined by an object of type 1376 PropertyMapCapabilities: 1378 object { 1379 EntityPropertyMapping mappings; 1380 } PropertyMapCapabilities; 1382 object-map { 1383 EntityDomainName -> EntityPropertyName<1..*>; 1384 } EntityPropertyMapping 1386 with fields: 1388 mappings: A JSON object whose keys are names of entity domains and 1389 values are the supported entity properties of the corresponding 1390 entity domains. 1392 7.5. Uses 1394 The "uses" field of a property map resource in an IRD entry specifies 1395 the resources in this same IRD on which this property map directly 1396 depends. It is an array of resource ID(s). This array identifies 1397 the defining information resources associated with the resource- 1398 specific entity domains and properties that are indicated in this 1399 resource. 1401 7.6. Response 1403 If the entity domains in this property map depend on other resources, 1404 the "dependent-vtags" field in the "meta" field of the response MUST 1405 be an array that includes the version tags of those resources, and 1406 the order MUST be consistent with the "uses" field of this property 1407 map resource. The data component of a property map response is named 1408 "property-map", which is a JSON object of type PropertyMapData, 1409 where: 1411 object { 1412 PropertyMapData property-map; 1413 } InfoResourceProperties : ResponseEntityBase; 1415 object-map { 1416 EntityID -> EntityProps; 1417 } PropertyMapData; 1419 object { 1420 EntityPropertyName -> JSONValue; 1421 } EntityProps; 1423 The ResponseEntityBase type is defined in Section 8.4 of [RFC7285]. 1425 Specifically, a PropertyMapData object has one member for each entity 1426 in the property map. The entity's properties are encoded in the 1427 corresponding EntityProps object. EntityProps encodes one name/value 1428 pair for each property, where the property names are encoded as 1429 strings of type PropertyName. A protocol implementation SHOULD 1430 assume that the property value is either a JSONString or a JSON 1431 "null" value, and fail to parse if it is not, unless the 1432 implementation is using an extension to this document that indicates 1433 when and how property values of other data types are signaled. 1435 For each entity in the property map: 1437 * If the entity is in a resource-specific entity domain, the ALTO 1438 server MUST only return self-defined properties and resource- 1439 specific properties which depend on the same resource as the 1440 entity does. The ALTO client MUST ignore any resource-specific 1441 property for this entity if the mapping between this resource- 1442 specific property and this entity is not indicated, in the IRD, in 1443 the "mappings" capability of the property map resource. 1445 * If the entity identifier is resource-agnostic, the ALTO server 1446 SHOULD return the self-defined properties and all the resource- 1447 specific properties that are defined in the property defining 1448 information resources indicated, in the IRD, in the "mappings" 1449 capability of the property map resource, unless property values 1450 can be omitted upon some inheritance rules. 1452 The ALTO server MAY omit property values that are inherited rather 1453 than explicitly defined, in order to achieve more compact encoding. 1454 As a consequence, the ALTO Client MUST NOT assume inherited property 1455 values will all be present. If the Client needs inherited values, it 1456 MUST use the entity domain's inheritance rules to deduce those 1457 values. 1459 8. Filtered Property Map 1461 A filtered property map returns the values of a set of properties for 1462 a set of entities selected by the client. 1464 Section 10.5, Section 10.6, Section 10.7 and Section 10.8 give 1465 examples of filtered property map requests and responses. 1467 While the IRD lists all the names of the supported properties, it 1468 only lists the names of the supported entity domains and not the 1469 entity IDs. A client, sometimes, may only want to know what entity 1470 IDs it can provide as input to a filtered property map request but 1471 wants to avoid the burden of downloading the full property map. Or 1472 it may want to check whether some given entity IDs are eligible for a 1473 query. To support such a case, the filtered property map supports a 1474 light weight response, with empty property values. 1476 8.1. Media Type 1478 The media type of a property map resource is "application/alto- 1479 propmap+json". 1481 8.2. HTTP Method 1483 The filtered property map is requested using the HTTP POST method. 1485 8.3. Accept Input Parameters 1487 The input parameters for a filtered property map request are supplied 1488 in the entity body of the POST request. This document specifies the 1489 input parameters with a data format indicated by the media type 1490 "application/alto-propmapparams+json", which is a JSON object of type 1491 ReqFilteredPropertyMap. ReqFilteredPropertyMap is designed to 1492 support the following cases of client requests: 1494 * The client wants the value of a selected set of properties on a 1495 selected set of entities, 1497 * The client wants all properties values on all the entities, 1498 * The client wants all entities on which a property is defined but 1499 is not interested in their property values, 1501 * The Client wants to cross-check whether some entity IDs are 1502 present in the Filtered Property Map but is not interested in 1503 their property values. 1505 The third case is equivalent to querying the whole unfiltered 1506 property map, which can also be achieved with a GET request. Some 1507 Clients however, may prefer to systematically make filtered property 1508 map queries, where filtering parameters may sometimes be empty. 1510 The JSON object ReqFilteredPropertyMap is specified as follows: 1512 object { 1513 EntityID entities<0..*>; 1514 [EntityPropertyName properties<0..*>;] 1515 } ReqFilteredPropertyMap; 1517 with fields: 1519 entities: List of entity identifiers for which the specified 1520 properties are to be returned. If the list is empty, the ALTO 1521 Server MUST interpret the list as if it contained a list of all 1522 entities currently defined in the filtered property map. The 1523 domain of each entity MUST be included in the list of entity 1524 domains in this resource's "capabilities" field (see Section 8.4). 1525 The ALTO server MUST interpret entries appearing multiple times as 1526 if they appeared only once. 1528 properties: List of properties to be returned for each entity. If 1529 the list is empty, the ALTO Sever MUST interpret the list as if it 1530 contained a list of all properties currently defined in the 1531 filtered property map. Each specified property MUST be included 1532 in the list of properties in this resource's "capabilities" field 1533 (see Section 8.4). The ALTO server MUST interpret entries 1534 appearing multiple times as if they appeared only once. This 1535 field is optional. If it is absent, the Server returns a property 1536 value equal to the literal string "{}" for all the entity IDs of 1537 the "entities" field on which at least one property is defined. 1539 Note that the field "properties" is optional. When in addition, the 1540 "entities" field is an empty list, it corresponds to a query for all 1541 applicable entity IDs of the filtered property map, with no current 1542 interest on any particular property. When the "entities" field is 1543 not empty, it allows the Client to check whether the listed entity 1544 IDs can be used as input to a filtered property map query. 1546 8.4. Capabilities 1548 The capabilities are defined by an object of type 1549 PropertyMapCapabilities, as defined in Section 7.4. 1551 8.5. Uses 1553 Same to the "uses" field of the Property Map resource (see 1554 Section 7.5). 1556 8.6. Filtered Property Map Response 1558 The response MUST indicate an error, using ALTO protocol error 1559 handling, as defined in Section 8.5 of [RFC7285], if the request is 1560 invalid. 1562 Specifically, a filtered property map request can be invalid in the 1563 following cases: 1565 * The input field "entities" is absent from the Client request. In 1566 this case, the Server MUST return an "E_MISSING_FIELD" error as 1567 defined in Section 8.5.2 of [RFC7285]. 1569 * An entity identifier in the "entities" field of the request is 1570 invalid. This occurs when: 1572 - The domain of this entity is not defined in the "entity- 1573 domains" capability of this resource in the IRD, 1575 - The entity identifier is not valid for the entity domain. 1577 A valid entity identifier does never generate an error, even if 1578 the filtered property map resource does not define any properties 1579 for it. 1581 If an entity identifier in the "entities" field of the request is 1582 invalid, the ALTO server MUST return an "E_INVALID_FIELD_VALUE" 1583 error defined in Section 8.5.2 of [RFC7285], and the "value" field 1584 of the error message SHOULD indicate the provided invalid entity 1585 identifier. 1587 * A property name in the "properties" field of the request is 1588 invalid. This occurs when this property name is not defined in 1589 the "properties" capability of this resource in the IRD. 1591 When a filtered property map resource does not define a value for 1592 a property requested on a particular entity, it is not an error. 1593 In this case, the ALTO server MUST omit that property from the 1594 response for that endpoint. 1596 If a property name in "properties" in the request is invalid, the 1597 ALTO server MUST return an "E_INVALID_FIELD_VALUE" error defined 1598 in Section 8.5.2 of [RFC7285]. The "value" field of the error 1599 message SHOULD indicate the property name. 1601 Some identifiers can be interpreted as both an entity name and a 1602 property name, as it is the case for "pid" if it would be erroneously 1603 used alone. In such a case, the Server SHOULD follow Section 8.5.2 1604 of [RFC7285], that says: "For an E_INVALID_FIELD_VALUE error, the 1605 server may include an optional field named "field" in the "meta" 1606 field of the response, to indicate the field that contains the wrong 1607 value." 1609 The response to a valid request is the same as for the Property Map 1610 (see Section 7.6), except that: 1612 * If the requested entities include entities with a resource- 1613 agnostic identifier, the "dependent-vtags" field in its "meta" 1614 field MUST include version tags of all dependent resources 1615 appearing in the "uses" field. 1617 * If the requested entities only include entities in resource- 1618 specific entity domains, the "dependent-vtags" field in its "meta" 1619 field MUST include the version tags of the resources on which the 1620 requested resource-specific entity domains and the requested 1621 resource-specific properties are dependent on. 1623 * The response only includes the entities and properties requested 1624 by the client. If an entity in the request is identified by a 1625 hierarchical identifier (e.g., a "ipv4" or "ipv6" prefix), the 1626 response MUST return all properties that are present on any 1627 address covered by the prefix, even though some of those 1628 properties may not be present on all addresses covered by the 1629 prefix. 1631 * When the input member "properties" is absent from the client 1632 request, the Server returns a property map containing all the 1633 requested entity identifiers on which one or more properties are 1634 defined. For all the entities of the returned map, the returned 1635 property value is equal to '{}'. 1637 The filtered property map response MUST include all the inherited 1638 property values for the requested entities and all the entities which 1639 are able to inherit property values from the requested entities. To 1640 achieve this goal, the ALTO server MAY follow two rules: 1642 * If a property for a requested entity is inherited from another 1643 entity not included in the request, the response MUST include this 1644 property for the requested entity. For example, A full property 1645 map may skip a property P for an entity A (e.g., 1646 ipv4:192.0.2.0/31) if P can be derived using inheritance from 1647 another entity B (e.g., ipv4:192.0.2.0/30). A filtered property 1648 map request may include only A but not B. In such a case, the 1649 property P MUST be included in the response for A. 1651 * If there are entities covered by a requested entity but having 1652 different values for the requested properties, the response MUST 1653 include all those entities and the different property values for 1654 them. For example, considering a request for property P of entity 1655 A (e.g., ipv4:192.0.2.0/31), if P has value v1 for 1656 A1=ipv4:192.0.2.0/32 and v2 for A2=ipv4:192.0.2.1/32, then, the 1657 response SHOULD include A1 and A2. 1659 For the sake of response compactness, the ALTO server SHOULD obey the 1660 following rule: 1662 * If an entity identifier in the response is already covered by 1663 other entities identifiers in the same response, it SHOULD be 1664 removed from the response. In the previous example, the entity A 1665 = ipv4:192.0.2.0/31 SHOULD be removed because A1 and A2 cover all 1666 the addresses in A. 1668 An ALTO client should be aware that the entities in the response may 1669 be different from the entities in its request. 1671 8.7. Entity Property Type Defined in This Document 1673 This document defines the entity property type "pid". This property 1674 type extends the ALTO Endpoint Property Type "pid" defined in section 1675 7.1.1 of [RFC7285] as follows: the property has the same semantics 1676 and applies to IPv4 and IPv6 addresses; the difference is that the 1677 IPv4 and IPv6 addresses have evolved from the status of endpoints to 1678 the status of entities. 1680 The defining information resource for property type MUST be a network 1681 map. This document requests a IANA registration for this property 1683 8.7.1. Entity Property Type: pid 1684 1. Identifier: pid 1686 2. Semantics: the intended semantics are the same as in [RFC7285] 1687 for the ALTO Endpoint Property Type "pid" 1689 3. Media type of defining information resource: application/alto- 1690 networkmap+json 1692 4. Security considerations: for entity property type "pid" are the 1693 same as documented in [RFC7285] for the ALTO Endpoint Property 1694 Type "pid". 1696 9. Impact on Legacy ALTO Servers and ALTO Clients 1698 9.1. Impact on Endpoint Property Service 1700 Since the Property Map and the Filtered Property Map defined in this 1701 document provide a functionality that covers the EPS defined in 1702 Section 11.4 of [RFC7285], ALTO servers may prefer to provide 1703 Property Map and Filtered Property Map in place of EPS. However, for 1704 the legacy endpoint properties, it is recommended that ALTO servers 1705 also provide EPS so that legacy clients can still be supported. 1707 9.2. Impact on Resource-Specific Properties 1709 Section 10.8 of [RFC7285] defines two categories of endpoint 1710 properties: "resource-specific" and "global". Resource-specific 1711 property names are prefixed with the ID of the resource they depend 1712 on, while global property names have no such prefix. The property 1713 map and the filtered property map defined in this document define 1714 similar categories of entity properties. The difference is that 1715 entity property maps do not define "global" entity properties. 1716 Instead, they define "self-defined" entity properties as a special 1717 case of "resource-specific" entity properties, where the specific 1718 resource is the property map itself. This means that "self-defined" 1719 properties are defined within the scope of the property map. 1721 9.3. Impact on Other Properties 1723 In the present extension, properties can be defined on sets of entity 1724 addresses, rather than just individual endpoint addresses as 1725 initially defined in [RFC7285]. This might change the semantics of a 1726 property. These sets can be for example hierarchical IP address 1727 blocks. For instance, a property such as fictitious "geo-location", 1728 defined on a set of IP addresses would have a value corresponding to 1729 a location representative of all the addresses in this set. 1731 10. Examples 1733 In this document, the HTTP message bodies of all the examples use 1734 Unix-style line-ending character (%x0A) as the line separator. 1736 10.1. Network Map 1738 The examples in this section use a very simple default network map: 1740 defaultpid: ipv4:0.0.0.0/0 ipv6:::/0 1741 pid1: ipv4:192.0.2.0/25 1742 pid2: ipv4:192.0.2.0/27 1743 pid3: ipv4:192.0.3.0/28 1744 pid4: ipv4:192.0.3.16/28 1746 Figure 3: Example Default Network Map 1748 And another simple alternative network map: 1750 defaultpid: ipv4:0.0.0.0/0 ipv6:::/0 1751 pid1: ipv4:192.0.2.0/27 1752 pid2: ipv4:192.0.3.0/27 1754 Figure 4: Example Alternative Network Map 1756 10.2. Property Definitions 1758 Beyond "pid", the examples in this section use four additional 1759 fictitious property types for entities of domain type "ipv4": 1760 "countrycode", "ASN", "ISP", and "state". These properties are 1761 assumed to be resource-agnostic so their name is identical to their 1762 type. The entities have the following values: 1764 ISP ASN countrycode state 1765 ipv4:192.0.2.0/23: BitsRus - us - 1766 ipv4:192.0.2.0/28: - 65543 - NJ 1767 ipv4:192.0.2.16/28: - 65543 - CT 1768 ipv4:192.0.2.1: - - - PA 1769 ipv4:192.0.3.0/28: - 65544 - TX 1770 ipv4:192.0.3.16/28: - 65544 - MN 1772 Figure 5: Example Property Values for Internet Address Domains 1774 And the examples in this section use the property "region" for the 1775 PID domain of the default network map with the following values: 1777 region 1778 pid:defaultpid: - 1779 pid:pid1: us-west 1780 pid:pid2: us-east 1781 pid:pid3: us-south 1782 pid:pid4: us-north 1784 Figure 6: Example Property Values for Default Network Map's PID 1785 Domain 1787 Note that "-" means the value of the property for the entity is 1788 "undefined". So the entity would inherit a value for this property 1789 by the inheritance rule if possible. For example, the value of the 1790 "ISP" property for "ipv4:192.0.2.1" is "BitsRus" because of 1791 "ipv4:192.0.2.0/24". But the "region" property for "pid:defaultpid" 1792 has no value because no entity from which it can inherit. 1794 Similar to the PID domain of the default network map, the examples in 1795 this section use the property "ASN" for the PID domain of the 1796 alternative network map with the following values: 1798 ASN 1799 pid:defaultpid: - 1800 pid:pid1: 65543 1801 pid:pid2: 65544 1803 Figure 7: Example Property Values for Alternative Network Map's 1804 PID Domain 1806 10.3. Information Resource Directory (IRD) 1808 The following IRD defines ALTO Server information resources that are 1809 relevant to the Entity Property Service. It provides a property map 1810 for the "ISP" and "ASN" properties. The server could have provided a 1811 single property map for all four properties, but does not, presumably 1812 because the organization that runs the ALTO server believes that a 1813 client is not necessarily interested in getting all four properties. 1815 The server provides several filtered property maps. The first 1816 returns all four properties, and the second returns only the "pid" 1817 property for the default network map and the "alt-network-map". 1819 The filtered property maps for the "ISP", "ASN", "countrycode" and 1820 "state" properties do not depend on the default network map (it does 1821 not have a "uses" capability), because the definitions of those 1822 properties do not depend on the default network map. The Filtered 1823 Property Map providing the "pid" property does have a "uses" 1824 capability for the default network map because the default network 1825 map defines the values of the "pid" property. 1827 Note that for legacy clients, the ALTO server provides an Endpoint 1828 Property Service for the "pid" property defined on the endpoints of 1829 the default network map and the "alt-network-map". 1831 The server provides another filtered Property map resource, named 1832 "ane-dc-property-map", that returns fictitious properties named 1833 "storage-capacity", "ram" and "cpu" for ANEs that have a persistent 1834 identifier. The entity domain to which the ANEs belong is "self- 1835 defined" and valid only within the property map. 1837 The other property maps in the returned IRD are here for purposes of 1838 illustration. 1840 GET /directory HTTP/1.1 1841 Host: alto.example.com 1842 Accept: application/alto-directory+json,application/alto-error+json 1844 HTTP/1.1 200 OK 1845 Content-Length: 2713 1846 Content-Type: application/alto-directory+json 1848 { 1849 "meta" : { 1850 "default-alto-network-map" : "default-network-map" 1851 }, 1852 "resources" : { 1853 "default-network-map" : { 1854 "uri" : "http://alto.example.com/networkmap/default", 1855 "media-type" : "application/alto-networkmap+json" 1856 }, 1857 "alt-network-map" : { 1858 "uri" : "http://alto.example.com/networkmap/alt", 1859 "media-type" : "application/alto-networkmap+json" 1860 }, 1861 "ia-property-map" : { 1862 "uri" : "http://alto.example.com/propmap/full/inet-ia", 1863 "media-type" : "application/alto-propmap+json", 1864 "capabilities" : { 1865 "mappings": { 1866 "ipv4": [ ".ISP", ".ASN" ], 1867 "ipv6": [ ".ISP", ".ASN" ] 1868 } 1869 } 1870 }, 1871 "iacs-property-map" : { 1872 "uri" : "http://alto.example.com/propmap/lookup/inet-iacs", 1873 "media-type" : "application/alto-propmap+json", 1874 "accepts": "application/alto-propmapparams+json", 1875 "capabilities" : { 1876 "mappings": { 1877 "ipv4": [ ".ISP", ".ASN", ".countrycode", ".state" ], 1878 "ipv6": [ ".ISP", ".ASN", ".countrycode", ".state" ] 1879 } 1880 } 1881 }, 1882 "region-property-map": { 1883 "uri": "http://alto.example.com/propmap/lookup/region", 1884 "media-type": "application/alto-propmap+json", 1885 "accepts": "application/alto-propmapparams+json", 1886 "uses" : [ "default-network-map", "alt-network-map" ], 1887 "capabilities": { 1888 "mappings": { 1889 "default-network-map.pid": [ ".region" ], 1890 "alt-network-map.pid": [ ".ASN" ] 1891 } 1892 } 1893 }, 1894 "ip-pid-property-map" : { 1895 "uri" : "http://alto.example.com/propmap/lookup/pid", 1896 "media-type" : "application/alto-propmap+json", 1897 "accepts" : "application/alto-propmapparams+json", 1898 "uses" : [ "default-network-map", "alt-network-map" ], 1899 "capabilities" : { 1900 "mappings": { 1901 "ipv4": [ "default-network-map.pid", 1902 "alt-network-map.pid" ], 1903 "ipv6": [ "default-network-map.pid", 1904 "alt-network-map.pid" ] 1905 } 1906 } 1907 }, 1908 "legacy-endpoint-property" : { 1909 "uri" : "http://alto.example.com/legacy/eps-pid", 1910 "media-type" : "application/alto-endpointprop+json", 1911 "accepts" : "application/alto-endpointpropparams+json", 1912 "capabilities" : { 1913 "properties" : [ "default-network-map.pid", 1914 "alt-network-map.pid" ] 1916 } 1917 }, 1918 "ane-dc-property-map": { 1919 "uri" : "http://alto.example.com/propmap/lookup/ane-dc", 1920 "media-type" : "application/alto-propmap+json", 1921 "accepts": "application/alto-propmapparams+json", 1922 "capabilities": { 1923 "mappings": { 1924 ".ane" : [ "storage-capacity", "ram", "cpu" ] 1925 } 1926 } 1927 } 1928 } 1929 } 1931 Figure 8: Example IRD 1933 10.4. Full Property Map Example 1935 The following example uses the properties and IRD defined in 1936 Section 10.3 to retrieve a Property Map for entities with the "ISP" 1937 and "ASN" properties. 1939 Note that, to be compact, the response does not include the entity 1940 "ipv4:192.0.2.1" because values of all those properties for this 1941 entity are inherited from other entities. 1943 Also note that the entities "ipv4:192.0.2.0/28" and 1944 "ipv4:192.0.2.16/28" are merged into "ipv4:192.0.2.0/27", because 1945 they have the same value of the "ASN" property. The same rule 1946 applies to the entities "ipv4:192.0.3.0/28" and "ipv4:192.0.3.16/28". 1947 Both of "ipv4:192.0.2.0/27" and "ipv4:192.0.3.0/27" omit the value 1948 for the "ISP" property, because it is inherited from 1949 "ipv4:192.0.2.0/23". 1951 GET /propmap/full/inet-ia HTTP/1.1 1952 Host: alto.example.com 1953 Accept: application/alto-propmap+json,application/alto-error+json 1954 HTTP/1.1 200 OK 1955 Content-Length: 418 1956 Content-Type: application/alto-propmap+json 1958 { 1959 "meta": { 1960 "dependent-vtags": [ 1961 {"resource-id": "default-network-map", 1962 "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"}, 1963 {"resource-id": "alt-network-map", 1964 "tag": "c0ce023b8678a7b9ec00324673b98e54656d1f6d"} 1965 ] 1966 }, 1967 "property-map": { 1968 "ipv4:192.0.2.0/23": {".ISP": "BitsRus"}, 1969 "ipv4:192.0.2.0/27": {".ASN": "65543"}, 1970 "ipv4:192.0.3.0/27": {".ASN": "65544"} 1971 } 1972 } 1974 10.5. Filtered Property Map Example #1 1976 The following example uses the filtered property map resource to 1977 request the "ISP", "ASN" and "state" properties for several IPv4 1978 addresses. 1980 Note that the value of "state" for "ipv4:192.0.2.1" is the only 1981 explicitly defined property; the other values are all derived by the 1982 inheritance rules for Internet address entities. 1984 POST /propmap/lookup/inet-iacs HTTP/1.1 1985 Host: alto.example.com 1986 Accept: application/alto-propmap+json,application/alto-error+json 1987 Content-Length: 158 1988 Content-Type: application/alto-propmapparams+json 1990 { 1991 "entities" : [ "ipv4:192.0.2.0", 1992 "ipv4:192.0.2.1", 1993 "ipv4:192.0.2.17" ], 1994 "properties" : [ ".ISP", ".ASN", ".state" ] 1995 } 1996 HTTP/1.1 200 OK 1997 Content-Length: 540 1998 Content-Type: application/alto-propmap+json 2000 { 2001 "meta": { 2002 "dependent-vtags": [ 2003 {"resource-id": "default-network-map", 2004 "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"}, 2005 {"resource-id": "alt-network-map", 2006 "tag": "c0ce023b8678a7b9ec00324673b98e54656d1f6d"} 2007 ] 2008 }, 2009 "property-map": { 2010 "ipv4:192.0.2.0": 2011 {".ISP": "BitsRus", ".ASN": "65543", ".state": "NJ"}, 2012 "ipv4:192.0.2.1": 2013 {".ISP": "BitsRus", ".ASN": "65543", ".state": "PA"}, 2014 "ipv4:192.0.2.17": 2015 {".ISP": "BitsRus", ".ASN": "65543", ".state": "CT"} 2016 } 2017 } 2019 10.6. Filtered Property Map Example #2 2021 The following example uses the filtered property map resource to 2022 request the "ASN", "countrycode" and "state" properties for several 2023 IPv4 prefixes. 2025 Note that the property values for both entities "ipv4:192.0.2.0/26" 2026 and "ipv4:192.0.3.0/26" are not explicitly defined. They are 2027 inherited from the entity "ipv4:192.0.2.0/23". 2029 Also note that some entities like "ipv4:192.0.2.0/28" and 2030 "ipv4:192.0.2.16/28" in the response are not explicitly listed in the 2031 request. The response includes them because they are refinements of 2032 the requested entities and have different values for the requested 2033 properties. 2035 The entity "ipv4:192.0.4.0/26" is not included in the response, 2036 because there are neither entities which it is inherited from, nor 2037 entities inherited from it. 2039 POST /propmap/lookup/inet-iacs HTTP/1.1 2040 Host: alto.example.com 2041 Accept: application/alto-propmap+json,application/alto-error+json 2042 Content-Length: 174 2043 Content-Type: application/alto-propmapparams+json 2045 { 2046 "entities" : [ "ipv4:192.0.2.0/26", 2047 "ipv4:192.0.3.0/26", 2048 "ipv4:192.0.4.0/26" ], 2049 "properties" : [ ".ASN", ".countrycode", ".state" ] 2050 } 2052 HTTP/1.1 200 OK 2053 Content-Length: 774 2054 Content-Type: application/alto-propmap+json 2056 { 2057 "meta": { 2058 "dependent-vtags": [ 2059 {"resource-id": "default-network-map", 2060 "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"}, 2061 {"resource-id": "alt-network-map", 2062 "tag": "c0ce023b8678a7b9ec00324673b98e54656d1f6d"} 2063 ] 2064 }, 2065 "property-map": { 2066 "ipv4:192.0.2.0/26": {".countrycode": "us"}, 2067 "ipv4:192.0.2.0/28": {".ASN": "65543", 2068 ".state": "NJ"}, 2069 "ipv4:192.0.2.16/28": {".ASN": "65543", 2070 ".state": "CT"}, 2071 "ipv4:192.0.2.1": {".state": "PA"}, 2072 "ipv4:192.0.3.0/26": {".countrycode": "us"}, 2073 "ipv4:192.0.3.0/28": {".ASN": "65544", 2074 ".state": "TX"}, 2075 "ipv4:192.0.3.16/28": {".ASN": "65544", 2076 ".state": "MN"} 2077 } 2078 } 2080 10.7. Filtered Property Map Example #3 2082 The following example uses the filtered property map resource to 2083 request the "default-network-map.pid" property and the "alt-network- 2084 map.pid" property for a set of IPv4 addresses and prefixes. 2086 Note that the entity "ipv4:192.0.3.0/27" is decomposed into two 2087 entities "ipv4:192.0.3.0/28" and "ipv4:192.0.3.16/28", as they have 2088 different "default-network-map.pid" property values. 2090 POST /propmap/lookup/pid HTTP/1.1 2091 Host: alto.example.com 2092 Accept: application/alto-propmap+json,application/alto-error+json 2093 Content-Length: 222 2094 Content-Type: application/alto-propmapparams+json 2096 { 2097 "entities" : [ 2098 "ipv4:192.0.2.128", 2099 "ipv4:192.0.2.0/27", 2100 "ipv4:192.0.3.0/27" ], 2101 "properties" : [ "default-network-map.pid", 2102 "alt-network-map.pid" ] 2103 } 2105 HTTP/1.1 200 OK 2106 Content-Length: 774 2107 Content-Type: application/alto-propmap+json 2109 { 2110 "meta": { 2111 "dependent-vtags": [ 2112 {"resource-id": "default-network-map", 2113 "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"}, 2114 {"resource-id": "alt-network-map", 2115 "tag": "c0ce023b8678a7b9ec00324673b98e54656d1f6d"} 2116 ] 2117 }, 2118 "property-map": { 2119 "ipv4:192.0.2.128": {"default-network-map.pid": "defaultpid", 2120 "alt-network-map.pid": "defaultpid"}, 2121 "ipv4:192.0.2.0/27": {"default-network-map.pid": "pid2", 2122 "alt-network-map.pid": "pid1"}, 2123 "ipv4:192.0.3.0/28": {"default-network-map.pid": "pid3", 2124 "alt-network-map.pid": "pid2"}, 2125 "ipv4:192.0.3.16/28": {"default-network-map.pid": "pid4", 2126 "alt-network-map.pid": "pid2"} 2127 } 2128 } 2130 10.8. Filtered Property Map Example #4 2132 Here is an example of using the filtered property map to query the 2133 regions for several PIDs in "default-network-map". The "region" 2134 property is specified as a "self-defined" property, i.e., the values 2135 of this property are defined by this property map resource. 2137 POST /propmap/lookup/region HTTP/1.1 2138 Host: alto.example.com 2139 Accept: application/alto-propmap+json,application/alto-error+json 2140 Content-Length: 132 2141 Content-Type: application/alto-propmapparams+json 2143 { 2144 "entities" : ["default-network-map.pid:pid1", 2145 "default-network-map.pid:pid2"], 2146 "properties" : [ ".region" ] 2147 } 2149 HTTP/1.1 200 OK 2150 Content-Length: 326 2151 Content-Type: application/alto-propmap+json 2153 { 2154 "meta" : { 2155 "dependent-vtags" : [ 2156 {"resource-id": "default-network-map", 2157 "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"} 2158 ] 2159 }, 2160 "property-map": { 2161 "default-network-map.pid:pid1": { 2162 ".region": "us-west" 2163 }, 2164 "default-network-map.pid:pid2": { 2165 ".region": "us-east" 2166 } 2167 } 2168 } 2170 10.9. Filtered Property Map for ANEs Example #5 2172 The following example uses the filtered property map resource "ane- 2173 dc-property-map" to request properties "storage-capacity" and "cpu" 2174 on several ANEs defined in this property map. 2176 POST /propmap/lookup/ane-dc HTTP/1.1 2177 Host: alto.example.com 2178 Accept: application/alto-propmap+json,application/alto-error+json 2179 Content-Length: 155 2180 Content-Type: application/alto-propmapparams+json 2182 { 2183 "entities" : [".ane:dc21", 2184 ".ane:dc45.srv9", 2185 ".ane:dc6.srv-cluster8"], 2186 "properties" : [ "storage-capacity", "cpu"] 2187 } 2189 HTTP/1.1 200 OK 2190 Content-Length: 295 2191 Content-Type: application/alto-propmap+json 2193 { 2194 "meta" : { 2195 }, 2196 "property-map": { 2197 ".ane:dc21": 2198 {"storage-capacity" : 40000, "cpu" : 500}, 2199 ".ane:dc45.srv9": 2200 {"storage-capacity" : 100, "cpu" : 20}, 2201 ".ane:dc6.srv-cluster8": 2202 {"storage-capacity" : 6000, "cpu" : 100} 2203 } 2204 } 2206 11. Security Considerations 2208 Both Property Map and Filtered Property Map defined in this document 2209 fit into the architecture of the ALTO base protocol, and hence the 2210 Security Considerations (Section 15 of [RFC7285]) of the base 2211 protocol fully apply: authenticity and integrity of ALTO information 2212 (i.e., authenticity and integrity of Property Maps), potential 2213 undesirable guidance from authenticated ALTO information (e.g., 2214 potentially imprecise or even wrong value of a property such as geo- 2215 location), confidentiality of ALTO information (e.g., exposure of a 2216 potentially sensitive entity property such as geo-location), privacy 2217 for ALTO users, and availability of ALTO services should all be 2218 considered. 2220 ALTO clients using this extension should in addition be aware that 2221 the entity properties they require may convey more details than the 2222 endpoint properties conveyed by using [RFC7285]. Client requests may 2223 reveal details on their activity or plans thereof, that a malicious 2224 Server, that is in a position to do so, may monetize or use for 2225 attacks or undesired surveillance. Likewise, ALTO Servers expose 2226 entities and properties related to specific parts of the 2227 infrastructure that reveal details on capabilities, locations, or 2228 resource availability. These details may be maliciously used for 2229 competition purposes, or to cause resource shortage or undesired 2230 publication. 2232 To address these concerns, the Property Maps provided by this 2233 extension require additional attention on two security considerations 2234 discussed in [RFC7285]: "potential undesirable guidance from 2235 authenticated ALTO information" (Section 15.2 of [RFC7285]) and 2236 "confidentiality of ALTO information" (Section 15.3 of [RFC7285]). 2237 Threats to the availability of the ALTO Service caused by highly 2238 demanding queries should be addressed as specified in Section 15.5 of 2239 [RFC7285]. 2241 * Potential undesirable guidance from authenticated ALTO 2242 information: it can be caused by Property values that change over 2243 time and thus lead to performance degradation or system rejection 2244 of application requests. 2246 To avoid these consequences, a more robust ALTO client should 2247 adopt and extend protection strategies specified in Section 15.2 2248 of [RFC7285]. For example, to be notified immediately when a 2249 particular ALTO value that the Client depends on changes, it is 2250 RECOMMENDED that both the ALTO Client and ALTO Server using this 2251 extension implement "Application-Layer Traffic Optimization (ALTO) 2252 Incremental Updates Using Server-Sent Events (SSE)" [RFC8895]. 2254 * Confidentiality of ALTO information: as discussed in Section 15 of 2255 [RFC7285], properties may have sensitive customer-specific 2256 information. If this is the case, an ALTO Server may limit access 2257 to those properties by providing several different property maps. 2258 For non-sensitive properties, the ALTO Server would provide a URI 2259 which accepts requests from any client. Sensitive properties, on 2260 the other hand, would only be available via a secure URI which 2261 would require client authentication. Another way is to expose 2262 highly abstracted coarse-grained property values to all Clients 2263 while restricting access to URIs exposing more fine-grained values 2264 to authorized Clients. Restricted access URIs may be gathered in 2265 delegate IRDs as specified in Section 9.2.4 of [RFC7285]. 2267 Also, while technically this document does not introduce any 2268 security risks not inherent in the Endpoint Property Service 2269 defined by [RFC7285], the GET-mode property map resource defined 2270 in this document does make it easier for a client to download 2271 large numbers of property values. Accordingly, an ALTO Server 2272 should limit GET-mode property maps to properties that do not 2273 contain sensitive data. 2275 Section 12 of this document specifies that the ALTO service 2276 provider MUST be aware of the potential sensitivity of exposed 2277 entity domains and properties. Section 12.2.2. (ALTO Entity 2278 Domain Type Registration Process) of this document specifies that 2279 when the registration of an entity domain type is requested at the 2280 IANA, the request MUST include security considerations that show 2281 awareness of how the exposed entity addresses may be related to 2282 private information about an ALTO client or an infrastructure 2283 service provider. Likewise, Section 12.3. (ALTO Entity Property 2284 Type Registry) of this document specifies that when the 2285 registration of a property type is requested at the IANA, the 2286 request MUST include security considerations that explain why this 2287 property type is required for ALTO-based operations. 2289 The risk of ALTO information being leaked to malicious Clients or 2290 third parties is addressed similarly to Section 7 of [RFC8896]. 2291 ALTO clients and servers SHOULD support TLS 1.3 [RFC8446]. 2293 12. IANA Considerations 2295 This document defines additional application/alto-* media types, that 2296 are listed in Table 1. It defines an ALTO Entity Domain Type 2297 Registry that extends the ALTO Address Type Registry defined in 2298 [RFC7285]. It also defines an ALTO Entity Property Type Registry 2299 that extends the ALTO endpoint property registry defined in 2300 [RFC7285]. 2302 +=============+=========================+===============+ 2303 | Type | Subtype | Specification | 2304 +=============+=========================+===============+ 2305 | application | alto-propmap+json | Section 7.1 | 2306 +-------------+-------------------------+---------------+ 2307 | application | alto-propmapparams+json | Section 8.3 | 2308 +-------------+-------------------------+---------------+ 2310 Table 1: Additional ALTO Media Types. 2312 12.1. application/alto-propmap+json Media Type 2314 Type name: 2315 application 2317 Subtype name: 2318 alto-propmap+json 2320 Required parameters: 2321 n/a 2323 Optional parameters: 2324 n/a 2326 Encoding considerations: 2327 Encoding considerations are identical to those specified for the 2328 "application/json" media type. See [RFC8259]. 2330 Security considerations: 2331 Security considerations related to the generation and consumption 2332 of ALTO Protocol messages are discussed in Section 15 of [RFC7285] 2333 and Section 11 of this document. 2335 Interoperability considerations: 2336 n/a 2338 Published specification: 2339 This document is the specification for this media type. See 2340 Section 7.1. 2342 Applications that use this media type: 2343 ALTO servers and ALTO clients [RFC7285], either stand alone or 2344 embedded within other applications, when the queried resource is a 2345 property map, whether filtered or not. 2347 Fragment identifier considerations: 2348 n/a 2350 Additional information: 2351 Magic number(s): n/a 2353 File extension(s): n/a 2355 Macintosh file type code(s): n/a 2357 Person & email address to contact for further information: 2358 See Authors' Addresses section. 2360 Intended usage: 2361 COMMON 2363 Restrictions on usage: 2364 n/a 2366 Author: 2367 See Authors' Addresses section. 2369 Change controller: 2370 Internet Engineering Task Force (mailto:iesg@ietf.org). 2372 12.2. alto-propmapparams+json Media Type 2374 Type name: 2375 application 2377 Subtype name: 2378 alto-propmapparams+json 2380 Required parameters: 2381 n/a 2383 Optional parameters: 2384 n/a 2386 Encoding considerations: 2387 Encoding considerations are identical to those specified for the 2388 "application/json" media type. See [RFC8259]. 2390 Security considerations: 2391 Security considerations related to the generation and consumption 2392 of ALTO Protocol messages are discussed in Section 15 of [RFC7285] 2393 and Section 11 of this document. 2395 Interoperability considerations: 2396 n/a 2398 Published specification: 2399 This document is the specification for this media type. See 2400 Section 8.3. 2402 Applications that use this media type: 2403 ALTO servers and ALTO clients [RFC7285], either stand alone or 2404 embedded within other applications, when the queried resource is a 2405 filtered property map. This media-type indicates the data format 2406 used by the ALTO client to supply the property map filtering 2407 parameters. 2409 Fragment identifier considerations: 2410 n/a 2412 Additional information: 2413 Magic number(s): n/a 2415 File extension(s): n/a 2417 Macintosh file type code(s): n/a 2419 Person & email address to contact for further information: 2420 See Authors' Addresses section. 2422 Intended usage: 2423 COMMON 2425 Restrictions on usage: 2426 n/a 2428 Author: 2429 See Authors' Addresses section. 2431 Change controller: 2432 Internet Engineering Task Force (mailto:iesg@ietf.org). 2434 12.3. ALTO Entity Domain Type Registry 2436 This document requests IANA to create and maintain the "ALTO Entity 2437 Domain Type Registry", listed in Table 2. The first line lists 2438 information items that must be provided with each registered entity 2439 domain type. Section 12.3.2 specifies how to document these items 2440 and provides guidance on the security considerations item that must 2441 be documented in addition. 2443 +==========+===========+=============+======================+=======+ 2444 |Identifier|Entity |Hierarchy & |Media Type of Defining|Mapping| 2445 | |Identifier |Inheritance |Resource |to ALTO| 2446 | |Encoding | | |Address| 2447 | | | | |Type | 2448 +==========+===========+=============+======================+=======+ 2449 |ipv4 |See Section|See |application/alto- |true | 2450 | |6.1.1 |Section 6.1.3|networkmap+json | | 2451 +----------+-----------+-------------+----------------------+-------+ 2452 |ipv6 |See Section|See |application/alto- |true | 2453 | |6.1.2 |Section 6.1.3|networkmap+json | | 2454 +----------+-----------+-------------+----------------------+-------+ 2455 |pid |See |None |application/alto- |false | 2456 | |Section 6.2| |networkmap+json | | 2457 +----------+-----------+-------------+----------------------+-------+ 2459 Table 2: ALTO Entity Domain Types 2461 This registry serves two purposes. First, it ensures uniqueness of 2462 identifiers referring to ALTO entity domain types. Second, it states 2463 the requirements for allocated entity domain types. 2465 As specified in Section 5.1.1, identifiers prefixed with "priv:" are 2466 reserved for Private Use without a need to register with IANA 2468 12.3.1. Consistency Procedure between ALTO Address Type Registry and 2469 ALTO Entity Domain Type Registry 2471 One potential issue of introducing the "ALTO Entity Domain Type 2472 Registry" is its relationship with the "ALTO Address Types Registry" 2473 already defined in Section 14.4 of [RFC7285]. In particular, the 2474 entity identifier of a type of an entity domain registered in the 2475 "ALTO Entity Domain Type Registry" MAY match an address type defined 2476 in "ALTO Address Type Registry". It is necessary to precisely define 2477 and guarantee the consistency between "ALTO Address Type Registry" 2478 and "ALTO Entity Domain Registry". 2480 We define that the ALTO Entity Domain Type Registry is consistent 2481 with ALTO Address Type Registry if two conditions are satisfied: 2483 * When an address type is already or able to be registered in the 2484 ALTO Address Type Registry [RFC7285], the same identifier MUST be 2485 used when a corresponding entity domain type is registered in the 2486 ALTO Entity Domain Type Registry. 2488 * If an ALTO entity domain type has the same identifier as an ALTO 2489 address type, their addresses encoding MUST be compatible. 2491 To achieve this consistency, the following items MUST be checked 2492 before registering a new ALTO entity domain type in a future 2493 document: 2495 * Whether the ALTO Address Type Registry contains an address type 2496 that can be used as an identifier for the candidate entity domain 2497 type identifier. This has been done for the identifiers "ipv4" 2498 and "ipv6" of Table 2. 2500 * Whether the candidate entity domain type identifier can 2501 potentially be an endpoint address type, as defined in Sections 2502 2.1 and 2.2 of [RFC7285]. 2504 When a new ALTO entity domain type is registered, the consistency 2505 with the ALTO Address Type Registry MUST be ensured by the following 2506 procedure: 2508 * Test: Do corresponding entity domain type identifiers match a 2509 known "network" address type? 2511 - If yes (e.g., cell, MAC or socket addresses): 2513 o Test: Is such an address type present in the ALTO Address 2514 Type Registry? 2516 + If yes: Set the new ALTO entity domain type identifier to 2517 be the found ALTO address type identifier. 2519 + If no: Define a new ALTO entity domain type identifier 2520 and use it to register a new address type in the ALTO 2521 Address Type Registry following Section 14.4 of 2522 [RFC7285]. 2524 o Use the new ALTO entity domain type identifier to register a 2525 new ALTO entity domain type in the ALTO Entity Domain Type 2526 Registry following Section 12.3.2 of this document. 2528 - If no (e.g., pid name, ane name or country code): Proceed with 2529 the ALTO Entity Domain Type registration as described in 2530 Section 12.3.2. 2532 12.3.2. ALTO Entity Domain Type Registration Process 2534 New ALTO entity domain types are assigned after IETF Review [RFC8126] 2535 to ensure that proper documentation regarding the new ALTO entity 2536 domain types and their security considerations has been provided. 2537 RFCs defining new entity domain types MUST indicate how an entity in 2538 a registered type of domain is encoded as an EntityID, and, if 2539 applicable, the rules defining the entity hierarchy and property 2540 inheritance. Updates and deletions of ALTO entity domains types 2541 follow the same procedure. 2543 Registered ALTO entity domain type identifiers MUST conform to the 2544 syntactical requirements specified in Section 5.1.2. Identifiers are 2545 to be recorded and displayed as strings. 2547 Requests to the IANA to add a new value to the Entity Domain Type 2548 registry MUST include the following information: 2550 * Identifier: The name of the desired ALTO entity domain type. 2552 * Entity Identifier Encoding: The procedure for encoding the 2553 identifier of an entity of the registered domain type as an 2554 EntityID (see Section 5.1.3). If corresponding entity identifiers 2555 of an entity domain type match a known "network" address type, the 2556 Entity Identifier Encoding of this domain identifier MUST include 2557 both Address Encoding and Prefix Encoding of the same identifier 2558 registered in the ALTO Address Type Registry [RFC7285]. To define 2559 properties, an individual entity identifier and the corresponding 2560 full-length prefix MUST be considered aliases for the same entity. 2562 * Hierarchy: If the entities form a hierarchy, the procedure for 2563 determining that hierarchy. 2565 * Inheritance: If entities can inherit property values from other 2566 entities, the procedure for determining that inheritance. 2568 * Media type of defining information resource: Some entity domain 2569 types allow an entity domain name to be combined with an 2570 information resource name to define a resource-specific entity 2571 domain. Such an information resource is called "defining 2572 information resource", defined in Section 4.6. For each entity 2573 domain type, the potential defining information resources have one 2574 common media type. This unique common media type is specific to 2575 the entity domain type and MUST be specified. 2577 * Mapping to ALTO Address Type: A boolean value to indicate if the 2578 entity domain type can be mapped to the ALTO address type with the 2579 same identifier. 2581 * Security Considerations: In some usage scenarios, entity 2582 identifiers carried in ALTO Protocol messages may reveal 2583 information about an ALTO client or an ALTO service provider. 2584 Applications and ALTO service providers using addresses of the 2585 registered type should be cognizant of how (or if) the addressing 2586 scheme relates to private information and network proximity. 2588 This specification requests registration of the identifiers "ipv4", 2589 "ipv6" and "pid", as shown in Table 2. 2591 12.4. ALTO Entity Property Type Registry 2593 This document requests IANA to create and maintain the "ALTO Entity 2594 Property Type Registry", listed in Table 3. 2596 This registry extends the "ALTO Endpoint Property Type Registry", 2597 defined in [RFC7285], in that a property type is defined on one or 2598 more entity domains, rather than just on IPv4 and IPv6 Internet 2599 address domains. An entry in this registry is an ALTO entity 2600 property type defined in Section 5.2.1. Thus, a registered ALTO 2601 entity property type identifier MUST conform to the syntactical 2602 requirements specified in that section. 2604 As specified in Section 5.2.1, identifiers prefixed with "priv:" are 2605 reserved for Private Use without a need to register with IANA. 2607 The first line of Table 3 lists information items that must be 2608 provided with each registered entity property type. 2610 +============+====================+=================================+ 2611 | Identifier | Intended Semantics | Media Type of | 2612 | | | Defining Resource | 2613 +============+====================+=================================+ 2614 | pid | See Section 7.1.1 | application/alto- | 2615 | | of [RFC7285] | networkmap+json | 2616 +------------+--------------------+---------------------------------+ 2618 Table 3: ALTO Entity Property Types. 2620 New ALTO entity property types are assigned after IETF Review 2621 [RFC8126] to ensure that proper documentation regarding the new ALTO 2622 entity property types and their security considerations has been 2623 provided. RFCs defining new entity property types SHOULD indicate 2624 how a property of a registered type is encoded as a property name. 2625 Updates and deletions of ALTO entity property types follow the same 2626 procedure. 2628 Requests to the IANA to add a new value to the registry MUST include 2629 the following information: 2631 * Identifier: The identifier for the desired ALTO entity property 2632 type. The format MUST be as defined in Section 5.2.1 of this 2633 document. 2635 * Intended Semantics: ALTO entity properties carry with them 2636 semantics to guide their usage by ALTO clients. Hence, a document 2637 defining a new type SHOULD provide guidance to both ALTO service 2638 providers and applications utilizing ALTO clients as to how values 2639 of the registered ALTO entity property should be interpreted. 2641 * Media type of defining information resource: when the property 2642 type allows values to be defined relative to a given information 2643 resource, the latter is referred to as the "defining information 2644 resource", see description in Section 4.7. For each property 2645 type, the potential defining information resources have one common 2646 media type. This unique common media type is specific to the 2647 property type and MUST be specified. 2649 * Security Considerations: ALTO entity properties expose information 2650 to ALTO clients. ALTO service providers should be cognizant of 2651 the security ramifications related to the exposure of an entity 2652 property. 2654 In security considerations, the request should also discuss the 2655 sensitivity of the information, and why it is required for ALTO-based 2656 operations. Regarding this discussion, the request SHOULD follow the 2657 recommendations of Section 14.3. ALTO Endpoint Property Type 2658 Registry in [RFC7285]. 2660 This document requests registration of the identifier "pid", listed 2661 in Table 3. Semantics for this property are documented in 2662 Section 7.1.1 of [RFC7285]. No security issues related to the 2663 exposure of a "pid" identifier are considered, as it is exposed with 2664 the Network Map Service defined and mandated in [RFC7285]. 2666 13. Acknowledgments 2668 The authors would like to thank Dawn Chen, and Shenshen Chen for 2669 their contributions to earlier drafts. Thank you also to Qiao Xiang, 2670 Shawn Lin, Xin Wang and Vijay Gurbani for fruitful discussions. 2671 Last, big thanks to Danny Perez and Luis Contreras for their 2672 substantial Working Group review feedback and suggestions to improve 2673 this document, to Vijay Gurbani, ALTO WG Chair and Martin Duke, 2674 Transport Area Director, for their thorough review, discussions, 2675 guidance and shepherding, that further helped to enrich this 2676 document. 2678 14. References 2680 14.1. Normative References 2682 [ISO3166-1] 2683 ISO (International Organization for Standardization), ., 2684 "ISO 3166-1: Codes for the representation of names of 2685 countries and their subdivisions -- Part 1: Country 2686 codes", 2020. 2688 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2689 Requirement Levels", BCP 14, RFC 2119, 2690 DOI 10.17487/RFC2119, March 1997, 2691 . 2693 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 2694 Resource Identifier (URI): Generic Syntax", STD 66, 2695 RFC 3986, DOI 10.17487/RFC3986, January 2005, 2696 . 2698 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 2699 Architecture", February 2006. 2701 [RFC4632] Fuller, V. and T. Li, "Classless Inter-domain Routing 2702 (CIDR): The Internet Address Assignment and Aggregation 2703 Plan", BCP 122, RFC 4632, DOI 10.17487/RFC4632, August 2704 2006, . 2706 [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 2707 Address Text Representation", RFC 5952, 2708 DOI 10.17487/RFC5952, August 2010, 2709 . 2711 [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., 2712 Previdi, S., Roome, W., Shalunov, S., and R. Woundy, 2713 "Application-Layer Traffic Optimization (ALTO) Protocol", 2714 RFC 7285, DOI 10.17487/RFC7285, September 2014, 2715 . 2717 [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for 2718 Writing an IANA Considerations Section in RFCs", BCP 26, 2719 RFC 8126, DOI 10.17487/RFC8126, June 2017, 2720 . 2722 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2723 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2724 May 2017, . 2726 [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data 2727 Interchange Format", STD 90, RFC 8259, 2728 DOI 10.17487/RFC8259, December 2017, 2729 . 2731 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 2732 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 2733 . 2735 [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic 2736 Optimization (ALTO) Incremental Updates Using Server-Sent 2737 Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November 2738 2020, . 2740 14.2. Informative References 2742 [I-D.ietf-alto-cdni-request-routing-alto] 2743 Seedorf, J., Yang, Y., Ma, K., Peterson, J., and J. Zhang, 2744 "Content Delivery Network Interconnection (CDNI) Request 2745 Routing: CDNI Footprint and Capabilities Advertisement 2746 using ALTO", Work in Progress, Internet-Draft, draft-ietf- 2747 alto-cdni-request-routing-alto-16, 12 January 2021, 2748 . 2751 [I-D.ietf-alto-path-vector] 2752 Gao, K., Lee, Y., Randriamasy, S., Yang, Y., and J. Zhang, 2753 "ALTO Extension: Path Vector", Work in Progress, Internet- 2754 Draft, draft-ietf-alto-path-vector-13, 20 November 2020, 2755 . 2758 [RFC3849] Huston, G., Lord, A., and P. Smith, "IPv6 Address Prefix 2759 Reserved for Documentation", July 2004. 2761 [RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax 2762 Used to Form Encoding Rules in Various Routing Protocol 2763 Specifications", April 2009. 2765 [RFC5737] Arkko, J., Cotton, M., and L. Vegoda, "IPv4 Address Blocks 2766 Reserved for Documentation", January 2010. 2768 [RFC7921] Atlas, A., Halpern, J., Hares, S., Ward, D., and T. 2769 Nadeau, "An Architecture for the Interface to the Routing 2770 System", RFC 7921, DOI 10.17487/RFC7921, June 2016, 2771 . 2773 [RFC8896] Randriamasy, S., Yang, R., Wu, Q., Deng, L., and N. 2774 Schwan, "Application-Layer Traffic Optimization (ALTO) 2775 Cost Calendar", RFC 8896, DOI 10.17487/RFC8896, November 2776 2020, . 2778 Appendix A. Features introduced with the Entity Property Maps extension 2780 The Entity Property Maps extension described in this document 2781 introduces a number of features that are summarized in table below. 2782 The first column provides the name of the feature. The second column 2783 provides the section number of this document that gives a high level 2784 description of the feature. The third column provides the section 2785 number of this document that gives a normative description relating 2786 to the feature, when applicable. 2788 +======================+=============+==============================+ 2789 | Feature | High-level | Related normative | 2790 | | description | description | 2791 +======================+=============+==============================+ 2792 | Entity | Section 3.1 | Section 5.1.3 | 2793 +----------------------+-------------+------------------------------+ 2794 | Entity domain | Section 3.2 | | 2795 | (ED) | | | 2796 +----------------------+-------------+------------------------------+ 2797 | Entity domain | Section | Section 5.1.1 | 2798 | type | 3.2.1 | | 2799 +----------------------+-------------+------------------------------+ 2800 | Entity domain | Section | Section 5.1.2 | 2801 | name | 3.2.2 | | 2802 +----------------------+-------------+------------------------------+ 2803 | Entity property | Section 3.3 | Section 5.2, Section 5.2.1, | 2804 | (EP) type | | Section 5.2.2, Section 5.2.3 | 2805 +----------------------+-------------+------------------------------+ 2806 | Entity property | Section 3.4 | Section 7, Section 8 | 2807 | map | | | 2808 +----------------------+-------------+------------------------------+ 2809 | Resource-specific | Section 4.2 | Section 5.1.2, | 2810 | ED name | | Section 5.1.2.1 | 2811 +----------------------+-------------+------------------------------+ 2812 | Resource-specific | Section 4.3 | Section 5.2.3 | 2813 | EP value | | | 2814 +----------------------+-------------+------------------------------+ 2815 | Entity Hierarchy | Section 4.4 | Section 5.1.4 | 2816 | and property | | | 2817 | inheritance | | | 2818 +----------------------+-------------+------------------------------+ 2819 | Defining | Section | Section 12.3.2, Section 12.4 | 2820 | information | 4.6, | | 2821 | resource | Section 4.7 | | 2822 +----------------------+-------------+------------------------------+ 2824 Table 4: Features introduced with ALTO Entity Property Maps 2826 Authors' Addresses 2828 Wendy Roome 2829 Nokia Bell Labs (Retired) 2830 124 Burlington Rd 2831 Murray Hill, NJ 07974 2832 United States of America 2833 Phone: +1-908-464-6975 2834 Email: wendy@wdroome.com 2835 Sabine Randriamasy 2836 Nokia Bell Labs 2837 Route de Villejust 2838 91460 NOZAY 2839 France 2840 Email: Sabine.Randriamasy@nokia-bell-labs.com 2842 Y. Richard Yang 2843 Yale University 2844 51 Prospect Street 2845 New Haven, CT 06511 2846 United States of America 2847 Phone: +1-203-432-6400 2848 Email: yry@cs.yale.edu 2850 Jingxuan Jensen Zhang 2851 Tongji University 2852 4800 Cao'An Hwy 2853 Shanghai 2854 201804 2855 China 2856 Email: jingxuan.n.zhang@gmail.com 2858 Kai Gao 2859 Sichuan University 2860 No.24 South Section 1, Yihuan Road 2861 Chengdu 2862 610000 2863 China 2864 Email: kaigao@scu.edu.cn