| rfc8895v2.txt | rfc8895.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) W. Roome | Internet Engineering Task Force (IETF) W. Roome | |||
| Request for Comments: 8895 Nokia Bell Labs | Request for Comments: 8895 Nokia Bell Labs | |||
| Category: Standards Track Y. Yang | Category: Standards Track Y. Yang | |||
| ISSN: 2070-1721 Yale University | ISSN: 2070-1721 Yale University | |||
| September 2020 | October 2020 | |||
| Application-Layer Traffic Optimization (ALTO) Incremental Updates Using | Application-Layer Traffic Optimization (ALTO) Incremental Updates Using | |||
| Server-Sent Events (SSE) | Server-Sent Events (SSE) | |||
| Abstract | Abstract | |||
| The Application-Layer Traffic Optimization (ALTO) (RFC 7285) protocol | The Application-Layer Traffic Optimization (ALTO) (RFC 7285) protocol | |||
| provides network-related information, called network information | provides network-related information, called network information | |||
| resources, to client applications so that clients can make informed | resources, to client applications so that clients can make informed | |||
| decisions in utilizing network resources. This document presents a | decisions in utilizing network resources. This document presents a | |||
| skipping to change at line 1404 ¶ | skipping to change at line 1404 ¶ | |||
| stream server using its control update message(s), due to the modular | stream server using its control update message(s), due to the modular | |||
| design. | design. | |||
| 8. Examples | 8. Examples | |||
| 8.1. Example: IRD Announcing Update Stream Services | 8.1. Example: IRD Announcing Update Stream Services | |||
| Below is an example IRD announcing three update stream services. The | Below is an example IRD announcing three update stream services. The | |||
| first, which is named "update-my-costs", provides updates for the | first, which is named "update-my-costs", provides updates for the | |||
| network map, the "routingcost" and "hopcount" cost maps, and a | network map, the "routingcost" and "hopcount" cost maps, and a | |||
| filtered cost map resource. The second, which is named "update-my- | Filtered Cost Map resource. The second, which is named "update-my- | |||
| prop", provides updates to the endpoint properties service. The | prop", provides updates to the endpoint properties service. The | |||
| third, which is named "update-my-pv", provides updates to a | third, which is named "update-my-pv", provides updates to a | |||
| nonstandard ALTO service returning a multipart response. | nonstandard ALTO service returning a multipart response. | |||
| Note that in the "update-my-costs" update stream shown in the example | Note that in the "update-my-costs" update stream shown in the example | |||
| IRD, the update stream server uses JSON patch for network map, and it | IRD, the update stream server uses JSON patch for network map, and it | |||
| uses JSON merge patch to update the other resources. Also, the | uses JSON merge patch to update the other resources. Also, the | |||
| update stream will only provide full replacements for "my-simple- | update stream will only provide full replacements for "my-simple- | |||
| filtered-cost-map". | filtered-cost-map". | |||
| Also, note that this IRD defines two filtered cost map resources. | Also, note that this IRD defines two Filtered Cost Map resources. | |||
| They use the same cost types, but "my-filtered-cost-map" accepts cost | They use the same cost types, but "my-filtered-cost-map" accepts cost | |||
| constraint tests, while "my-simple-filtered-cost-map" does not. To | constraint tests, while "my-simple-filtered-cost-map" does not. To | |||
| avoid the issues discussed in Section 9.3, the update stream provides | avoid the issues discussed in Section 9.3, the update stream provides | |||
| updates for the second but not the first. | updates for the second but not the first. | |||
| This IRD also announces a nonstandard ALTO service, which is named | This IRD also announces a nonstandard ALTO service, which is named | |||
| "my-pv". This service accepts an extended endpoint cost request as | "my-pv". This service accepts an extended endpoint cost request as | |||
| an input and returns a multipart response, including an endpoint cost | an input and returns a multipart response, including an endpoint cost | |||
| resource and a property map resource. This document does not rely on | resource and a property map resource. This document does not rely on | |||
| any other design details of this new service. In this document, the | any other design details of this new service. In this document, the | |||
| skipping to change at line 2122 ¶ | skipping to change at line 2122 ¶ | |||
| version tag of the last version of any tagged resources and give | version tag of the last version of any tagged resources and give | |||
| those version tags when requesting the new update stream. In this | those version tags when requesting the new update stream. In this | |||
| case, if a version is still current, the update stream server will | case, if a version is still current, the update stream server will | |||
| not resend that resource. | not resend that resource. | |||
| Although not as efficient as possible, this recovery method is simple | Although not as efficient as possible, this recovery method is simple | |||
| and reliable. | and reliable. | |||
| 9.3. Considerations for Updates to Filtered Cost Maps | 9.3. Considerations for Updates to Filtered Cost Maps | |||
| If an update stream provides updates to a filtered cost map that | If an update stream provides updates to a Filtered Cost Map that | |||
| allows constraint tests, then an ALTO client MAY request updates to a | allows constraint tests, then an ALTO client MAY request updates to a | |||
| Filtered cost map request with a constraint test. In this case, when | Filtered Cost Map request with a constraint test. In this case, when | |||
| a cost changes, the update stream server MUST send an update if the | a cost changes, the update stream server MUST send an update if the | |||
| new value satisfies the test. If the new value does not, whether the | new value satisfies the test. If the new value does not, whether the | |||
| update stream server sends an update depends on whether the previous | update stream server sends an update depends on whether the previous | |||
| value satisfied the test. If it did not, the update stream server | value satisfied the test. If it did not, the update stream server | |||
| SHOULD NOT send an update to the ALTO client. But if the previous | SHOULD NOT send an update to the ALTO client. But if the previous | |||
| value did, then the update stream server MUST send an update with a | value did, then the update stream server MUST send an update with a | |||
| "null" value to inform the ALTO client that this cost no longer | "null" value to inform the ALTO client that this cost no longer | |||
| satisfies the criteria. | satisfies the criteria. | |||
| An update stream server can avoid having to handle such a complicated | An update stream server can avoid having to handle such a complicated | |||
| behavior by offering update streams only for filtered cost maps that | behavior by offering update streams only for Filtered Cost Maps that | |||
| do not allow constraint tests. | do not allow constraint tests. | |||
| 9.4. Considerations for Updates to Ordinal Mode Costs | 9.4. Considerations for Updates to Ordinal Mode Costs | |||
| For an ordinal mode cost map, a change to a single cost point may | For an ordinal mode cost map, a change to a single cost point may | |||
| require updating many other costs. As an extreme example, suppose | require updating many other costs. As an extreme example, suppose | |||
| the lowest cost changes to the highest cost. For a numerical mode | the lowest cost changes to the highest cost. For a numerical mode | |||
| cost map, only that one cost changes. But for an ordinal mode cost | cost map, only that one cost changes. But for an ordinal mode cost | |||
| map, every cost might change. While this document allows an update | map, every cost might change. While this document allows an update | |||
| stream server to offer incremental updates for ordinal mode cost | stream server to offer incremental updates for ordinal mode cost | |||
| skipping to change at line 2289 ¶ | skipping to change at line 2289 ¶ | |||
| future ALTO resource can contain multiple objects, then either each | future ALTO resource can contain multiple objects, then either each | |||
| individual object also has a resource-id or an extension to this | individual object also has a resource-id or an extension to this | |||
| design is made. | design is made. | |||
| At the low-level encoding level, new line in SSE has its own | At the low-level encoding level, new line in SSE has its own | |||
| semantics. Hence, this design requires that resource encoding does | semantics. Hence, this design requires that resource encoding does | |||
| not include new lines that can be confused with SSE encoding. In | not include new lines that can be confused with SSE encoding. In | |||
| particular, the data update message MUST NOT include "event: " or | particular, the data update message MUST NOT include "event: " or | |||
| "data: " at a new line as part of data message. | "data: " at a new line as part of data message. | |||
| If an update stream provides updates to a filtered cost map that | If an update stream provides updates to a Filtered Cost Map that | |||
| allows constraint tests, the requirements for such services are | allows constraint tests, the requirements for such services are | |||
| stated in Section 9.3. | stated in Section 9.3. | |||
| 12. IANA Considerations | 12. IANA Considerations | |||
| This document defines two new media types: "application/alto- | This document defines two new media types: "application/alto- | |||
| updatestreamparams+json", as described in Section 6.5, and | updatestreamparams+json", as described in Section 6.5, and | |||
| "application/alto-updatestreamcontrol+json", as described in | "application/alto-updatestreamcontrol+json", as described in | |||
| Section 5.3. All other media types used in this document have | Section 5.3. All other media types used in this document have | |||
| already been registered, either for ALTO, JSON merge patch, or JSON | already been registered, either for ALTO, JSON merge patch, or JSON | |||
| End of changes. 7 change blocks. | ||||
| 7 lines changed or deleted | 7 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||