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/