Re: [ippm] review: draft-ietf-ippm-responsiveness-03

Christoph Paasch <cpaasch@apple.com> Thu, 18 January 2024 22:03 UTC

Return-Path: <cpaasch@apple.com>
X-Original-To: ippm@ietfa.amsl.com
Delivered-To: ippm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CCA23C14F6BA for <ippm@ietfa.amsl.com>; Thu, 18 Jan 2024 14:03:19 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.108
X-Spam-Level:
X-Spam-Status: No, score=-7.108 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ypxoYN09xlLb for <ippm@ietfa.amsl.com>; Thu, 18 Jan 2024 14:03:15 -0800 (PST)
Received: from rn-mailsvcp-mx-lapp03.apple.com (rn-mailsvcp-mx-lapp03.apple.com [17.179.253.24]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 95A02C14F61A for <ippm@ietf.org>; Thu, 18 Jan 2024 14:03:15 -0800 (PST)
Received: from rn-mailsvcp-mta-lapp02.rno.apple.com (rn-mailsvcp-mta-lapp02.rno.apple.com [10.225.203.150]) by rn-mailsvcp-mx-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.23.20230328 64bit (built Mar 28 2023)) with ESMTPS id <0S7H010M999E6L00@rn-mailsvcp-mx-lapp03.rno.apple.com> for ippm@ietf.org; Thu, 18 Jan 2024 14:03:15 -0800 (PST)
X-Proofpoint-GUID: EyvQgPTMCskDpBokbZKwpZNuFkIpdnse
X-Proofpoint-ORIG-GUID: EyvQgPTMCskDpBokbZKwpZNuFkIpdnse
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.619, 18.0.997 definitions=2023-12-06_16:2023-12-05, 2023-12-06 signatures=0
X-Proofpoint-Spam-Details: rule=interactive_user_notspam policy=interactive_user score=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2312060141
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=vK/m0r5MCMnzW7Tq7lY7+a49DlcyBtbSwtvi33SmfVY=; b=isuwaHFVDLL1CmPKlO76n0OnGKJR4J9MrElWM3srmhe04AjPx56bCDEAd2jS7G407CYJ xovcHwQY5clqAYqDHgHyIwqlldKoep8auTvdoWRvx7YVNByGvX3VWndP8bjvj/XitD99 eYT/QhlsZ9h4sVItrNC8DrFrjvQKxZU5bvkKbkvoCZ97DyQufc2eT74RhTUj/HHHX/3T NpWmswqbv+AvT3jp9RpJ7+gmAnYWfRzHi55WUoutb6hCotdpZVVeHEPxVrk0JxWlMGYv cCMvhxThn0V5Zy4SpLr9gWoApcpPOYJBoFtlUpuCNiZZ7XVAgXIl3G6EXiNekiEeT6nM ew==
Received: from rn-mailsvcp-policy-lapp01.rno.apple.com (rn-mailsvcp-policy-lapp01.rno.apple.com [17.179.253.18]) by rn-mailsvcp-mta-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.23.20230328 64bit (built Mar 28 2023)) with ESMTPS id <0S7H005EH999QI80@rn-mailsvcp-mta-lapp02.rno.apple.com>; Thu, 18 Jan 2024 14:03:10 -0800 (PST)
Received: from process_milters-daemon.rn-mailsvcp-policy-lapp01.rno.apple.com by rn-mailsvcp-policy-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.22.20230228 64bit (built Feb 28 2023)) id <0S7H0030090TMH00@rn-mailsvcp-policy-lapp01.rno.apple.com>; Thu, 18 Jan 2024 14:03:09 -0800 (PST)
X-Va-A:
X-Va-T-CD: 8a90716d4ae5659fdb9c0479be8fa08c
X-Va-E-CD: 0fecca0f717b38bb3fbf4ce15300a71e
X-Va-R-CD: 6d568fb0c5838ebfabc0aaf1f045b77e
X-Va-ID: 74554ffc-312f-47dd-a443-4e83944a5324
X-Va-CD: 0
X-V-A:
X-V-T-CD: 8a90716d4ae5659fdb9c0479be8fa08c
X-V-E-CD: 0fecca0f717b38bb3fbf4ce15300a71e
X-V-R-CD: 6d568fb0c5838ebfabc0aaf1f045b77e
X-V-ID: 481558c8-4cb5-4e64-924b-50c1558581fe
X-V-CD: 0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.619, 18.0.997 definitions=2024-01-18_10:2024-01-17, 2024-01-18 signatures=0
Received: from smtpclient.apple ([17.192.155.119]) by rn-mailsvcp-policy-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.22.20230228 64bit (built Feb 28 2023)) with ESMTPSA id <0S7H0064U996RW00@rn-mailsvcp-policy-lapp01.rno.apple.com>; Thu, 18 Jan 2024 14:03:09 -0800 (PST)
From: Christoph Paasch <cpaasch@apple.com>
Message-id: <995190E0-1B8D-4467-96F4-950B22889944@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_F24D8EA6-8BD7-4F18-8FF5-FD947CFB70C7"
MIME-version: 1.0 (Mac OS X Mail 16.0 \(3774.300.61.1.2\))
Date: Thu, 18 Jan 2024 14:02:56 -0800
In-reply-to: <0C37FF52-83D3-4F61-9823-597E3F5DFA5A@gmx.de>
Cc: Sebastian Moeller <moeller0@gmx.de>, IETF IPPM WG <ippm@ietf.org>
To: Sebastian Moeller <moeller0=40gmx.de@dmarc.ietf.org>
References: <94654535-67F5-4719-B988-3306BFEA2D6F@gmx.de> <CB77FB78-121F-41C7-80E9-683EF2C5C509@apple.com> <A4B0257D-ECA3-4C03-BDFF-D7306F553B3B@gmx.de> <0CFCC300-FEC1-4997-9B95-5BD67C6BC94C@apple.com> <0C37FF52-83D3-4F61-9823-597E3F5DFA5A@gmx.de>
X-Mailer: Apple Mail (2.3774.300.61.1.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ippm/WUbAbIWtWFd0WvW7xo_FwvEu1VE>
Subject: Re: [ippm] review: draft-ietf-ippm-responsiveness-03
X-BeenThere: ippm@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: IETF IP Performance Metrics Working Group <ippm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ippm>, <mailto:ippm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ippm/>
List-Post: <mailto:ippm@ietf.org>
List-Help: <mailto:ippm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ippm>, <mailto:ippm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 18 Jan 2024 22:03:19 -0000

Hello Sebastian,

> On Jan 18, 2024, at 12:48 AM, Sebastian Moeller <moeller0=40gmx.de@dmarc.ietf.org> wrote:
>> On 18. Jan 2024, at 00:46, Christoph Paasch <cpaasch=40apple.com@dmarc.ietf.org> wrote:
>>> On Jan 17, 2024, at 12:03 PM, Sebastian Moeller <moeller0=40gmx.de@dmarc.ietf.org> wrote:
>>>> 
>>>> On 17. Jan 2024, at 18:55, Christoph Paasch <cpaasch=40apple.com@dmarc.ietf.org> wrote:
>>>>> On Dec 10, 2023, at 7:50 AM, Sebastian Moeller <moeller0=40gmx.de@dmarc.ietf.org> wrote:
>>>>> 4.3.1.  Aggregating the Measurements
>>>>> 
>>>>> The algorithm produces sets of 4 times for each probe, namely: tcp_f,
>>>>> tls_f, http_f, http_l (from the previous section).  The
>>>>> responsiveness of the network connection being tested evolves over
>>>>> time as buffers gradually reach saturation.  Once the buffers are
>>>>> saturated, responsiveness will stabilize.  Thus, the final
>>>>> calculation of network responsiveness considers the last MAD (Moving
>>>>> Average Distance - default to 4) intervals worth of completed
>>>>> responsiveness probes.
>>>>> 
>>>>> NOTE: for a network limited by MPS that means 400 latency samples, which is pretty impressive! For a PTC limited network however that could be considerably less. Could we require a verbose mode that reports the number of latency samples taken into account and that also reportes some measure of variance?
>>>> 
>>>> Implementations are free to report additional information. I’m not sure whether that should be specified in an IETF RFC, because the RFC defines the methodology only, no?
>>> 
>>> [SM] Well, there is this idea that if one reports aggregate data one should also give an idea how well that data holds, and often that starts with the number of data points included, something more and more on-line tests start to reveal (e.g. by allowing to download a csv of the detailed results, which includes the individual samples, so getting to the N just requires counting :) )
>> 
>> Sure. But this is IMO a tool/implementation-question.
> 
> [SM] Not really, IMHO this as validity of reporting question ;) The way things are phrased ATM, I believe the lowest possible number of samples for self might be MAD * 2, so 8 samples (we need at least 2 samples to calculate a standard deviation), while the expected number for most users will be closer to ~400, that is a really wide range and hence giving some indication seems really desirable. In the same line of thought, we might consider not only reporting the mean RPM but also a measure of deviation. To keep the default recommended result display clean and simple, I think this could be moved to a verbose ode if a client offers that, but if there is no verbose mode this should be reported (potentially as part of the confidence report). But I might be biassed here from requirements at work, and do not want to claim I am offering a universal truth here, but I do want to be sure what ever the draft recommends in this direction is a conscious decision and not an oversight. So what ever you decide here, I am fine with.

After some more offline discussions I am going to add a “additional metrics” subsection for verbose reporting in the “Interpreting responsiveness results” section.

> 
> 
>> 
>>> 
>>> [SM] True, as long as the draft does not imply that only 20 seconds is permitted, I am happy.
>> 
>> “20 seconds is permitted” ? I guess you mean “20 seconds is mandated”. Yes, we are not mandating 20 seconds. In general, everything is “permitted” :)
> 
> [SM] Yes, that is what I meant with "only 20 seconds is permitted"... I have a feeling quite a number of RFC based implementations stick really close to the text and do not think outside of the box... (case ion point, there is zero reason, why ICMPv6 should not have supported the base types that ICMPv4 supports like timestamps requests, but that was not stated explicitly in the relevant RFC as far as I can see, and now ICMPv6 lost the ability to use timestamps).

I get your point. Let me make sure the 20 seconds does not stand out as “this is the limit that you should implement”. (will be all folded into the PR at https://github.com/network-quality/draft-ietf-ippm-responsiveness/pull/97).

> 
> 
>> 
>>>>> We define "High" confidence if the algorithm was able to fully reach
>>>>> stability based on the defined standard deviation tolerance.
>>>>> 
>>>>> It must be noted that depending on the chosen standard deviation
>>>>> tolerance or other parameters of the methodology and the network-
>>>>> environment it may be that a measurement never converges to a stable
>>>>> point.  This is expected and part of the dynamic nature of networking
>>>>> and the accompanying measurement inaccuracies.  Which is why the
>>>>> importance of imposing a time-limit is so crucial, together with an
>>>>> accurate depiction of the "confidence" the methodology was able to
>>>>> generate.
>>>>> 
>>>>> QUESTION: Should we propose a recommended verbiage to convey the confidence to the user, to make different implementations easier to compare?
>>>> 
>>>> I think we did that, no? “Low” “Medium” and “High”.
>>> 
>>> [SM] I was daft and was expecting something like "The confidence score should be reported to the user as part of the main results", but I guess that is the implicit message of this section?
>> 
>> In my opinion it is fairly clear in the draft. Feel free to send a PR if you have an idea on how to make it more clear.
> 
> [SM] Fine then, I just note that goresponsiveness currently does not report that (I did not check it against all other parts of the draft yet, and there is still lots of progress in the go code, so it might have leaned that already ;) )

Sorry - now I understand what you meant. That the draft should say that an implementation should implement the confidence and report it to the user.

I am adding this!

>> 
>>>>> 6.  Responsiveness Test Server API
>>>>> 
>>>>> The responsiveness measurement is built upon a foundation of standard
>>>>> protocols: IP, TCP, TLS, HTTP/2.  On top of this foundation, a
>>>>> minimal amount of new "protocol" is defined, merely specifying the
>>>>> URLs that used for GET and PUT in the process of executing the test.
>>>>> 
>>>>> Both the client and the server MUST support HTTP/2 over TLS.  The
>>>>> client MUST be able to send a GET request and a POST.  The server
>>>>> MUST be able to respond to both of these HTTP commands.  The server
>>>>> MUST have the ability to provide content upon a GET request.  The
>>>>> server MUST use a packet scheduling algorithm that minimizes internal
>>>>> queueing to avoid affecting the client's measurement.
>>>>> 
>>>>> QUESTION: While I fully agree that is what a server should do, I would prefer to get numbers over not getting numbers... so maybe make this a SHOULD, also if the server needsto return time the request was received and time the response was sent out, maybe we can factor out the local processing?
>>>> 
>>>> Agree’d on the SHOULD use a packet scheduling […].
>>>> 
>>>> Regarding the time - see my response in the other thread.
>>>> 
>>>>> 
>>>>> 
>>>>> As clients and servers become deployed that use L4S congestion
>>>>> control (e.g., TCP Prague with ECT(1) packet marking), for their
>>>>> normal traffic when it is available, and fall back to traditional
>>>>> loss-based congestion controls (e.g., Reno or CUBIC) otherwise, the
>>>>> same strategy SHOULD be used for Responsiveness Test traffic.  This
>>>>> is RECOMMENDED so that the synthetic traffic generated by the
>>>>> Responsiveness Test mimics real-world traffic for that server.
>>>>> 
>>>>> NOTE: This clearly needs to be under end-user control, that is there should be a way for the user to request/enforce either option (I am fine with the default being, what the local OS defaults to). L4S is an experimental RFC and is is expected to have odd failure modes so a L4S aware measurement tool should keep in mind that L4S itself needs to be measured/tested. At the very least the results need to report whether L4S was used or not.
>>>> 
>>>> IMO, this is an implementation choice, whether a tool exposes configuration options to enable/disable L4S and what kind of additional statistics it exposes.
>>> 
>>> [SM] Mmmh, I am a bit uneasy with that, as I said it should report if a test was using L4S or not, I accept that maybe RPM is not the best tool for A/B testing L4S ;)
>> 
>> In a verbose mode there are a lot of things that can be exposed. L4S on/off. IPv4/IPv6. Once we go down this “rabbit hole” of what else could be exposed, we will start listing every single bit along the protocol stack that may theoretically have an impact on the responsiveness.
> 
> [SM] Clearly not a black and white matter given the multitude of potentially relevant parameters, however the client will know whether L4S was used or not, while it is quite hard for a user to figure this out (I think one would need to get packet captures and then look into the headers and connection negotiation).

Yes - see above. Will add some non-exhaustive suggestions on what additional passive metrics to report.


Thanks,
Christoph