Subject: Re: [alto] Ben Campbell's Discuss on draft-ietf-alto-cost-calendar-09: (with DISCUSS and COMMENT)

From: "Randriamasy, Sabine (Nokia - FR/Paris-Saclay)" <[email-masked]>
Date: Mon, 14 Jan 2019 17:06:16 +0000

Hello Ben,

Thanks a lot for your review and questions. 
Please see inline for the answers and let me know if the proposals address your concerns.
A new I-D will be produced and a new WGLC will occur in the WG to ensure that
the changes proposed here are okay. 
The editorial and comments and Nits will be addressed as well. 

All my best wishes for 2019,
Best regards,
Sabine

-----Original Message-----
From: Ben Campbell <[email-masked]> 
Sent: Wednesday, December 05, 2018 5:37 AM
To: The IESG <[email-masked]>
Cc: [email-masked]; Gurbani, Vijay (Nokia - US/Naperville) <[email-masked]>; [email-masked]; Gurbani, Vijay (Nokia - US/Naperville) <[email-masked]>; [email-masked]
Subject: Ben Campbell's Discuss on draft-ietf-alto-cost-calendar-09: (with DISCUSS and COMMENT)

Ben Campbell has entered the following ballot position for
draft-ietf-alto-cost-calendar-09: Discuss

When responding, please keep the subject line intact and reply to all email addresses included in the To and CC lines. (Feel free to cut this introductory paragraph, however.)

Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.

The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-alto-cost-calendar/

----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

Thanks for the work on this document. I see value, but have a couple of points I think need to be resolved prior to publication:

§3.1, definition of "time-interval-size": What is the reasoning behind using a string to define the unit? That requires text parsing/comparison to determine the interval. I assume this is intended more for machine use than for human use. Did the working group consider making this a multiple of some primitive time interval? E.g. number of seconds, or perhaps number of minutes? it seems like that would be easier (and therefore less error prone) to interpret.

[[SR]] this has been indeed a concern raised in several reviews. The initial inspiration came from the encoding of filtering constraints in the filtered cost map input parameters, such as ["ge 5", "lt 10"] in RFC 7285 or ["[0] ge 5", "[1] lt 10"] in RFC 8189. 

We can actually take the opportunity of avoiding parsing errors as follows: 
- The value of "time-interval-size" is number defined in seconds. It is encoded in a  JSON number. ALTO servers SHOULD use at least IEEE 754 double-precision floating point [IEEE.754-2008] to store the cost value, and SHOULD perform internal computations using double-precision floating-point arithmetic.  
In section 2.1 we may stress that encoding length in JSON number of seconds cover periods gives room to cover large periods. 

Would this address your concern?

If there is a reason to use a text field, is there an enumeration of legal unit values? Can I use "12 parsecs"?
[[SR]] this would no longer be applicable is we use seconds as the time unit. 

§4.1.2, last paragraph: "The ALTO Client thus may use the same calendar for the next 4 days starting at "calendar-start-time" and will only need to request a new one for Friday July 4th at 00:00:00 GMT."

This implies that if an ALTO server delivers a calendar with a long duration, it cannot make changes to the metrics in that calendar, or if it does make them it cannot expect the client to learn about those changes. Is that the intent?
If so, it seems to contradict language in the security considerations (§6) that future events may change and that the client should ensure information updates.
(The operational considerations [§7] also say the client does not need to query again during the calendar duration.)

[[SR]] Indeed, this issue should be addressed in the document and the following is proposed:
- Section 2 Overview of ALTO Cost Calendars, after paragraph 4, says: 
"An ALTO Cost Calendar can be used like a "time table" to figure out the best time to schedule data transfers and also to proactively manage application traffic given predictable events such as flash crowds, traffic intensive holidays and network maintenance. It may be viewed as a synthetic abstraction of real measurements that can be historic or be a prediction for upcoming time periods."
Add the following text: 
"However, like for any schedule, unexpected network incidents may require the current ALTO Calendar to be updated and re-sent to the ALTO Clients needing it. To this end, it is RECOMMENDED that an ALTO Server providing ALTO Calendars also provides "ALTO Incremental Updates Using Server-Sent Events" as specified in [draft-ietf-alto-incr-update-sse], and likewise, that ALTO Clients capable of using ALTO Calendars can also use ALTO Incremental updates."

- In §4.1.2: extend the example in the last paragraph with how an ALTO Client can receive incremental updates when an incident in the network causes updates in the current version of the ALTO Calendar.

- In §6 security considerations: repeat this text and stress that it is especially used when Calendars with "repeated" values are used.

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

I also have a number of substantive and editorial comments that do not rise to the level of a DISCUSS:

*** Substantive Comments ***

- General: (No action expected): For future reference, this is the sort of draft that I think should be referred to the ART area review team for review.
It's effectively an application layer protocol, even if it affects transport layer decisions. (I note that none of the requested directorate reviews appear to have happened either, which is unfortunate.)

§2, 4th paragraph: "that can be historic": I don't see mention of how historic data would be used. Maybe I missed something?
[[SR]]  Maybe replace "It may be viewed as a synthetic abstraction of real measurements that can be historic" 
with 
"It may be viewed as a synthetic abstraction of for example real measurements gathered over previous periods on which statistics have been computed"

§2.2.1, 2nd paragraph: Please elaborate on what is meant by "carefully managed". What specific things need to be considered?
[[SR]]  Is the following wording clearer?
"... a Calendar is suitable as well for time-varying metrics provided in the "ordinal" mode, if these values are time-varying and their update is managed by the ALTO Server and utilized by ALTO Clients with awareness on the specific operations allowed on ordinal values."

§2.2.2, 3rd paragraph: This needs elaboration. I think it means that it must be possible to retrieve  the "now" version of the metric, but one could not retrieve a future value as a single value.
[[SR]] The sentence actually intended to express that: 
"When a Server provides a metric as a Calendar, it MUST also provide it as a single value as specified in [RFC7285]." 
Would this formulation be clearer?

§3.1,
- 3rd paragraph: "A member "calendar-attributes" MUST appear only once": Does that mean exactly once? No more than once?
[[SR]] it means no more than once. Actually "cost-type-name" in this paragraph should be without "".  
Would the following formulation be OK?
"Calendar attributes MUST be specified no more than once for each cost type name of a resource entry. If, in the "calendar attributes" member of the "capabilities" member of a resource entry, a cost type name appears several times,  the ALTO client SHOULD consider only the attributes specified for the first occurrence of this cost type name and ignore calendar attributes specified for any additional occurrence of this cost type name. "

- note after definition of "number-of-intervals": Where is "cost-type-name"
defined? Was this meant to be "cost-type-names"? If so, this paragraph makes it sound optional, but it was not shown as optional in the schema.
[[SR]] sorry, this is a typo, "s" is missing and it should be "cost-type-names". The dashes before the 2 paragraphs after definition of "number-of-intervals" are misleading and will be removed to avoid their confusion with field definition. 
In addition, expression "if used" will be removed as well in sentence "Attribute "cost-type-name" , if used, provides...", as this attribute is not optional. 

§4: It is not clear from the text if it saying the time zone is GMT in the example, or if it is always GMT. I assume the former, but the wording of the last paragraph suggests that the use of the HTTP header field format forces the time zone to always be GMT.

[[SR]] Paragraph 4 will specify the following 
"The dates in Calendar attributes are encoded following RFC7231 "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content", where section 7.1.1.1 "Date/Time Formats" specifies that the preferred format is a fixed-length and single-zone subset of the date and time specification used by the Internet Message Format [RFC5322]."
"Note that the time zone is actually UTC, per RFC 7231, even though timestamps get displayed with the acronym "GMT." (as Alissa wrote). 

§4.1.1:

- Third paragraph:  I assume each entry corresponds to the requested metric at the same array position? If so, please say that explicitly.

4th paragraph: 'This field SHOULD NOT be specified if no member "calendar-attributes" is specified in this information resource.' Why is the SHOULD NOT not a MUST NOT?  (Also, should "specified" be "included"?)
[[SR]] agree, it will be a MUST NOT and "included" will replace "specified".

- 2nd to last paragraph: I don't understand the purpose of this paragraph. I assume "supporting single cost type values" means "only supporting" them. Why would the client request calendared values in the first place if it only supported single values?
[[SR]] The wording indeed is unclear. These 2 paragraphs distinguish between Calendar-aware Clients that can query values for resp. a single cost type and multiple cost types as specified in RFC8189. 
Would the following formulation be ok for each paragraph:
- "A Calendar-aware ALTO client that can query values for a single cost type, as specified in [RFC7285], ...."
- "A Calendar-aware ALTO client that can query values for multiple cost types cost type, as specified in [RFC8189], ...." 

- last paragraph: How is this different than the requirement in the 2nd paragraph?
[[SR]] see response above. 

§4.1.2
- first paragraph: "All arrays have a number of values equal to ’number-of-intervals’."

Which "number-of-intervals" does this talk about? The one in the capabilities or in "Calendar ResponseAttributes"?
[[SR]] Actually both values are the same. This is specified later in this section in the description of the Calendar ResponseAttributes fields.
How about re-phrasing as:
 "All arrays have a number of values equal to the value of member ’number-of-intervals’ of the Calendar capabilities that are indicated in the IRD and will be conveyed as metadata in the Filtered Cost Map responses.  Each element of the array is valid for the time-interval that matches its array position."

Does that mean each element is valid for the time-interval that matches its array position? If so, please say that explicitly.
[[SR]] see answer above

I'm surprised to see this require a metric entry for each individual time interval. It your want a high resolution of time intervals, you may end up with a large number of entries. Did the WG consider making it possible to have a single metric entry cover multiple time intervals? As this is currently defined, I think there needs to be guidance to implementors that they need to balance calendar length and granularity against the required number of metric entries.
[[SR]] indeed, one may need high resolution intervals when values change sometimes during very small time intervals but in a significant manner. And a way to avoid conveying too many entries is to leverage on the "repeated feature". A server can smartly set the calendar start time and number of intervals so as to declare them "repeated" for a large number of periods, until the Calendar containing different values.  
Should this explanation be added to section 4.1.2 and/or to section 7. Operational considerations

- definition of "Calendar-start-time" Please elaborate on why the start time SHOULD be no later than the current date? (Also, consider "SHOULD NOT be
later...")
[[SR]] ok, will use SHOULD NOT
[[SR]] we may add: "so that the ALTO Client, immediately has applicable values. In addition, reading the Calendar start time and duration, the Client can figure out when the next Calendar will start." 

§6: last paragraph:
- I'm not sure what it means for a repeat pattern to be "statistical".
[[SR]] how about replacing "a repeat pattern may be only statistical" with "Calendar values, especially in "repeated" Calendars may be only statistical" ?
- The guidance that future events can change and the client should ensure information updates seems to conflict with guidance elsewhere that the client does not need to requery until a calendar duration ends. (See DISCUSS point.)
[[SR]] this will be addressed according to your feedback on the proposal on this discuss point

*** Editorial Comments and Nits ***

- IDNits reports some issues; please check.

- Abstract: Please expand ALTO on first mention in the abstract and the body.

§1
- Please expand PID on first mention.

- 6th paragraph:
-- "specified by information
resources capabilities": should that be something to the effect of "specified in terms of resource capabilities"? -- please expand IRD on first mention -- "the proposed extensions": They will no longer be "proposed" once this is published as an RFC.

§2
- paragraph 4: "flash mobs" seems like an odd example of a predictable event, at least to anyone other than the event organizers and participants.

§2.1,
- first bullet: "attributes to interpret the time scope": I think the client does the interpreting. Perhaps "attributes to describe the time scope"? -
"repeated": I gather there is no option for unbounded repetition; it would be worth mentioning that up front.

§3.1, third paragraph: "If "calendarattributes"
are specified several times"
I assume this means "more than one" time. "Several" often connotes a number greater than a "few" but less than "many". That is, people may not think of "2"
as "several".

- Please cite the json schema format you are using. I assume it is the one defined in the alto protocol RFC, but that should be mentioned explicitly.

- last paragraph: First sentence is hard to parse.

§3.2, first paragraph, first sentence: I'm not sure what "clarify" means in context; was that the correct word choice?

§3.3, first paragraph: "As [RFC7285] makes it mandatory, it uses metric "routingcost" in the "numerical" mode."
The antecedents for both occurrences of "it" have unclear antecedents.

§4.1.2
- First paragraph: The first sentence is confusing.  I think it means "instead of the format used by legacy implementations", but it con be interpreted the say that arrays are used for legacy implementations. - 2nd paragraph: "include at least" doesn't really fit the content of the list entries. - first major
bullet: I suspect "supports" should be "requested". (same for 2nd major bullet)

- paragraph starting with "- In addition, the "meta" field..." If this is required, why was it not included in the bullet list of required information?

- definition of "calendar-start-time" : I don't understand how "by default"
interacts with SHOULD.

§5, last paragraph: "For potential undesirable guidance of ALTO information..."
That wording is confusing. I suggest something like "To avoid malicious or erroneous guidance from ALTO information..."