Re: [alto] Opsdir last call review of draft-ietf-alto-cost-calendar-16

Schönwälder, Jürgen <> Wed, 19 February 2020 09:37 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 772A71200F1; Wed, 19 Feb 2020 01:37:55 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 1.436
X-Spam-Level: *
X-Spam-Status: No, score=1.436 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_NONE=0.001] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id CmUEl6fw42Oy; Wed, 19 Feb 2020 01:37:52 -0800 (PST)
Received: from ( [IPv6:2a01:111:f400:fe0c::616]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 822DB1200B5; Wed, 19 Feb 2020 01:37:51 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901;; cv=none; b=dF/etCOHrUpSDsYEKFRZCRTZqKUltCTl0CXG473pidUXxdUCtKK773y/DuqhAnEI0s95tSshi4YGUIa03xAkKr8gEdM94STYILQb462r1nvPSJ5ncEt9GUx3fjqWVQ+BY0D6UW29emG1gO9EpYUkuDnvV9c8XNCba7XVBVADioO5j3u/iml3rLZe/0hWXOfIir6OTL7rKz+nZmQS9gNbD3lXX/Lwsj5YM6oHg12ps7uIiAjKnJGuDL/s1VLjVnKfK1sqG3qC18HdAIye4QDyl1fXMXW36jQoLu1SMmNAaWWBedGdvIEKlNeLgREN9tbC0/UJ3jV+LXOBhGYguONOJg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LOTgyOQw5yktteREIQOq7v3xnPEeCDqICa6RZJHW5Mw=; b=FeCUQ3pi26GgHev7LmC2wTg6ef6uH9ZBWAVHYvGG5OnxPM60pB4lqgE9zwbOGkOEBou8T/oQzb+lPsOHXeXstaRGWpCWG8JUizxrjkAnot9ImS60tTz8LlN/A9atLd5VfCn7dcMlJE2ThnqgYmGgxV8peX6lx3hzR5NKYL3k6zRRXNUyvov13XebpfVvQL60mOxqjxK9XTYowRRbNh5qJ6WrwvF2uJbBIc5AQvNVNxtBoyVXKnGh0lISkUYcId4w0aAWQF5vXxLOTQV8xtLevH3pZuW6oO3W+EQn2IGn4KIeuIrgwDXqKRQyAvlENew6PUPibYGOlgsUTZ+tMT8Pug==
ARC-Authentication-Results: i=1; 1; spf=pass; dmarc=pass action=none; dkim=pass; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector2-jacobsuniversity-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LOTgyOQw5yktteREIQOq7v3xnPEeCDqICa6RZJHW5Mw=; b=X/SbFCW/hDOVYsnRcLDqWNTM4GL4Z19d5mF4a4E2c5kXOZAwZmQ4qwGUUlfn0aB4R5H18CxIElyE6FXMEJ9YaUYekapLENZ46lVG/HGNAV7ZDIsMNo1Bi0LCpPT6dZWMuAuDEaZ18qxV28DK6E1oSGjE9RmBSa3sKwWBDVrLIVs=
Received: from DB6P190MB0312.EURP190.PROD.OUTLOOK.COM ( by DB6P190MB0502.EURP190.PROD.OUTLOOK.COM ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2729.25; Wed, 19 Feb 2020 09:37:48 +0000
Received: from DB6P190MB0312.EURP190.PROD.OUTLOOK.COM ([fe80::2cda:e754:4835:c579]) by DB6P190MB0312.EURP190.PROD.OUTLOOK.COM ([fe80::2cda:e754:4835:c579%3]) with mapi id 15.20.2729.032; Wed, 19 Feb 2020 09:37:48 +0000
Received: from localhost ( by (2603:10a6:208:14::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.17 via Frontend Transport; Wed, 19 Feb 2020 09:37:48 +0000
From: =?iso-8859-1?Q?Sch=F6nw=E4lder=2C_J=FCrgen?= <>
To: "Y. Richard Yang" <>
CC: "" <>, "" <>, IETF ALTO <>, "" <>
Thread-Topic: Opsdir last call review of draft-ietf-alto-cost-calendar-16
Thread-Index: AQHV5rSmz57sgTMBO0iyIGf4enedGKgiQxIA
Date: Wed, 19 Feb 2020 09:37:48 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Reply-To: =?iso-8859-1?Q?Sch=F6nw=E4lder=2C_J=FCrgen?= <>
Accept-Language: en-US
Content-Language: en-US
x-clientproxiedby: (2603:10a6:208:14::19) To DB6P190MB0312.EURP190.PROD.OUTLOOK.COM (2603:10a6:6:34::31)
authentication-results: spf=none (sender IP is );
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: []
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 372d81dc-aaca-42d6-b96d-08d7b51f619f
x-ms-traffictypediagnostic: DB6P190MB0502:
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <DB6P190MB0502EE789C9FBB0C1E0F751ADE100@DB6P190MB0502.EURP190.PROD.OUTLOOK.COM>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0318501FAE
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39850400004)(366004)(136003)(346002)(376002)(189003)(199004)(16526019)(53546011)(186003)(26005)(6916009)(1076003)(5660300002)(66574012)(6486002)(8676002)(81156014)(30864003)(86362001)(81166006)(8936002)(64756008)(66476007)(66446008)(478600001)(66556008)(71200400001)(52116002)(66946007)(3450700001)(296002)(786003)(956004)(54906003)(316002)(4326008)(6496006)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6P190MB0502; H:DB6P190MB0312.EURP190.PROD.OUTLOOK.COM; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None ( does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: JjXlvkwA4bKhJp/CIIuI6Pj7YnmNE68feW97Ti8a+5CgC1ZWbeYzB3O5HNJUGP4d5v5LUqVJN1jZ7vSglg8eQK0A7y0tEDaDDHC7WkAnQ4itiNJyDU5aZ/bCOt05VOEPZuhqI8N9gIDN0q0iow/l2Kgx95z/EZ1OC2q0ReKQsYwsHv9vslvqAlUDUx9qpFRPsg44LOTvRUQxeONK3Dn6C5ZPrVTa++7ucii1iIVBNE1obCYPEa0w8YdGbll6lvlOK++19DxLTi7CjL/bDSf+90F2iRAyxxX7nABP65olfd6PNMWIVfUEyodzh3O5yEC/EbeNC8sq9pMebouyhx4Rho5zGoZPxZMNBlTDN69IsSGyILdDFzejJAXto+MoU0GYNRoFC+83cZyrlVk+W2mM6FiJWatzZ4OYLphsh7NYGsBFntpCE93aTjQgE0bOrU3k+p2dxdwZl10/ngqsdpXA7YK+0YIXtq8dB/StDStsbx8QQjojrR4cH47YKex/X9R0BTsvNHzlsqcWqAeb4E+kYg==
x-ms-exchange-antispam-messagedata: ftiLn8XVAR3VettB1qcpLX01XfArrXOJj+Ia08yhIi3FGbc5NVlz31HTggF/T7mJZNTbQ938lYzwlqxoskJ2pwPam1pQUaVJ8+lsk3vW6LeFERKlBotOq6uUcWFf9JHwj2XKNJ1Zg2dyGw4DIMlDEw==
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 372d81dc-aaca-42d6-b96d-08d7b51f619f
X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Feb 2020 09:37:48.5064 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f78e973e-5c0b-4ab8-bbd7-9887c95a8ebd
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Rp2sAyINSuwjBi8nOYB3NNOIIiYArQo/lgFxN5atRmLmivHq8WwA8Wc5a3/kBpcULp16GFnk9GQqyASkBrfwwYvOX9aqLi3ZqoXL8h5pcb8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6P190MB0502
Archived-At: <>
Subject: Re: [alto] Opsdir last call review of draft-ietf-alto-cost-calendar-16
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Application-Layer Traffic Optimization \(alto\) WG mailing list" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 19 Feb 2020 09:37:56 -0000

Dear authors,

I will comment inline...

On Tue, Feb 18, 2020 at 06:39:04PM -0500, Y. Richard Yang wrote:
> Dear Jürgen,
> Thank you so much for the careful reviews. The lead author of the document
> is Sabine and the response below is formulated by her and then discussed
> among the authors. Since she is off this week, so let me send the response
> on her behalf to make progress.
> Her response for an item will start with ---- [[SR]] and end with ----
> Please see below.
> On Tue, Feb 11, 2020 at 4:49 AM Jürgen Schönwälder via Datatracker <
>> wrote:
> > Reviewer: Jürgen Schönwälder
> > Review result: Has Issues
> >
> > I am not an ALTO expert so keep this in mind in case some of my
> > comments have little meaning for ALTO experts.
> >
> > - If multiple clients retrieve information about costs in the future
> >   and take independent scheduling decisions based on that information,
> >   it might turn out that a "cheap" time turns into "expensive" time,
> >   i.e., the result may not be an improvement of QoE but rather the
> >   opposite. How is this dealt with? I see this issue touched on in
> >   some places and the suggestion seems to be the advice to implement
> >   SSE. But should ALTO servers make promises long into the future if
> >   clients do not implement SSE?
> >
> >   I am concerned that announcements of "cheap" times can easily turn
> >   into instabilities if many clients start to opt for the announced
> >   "cheap" times and I think this deserves to be discussed explicitly
> >   in the Operational Considerations section.
> >
> >
> Good comment! We will do some reorganization to more explicitly,
> systematically discuss this issue. In particular, we plan to make explicit
> the following considerations in the Operations Considerations section
> (Section 8):
> It is important that both the operator of the network and the operator of
> the applications consider both the feedback aspect and the prediction-based
> (uncertainty) aspect of using the cost calendar. Consider the cost calendar
> as a traffic-aware map service (e.g., Google map). Using the service
> without considering its own effect, a large fleet can turn a not-congested
> road into a congested one; a large number of individual cars each choosing
> a road with light traffic ("cheap link") can also result in congestion or
> result in a less optimal global outcome (e.g., the Braess's Paradox
> [citation]); an accident may happen and hence cause unexpected delays.
> Although individual network operators and application operators can choose
> their own approaches to address the aforementioned issues, this document
> recommends the following considerations. First, a typical approach to
> reducing instability and handling uncertainty is to ensure timely update of
> information. Hence, the "ALTO Incremental Updates Using Server-Sent Events
> (SSE)" Service [draft-ietf-alto-incr-update-sse] SHOULD be used to update
> the calendar faster if supported by both the server and the client."
> Second, Although there are theoretical analysis [RoughgardenThesis] and
> Internet based evaluations [SIGCOMM2013SelfishRouting] showing that
> uncoordinated behaviors may not result in substantial sub-optimal
> results, when a network operator updates the cost calendar, and when an
> application reacts to the update, they should still consider the potential
> feedback effects.

Thanks. I was looking for something like this. 
> > - p6: "time zone (in UTC)" ?? do you mean "time zone offset relative
> >   to UTC"? After reading, I think this is misleading. Perhaps you
> >   wanted to say "start time (including time zone)"
> >
> > ----- [[SR]]
> As the time zone in the provided start time is always UTC+0, would the
> following update be OK?:
> - remove text item "time zone (in UTC)"
> - update the "calendar-start-date" description in the next paragraph as
> follows:
> "calendar-start-date": specifying when the Calendar starts, that is to
> which date the first value of the Cost Calendar is applicable.
> "calendar-start-date": specifying when the Calendar starts, that is to
> which date the first value of the Cost Calendar is
> applicable. The reference time zone for the provided time values is UTC.
> -----

Is this not 'calendar-start-time' later on? Or are calendar-start-date
and calendar-start-time two different things?

If times are always in UTC, then why not say: 

      The calendar-start-(date|time) is always expressed in UTC.

This way the reader does not have to think about what a reference time
zone might be.
> > - p7: broken sentence
> >
> >    The extensions in this document and encode requests and responses
> >    using JSON [RFC8259].
> >
> > ----- [[SR]]
> yes, thanks: "and" should be removed. New text will be:
> "The extensions in this document encode requests and responses using JSON
> [RFC8259]."
> -----

> > - p7: editorial nit
> >
> >   OLD
> >
> >   this document extends: the IRD, the ALTO
> >
> >   NEW
> >
> >   this document extends the IRD and the ALTO
> >
> ----- [[SR]] thanks, and we will update.

> > - I am a bit concerned about changing the type of json fields, i.e.,
> >   from a number to an array of numbers. The ALTO specifications may
> >   allow this but is there a certain risk of implementations not being
> >   smart in handling this correctly? Were alternatives considered that
> >   do not change the type of existing json fields? Given the explicit
> >   text why this is OK from an ALTO perspective, it might be that the
> >   WG did iterate on this (sorry if I raise a closed issue again).
> >
> >
> ----- [[SR]]
> Indeed the ALTO WG did iterate on this. In the base protocol RFC7285
> section, an ALTO cost is specified as a generic JSONValue, to
> allow extensions. Implementations of 7285 SHOULD assume it is a JSONNumber,
> and the implementor of this extension should consider the issue. We will
> add a sentence to alert the implementor.
> -----

> > - p9: can a time-interval-size be negative? can it be zero?
> >
> >  ---- [[SR]]
> it can neither be negative nor equal to zero. Would the following addition
> be OK?
> A "time-interval-size" value contains a JSONNumber.
> A "time-interval-size" value contains a positive integer JSONNumber (i..e,
> greater than zero integer).

This is a change from double precision floating point number to an
integer.  Was that the intention of this change?
> - p9: what does 'at least equal to 1' mean? Do you mean 'a positive
> >   integer number of values'?
> >
> >
> ----- [[SR]] yes, Would the following update be OK?
> the integer number of values of the Cost Calendar array, at least equal to
> 1.
> the positive integer number of values of the Cost Calendar array, at least
> equal to 1.

> > - p14: I am confused about the time zone aspect. The time zone pops up
> >   in section 3.2 but it is a bit unclear what is meant there (see
> >   above). On page 14, there is a statement about a 'reference time
> >   zone' (what is this?)  and then there is text about HTTP header
> >   fields, and I am lost how that format relates to the rest of the
> >   document. Was the idea to say that calendar-start-time uses the HTTP
> >   header time format? Then say this where calendar-start-time is
> >   defined. And why do you use the HTTP format and not RFC 3339 format?
> >   Perhaps this data format for date and time is popular in ALTO and
> >   hence it makes sense, I guess I do not know enough about it. Anyway,
> >   the time zone seems to be part of the calendar-start-time - if so
> >   this was not clear while reading top-down. And if there is free
> >   choice for the data and time format, I would find RFC 3339 probably
> >   a good robust alternative.
> >
> >
> ----- [[SR]]
> Section 3.2 is part of an overview and was meant to define "what" the items
> describe rather than how they are encoded. So the format specification as
> an HTTP header field format was left to normative section 5 in page 14.
> How about we add a sentence in section 3.2, in addition to the update
> proposed above, as follows:
> "calendar-start-date": specifying when the Calendar starts, that is to
> which date the first value of the Cost Calendar is applicable.
> "calendar-start-date": specifying when the Calendar starts, that is to
> which date the first value of the Cost Calendar is applicable. The
> reference time zone for the provided time values is UTC.
> This document specifies the use of the HTTP header time field format
> specified in [RFC7231].
> Indeed, this data format for date and time is popular in ALTO.
> -----
I am fine if section 3.2 is silent about the timezone as long as the
definition in section 5.1.2 is clear about the timezone. (And under
the assumption that calendar-start-time is the same as
> > - p17: Why is this SHOULD needed? Because you want to ensure that
> >   there is always a value that can be used 'right now'? What about
> >   values that are stale, i.e., calendar-start-time is way in the past?
> >
> >       [...] The value provided for the "calendar-
> >       start-time" attribute SHOULD NOT be later than the request date.
> >
> >
> ----- [[SR]] Yes, this is the idea. If the IRD indicates it provides a
> Calendar for a given cost type of a given resource, it should provide a
> value that the Client can use when it requests one. The Client can figure
> out when to request the next Calendar, if needed, by multiplying the
> Calendar attributes "time-interval-size" and "number-of-intervals".
> We plan to add this comment on page 18, before the comments on attribute
> "repeated". How does this sound?
> -----

> > - p17: I am confused by the description of "repeated". Is the intent
> >   to say that the calendar value array simply repeats N times? Am I
> >   right in assuming that if "repeated" is not present, it defaults to
> >   1?
> ----- [[SR]]
> yes, if member "repeated" is not present, it means that the calendar value
> array is only valid for 1 time.
> Would the re-phrasing below for paragraph 1 be clearer?
> [...] The number N includes the provided iteration
> [...] The number N includes the iteration provided in the returned response.
> ----

> > Or does "repeated" always have to be present? (Similarly for
> >   number-of-intervals, can it be absent and then it defaults to 1?
> >
> ----- [[SR]] the member "number-of-intervals" is not optional and is
> defined in section 4.1 as an in integer at least equal to 1
> -----

> > - In which sense is draft-ietf-alto-incr-update-sse normative given
> >   that the current text says 'can be used' but does not mandate its
> >   use?
> ---- [[SR]]
> this draft is cited in section 3 that is actually non-normative, in which
> it was thus decided to avoid normative terms.
> How about we start section 3 with the following text, like in RFC8189 which
> is also an ALTO extension?
>   "The following is a non-normative overview of the multi-cost ALTO
> extensions defined in this document. It assumes the reader is familiar with
> the ALTO protocol [RFC7285]."
> -----

I do not think that all references in a normative section
automatically need to be normative. The question is typically "Can I
implement the specification without using a certain reference?" Given
that SSE is not mandatory to implement, it seemed to me that the
reference to SSE is non-normative.

> > In which sense is RFC 8259 normative? Is it required to make
> >   ALTO clients and servers switch to RFC 8259? The Operational
> >   Considerations section says "RECOMMENDED" to switch. But how does an
> >   implementation work that does both RFC7285 (w/o UTF-8) and RFC8259
> >   (with UTF-8)? I think a clearer message that ALTO clients and
> >   servers implementing this extension must comply to RFC 8259 is
> >   desirable.
> >
> >
> ----- [[SR]]
> RFC7285 reference RFC7159 and encodes JSON text in UTF-8, UTF-16,UTF-32,
> UTF-8 is default encoding format according to section 8.1 of RFC7159.
> Since RFC7159 has been replaced by RFC8259 after the publication of
> RFC7285, and since RFC7285 sets mandatory encoding to UTF-8, we will
> change RECOMMENDED to MUST, as you suggested. How does this sound?
> -----

This seems more consistent (but ultimately ALTO implementors must
decide whether requiring UTF-8 only is an issue for them).
> > - Since you write "SHOULD at least IEEE 754 double-precision floating
> >   point", does this not make the IEEE 754 reference a normative
> >   reference?
> ----- [[SR]] The text follows RFC7285, section,  in which IEEE 754
> is an informative reference and cited with a SHOULD.
> ----

On second thought, I wonder whether you really want to mandate how a
value is 'stored'. Perhaps you wanted to require 'SHOULD use at least
support IEEE 754 double-precision floating point [IEEE.754.2008]

Note that several lines up you suggested to change to integer, but I
am not sure you wanted that - please double check that you get this
right. Anyway, since you refer to properties of a concrete formats
defined in another document, it seems to me the reference is actually

In general, I find the double precision requirement a bit irritating
given the large range of numbers doubles can represent (roughly from
2.2x10^-308 to 1.8x10^308). And yet, many practically useful numbers
such as 0.1 can't be represented exactly as floating point numbers,
i.e., there is always rounding involved, making comparisons rather

Often people want to have doubles in the hope that this maximizes the
chances of not getting hit by rounding issues but the sad truth is that
floating point numbers remain dangerous.

> > Similarly, if you import the data format from HTTP/1.1,
> >   does this not make the HTTP/1.1 RFC a normative reference?
> >
> >
> ----- [[SR]]
> Our plan is to make HTTP header fields format [RFC7231] a normative
> reference, but a question for you: since RFC7285 lists RFC7231 as an
> informative reference, if we were to follow RFC7285, 7231 would be
> informative as well, but we agree that listing 7231 as a normative
> reference makes more sense. OK?
> -----

I think your definition of calendar-start-(date|time) normatively
imports the Date/Time Format defined in section of RFC 7231
and hence I think your document has a normative reference to RFC 7231.
It does not matter for your document what RFC 7285 has a normative /
informative references.


Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <>