Hi Bernard,

We have made a pre-release of the new transport document based on your review 
and some others'. You can see the updates using the link below and here is a 
short summary:

- Requirements for the document are summarized in Section 2.1 Transport 
Requirements. The requirements are slightly different from what we responded in 
previous emails. Please take a look and see if these requirements make sense to 
you.
- The ability to offer "layered coding" or as we call shortcuts is preserved 
but how to do the layered coding is left outside the scope of the document. See 
sections 7.4 and 9.8 for related specifications and implementation 
considerations.

Please let us know if the updates address your comments. We look forward to 
your feedback!

Diff with -07:
https://author-tools.ietf.org/diff?doc_1=draft-ietf-alto-new-transport-07&url_2=https://github.com/ietf-wg-alto/draft-ietf-alto-new-transport/releases/download/draft-ietf-alto-new-transport-08-snapshot-20230426/draft-ietf-alto-new-transport-08.txt


Best,
Kai


> -----Original Messages-----
> From: kai...@scu.edu.cn
> Sent Time: 2023-03-23 00:58:30 (Thursday)
&gt; To: "Bernard Aboba" <bernard.ab...@gmail.com>
&gt; Cc: tsv-...@ietf.org, alto@ietf.org, 
draft-ietf-alto-new-transport....@ietf.org
&gt; Subject: Re: Tsvart early review of draft-ietf-alto-new-transport-07
&gt; 
&gt; Hi Bernard,
&gt; 
&gt; Thanks for the enlightening review. Please see the responses inline.
&gt; 
&gt; Best,
&gt; Kai
&gt; 
&gt; 
&gt; &gt; -----Original Messages-----
&gt; &gt; From: "Bernard Aboba via Datatracker" <nore...@ietf.org>
&gt; &gt; Sent Time: 2023-03-16 04:49:06 (Thursday)
&gt; &gt; To: tsv-...@ietf.org
&gt; &gt; Cc: alto@ietf.org, draft-ietf-alto-new-transport....@ietf.org
&gt; &gt; Subject: Tsvart early review of draft-ietf-alto-new-transport-07
&gt; &gt; 
&gt; &gt; Reviewer: Bernard Aboba
&gt; &gt; Review result: Not Ready
&gt; &gt; 
&gt; &gt; This is an early review of draft-ietf-alto-new-transport-07
&gt; &gt; 
&gt; &gt; The comments below are coming from a perspective based on recent work 
on media
&gt; &gt; delivery over QUIC in which scalable video coding can be combined 
with HTTP/3
&gt; &gt; and/or WebTransport features supporting partial reliability so as to 
deliver
&gt; &gt; media that is both resilient as well as low-latency.  However, the
&gt; &gt; considerations described below may not apply to ALTO, so please feel 
free to
&gt; &gt; ignore them if they make no sense.
&gt; &gt; 
&gt; 
&gt; KAI: I like the connection to media delivery. I see that there are some 
similarities,
&gt; for example, snapshots to I-frames and incremental updates to P-frames. 
Could you 
&gt; please give us some pointers to the work you are referring to? 
&gt; 
&gt; &gt; Overall, the document does not lay out the transport requirements 
explicitly,
&gt; &gt; and so it is hard for me to tell whether the proposed design is 
optimal or not.
&gt; &gt;  In particular, it would be useful to understand the desired 
reliability vs.
&gt; &gt; latency tradeoff, as well as the requirements for backward 
compatibility (e.g.
&gt; &gt; need to operate over HTTP 1.x as well as HTTP/2 and HTTP/3).
&gt; 
&gt; KAI: You are right and it's a very good suggestion to put forward the
&gt; requirements first. We will put a new section in the next revision. Some 
key
&gt; requirements include:
&gt; 
&gt; 1. Availability: Clients can subscribe at any time and are still able to 
get
&gt;    a complete snapshot.
&gt; 2. Efficiency: Enable concurrent delivery of the update data. Enable 
selective
&gt;    delivery of update data.
&gt; 3. Backward compatibility: The mechanism can operate over HTTP/1.x as well 
as
&gt;    HTTP/2 and HTTP/3. The mechanism should reuse constructs from previous 
ALTO
&gt;    standards.
&gt; 
&gt; &gt; 
&gt; &gt; There seems to be a requirement for the protocol to support HTTP 1.x 
as well as
&gt; &gt; HTTP/2 and HTTP/3, but this is not stated explicitly, nor is it 
justified. In
&gt; &gt; other WGs desiring to use the new capabilities of HTTP/3, a decision 
has
&gt; &gt; sometimes been made to limit the level of backward compatibility 
(e.g. support
&gt; &gt; for HTTP/3 and HTTP/2 only) in order to make it possible to take full 
advantage
&gt; &gt; of the features of HTTP/3.  This decision is easier to make for a new 
protocol
&gt; &gt; than for one which already has significant HTTP 1.x deployment. So if 
the
&gt; &gt; transport approach used here is contrained by the existing HTTP/1.x
&gt; &gt; deployments, it would be useful to say so up front.
&gt; 
&gt; KAI: We will make this requirement explicit in the next revision. Early 
versions of
&gt; this draft does constrain the HTTP version to HTTP/2 and HTTP/3 but after 
the
&gt; discussion with Mark Nottingham (after the HTTP early review) and the 
chairs, we
&gt; realize that the core of the design does not rely on HTTP/2 or HTTP/3. 
Thus, the
&gt; decision is to make the core mechanism independent of HTTP versions but 
enable 
&gt; enhanced features when HTTP/2 or HTTP/3 is used.
&gt; 
&gt; &gt; 
&gt; &gt; Also, the requirements for reliability and latency are not explicitly 
laid out.
&gt; &gt; The diagrams show incremental update N+1 always depending on update 
N.  Is this
&gt; &gt; an inherent limitation imposed to meet a requirement, or is it a 
choice that
&gt; &gt; could potentially be modified? For example, do bad things happen if a 
client
&gt; &gt; were to obtain a coherent set of information at times N and N+2 but 
not at time
&gt; &gt; N+1? Or would it be better to delay receipt of the N+2 info so as to 
allow for
&gt; &gt; the retransmission of N+1 info?
&gt; &gt; 
&gt; 
&gt; KAI: Thanks for the comment. One small clarification: the N and N+1 are 
not id for
&gt; the incremental updates, they actually refer to the logical version of the 
content.
&gt; The content of the data is always the same as long as the updates along a 
legitimate
&gt; path from an old version to the new version are applied sequentially.
&gt; 
&gt; It is true that the draft requires that the incremental update from N to 
N+1 always
&gt; exists (to enable long-polling), but it is legitimate to have an 
incremental update
&gt; from N to N+2. So I wouldn't say that it's a choice but it is not a hard 
constraint
&gt; either. Then in the TIPS view the server will return something like:
&gt; 
&gt; <tips-view-root>
&gt; - ug
&gt;   - 0
&gt;     - ...
&gt;   - N
&gt;     - N+1
&gt;     - N+2 &lt;----- This indicates an incremental update from N to N+2
&gt;   - N+1
&gt;     - N+2
&gt;   - N+2
&gt;     - N+3
&gt; 
&gt; Thus, the client can request updates either from N to N+1 and then from 
N+1 to N+2, or
&gt; directly from N to N+2. However, even though the updates can be 
transmitted in parallel,
&gt; they must be applied sequentially, at least with the current coding (JSON 
merge patch).
&gt; 
&gt; To answer your last two questions, let us assume N+2 and N+1 in the 
question refer
&gt; to the update from N+1 to N+2 and from N to N+1.
&gt; 
&gt; &gt; Do bad things happen if ...? 
&gt; Yes, the client may potentially get an incorrect result if it applies 
update N+2 first.  
&gt; 
&gt; &gt; Would it be better to delay ...?
&gt; That depends. The client can receive update N+2 first but only applies it 
after applying
&gt; update N+1. This may avoid the idle time if transmitting update N+2 takes 
longer than
&gt; applying update N+1, see below.
&gt; 
&gt; Delay:
&gt; |---recv n+1---|---retrans n+1---|---recv n+2---|
&gt;                                  |-apply n+1-|  |---apply n+2---|
&gt; 
&gt; No delay:
&gt; |---recv n+1---|---retrans n+1---|
&gt; |---recv n+2---|
&gt;                                  |-apply n+1-|---apply n+2---|
&gt; 
&gt; &gt; There is a tradeoff between latency and reliability that can be made 
if layered
&gt; &gt; coding can be permitted.  For example, if it is possible to modify the
&gt; &gt; dependencies, a client wouldn't necessarily have to obtain every 
update (e.g.
&gt; &gt; if the bandwidth was insufficient to allow them all to be delivered 
within the
&gt; &gt; required time frame).
&gt; &gt; 
&gt; &gt; Are there circumstances where such a tradeoff would be desirable?  As 
an
&gt; &gt; example, there could be a base layer of updates where update N+2 
depends on
&gt; &gt; update N, and an extension layer (with higher update frequency) where 
update
&gt; &gt; N+1 depends on update N.  The client could request both layers if it 
could
&gt; &gt; handle the higher frequency, or just the base layer if it could not. 
A diagram
&gt; &gt; describing this kind of two-layer dependency structure is here:
&gt; &gt; https://www.w3.org/TR/webrtc-svc/#L1T2*
&gt; &gt; 
&gt; &gt; ALthough such an approach does have lower coding efficiency, it can 
potentially
&gt; &gt; respond better to situations in which the client's bandwidth 
availability can
&gt; &gt; vary substantially, by taking fuller advantage of HTTP/3, allowing 
the client
&gt; &gt; to restore sync even if a "discardable" update were not delivered, as 
long as
&gt; &gt; the stream of "non-discardable" updates could be delivered.
&gt; &gt;
&gt; 
&gt; KAI: Thanks for the comment. We believe the current document does support 
layered
&gt; coding: if a server implements layered coding, the updates can be 
expressed using
&gt; the current update graph structure (maybe we should make this more 
explicit?).
&gt; We do not have the concept of "discardable" updates in the document but it 
is
&gt; possible to achieve higher efficiency by discarding some updates. For 
example, in
&gt; Section 5.1 and 7.2.1, we mention that the client (when using pull mode) 
and the
&gt; server (when using push mode) may not necessarily transmit the stepwise 
updates 
&gt; but only take shortest paths in the dependency graph -- any update that is 
not on
&gt; the shortest path can be discarded.
&gt; 
&gt; I like the idea of layered coding. It may speed up the search of shortest 
path if
&gt; upper layer coding is likely to be "shorter" than lower layer coding, like 
in skip
&gt; lists. However, I am not sure that we have a good sense of how to do 
layered coding
&gt; for ALTO resources or more generally JSON objects right now. How about we 
can add a
&gt; section to discuss "layered coding" as a recommendation for server 
implementation
&gt; first? Then we may seek to standardize that with more analysis and 
evidences of
&gt; the benefits.</tips-view-root></nore...@ietf.org>
</bernard.ab...@gmail.com>
_______________________________________________
alto mailing list
alto@ietf.org
https://www.ietf.org/mailman/listinfo/alto

Reply via email to