[LOOPS] Measuring forward latency

Carsten Bormann <cabo@tzi.org> Mon, 17 June 2019 22:42 UTC

Return-Path: <cabo@tzi.org>
X-Original-To: loops@ietfa.amsl.com
Delivered-To: loops@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 801E61202F1 for <loops@ietfa.amsl.com>; Mon, 17 Jun 2019 15:42:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.198
X-Spam-Level:
X-Spam-Status: No, score=-4.198 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cQPIjCBY8fx0 for <loops@ietfa.amsl.com>; Mon, 17 Jun 2019 15:42:19 -0700 (PDT)
Received: from smtp.uni-bremen.de (gabriel-vm-2.zfn.uni-bremen.de [134.102.50.17]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 087AA1202D8 for <loops@ietf.org>; Mon, 17 Jun 2019 15:42:19 -0700 (PDT)
Received: from [192.168.217.113] (p54A6CA4C.dip0.t-ipconnect.de [84.166.202.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.uni-bremen.de (Postfix) with ESMTPSA id 45SR6c4897zytB; Tue, 18 Jun 2019 00:42:16 +0200 (CEST)
From: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset="utf-8"
X-Mao-Original-Outgoing-Id: 582504134.6774009-5056aea306dc323b565e9b72f9f0d676
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Date: Tue, 18 Jun 2019 00:42:15 +0200
Message-Id: <F64CD006-3F60-4D63-B97D-0251A7B7F0B0@tzi.org>
To: loops@ietf.org
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/loops/RPEoaS9l3cNoPX0Z9TdAxjqk7AM>
Subject: [LOOPS] Measuring forward latency
X-BeenThere: loops@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Local Optimizations on Path Segments <loops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/loops>, <mailto:loops-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/loops/>
List-Post: <mailto:loops@ietf.org>
List-Help: <mailto:loops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/loops>, <mailto:loops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 17 Jun 2019 22:42:22 -0000

The proposal in

https://tools.ietf.org/html/draft-welzl-loops-gen-info

measures forward latency by having the egress node send back some acknowledgements that carry a timestamp of arrival (expressed in egress node local clock time).  No timing information is conveyed in the forward direction.

This assumes that the local clock of the egress node is useful for relaying timing information to the ingress node.  In many cases in today’s networks, nodes are synchronized using NTP (or maybe even PTP), so the clocks should not be diverging wildly.  Also, the assumption is that today’s nodes can keep their clock drift in check well enough that the latency measurements are not useless.

However, there is some systematic error being introduced if the nodes are not perfectly in sync.  This error should be an essentially constant addend (positive or negative) to the measured latency (maybe even leading to mostly negative “latency” measurements, which may seem illogical but may not invalidate the congestion detection math).

If the latency measurement is mostly used to detect upticks in latency that might be indicative of congestion, all this should not be a big problem.

Alternative approaches might:

— need to send more information (essentially running a per-tunnel time synchronization protocol, which is wasteful)
— complicate the processing.

Note that the ingress node has under control how many ACKs with a time stamp it receives, by controlling the rate of setting the “ACK desired” flag; an ingress node that does not care about latency might never set that flag (and rely on cumulative “bitmap” style acknowledgements, called “block 2” in section 4.3).

So are we happy with the latency measurement approach described in the proposal?

Note that an ingress node can independently estimate RTT by noting when packets have been sent (in ingress node clock time) and noting the arrival time of an acknowledgement for that packet (if the PSN is different per transmission there is no ambiguity).  The overhead for storing the transmission point in time nearly vanishes behind the storage of the packet itself (which is needed at least in retransmission mode).  This independent RTT measurement is necessary because the path for the reverse information may be rather different from the forward path and also because delayed acknowledgement schemes add to the RTT.

Does the proposed design look right?

Grüße, Carsten