Re: [TLS] [DTLS1.3]About the retransmission of Handshake records

Eric Rescorla <ekr@rtfm.com> Mon, 02 December 2019 13:35 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CC5E7120274 for <tls@ietfa.amsl.com>; Mon, 2 Dec 2019 05:35:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.com
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 XLAio5eVKlfX for <tls@ietfa.amsl.com>; Mon, 2 Dec 2019 05:35:05 -0800 (PST)
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3991B12006D for <tls@ietf.org>; Mon, 2 Dec 2019 05:35:05 -0800 (PST)
Received: by mail-lf1-x12c.google.com with SMTP id v201so26931151lfa.11 for <tls@ietf.org>; Mon, 02 Dec 2019 05:35:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3PJs95NOGsdV7fXxd+XEM0GbWWQLX2nSnvKBzfu2bks=; b=TpKwfHEyYMQkUic0S0iuNfnv4+qApLHct7Et43fjcWZexplrgAPISqjVs/mQy7z5ZU v3uDaFWzsFEMiwz9zUltuSiVlqrm2m4CZnsKz+d7vZ/cip0J5j9ZAyow1/Yc0A+7cXWS d2DUEYcYRYRufEG3cZkRyCGzoq2drIOlw77g1XD2YOiD8z1PQhNF1V6ruEP9ctc7lfJI 8whhqdrnLX8Ou2oXBogu9Pnb1C8aJ7E5ONHhnfo+l4cGWMCgyojPZwlSKYoTGo2AYA6R PUZXpwPTCqKCzK0GJ7a3Ll7lGbDrgCahnMlB0ip633YVczm1JBvH2ifMobYc2dgu1wgV Lrnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3PJs95NOGsdV7fXxd+XEM0GbWWQLX2nSnvKBzfu2bks=; b=mUinQbsgEMEtLWrYp+cEPSniy/ip0z539VlGbQSqriHD+ZNdRWotBKZ+bj/Juvsu5G dAavlGfsyP2Ljem4voLzxj/4mv0b3UIvKrDdvqbrur73Yt7udFhqfWjqdJ7d8nkpmVg2 LuUDj+UO9UK7OJJDsgUtnFDbc5RZwmYfi9adxKhCVNEy+t/+ap9+x3AsBhcNNm7I+EQY +oBO5I+8cG/WHIzsNLAxLg3AFl2Ak7BxgO1b/dt0oe6bthvZtp3q256zm4IL6EnuaJ8S dp35vLPGtIf1Y2qMgpN3drUi5reYmIVfuVLA3++9DiWRBlswfSZ6b7EM6EZi6kyFrbXi jUIA==
X-Gm-Message-State: APjAAAXpThhFXYQDUpzhfHbolMaYzhb1MODZrsuZEF/jdsKOdwQ/TD1J w8RSwGxLuS5dGxcJWG5IgUOTmnkRYTup2BtNVLWT8ok4
X-Google-Smtp-Source: APXvYqxuxauj3bMC0ErjaRBbwDLq+fThbpVijJJHC6MzgVKFbvkbRAG2/rIdyE8kPZdO53XdGEy+uSIyCd1d93RZXVo=
X-Received: by 2002:a19:7b1a:: with SMTP id w26mr2490749lfc.17.1575293702467; Mon, 02 Dec 2019 05:35:02 -0800 (PST)
MIME-Version: 1.0
References: <CAAnY7J27g1Df0XBe1U66z98ThQgRaom1YBF9k2UGTi4YL9i+Ng@mail.gmail.com> <CABcZeBOuJ3bOKOt6vFRJzOZbwkXzZK0jUJNyAxeAmkpxQJCzzA@mail.gmail.com> <CAAnY7J0z_btrQYzGtZavQqJwrEJ6H-+tho7xqhy9Y6RM6atv+Q@mail.gmail.com>
In-Reply-To: <CAAnY7J0z_btrQYzGtZavQqJwrEJ6H-+tho7xqhy9Y6RM6atv+Q@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Mon, 02 Dec 2019 05:34:25 -0800
Message-ID: <CABcZeBPVgn0d0rjZzfqKkiJF3p-xppMV6rDC+ZzeO+eR_nNhiQ@mail.gmail.com>
To: Xuan k <kxuanobj@gmail.com>
Cc: "<tls@ietf.org>" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000008d87a80598b8a5ae"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/8_LtrF-9h0nb1WdrcBVGyq-m_UA>
Subject: Re: [TLS] [DTLS1.3]About the retransmission of Handshake records
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Dec 2019 13:35:10 -0000

U

On Wed, Nov 27, 2019 at 11:16 PM Xuan k <kxuanobj@gmail.com> wrote:

> Hi Ekr,
>
> Thanks for your help.
>
> I have another question about the "message_seq" in section "6. Example of
> Handshake with Timeout and Retransmission".
> Could you please explain it?
>
> In the secion 6, the Client send message_seq = 0 in Record 0 and
> message_seq = 2,3,4 in Record 2.
>
> Why message_seq = 1 is skipped by Client?
>

It's a typo in the example. The Certificate should be 1.



I think the ClientHello in the figure should begin with message_seq=1. The
> message_seq = 0 is used by the first ClientHello which is the one without
> cookies.
>

I agree in principle, but that's not this example, because, as you can see,
there is no HRR. Rather, this needs to remove +cookie.

-Ekr


> Thanks,
> Zhai Zhaoxuan
>
> On 11/28/19 5:37 AM, Eric Rescorla wrote:
>
>
>
> On Tue, Nov 26, 2019 at 10:05 PM Xuan k <kxuanobj@gmail.com> wrote:
>
>> Hi all,
>>
>> I'm trying to implement a DTLS1.3 library for embedded devices. But It
>> seems something weird about retransmissions and ACKs.
>>
>> In the section "5.2. DTLS Handshake Message Format":
>>
>>    The first message each side transmits in each association always has
>>    message_seq = 0.  Whenever a new message is generated, the
>>    message_seq value is incremented by one.  When a message is
>>    retransmitted, the old *message_seq value is re-used*, i.e., not
>>    incremented.  From the perspective of the DTLS record layer, the
>>    retransmission is a new record.  This record will have a *new*
>> *   DTLSPlaintext.sequence_number* value.
>>
>>
>> In the section "7. ACK Message", the ACK message use the record_numbers
>> (corresponds to *DTLSPlaintext.sequence_number*).
>>
>> For my understanding, the "message_seq" belongs to "Handshake" and the
>> "sequence_number" or "record_numbers" belongs to
>> record layer.
>>
>
> Yes.
>
> The retransmission detection is done by "Handshake" using "message_seq",
>> but the "acknowledge" is done by "record layer" using "record_numbers".
>> It is so weird.
>>
>
> Hmm... I don't think that this is particularly weird. This is, for
> instance, how QUIC stream acknowledgement and retransmission works.
>
>
> The retransmission, retransmission detection and acknowledge should be
>> done in handshake process, but we need the record layer passing the
>> record_numebrs to the handshake process.
>>
>> Since a new "sequence_number" is used for retransmission, we have to
>> maintain a "record_numbers" to "message_seq" map with dynamic size.
>> Each retransmission attempt creates a new relationship between a new
>> "record_numbers" to an old "message_seq".
>>
>
> Yes, that's how it works in NSS.
>
>
> Since ACK is only used with Handshake messages, is it possible that we use
>> "message_seq" in ACK messages?
>>
> Or we use *old* "sequence_number" for retransmission,
>>
>
> Both of these give you strictly less information about the network. One of
> the cool innovations in QUIC is to label each packet separately so you can
> determine whether an ACK is an ACK of the original packet or a retransmit.
> We are trying to inherit tha there
>
> -Ekr
>
> so we do not need maintain the dynamic map. And if replay detection is
>> implemented, the retransmitted
>> record can be dropped by record layer (by replay detection), the
>> "Handshake Protocol" do not need to do retransmission detection.
>>
>> Thanks
>> Zhai Zhaoxuan
>> _______________________________________________
>> TLS mailing list
>> TLS@ietf.org
>> https://www.ietf.org/mailman/listinfo/tls
>>
>