[LOOPS] Packet sequence numbers

Carsten Bormann <cabo@tzi.org> Wed, 16 October 2019 20:07 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 EE7DF120116 for <loops@ietfa.amsl.com>; Wed, 16 Oct 2019 13:07:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-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 gj2WGkL14_13 for <loops@ietfa.amsl.com>; Wed, 16 Oct 2019 13:07:10 -0700 (PDT)
Received: from gabriel-vm-2.zfn.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 05E89120122 for <loops@ietf.org>; Wed, 16 Oct 2019 13:07:10 -0700 (PDT)
Received: from [192.168.217.110] (p548DCE50.dip0.t-ipconnect.de [84.141.206.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gabriel-vm-2.zfn.uni-bremen.de (Postfix) with ESMTPSA id 46tjxm4lYRzySD; Wed, 16 Oct 2019 22:07:08 +0200 (CEST)
From: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset="utf-8"
X-Mao-Original-Outgoing-Id: 592949221.51107-89012bd7c030ae66ef90153e226e49d2
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Date: Wed, 16 Oct 2019 22:07:08 +0200
Message-Id: <289BCF98-9F51-4E22-B8E2-50E17C1E8644@tzi.org>
To: loops@ietf.org
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/loops/9ABSSltwWZhu_ODWqhu3Ie6DBh4>
Subject: [LOOPS] Packet sequence numbers
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: Wed, 16 Oct 2019 20:07:12 -0000

In the process of preparing the next version of the gen-info draft, there are a few items where it probably would be good to get wider input.

One of these is the use of packet sequence numbers.

Gen-info says that the packet sequence number (PSN) counts the LOOPS packets transmitted by the LOOPS ingress, i.e., that retransmissions receive a new PSN.

This removes ACK ambiguity: the situation where original transmission and retransmissions carry the same sequence number and an ACK therefore cannot be unambiguously assigned to one of the transmission never occurs.

Disadvantages may include:

* Without additional information, the original sequence of the packets is no longer visible at the egress.  This means that not enough information is available to perform resequencing at the egress.  (Resequencing is not a feature of LOOPS, but could be easily added by an implementation if overall latency is not an issue and enough information is available at the egress.)

* FEC will not be able to derive a lot of information from the packet sequence number, so will need some additional information, too.

* Monitoring tools that are looking at the PSN will simply see the holes created by the losses on the LOOPS segment and not the successful repair actions.  (But the same is true for FEC, so maybe these monitoring tools are too simple.)

Advantages may include:

* No ACK ambiguity.

* The need for back-filling ACK bitmaps is limited to the time scale of reordering (if any at all).

* Somewhat simplified implementation: NACKs for sequence numbers that already have been retransmitted don’t need a hold-off — the cached packets are simply swept to their new numbers at the ingress and repetitions of old NACKs can be ignored.  On the other hand, some retransmission counter will need to be on each packet to avoid 1-persistence.

One question that comes up about implementation is how likely a “single retransmission” optimization will be: An implementation that only ever retransmits a packet once can simply delete the cache entry after retransmission instead of sweeping it to the new number.  Single retransmission actually fits many usage scenarios well, as it essentially squares the non-delivery reliability for random losses, which may be all that is needed.

Opinions?  Should LOOPS be more like QUIC or like protocols that have been around for a few decades?

Grüße, Carsten