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/ |