Re: [dnssd] Genart last call review of draft-ietf-dnssd-push-20

Tom Pusateri <> Mon, 08 July 2019 23:12 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7F41E120364; Mon, 8 Jul 2019 16:12:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id bKSA6dCoXKBI; Mon, 8 Jul 2019 16:12:27 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 7C95C120316; Mon, 8 Jul 2019 16:12:27 -0700 (PDT)
Received: from [] ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id 0452C342E7; Mon, 8 Jul 2019 19:12:26 -0400 (EDT)
Content-Type: multipart/alternative; boundary="Apple-Mail-6BC29C0C-975E-4D9A-9F31-DA2C83A4473E"
Mime-Version: 1.0 (1.0)
From: Tom Pusateri <>
X-Mailer: iPhone Mail (16F203)
In-Reply-To: <>
Date: Mon, 08 Jul 2019 19:12:24 -0400
Cc: Stuart Cheshire <>, Robert Sparks <>,, DNSSD <>, Eric Rescorla <>
Content-Transfer-Encoding: 7bit
Message-Id: <>
References: <> <> <> <> <>
To: David Schinazi <>
Archived-At: <>
Subject: Re: [dnssd] Genart last call review of draft-ietf-dnssd-push-20
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 08 Jul 2019 23:12:38 -0000

If we detect a PUSH protocol error and don’t want the client to immediately reconnect and repeat the same error, we can send a retry delay TLV with a long delay and then close gracefully with a TLS close_notify in lieu of a TCP RST. 


> On Jul 8, 2019, at 7:05 PM, David Schinazi <> wrote:
> In general the "TLS Alerts" error codes are specific to the operation of TLS itself, not the application running over TLS.
> If you want to send a graceful close, the tool of choice is close_notify.
> If you detect an unrecoverable error and want to abort the connection, I see two options:
> (1) forcibly terminate the connection at the DNS layer by sending a DNS error message followed by a TLS close_notify
> (2) forcibly terminate the connection at the TCP layer by sending a RST
> As a client sending, I don't see much value in (1) since all the server can do in either case is free the resources associated with this connection.
> As a server sending, I suspect (1) is best unless you were unable to parse anything in which case (2) makes sense.
> David
>> On Mon, Jul 8, 2019 at 3:53 PM Stuart Cheshire <> wrote:
>> On 2 Jul 2019, at 12:36, David Schinazi <> wrote:
>> > Hi Tom,
>> > 
>> > If the protocol is restricted to TLS over TCP, it should send a TLS close_notify, not a TCP RST.
>> > TLS close_notify is cryptographically guaranteed to originate from the peer,
>> > whereas TCP RST can be injected by an on-path entity to cause truncation attacks.
>> In TCP we use FIN for a graceful close, and RST for an abortive close. The former is normal operation; the latter means your code has a bug you need to fix.
>> Is there an appropriate equivalent in TLS? It would be good to differentiate normal operation from a fatal protocol error that causes a forcible termination.
>> I see in the TLS 1.3 spec, RFC 8446, Section 6.2. “Error Alerts” says:
>>    Whenever an implementation encounters a fatal error condition, it
>>    SHOULD send an appropriate fatal alert and MUST close the connection
>>    without sending or receiving any additional data.
>> <>
>> Are any of these error alerts appropriate to perform this abortive disconnect, like perhaps the decode_error code?
>>    decode_error:  A message could not be decoded because some field was
>>       out of the specified range or the length of the message was
>>       incorrect.  This alert is used for errors where the message does
>>       not conform to the formal protocol syntax.  This alert should
>>       never be observed in communication between proper implementations,
>>       except when messages were corrupted in the network.
>> Or are these TLS error alerts reserved for TLS-layer error conditions?
>> Stuart Cheshire