Re: [alto] [art] Second early ART ART review of draft-ietf-alto-new-transport (-07) Wed, 26 April 2023 02:50 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E5396C15198E; Tue, 25 Apr 2023 19:50:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id fa46VlB8mYMe; Tue, 25 Apr 2023 19:50:22 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id DC07FC151B1E; Tue, 25 Apr 2023 19:50:20 -0700 (PDT)
Received: from kaigao$ ( [] ) by ajax-webmail-app1 (Coremail) ; Wed, 26 Apr 2023 10:50:03 +0800 (GMT+08:00)
X-Originating-IP: []
Date: Wed, 26 Apr 2023 10:50:03 +0800
X-CM-HeaderCharset: UTF-8
To: "" <>, Spencer Dawkins at IETF <>,
Cc: "" <>, "" <>
X-Priority: 3
X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20220420(bbe86039) Copyright (c) 2002-2023 mail
In-Reply-To: <>
References: <> <> <>
Content-Type: multipart/alternative; boundary="----=_Part_548811_157994073.1682477403443"
MIME-Version: 1.0
Message-ID: <>
X-Coremail-Locale: en_US
X-CM-TRANSID: 4wAACgAHerlbkUhkpGOPAQ--.6976W
X-CM-SenderInfo: 5ndlwt3r6vu3oohg3hdfq/1tbiAgYNB2RHrdoa5QABsk
X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU=
Archived-At: <>
Subject: Re: [alto] [art] Second early ART ART review of draft-ietf-alto-new-transport (-07)
X-Mailman-Version: 2.1.39
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, 26 Apr 2023 02:50:27 -0000

Hi Spencer,

We have prepared a pre-release of the new transport document. You can see the diffs with the link below, and the details are inline.

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

Diff with -07:



-----Original Messages-----
Sent Time:2023-03-22 11:15:10 (Wednesday)
To: "" <>, "Spencer Dawkins at IETF" <>,
Cc: "" <>, "" <>
Subject: Re: RE: [art] Second early ART ART review of draft-ietf-alto-new-transport (-07)

Hi Spencer,

Thanks for the review. Please see our responses below

-----Original Messages-----
Sent Time:2023-03-18 03:35:29 (Saturday)
To: "Spencer Dawkins at IETF" <>, "" <>, "" <>
Cc: "" <>
Subject: RE: [art] Second early ART ART review of draft-ietf-alto-new-transport (-07)

Hi Spencer,


Thanks for providing the review in a timely manner. Much appreciated.


Unless I’m mistaken, the review was not forwarded to the ALTO WG list. I’m adding the missing lists, fwiw.


One quick comment on your previous comment about SETTINGS_ENABLE_PUSH, I remember the authors provided a detailed discussion of the issues your raised (see Slide 13 of





De : art <> De la part de Spencer Dawkins at IETF
Envoyé : vendredi 17 mars 2023 00:53
À :
Objet : [art] Second early ART ART review of draft-ietf-alto-new-transport (-07)


This is my second early review of this document - the first was a review of -01.


My "Ready with Issues" is based solely on the number of references to HTTP/3 server PUSH usage, which was tagged in my earlier review. 


Beyond that, and the following nits, the document was easy and pleasant for me to follow. 


Best wishes to the working group!


I know a lot of things changed in this draft since I early-reviewed -01 - I'm now early-reviewing -07 - but I'm not sure that my previous observation about this HTTP setting




has been addressed.


As I pointed out in my previous review RFC 9114 reserves this value in the parallel HTTP/3 registry ( and says this about these reserved values in Defined SETTINGS Parameters


Setting identifiers that were defined in [HTTP/2] where there is no corresponding HTTP/3 setting have also been reserved (Section 11.2.2). These reserved settings MUST NOT be sent, and their receipt MUST be treated as a connection error of type H3_SETTINGS_ERROR.¶


I don't know what needs to be changed in this specification to reflect this, but even the abstract and the last paragraph of the Introduction refer to "native HTTP/2 or HTTP/3 server push".


Section 2.4 and 2.5 address the use of TIPS inside an HTTP/1.x connection, which doesn't support server push, so I know you folks have thought about how that works.Do you need to address this for HTTP/3 as well? 


More strategically, should you be encouraging clients to add support for server PUSH in a new application protocol, if it's already been removed from HTTP/3? But I see this document is in WGLC now, so you can think about that and Do The Right Thing. 

KAI: Thanks for the comment. The current text does not work for HTTP/3, as you mentioned that the initialization of server push has changed in HTTP/3. However, it does not mean that the support for server push is removed in HTTP/3. We will update section 7.2 to specify how to enable server push in HTTP/3 using the procedure in

KAI: The process of enabling server push in HTTP/2 or /3 is now specified in Section 8.1.1.

I have some BCP 14 questions about this text in 


3.3. Uses


This set may be any subset of the ALTO server's network information resources and may include resources defined in linked IRDs. However, it is RECOMMENDED that the ALTO server selects a set that is closed under the resource dependency relationship. That is, if a TIPS' "uses" set includes resource R1 and resource R1 depends on ("uses") resource R0, then the TIPS' "uses" set SHOULD include R0 as well as R1. For example, a TIPS for a cost map SHOULD also provide a TIPS view for the network map upon which that cost map depends.


I have the same question about R1 and R0, but let's start with a specific case. If a TIPS for a cost map does not also provide a TIPS view for the underlying network map, what happens next?

KAI: Thanks for the comment. If the TIPS (service) only provides a TIPS view for the cost map but not for the network map, the client will not be able to receive incremental updates about the network map. Thus, when there is a change to the network map, the change will be reflected in a TIPS incremental update of the cost map where the "depentdent-vtags" field will be updated (see Then, the client knows the mapping between IP prefixes and the PID values has changed but does not know the details. The client needs to query the dependent network map resource to get the new mapping.

KAI: The paragraph is now in Section 5.3. We add a paragraph to clarify the case if the set is not closed.


(Nit) is there a missing term after TIPS in "a TIPS for a cost map" in this paragraph?

KAI: Not exactly but the text is a bit unclear. We propose to use the following text instead:

..., if a TIPS service provides a TIPS view for a cost map, it SHOULD also provide a TIPS view for the network map upon which that cost map depends.

KAI: The proposed text is in Section 5.3.


In 4.4. Close Request


An ALTO client can indicate it no longer desires to pull/receive updates for a specific network resource by "deleting" the TIPS view using the returned tips-view-uri and the HTTP DELETE method. Whether or not the server actually deletes the TIPS view is implementation dependent. Likely, a server will remove the client from a dependency set associated with the TIPS view. A server will not want to delete a TIPS view if another client is using it.


I'm guessing here, but this looks like it's conflating client usage with server storage management. If client A says "delete the TIPS view", and no other client is using it, that view is deleted, but if another client is using it, and the view is not deleted, what happens next? I could imagine that a server might delete the underlying TIPS view when all clients who were using it have deleted it. Does server behavior in this case need to be implementation dependent?

KAI: Thanks for the comment. From a client's point of view, it sees only one copy of the TIPS view for any resource. However, on the server side, there are different implementation options, especially for common resources (e.g., network map or cost map) that may be frequently queried by many clients:

- create multiple copies, one for each client --> when the client deletes the view, delete it in the server storage

- create one copy for all clients

  - maintain a refcount --> when refcount == 0, delete

  - never delete (thus no need to maintain the client usage)

I think this is implementation dependent. Maybe the text is somehow misleading, how about the following?

...Whether or not the server actually deletes the TIPS view is implementation dependent. For example, an ALTO server may maintain a set of clients that subscribe to the TIPS view of a resource: a client that deletes the view is removed from the set, and the TIPS view is only removed when the dependent set becomes empty.

KAI: Managing a shared view is in Section 9.7, which summarizes the cases that we discussed in the previous response.


In this text, 

8.1. Considerations for Load Balancing

TIPS allow clients to make concurrent pulls of the incremental updates potentianlly through different HTTP connections. As a consequence, it introduces additional complexties when the ALTO server is being load balanced -- a feature widely used to build scalable and fault-tolerant web services. For example, a request may be incorrectly processed if


the backend servers are stateful, i.e., the TIPS view is created and stored only on a single server;


the ALTO server is using layer-4 load balancing, i.e., the requests are distributed based on the TCP 5-tuple.


are these conditions ANDed, or ORed? Is either condition sufficient to cause a problem, or are both required?

KAI: The two conditions need to both be true to cause the problem. We propose to make this clear with the following text:

.... For example, a request may be incorrectly processed if the following conditions both hold:

KAI: The section is moved to Section 9.1 and we fixed the nits.


Also, in the last paragraph of this section, 


For example, the ALTO server may configure layer-7 load balancers that distribute requests based on URL or cookies.


Isn't this talking something that an operator or provider of the ALTO server would do, rather than the ALTO server itself?

KAI: Yes, it should be the operator/provider of the ALTO server than the server itself. Here is the proposed text:

For example, the operator or the provider of the ALTO server may configure layer-7 load balancers that distribute requests based on URLs or cookies.


I have a similar question about 

8.2. Considerations for Choosing Updates

TIPS should be cognizant of the effects of its update schedule, which includes both the choice of timing (i.e., when/what to trigger an update on the updates graph) and the choice of message format (i.e., given an update, send a full replacement or an incremental change).




Therefore, each TIPS may decide on its own whether to use JSON merge patch or JSON patch according to the changes in network maps.


is TIPS thinking, or is that up to a human?

KAI: It should be up to a human or the running code. The proposed text is as below:

When implementing TIPS, a developer should be cognizant of the effects of the update schedule...


Therefore, each TIPS service instance may choose to encode the updates using JSON merge patch or JSON patch based on the changes in network maps.


And in 

8.6. Considerations for Updates to Ordinal Mode Costs

While this document allows TIPS to offer incremental updates for ordinal mode cost maps, TIPS implementors should be aware that incremental updates for ordinal costs are more complicated than for numerical costs, and ALTO clients should be aware that small changes may result in large updates.


I'm guessing that ALTO clients aren't aware.

KAI: Yes, indeed. We will fix similar issues. The proposed text is as below:

and developers should be aware that small changes may result in large updates when adding TIPS support for an ALTO client.


I'm not sure I've caught all of these occurrences, but perhaps the GenArt reviewer will notice others, if they are present!


Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.