Re: [babel] New Version Notification for draft-ietf-babel-rtt-extension-06.txt

Toke Høiland-Jørgensen <toke@toke.dk> Wed, 17 April 2024 19:54 UTC

Return-Path: <toke@toke.dk>
X-Original-To: babel@ietfa.amsl.com
Delivered-To: babel@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 640BDC14F5EA for <babel@ietfa.amsl.com>; Wed, 17 Apr 2024 12:54:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=toke.dk
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 uGKtvFrlfnQc for <babel@ietfa.amsl.com>; Wed, 17 Apr 2024 12:54:21 -0700 (PDT)
Received: from mail.toke.dk (mail.toke.dk [45.145.95.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 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 D8B9DC14F6B9 for <babel@ietf.org>; Wed, 17 Apr 2024 12:54:19 -0700 (PDT)
From: Toke Høiland-Jørgensen <toke@toke.dk>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1713383656; bh=kbL4zUJ30QFn0Krma1UXDTsf8MO1okEQfjaqsk0wWXg=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=MrVpPamsG0YCRm21VrtkxY7+5LdnnceFCGSddC85f7Nn2AAZlDR/cG1uaFli9e2x4 aKu5edIMfsdYEGGralaDgtmBwlhrZpTna1aTtrjxSksX+tiq6Fmkpcyy/eYibhUoQM Rq/cuS9Q+QwtNwjq7tM2m0QPVqlMgZJxebUPbPNc8PANexAORf0w/uND4NpMkXRlKe HDX07gAw6RAP2B5Zj5hsEJYM5HaUje/rxOONMszBxJThCaXyg+5F971szYIXDzwHm9 Z2zEbCrDtC2QmM9udOoeOSm8vbiVW4lDZcqxNcJ6wmS/5nUMHeeHYuOMZjH6vajHtn nnYTt1WERQamA==
To: Juliusz Chroboczek <jch@irif.fr>
Cc: babel@ietf.org
In-Reply-To: <87bk67ixr9.wl-jch@irif.fr>
References: <171328574275.28898.9111599332162642753@ietfa.amsl.com> <87v84h5k56.wl-jch@irif.fr> <87r0f5urqv.fsf@toke.dk> <87sezki0w2.wl-jch@irif.fr> <87y19bu70m.fsf@toke.dk> <87bk67ixr9.wl-jch@irif.fr>
Date: Wed, 17 Apr 2024 21:54:16 +0200
X-Clacks-Overhead: GNU Terry Pratchett
Message-ID: <87plunu5nb.fsf@toke.dk>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/cI9QvcNHBRvs1n3YSK4S3wp0-hk>
Subject: Re: [babel] New Version Notification for draft-ietf-babel-rtt-extension-06.txt
X-BeenThere: babel@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "A list for discussion of the Babel Routing Protocol." <babel.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/babel>, <mailto:babel-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/babel/>
List-Post: <mailto:babel@ietf.org>
List-Help: <mailto:babel-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/babel>, <mailto:babel-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 17 Apr 2024 19:54:25 -0000

Juliusz Chroboczek <jch@irif.fr> writes:

>> Well, the issue we're trying to resolve in Bird by using kernel
>> timestamps is that if the application blocks for a long time without
>> processing incoming packets, that will be part of the RTT which can (it
>> seems) lead to some pretty inflated RTT values.
>
> Why would the application block?  Isn't that a bug in the application?

Well, not so much block as being busy doing something else (and being
single-threaded and using a coarse-grained event loop). And yes,
arguably it's a bug in the application, but if we're giving advice about
how to write a robust implementation, it might be worth addressing anyway.

>> Or drop this entirely if we really believe that it doesn't make any
>> difference?
>
> On the write side, it definitely makes a difference: if memory serves,
> kernel timestamping happens after queueing, so any local congestion is
> going to make the two timestamps very different.
>
> On the receive side, it probably doesn't.

Yeah, on the receive side the difference will be microseconds, unless
the application suffers from the issue mentioned above. I agree that the
calculated RTT should include any congestion in the local qdisc layer
(or equivalent), so using kernel timestamping on TX is probably not a
good idea; but that's not really feasible to do either, as you'd have to
instruct the kernel how to insert the timestamp into the packet at the
right place. We don't even have a BPF hook that can do this without
jumping through a lot of weird hoops :)

So maybe we should change the text to address the RX side only, so
instead of:

"and receive timestamps SHOULD be computed just after the packet is
received from the network stack."

we'd have something like:

"and receive timestamps SHOULD be computed at the earliest possible time
after the packet is received from the networking hardware. The latter
can be achieved by instructing the operating system kernel to add a
timestamp to packets when they are received (using a mechanism such as
the SO_TIMESTAMP option), or it can be done by timestamping the packet
as soon as the babel implementation receives it from the networking
stack. If timestamping is done in the application itself, care needs to
be taken to make sure the application always processes incoming packets
in a timely manner, to avoid inflating the estimated RTT by the time
packets are waiting to be processed by the application."

The above is probably way too verbose, but I'm sure you get the gist of
it :)

>>>> We don't explicitly expire RTT state if the sanity checks keep failing,
>>>> so I don't believe we're compliant with the last paragraph of section
>>>> 3.3.
>
>> > I have misgivings about this paragraph myself.  Shall I remove it?
>> 
>> I'm not sure I understand the issue it is trying to solve, TBH; why was
>> it added?
>
> Right, I'll remove it.

OK, SGTM!

-Toke