| rfc8007v1.txt | rfc8007.txt | |||
|---|---|---|---|---|
| skipping to change at page 2, line 36 | skipping to change at page 2, line 36 | |||
| 5. CI/T Object Properties and Encoding . . . . . . . . . . . . . 16 | 5. CI/T Object Properties and Encoding . . . . . . . . . . . . . 16 | |||
| 5.1. CI/T Objects . . . . . . . . . . . . . . . . . . . . . . 16 | 5.1. CI/T Objects . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5.1.1. CI/T Commands . . . . . . . . . . . . . . . . . . . . 16 | 5.1.1. CI/T Commands . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5.1.2. Trigger Status Resources . . . . . . . . . . . . . . 17 | 5.1.2. Trigger Status Resources . . . . . . . . . . . . . . 17 | |||
| 5.1.3. Trigger Collections . . . . . . . . . . . . . . . . . 18 | 5.1.3. Trigger Collections . . . . . . . . . . . . . . . . . 18 | |||
| 5.2. Properties of CI/T Objects . . . . . . . . . . . . . . . 20 | 5.2. Properties of CI/T Objects . . . . . . . . . . . . . . . 20 | |||
| 5.2.1. Trigger Specification . . . . . . . . . . . . . . . . 20 | 5.2.1. Trigger Specification . . . . . . . . . . . . . . . . 20 | |||
| 5.2.2. Trigger Type . . . . . . . . . . . . . . . . . . . . 21 | 5.2.2. Trigger Type . . . . . . . . . . . . . . . . . . . . 21 | |||
| 5.2.3. Trigger Status . . . . . . . . . . . . . . . . . . . 22 | 5.2.3. Trigger Status . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.2.4. PatternMatch . . . . . . . . . . . . . . . . . . . . 22 | 5.2.4. PatternMatch . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.2.5. Absolute Time . . . . . . . . . . . . . . . . . . . . 23 | 5.2.5. Absolute Time . . . . . . . . . . . . . . . . . . . . 24 | |||
| 5.2.6. Error Description . . . . . . . . . . . . . . . . . . 24 | 5.2.6. Error Description . . . . . . . . . . . . . . . . . . 24 | |||
| 5.2.7. Error Code . . . . . . . . . . . . . . . . . . . . . 24 | 5.2.7. Error Code . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 6.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 25 | 6.1. Creating Triggers . . . . . . . . . . . . . . . . . . . . 26 | |||
| 6.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 25 | 6.1.1. Preposition . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 6.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . 27 | 6.1.2. Invalidate . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 6.2. Examining Trigger Status . . . . . . . . . . . . . . . . 28 | 6.2. Examining Trigger Status . . . . . . . . . . . . . . . . 28 | |||
| 6.2.1. Collection of All Triggers . . . . . . . . . . . . . 28 | 6.2.1. Collection of All Triggers . . . . . . . . . . . . . 28 | |||
| 6.2.2. Filtered Collections of Trigger Status Resources . . 29 | 6.2.2. Filtered Collections of Trigger Status Resources . . 29 | |||
| 6.2.3. Individual Trigger Status Resources . . . . . . . . . 31 | 6.2.3. Individual Trigger Status Resources . . . . . . . . . 31 | |||
| 6.2.4. Polling for Changes in Status . . . . . . . . . . . . 33 | 6.2.4. Polling for Changes in Status . . . . . . . . . . . . 33 | |||
| 6.2.5. Deleting Trigger Status Resources . . . . . . . . . . 36 | 6.2.5. Deleting Trigger Status Resources . . . . . . . . . . 36 | |||
| 6.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 37 | 6.2.6. Error Reporting . . . . . . . . . . . . . . . . . . . 37 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 7.1. CDNI Payload Type Parameter Registrations . . . . . . . . 38 | 7.1. CDNI Payload Type Parameter Registrations . . . . . . . . 38 | |||
| skipping to change at page 6, line 20 | skipping to change at page 6, line 20 | |||
| The remainder of this document describes the messages, Trigger Status | The remainder of this document describes the messages, Trigger Status | |||
| Resources, and collections of Trigger Status Resources in more | Resources, and collections of Trigger Status Resources in more | |||
| detail. | detail. | |||
| 2.1. Timing of Triggered Activity | 2.1. Timing of Triggered Activity | |||
| Timing of the execution of CI/T Commands is under the dCDN's control, | Timing of the execution of CI/T Commands is under the dCDN's control, | |||
| including its start time and pacing of the activity in the network. | including its start time and pacing of the activity in the network. | |||
| CI/T invalidate and purge commands MUST be applied to all data | CI/T "invalidate" and "purge" commands MUST be applied to all data | |||
| acquired before the command was accepted by the dCDN. The dCDN | acquired before the command was accepted by the dCDN. The dCDN | |||
| SHOULD NOT apply CI/T invalidate and purge commands to data acquired | SHOULD NOT apply CI/T "invalidate" and "purge" commands to data | |||
| after the CI/T Command was accepted, but this may not always be | acquired after the CI/T Command was accepted, but this may not always | |||
| achievable, so the uCDN cannot count on that. | be achievable, so the uCDN cannot count on that. | |||
| If the uCDN wishes to invalidate or purge content and then | If the uCDN wishes to invalidate or purge content and then | |||
| immediately pre-position replacement content at the same URLs, it | immediately pre-position replacement content at the same URLs, it | |||
| SHOULD ensure that the dCDN has completed the invalidate/purge before | SHOULD ensure that the dCDN has completed the invalidate/purge before | |||
| initiating the prepositioning. Otherwise, there is a risk that the | initiating the prepositioning. Otherwise, there is a risk that the | |||
| dCDN pre-positions the new content, then immediately invalidates or | dCDN pre-positions the new content, then immediately invalidates or | |||
| purges it (as a result of the two uCDN requests running in parallel). | purges it (as a result of the two uCDN requests running in parallel). | |||
| Because the CI/T Command timing is under the dCDN's control, the dCDN | Because the CI/T Command timing is under the dCDN's control, the dCDN | |||
| implementation can choose whether to apply CI/T invalidate and purge | implementation can choose whether to apply CI/T "invalidate" and | |||
| commands to content acquisition that has already started when the | "purge" commands to content acquisition that has already started when | |||
| command is received. | the command is received. | |||
| 2.2. Scope of Triggered Activity | 2.2. Scope of Triggered Activity | |||
| Each CI/T Command can operate on multiple metadata and content URLs. | Each CI/T Command can operate on multiple metadata and content URLs. | |||
| Multiple representations of an HTTP resource may share the same URL. | Multiple representations of an HTTP resource may share the same URL. | |||
| CI/T Trigger Commands that invalidate or purge metadata or content | CI/T Trigger Commands that invalidate or purge metadata or content | |||
| apply to all resource representations with matching URLs. | apply to all resource representations with matching URLs. | |||
| 2.2.1. Multiple Interconnected CDNs | 2.2.1. Multiple Interconnected CDNs | |||
| skipping to change at page 7, line 20 | skipping to change at page 7, line 20 | |||
| intermediate CDN, or via more than one intermediate CDN. | intermediate CDN, or via more than one intermediate CDN. | |||
| CI/T Commands originating in the single source uCDN affect metadata | CI/T Commands originating in the single source uCDN affect metadata | |||
| and content in all dCDNs; however, in a diamond configuration, it may | and content in all dCDNs; however, in a diamond configuration, it may | |||
| not be possible for the dCDN to determine which uCDN it acquired | not be possible for the dCDN to determine which uCDN it acquired | |||
| content from. In this case, a dCDN MUST allow each uCDN from which | content from. In this case, a dCDN MUST allow each uCDN from which | |||
| it may have acquired the content to act upon that content using CI/T | it may have acquired the content to act upon that content using CI/T | |||
| Commands. | Commands. | |||
| In all other cases, a dCDN MUST reject CI/T Commands from a uCDN that | In all other cases, a dCDN MUST reject CI/T Commands from a uCDN that | |||
| acts on another uCDN's data by using, for example, HTTP 403 | attempts to act on another uCDN's content by using, for example, | |||
| ("Forbidden"). | HTTP 403 ("Forbidden"). | |||
| Security considerations are discussed further in Section 8. | Security considerations are discussed further in Section 8. | |||
| The diamond configuration may lead to inefficient interactions, but | The diamond configuration may lead to inefficient interactions, but | |||
| the interactions are otherwise harmless. For example: | the interactions are otherwise harmless. For example: | |||
| o When the uCDN issues an invalidate CI/T Command, a dCDN will | o When the uCDN issues an "invalidate" CI/T Command, a dCDN will | |||
| receive that command from multiple directly connected uCDNs. The | receive that command from multiple directly connected uCDNs. The | |||
| dCDN may schedule multiple those commands separately, and the last | dCDN may schedule multiple such commands separately, and the last | |||
| may affect content already revalidated following execution of the | scheduled command may affect content already revalidated following | |||
| invalidate command scheduled first. | execution of the "invalidate" command that was scheduled first. | |||
| o If one of a dCDN's directly connected uCDNs loses its rights to | o If one of a dCDN's directly connected uCDNs loses its rights to | |||
| distribute content, it may issue a CI/T purge command. That purge | distribute content, it may issue a CI/T "purge" command. That | |||
| may affect content the dCDN could retain because it's distributed | purge may affect content the dCDN could retain because it's | |||
| by another directly connected uCDN. But, that content can be | distributed by another directly connected uCDN. But, that content | |||
| reacquired by the dCDN from the remaining uCDN. | can be reacquired by the dCDN from the remaining uCDN. | |||
| o When the uCDN originating an item of content issues a CI/T purge | o When the uCDN originating an item of content issues a CI/T purge | |||
| followed by a preposition, two directly connected uCDNs will pass | followed by a preposition, two directly connected uCDNs will pass | |||
| those commands to a dCDN. That dCDN implementation need not merge | those commands to a dCDN. That dCDN implementation need not merge | |||
| those operations or notice the repetition, in which case the purge | those operations or notice the repetition, in which case the purge | |||
| issued by one uCDN will complete before the other. The first uCDN | issued by one uCDN will complete before the other. The first uCDN | |||
| to finish its purge may then forward the preposition trigger, and | to finish its purge may then forward the "preposition" trigger, | |||
| content pre-positioned as a result might be affected by the | and content pre-positioned as a result might be affected by the | |||
| still-running purge issued by the other uCDN. However, the dCDN | still-running purge issued by the other uCDN. However, the dCDN | |||
| will reacquire that content as needed, or when it's asked to | will reacquire that content as needed, or when it's asked to | |||
| pre-position the content by the second uCDN. A dCDN | pre-position the content by the second uCDN. A dCDN | |||
| implementation could avoid this interaction by knowing which uCDN | implementation could avoid this interaction by knowing which uCDN | |||
| it acquired the content from, or it could minimize the | it acquired the content from, or it could minimize the | |||
| consequences by recording the time at which the invalidate/purge | consequences by recording the time at which the | |||
| command was received and not applying it to content acquired after | "invalidate"/"purge" command was received and not applying it to | |||
| that time. | content acquired after that time. | |||
| 2.3. Trigger Results | 2.3. Trigger Results | |||
| Possible states for a Trigger Status Resource are defined in | Possible states for a Trigger Status Resource are defined in | |||
| Section 5.2.3. | Section 5.2.3. | |||
| The CI/T Trigger Command MUST NOT be reported as "complete" until all | The CI/T Trigger Command MUST NOT be reported as "complete" until all | |||
| actions have been completed successfully. The reasons for failure, | actions have been completed successfully. The reasons for failure, | |||
| and URLs or patterns affected, SHOULD be enumerated in the Trigger | and URLs or patterns affected, SHOULD be enumerated in the Trigger | |||
| Status Resource. For more details, see Section 4.7. | Status Resource. For more details, see Section 4.7. | |||
| skipping to change at page 11, line 15 | skipping to change at page 11, line 15 | |||
| the same URLs is expected to have finished. | the same URLs is expected to have finished. | |||
| If the dCDN is able to track the execution of CI/T Commands and a | If the dCDN is able to track the execution of CI/T Commands and a | |||
| CI/T Command is queued by the dCDN for later action, the "status" | CI/T Command is queued by the dCDN for later action, the "status" | |||
| property of the Trigger Status Resource MUST be "pending". Once | property of the Trigger Status Resource MUST be "pending". Once | |||
| processing has started, the status MUST be "active". Finally, once | processing has started, the status MUST be "active". Finally, once | |||
| the CI/T Command is complete, the status MUST be set to "complete" or | the CI/T Command is complete, the status MUST be set to "complete" or | |||
| "failed". | "failed". | |||
| A CI/T Trigger Command may result in no activity in the dCDN if, for | A CI/T Trigger Command may result in no activity in the dCDN if, for | |||
| example, it is an invalidate or purge request for data the dCDN has | example, it is an "invalidate" or "purge" request for data the dCDN | |||
| not yet acquired, or a pre-position request for data that it has | has not yet acquired, or a "pre-position" request for data that it | |||
| already acquired and that is still valid. In this case, the status | has already acquired and that is still valid. In this case, the | |||
| of the Trigger Status Resource MUST be "processed" or "complete", and | status of the Trigger Status Resource MUST be "processed" or | |||
| the Trigger Status Resource MUST be added to the dCDN's collection of | "complete", and the Trigger Status Resource MUST be added to the | |||
| Complete Trigger Status Resources. | dCDN's collection of Complete Trigger Status Resources. | |||
| Once created, Trigger Status Resources can be canceled or deleted by | Once created, Trigger Status Resources can be canceled or deleted by | |||
| the uCDN, but not modified. The dCDN MUST reject PUT and POST | the uCDN, but not modified. The dCDN MUST reject PUT and POST | |||
| requests from the uCDN to Trigger Status Resources by responding with | requests from the uCDN to Trigger Status Resources by responding with | |||
| an appropriate HTTP status code -- for example, 405 ("Method Not | an appropriate HTTP status code -- for example, 405 ("Method Not | |||
| Allowed"). | Allowed"). | |||
| 4.2. Checking Status | 4.2. Checking Status | |||
| The uCDN has two ways to check the progress of CI/T Commands it has | The uCDN has two ways to check the progress of CI/T Commands it has | |||
| skipping to change at page 15, line 49 | skipping to change at page 15, line 49 | |||
| upon or the uCDN chooses to cancel it. | upon or the uCDN chooses to cancel it. | |||
| 4.8. Content URLs | 4.8. Content URLs | |||
| If content URLs are transformed by an intermediate CDN in a cascade, | If content URLs are transformed by an intermediate CDN in a cascade, | |||
| that intermediate CDN MUST similarly transform URLs in CI/T Commands | that intermediate CDN MUST similarly transform URLs in CI/T Commands | |||
| it passes to its dCDN. | it passes to its dCDN. | |||
| When processing Trigger Specifications, CDNs MUST ignore the URL | When processing Trigger Specifications, CDNs MUST ignore the URL | |||
| scheme (HTTP or HTTPS) in comparing URLs. For example, for a CI/T | scheme (HTTP or HTTPS) in comparing URLs. For example, for a CI/T | |||
| invalidate or purge command, content MUST be invalidated or purged | "invalidate" or "purge" command, content MUST be invalidated or | |||
| regardless of the protocol clients used to request it. | purged regardless of the protocol clients used to request it. | |||
| 5. CI/T Object Properties and Encoding | 5. CI/T Object Properties and Encoding | |||
| The CI/T Commands, Trigger Status Resources, and Trigger Collections, | The CI/T Commands, Trigger Status Resources, and Trigger Collections, | |||
| as well as their properties, are encoded using JSON, as defined in | as well as their properties, are encoded using JSON, as defined in | |||
| Sections 5.1.1, 5.1.2, and 5.2.1. They MUST use the MIME media type | Sections 5.1.1, 5.1.2, and 5.1.3. They MUST use the MIME media type | |||
| "application/cdni", with parameter "ptype" values as defined below | "application/cdni", with parameter "ptype" values as defined below | |||
| and in Section 7.1. | and in Section 7.1. | |||
| Names in JSON are case sensitive. The names and literal values | Names in JSON are case sensitive. The names and literal values | |||
| specified in the present document MUST always use lowercase. | specified in the present document MUST always use lowercase. | |||
| JSON types, including "object", "array", "number", and "string", are | JSON types, including "object", "array", "number", and "string", are | |||
| defined in [RFC7159]. | defined in [RFC7159]. | |||
| Unrecognized name/value pairs in JSON objects SHOULD NOT be treated | Unrecognized name/value pairs in JSON objects SHOULD NOT be treated | |||
| skipping to change at page 22, line 25 | skipping to change at page 22, line 25 | |||
| | | erase the associated data. | | | | erase the associated data. | | |||
| | purge | A request for the dCDN to erase metadata or | | | purge | A request for the dCDN to erase metadata or | | |||
| | | content. After servicing the request, the | | | | content. After servicing the request, the | | |||
| | | specified data MUST NOT be held on the dCDN (the | | | | specified data MUST NOT be held on the dCDN (the | | |||
| | | dCDN should reacquire the metadata or content from | | | | dCDN should reacquire the metadata or content from | | |||
| | | the uCDN if it needs it). | | | | the uCDN if it needs it). | | |||
| +-------------+-----------------------------------------------------+ | +-------------+-----------------------------------------------------+ | |||
| 5.2.3. Trigger Status | 5.2.3. Trigger Status | |||
| Trigger Status describes the current status of a Trigger. It MUST be | Trigger Status describes the current status of the triggered | |||
| one of the JSON strings in the following table: | activity. It MUST be one of the JSON strings in the following table: | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| | JSON | Description | | | JSON | Description | | |||
| | String | | | | String | | | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| | pending | The CI/T Trigger Command has not yet been acted upon. | | | pending | The CI/T Trigger Command has not yet been acted upon. | | |||
| | active | The CI/T Trigger Command is currently being acted | | | active | The CI/T Trigger Command is currently being acted | | |||
| | | upon. | | | | upon. | | |||
| | complete | The CI/T Trigger Command completed successfully. | | | complete | The CI/T Trigger Command completed successfully. | | |||
| | processed | The CI/T Trigger Command has been accepted, and no | | | processed | The CI/T Trigger Command has been accepted, and no | | |||
| skipping to change at page 23, line 9 | skipping to change at page 23, line 9 | |||
| A PatternMatch consists of a string pattern to match against a URI, | A PatternMatch consists of a string pattern to match against a URI, | |||
| and flags describing the type of match. | and flags describing the type of match. | |||
| It is encoded as a JSON object with the following name/value pairs: | It is encoded as a JSON object with the following name/value pairs: | |||
| Name: pattern | Name: pattern | |||
| Description: A pattern for URI matching. | Description: A pattern for URI matching. | |||
| Value: A JSON string representing the pattern. The pattern may | Value: A JSON string representing the pattern. The pattern can | |||
| contain the wildcards "*" and "?", where "*" matches any | contain the wildcards * and ?, where * matches any sequence of | |||
| sequence of characters (including the empty string) and "?" | [RFC3986] pchar or "/" characters (including the empty string) | |||
| matches exactly one character. The three literals "\", "*", | and ? matches exactly one [RFC3986] pchar character. The three | |||
| and "?" MUST be escaped as "\\", "\*", and "\?". | literals $, * and ? MUST be escaped as $$, $* and $? (where $ | |||
| is the designated escape character). All other characters are | ||||
| treated as literals. | ||||
| Mandatory: Yes. | Mandatory: Yes. | |||
| Name: case-sensitive | Name: case-sensitive | |||
| Description: Flag indicating whether or not case-sensitive | Description: Flag indicating whether or not case-sensitive | |||
| matching should be used. | matching should be used. | |||
| Value: One of the JSON values "true" (the matching is case | Value: One of the JSON values "true" (the matching is case | |||
| sensitive) or "false" (the matching is case insensitive). | sensitive) or "false" (the matching is case insensitive). | |||
| skipping to change at page 25, line 14 | skipping to change at page 25, line 22 | |||
| The following error codes are defined by this document and MUST be | The following error codes are defined by this document and MUST be | |||
| supported by an implementation of the CI/T interface. | supported by an implementation of the CI/T interface. | |||
| +--------------+----------------------------------------------------+ | +--------------+----------------------------------------------------+ | |||
| | Error Code | Description | | | Error Code | Description | | |||
| +--------------+----------------------------------------------------+ | +--------------+----------------------------------------------------+ | |||
| | emeta | The dCDN was unable to acquire metadata required | | | emeta | The dCDN was unable to acquire metadata required | | |||
| | | to fulfill the request. | | | | to fulfill the request. | | |||
| | econtent | The dCDN was unable to acquire content (CI/T | | | econtent | The dCDN was unable to acquire content (CI/T | | |||
| | | preposition commands only). | | | | "preposition" commands only). | | |||
| | eperm | The uCDN does not have permission to issue the | | | eperm | The uCDN does not have permission to issue the | | |||
| | | CI/T Command (for example, the data is owned by | | | | CI/T Command (for example, the data is owned by | | |||
| | | another CDN). | | | | another CDN). | | |||
| | ereject | The dCDN is not willing to fulfill the CI/T | | | ereject | The dCDN is not willing to fulfill the CI/T | | |||
| | | Command (for example, a preposition request for | | | | Command (for example, a "preposition" request for | | |||
| | | content at a time when the dCDN would not accept | | | | content at a time when the dCDN would not accept | | |||
| | | Request Routing requests from the uCDN). | | | | Request Routing requests from the uCDN). | | |||
| | ecdn | An internal error in the dCDN or one of its dCDNs. | | | ecdn | An internal error in the dCDN or one of its dCDNs. | | |||
| | ecanceled | The uCDN canceled the request. | | | ecanceled | The uCDN canceled the request. | | |||
| | eunsupported | The Trigger Specification contained a "type" that | | | eunsupported | The Trigger Specification contained a "type" that | | |||
| | | is not supported by the dCDN. No action was taken | | | | is not supported by the dCDN. No action was taken | | |||
| | | by the dCDN other than to create a Trigger Status | | | | by the dCDN other than to create a Trigger Status | | |||
| | | Resource in state "failed". | | | | Resource in state "failed". | | |||
| +--------------+----------------------------------------------------+ | +--------------+----------------------------------------------------+ | |||
| 6. Examples | 6. Examples | |||
| The following subsections provide examples of different CI/T objects | The following subsections provide examples of different CI/T objects | |||
| encoded as JSON. | encoded as JSON. | |||
| Discovery of the triggers interface is out of scope for this | Discovery of the CI/T interface is out of scope for this document. | |||
| document. In an implementation, all CI/T URLs are under the control | In an implementation, all CI/T URLs are under the control of the | |||
| of the dCDN. The uCDN MUST NOT attempt to ascribe any meaning to | dCDN. The uCDN MUST NOT attempt to ascribe any meaning to individual | |||
| individual elements of the path. | elements of the path. | |||
| In examples in this section, the URL "https://dcdn.example.com/ | In examples in this section, the URL "https://dcdn.example.com/ | |||
| triggers" is used as the location of the collection of all Trigger | triggers" is used as the location of the collection of all Trigger | |||
| Status Resources, and the CDN PID of the uCDN is "AS64496:1". | Status Resources, and the CDN PID of the uCDN is "AS64496:1". | |||
| 6.1. Creating Triggers | 6.1. Creating Triggers | |||
| Examples of the uCDN triggering activity in the dCDN: | Examples of the uCDN triggering activity in the dCDN: | |||
| 6.1.1. Preposition | 6.1.1. Preposition | |||
| Below is an example of a CI/T preposition command -- a POST to the | Below is an example of a CI/T "preposition" command -- a POST to the | |||
| collection of all Trigger Status Resources. | collection of all Trigger Status Resources. | |||
| Note that "metadata.patterns" and "content.patterns" are not allowed | Note that "metadata.patterns" and "content.patterns" are not allowed | |||
| in a preposition Trigger Specification. | in a preposition Trigger Specification. | |||
| REQUEST: | REQUEST: | |||
| POST /triggers HTTP/1.1 | POST /triggers HTTP/1.1 | |||
| User-Agent: example-user-agent/0.1 | User-Agent: example-user-agent/0.1 | |||
| Host: dcdn.example.com | Host: dcdn.example.com | |||
| skipping to change at page 27, line 13 | skipping to change at page 27, line 22 | |||
| ], | ], | |||
| "metadata.urls": [ | "metadata.urls": [ | |||
| "https://metadata.example.com/a/b/c" | "https://metadata.example.com/a/b/c" | |||
| ], | ], | |||
| "type": "preposition" | "type": "preposition" | |||
| } | } | |||
| } | } | |||
| 6.1.2. Invalidate | 6.1.2. Invalidate | |||
| Below is an example of a CI/T invalidate command -- another POST to | Below is an example of a CI/T "invalidate" command -- another POST to | |||
| the collection of all Trigger Status Resources. This instructs the | the collection of all Trigger Status Resources. This instructs the | |||
| dCDN to revalidate the content at "https://www.example.com/a/ | dCDN to revalidate the content at "https://www.example.com/a/ | |||
| index.html", as well as any metadata and content whose URLs are | index.html", as well as any metadata and content whose URLs are | |||
| prefixed by "https://metadata.example.com/a/b/" using | prefixed by "https://metadata.example.com/a/b/" using | |||
| case-insensitive matching, and "https://www.example.com/a/b/" using | case-insensitive matching, and "https://www.example.com/a/b/" using | |||
| case-sensitive matching, respectively. | case-sensitive matching, respectively. | |||
| REQUEST: | REQUEST: | |||
| POST /triggers HTTP/1.1 | POST /triggers HTTP/1.1 | |||
| skipping to change at page 28, line 36 | skipping to change at page 28, line 46 | |||
| "pattern": "https://metadata.example.com/a/b/*" | "pattern": "https://metadata.example.com/a/b/*" | |||
| } | } | |||
| ], | ], | |||
| "type": "invalidate" | "type": "invalidate" | |||
| } | } | |||
| } | } | |||
| 6.2. Examining Trigger Status | 6.2. Examining Trigger Status | |||
| Once Trigger Status Resources have been created, the uCDN can check | Once Trigger Status Resources have been created, the uCDN can check | |||
| their status as shown in these examples. | their status as shown in the following examples. | |||
| 6.2.1. Collection of All Triggers | 6.2.1. Collection of All Triggers | |||
| The uCDN can fetch the collection of all Trigger Status Resources it | The uCDN can fetch the collection of all Trigger Status Resources it | |||
| has created that have not yet been deleted or removed as expired. | has created that have not yet been deleted or removed as expired. | |||
| After creation of the "preposition" and "invalidate" triggers shown | After creation of the "preposition" and "invalidate" triggers shown | |||
| above, this collection might look as follows: | above, this collection might look as follows: | |||
| REQUEST: | REQUEST: | |||
| GET /triggers HTTP/1.1 | GET /triggers HTTP/1.1 | |||
| User-Agent: example-user-agent/0.1 | User-Agent: example-user-agent/0.1 | |||
| Host: dcdn.example.com | Host: dcdn.example.com | |||
| Accept: */* | Accept: */* | |||
| skipping to change at page 40, line 8 | skipping to change at page 40, line 8 | |||
| requests into the dCDN and to inspect its own CI/T requests and their | requests into the dCDN and to inspect its own CI/T requests and their | |||
| current states. The CI/T interface does not allow access to, or | current states. The CI/T interface does not allow access to, or | |||
| modification of, the uCDN or dCDN metadata relating to content | modification of, the uCDN or dCDN metadata relating to content | |||
| delivery or to the content itself. It can only control the presence | delivery or to the content itself. It can only control the presence | |||
| of that metadata in the dCDN, and the processing work and network | of that metadata in the dCDN, and the processing work and network | |||
| utilization involved in ensuring that presence. | utilization involved in ensuring that presence. | |||
| By examining pre-positioning requests to a dCDN, and correctly | By examining pre-positioning requests to a dCDN, and correctly | |||
| interpreting content and metadata URLs, an attacker could learn the | interpreting content and metadata URLs, an attacker could learn the | |||
| uCDN's or content owner's predictions for future content popularity. | uCDN's or content owner's predictions for future content popularity. | |||
| By examining invalidate or purge requests, an attacker could learn | By examining "invalidate" or "purge" requests, an attacker could | |||
| about changes in the content owner's catalog. | learn about changes in the content owner's catalog. | |||
| By injecting CI/T Commands, an attacker or a misbehaving uCDN would | By injecting CI/T Commands, an attacker or a misbehaving uCDN would | |||
| generate work in the dCDN and uCDN as they process those requests. | generate work in the dCDN and uCDN as they process those requests. | |||
| So would a man-in-the-middle attacker modifying valid CI/T Commands | So would a man-in-the-middle attacker modifying valid CI/T Commands | |||
| generated by the uCDN. In both cases, that would decrease the dCDN's | generated by the uCDN. In both cases, that would decrease the dCDN's | |||
| caching efficiency by causing it to unnecessarily acquire or | caching efficiency by causing it to unnecessarily acquire or | |||
| reacquire content metadata and/or content. | reacquire content metadata and/or content. | |||
| A dCDN implementation of CI/T MUST restrict the actions of a uCDN to | A dCDN implementation of CI/T MUST restrict the actions of a uCDN to | |||
| the data corresponding to that uCDN. Failure to do so would allow | the data corresponding to that uCDN. Failure to do so would allow | |||
| skipping to change at page 42, line 32 | skipping to change at page 42, line 32 | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | |||
| DOI 10.17487/RFC2818, May 2000, | DOI 10.17487/RFC2818, May 2000, | |||
| <http://www.rfc-editor.org/info/rfc2818>. | <http://www.rfc-editor.org/info/rfc2818>. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
| Resource Identifier (URI): Generic Syntax", STD 66, | ||||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | ||||
| <http://www.rfc-editor.org/info/rfc3986>. | ||||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
| DOI 10.17487/RFC5226, May 2008, | DOI 10.17487/RFC5226, May 2008, | |||
| <http://www.rfc-editor.org/info/rfc5226>. | <http://www.rfc-editor.org/info/rfc5226>. | |||
| [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content | |||
| Distribution Network Interconnection (CDNI) Problem | Distribution Network Interconnection (CDNI) Problem | |||
| Statement", RFC 6707, DOI 10.17487/RFC6707, September | Statement", RFC 6707, DOI 10.17487/RFC6707, September | |||
| 2012, <http://www.rfc-editor.org/info/rfc6707>. | 2012, <http://www.rfc-editor.org/info/rfc6707>. | |||
| End of changes. 26 change blocks. | ||||
| 53 lines changed or deleted | 61 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||