
From nobody Mon Apr 15 10:07:23 2019
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D6BA51203C1 for <dnssd@ietfa.amsl.com>; Mon, 15 Apr 2019 10:07:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level: 
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 29u7zWgzA19h for <dnssd@ietfa.amsl.com>; Mon, 15 Apr 2019 10:07:19 -0700 (PDT)
Received: from mail-pg1-x529.google.com (mail-pg1-x529.google.com [IPv6:2607:f8b0:4864:20::529]) (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 2D92D1203B0 for <dnssd@ietf.org>; Mon, 15 Apr 2019 10:07:19 -0700 (PDT)
Received: by mail-pg1-x529.google.com with SMTP id z9so8873404pgu.10 for <dnssd@ietf.org>; Mon, 15 Apr 2019 10:07:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=lkZHWWt4azfScTulEDk3Y3l7NxSJdMn04Tu618YARmE=; b=E3egv7YyPXRiXT/AuEbyI482lJl6gNp3TkOs3wKjmbSesSjGnrlcegkZtlW+pO23z6 2Bs4jsyIpJJPNkhljiKwWGqGuH4PveikHFSBKOCI1bCk6VbNyuB8hSdSgEIjrfZ3njt2 yNI7EF7KKUercJY56UiRrusw5byf9WBJ+z2jAE25VPM6/WuMDcF3TdogEMP6e/VGOMRs RgkfsFscHeUw6wIq3F1bSVKuY7wpQs/A2cd1qww5DbrSFypGGdt3nXQsfc1wSCe5eW5h C/+CeluYar4Ws1dN73JdPGMiELGSIGh5NMD6zKhllonKtqZIM2UW9pu14YjRO3gYRgoN cCug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=lkZHWWt4azfScTulEDk3Y3l7NxSJdMn04Tu618YARmE=; b=ULL8qpeTT/kleJ5JwWXi0e9umJIUmAEqLglv58Gl9LQnR0jKgQbFH4G3xuLZIbRtsr 6HYAhTKaK+azkq8zDjpgJcmWYU+wslUVtUAPI/Xz5xaRFT8ULSJrzisMBIHfy5KNwUB/ R1jPhWIpWBxiMASVQROy1pMHsplZVwicKcRCUc/Of87srkhz/1668c7c4wOlfqcK8SfM 1pBOLUp5IYA+cXb2DAS8Y+XUNMaV7tvDVrxxnNa68AXZ/cSlbki/jVgmieP5BUhvWUrH O9g+z/ufo2pIG7sWozxRNPSjlv0HrSxYgLlvn9iG+MT4eUX47h27utQpkVm2TDxtKnkj nJpQ==
X-Gm-Message-State: APjAAAUvcokSuFVe3/9LjfRcWTzUYyeccCSPEcrakPL9t9yL4p3kbJ1g YwgrtFCLpryjtFp9iuIP9ieoHF6KQ7AYYq4G/MntZBxW
X-Google-Smtp-Source: APXvYqxoMFgnX5gXr65eUHFKYxIqXYxvzEalfDWQcbtNJX7Zh3BbKa/TIchouWYyB37JG5rX01fJ9sZq67YJ5z2OXp4=
X-Received: by 2002:aa7:9116:: with SMTP id 22mr77300742pfh.165.1555348038412;  Mon, 15 Apr 2019 10:07:18 -0700 (PDT)
MIME-Version: 1.0
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 15 Apr 2019 10:07:07 -0700
Message-ID: <CAPDSy+6S5XzmBvAB-1EEoL+2UyZFtJBQ8KwXd2gRVGrwCzjK7g@mail.gmail.com>
To: DNSSD <dnssd@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000054ee84058694af08"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/NAsM0Kejf16o37xPcGyGMmwpcH4>
Subject: [dnssd] WGLC for draft-ietf-dnssd-push
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 15 Apr 2019 17:07:22 -0000

--00000000000054ee84058694af08
Content-Type: text/plain; charset="UTF-8"

Hi everyone,

This email starts another Working Group Last Call (WGLC)
for draft-ietf-dnssd-push, which will last for two weeks until 2019-04-29.
As a reminder, this document has already passed WGLC but some slight
changes to the document warranted another WGLC.

Stuart, please reply here with the list of changes made since the previous
WGLC.

Everyone else, please raise any concerns in response to this email.

Thanks,
David

--00000000000054ee84058694af08
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Hi everyone,<div><br></div><div>This emai=
l starts another Working Group Last Call (WGLC) for=C2=A0draft-ietf-dnssd-p=
ush, which will last for two weeks until 2019-04-29. As a reminder, this do=
cument has already passed WGLC but some slight changes to the document warr=
anted another WGLC.</div><div><br></div><div>Stuart, please reply here with=
 the list of changes made since the previous WGLC.</div><div><br></div><div=
>Everyone else, please raise any concerns in response to this email.</div><=
div><br></div><div>Thanks,</div><div>David</div></div></div>

--00000000000054ee84058694af08--


From nobody Mon Apr 15 10:07:30 2019
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 06CFC1203B0 for <dnssd@ietfa.amsl.com>; Mon, 15 Apr 2019 10:07:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level: 
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 GXinQOActRaB for <dnssd@ietfa.amsl.com>; Mon, 15 Apr 2019 10:07:21 -0700 (PDT)
Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) (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 3987A1203B3 for <dnssd@ietf.org>; Mon, 15 Apr 2019 10:07:21 -0700 (PDT)
Received: by mail-pf1-x435.google.com with SMTP id z5so8917689pfn.3 for <dnssd@ietf.org>; Mon, 15 Apr 2019 10:07:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=eBXlG9zLWjJNkOHzbglTSrnYVsDD526wS7ClG1ewweA=; b=PbwTqfXleMhCzXkVPZ7q1Hcv0XCdb9hwwM6oIi8Yu7KCvd0OxY8+dAl4GgNn3XplFB cbLQ0cANG8LSVn7yKeuXEqstJjU9N8riGO3VJF6UmTEfOampHi3n9B13Y9m+iRRK2J+H xqgZ3KEkNie3e7UeUE4yuVmz+2AZi19V3Ur0yw+DxWLyNAEbMkIrOEqV53bqyH7Ur4hb YeQ/tDR34l6nKeDJ2xMlBNNZdw4K8zPD9cbgUDNfa45JkS7RLlV/eCW3+ylVSlYuckOw uvX+JWmR8qpvLgycwsdO0qKdj4j0D/B7LuuOt/2cadiX32DQ9+LicgyIk9jyd6H/UCCC dXdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=eBXlG9zLWjJNkOHzbglTSrnYVsDD526wS7ClG1ewweA=; b=E+DBF2FloC+qG6oSMKNZ1ZiU3VOKa7j24tiNeoQWRRj60+tUwQlajT3D+EH++sGge0 O9mqUPq1IenBfjKXFvPx6/n3/QJeLxRvaioy8JaEcoo9Cmh0YH94LURm+QVuN4BBRPdp BwutgOqKJFjKJEZt2GqPRZTJYid8iKYwGvAG7tU9BpZaKWQ4fTeq0mj1X0WucLCqILNy 6tbXyQbroxZSIkhI7NoIoZRxsXrhcdnu1IRjEjjkgZfsRNlMtbUQFo6x3NjA6hRs2HLg +4OWx/Thu/WMa0O77D5kfInOHt6cPc8u2dZEwvP33O1EDkUvwsrALgzA42DqEjqkfKbh lMAA==
X-Gm-Message-State: APjAAAXO+mwJZLnjPE19CIhOdELBcB5l2WHtD6y628T4u7FpE5qw2wDs FNQwufQgU318lcC2fFXcf685+CsfayU7apr/WmCaxait
X-Google-Smtp-Source: APXvYqwJBMw5AHwqdf8J0HXATProiW60EzyBYvpx2XU5bp9ytDser5zY1ZGBiAMDGXVtq7F1EppwAVcLLH4AkJvldRs=
X-Received: by 2002:a62:5fc7:: with SMTP id t190mr29228887pfb.191.1555348040587;  Mon, 15 Apr 2019 10:07:20 -0700 (PDT)
MIME-Version: 1.0
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 15 Apr 2019 10:07:09 -0700
Message-ID: <CAPDSy+5KjWh-5jQ9bZJs992i3pQW-MGqn3V_SGVe7-9B-Yc7=A@mail.gmail.com>
To: DNSSD <dnssd@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000762094058694af0b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/-ROuBZqQPYYEAPWQXEsXHQdwVqU>
Subject: [dnssd] WGLC for draft-ietf-dnssd-mdns-relay
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 15 Apr 2019 17:07:23 -0000

--000000000000762094058694af0b
Content-Type: text/plain; charset="UTF-8"

Hi everyone,

This email starts a Working Group Last Call (WGLC)
for draft-ietf-dnssd-mdns-relay, which will last for two weeks until
2019-04-29. As a reminder, the last WGLC failed due to lack of statements
of support.

Please indicate support or raise any concerns in response to this email.

Thanks,
David

--000000000000762094058694af0b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Hi everyone,<div><br></div><div>This emai=
l starts a Working Group Last Call (WGLC) for=C2=A0draft-ietf-dnssd-mdns-re=
lay, which will last for two weeks until 2019-04-29. As a reminder, the las=
t WGLC failed due to lack of statements of support.</div><div><br></div><di=
v>Please indicate support or raise any concerns in response to this email.<=
/div><div><br></div><div>Thanks,</div><div>David</div></div></div>

--000000000000762094058694af0b--


From nobody Mon Apr 15 10:07:35 2019
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BBC1C1203F1 for <dnssd@ietfa.amsl.com>; Mon, 15 Apr 2019 10:07:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level: 
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 JIfRenTP9hjb for <dnssd@ietfa.amsl.com>; Mon, 15 Apr 2019 10:07:23 -0700 (PDT)
Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) (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 08C211203C1 for <dnssd@ietf.org>; Mon, 15 Apr 2019 10:07:23 -0700 (PDT)
Received: by mail-pl1-x631.google.com with SMTP id f36so8880140plb.5 for <dnssd@ietf.org>; Mon, 15 Apr 2019 10:07:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:from:date:message-id:subject:to; bh=umX7/S+wcbQ35QH5qyNq8evh/XRsIJeZ5vEw0vMZUJA=; b=cM1zWbcCNk9k4DYlUsVJ5NOPlk915ZNd2K8kKxVrD40p3rOaNg6RnR7pHf+GVVvS49 N6UE1AkHEXo3nSG46Mbc3p6UwTXZsPGejsPa73fK6HvY/Ib+bSzDpTQB8w/9uY6n/bTa QTDUKxCrNYAzBP6zS8XZLjAsYhP0edAW6HH3+nf38D2CEwhs98mcKsYjBlg3nGRflfWH LpliGXrIWT9Y6OaVUKnZLBshfiMzkgDD+g+BHuBsm5bW1IuJsy47gUnzH4oo1pMn/Ca4 enQ1OkSm79L19Wvk+qU6a5xKmHExUl5lOHHjl360y7z7PENIykeSf7jqR6WP8JKtstlm 1/+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=umX7/S+wcbQ35QH5qyNq8evh/XRsIJeZ5vEw0vMZUJA=; b=AQjOwzUI3U0mG4k8fDD0D19Z1WBmAweMhjYKGP7wA5AIsN5Zl4aqyewO2XaSLf9Sv1 vycI6NSJDN9t7CfRSQ4Hf/PaymxZx4zXFcfXKVEXVXlcihzpshMPqrRpdD0v8sxW+GeI ZSXqD0HMmA9dXdc5PhuhzG6qjSDUQ0LWLG3bPPVZ3ga/N9Luqvgy6hW/8i/OcbqEVq8c PAL4BXYHG0yo3x7HRN/i7WLfSEMGLNrRLZbiNNGpnxUf+mOCu6DuaGzSLiAXtzj4iN1l bj5nt3rgxbuV5sL7KV0hsj4ytomATp4EmDpA63KzldVKJuaM8Mbz1YZ9FV5JL+5RM2kI ekWg==
X-Gm-Message-State: APjAAAW0E4NQ/P1HkkjZ2i17VdA0eRVL1oV5LIN/5r+7lzE4gmXYWkKI v0LrZog6Uuw1KGyAJcAflVAFr1uWn5RF8YLLKNE2hMeb
X-Google-Smtp-Source: APXvYqxc1YPVyuyd1noqSfpqRMMSPCC4mwRqiiCmAN4vN+pja3WZ8FYSOjm6PZRRRqpItrXFGbh7M8Du1yhugPQNcLE=
X-Received: by 2002:a17:902:7d8f:: with SMTP id a15mr43026342plm.3.1555348042437;  Mon, 15 Apr 2019 10:07:22 -0700 (PDT)
MIME-Version: 1.0
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Mon, 15 Apr 2019 10:07:11 -0700
Message-ID: <CAPDSy+7Yom5EwqG1OS=zpy3fARMRp3ExcfY6md=8YtgS9XiVvQ@mail.gmail.com>
To: DNSSD <dnssd@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000925a97058694afcb"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/gN6p9c4layuWZQ6RXvzf9qzTAhA>
Subject: [dnssd] WGLC for draft-ietf-dnssd-srp
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 15 Apr 2019 17:07:26 -0000

--000000000000925a97058694afcb
Content-Type: text/plain; charset="UTF-8"

Hi everyone,

This email starts a Working Group Last Call (WGLC)
for draft-ietf-dnssd-srp, which will last for two weeks until 2019-04-29.

Please indicate support or raise any concerns in response to this email.

Thanks,
David

--000000000000925a97058694afcb
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Hi everyone,<div><br></div><div>This emai=
l starts a Working Group Last Call (WGLC) for=C2=A0draft-ietf-dnssd-srp, wh=
ich will last for two weeks until 2019-04-29.</div><div><br></div><div>Plea=
se indicate support or raise any concerns in response to this email.</div><=
div><br></div><div>Thanks,</div><div>David</div></div></div>

--000000000000925a97058694afcb--


From nobody Thu Apr 25 09:41:25 2019
Return-Path: <session-request@ietf.org>
X-Original-To: dnssd@ietf.org
Delivered-To: dnssd@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 0C1EB120171; Thu, 25 Apr 2019 09:41:21 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: IETF Meeting Session Request Tool <session-request@ietf.org>
To: <session-request@ietf.org>
Cc: dschinazi.ietf@gmail.com, dnssd@ietf.org, dnssd-chairs@ietf.org, evyncke@cisco.com
X-Test-IDTracker: no
X-IETF-IDTracker: 6.95.0
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <155621048104.881.3721282676381505405.idtracker@ietfa.amsl.com>
Date: Thu, 25 Apr 2019 09:41:21 -0700
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/ZwF6toJWblz1-A0fbOLmyE8n930>
Subject: [dnssd] dnssd - New Meeting Session Request for IETF 105
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 25 Apr 2019 16:41:21 -0000

A new meeting session request has just been submitted by David Schinazi, a Chair of the dnssd working group.


---------------------------------------------------------
Working Group Name: Extensions for Scalable DNS Service Discovery
Area Name: Internet Area
Session Requester: David Schinazi

Number of Sessions: 1
Length of Session(s):  2 Hours
Number of Attendees: 75
Conflicts to Avoid: 
 First Priority: dnsop doh dprive homenet quic tls babel intarea httpbis
 Second Priority: mls core anima



People who must be present:
  Eric Vyncke
  Barbara Stark
  David Schinazi

Resources Requested:

Special Requests:
  
---------------------------------------------------------


From nobody Thu Apr 25 22:13:53 2019
Return-Path: <cheshire@apple.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7B23C1200B8 for <dnssd@ietfa.amsl.com>; Thu, 25 Apr 2019 22:13:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.599
X-Spam-Level: 
X-Spam-Status: No, score=-0.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_COMMENT_SAVED_URL=1.391, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_HTML_ATTACH=0.01, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=email.apple.com header.b=B8VdzwxZ; dkim=pass (2048-bit key) header.d=apple.com header.b=GofkFZJq
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 JrZCCPoVfbcc for <dnssd@ietfa.amsl.com>; Thu, 25 Apr 2019 22:13:43 -0700 (PDT)
Received: from ma1-aaemail-dr-lapp03.apple.com (ma1-aaemail-dr-lapp03.apple.com [17.171.2.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B5546120137 for <dnssd@ietf.org>; Thu, 25 Apr 2019 22:13:42 -0700 (PDT)
Received: from pps.filterd (ma1-aaemail-dr-lapp03.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp03.apple.com (8.16.0.27/8.16.0.27) with SMTP id x3Q57T5k012167 for <dnssd@ietf.org>; Thu, 25 Apr 2019 22:13:41 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=email.apple.com; h=mime-version : content-type : sender : from : subject : date : references : to : in-reply-to : message-id; s=20190418; bh=9FF0nFSd5Z3wC396T7srU3LPHeDsBlNFLA3cw6T2mUo=; b=B8VdzwxZuRsfnJn3zx2yHXngxmbO/vPxVkxvfx6A4x1JE8Z6RM8jh5CT3dX9MqLL1AcP uMBG+xDnVaIZnSoG0oW3SYQb6KHYOo6uCFiteFqqtyFk55ynSzaRTX3MYcR3XH3XrJpW jgUAnMM3d6bZCapS8yTmabOVB9JSIuAknnTuflLQLN6B9It/pLV29OdGLGROk9gmRRbx G6Ugye7w9QCBjpX1eP1EX2ByvRlckmHvQ92QtQoST1EiEkNiCv8SEH0C6jAKz5i/F8fZ GImK84I7Jgiv7/G7YR3W+6gPSgM6b4PFSoOdfk31dE4agAxpVouN6Rfrkp2S0FSOmKij mA== 
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=mime-version : content-type : sender : from : subject : date : references : to : in-reply-to : message-id; s=20180706; bh=9FF0nFSd5Z3wC396T7srU3LPHeDsBlNFLA3cw6T2mUo=; b=GofkFZJqjZhEK8HxrmpV5pKbi9rnKTMW6/TuZH5+BB0mixbsPNsuz00dtVnNJTJx8VQs k2a54YkBp6MqxgIvCumR/w/YguORn06jPYKhm2flH+lUgWXjHYCRLcWFqcknV0DGVoqv D2oFvHOiB0FdI3OHYfgefQTCl1DjsBsFwnqzy9iQVgkUPY42bXP5oTComdZOK4Q+ESOH elQQYcXMvrXCsaMt+pfieEn4AJrXpfQAarMMqhPZBkvCcjBl/CVrNjrcubN1BRASAWev qlVKvda3VSFwn1V+hGc0QvxBNCdUmQMbm2YH0ehEtHs+pI9clLLkNUz2aLR9fEaWzvdM Zw== 
Received: from mr2-mtap-s02.rno.apple.com (mr2-mtap-s02.rno.apple.com [17.179.226.134]) by ma1-aaemail-dr-lapp03.apple.com with ESMTP id 2s1sc1mqh3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for <dnssd@ietf.org>; Thu, 25 Apr 2019 22:13:40 -0700
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_Wq1XeBIaw82Bwu0++WUYSg)"
Received: from nwk-mmpp-sz11.apple.com (nwk-mmpp-sz11.apple.com [17.128.115.155]) by mr2-mtap-s02.rno.apple.com (Oracle Communications Messaging Server 8.0.2.3.20181024 64bit (built Oct 24 2018)) with ESMTPS id <0PQJ009K0YIQ6AA0@mr2-mtap-s02.rno.apple.com> for dnssd@ietf.org; Thu, 25 Apr 2019 22:13:39 -0700 (PDT)
Received: from process_milters-daemon.nwk-mmpp-sz11.apple.com by nwk-mmpp-sz11.apple.com (Oracle Communications Messaging Server 8.0.2.3.20181024 64bit (built Oct 24 2018)) id <0PQJ00100XXOUE00@nwk-mmpp-sz11.apple.com> for dnssd@ietf.org; Thu, 25 Apr 2019 22:13:39 -0700 (PDT)
X-Va-A: 
X-Va-T-CD: 67f481029bce65efa0808f4eee5f1f07
X-Va-E-CD: 448a8d71df449d92dc21697bc2e97da2
X-Va-R-CD: 65fc0d991785644c4fa4fe0d67bafe62
X-Va-CD: 0
X-Va-ID: 70a7ffae-83d3-484d-b703-f32927db8615
X-V-A: 
X-V-T-CD: 67f481029bce65efa0808f4eee5f1f07
X-V-E-CD: 448a8d71df449d92dc21697bc2e97da2
X-V-R-CD: 65fc0d991785644c4fa4fe0d67bafe62
X-V-CD: 0
X-V-ID: 7503306c-c6a1-4033-b3b0-025342bece59
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-04-26_03:,, signatures=0
Received: from [17.234.124.190] (unknown [17.234.124.190]) by nwk-mmpp-sz11.apple.com (Oracle Communications Messaging Server 8.0.2.3.20181024 64bit (built Oct 24 2018)) with ESMTPSA id <0PQJ00FQZYIM7Y50@nwk-mmpp-sz11.apple.com> for dnssd@ietf.org; Thu, 25 Apr 2019 22:13:35 -0700 (PDT)
Sender: cheshire@apple.com
From: Stuart Cheshire <cheshire@apple.com>
Date: Thu, 25 Apr 2019 22:13:33 -0700
References: <CAPDSy+6S5XzmBvAB-1EEoL+2UyZFtJBQ8KwXd2gRVGrwCzjK7g@mail.gmail.com>
To: DNSSD <dnssd@ietf.org>
In-reply-to: <CAPDSy+6S5XzmBvAB-1EEoL+2UyZFtJBQ8KwXd2gRVGrwCzjK7g@mail.gmail.com>
Message-id: <19C8C2DA-8B57-44B2-9457-DCB395D95D62@apple.com>
X-Mailer: Apple Mail (2.3445.9.1)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-04-26_03:, , signatures=0
X-Proofpoint-AD-Result: none
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/uJguPjQWrAl4178z_OgwpsuTv60>
Subject: Re: [dnssd] WGLC for draft-ietf-dnssd-push
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 26 Apr 2019 05:13:52 -0000

--Boundary_(ID_Wq1XeBIaw82Bwu0++WUYSg)
Content-type: text/plain; charset=utf-8
Content-transfer-encoding: quoted-printable

On 15 Apr 2019, at 10:07, David Schinazi <dschinazi.ietf@gmail.com> =
wrote:

> This email starts another Working Group Last Call (WGLC) for =
draft-ietf-dnssd-push, which will last for two weeks until 2019-04-29. =
As a reminder, this document has already passed WGLC but some slight =
changes to the document warranted another WGLC.

Thank you David.

I have attached an HTML file of the output from =
<https://tools.ietf.org/rfcdiff> comparing draft-ietf-dnssd-push-16 with =
draft-ietf-dnssd-push-19.

There are a variety of minor textual changes, such as replacing =
references to draft-ietf-dnsop-session-signal with references to RFC =
8490, now that this document is published.

In terms of substantive changes, there are two:

1. DNS Push Notification RECONFIRM

We realized that there is no useful response to a RECONFIRM request. We =
changed RECONFIRM to be a unidirectional DSO message, and that results =
in the deletion of the entire =E2=80=9CRECONFIRM Response=E2=80=9D =
section. This simplifies both code, and the document.

2. DNS Push Notification Updates

Previously, Tom Pusateri and I thought that borrowing the DNS Update =
encoding made sense. That was before DSO (RFC 8490).

When implementing the current specification of DNS Push Notifications =
over DSO, Ted Lemon discovered that it has no way to express the DNS =
CLASS of changes.

We need to address the problem Ted Lemon discovered, and now that DNS =
Push uses DSO TLV encoding instead of traditional DNS messages, the =
incentive to follow strictly the existing DNS Update encoding has =
disappeared.

To address this issue, we adopted a new, simpler, way of expressing =
changes. It=E2=80=99s broadly similar, but simpler.

Please take a look at these changes and let us know if you see any =
problems.

And if you *don=E2=80=99t* see any problems with these changes, please =
respond saying that too.

Stuart Cheshire


--Boundary_(ID_Wq1XeBIaw82Bwu0++WUYSg)
Content-type: text/html; x-unix-mode=0644;
 name="Diff_ draft-ietf-dnssd-push-16.txt - draft-ietf-dnssd-push-19.txt.htm"
Content-transfer-encoding: quoted-printable
Content-disposition: attachment;
 filename*0="Diff_ draft-ietf-dnssd-push-16.txt - dra";
 filename*1=ft-ietf-dnssd-push-19.txt.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" =
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=3D(0030)https://tools.ietf.org/rfcdiff -->
<html xmlns=3D"http://www.w3.org/1999/xhtml"><head><meta =
http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8">=20
  =20
  <meta http-equiv=3D"Content-Style-Type" content=3D"text/css">=20
  <title>Diff: draft-ietf-dnssd-push-16.txt - =
draft-ietf-dnssd-push-19.txt</title>=20
  <style type=3D"text/css">=20
    body    { margin: 0.4ex; margin-right: auto; }=20
    tr      { }=20
    td      { white-space: pre; font-family: monospace; vertical-align: =
top; font-size: 0.86em;}=20
    th      { font-size: 0.86em; }=20
    .small  { font-size: 0.6em; font-style: italic; font-family: =
Verdana, Helvetica, sans-serif; }=20
    .left   { background-color: #EEE; }=20
    .right  { background-color: #FFF; }=20
    .diff   { background-color: #CCF; }=20
    .lblock { background-color: #BFB; }=20
    .rblock { background-color: #FF8; }=20
    .insert { background-color: #8FF; }=20
    .delete { background-color: #ACF; }=20
    .void   { background-color: #FFB; }=20
    .cont   { background-color: #EEE; }=20
    .linebr { background-color: #AAA; }=20
    .lineno { color: red; background-color: #FFF; font-size: 0.7em; =
text-align: right; padding: 0 2px; }=20
    .elipsis{ background-color: #AAA; }=20
    .left .cont { background-color: #DDD; }=20
    .right .cont { background-color: #EEE; }=20
    .lblock .cont { background-color: #9D9; }=20
    .rblock .cont { background-color: #DD6; }=20
    .insert .cont { background-color: #0DD; }=20
    .delete .cont { background-color: #8AD; }=20
    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px =
0; }=20
    span.hide { display: none; color: #aaa;}    a:hover span { display: =
inline; }    tr.change { background-color: gray; }=20
    tr.change a { text-decoration: none; color: black }=20
  </style>=20
     <script>
var chunk_index =3D 0;
var old_chunk =3D null;

function format_chunk(index) {
    var prefix =3D "diff";
    var str =3D index.toString();
    for (x=3D0; x<(4-str.length); ++x) {
        prefix+=3D'0';
    }
    return prefix + str;
}

function find_chunk(n){
    return document.querySelector('tr[id$=3D"' + n + '"]');
}

function change_chunk(offset) {
    var index =3D chunk_index + offset;
    var new_str;
    var new_chunk;

    new_str =3D format_chunk(index);
    new_chunk =3D find_chunk(new_str);
    if (!new_chunk) {
        return;
    }
    if (old_chunk) {
        old_chunk.style.outline =3D "";
    }
    old_chunk =3D new_chunk;
    old_chunk.style.outline =3D "1px solid red";
    window.location.replace("#" + new_str)
    window.scrollBy(0,-100);
    chunk_index =3D index;
}

document.onkeydown =3D function(e) {
    switch (e.keyCode) {
    case 78:
        change_chunk(1);
        break;
    case 80:
        change_chunk(-1);
        break;
    }
};
   </script>=20
</head>=20
<body>=20
  <table border=3D"0" cellpadding=3D"0" cellspacing=3D"0">=20
  <tbody><tr id=3D"part-1" bgcolor=3D"orange"><th></th><th><a =
href=3D"https://tools.ietf.org/rfcdiff?url2=3Ddraft-ietf-dnssd-push-16.txt=
" style=3D"color:#008; text-decoration:none;">&lt;</a>&nbsp;<a =
href=3D"https://tools.ietf.org/html/draft-ietf-dnssd-push-16.txt" =
style=3D"color:#008">draft-ietf-dnssd-push-16.txt</a>&nbsp;</th><th> =
</th><th>&nbsp;<a =
href=3D"https://tools.ietf.org/html/draft-ietf-dnssd-push-19.txt" =
style=3D"color:#008">draft-ietf-dnssd-push-19.txt</a>&nbsp;<a =
href=3D"https://tools.ietf.org/rfcdiff?url1=3Ddraft-ietf-dnssd-push-19.txt=
" style=3D"color:#008; =
text-decoration:none;">&gt;</a></th><th></th></tr>=20
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">Internet =
Engineering Task Force                              T. Pusateri</td><td> =
</td><td class=3D"right">Internet Engineering Task Force                 =
             T. Pusateri</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">Internet-Draft    =
                                          Unaffiliated</td><td> </td><td =
class=3D"right">Internet-Draft                                           =
   Unaffiliated</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">Intended status: =
Standards Track                             S. Cheshire</td><td> =
</td><td class=3D"right">Intended status: Standards Track                =
             S. Cheshire</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0001"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">Expires: <span =
class=3D"delete">May 9,</span> 2019                                      =
    Apple Inc.</td><td> </td><td class=3D"rblock">Expires: <span =
class=3D"insert">September 25,</span> 2019                               =
    Apple Inc.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
                                        <span class=3D"delete">November =
5, 2018</span></td><td> </td><td class=3D"rblock">                       =
                                   <span class=3D"insert">March 24, =
2019</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">                  =
       DNS Push Notifications</td><td> </td><td class=3D"right">         =
                DNS Push Notifications</td><td class=3D"lineno"></td></tr>=

      <tr id=3D"diff0002"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
        draft-ietf-dnssd-push-1<span class=3D"delete">6</span></td><td> =
</td><td class=3D"rblock">                        =
draft-ietf-dnssd-push-1<span class=3D"insert">9</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">Abstract</td><td> =
</td><td class=3D"right">Abstract</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The Domain =
Name System (DNS) was designed to return matching records</td><td> =
</td><td class=3D"right">   The Domain Name System (DNS) was designed to =
return matching records</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   efficiently =
for queries for data that are relatively static.  When</td><td> </td><td =
class=3D"right">   efficiently for queries for data that are relatively =
static.  When</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   those records =
change frequently, DNS is still efficient at returning</td><td> </td><td =
class=3D"right">   those records change frequently, DNS is still =
efficient at returning</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the updated =
results when polled, as long as the polling rate is not</td><td> =
</td><td class=3D"right">   the updated results when polled, as long as =
the polling rate is not</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   too high.  But =
there exists no mechanism for a client to be</td><td> </td><td =
class=3D"right">   too high.  But there exists no mechanism for a client =
to be</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   asynchronously =
notified when these changes occur.  This document</td><td> </td><td =
class=3D"right">   asynchronously notified when these changes occur.  =
This document</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   defines a =
mechanism for a client to be notified of such changes to</td><td> =
</td><td class=3D"right">   defines a mechanism for a client to be =
notified of such changes to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-2" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-2"><em> =
page 1, line 38<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-2"><em> page 1, line 38<span =
class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
Internet-Drafts are working documents of the Internet =
Engineering</td><td> </td><td class=3D"right">   Internet-Drafts are =
working documents of the Internet Engineering</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Task Force =
(IETF).  Note that other groups may also distribute</td><td> </td><td =
class=3D"right">   Task Force (IETF).  Note that other groups may also =
distribute</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   working =
documents as Internet-Drafts.  The list of current Internet-</td><td> =
</td><td class=3D"right">   working documents as Internet-Drafts.  The =
list of current Internet-</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Drafts is at =
https://datatracker.ietf.org/drafts/current/.</td><td> </td><td =
class=3D"right">   Drafts is at =
https://datatracker.ietf.org/drafts/current/.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
Internet-Drafts are draft documents valid for a maximum of six =
months</td><td> </td><td class=3D"right">   Internet-Drafts are draft =
documents valid for a maximum of six months</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   and may be =
updated, replaced, or obsoleted by other documents at any</td><td> =
</td><td class=3D"right">   and may be updated, replaced, or obsoleted =
by other documents at any</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   time.  It is =
inappropriate to use Internet-Drafts as reference</td><td> </td><td =
class=3D"right">   time.  It is inappropriate to use Internet-Drafts as =
reference</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   material or to =
cite them other than as "work in progress."</td><td> </td><td =
class=3D"right">   material or to cite them other than as "work in =
progress."</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0003"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   This =
Internet-Draft will expire on <span class=3D"delete">May 9</span>, =
2019.</td><td> </td><td class=3D"rblock">   This Internet-Draft will =
expire on <span class=3D"insert">September 25</span>, 2019.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">Copyright =
Notice</td><td> </td><td class=3D"right">Copyright Notice</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0004"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Copyright =
(c) 201<span class=3D"delete">8</span> IETF Trust and the persons =
identified as the</td><td> </td><td class=3D"rblock">   Copyright (c) =
201<span class=3D"insert">9</span> IETF Trust and the persons identified =
as the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   document =
authors.  All rights reserved.</td><td> </td><td class=3D"right">   =
document authors.  All rights reserved.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   This document =
is subject to BCP 78 and the IETF Trust's Legal</td><td> </td><td =
class=3D"right">   This document is subject to BCP 78 and the IETF =
Trust's Legal</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Provisions =
Relating to IETF Documents</td><td> </td><td class=3D"right">   =
Provisions Relating to IETF Documents</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
(https://trustee.ietf.org/license-info) in effect on the date =
of</td><td> </td><td class=3D"right">   =
(https://trustee.ietf.org/license-info) in effect on the date of</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   publication of =
this document.  Please review these documents</td><td> </td><td =
class=3D"right">   publication of this document.  Please review these =
documents</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   carefully, as =
they describe your rights and restrictions with respect</td><td> =
</td><td class=3D"right">   carefully, as they describe your rights and =
restrictions with respect</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   to this =
document.  Code Components extracted from this document must</td><td> =
</td><td class=3D"right">   to this document.  Code Components extracted =
from this document must</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   include =
Simplified BSD License text as described in Section 4.e of</td><td> =
</td><td class=3D"right">   include Simplified BSD License text as =
described in Section 4.e of</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the Trust =
Legal Provisions and are provided without warranty as</td><td> </td><td =
class=3D"right">   the Trust Legal Provisions and are provided without =
warranty as</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-3" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-3"><em> =
page 2, line 19<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-3"><em> page 2, line 19<span =
class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">Table of =
Contents</td><td> </td><td class=3D"right">Table of Contents</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   1.  =
Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   =
3</td><td> </td><td class=3D"right">   1.  Introduction  . . . . . . . . =
. . . . . . . . . . . . . . . .   3</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     1.1.  =
Requirements Language . . . . . . . . . . . . . . . . . .   3</td><td> =
</td><td class=3D"right">     1.1.  Requirements Language . . . . . . . =
. . . . . . . . . . .   3</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   2.  Motivation =
 . . . . . . . . . . . . . . . . . . . . . . . . .   4</td><td> </td><td =
class=3D"right">   2.  Motivation  . . . . . . . . . . . . . . . . . . . =
. . . . . .   4</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   3.  Overview  =
. . . . . . . . . . . . . . . . . . . . . . . . . .   5</td><td> =
</td><td class=3D"right">   3.  Overview  . . . . . . . . . . . . . . . =
. . . . . . . . . . .   5</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   4.  Transport =
. . . . . . . . . . . . . . . . . . . . . . . . . .   7</td><td> =
</td><td class=3D"right">   4.  Transport . . . . . . . . . . . . . . . =
. . . . . . . . . . .   7</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   5.  State =
Considerations  . . . . . . . . . . . . . . . . . . . .   8</td><td> =
</td><td class=3D"right">   5.  State Considerations  . . . . . . . . . =
. . . . . . . . . . .   8</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   6.  Protocol =
Operation  . . . . . . . . . . . . . . . . . . . . .   9</td><td> =
</td><td class=3D"right">   6.  Protocol Operation  . . . . . . . . . . =
. . . . . . . . . . .   9</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     6.1.  =
Discovery . . . . . . . . . . . . . . . . . . . . . . . .  10</td><td> =
</td><td class=3D"right">     6.1.  Discovery . . . . . . . . . . . . . =
. . . . . . . . . . .  10</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0005"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     6.2.  DNS =
Push Notification SUBSCRIBE . . . . . . . . . . . . .  <span =
class=3D"delete">13</span></td><td> </td><td class=3D"rblock">     6.2.  =
DNS Push Notification SUBSCRIBE . . . . . . . . . . . . .  <span =
class=3D"insert">14</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       6.2.1.  =
SUBSCRIBE Request . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">13</span></td><td> </td><td class=3D"rblock">       =
6.2.1.  SUBSCRIBE Request . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">14</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       6.2.2.  =
SUBSCRIBE Response  . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">16</span></td><td> </td><td class=3D"rblock">       =
6.2.2.  SUBSCRIBE Response  . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">17</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     6.3.  DNS =
Push Notification Updates . . . . . . . . . . . . . .  <span =
class=3D"delete">19</span></td><td> </td><td class=3D"rblock">     6.3.  =
DNS Push Notification Updates . . . . . . . . . . . . . .  <span =
class=3D"insert">20</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       6.3.1.  =
PUSH Message  . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">19</span></td><td> </td><td class=3D"rblock">       =
6.3.1.  PUSH Message  . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">20</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     6.4.  DNS =
Push Notification UNSUBSCRIBE . . . . . . . . . . . .  <span =
class=3D"delete">22</span></td><td> </td><td class=3D"rblock">     6.4.  =
DNS Push Notification UNSUBSCRIBE . . . . . . . . . . . .  <span =
class=3D"insert">25</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       6.4.1.  =
UNSUBSCRIBE <span class=3D"delete">Request</span> . . . . . . . . . . . =
. . . . . .  <span class=3D"delete">22</span></td><td> </td><td =
class=3D"rblock">       6.4.1.  UNSUBSCRIBE <span =
class=3D"insert">Message</span> . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">25</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     6.5.  DNS =
Push Notification RECONFIRM . . . . . . . . . . . . .  <span =
class=3D"delete">24</span></td><td> </td><td class=3D"rblock">     6.5.  =
DNS Push Notification RECONFIRM . . . . . . . . . . . . .  <span =
class=3D"insert">27</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       6.5.1.  =
RECONFIRM <span class=3D"delete">Request . . . . . . . . . . . . . . . =
.</span> . .  <span class=3D"delete">24</span></td><td> </td><td =
class=3D"rblock">       6.5.1.  RECONFIRM <span =
class=3D"insert">Message</span> . . . . . . . . . . . . . . . . . .  =
<span class=3D"insert">28</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">       6.5.2.  RECONFIRM Response</span>  . . . . . . . =
. . . . . . . . . <span class=3D"delete">.  26</span></td><td> </td><td =
class=3D"rblock">     6.6.  DNS Stateful Operations TLV Context Summary =
. . . . . . .  <span class=3D"insert">30</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     6.6.  DNS =
Stateful Operations TLV Context Summary . . . . . . .  <span =
class=3D"delete">28</span></td><td> </td><td class=3D"rblock">     6.7.  =
Client-Initiated Termination  . . . . . . . . . . . . . .  <span =
class=3D"insert">31</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     6.7.  =
Client-Initiated Termination  . . . . . . . . . . . . . .  <span =
class=3D"delete">29</span></td><td> </td><td class=3D"rblock">   7.  =
Security Considerations . . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">32</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   7.  Security =
Considerations . . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">30</span></td><td> </td><td class=3D"rblock">     7.1.  =
Security Services . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">32</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     7.1.  =
Security Services . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">30</span></td><td> </td><td class=3D"rblock">     7.2.  =
TLS Name Authentication . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">32</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     7.2.  TLS =
Name Authentication . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">30</span></td><td> </td><td class=3D"rblock">     7.3.  =
TLS Session Resumption  . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">33</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     7.3.  TLS =
<span class=3D"delete">Compression . . . . . . . . . . . . . . . . . . . =
. .  31</span></td><td> </td><td class=3D"rblock">   8.  IANA =
Considerations . . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">33</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">     7.4.  TLS</span> Session Resumption  . . . . . . . =
. . . . . . . . . .  <span class=3D"delete">31</span></td><td> </td><td =
class=3D"rblock">   9.  Acknowledgements  . . . . . . . . . . . . . . . =
. . . . . . .  <span class=3D"insert">34</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   8.  IANA =
Considerations . . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">32</span></td><td> </td><td class=3D"rblock">   10. =
References  . . . . . . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">34</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   9.  =
Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">32</span></td><td> </td><td class=3D"rblock">     10.1. =
 Normative References . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">34</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   10. =
References  . . . . . . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">33</span></td><td> </td><td class=3D"rblock">     10.2. =
 Informative References . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">36</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     10.1.  =
Normative References . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">33</span></td><td> </td><td class=3D"rblock">   =
Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"insert">38</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     10.2.  =
Informative References . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">34</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Authors' =
Addresses  . . . . . . . . . . . . . . . . . . . . . . .  <span =
class=3D"delete">37</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">1.  =
Introduction</td><td> </td><td class=3D"right">1.  Introduction</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Domain Name =
System (DNS) records may be updated using DNS Update</td><td> </td><td =
class=3D"right">   Domain Name System (DNS) records may be updated using =
DNS Update</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC2136].  =
Other mechanisms such as a Discovery Proxy [DisProx] can</td><td> =
</td><td class=3D"right">   [RFC2136].  Other mechanisms such as a =
Discovery Proxy [DisProx] can</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   also generate =
changes to a DNS zone.  This document specifies a</td><td> </td><td =
class=3D"right">   also generate changes to a DNS zone.  This document =
specifies a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   protocol for =
DNS clients to subscribe to receive asynchronous</td><td> </td><td =
class=3D"right">   protocol for DNS clients to subscribe to receive =
asynchronous</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   notifications =
of changes to RRSets of interest.  It is immediately</td><td> </td><td =
class=3D"right">   notifications of changes to RRSets of interest.  It =
is immediately</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   relevant in =
the case of DNS Service Discovery [RFC6763] but is not</td><td> </td><td =
class=3D"right">   relevant in the case of DNS Service Discovery =
[RFC6763] but is not</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   limited to =
that use case, and provides a general DNS mechanism for</td><td> =
</td><td class=3D"right">   limited to that use case, and provides a =
general DNS mechanism for</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS record =
change notifications.  Familiarity with the DNS protocol</td><td> =
</td><td class=3D"right">   DNS record change notifications.  =
Familiarity with the DNS protocol</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   and DNS packet =
formats is assumed [RFC1034] [RFC1035] [RFC6895].</td><td> </td><td =
class=3D"right">   and DNS packet formats is assumed [RFC1034] [RFC1035] =
[RFC6895].</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">1.1.  =
Requirements Language</td><td> </td><td class=3D"right">1.1.  =
Requirements Language</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The key words =
"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",</td><td> </td><td =
class=3D"right">   The key words "MUST", "MUST NOT", "REQUIRED", =
"SHALL", "SHALL NOT",</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   "SHOULD", =
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and</td><td> =
</td><td class=3D"right">   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT =
RECOMMENDED", "MAY", and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   "OPTIONAL" in =
this document are to be interpreted as described in</td><td> </td><td =
class=3D"right">   "OPTIONAL" in this document are to be interpreted as =
described in</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0006"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">"Key words for use in RFCs to Indicate Requirement =
Levels",</span> when, and</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">BCP 14 [RFC2119] [RFC8174]</span> when, and only when, =
they appear in all</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   only when, =
they appear in all capitals, as shown <span class=3D"delete">here =
[RFC2119]</span></td><td> </td><td class=3D"rblock">   capitals, as =
shown <span class=3D"insert">here.  These words may also appear in =
this</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   [RFC8174].</span></td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   document in lower case as =
plain English words, absent their normative</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   =
meanings.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">2.  =
Motivation</td><td> </td><td class=3D"right">2.  Motivation</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   As the domain =
name system continues to adapt to new uses and changes</td><td> </td><td =
class=3D"right">   As the domain name system continues to adapt to new =
uses and changes</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   in deployment, =
polling has the potential to burden DNS servers at</td><td> </td><td =
class=3D"right">   in deployment, polling has the potential to burden =
DNS servers at</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   many levels =
throughout the network.  Other network protocols have</td><td> </td><td =
class=3D"right">   many levels throughout the network.  Other network =
protocols have</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   successfully =
deployed a publish/subscribe model following the</td><td> </td><td =
class=3D"right">   successfully deployed a publish/subscribe model =
following the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Observer =
design pattern [obs].  XMPP Publish-Subscribe [XEP0060] and</td><td> =
</td><td class=3D"right">   Observer design pattern [obs].  XMPP =
Publish-Subscribe [XEP0060] and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Atom [RFC4287] =
are examples.  While DNS servers are generally highly</td><td> </td><td =
class=3D"right">   Atom [RFC4287] are examples.  While DNS servers are =
generally highly</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   tuned and =
capable of a high rate of query/response traffic, adding a</td><td> =
</td><td class=3D"right">   tuned and capable of a high rate of =
query/response traffic, adding a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-4" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-4"><em> =
page 4, line 30<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-4"><em> page 4, line 30<span =
class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   multicast =
group address for all group members to receive.  Therefore,</td><td> =
</td><td class=3D"right">   multicast group address for all group =
members to receive.  Therefore,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Multicast DNS =
already has asynchronous change notification</td><td> </td><td =
class=3D"right">   Multicast DNS already has asynchronous change =
notification</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   capability.  =
However, when DNS Service Discovery [RFC6763] is used</td><td> </td><td =
class=3D"right">   capability.  However, when DNS Service Discovery =
[RFC6763] is used</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   across a wide =
area network using Unicast DNS (possibly facilitated</td><td> </td><td =
class=3D"right">   across a wide area network using Unicast DNS =
(possibly facilitated</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   via a =
Discovery Proxy [DisProx]) it would be beneficial to have an</td><td> =
</td><td class=3D"right">   via a Discovery Proxy [DisProx]) it would be =
beneficial to have an</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   equivalent =
capability for Unicast DNS, to allow clients to learn</td><td> </td><td =
class=3D"right">   equivalent capability for Unicast DNS, to allow =
clients to learn</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   about DNS =
record changes in a timely manner without polling.</td><td> </td><td =
class=3D"right">   about DNS record changes in a timely manner without =
polling.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The DNS =
Long-Lived Queries (LLQ) mechanism [LLQ] is an existing</td><td> =
</td><td class=3D"right">   The DNS Long-Lived Queries (LLQ) mechanism =
[LLQ] is an existing</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   deployed =
solution to provide asynchronous change notifications, used</td><td> =
</td><td class=3D"right">   deployed solution to provide asynchronous =
change notifications, used</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0007"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   by Apple's =
Back to My Mac <span class=3D"delete">Service [RFC6281]</span> =
introduced in Mac OS X</td><td> </td><td class=3D"rblock">   by Apple's =
Back to My Mac <span class=3D"insert">[RFC6281] service</span> =
introduced in Mac OS X</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   10.5 Leopard =
in 2007.  Back to My Mac was designed in an era when the</td><td> =
</td><td class=3D"right">   10.5 Leopard in 2007.  Back to My Mac was =
designed in an era when the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   data center =
operations staff asserted that it was impossible for a</td><td> </td><td =
class=3D"right">   data center operations staff asserted that it was =
impossible for a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server to =
handle large numbers of mostly-idle TCP connections, so LLQ</td><td> =
</td><td class=3D"right">   server to handle large numbers of =
mostly-idle TCP connections, so LLQ</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   was defined as =
a UDP-based protocol, effectively replicating much of</td><td> </td><td =
class=3D"right">   was defined as a UDP-based protocol, effectively =
replicating much of</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   TCP's =
connection state management logic in user space, and creating</td><td> =
</td><td class=3D"right">   TCP's connection state management logic in =
user space, and creating</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   its own poor =
imitations of existing TCP features like the three-way</td><td> </td><td =
class=3D"right">   its own poor imitations of existing TCP features like =
the three-way</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   handshake, =
flow control, and reliability.</td><td> </td><td class=3D"right">   =
handshake, flow control, and reliability.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   This document =
builds on experience gained with the LLQ protocol, with</td><td> =
</td><td class=3D"right">   This document builds on experience gained =
with the LLQ protocol, with</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   an improved =
design.  Instead of using UDP, this specification uses</td><td> </td><td =
class=3D"right">   an improved design.  Instead of using UDP, this =
specification uses</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0008"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   DNS Stateful =
Operations (DSO) <span class=3D"delete">[DSO]</span> running over TLS =
over TCP, and</td><td> </td><td class=3D"rblock">   DNS Stateful =
Operations (DSO) <span class=3D"insert">[RFC8490]</span> running over =
TLS over TCP,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   therefore =
doesn't need to reinvent existing TCP functionality.  Using</td><td> =
</td><td class=3D"rblock">   and therefore doesn't need to reinvent =
existing TCP functionality.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   TCP also =
gives long-lived low-traffic connections better longevity</td><td> =
</td><td class=3D"rblock">   Using TCP also gives long-lived low-traffic =
connections better</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   through NAT =
gateways without resorting to excessive keepalive</td><td> </td><td =
class=3D"rblock">   longevity through NAT gateways without <span =
class=3D"insert">depending on the gateway to</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   traffic.  =
<span class=3D"delete">Instead of inventing a new vocabulary of messages =
to</span></td><td> </td><td class=3D"rblock"><span class=3D"insert">   =
support NAT Port Mapping Protocol (NAT-PMP) [RFC6886] or Port =
Control</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   communicate DNS zone changes as LLQ did, this =
specification borrows</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   Protocol (PCP) [RFC6887], or</span> resorting to =
excessive keepalive</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   the established syntax and semantics of DNS Update =
messages</span></td><td> </td><td class=3D"rblock">   traffic.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   [RFC2136].</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">3.  =
Overview</td><td> </td><td class=3D"right">3.  Overview</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0009"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">The existing DNS Update protocol [RFC2136] provides a =
mechanism for</span></td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">A</span> DNS Push Notification client subscribes for =
Push Notifications <span class=3D"insert">for</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   clients to add or delete individual resource records =
(RRs) or entire</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   a particular RRSet</span> by connecting to the <span =
class=3D"insert">appropriate Push Notification</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   resource record sets (RRSets) on the zone's =
server.</span></td><td> </td><td class=3D"rblock">   server <span =
class=3D"insert">for that RRSet,</span> and sending <span =
class=3D"insert">DSO</span> message(s) indicating the</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock">   RRSet(s) =
of interest.  When the client loses interest in receiving</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   This specification adopts a simplified subset of =
these existing</span></td><td> </td><td class=3D"rblock">   further =
updates to these records, it unsubscribes.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   syntax and semantics, and uses them for</span> DNS =
Push Notification</td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">messages going in the opposite direction, from server =
to client, to</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   communicate changes to a zone.  The</span> client =
subscribes for Push</td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   =
Notifications by connecting to the server and sending <span =
class=3D"delete">DNS</span> message(s)</td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   indicating =
the RRSet(s) of interest.  When the client loses interest</td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   in receiving =
further updates to these records, it unsubscribes.</td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0010"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The DNS Push =
Notification server for a zone is any server capable of</td><td> =
</td><td class=3D"rblock">   The DNS Push Notification server for a =
<span class=3D"insert">DNS</span> zone is any server capable</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   generating =
the correct change notifications for a name.  It may be a</td><td> =
</td><td class=3D"rblock">   of generating the correct change =
notifications for a name.  It may be</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   primary, =
secondary, or stealth name server [RFC7719].  Consequently,</td><td> =
</td><td class=3D"rblock">   a primary, secondary, or stealth name =
server [RFC7719].</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the =
"_dns-push-tls._tcp.&lt;zone&gt;" SRV record for a zone MAY =
reference</td><td> </td><td class=3D"rblock">   Consequently, the =
"_dns-push-tls._tcp.&lt;zone&gt;" SRV record for a zone</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the same =
target host and port as that zone's</td><td> </td><td class=3D"rblock">  =
 MAY reference the same target host and port as that zone's</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
"_dns-update-tls._tcp.&lt;zone&gt;" SRV record.  When the same target =
host</td><td> </td><td class=3D"right">   =
"_dns-update-tls._tcp.&lt;zone&gt;" SRV record.  When the same target =
host</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   and port is =
offered for both DNS Updates and DNS Push Notifications,</td><td> =
</td><td class=3D"right">   and port is offered for both DNS Updates and =
DNS Push Notifications,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   a client MAY =
use a single TCP connection to that server for both DNS</td><td> =
</td><td class=3D"right">   a client MAY use a single TCP connection to =
that server for both DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Updates and =
DNS Push Notification Subscriptions.</td><td> </td><td class=3D"right">  =
 Updates and DNS Push Notification Subscriptions.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Supporting DNS =
Updates and DNS Push Notifications on the same server</td><td> </td><td =
class=3D"right">   Supporting DNS Updates and DNS Push Notifications on =
the same server</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0011"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   is OPTIONAL. =
 A DNS Push Notification server <span class=3D"delete">does NOT also =
have</span> to</td><td> </td><td class=3D"rblock">   is OPTIONAL.  A DNS =
Push Notification server <span class=3D"insert">is NOT REQUIRED =
also</span> to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   support DNS =
Update.</td><td> </td><td class=3D"right">   support DNS Update.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS Updates =
and DNS Push Notifications may be handled on different</td><td> </td><td =
class=3D"right">   DNS Updates and DNS Push Notifications may be handled =
on different</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   ports on the =
same target host, in which case they are not considered</td><td> =
</td><td class=3D"right">   ports on the same target host, in which case =
they are not considered</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   to be the =
"same server" for the purposes of this specification, and</td><td> =
</td><td class=3D"right">   to be the "same server" for the purposes of =
this specification, and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   communications =
with these two ports are handled independently.</td><td> </td><td =
class=3D"right">   communications with these two ports are handled =
independently.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0012"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Standard DNS =
Queries MAY be sent over a DNS Push Notification</td><td> </td><td =
class=3D"rblock">   Standard DNS Queries MAY be sent over a DNS Push =
Notification <span class=3D"insert">(i.e.,</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">connection.</span>  For any zone for which the server =
is authoritative, it</td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   DSO) session.</span>  For any zone for which the =
server is authoritative, it</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   MUST respond =
authoritatively for queries on names falling within that</td><td> =
</td><td class=3D"right">   MUST respond authoritatively for queries on =
names falling within that</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   zone (e.g., =
the &lt;zone&gt; in the "_dns-push-tls._tcp.&lt;zone&gt;" SRV =
record)</td><td> </td><td class=3D"right">   zone (e.g., the =
&lt;zone&gt; in the "_dns-push-tls._tcp.&lt;zone&gt;" SRV =
record)</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0013"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   both for DNS =
<span class=3D"delete">Push Notification</span> queries and for <span =
class=3D"delete">normal</span> DNS <span =
class=3D"delete">queries.</span></td><td> </td><td class=3D"rblock">   =
both for <span class=3D"insert">normal</span> DNS queries and for DNS =
<span class=3D"insert">Push Notification</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   For names =
for which the server is acting as a <span class=3D"delete">caching</span> =
resolver, e.g.</td><td> </td><td class=3D"rblock"><span class=3D"insert"> =
  subscriptions.</span>  For names for which the server is acting as =
a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   when the =
server is the local resolver, for any query for which it</td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">recursive</span> =
resolver, e.g. when the server is the local <span =
class=3D"insert">recursive</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   supports DNS =
Push <span class=3D"delete">Notifications,</span> it MUST also support =
standard</td><td> </td><td class=3D"rblock">   resolver, for any query =
for which it supports DNS Push <span =
class=3D"insert">Notification</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   =
queries.</td><td> </td><td class=3D"rblock"><span class=3D"insert">   =
subscriptions,</span> it MUST also support standard queries.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
                                                         </td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">DNS Push Notification clients are NOT required to =
implement DNS</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Update Prerequisite processing.  Prerequisites are =
used to perform</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   tentative atomic test-and-set type operations when a =
client updates</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   records on a server, and that concept has no =
applicability when it</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   comes to an authoritative server unilaterally =
informing a client of</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   changes to DNS records.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   This DNS Push =
Notification specification includes support for DNS</td><td> </td><td =
class=3D"right">   This DNS Push Notification specification includes =
support for DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   classes, for =
completeness.  However, in practice, it is anticipated</td><td> </td><td =
class=3D"right">   classes, for completeness.  However, in practice, it =
is anticipated</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   that for the =
foreseeable future the only DNS class in use will be DNS</td><td> =
</td><td class=3D"right">   that for the foreseeable future the only DNS =
class in use will be DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   class "IN", as =
is the reality today with existing DNS servers and</td><td> </td><td =
class=3D"right">   class "IN", as is the reality today with existing DNS =
servers and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   clients.  A =
DNS Push Notification server MAY choose to implement only</td><td> =
</td><td class=3D"right">   clients.  A DNS Push Notification server MAY =
choose to implement only</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS class =
"IN".  If messages are received for a class other than</td><td> </td><td =
class=3D"right">   DNS class "IN".  If messages are received for a class =
other than</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   "IN", and that =
class is not supported, an error with RCODE NOTIMPL</td><td> </td><td =
class=3D"right">   "IN", and that class is not supported, an error with =
RCODE NOTIMPL</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   (Not =
Implemented) should be returned.</td><td> </td><td class=3D"right">   =
(Not Implemented) should be returned.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS Push =
Notifications impose less load on the responding server than</td><td> =
</td><td class=3D"right">   DNS Push Notifications impose less load on =
the responding server than</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   rapid polling =
would, but Push Notifications do still have a cost, so</td><td> </td><td =
class=3D"right">   rapid polling would, but Push Notifications do still =
have a cost, so</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0014"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   DNS Push =
Notification clients <span class=3D"delete">must not</span> recklessly =
create an excessive</td><td> </td><td class=3D"rblock">   DNS Push =
Notification clients <span class=3D"insert">MUST NOT</span> recklessly =
create an excessive</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   number of Push =
Notification subscriptions.  Specifically:</td><td> </td><td =
class=3D"right">   number of Push Notification subscriptions.  =
Specifically:</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   (a) A =
subscription should only be active when there is a valid reason</td><td> =
</td><td class=3D"right">   (a) A subscription should only be active =
when there is a valid reason</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   to need live =
data (for example, an on-screen display is currently</td><td> </td><td =
class=3D"right">   to need live data (for example, an on-screen display =
is currently</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   showing the =
results to the user) and the subscription SHOULD be</td><td> </td><td =
class=3D"right">   showing the results to the user) and the subscription =
SHOULD be</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   cancelled as =
soon as the need for that data ends (for example, when</td><td> </td><td =
class=3D"right">   cancelled as soon as the need for that data ends (for =
example, when</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0015"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the user =
dismisses that display).  <span class=3D"delete">Implementations may =
want</span> to</td><td> </td><td class=3D"rblock">   the user dismisses =
that display).  <span class=3D"insert">In the case of a device like =
a</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">implement idle timeouts, so that if</span> the <span =
class=3D"delete">user ceases interacting with</span></td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   smartphone which, after some =
period of inactivity, goes</span> to <span class=3D"insert">sleep =
or</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the <span =
class=3D"delete">device,</span> the <span class=3D"delete">subscription =
is cancelled.</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   otherwise darkens its screen, it should cancel its =
subscriptions when</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   darkening</span> the =
<span class=3D"insert">screen (since</span> the <span =
class=3D"insert">user cannot see any changes in</span> the</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">display anyway) and =
reinstate its subscriptions when re-awakening</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   from display =
sleep.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   (b) A DNS Push =
Notification client SHOULD NOT routinely keep a DNS</td><td> </td><td =
class=3D"right">   (b) A DNS Push Notification client SHOULD NOT =
routinely keep a DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Push =
Notification subscription active 24 hours a day, 7 days a week,</td><td> =
</td><td class=3D"right">   Push Notification subscription active 24 =
hours a day, 7 days a week,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   just to keep a =
list in memory up to date so that if the user does</td><td> </td><td =
class=3D"right">   just to keep a list in memory up to date so that if =
the user does</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   choose to =
bring up an on-screen display of that data, it can be</td><td> </td><td =
class=3D"right">   choose to bring up an on-screen display of that data, =
it can be</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   displayed =
really fast.  DNS Push Notifications are designed to be</td><td> =
</td><td class=3D"right">   displayed really fast.  DNS Push =
Notifications are designed to be</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   fast enough =
that there is no need to pre-load a "warm" list in memory</td><td> =
</td><td class=3D"right">   fast enough that there is no need to =
pre-load a "warm" list in memory</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   just in case =
it might be needed later.</td><td> </td><td class=3D"right">   just in =
case it might be needed later.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Generally, as =
described in the DNS Stateful Operations specification</td><td> </td><td =
class=3D"right">   Generally, as described in the DNS Stateful =
Operations specification</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0016"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">[DSO],</span> a client must not keep a session to a =
server open indefinitely</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">[RFC8490],</span> a client must not keep a session to a =
server open</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   if it has no =
subscriptions (or other operations) active on that</td><td> </td><td =
class=3D"rblock">   indefinitely if it has no subscriptions (or other =
operations) active</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   session.  A =
client MAY close a session as soon as it becomes idle,</td><td> </td><td =
class=3D"rblock">   on that session.  A client MAY close a session as =
soon as it becomes</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   and then if =
needed in the future, open a new session when required.</td><td> =
</td><td class=3D"rblock">   idle, and then if needed in the future, =
open a new session when</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   =
Alternatively, a client MAY speculatively keep an idle session =
open</td><td> </td><td class=3D"rblock">   required.  Alternatively, a =
client MAY speculatively keep an idle</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   for some =
time, subject to the constraint that it MUST NOT keep a</td><td> =
</td><td class=3D"rblock">   session open for some time, subject to the =
constraint that it MUST</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   session open =
that has been idle for more than the session's idle</td><td> </td><td =
class=3D"rblock">   NOT keep a session open that has been idle for more =
than the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   timeout (15 =
seconds by <span class=3D"delete">default).</span></td><td> </td><td =
class=3D"rblock">   session's idle timeout (15 seconds by <span =
class=3D"insert">default) [RFC8490].</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">4.  =
Transport</td><td> </td><td class=3D"right">4.  Transport</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Other DNS =
operations like DNS Update [RFC2136] MAY use either User</td><td> =
</td><td class=3D"right">   Other DNS operations like DNS Update =
[RFC2136] MAY use either User</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Datagram =
Protocol (UDP) [RFC0768] or Transmission Control Protocol</td><td> =
</td><td class=3D"right">   Datagram Protocol (UDP) [RFC0768] or =
Transmission Control Protocol</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   (TCP) =
[RFC0793] as the transport protocol, in keeping with the</td><td> =
</td><td class=3D"right">   (TCP) [RFC0793] as the transport protocol, =
in keeping with the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   historical =
precedent that DNS queries must first be sent over UDP</td><td> </td><td =
class=3D"right">   historical precedent that DNS queries must first be =
sent over UDP</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC1123].  =
This requirement to use UDP has subsequently been relaxed</td><td> =
</td><td class=3D"right">   [RFC1123].  This requirement to use UDP has =
subsequently been relaxed</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
[RFC7766].</td><td> </td><td class=3D"right">   [RFC7766].</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   In keeping =
with the more recent precedent, DNS Push Notification is</td><td> =
</td><td class=3D"right">   In keeping with the more recent precedent, =
DNS Push Notification is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   defined only =
for TCP.  DNS Push Notification clients MUST use DNS</td><td> </td><td =
class=3D"right">   defined only for TCP.  DNS Push Notification clients =
MUST use DNS</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0017"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Stateful =
Operations <span class=3D"delete">(DSO) [DSO</span>] running over TLS =
over TCP [RFC7858].</td><td> </td><td class=3D"rblock">   Stateful =
Operations <span class=3D"insert">[RFC8490</span>] running over TLS over =
TCP [RFC7858].</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Connection =
setup over TCP ensures return reachability and alleviates</td><td> =
</td><td class=3D"right">   Connection setup over TCP ensures return =
reachability and alleviates</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   concerns of =
state overload at the server through anonymous</td><td> </td><td =
class=3D"right">   concerns of state overload at the server through =
anonymous</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   subscriptions. =
 All subscribers are guaranteed to be reachable by the</td><td> </td><td =
class=3D"right">   subscriptions.  All subscribers are guaranteed to be =
reachable by the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server by =
virtue of the TCP three-way handshake.  Flooding attacks</td><td> =
</td><td class=3D"right">   server by virtue of the TCP three-way =
handshake.  Flooding attacks</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   are possible =
with any protocol, and a benefit of TCP is that there</td><td> </td><td =
class=3D"right">   are possible with any protocol, and a benefit of TCP =
is that there</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   are already =
established industry best practices to guard against SYN</td><td> =
</td><td class=3D"right">   are already established industry best =
practices to guard against SYN</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   flooding and =
similar attacks [SYN] [RFC4953].</td><td> </td><td class=3D"right">   =
flooding and similar attacks [SYN] [RFC4953].</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Use of TCP =
also allows DNS Push Notifications to take advantage of</td><td> =
</td><td class=3D"right">   Use of TCP also allows DNS Push =
Notifications to take advantage of</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   current and =
future developments in TCP, such as Multipath TCP (MPTCP)</td><td> =
</td><td class=3D"right">   current and future developments in TCP, such =
as Multipath TCP (MPTCP)</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC6824], TCP =
Fast Open (TFO) [RFC7413], Tail Loss Probe (TLP)</td><td> </td><td =
class=3D"right">   [RFC6824], TCP Fast Open (TFO) [RFC7413], Tail Loss =
Probe (TLP)</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
[I-D.dukkipati-tcpm-tcp-loss-probe], and so on.</td><td> </td><td =
class=3D"right">   [I-D.dukkipati-tcpm-tcp-loss-probe], and so =
on.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0018"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Transport =
Layer Security (TLS) [RFC<span class=3D"delete">52</span>46] is well =
understood and</td><td> </td><td class=3D"rblock">   Transport Layer =
Security (TLS) [RFC<span class=3D"insert">84</span>46] is well =
understood and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   deployed =
across many protocols running over TCP.  It is designed to</td><td> =
</td><td class=3D"right">   deployed across many protocols running over =
TCP.  It is designed to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   prevent =
eavesdropping, tampering, and message forgery.  TLS is</td><td> </td><td =
class=3D"right">   prevent eavesdropping, tampering, and message =
forgery.  TLS is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   REQUIRED for =
every connection between a client subscriber and server</td><td> =
</td><td class=3D"right">   REQUIRED for every connection between a =
client subscriber and server</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   in this =
protocol specification.  Additional security measures such as</td><td> =
</td><td class=3D"right">   in this protocol specification.  Additional =
security measures such as</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client =
authentication during TLS negotiation MAY also be employed to</td><td> =
</td><td class=3D"right">   client authentication during TLS negotiation =
MAY also be employed to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   increase the =
trust relationship between client and server.</td><td> </td><td =
class=3D"right">   increase the trust relationship between client and =
server.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">5.  State =
Considerations</td><td> </td><td class=3D"right">5.  State =
Considerations</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Each DNS Push =
Notification server is capable of handling some finite</td><td> </td><td =
class=3D"right">   Each DNS Push Notification server is capable of =
handling some finite</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-5" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-5"><em> =
page 9, line 8<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-5"><em> page 9, line 8<span =
class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   employ various =
techniques to limit subscriptions to a manageable</td><td> </td><td =
class=3D"right">   employ various techniques to limit subscriptions to a =
manageable</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   level.  =
Correspondingly, the client is free to establish simultaneous</td><td> =
</td><td class=3D"right">   level.  Correspondingly, the client is free =
to establish simultaneous</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   sessions to =
alternate DNS servers that support DNS Push Notifications</td><td> =
</td><td class=3D"right">   sessions to alternate DNS servers that =
support DNS Push Notifications</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   for the zone =
and distribute subscriptions at the client's discretion.</td><td> =
</td><td class=3D"right">   for the zone and distribute subscriptions at =
the client's discretion.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   In this way, =
both clients and servers can react to resource</td><td> </td><td =
class=3D"right">   In this way, both clients and servers can react to =
resource</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
constraints.</td><td> </td><td class=3D"right">   constraints.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.  Protocol =
Operation</td><td> </td><td class=3D"right">6.  Protocol =
Operation</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The DNS Push =
Notification protocol is a session-oriented protocol,</td><td> </td><td =
class=3D"right">   The DNS Push Notification protocol is a =
session-oriented protocol,</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0019"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   and makes =
use of DNS Stateful Operations (DSO) [<span =
class=3D"delete">DSO</span>].</td><td> </td><td class=3D"rblock">   and =
makes use of DNS Stateful Operations (DSO) [<span =
class=3D"insert">RFC8490</span>].</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0020"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   For details =
of the DSO message format refer to the DNS Stateful</td><td> </td><td =
class=3D"rblock">   For details of the DSO message format refer to the =
DNS Stateful <span class=3D"insert">Oper-</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">Operations</span> specification <span =
class=3D"delete">[DSO].</span>  Those details are not repeated =
here.</td><td> </td><td class=3D"rblock"><span class=3D"insert">   =
ations</span> specification <span class=3D"insert">[RFC8490].</span>  =
Those details are not repeated here.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS Push =
Notification clients and servers MUST support DSO.  A single</td><td> =
</td><td class=3D"right">   DNS Push Notification clients and servers =
MUST support DSO.  A single</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server can =
support DNS Queries, DNS Updates, and DNS Push</td><td> </td><td =
class=3D"right">   server can support DNS Queries, DNS Updates, and DNS =
Push</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Notifications =
(using DSO) on the same TCP port.</td><td> </td><td class=3D"right">   =
Notifications (using DSO) on the same TCP port.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   A DNS Push =
Notification exchange begins with the client discovering</td><td> =
</td><td class=3D"right">   A DNS Push Notification exchange begins with =
the client discovering</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the =
appropriate server, using the procedure described in Section =
6.1,</td><td> </td><td class=3D"right">   the appropriate server, using =
the procedure described in Section 6.1,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   and then =
making a TLS/TCP connection to it.</td><td> </td><td class=3D"right">   =
and then making a TLS/TCP connection to it.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   A typical DNS =
Push Notification client will immediately issue a DSO</td><td> </td><td =
class=3D"right">   A typical DNS Push Notification client will =
immediately issue a DSO</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0021"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Keepalive =
operation to request a session timeout <span class=3D"delete">or</span> =
keepalive</td><td> </td><td class=3D"rblock">   Keepalive operation to =
request a session timeout <span class=3D"insert">and/or</span> =
keepalive</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   interval =
longer than the the 15-second <span class=3D"delete">default,</span> but =
this is not</td><td> </td><td class=3D"rblock">   interval longer than =
the the 15-second <span class=3D"insert">default values,</span> but this =
is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   required.  A =
DNS Push Notification client MAY issue other requests on</td><td> =
</td><td class=3D"rblock">   not required.  A DNS Push Notification =
client MAY issue other</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the session =
first, and only issue a DSO Keepalive operation later if</td><td> =
</td><td class=3D"rblock">   requests on the session first, and only =
issue a DSO Keepalive</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   it =
determines that to be necessary.  <span class=3D"delete">However,</span> =
Push Notification</td><td> </td><td class=3D"rblock">   operation later =
if it determines that to be necessary.  <span =
class=3D"insert">Sending</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">subscriptions can also be used</span> to <span =
class=3D"delete">establish</span> the DSO session.</td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   either a DSO Keepalive =
operation or a</span> Push Notification <span =
class=3D"insert">subscription</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   over the TLS/TCP =
connection</span> to the <span class=3D"insert">server signals the =
client's</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   support of DSO and =
serves to establish a</span> DSO session.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   In accordance =
with the current set of active subscriptions, the</td><td> </td><td =
class=3D"right">   In accordance with the current set of active =
subscriptions, the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server sends =
relevant asynchronous Push Notifications to the client.</td><td> =
</td><td class=3D"right">   server sends relevant asynchronous Push =
Notifications to the client.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Note that a =
client MUST be prepared to receive (and silently ignore)</td><td> =
</td><td class=3D"right">   Note that a client MUST be prepared to =
receive (and silently ignore)</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Push =
Notifications for subscriptions it has previously removed, =
since</td><td> </td><td class=3D"right">   Push Notifications for =
subscriptions it has previously removed, since</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   there is no =
way to prevent the situation where a Push Notification is</td><td> =
</td><td class=3D"right">   there is no way to prevent the situation =
where a Push Notification is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   in flight from =
server to client while the client's UNSUBSCRIBE</td><td> </td><td =
class=3D"right">   in flight from server to client while the client's =
UNSUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   message =
cancelling that subscription is simultaneously in flight from</td><td> =
</td><td class=3D"right">   message cancelling that subscription is =
simultaneously in flight from</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client to =
server.</td><td> </td><td class=3D"right">   client to server.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.1.  =
Discovery</td><td> </td><td class=3D"right">6.1.  Discovery</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The first step =
in DNS Push Notification subscription is to discover</td><td> </td><td =
class=3D"right">   The first step in DNS Push Notification subscription =
is to discover</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   an appropriate =
DNS server that supports DNS Push Notifications for</td><td> </td><td =
class=3D"right">   an appropriate DNS server that supports DNS Push =
Notifications for</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the desired =
zone.</td><td> </td><td class=3D"right">   the desired zone.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The client =
begins by opening a DSO Session to its normal configured</td><td> =
</td><td class=3D"right">   The client begins by opening a DSO Session =
to its normal configured</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS recursive =
resolver and requesting a Push Notification</td><td> </td><td =
class=3D"right">   DNS recursive resolver and requesting a Push =
Notification</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0022"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   =
subscription.  This connection is made to the default <span =
class=3D"delete">DNS-over-TLS</span></td><td> </td><td class=3D"rblock"> =
  subscription.  This connection is made to <span class=3D"insert">TCP =
port 853,</span> the default</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   port <span =
class=3D"delete">as defined in</span> DNS over TLS [RFC7858].  If <span =
class=3D"delete">this connection</span> is</td><td> </td><td =
class=3D"rblock">   port <span class=3D"insert">for DNS-over-TLS</span> =
DNS over TLS [RFC7858].  If <span class=3D"insert">the request for =
a</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   successful, =
then the recursive resolver will make <span =
class=3D"delete">appropriate</span> Push</td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   Push Notification =
subscription</span> is successful, then the recursive</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Notification =
<span class=3D"delete">subscriptions</span> on the client's <span =
class=3D"delete">behalf,</span> and the client</td><td> </td><td =
class=3D"rblock">   resolver will make <span class=3D"insert">a =
corresponding</span> Push Notification <span =
class=3D"insert">subscription</span> on</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">will receive</span> appropriate <span =
class=3D"delete">results.</span></td><td> </td><td class=3D"rblock">   =
the client's <span class=3D"insert">behalf (if the recursive resolver =
doesn't already have</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   an active =
subscription for that name, type,</span> and <span =
class=3D"insert">class), and pass on</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   any results it =
receives back to</span> the <span class=3D"insert">client.  This is =
closely</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   analogous to how =
a</span> client <span class=3D"insert">sends normal DNS queries to its =
configured</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   DNS recursive =
resolver, which issues queries on the client's behalf</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   (if the recursive =
resolver doesn't already have</span> appropriate <span =
class=3D"insert">answer(s)</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   in its cache), and =
passes on any results it receives back to the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   =
client.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0023"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   In many =
contexts, the <span class=3D"delete">local</span> recursive resolver =
will be able to handle</td><td> </td><td class=3D"rblock">   In many =
contexts, the recursive resolver will be able to handle <span =
class=3D"insert">Push</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">push notifications</span> for all <span =
class=3D"delete">zones</span> that the client may need to =
follow.</td><td> </td><td class=3D"rblock"><span class=3D"insert">   =
Notifications</span> for all <span class=3D"insert">names</span> that =
the client may need to follow.  <span class=3D"insert">Use</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">In other cases,</span> the client <span =
class=3D"delete">may require</span> Push Notifications <span =
class=3D"delete">from more</span></td><td> </td><td class=3D"rblock"><span=
 class=3D"insert">   of VPN tunnels and split-view DNS can create some =
additional</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   than one zone, and those zones may be served by =
different servers.</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   complexity in</span> the client <span =
class=3D"insert">software here; the techniques to handle =
VPN</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Therefore, it is assumed that</span> the <span =
class=3D"delete">client may need to maintain</span></td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   tunnels and split-view DNS =
for DNS</span> Push Notifications <span class=3D"insert">are</span> the =
<span class=3D"insert">same as</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   connections</span> to <span class=3D"delete">more =
than one</span> DNS <span class=3D"delete">Push server.</span></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   those already =
used</span> to <span class=3D"insert">handle this for normal</span> DNS =
<span class=3D"insert">queries.</span></td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0024"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">In some cases,</span> the recursive resolver <span =
class=3D"delete">may</span> not <span class=3D"delete">be able to get =
answers</span></td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">If</span> the recursive resolver <span =
class=3D"insert">does</span> not <span class=3D"insert">support</span> =
DNS <span class=3D"insert">over TLS, or does</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   for a particular zone.  In this case, rather than =
returning SERVFAIL,</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   support</span> DNS <span class=3D"insert">over TLS =
but</span> is <span class=3D"insert">not listening on TCP port =
853,</span> or <span class=3D"insert">does</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   the resolver returns NOTAUTH.  This signals the =
client that queries</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   support DNS over TLS on TCP port 853</span> but =
<span class=3D"insert">does</span> not <span class=3D"insert">support =
DSO on</span> that</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   for this zone can't be handled by the local caching =
resolver.  For</span></td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">port, then the DSO Session session establishment will =
fail [RFC8490].</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   that zone, the client SHOULD contact the =
zone's</span> DNS <span class=3D"delete">Push server</span></td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   itself, even if all other</span> DNS <span =
class=3D"delete">Push queries can be handled by the</span></td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   local resolver.  This may be necessary in cases =
where the client</span> is</td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">connected to a VPN, for example,</span> or <span =
class=3D"delete">where the client has a pre-</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   established trust relationship with the owner of the =
zone that allows</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   the client,</span> but not <span class=3D"delete">the =
local resolver, to successfully get answers</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   for queries in</span> that <span =
class=3D"delete">zone.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0025"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   If the =
recursive resolver does <span class=3D"delete">not</span> support Push =
Notification</td><td> </td><td class=3D"rblock">   If the recursive =
resolver does support <span class=3D"insert">DSO but not</span> Push =
Notification</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   =
subscriptions, then it will return <span class=3D"delete">an</span> =
error code, <span class=3D"delete">DSONOTIMPL.  This</span></td><td> =
</td><td class=3D"rblock">   subscriptions, then it will return <span =
class=3D"insert">the DSO</span> error code, <span =
class=3D"insert">DSOTYPENI</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   occurs when the local resolver follows the procedure =
below and does</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   (11).</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   not find an SRV record indicating support for DNS =
Push Notifications.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0026"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   In <span =
class=3D"delete">case</span> of <span class=3D"delete">either =
failure,</span> the client should proceed to discover the</td><td> =
</td><td class=3D"rblock">   In <span class=3D"insert">some cases, the =
recursive resolver may support DSO and Push</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Notification =
subscriptions, but may not be able to subscribe for Push</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Notifications for a =
particular name.  In this case, the recursive</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   resolver should =
return an informative error code to the client so</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   that the client can =
make an informed decision how to handle the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   error.  If the =
recursive resolver is unable to establish a connection</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   to the zone's DNS =
Push Notification server (perhaps because the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   required SRV record =
does not exist) the recursive resolver should</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   return SERVFAIL.  If =
the recursive resolver is able to establish a</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   connection to the =
zone's DNS Push Notification server and some other</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   error code is then =
received, the recursive resolver should pass on</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   this received error =
code back to the client.  In some cases, where</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   the client has a =
pre-established trust relationship with the owner</span> of</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">the zone (that is =
not handled via the usual mechanisms for VPN</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   software) the client =
may handle these failures by contacting the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   zone's DNS Push =
server directly.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   In any of the cases =
described above where the client fails to</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   establish a DNS Push =
Notification subscription via its configured</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   recursive =
resolver,</span> the client should proceed to discover the</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   appropriate =
server for direct communication.  The client MUST also</td><td> </td><td =
class=3D"right">   appropriate server for direct communication.  The =
client MUST also</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   determine =
which TCP port on the server is listening for connections,</td><td> =
</td><td class=3D"right">   determine which TCP port on the server is =
listening for connections,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   which need not =
be (and often is not) the typical TCP port 53 used for</td><td> </td><td =
class=3D"right">   which need not be (and often is not) the typical TCP =
port 53 used for</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   conventional =
DNS, or TCP port 853 used for DNS over TLS.</td><td> </td><td =
class=3D"right">   conventional DNS, or TCP port 853 used for DNS over =
TLS.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The discovery =
algorithm described here is an iterative algorithm,</td><td> </td><td =
class=3D"right">   The discovery algorithm described here is an =
iterative algorithm,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   which starts =
with the full name of the record to which the client</td><td> </td><td =
class=3D"right">   which starts with the full name of the record to =
which the client</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   wishes to =
subscribe.  Successive SOA queries are then issued,</td><td> </td><td =
class=3D"right">   wishes to subscribe.  Successive SOA queries are then =
issued,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   trimming one =
label each time, until the closest enclosing</td><td> </td><td =
class=3D"right">   trimming one label each time, until the closest =
enclosing</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   authoritative =
server is discovered.  There is also an optimization to</td><td> =
</td><td class=3D"right">   authoritative server is discovered.  There =
is also an optimization to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-6" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-6"><em> =
page 11, line 17<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-6"><em> page 11, line =
35<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   1.  The client =
begins the discovery by sending a DNS query to its</td><td> </td><td =
class=3D"right">   1.  The client begins the discovery by sending a DNS =
query to its</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       local =
resolver, with record type SOA [RFC1035] for the record</td><td> =
</td><td class=3D"right">       local resolver, with record type SOA =
[RFC1035] for the record</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       name to =
which it wishes to subscribe.  As an example, suppose the</td><td> =
</td><td class=3D"right">       name to which it wishes to subscribe.  =
As an example, suppose the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       client =
wishes to subscribe to PTR records with the name</td><td> </td><td =
class=3D"right">       client wishes to subscribe to PTR records with =
the name</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       =
_ipp._tcp.foo.example.com (to discover Internet Printing =
Protocol</td><td> </td><td class=3D"right">       =
_ipp._tcp.foo.example.com (to discover Internet Printing =
Protocol</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       (IPP) =
printers [RFC8010] [RFC8011] being advertised at</td><td> </td><td =
class=3D"right">       (IPP) printers [RFC8010] [RFC8011] being =
advertised at</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       =
"foo.example.com").  The client begins by sending an SOA query</td><td> =
</td><td class=3D"right">       "foo.example.com").  The client begins =
by sending an SOA query</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       for =
_ipp._tcp.foo.example.com to the local recursive resolver.</td><td> =
</td><td class=3D"right">       for _ipp._tcp.foo.example.com to the =
local recursive resolver.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       The goal =
is to determine the server authoritative for the name</td><td> </td><td =
class=3D"right">       The goal is to determine the server authoritative =
for the name</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0027"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
_ipp._tcp.foo.example.com.  The DNS zone containing the name</td><td> =
</td><td class=3D"rblock">       _ipp._tcp.foo.example.com.  The <span =
class=3D"insert">closest enclosing</span> DNS zone</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
_ipp._tcp.foo.example.com could be example.com, or</td><td> </td><td =
class=3D"rblock">       containing the name _ipp._tcp.foo.example.com =
could be</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
foo.example.com, or _tcp.foo.example.com, or even</td><td> </td><td =
class=3D"rblock">       example.com, or foo.example.com, or =
_tcp.foo.example.com, or even</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       =
_ipp._tcp.foo.example.com.  The client does not know in advance</td><td> =
</td><td class=3D"right">       _ipp._tcp.foo.example.com.  The client =
does not know in advance</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       where the =
closest enclosing zone cut occurs, which is why it uses</td><td> =
</td><td class=3D"right">       where the closest enclosing zone cut =
occurs, which is why it uses</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0028"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       the =
procedure described here to discover this information.</td><td> </td><td =
class=3D"rblock">       the <span class=3D"insert">iterative</span> =
procedure described here to discover this</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">       information.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   2.  If the =
requested SOA record exists, it will be returned in the</td><td> =
</td><td class=3D"right">   2.  If the requested SOA record exists, it =
will be returned in the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       Answer =
section with a NOERROR response code, and the client has</td><td> =
</td><td class=3D"right">       Answer section with a NOERROR response =
code, and the client has</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0029"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
succeeded in discovering the information it needs.  (This <span =
class=3D"delete">text</span> is</td><td> </td><td class=3D"rblock">      =
 succeeded in discovering the information it needs.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       not =
placing any new requirements on DNS recursive resolvers.  <span =
class=3D"delete">It</span></td><td> </td><td class=3D"rblock">       =
(This <span class=3D"insert">language</span> is not placing any new =
requirements on DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">       is</span> merely <span =
class=3D"delete">describing</span> the existing operation of the DNS =
protocol</td><td> </td><td class=3D"rblock">       recursive resolvers.  =
<span class=3D"insert">This text</span> merely <span =
class=3D"insert">describes</span> the existing</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
[RFC1034] [RFC1035].)</td><td> </td><td class=3D"rblock">       =
operation of the DNS protocol [RFC1034] [RFC1035].)</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   3.  If the =
requested SOA record does not exist, the client will get</td><td> =
</td><td class=3D"right">   3.  If the requested SOA record does not =
exist, the client will get</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       back a =
NOERROR/NODATA response or an NXDOMAIN/Name Error</td><td> </td><td =
class=3D"right">       back a NOERROR/NODATA response or an =
NXDOMAIN/Name Error</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       response.  =
In either case, the local resolver would normally</td><td> </td><td =
class=3D"right">       response.  In either case, the local resolver =
would normally</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0030"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       include =
the SOA record for the zone of the requested name in the</td><td> =
</td><td class=3D"rblock">       include the SOA record for the <span =
class=3D"insert">closest enclosing</span> zone of the</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
Authority Section.  If the SOA record is received in the</td><td> =
</td><td class=3D"rblock">       requested name in the Authority =
Section.  If the SOA record is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
Authority Section, then the client has succeeded in discovering</td><td> =
</td><td class=3D"rblock">       received in the Authority Section, then =
the client has succeeded</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       the =
information it needs.  (This <span class=3D"delete">text</span> is not =
placing any new</td><td> </td><td class=3D"rblock">       in discovering =
the information it needs.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
requirements on DNS recursive resolvers.  <span class=3D"delete">It =
is</span> merely <span class=3D"delete">describing</span></td><td> =
</td><td class=3D"rblock">       (This <span =
class=3D"insert">language</span> is not placing any new requirements on =
DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       the =
existing operation of the DNS protocol regarding negative</td><td> =
</td><td class=3D"rblock">       recursive resolvers.  <span =
class=3D"insert">This text</span> merely <span =
class=3D"insert">describes</span> the existing</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
responses [RFC2308].)</td><td> </td><td class=3D"rblock">       =
operation of the DNS protocol regarding negative responses</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">       [RFC2308].)</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   4.  If the =
client receives a response containing no SOA record, then</td><td> =
</td><td class=3D"right">   4.  If the client receives a response =
containing no SOA record, then</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       it =
proceeds with the iterative approach.  The client strips the</td><td> =
</td><td class=3D"right">       it proceeds with the iterative approach. =
 The client strips the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       leading =
label from the current query name and if the resulting</td><td> </td><td =
class=3D"right">       leading label from the current query name and if =
the resulting</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0031"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       name has =
at least one label in it, the client sends <span class=3D"delete">a =
new</span> SOA</td><td> </td><td class=3D"rblock">       name has at =
least one label in it, the client sends <span class=3D"insert">an</span> =
SOA <span class=3D"insert">query</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       <span =
class=3D"delete">query,</span> and processing continues at step 2 above, =
repeating the</td><td> </td><td class=3D"rblock"><span class=3D"insert"> =
      for that new name,</span> and processing continues at step 2 =
above,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
iterative search until either an SOA is received, or the query</td><td> =
</td><td class=3D"rblock">       repeating the iterative search until =
either an SOA is received,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       name =
<span class=3D"delete">is empty.</span>  In the case of <span =
class=3D"delete">an empty name,</span> this is a network</td><td> =
</td><td class=3D"rblock">       or the query name <span =
class=3D"insert">consists of a single label, i.e., a Top =
Level</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       =
configuration error which should not happen and the client =
gives</td><td> </td><td class=3D"rblock"><span class=3D"insert">       =
Domain (TLD).</span>  In the case of <span class=3D"insert">a =
single-label TLD,</span> this is a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       up.  The =
client may retry the operation at a later time, of the</td><td> </td><td =
class=3D"rblock">       network configuration error which should not =
happen and the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">       client's =
choosing, such after a change in network attachment.</td><td> </td><td =
class=3D"rblock">       client gives up.  The client may retry the =
operation at a later</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">       time, of the client's choosing, such =
after a change in network</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">       attachment.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   5.  Once the =
SOA is known (either by virtue of being seen in the</td><td> </td><td =
class=3D"right">   5.  Once the SOA is known (either by virtue of being =
seen in the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       Answer =
Section, or in the Authority Section), the client sends a</td><td> =
</td><td class=3D"right">       Answer Section, or in the Authority =
Section), the client sends a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       DNS query =
with type SRV [RFC2782] for the record name</td><td> </td><td =
class=3D"right">       DNS query with type SRV [RFC2782] for the record =
name</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       =
"_dns-push-tls._tcp.&lt;zone&gt;", where &lt;zone&gt; is the owner name =
of</td><td> </td><td class=3D"right">       =
"_dns-push-tls._tcp.&lt;zone&gt;", where &lt;zone&gt; is the owner name =
of</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       the =
discovered SOA record.</td><td> </td><td class=3D"right">       the =
discovered SOA record.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   6.  If the =
zone in question is set up to offer DNS Push Notifications</td><td> =
</td><td class=3D"right">   6.  If the zone in question is set up to =
offer DNS Push Notifications</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       then this =
SRV record MUST exist.  (If this SRV record does not</td><td> </td><td =
class=3D"right">       then this SRV record MUST exist.  (If this SRV =
record does not</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       exist then =
the zone is not correctly configured for DNS Push</td><td> </td><td =
class=3D"right">       exist then the zone is not correctly configured =
for DNS Push</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-7" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-7"><em> =
page 13, line 8<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-7"><em> page 14, line 8<span =
class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the client =
device MUST respect the DNS TTL values on records it</td><td> </td><td =
class=3D"right">   the client device MUST respect the DNS TTL values on =
records it</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   receives, and =
store them in its local cache with this lifetime.  This</td><td> =
</td><td class=3D"right">   receives, and store them in its local cache =
with this lifetime.  This</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   means that, as =
long as the DNS TTL values on the authoritative</td><td> </td><td =
class=3D"right">   means that, as long as the DNS TTL values on the =
authoritative</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   records were =
set to reasonable values, repeated application of this</td><td> </td><td =
class=3D"right">   records were set to reasonable values, repeated =
application of this</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   discovery =
process can be completed nearly instantaneously by the</td><td> </td><td =
class=3D"right">   discovery process can be completed nearly =
instantaneously by the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client, using =
only locally-stored cached data.</td><td> </td><td class=3D"right">   =
client, using only locally-stored cached data.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.2.  DNS Push =
Notification SUBSCRIBE</td><td> </td><td class=3D"right">6.2.  DNS Push =
Notification SUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   After =
connecting, and requesting a longer idle timeout and/or</td><td> =
</td><td class=3D"right">   After connecting, and requesting a longer =
idle timeout and/or</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0032"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   keepalive =
interval if necessary, a DNS Push Notification client then</td><td> =
</td><td class=3D"rblock">   keepalive interval if necessary, a DNS Push =
Notification client</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   indicates =
its desire to receive DNS Push Notifications for a given</td><td> =
</td><td class=3D"rblock">   then indicates its desire to receive DNS =
Push Notifications for</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   domain name =
by sending a SUBSCRIBE request <span class=3D"delete">over the =
established DSO</span></td><td> </td><td class=3D"rblock">   a given =
domain name by sending a SUBSCRIBE request to the server.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   session</span> to the server.  A SUBSCRIBE request =
is encoded in a DSO <span class=3D"delete">[DSO]</span></td><td> =
</td><td class=3D"rblock">   A SUBSCRIBE request is encoded in a DSO =
<span class=3D"insert">message [RFC8490].</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   message.</span>  This specification defines a =
primary DSO TLV for DNS Push</td><td> </td><td class=3D"rblock">   This =
specification defines a primary DSO TLV for DNS Push</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Notification =
SUBSCRIBE Requests (tentatively DSO Type Code 0x40).</td><td> </td><td =
class=3D"right">   Notification SUBSCRIBE Requests (tentatively DSO Type =
Code 0x40).</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The entity =
that initiates a SUBSCRIBE request is by definition the</td><td> =
</td><td class=3D"right">   The entity that initiates a SUBSCRIBE =
request is by definition the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client.  A =
server MUST NOT send a SUBSCRIBE request over an existing</td><td> =
</td><td class=3D"right">   client.  A server MUST NOT send a SUBSCRIBE =
request over an existing</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   session from a =
client.  If a server does send a SUBSCRIBE request</td><td> </td><td =
class=3D"right">   session from a client.  If a server does send a =
SUBSCRIBE request</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   over a DSO =
session initiated by a client, this is a fatal error and</td><td> =
</td><td class=3D"right">   over a DSO session initiated by a client, =
this is a fatal error and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the client =
should immediately abort the connection with a TCP RST (or</td><td> =
</td><td class=3D"right">   the client should immediately abort the =
connection with a TCP RST (or</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   equivalent for =
other protocols).</td><td> </td><td class=3D"right">   equivalent for =
other protocols).</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.2.1.  SUBSCRIBE =
Request</td><td> </td><td class=3D"right">6.2.1.  SUBSCRIBE =
Request</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   A SUBSCRIBE =
request begins with the standard DSO 12-byte header</td><td> </td><td =
class=3D"right">   A SUBSCRIBE request begins with the standard DSO =
12-byte header</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0033"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">[DSO],</span> followed by the SUBSCRIBE TLV.  A =
SUBSCRIBE request message is</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">[RFC8490],</span> followed by the SUBSCRIBE <span =
class=3D"insert">primary</span> TLV.  A SUBSCRIBE</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   illustrated =
in Figure 1.</td><td> </td><td class=3D"rblock">   request message is =
illustrated in Figure 1.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The MESSAGE ID =
field MUST be set to a unique value, that the client</td><td> </td><td =
class=3D"right">   The MESSAGE ID field MUST be set to a unique value, =
that the client</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0034"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   is not using =
for any other active operation on this session.  For the</td><td> =
</td><td class=3D"rblock">   is not using for any other active operation =
on this <span class=3D"insert">DSO</span> session.  For</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   purposes =
here, a MESSAGE ID is in use on this session if the client</td><td> =
</td><td class=3D"rblock">   the purposes here, a MESSAGE ID is in use =
on this session if the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   has used it =
in a request for which it has not yet received a</td><td> </td><td =
class=3D"rblock">   client has used it in a request for which it has not =
yet received a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   response, or =
if the client has used it for a subscription which it</td><td> </td><td =
class=3D"right">   response, or if the client has used it for a =
subscription which it</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   has not yet =
cancelled using UNSUBSCRIBE.  In the SUBSCRIBE response</td><td> =
</td><td class=3D"right">   has not yet cancelled using UNSUBSCRIBE.  In =
the SUBSCRIBE response</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the server =
MUST echo back the MESSAGE ID value unchanged.</td><td> </td><td =
class=3D"right">   the server MUST echo back the MESSAGE ID value =
unchanged.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0035"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The other =
header fields MUST be set as described in the DSO</td><td> </td><td =
class=3D"rblock">   The other header fields MUST be set as described in =
the DSO <span class=3D"insert">spec-</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">specification [DSO].</span>  The DNS <span =
class=3D"delete">Opcode is</span> the <span class=3D"delete">DSO =
Opcode.</span>  The four</td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   ification [RFC8490].</span>  The DNS <span =
class=3D"insert">OPCODE field contains</span> the <span =
class=3D"insert">OPCODE value</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   count fields =
MUST be zero, and the corresponding four sections MUST</td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   for DNS Stateful Operations =
(6).</span>  The four count fields MUST be zero,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   be empty =
(i.e., absent).</td><td> </td><td class=3D"rblock">   and the =
corresponding four sections MUST be empty (i.e., absent).</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0036"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The DSO-TYPE =
is <span class=3D"delete">SUBSCRIBE.</span>  The DSO-LENGTH is the =
length of the <span class=3D"delete">DSO-</span></td><td> </td><td =
class=3D"rblock">   The DSO-TYPE is <span class=3D"insert">SUBSCRIBE =
(tentatively 0x40).</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   DATA</span> that follows, which specifies the name, =
type, and class of the</td><td> </td><td class=3D"rblock">               =
                                                          </td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   record(s) =
being sought.</td><td> </td><td class=3D"rblock">   The DSO-LENGTH is =
the length of the <span class=3D"insert">DSO-DATA</span> that follows, =
which</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   specifies the name, type, and class of the =
record(s) being sought.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">                  =
                   1  1  1  1  1  1</td><td> </td><td class=3D"right">   =
                                  1  1  1  1  1  1</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       0  1  2  3 =
 4  5  6  7  8  9  0  1  2  3  4  5</td><td> </td><td class=3D"right">   =
    0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
      MESSAGE ID                   |   \</td><td> </td><td =
class=3D"right">     |                  MESSAGE ID                   |   =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0037"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     |QR| <span =
class=3D"delete"> Opcode  </span> |         Z          |   RCODE   |    =
|</td><td> </td><td class=3D"rblock">     |QR| <span =
class=3D"insert">OPCODE(6)</span> |         Z          |   RCODE   |    =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 QDCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             QDCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td> </td><td class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 ANCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             ANCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 NSCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             NSCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 ARCOUNT (MUST BE ZERO)            |   /</td><td> </td><td =
class=3D"right">     |             ARCOUNT (MUST BE ZERO)            |   =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0038"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     |    <span =
class=3D"delete">          DSO-TYPE =3D SUBSCRIBE         </span>    =
|</td><td> </td><td class=3D"rblock">     |    <span =
class=3D"insert">DSO-TYPE =3D SUBSCRIBE (tentatively 0x40)</span>    =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td> </td><td =
class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |   =
DSO-LENGTH (number of octets in DSO-DATA)   |</td><td> </td><td =
class=3D"right">     |   DSO-LENGTH (number of octets in DSO-DATA)   =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
                                   |   \</td><td> </td><td =
class=3D"right">     |                                               |   =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     \            =
         NAME                      \    |</td><td> </td><td =
class=3D"right">     \                     NAME                      \   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     \            =
                                   \    |</td><td> </td><td =
class=3D"right">     \                                               \   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
DSO-DATA</td><td> </td><td class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
DSO-DATA</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
         TYPE                      |    |</td><td> </td><td =
class=3D"right">     |                     TYPE                      |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
         CLASS                     |   /</td><td> </td><td =
class=3D"right">     |                     CLASS                     |   =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">                  =
      Figure 1: SUBSCRIBE Request</td><td> </td><td class=3D"right">     =
                   Figure 1: SUBSCRIBE Request</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The DSO-DATA =
for a SUBSCRIBE request MUST contain exactly one NAME,</td><td> </td><td =
class=3D"right">   The DSO-DATA for a SUBSCRIBE request MUST contain =
exactly one NAME,</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0039"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">Type,</span> and CLASS.  Since SUBSCRIBE requests are =
sent over TCP,</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">TYPE,</span> and CLASS.  Since SUBSCRIBE requests are =
sent over TCP,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   multiple =
SUBSCRIBE request messages can be concatenated in a single</td><td> =
</td><td class=3D"rblock">   multiple SUBSCRIBE <span =
class=3D"insert">DSO</span> request messages can be concatenated in =
a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   TCP stream =
and packed efficiently into TCP segments.</td><td> </td><td =
class=3D"rblock">   single TCP stream and packed efficiently into TCP =
segments.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   If accepted, =
the subscription will stay in effect until the client</td><td> </td><td =
class=3D"right">   If accepted, the subscription will stay in effect =
until the client</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   cancels the =
subscription using UNSUBSCRIBE or until the DSO session</td><td> =
</td><td class=3D"right">   cancels the subscription using UNSUBSCRIBE =
or until the DSO session</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   between the =
client and the server is closed.</td><td> </td><td class=3D"right">   =
between the client and the server is closed.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   SUBSCRIBE =
requests on a given session MUST be unique.  A client MUST</td><td> =
</td><td class=3D"right">   SUBSCRIBE requests on a given session MUST =
be unique.  A client MUST</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   NOT send a =
SUBSCRIBE message that duplicates the NAME, TYPE and CLASS</td><td> =
</td><td class=3D"right">   NOT send a SUBSCRIBE message that duplicates =
the NAME, TYPE and CLASS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   of an existing =
active subscription on that DSO session.  For the</td><td> </td><td =
class=3D"right">   of an existing active subscription on that DSO =
session.  For the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   purpose of =
this matching, the established DNS case-insensitivity for</td><td> =
</td><td class=3D"right">   purpose of this matching, the established =
DNS case-insensitivity for</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   US-ASCII =
letters applies (e.g., "example.com" and "Example.com" are</td><td> =
</td><td class=3D"right">   US-ASCII letters applies (e.g., =
"example.com" and "Example.com" are</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-8" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-8"><em> =
page 15, line 15<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-8"><em> page 16, line =
15<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS =
wildcarding is not supported.  That is, a wildcard ("*") in a</td><td> =
</td><td class=3D"right">   DNS wildcarding is not supported.  That is, =
a wildcard ("*") in a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   SUBSCRIBE =
message matches only a literal wildcard character ("*") in</td><td> =
</td><td class=3D"right">   SUBSCRIBE message matches only a literal =
wildcard character ("*") in</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the zone, and =
nothing else.</td><td> </td><td class=3D"right">   the zone, and nothing =
else.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Aliasing is =
not supported.  That is, a CNAME in a SUBSCRIBE message</td><td> =
</td><td class=3D"right">   Aliasing is not supported.  That is, a CNAME =
in a SUBSCRIBE message</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   matches only a =
literal CNAME record in the zone, and nothing else.</td><td> </td><td =
class=3D"right">   matches only a literal CNAME record in the zone, and =
nothing else.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   A client may =
SUBSCRIBE to records that are unknown to the server at</td><td> </td><td =
class=3D"right">   A client may SUBSCRIBE to records that are unknown to =
the server at</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the time of =
the request (providing that the name falls within one of</td><td> =
</td><td class=3D"right">   the time of the request (providing that the =
name falls within one of</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the zone(s) =
the server is responsible for) and this is not an error.</td><td> =
</td><td class=3D"right">   the zone(s) the server is responsible for) =
and this is not an error.</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0040"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The server =
MUST accept these requests and send Push Notifications if</td><td> =
</td><td class=3D"rblock">   The server MUST <span class=3D"insert">NOT =
return NXDOMAIN in this case.  The server MUST</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   and when =
matching records are found in the future.</td><td> </td><td =
class=3D"rblock">   accept these requests and send Push Notifications if =
and when</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   matching records are found in the =
future.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   If neither =
TYPE nor CLASS are ANY (255) then this is a specific</td><td> </td><td =
class=3D"right">   If neither TYPE nor CLASS are ANY (255) then this is =
a specific</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   subscription =
to changes for the given NAME, TYPE and CLASS.  If one</td><td> </td><td =
class=3D"right">   subscription to changes for the given NAME, TYPE and =
CLASS.  If one</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   or both of =
TYPE or CLASS are ANY (255) then this subscription matches</td><td> =
</td><td class=3D"right">   or both of TYPE or CLASS are ANY (255) then =
this subscription matches</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   any type =
and/or any class, as appropriate.</td><td> </td><td class=3D"right">   =
any type and/or any class, as appropriate.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   NOTE: A =
little-known quirk of DNS is that in DNS QUERY requests,</td><td> =
</td><td class=3D"right">   NOTE: A little-known quirk of DNS is that in =
DNS QUERY requests,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   QTYPE and =
QCLASS 255 mean "ANY" not "ALL".  They indicate that the</td><td> =
</td><td class=3D"right">   QTYPE and QCLASS 255 mean "ANY" not "ALL".  =
They indicate that the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server should =
respond with ANY matching records of its choosing, not</td><td> </td><td =
class=3D"right">   server should respond with ANY matching records of =
its choosing, not</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   necessarily =
ALL matching records.  This can lead to some surprising</td><td> =
</td><td class=3D"right">   necessarily ALL matching records.  This can =
lead to some surprising</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-9" class=3D"change"><td></td><th><small>skipping to =
change at</small><a href=3D"https://tools.ietf.org/rfcdiff#part-9"><em> =
page 16, line 10<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-9"><em> page 17, line =
10<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   interpreted to =
mean "ALL", not "ANY".  After accepting a subscription</td><td> </td><td =
class=3D"right">   interpreted to mean "ALL", not "ANY".  After =
accepting a subscription</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   where one or =
both of TYPE or CLASS are 255, the server MUST send Push</td><td> =
</td><td class=3D"right">   where one or both of TYPE or CLASS are 255, =
the server MUST send Push</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Notification =
Updates for ALL record changes that match the</td><td> </td><td =
class=3D"right">   Notification Updates for ALL record changes that =
match the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   subscription, =
not just some of them.</td><td> </td><td class=3D"right">   =
subscription, not just some of them.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.2.2.  SUBSCRIBE =
Response</td><td> </td><td class=3D"right">6.2.2.  SUBSCRIBE =
Response</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Each SUBSCRIBE =
request generates exactly one SUBSCRIBE response from</td><td> </td><td =
class=3D"right">   Each SUBSCRIBE request generates exactly one =
SUBSCRIBE response from</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the =
server.</td><td> </td><td class=3D"right">   the server.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0041"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   A SUBSCRIBE =
response <span class=3D"delete">message</span> begins with the standard =
DSO 12-byte</td><td> </td><td class=3D"rblock">   A SUBSCRIBE response =
begins with the standard DSO 12-byte header</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   header <span =
class=3D"delete">[DSO],</span> possibly followed by one or more optional =
TLVs, such as</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">[RFC8490],</span> possibly followed by one or more =
optional TLVs, such as a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   a Retry =
Delay TLV.</td><td> </td><td class=3D"rblock">   Retry Delay =
TLV.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The MESSAGE ID =
field MUST echo the value given in the ID field of the</td><td> </td><td =
class=3D"right">   The MESSAGE ID field MUST echo the value given in the =
ID field of the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   SUBSCRIBE =
request.  This is how the client knows which request is</td><td> =
</td><td class=3D"right">   SUBSCRIBE request.  This is how the client =
knows which request is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   being =
responded to.</td><td> </td><td class=3D"right">   being responded =
to.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   A SUBSCRIBE =
response message MUST NOT include a SUBSCRIBE TLV.  If a</td><td> =
</td><td class=3D"right">   A SUBSCRIBE response message MUST NOT =
include a SUBSCRIBE TLV.  If a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client =
receives a SUBSCRIBE response message containing a SUBSCRIBE</td><td> =
</td><td class=3D"right">   client receives a SUBSCRIBE response message =
containing a SUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   TLV then the =
response message is processed but the SUBSCRIBE TLV MUST</td><td> =
</td><td class=3D"right">   TLV then the response message is processed =
but the SUBSCRIBE TLV MUST</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   be silently =
ignored.</td><td> </td><td class=3D"right">   be silently =
ignored.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-10" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-10"><em> page 17, line =
6<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-10"><em> page 18, line =
6<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   This document =
specifies only these RCODE values for SUBSCRIBE</td><td> </td><td =
class=3D"right">   This document specifies only these RCODE values for =
SUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Responses.  =
Servers sending SUBSCRIBE Responses SHOULD use one of</td><td> </td><td =
class=3D"right">   Responses.  Servers sending SUBSCRIBE Responses =
SHOULD use one of</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   these values.  =
Note that NXDOMAIN is not a valid RCODE in response to</td><td> </td><td =
class=3D"right">   these values.  Note that NXDOMAIN is not a valid =
RCODE in response to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   a SUBSCRIBE =
Request.  However, future circumstances may create</td><td> </td><td =
class=3D"right">   a SUBSCRIBE Request.  However, future circumstances =
may create</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   situations =
where other RCODE values are appropriate in SUBSCRIBE</td><td> </td><td =
class=3D"right">   situations where other RCODE values are appropriate =
in SUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Responses, so =
clients MUST be prepared to accept SUBSCRIBE Responses</td><td> </td><td =
class=3D"right">   Responses, so clients MUST be prepared to accept =
SUBSCRIBE Responses</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   with any other =
RCODE value.</td><td> </td><td class=3D"right">   with any other RCODE =
value.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   If the server =
sends a nonzero RCODE in the SUBSCRIBE response, that</td><td> </td><td =
class=3D"right">   If the server sends a nonzero RCODE in the SUBSCRIBE =
response, that</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0042"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   =
means</td><td> </td><td class=3D"rblock">   means<span =
class=3D"insert">:</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   a.  the client =
is (at least partially) misconfigured,</td><td> </td><td class=3D"right"> =
  a.  the client is (at least partially) misconfigured,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   b.  the server =
resources are exhausted, or</td><td> </td><td class=3D"right">   b.  the =
server resources are exhausted, or</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   c.  there is =
some other unknown failure on the server.</td><td> </td><td =
class=3D"right">   c.  there is some other unknown failure on the =
server.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   In any case, =
the client shouldn't retry the subscription to this</td><td> </td><td =
class=3D"right">   In any case, the client shouldn't retry the =
subscription to this</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server right =
away.  If multiple SRV records were returned as</td><td> </td><td =
class=3D"right">   server right away.  If multiple SRV records were =
returned as</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0043"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   described in =
<span class=3D"delete">discovery</span> Section 6.1, Paragraph 7, a =
subsequent server</td><td> </td><td class=3D"rblock">   described in =
Section 6.1, Paragraph 7, a subsequent server can be</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   can be tried =
immediately.</td><td> </td><td class=3D"rblock">   tried =
immediately.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   If the client =
has other successful subscriptions to this server,</td><td> </td><td =
class=3D"right">   If the client has other successful subscriptions to =
this server,</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0044"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   these =
subscriptions <span class=3D"delete">can</span> remain even though =
additional subscriptions</td><td> </td><td class=3D"rblock">   these =
subscriptions remain even though additional subscriptions may</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   may be =
refused.  Neither the <span class=3D"delete">client,</span> nor the =
server are required to</td><td> </td><td class=3D"rblock">   be refused. =
 Neither the <span class=3D"insert">client</span> nor the server are =
required to close</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   close the =
connection, although, either end may choose to do so.</td><td> </td><td =
class=3D"rblock">   the connection, although, either end may choose to =
do so.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   If the server =
sends a nonzero RCODE then it SHOULD append a Retry</td><td> </td><td =
class=3D"right">   If the server sends a nonzero RCODE then it SHOULD =
append a Retry</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0045"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Delay TLV =
<span class=3D"delete">[DSO]</span> to the response specifying a delay =
before the client</td><td> </td><td class=3D"rblock">   Delay TLV <span =
class=3D"insert">[RFC8490]</span> to the response specifying a delay =
before the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   attempts =
this operation again.  Recommended values for the delay for</td><td> =
</td><td class=3D"rblock">   client attempts this operation again.  =
Recommended values for the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   different =
RCODE values are given below.  These recommended values</td><td> =
</td><td class=3D"rblock">   delay for different RCODE values are given =
below.  These recommended</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   apply both =
to the default values a server should place in the Retry</td><td> =
</td><td class=3D"rblock">   values apply both to the default values a =
server should place in the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Delay TLV, =
and the default values a client should assume if the</td><td> </td><td =
class=3D"rblock">   Retry Delay TLV, and the default values a client =
should assume if the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server =
provides no Retry Delay TLV.</td><td> </td><td class=3D"right">   server =
provides no Retry Delay TLV.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      For RCODE =3D=
 1 (FORMERR) the delay may be any value selected by the</td><td> =
</td><td class=3D"right">      For RCODE =3D 1 (FORMERR) the delay may =
be any value selected by the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
implementer.  A value of five minutes is RECOMMENDED, to reduce</td><td> =
</td><td class=3D"right">      implementer.  A value of five minutes is =
RECOMMENDED, to reduce</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      the risk of =
high load from defective clients.</td><td> </td><td class=3D"right">     =
 the risk of high load from defective clients.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      For RCODE =3D=
 2 (SERVFAIL) the delay should be chosen according to</td><td> </td><td =
class=3D"right">      For RCODE =3D 2 (SERVFAIL) the delay should be =
chosen according to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      the level =
of server overload and the anticipated duration of that</td><td> =
</td><td class=3D"right">      the level of server overload and the =
anticipated duration of that</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      overload.  =
By default, a value of one minute is RECOMMENDED.  If a</td><td> =
</td><td class=3D"right">      overload.  By default, a value of one =
minute is RECOMMENDED.  If a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      more =
serious server failure occurs, the delay may be longer in</td><td> =
</td><td class=3D"right">      more serious server failure occurs, the =
delay may be longer in</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      accordance =
with the specific problem encountered.</td><td> </td><td class=3D"right"> =
     accordance with the specific problem encountered.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      For RCODE =3D=
 4 (NOTIMP), which occurs on a server that doesn't</td><td> </td><td =
class=3D"right">      For RCODE =3D 4 (NOTIMP), which occurs on a server =
that doesn't</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0046"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      implement =
<span class=3D"delete">DSO [DSO],</span> it is unlikely that the server =
will begin</td><td> </td><td class=3D"rblock">      implement <span =
class=3D"insert">DNS Stateful Operations [RFC8490],</span> it is =
unlikely that</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      =
supporting DSO in the next few minutes, so the retry delay =
SHOULD</td><td> </td><td class=3D"rblock">      the server will begin =
supporting DSO in the next few minutes, so</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      be one =
hour.  Note that in such a case, a server that doesn't</td><td> </td><td =
class=3D"rblock">      the retry delay SHOULD be one hour.  Note that in =
such a case, a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      implement =
DSO is unlikely to place a Retry Delay TLV in its</td><td> </td><td =
class=3D"rblock">      server that doesn't implement DSO is unlikely to =
place a Retry</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      response, =
so this recommended value in particular applies to what</td><td> =
</td><td class=3D"rblock">      Delay TLV in its response, so this =
recommended value in particular</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      a client =
should assume by default.</td><td> </td><td class=3D"rblock">      =
applies to what a client should assume by default.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      For RCODE =3D=
 5 (REFUSED), which occurs on a server that implements</td><td> </td><td =
class=3D"right">      For RCODE =3D 5 (REFUSED), which occurs on a =
server that implements</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      DNS Push =
Notifications, but is currently configured to disallow</td><td> </td><td =
class=3D"right">      DNS Push Notifications, but is currently =
configured to disallow</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      DNS Push =
Notifications, the retry delay may be any value selected</td><td> =
</td><td class=3D"right">      DNS Push Notifications, the retry delay =
may be any value selected</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      by the =
implementer and/or configured by the operator.</td><td> </td><td =
class=3D"right">      by the implementer and/or configured by the =
operator.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0047"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      If the =
server being queried is <span class=3D"delete">not</span> the <span =
class=3D"delete">local resolver,</span> this is a</td><td> </td><td =
class=3D"rblock">      If the server being queried is <span =
class=3D"insert">listed in a</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      =
misconfiguration, since this server is <span class=3D"delete">listed in =
a</span></td><td> </td><td class=3D"rblock"><span class=3D"insert">      =
"_dns-push-tls._tcp.&lt;zone&gt;" SRV record for</span> the <span =
class=3D"insert">zone, then</span> this is</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">      "_dns-push-tls._tcp.&lt;zone&gt;" SRV =
record,</span> but the server itself is</td><td> </td><td =
class=3D"rblock">      a misconfiguration, since this server is <span =
class=3D"insert">being advertised as</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      not =
currently configured to <span class=3D"delete">support DNS Push =
Notifications for</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">      supporting DNS Push Notifications for this =
zone,</span> but the server</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      that =
<span class=3D"delete">zone.</span>  Since it is possible that the =
misconfiguration may be</td><td> </td><td class=3D"rblock">      itself =
is not currently configured to <span class=3D"insert">perform</span> =
that <span class=3D"insert">task.</span>  Since it</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      repaired =
at any time, the retry delay should not be set too high.</td><td> =
</td><td class=3D"rblock">      is possible that the misconfiguration =
may be repaired at any time,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      By =
default, a value of 5 minutes is RECOMMENDED.</td><td> </td><td =
class=3D"rblock">      the retry delay should not be set too high.  By =
default, a value</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">      of 5 minutes is RECOMMENDED.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      For RCODE =3D=
 9 (NOTAUTH), which occurs on a server that implements</td><td> </td><td =
class=3D"right">      For RCODE =3D 9 (NOTAUTH), which occurs on a =
server that implements</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      DNS Push =
Notifications, but is not configured to be authoritative</td><td> =
</td><td class=3D"right">      DNS Push Notifications, but is not =
configured to be authoritative</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      for the =
requested name, the retry delay may be any value selected</td><td> =
</td><td class=3D"right">      for the requested name, the retry delay =
may be any value selected</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      by the =
implementer and/or configured by the operator.</td><td> </td><td =
class=3D"right">      by the implementer and/or configured by the =
operator.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0048"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      <span =
class=3D"delete">This is a misconfiguration, since this</span> server is =
listed in a</td><td> </td><td class=3D"rblock">      <span =
class=3D"insert">If the</span> server <span class=3D"insert">being =
queried</span> is listed in a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      =
"_dns-push-tls._tcp.&lt;zone&gt;" SRV <span =
class=3D"delete">record,</span> but the server itself is</td><td> =
</td><td class=3D"rblock">      "_dns-push-tls._tcp.&lt;zone&gt;" SRV =
<span class=3D"insert">record for the zone, then this is</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      not =
currently configured to <span class=3D"delete">support DNS Push =
Notifications for</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">      a misconfiguration, since this server is being =
advertised as</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      that =
<span class=3D"delete">zone.</span>  Since it is possible that the =
misconfiguration may be</td><td> </td><td class=3D"rblock"><span =
class=3D"insert">      supporting DNS Push Notifications for this =
zone,</span> but the server</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      repaired =
at any time, the retry delay should not be set too high.</td><td> =
</td><td class=3D"rblock">      itself is not currently configured to =
<span class=3D"insert">perform</span> that <span =
class=3D"insert">task.</span>  Since it</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      By =
default, a value of 5 minutes is RECOMMENDED.</td><td> </td><td =
class=3D"rblock">      is possible that the misconfiguration may be =
repaired at any time,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">      the retry delay should not be set too =
high.  By default, a value</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">      of 5 minutes is RECOMMENDED.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0049"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      For RCODE =
=3D 11 (DSOTYPENI), which occurs on a server that doesn't</td><td> =
</td><td class=3D"rblock">      For RCODE =3D 11 (DSOTYPENI), which =
occurs on a server that</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      implement =
DNS Push Notifications, it is unlikely that the server</td><td> </td><td =
class=3D"rblock">      <span class=3D"insert">implements DSO but</span> =
doesn't implement DNS Push Notifications, it is</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      will =
begin supporting DNS Push Notifications in the next few</td><td> =
</td><td class=3D"rblock">      unlikely that the server will begin =
supporting DNS Push</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      minutes, =
so the retry delay SHOULD be one hour.</td><td> </td><td class=3D"rblock">=
      Notifications in the next few minutes, so the retry delay =
SHOULD</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">      be one hour.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      For other =
RCODE values, the retry delay should be set by the</td><td> </td><td =
class=3D"right">      For other RCODE values, the retry delay should be =
set by the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      server as =
appropriate for that error condition.  By default, a</td><td> </td><td =
class=3D"right">      server as appropriate for that error condition.  =
By default, a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      value of 5 =
minutes is RECOMMENDED.</td><td> </td><td class=3D"right">      value of =
5 minutes is RECOMMENDED.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   For RCODE =3D =
9 (NOTAUTH), the time delay applies to requests for other</td><td> =
</td><td class=3D"right">   For RCODE =3D 9 (NOTAUTH), the time delay =
applies to requests for other</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   names falling =
within the same zone.  Requests for names falling</td><td> </td><td =
class=3D"right">   names falling within the same zone.  Requests for =
names falling</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   within other =
zones are not subject to the delay.  For all other</td><td> </td><td =
class=3D"right">   within other zones are not subject to the delay.  For =
all other</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   RCODEs the =
time delay applies to all subsequent requests to this</td><td> </td><td =
class=3D"right">   RCODEs the time delay applies to all subsequent =
requests to this</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
server.</td><td> </td><td class=3D"right">   server.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   After sending =
an error response the server MAY allow the session to</td><td> </td><td =
class=3D"right">   After sending an error response the server MAY allow =
the session to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   remain open, =
or MAY send a DNS Push Notification Retry Delay</td><td> </td><td =
class=3D"right">   remain open, or MAY send a DNS Push Notification =
Retry Delay</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Operation TLV =
instructing the client to close the session, as</td><td> </td><td =
class=3D"right">   Operation TLV instructing the client to close the =
session, as</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0050"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   described in =
the DSO specification [<span class=3D"delete">DSO</span>].  Clients MUST =
correctly</td><td> </td><td class=3D"rblock">   described in the DSO =
specification [<span class=3D"insert">RFC8490</span>].  Clients MUST =
correctly</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   handle both =
cases.</td><td> </td><td class=3D"right">   handle both cases.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.3.  DNS Push =
Notification Updates</td><td> </td><td class=3D"right">6.3.  DNS Push =
Notification Updates</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Once a =
subscription has been successfully established, the server</td><td> =
</td><td class=3D"right">   Once a subscription has been successfully =
established, the server</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   generates PUSH =
messages to send to the client as appropriate.  In the</td><td> </td><td =
class=3D"right">   generates PUSH messages to send to the client as =
appropriate.  In the</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0051"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   case that =
the answer set was non-empty at the moment the subscription</td><td> =
</td><td class=3D"rblock">   case that the answer set was <span =
class=3D"insert">already</span> non-empty at the moment the</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   was =
established, an initial PUSH message will be sent immediately</td><td> =
</td><td class=3D"rblock">   subscription was established, an initial =
PUSH message will be sent</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   following =
the SUBSCRIBE Response.  Subsequent changes to the answer</td><td> =
</td><td class=3D"rblock">   immediately following the SUBSCRIBE =
Response.  Subsequent changes to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   set are then =
communicated to the client in subsequent PUSH messages.</td><td> =
</td><td class=3D"rblock">   the answer set are then communicated to the =
client in subsequent PUSH</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   messages.</td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.3.1.  PUSH =
Message</td><td> </td><td class=3D"right">6.3.1.  PUSH Message</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0052"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   A PUSH =
message begins with the standard DSO 12-byte header <span =
class=3D"delete">[DSO],</span></td><td> </td><td class=3D"rblock">   A =
PUSH <span class=3D"insert">unidirectional</span> message begins with =
the standard DSO 12-byte</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   followed by =
the PUSH TLV.  A PUSH message is illustrated in Figure 2.</td><td> =
</td><td class=3D"rblock">   header <span =
class=3D"insert">[RFC8490],</span> followed by the PUSH <span =
class=3D"insert">primary</span> TLV.  A PUSH message</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   is illustrated in Figure 2.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   In accordance =
with the definition of DSO unidirectional messages, the</td><td> =
</td><td class=3D"right">   In accordance with the definition of DSO =
unidirectional messages, the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   MESSAGE ID =
field MUST be zero.  There is no client response to a PUSH</td><td> =
</td><td class=3D"right">   MESSAGE ID field MUST be zero.  There is no =
client response to a PUSH</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
message.</td><td> </td><td class=3D"right">   message.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0053"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The other =
header fields MUST <span class=3D"delete">also</span> be set as =
described in the DSO</td><td> </td><td class=3D"rblock">   The other =
header fields MUST be set as described in the DSO <span =
class=3D"insert">spec-</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">specification [DSO].</span>  The DNS <span =
class=3D"delete">Opcode is</span> the <span class=3D"delete">DSO =
Opcode.</span>  The four</td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   ification [RFC8490].</span>  The DNS <span =
class=3D"insert">OPCODE field contains</span> the <span =
class=3D"insert">OPCODE value</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   count fields =
MUST be zero, and the corresponding four sections MUST</td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   for DNS Stateful Operations =
(6).</span>  The four count fields MUST be zero,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   be empty =
(i.e., absent).</td><td> </td><td class=3D"rblock">   and the =
corresponding four sections MUST be empty (i.e., absent).</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0054"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The DSO-TYPE =
is PUSH (tentatively 0x41).  <span class=3D"delete">The DSO-LENGTH is =
the</span></td><td> </td><td class=3D"rblock">   The DSO-TYPE is PUSH =
(tentatively 0x41).</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   length of the DSO-DATA that follows, which specifies =
the changes</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   being communicated.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0055"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The <span =
class=3D"delete">DSO-DATA contains one or more Update records.  A PUSH =
Message</span></td><td> </td><td class=3D"rblock">   The <span =
class=3D"insert">DSO-LENGTH</span> is the <span class=3D"insert">length =
of</span> the <span class=3D"insert">DSO-DATA that follows, =
which</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   MUST contain at least one Update record.  If a PUSH =
Message is</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   specifies</span> the <span class=3D"insert">changes =
being communicated.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   received that contains zero Update records, =
this</span> is <span class=3D"delete">a fatal error,</span></td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   and</span> the <span class=3D"delete">receiver MUST =
immediately terminate</span> the <span class=3D"delete">connection with =
a TCP</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RST (or equivalent for other protocols).  The Update =
records are</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   formatted in the customary way for Resource Records =
in DNS messages.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Update records in a PUSH Message are interpreted =
according to</span> the</td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">same rules as for DNS Update [RFC2136] messages, =
namely:</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0056"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      <span =
class=3D"delete">Delete all RRsets from</span> a <span =
class=3D"delete">name:</span></td><td> </td><td class=3D"rblock">   =
<span class=3D"insert">The DSO-DATA contains one or more change =
notifications.  A PUSH</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">      TTL=3D0, CLASS=3DANY, RDLENGTH=3D0, =
TYPE=3DANY.</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   Message MUST contain at least one change =
notification.  If</span> a <span class=3D"insert">PUSH</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Message is received =
that contains no change notifications, this is a</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   fatal error, and the =
receiver MUST immediately terminate the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   connection with a =
TCP RST (or equivalent for other protocols).</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0057"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      <span =
class=3D"delete">Delete</span> an RRset from a <span =
class=3D"delete">name:</span></td><td> </td><td class=3D"rblock">   =
<span class=3D"insert">The change notification records are formatted =
similarly to how DNS</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">      TTL=3D0, CLASS=3DANY, RDLENGTH=3D0;</span></td><td>=
 </td><td class=3D"rblock"><span class=3D"insert">   Resource Records =
are conventionally expressed in DNS messages, as</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      TYPE =
<span class=3D"delete">specifies</span> the RRset being <span =
class=3D"delete">deleted.</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   illustrated in Figure 2, and are interpreted as =
described below.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   The TTL field =
holds</span> an <span class=3D"insert">unsigned 32-bit integer =
[RFC2181].  If the TTL</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   is in the range 0 to =
2,147,483,647 seconds (2^31 - 1, or 0x7FFFFFFF),</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   then a new DNS =
Resource Record with the given name, type, class and</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   RDATA is added.  A =
TTL of 0 means that this record should be retained</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   for as long as the =
subscription is active, and should be discarded</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   immediately the =
moment the subscription is cancelled.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   If the TTL has the =
value 0xFFFFFFFF, then the DNS Resource Record</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   with the given name, =
type, class and RDATA is removed.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   If the TTL has the =
value 0xFFFFFFFE, then this is a 'collective'</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   remove notification. =
 For collective remove notifications RDLEN MUST</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   be zero and =
consequently the RDATA MUST be empty.  If a change</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   notification is =
received where TTL =3D 0xFFFFFFFE and RDLEN is not</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   zero, this is a =
fatal error, and the receiver MUST immediately</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   terminate the =
connection with a TCP RST (or equivalent for other</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   protocols).  There =
are three types of collective remove notification:</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   For collective =
remove notifications, if CLASS is 255 (ANY), then for</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   the given name this =
deletes all records of all types in all classes.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   In this case TYPE =
MUST be set to zero on transmission, and MUST be</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   silently ignored on =
reception.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   For collective =
remove notifications, if CLASS is not 255 (ANY) and</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   TYPE is 255 (ANY) =
then for the given name this deletes all records of</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   all types in the =
specified class.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   For collective =
remove notifications, if CLASS is not 255 (ANY) and</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   TYPE is not 255 =
(ANY) then for the given name this deletes all</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   records of the =
specified type in the specified class.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Summary of change =
notification types:</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      Delete all RRsets =
from a name, in all classes</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      TTL=3D0xFFFFFFFE, =
RDLENGTH=3D0, CLASS=3D255 (ANY)</span></td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      Delete all RRsets =
from a name, in given class:</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      TTL=3D0xFFFFFFFE, =
RDLENGTH=3D0, CLASS specifies class, TYPE=3D255 (ANY)</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      Delete =
specified</span> RRset from a <span class=3D"insert">name, in given =
class:</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      TTL=3D0xFFFFFFFE, =
RDLENGTH=3D0</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      CLASS and</span> =
TYPE <span class=3D"insert">specify</span> the RRset being <span =
class=3D"insert">deleted</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      Delete an =
individual RR from a name:</td><td> </td><td class=3D"right">      =
Delete an individual RR from a name:</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0058"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      <span =
class=3D"delete">TTL=3D0, CLASS=3DNONE;</span></td><td> </td><td =
class=3D"rblock">      <span =
class=3D"insert">TTL=3D0xFFFFFFFF</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      TYPE, =
RDLENGTH and RDATA <span class=3D"delete">specifies</span> the RR being =
deleted.</td><td> </td><td class=3D"rblock"><span class=3D"insert">      =
CLASS,</span> TYPE, RDLENGTH and RDATA <span =
class=3D"insert">specify</span> the RR being deleted.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0059"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      Add to =
<span class=3D"delete">an RRset:</span></td><td> </td><td =
class=3D"rblock">      Add <span class=3D"insert">individual RR</span> =
to <span class=3D"insert">a name</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      =
TTL&gt;=3D0</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      CLASS, TYPE, =
RDLENGTH, RDATA and TTL specify the RR being added.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0060"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      <span =
class=3D"delete">TTL, CLASS, TYPE, RDLENGTH</span> and RDATA <span =
class=3D"delete">specifies</span> the RR <span class=3D"delete">being =
added.</span></td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">Note that it is valid for the RDATA of an added or =
removed DNS</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Resource Record to =
be empty (zero length).  For example, an Address</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Prefix List Resource =
Record [RFC3123] may have empty RDATA.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Therefore, a change =
notification with RDLEN=3D0 does not automatically</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   indicate a remove =
notification.  If RDLEN=3D0 and TTL is the in the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   range 0 - =
0x7FFFFFFF, this change notification signals the addition</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   of a record with the =
given name, type, class, and empty RDATA.  If</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   RDLEN=3D0</span> and =
<span class=3D"insert">TTL =3D 0xFFFFFFFF, this change notification =
signals the</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   removal specifically =
of that single record with the given name, type,</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   class, and empty =
RDATA.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   If the TTL is any =
value other than 0xFFFFFFFF, 0xFFFFFFFE, or a value</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   in the range 0 - =
0x7FFFFFFF, then the receiver SHOULD silently ignore</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   this particular =
change notification record.  The connection is not</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   terminated and other =
valid change notification records within this</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   PUSH message are =
processed as usual.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   For efficiency, when =
generating a PUSH message, a server SHOULD</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   include as many =
change notifications as it has immediately available</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   to send, rather than =
sending each change notification as a separate</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   DSO message.  Once =
it has exhausted the list of change notifications</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   immediately =
available to send, a server SHOULD then send the PUSH</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   message immediately, =
rather than waiting to see if additional change</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   notifications become =
available.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   For efficiency, when =
generating a PUSH message, a server SHOULD use</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   standard DNS name =
compression, with offsets relative to the beginning</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   of the DNS message =
[RFC1035].  When multiple change notifications in</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   a single PUSH =
message have the same owner name, this name compression</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   can yield =
significant savings.  Name compression should be =
performed</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   as specified in =
Section 18.14 of the Multicast DNS specification</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   [RFC6762], namely, =
owner names should always be compressed, and names</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   appearing =
within</span> RDATA <span class=3D"insert">should be compressed for =
only</span> the RR <span class=3D"insert">types</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   listed =
below:</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">      NS, CNAME, PTR, =
DNAME, SOA, MX, AFSDB, RT, KX, RP, PX, SRV, NSEC</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Servers may generate =
PUSH messages up to a maximum DNS message length</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   of 16,382 bytes, =
counting from the start of the DSO 12-byte header.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Including the =
two-byte length prefix that is used to frame DNS over a</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   byte stream like =
TLS, this makes a total of 16,384 bytes.  Servers</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   MUST NOT generate =
PUSH messages larger than this.  Where the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   immediately =
available change notifications are sufficient to exceed a</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   DNS message length =
of 16,382 bytes, the change notifications MUST be</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   communicated in =
separate PUSH messages of up to 16,382 bytes each.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   DNS name compression =
becomes less effective for messages larger than</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   16,384 bytes, so =
little efficiency benefit is gained by sending</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   messages larger than =
this.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   If a client receives =
a PUSH message with a DNS message length larger</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   than 16,382 bytes, =
the this is a fatal error, and the receiver MUST</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   immediately =
terminate the connection with a TCP RST (or equivalent</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   for other =
protocols).</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">                  =
                   1  1  1  1  1  1</td><td> </td><td class=3D"right">   =
                                  1  1  1  1  1  1</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       0  1  2  3 =
 4  5  6  7  8  9  0  1  2  3  4  5</td><td> </td><td class=3D"right">   =
    0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |           =
MESSAGE ID (MUST BE ZERO)           |   \</td><td> </td><td =
class=3D"right">     |           MESSAGE ID (MUST BE ZERO)           |   =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0061"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     |QR| <span =
class=3D"delete"> Opcode  </span> |         Z          |   RCODE   |    =
|</td><td> </td><td class=3D"rblock">     |QR| <span =
class=3D"insert">OPCODE(6)</span> |         Z          |   RCODE   |    =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 QDCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             QDCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td> </td><td class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 ANCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             ANCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 NSCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             NSCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 ARCOUNT (MUST BE ZERO)            |   /</td><td> </td><td =
class=3D"right">     |             ARCOUNT (MUST BE ZERO)            |   =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0062"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     |      =
<span class=3D"delete">          DSO-TYPE =3D PUSH         </span>       =
|</td><td> </td><td class=3D"rblock">     |      <span =
class=3D"insert">DSO-TYPE =3D PUSH (tentatively 0x41)</span>       =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td> </td><td =
class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |   =
DSO-LENGTH (number of octets in DSO-DATA)   |</td><td> </td><td =
class=3D"right">     |   DSO-LENGTH (number of octets in DSO-DATA)   =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     \            =
         NAME                      \   \</td><td> </td><td =
class=3D"right">     \                     NAME                      \   =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
         TYPE                      |    |</td><td> </td><td =
class=3D"right">     |                     TYPE                      |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
         CLASS                     |    |</td><td> </td><td =
class=3D"right">     |                     CLASS                     |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
          TTL                      |    |</td><td> </td><td =
class=3D"right">     |                      TTL                      |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0063"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     |     =
<span class=3D"delete">              (32 bits)             </span>      =
|     &gt; DSO-DATA</td><td> </td><td class=3D"rblock">     |     <span =
class=3D"insert">(32-bit unsigned big-endian integer)</span>      |     =
&gt; DSO-DATA</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
         RDLEN                     |    |</td><td> </td><td =
class=3D"right">     |                     RDLEN                     |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0064"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     \          =
 <span class=3D"delete">          RDATA           </span>          \    =
|</td><td> </td><td class=3D"rblock">     \           <span =
class=3D"insert">RDATA (sized as necessary)</span>          \    =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     :     NAME, =
TYPE, CLASS, TTL, RDLEN, RDATA      :    |</td><td> </td><td =
class=3D"right">     :     NAME, TYPE, CLASS, TTL, RDLEN, RDATA      :   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     :            =
 Repeated As Necessary             :   /</td><td> </td><td =
class=3D"right">     :             Repeated As Necessary             :   =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">                  =
        Figure 2: PUSH Message</td><td> </td><td class=3D"right">        =
                  Figure 2: PUSH Message</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   When =
processing the records received in a PUSH Message, the =
receiving</td><td> </td><td class=3D"right">   When processing the =
records received in a PUSH Message, the receiving</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client MUST =
validate that the records being added or deleted</td><td> </td><td =
class=3D"right">   client MUST validate that the records being added or =
deleted</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   correspond =
with at least one currently active subscription on that</td><td> =
</td><td class=3D"right">   correspond with at least one currently =
active subscription on that</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   session.  =
Specifically, the record name MUST match the name given in</td><td> =
</td><td class=3D"right">   session.  Specifically, the record name MUST =
match the name given in</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0065"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">the</span> SUBSCRIBE request, subject to the usual =
established DNS case-</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">a</span> SUBSCRIBE request, subject to the usual =
established DNS case-</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   insensitivity =
for US-ASCII letters.  If the TYPE in the SUBSCRIBE</td><td> </td><td =
class=3D"right">   insensitivity for US-ASCII letters.  If the TYPE in =
the SUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   request was =
not ANY (255) then the TYPE of the record must match the</td><td> =
</td><td class=3D"right">   request was not ANY (255) then the TYPE of =
the record must match the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   TYPE given in =
the SUBSCRIBE request.  If the CLASS in the SUBSCRIBE</td><td> </td><td =
class=3D"right">   TYPE given in the SUBSCRIBE request.  If the CLASS in =
the SUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   request was =
not ANY (255) then the CLASS of the record must match the</td><td> =
</td><td class=3D"right">   request was not ANY (255) then the CLASS of =
the record must match the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   CLASS given in =
the SUBSCRIBE request.  If a matching active</td><td> </td><td =
class=3D"right">   CLASS given in the SUBSCRIBE request.  If a matching =
active</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   subscription =
on that session is not found, then that individual</td><td> </td><td =
class=3D"right">   subscription on that session is not found, then that =
individual</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   record =
addition/deletion is silently ignored.  Processing of other</td><td> =
</td><td class=3D"right">   record addition/deletion is silently =
ignored.  Processing of other</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   additions and =
deletions in this message is not affected.  The DSO</td><td> </td><td =
class=3D"right">   additions and deletions in this message is not =
affected.  The DSO</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   session is not =
closed.  This is to allow for the unavoidable race</td><td> </td><td =
class=3D"right">   session is not closed.  This is to allow for the =
unavoidable race</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   condition =
where a client sends an outbound UNSUBSCRIBE while inbound</td><td> =
</td><td class=3D"right">   condition where a client sends an outbound =
UNSUBSCRIBE while inbound</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   PUSH messages =
for that subscription from the server are still in</td><td> </td><td =
class=3D"right">   PUSH messages for that subscription from the server =
are still in</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
flight.</td><td> </td><td class=3D"right">   flight.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   In the case =
where a single change affects more than one active</td><td> </td><td =
class=3D"right">   In the case where a single change affects more than =
one active</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   subscription, =
only one PUSH message is sent.  For example, a PUSH</td><td> </td><td =
class=3D"right">   subscription, only one PUSH message is sent.  For =
example, a PUSH</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   message adding =
a given record may match both a SUBSCRIBE request with</td><td> </td><td =
class=3D"right">   message adding a given record may match both a =
SUBSCRIBE request with</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0066"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the same =
TYPE and a different SUBSCRIBE request with <span =
class=3D"delete">TYPE=3DANY.</span>  It is</td><td> </td><td =
class=3D"rblock">   the same TYPE and a different SUBSCRIBE request with =
<span class=3D"insert">TYPE=3DANY (255).</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   not the case =
that two PUSH messages are sent because the new record</td><td> </td><td =
class=3D"rblock">   It is not the case that two PUSH messages are sent =
because the new</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   matches two =
active subscriptions.</td><td> </td><td class=3D"rblock">   record =
matches two active subscriptions.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The server =
SHOULD encode change notifications in the most efficient</td><td> =
</td><td class=3D"right">   The server SHOULD encode change =
notifications in the most efficient</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   manner =
possible.  For example, when three AAAA records are deleted</td><td> =
</td><td class=3D"right">   manner possible.  For example, when three =
AAAA records are deleted</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   from a given =
name, and no other AAAA records exist for that name, the</td><td> =
</td><td class=3D"right">   from a given name, and no other AAAA records =
exist for that name, the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server SHOULD =
send a "delete an RRset from a name" PUSH message, not</td><td> </td><td =
class=3D"right">   server SHOULD send a "delete an RRset from a name" =
PUSH message, not</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   three separate =
"delete an individual RR from a name" PUSH messages.</td><td> </td><td =
class=3D"right">   three separate "delete an individual RR from a name" =
PUSH messages.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Similarly, =
when both an SRV and a TXT record are deleted from a given</td><td> =
</td><td class=3D"right">   Similarly, when both an SRV and a TXT record =
are deleted from a given</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   name, and no =
other records of any kind exist for that name, the</td><td> </td><td =
class=3D"right">   name, and no other records of any kind exist for that =
name, the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   server SHOULD =
send a "delete all RRsets from a name" PUSH message,</td><td> </td><td =
class=3D"right">   server SHOULD send a "delete all RRsets from a name" =
PUSH message,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   not two =
separate "delete an RRset from a name" PUSH messages.</td><td> </td><td =
class=3D"right">   not two separate "delete an RRset from a name" PUSH =
messages.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-11" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-11"><em> page 22, line =
10<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-11"><em> page 25, line =
10<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   record is =
still there.  Once a subscription is cancelled</td><td> </td><td =
class=3D"right">   record is still there.  Once a subscription is =
cancelled</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   (individually, =
or as a result of the DSO session being closed) record</td><td> </td><td =
class=3D"right">   (individually, or as a result of the DSO session =
being closed) record</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   aging for =
records covered by the subscription resumes and records are</td><td> =
</td><td class=3D"right">   aging for records covered by the =
subscription resumes and records are</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   removed from =
the local cache when their TTL reaches zero.</td><td> </td><td =
class=3D"right">   removed from the local cache when their TTL reaches =
zero.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.4.  DNS Push =
Notification UNSUBSCRIBE</td><td> </td><td class=3D"right">6.4.  DNS =
Push Notification UNSUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   To cancel an =
individual subscription without closing the entire DSO</td><td> </td><td =
class=3D"right">   To cancel an individual subscription without closing =
the entire DSO</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   session, the =
client sends an UNSUBSCRIBE message over the established</td><td> =
</td><td class=3D"right">   session, the client sends an UNSUBSCRIBE =
message over the established</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DSO session to =
the server.  The UNSUBSCRIBE message is encoded as a</td><td> </td><td =
class=3D"right">   DSO session to the server.  The UNSUBSCRIBE message =
is encoded as a</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0067"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   DSO <span =
class=3D"delete">[DSO] unidirectional message</span>.  This =
specification defines a</td><td> </td><td class=3D"rblock">   DSO <span =
class=3D"insert">unidirectional message [RFC8490]</span>.  This =
specification defines a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   primary =
unidirectional DSO TLV for DNS Push Notification UNSUBSCRIBE</td><td> =
</td><td class=3D"right">   primary unidirectional DSO TLV for DNS Push =
Notification UNSUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0068"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">Request</span>s (tentatively DSO Type Code =
0x42).</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">Message</span>s (tentatively DSO Type Code =
0x42).</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0069"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   A server =
MUST NOT initiate an UNSUBSCRIBE <span class=3D"delete">request.</span>  =
If a server does</td><td> </td><td class=3D"rblock">   A server MUST NOT =
initiate an UNSUBSCRIBE <span class=3D"insert">message.</span>  If a =
server does</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   send an =
UNSUBSCRIBE <span class=3D"delete">request</span> over a DSO session =
initiated by a client,</td><td> </td><td class=3D"rblock">   send an =
UNSUBSCRIBE <span class=3D"insert">message</span> over a DSO session =
initiated by a client,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   this is a =
fatal error and the client should immediately abort the</td><td> =
</td><td class=3D"right">   this is a fatal error and the client should =
immediately abort the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   connection =
with a TCP RST (or equivalent for other protocols).</td><td> </td><td =
class=3D"right">   connection with a TCP RST (or equivalent for other =
protocols).</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0070"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">6.4.1.  =
UNSUBSCRIBE <span class=3D"delete">Request</span></td><td> </td><td =
class=3D"rblock">6.4.1.  UNSUBSCRIBE <span =
class=3D"insert">Message</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0071"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   An =
UNSUBSCRIBE <span class=3D"delete">request</span> begins with the =
standard DSO 12-byte header</td><td> </td><td class=3D"rblock">   An =
UNSUBSCRIBE <span class=3D"insert">unidirectional message</span> begins =
with the standard DSO</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">[DSO],</span> followed by the UNSUBSCRIBE TLV.  An =
UNSUBSCRIBE <span class=3D"delete">request</span></td><td> </td><td =
class=3D"rblock">   12-byte header <span =
class=3D"insert">[RFC8490],</span> followed by the UNSUBSCRIBE <span =
class=3D"insert">primary</span> TLV.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   message is =
illustrated in Figure 3.</td><td> </td><td class=3D"rblock">   An =
UNSUBSCRIBE message is illustrated in Figure 3.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0072"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">The</span> MESSAGE ID field MUST be zero.  There is no =
server response to <span class=3D"delete">a</span></td><td> </td><td =
class=3D"rblock">   <span class=3D"insert">In accordance with the =
definition of DSO unidirectional messages, the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   MESSAGE ID field MUST be zero.  There is no =
server response to <span class=3D"insert">an</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   UNSUBSCRIBE =
message.</td><td> </td><td class=3D"right">   UNSUBSCRIBE =
message.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0073"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The other =
header fields MUST be set as described in the DSO</td><td> </td><td =
class=3D"rblock">   The other header fields MUST be set as described in =
the DSO <span class=3D"insert">spec-</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">specification [DSO].</span>  The DNS <span =
class=3D"delete">Opcode is</span> the <span class=3D"delete">DSO =
Opcode.</span>  The four</td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   ification [RFC8490].</span>  The DNS <span =
class=3D"insert">OPCODE field contains</span> the <span =
class=3D"insert">OPCODE value</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   count fields =
MUST be zero, and the corresponding four sections MUST</td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   for DNS Stateful Operations =
(6).</span>  The four count fields MUST be zero,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   be empty =
(i.e., absent).</td><td> </td><td class=3D"rblock">   and the =
corresponding four sections MUST be empty (i.e., absent).</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0074"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">In the UNSUBSCRIBE TLV the DSO-TYPE is =
UNSUBSCRIBE.</span>  The <span class=3D"delete">DSO-LENGTH</span></td><td>=
 </td><td class=3D"rblock">   The <span class=3D"insert">DSO-TYPE</span> =
is <span class=3D"insert">UNSUBSCRIBE (tentatively 0x42).</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   is <span =
class=3D"delete">2 octets.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0075"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The <span =
class=3D"delete">DSO-DATA contains the MESSAGE ID</span> field <span =
class=3D"delete">of</span> the value <span class=3D"delete">given =
in</span> the</td><td> </td><td class=3D"rblock">   The <span =
class=3D"insert">DSO-LENGTH</span> field <span =
class=3D"insert">contains</span> the value <span =
class=3D"insert">2,</span> the <span class=3D"insert">length</span> of =
the <span class=3D"insert">2-octet</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">ID field of an active SUBSCRIBE request.  This is how =
the server</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   MESSAGE ID contained in</span> the <span =
class=3D"insert">DSO-DATA.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   knows which SUBSCRIBE request is being cancelled.  =
After receipt</span> of</td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the <span =
class=3D"delete">UNSUBSCRIBE request,</span> the <span =
class=3D"delete">SUBSCRIBE request is no longer active.</span></td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0076"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   It is =
allowable for the client to issue an UNSUBSCRIBE <span =
class=3D"delete">request</span> for a</td><td> </td><td class=3D"rblock"> =
  <span class=3D"insert">The DSO-DATA contains the value given in the =
MESSAGE ID field of an</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   active SUBSCRIBE =
request.  This is how the server knows which</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   SUBSCRIBE request is =
being cancelled.  After receipt of the</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   UNSUBSCRIBE message, =
the SUBSCRIBE request is no longer active.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">                                               =
                          </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   It is allowable for the client to issue an =
UNSUBSCRIBE <span class=3D"insert">message</span> for a</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   previous =
SUBSCRIBE request for which the client has not yet received</td><td> =
</td><td class=3D"right">   previous SUBSCRIBE request for which the =
client has not yet received</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   a SUBSCRIBE =
response.  This is to allow for the case where a client</td><td> =
</td><td class=3D"right">   a SUBSCRIBE response.  This is to allow for =
the case where a client</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   starts and =
stops a subscription in less than the round-trip time to</td><td> =
</td><td class=3D"right">   starts and stops a subscription in less than =
the round-trip time to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the server.  =
The client is NOT required to wait for the SUBSCRIBE</td><td> </td><td =
class=3D"right">   the server.  The client is NOT required to wait for =
the SUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0077"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   response =
before issuing the UNSUBSCRIBE <span =
class=3D"delete">request.</span></td><td> </td><td class=3D"rblock">   =
response before issuing the UNSUBSCRIBE <span =
class=3D"insert">message.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Consequently, it is =
possible for a server to receive an UNSUBSCRIBE</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   message that does =
not match any currently active subscription.  This</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   can occur when a =
client sends a SUBSCRIBE request, which subsequently</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   fails and returns an =
error code, but the client sent an UNSUBSCRIBE</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   message before it =
became aware that the SUBSCRIBE request had failed.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Because of this, =
servers MUST silently ignore UNSUBSCRIBE messages</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   that do not match =
any currently active subscription.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">                  =
                    1  1  1  1  1  1</td><td> </td><td class=3D"right">  =
                                    1  1  1  1  1  1</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">        0  1  2  =
3  4  5  6  7  8  9  0  1  2  3  4  5</td><td> </td><td class=3D"right"> =
       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      |           =
MESSAGE ID (MUST BE ZERO)           |   \</td><td> </td><td =
class=3D"right">      |           MESSAGE ID (MUST BE ZERO)           |  =
 \</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
  |</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0078"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      |QR| =
<span class=3D"delete"> Opcode  </span> |         Z          |   RCODE   =
|    |</td><td> </td><td class=3D"rblock">      |QR| <span =
class=3D"insert">OPCODE(6)</span> |         Z          |   RCODE   |    =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      |           =
  QDCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">      |             QDCOUNT (MUST BE ZERO)            |  =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td> </td><td class=3D"right">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      |           =
  ANCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">      |             ANCOUNT (MUST BE ZERO)            |  =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      |           =
  NSCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">      |             NSCOUNT (MUST BE ZERO)            |  =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      |           =
  ARCOUNT (MUST BE ZERO)            |   /</td><td> </td><td =
class=3D"right">      |             ARCOUNT (MUST BE ZERO)            |  =
 /</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0079"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      |   <span =
class=3D"delete">          DSO-TYPE =3D UNSUBSCRIBE         </span>   =
|</td><td> </td><td class=3D"rblock">      |   <span =
class=3D"insert">DSO-TYPE =3D UNSUBSCRIBE (tentatively 0x42)</span>   =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td> </td><td =
class=3D"right">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td =
class=3D"lineno"></td></tr>
      <tr id=3D"diff0080"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">      |         =
     <span class=3D"delete">DSO-LENGTH (2 octets)</span>            =
|</td><td> </td><td class=3D"rblock">      |              <span =
class=3D"insert">  DSO-LENGTH (2)     </span>            |</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      |           =
   SUBSCRIBE MESSAGE ID             |   &gt; DSO-DATA</td><td> </td><td =
class=3D"right">      |              SUBSCRIBE MESSAGE ID             |  =
 &gt; DSO-DATA</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">      =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0081"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
       Figure 3: UNSUBSCRIBE <span =
class=3D"delete">Request</span></td><td> </td><td class=3D"rblock">      =
                 Figure 3: UNSUBSCRIBE <span =
class=3D"insert">Message</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.5.  DNS Push =
Notification RECONFIRM</td><td> </td><td class=3D"right">6.5.  DNS Push =
Notification RECONFIRM</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Sometimes, =
particularly when used with a Discovery Proxy [DisProx], a</td><td> =
</td><td class=3D"right">   Sometimes, particularly when used with a =
Discovery Proxy [DisProx], a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS Zone may =
contain stale data.  When a client encounters data that</td><td> =
</td><td class=3D"right">   DNS Zone may contain stale data.  When a =
client encounters data that</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0082"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   it believe =
may be stale (e.g., an SRV record referencing a target</td><td> </td><td =
class=3D"rblock">   it believe<span class=3D"insert">s</span> may be =
stale (e.g., an SRV record referencing a target</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   host+port that =
is not responding to connection requests) the client</td><td> </td><td =
class=3D"right">   host+port that is not responding to connection =
requests) the client</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0083"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   can send a =
RECONFIRM <span class=3D"delete">request</span> to ask the server to =
re-verify that the</td><td> </td><td class=3D"rblock">   can send a =
RECONFIRM <span class=3D"insert">message</span> to ask the server to =
re-verify that the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   data is still =
valid.  For a Discovery Proxy, this causes it to issue</td><td> </td><td =
class=3D"right">   data is still valid.  For a Discovery Proxy, this =
causes it to issue</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0084"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   new =
Multicast DNS <span class=3D"delete">requests</span> to ascertain =
whether the target device is</td><td> </td><td class=3D"rblock">   new =
Multicast DNS <span class=3D"insert">queries</span> to ascertain whether =
the target device is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   still =
present.  <span class=3D"delete">For other types of DNS server,</span> =
the <span class=3D"delete">RECONFIRM</span></td><td> </td><td =
class=3D"rblock">   still present.  <span class=3D"insert">How</span> =
the <span class=3D"insert">Discovery Proxy causes these new =
Multicast</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   operation is currently undefined, and SHOULD result =
in a NOERROR</span></td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   DNS queries</span> to be <span class=3D"insert">issued=
 depends on the details</span> of <span class=3D"insert">the =
underlying</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   response, but otherwise need not cause any =
action</span> to <span class=3D"delete">occur.  Frequent</span></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Multicast DNS =
implementation being used.  For example,</span> a <span =
class=3D"insert">Discovery</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RECONFIRM operations may</span> be <span =
class=3D"delete">a sign of network unreliability, or =
some</span></td><td> </td><td class=3D"rblock"><span class=3D"insert">   =
Proxy built on Apple's dns_sd.h API responds</span> to <span =
class=3D"insert">a DNS Push</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   kind</span> of <span =
class=3D"delete">misconfiguration, so RECONFIRM operations MAY be logged =
or</span></td><td> </td><td class=3D"rblock"><span class=3D"insert">   =
Notification RECONFIRM message by calling the underlying =
API's</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   otherwise communicated to</span> a <span =
class=3D"delete">human administrator</span> to <span =
class=3D"delete">assist in</span></td><td> </td><td class=3D"rblock"><span=
 class=3D"insert">   DNSServiceReconfirmRecord() routine.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   detecting, and remedying, such network =
problems.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0085"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   If, after =
receiving a valid RECONFIRM <span class=3D"delete">request,</span> the =
server determines</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">For other types of DNS server, the RECONFIRM operation =
is currently</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   undefined, and =
SHOULD result in a NOERROR response, but otherwise</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   need not cause any =
action to occur.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   Frequent use of =
RECONFIRM operations may be a sign of network</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   unreliability, or =
some kind of misconfiguration, so RECONFIRM</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   operations MAY be =
logged or otherwise communicated to a human</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   administrator to =
assist in detecting, and remedying, such network</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   =
problems.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">                                               =
                          </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   If, after receiving a valid RECONFIRM <span =
class=3D"insert">message,</span> the server determines</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   that the =
disputed records are in fact no longer valid, then</td><td> </td><td =
class=3D"right">   that the disputed records are in fact no longer =
valid, then</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   subsequent DNS =
PUSH Messages will be generated to inform interested</td><td> </td><td =
class=3D"right">   subsequent DNS PUSH Messages will be generated to =
inform interested</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   clients.  =
Thus, one client discovering that a previously-advertised</td><td> =
</td><td class=3D"right">   clients.  Thus, one client discovering that =
a previously-advertised</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   device (like a =
network printer) is no longer present has the side</td><td> </td><td =
class=3D"right">   device (like a network printer) is no longer present =
has the side</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   effect of =
informing all other interested clients that the device in</td><td> =
</td><td class=3D"right">   effect of informing all other interested =
clients that the device in</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   question is =
now gone.</td><td> </td><td class=3D"right">   question is now =
gone.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0086"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">6.5.1.  =
RECONFIRM <span class=3D"delete">Request</span></td><td> </td><td =
class=3D"rblock">6.5.1.  RECONFIRM <span =
class=3D"insert">Message</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0087"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   A RECONFIRM =
<span class=3D"delete">request</span> begins with the standard DSO =
12-byte header</td><td> </td><td class=3D"rblock">   A RECONFIRM <span =
class=3D"insert">unidirectional message</span> begins with the standard =
DSO</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">[DSO],</span> followed by the <span =
class=3D"delete">primary DSO</span> RECONFIRM TLV.  A RECONFIRM</td><td> =
</td><td class=3D"rblock">   12-byte header <span =
class=3D"insert">[RFC8490],</span> followed by the RECONFIRM <span =
class=3D"insert">primary</span> TLV.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">request</span> message is illustrated in Figure =
4.</td><td> </td><td class=3D"rblock">   A RECONFIRM message is =
illustrated in Figure 4.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0088"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">The MESSAGE ID field MUST be set to a unique value, =
that</span> the <span class=3D"delete">client</span></td><td> </td><td =
class=3D"rblock">   <span class=3D"insert">In accordance with</span> the =
<span class=3D"insert">definition of</span> DSO <span =
class=3D"insert">unidirectional messages,</span> the</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   is not using for any other active operation on =
this</span> DSO <span class=3D"delete">session.  For</span></td><td> =
</td><td class=3D"rblock">   MESSAGE ID <span class=3D"insert">field =
MUST be zero.  There</span> is <span class=3D"insert">no server response =
to</span> a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   the <span =
class=3D"delete">purposes here, a</span> MESSAGE ID is <span =
class=3D"delete">in use on this session if the</span></td><td> </td><td =
class=3D"rblock">   RECONFIRM <span =
class=3D"insert">message.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   client has used it in a request for which it has not =
yet received a</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   response, or if the client has used it for</span> a =
<span class=3D"delete">subscription which it</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   has not yet cancelled using UNSUBSCRIBE.  In =
the</span> RECONFIRM <span class=3D"delete">response</span></td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   the server MUST echo back the MESSAGE ID value =
unchanged.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0089"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The other =
header fields MUST be set as described in the DSO</td><td> </td><td =
class=3D"rblock">   The other header fields MUST be set as described in =
the DSO <span class=3D"insert">spec-</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">specification [DSO].</span>  The DNS <span =
class=3D"delete">Opcode is</span> the <span class=3D"delete">DSO =
Opcode.</span>  The four</td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   ification [RFC8490].</span>  The DNS <span =
class=3D"insert">OPCODE field contains</span> the <span =
class=3D"insert">OPCODE value</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   count fields =
MUST be zero, and the corresponding four sections MUST</td><td> </td><td =
class=3D"rblock"><span class=3D"insert">   for DNS Stateful Operations =
(6).</span>  The four count fields MUST be zero,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   be empty =
(i.e., absent).</td><td> </td><td class=3D"rblock">   and the =
corresponding four sections MUST be empty (i.e., absent).</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0090"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The DSO-TYPE =
is RECONFIRM (tentatively 0x43).  The DSO-LENGTH is the</td><td> =
</td><td class=3D"rblock">   The DSO-TYPE is RECONFIRM (tentatively =
0x43).</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   length of =
the data that follows, which specifies the name, type,</td><td> </td><td =
class=3D"rblock">                                                        =
                 </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   class, and =
content of the record being disputed.</td><td> </td><td class=3D"rblock"> =
  The DSO-LENGTH is the length of the data that follows, which</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   specifies the name, type, class, and =
content of the record being</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   disputed.</td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">                  =
                   1  1  1  1  1  1</td><td> </td><td class=3D"right">   =
                                  1  1  1  1  1  1</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">       0  1  2  3 =
 4  5  6  7  8  9  0  1  2  3  4  5</td><td> </td><td class=3D"right">   =
    0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
      MESSAGE ID                   |   \</td><td> </td><td =
class=3D"right">     |                  MESSAGE ID                   |   =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0091"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     |QR| <span =
class=3D"delete"> Opcode  </span> |         Z          |   RCODE   |    =
|</td><td> </td><td class=3D"rblock">     |QR| <span =
class=3D"insert">OPCODE(6)</span> |         Z          |   RCODE   |    =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 QDCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             QDCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td> </td><td class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
HEADER</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 ANCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             ANCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 NSCOUNT (MUST BE ZERO)            |    |</td><td> </td><td =
class=3D"right">     |             NSCOUNT (MUST BE ZERO)            |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
 ARCOUNT (MUST BE ZERO)            |   /</td><td> </td><td =
class=3D"right">     |             ARCOUNT (MUST BE ZERO)            |   =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0092"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">     |    <span =
class=3D"delete">          DSO-TYPE =3D RECONFIRM         </span>    =
|</td><td> </td><td class=3D"rblock">     |    <span =
class=3D"insert">DSO-TYPE =3D RECONFIRM (tentatively 0x43)</span>    =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td> </td><td =
class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |   =
DSO-LENGTH (number of octets in DSO-DATA)   |</td><td> </td><td =
class=3D"right">     |   DSO-LENGTH (number of octets in DSO-DATA)   =
|</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  \</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     \            =
         NAME                      \   \</td><td> </td><td =
class=3D"right">     \                     NAME                      \   =
\</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
         TYPE                      |    |</td><td> </td><td =
class=3D"right">     |                     TYPE                      |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
DSO-DATA</td><td> </td><td class=3D"right">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+     &gt; =
DSO-DATA</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     |            =
         CLASS                     |    |</td><td> </td><td =
class=3D"right">     |                     CLASS                     |   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+    |</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+   =
 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     \            =
         RDATA                     \   /</td><td> </td><td =
class=3D"right">     \                     RDATA                     \   =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">     =
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  /</td><td> </td><td =
class=3D"right">     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+  =
/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0093"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
        Figure 4: RECONFIRM <span class=3D"delete">Request</span></td><td>=
 </td><td class=3D"rblock">                        Figure 4: RECONFIRM =
<span class=3D"insert">Message</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0094"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The DSO-DATA =
for a RECONFIRM <span class=3D"delete">request</span> MUST contain =
exactly one record.</td><td> </td><td class=3D"rblock">   The DSO-DATA =
for a RECONFIRM <span class=3D"insert">message</span> MUST contain =
exactly one record.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   The DSO-DATA =
for a RECONFIRM <span class=3D"delete">request</span> has no count field =
to specify</td><td> </td><td class=3D"rblock">   The DSO-DATA for a =
RECONFIRM <span class=3D"insert">message</span> has no count field to =
specify</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   more than =
one record.  Since RECONFIRM <span class=3D"delete">requests</span> are =
sent over TCP,</td><td> </td><td class=3D"rblock">   more than one =
record.  Since RECONFIRM <span class=3D"insert">messages</span> are sent =
over TCP,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   multiple =
RECONFIRM <span class=3D"delete">request</span> messages can be =
concatenated in a single</td><td> </td><td class=3D"rblock">   multiple =
RECONFIRM messages can be concatenated in a single TCP</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   TCP stream =
and packed efficiently into TCP segments.</td><td> </td><td =
class=3D"rblock">   stream and packed efficiently into TCP =
segments.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   TYPE MUST NOT =
be the value ANY (255) and CLASS MUST NOT be the value</td><td> </td><td =
class=3D"right">   TYPE MUST NOT be the value ANY (255) and CLASS MUST =
NOT be the value</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   ANY =
(255).</td><td> </td><td class=3D"right">   ANY (255).</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNS =
wildcarding is not supported.  That is, a wildcard ("*") in a</td><td> =
</td><td class=3D"right">   DNS wildcarding is not supported.  That is, =
a wildcard ("*") in a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   RECONFIRM =
message matches only a literal wildcard character ("*") in</td><td> =
</td><td class=3D"right">   RECONFIRM message matches only a literal =
wildcard character ("*") in</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the zone, and =
nothing else.</td><td> </td><td class=3D"right">   the zone, and nothing =
else.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Aliasing is =
not supported.  That is, a CNAME in a RECONFIRM message</td><td> =
</td><td class=3D"right">   Aliasing is not supported.  That is, a CNAME =
in a RECONFIRM message</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   matches only a =
literal CNAME record in the zone, and nothing else.</td><td> </td><td =
class=3D"right">   matches only a literal CNAME record in the zone, and =
nothing else.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0095"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">6.5.2.  RECONFIRM Response</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Each RECONFIRM request generates exactly one =
RECONFIRM response from</span></td><td> </td><td class=3D"rblock"></td><td=
 class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   the server.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   A RECONFIRM response message begins with the =
standard DSO 12-byte</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   header [DSO], possibly followed by one or more =
optional TLVs, such as</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   a Retry Delay TLV.  For suggested values for the =
Retry Delay TLV, see</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Section 6.2.2.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   The MESSAGE ID field MUST echo the value given in =
the ID field of the</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RECONFIRM request.  This is how the client knows =
which request is</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   being responded to.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   A RECONFIRM response message MUST NOT include a DSO =
RECONFIRM TLV.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   If a client receives a RECONFIRM response message =
containing a</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RECONFIRM TLV then the response message is processed =
but the</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RECONFIRM TLV MUST be silently =
ignored.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   In the RECONFIRM response the RCODE confirms receipt =
of the</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   reconfirmation request.  Supported RCODEs are as =
follows:</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   =
+-----------+-------+-----------------------------------------------+</spa=
n></td><td> </td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | Mnemonic  | Value | Description                    =
               |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   =
+-----------+-------+-----------------------------------------------+</spa=
n></td><td> </td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | NOERROR   |   0   | RECONFIRM accepted.            =
               |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | FORMERR   |   1   | Server failed to process =
request due to a     |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   |           |       | malformed request.             =
               |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | SERVFAIL  |   2   | Server failed to process =
request due to a     |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   |           |       | problem with the server.       =
               |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | NOTIMP    |   4   | Server does not implement DSO. =
               |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | REFUSED   |   5   | Server refuses to process =
request for policy  |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   |           |       | or security reasons.           =
               |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | NOTAUTH   |   9   | Server is not authoritative =
for the requested |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   |           |       | name.                          =
               |</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   | DSOTYPENI |   11  | RECONFIRM operation not =
supported.            |</span></td><td> </td><td class=3D"rblock"></td><td=
 class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   =
+-----------+-------+-----------------------------------------------+</spa=
n></td><td> </td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">                     Table 2: RECONFIRM Response =
codes</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   This document specifies only these RCODE values for =
RECONFIRM</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Responses.  Servers sending RECONFIRM Responses =
SHOULD use one of</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   these values.  Note that NXDOMAIN is not a valid =
RCODE in response to</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   a RECONFIRM Request.  However, future circumstances =
may create</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   situations where other RCODE values are appropriate =
in RECONFIRM</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Responses, so clients MUST be prepared to accept =
RECONFIRM Responses</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   with any other RCODE value.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Nonzero RCODE values signal some kind of =
error.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RCODE value FORMERR indicates a message format =
error, for example</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   TYPE or CLASS being ANY (255).</span></td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RCODE value SERVFAIL indicates that the server has =
exhausted its</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   resources or other serious problem =
occurred.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RCODE values NOTIMP indicates that the server does =
not support DSO,</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   and DSO is required for RECONFIRM =
requests.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RCODE value REFUSED indicates that the server =
supports RECONFIRM</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   requests but is currently not configured to accept =
them from this</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   client.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RCODE value NOTAUTH indicates that the server is not =
authoritative</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   for the requested name, and can do nothing to remedy =
the apparent</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   error.  Note that there may be future cases in which =
a server is able</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   to pass on the RECONFIRM request to the ultimate =
source of the</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   information, and in these cases the server should =
return NOERROR.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RCODE value DSOTYPENI indicates that the server does =
not support</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   RECONFIRM requests.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Nonzero RCODE values SERVFAIL, REFUSED and DSOTYPENI =
are benign from</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   the client's point of view.  The client may log them =
to aid in</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   debugging, but otherwise they require no special =
action.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Nonzero RCODE values other than these three indicate =
a serious</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   problem with the client.  After sending an error =
response other than</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   one of these three, the server SHOULD send a DSO =
Retry Delay TLV to</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   end the DSO session, as described in the DSO =
specification [DSO].</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
                                                         </td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.6.  DNS =
Stateful Operations TLV Context Summary</td><td> </td><td =
class=3D"right">6.6.  DNS Stateful Operations TLV Context =
Summary</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0096"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   This =
document defines four new DSO TLVs.  As suggested in <span =
class=3D"delete">[DSO],</span></td><td> </td><td class=3D"rblock">   =
This document defines four new DSO TLVs.  As suggested in Section <span =
class=3D"insert">8.2</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Section =
<span class=3D"delete">8.2,</span> the valid contexts of these new TLV =
types are summarized</td><td> </td><td class=3D"rblock"><span =
class=3D"insert">   of the DNS Stateful Operations specification =
[RFC8490],</span> the valid</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   =
below.</td><td> </td><td class=3D"rblock">   contexts of these new TLV =
types are summarized below.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The client TLV =
contexts are:</td><td> </td><td class=3D"right">   The client TLV =
contexts are:</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0097"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   C-P:  Client =
primary TLV</td><td> </td><td class=3D"rblock">   C-P:  Client <span =
class=3D"insert">request message,</span> primary TLV</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   C-U:  Client =
<span class=3D"delete">primary</span> unidirectional TLV</td><td> =
</td><td class=3D"rblock">   C-U:  Client unidirectional <span =
class=3D"insert">message, primary</span> TLV</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   C-A:  Client =
additional TLV</td><td> </td><td class=3D"rblock">   C-A:  Client <span =
class=3D"insert">request or unidirectional message,</span> additional =
TLV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   CRP:  <span =
class=3D"delete">Client response</span> primary TLV</td><td> </td><td =
class=3D"rblock">   CRP:  <span class=3D"insert">Response back to =
client,</span> primary TLV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   CRA:  <span =
class=3D"delete">Client response</span> additional TLV</td><td> </td><td =
class=3D"rblock">   CRA:  <span class=3D"insert">Response back to =
client,</span> additional TLV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               =
+-------------+-----+-----+-----+-----+-----+</td><td> </td><td =
class=3D"right">               =
+-------------+-----+-----+-----+-----+-----+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
  TLV Type | C-P | C-U | C-A | CRP | CRA |</td><td> </td><td =
class=3D"right">               |    TLV Type | C-P | C-U | C-A | CRP | =
CRA |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               =
+-------------+-----+-----+-----+-----+-----+</td><td> </td><td =
class=3D"right">               =
+-------------+-----+-----+-----+-----+-----+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
 SUBSCRIBE |  X  |     |     |     |     |</td><td> </td><td =
class=3D"right">               |   SUBSCRIBE |  X  |     |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
      PUSH |     |     |     |     |     |</td><td> </td><td =
class=3D"right">               |        PUSH |     |     |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               | =
UNSUBSCRIBE |     |  X  |     |     |     |</td><td> </td><td =
class=3D"right">               | UNSUBSCRIBE |     |  X  |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
 RECONFIRM |  X  |     |     |     |     |</td><td> </td><td =
class=3D"right">               |   RECONFIRM |  X  |     |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               =
+-------------+-----+-----+-----+-----+-----+</td><td> </td><td =
class=3D"right">               =
+-------------+-----+-----+-----+-----+-----+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0098"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
  Table <span class=3D"delete">3</span>: DSO TLV Client Context =
Summary</td><td> </td><td class=3D"rblock">                  Table <span =
class=3D"insert">2</span>: DSO TLV Client Context Summary</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The server TLV =
contexts are:</td><td> </td><td class=3D"right">   The server TLV =
contexts are:</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0099"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   S-P:  Server =
primary TLV</td><td> </td><td class=3D"rblock">   S-P:  Server <span =
class=3D"insert">request message,</span> primary TLV</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   S-U:  Server =
<span class=3D"delete">primary</span> unidirectional TLV</td><td> =
</td><td class=3D"rblock">   S-U:  Server unidirectional <span =
class=3D"insert">message, primary</span> TLV</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   S-A:  Server =
additional TLV</td><td> </td><td class=3D"rblock">   S-A:  Server <span =
class=3D"insert">request or unidirectional message,</span> additional =
TLV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   SRP:  <span =
class=3D"delete">Server response</span> primary TLV</td><td> </td><td =
class=3D"rblock">   SRP:  <span class=3D"insert">Response back to =
server,</span> primary TLV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   SRA:  <span =
class=3D"delete">Server response</span> additional TLV</td><td> </td><td =
class=3D"rblock">   SRA:  <span class=3D"insert">Response back to =
server,</span> additional TLV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               =
+-------------+-----+-----+-----+-----+-----+</td><td> </td><td =
class=3D"right">               =
+-------------+-----+-----+-----+-----+-----+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
  TLV Type | S-P | S-U | S-A | SRP | SRA |</td><td> </td><td =
class=3D"right">               |    TLV Type | S-P | S-U | S-A | SRP | =
SRA |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               =
+-------------+-----+-----+-----+-----+-----+</td><td> </td><td =
class=3D"right">               =
+-------------+-----+-----+-----+-----+-----+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
 SUBSCRIBE |     |     |     |     |     |</td><td> </td><td =
class=3D"right">               |   SUBSCRIBE |     |     |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
      PUSH |     |  X  |     |     |     |</td><td> </td><td =
class=3D"right">               |        PUSH |     |  X  |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               | =
UNSUBSCRIBE |     |     |     |     |     |</td><td> </td><td =
class=3D"right">               | UNSUBSCRIBE |     |     |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               |  =
 RECONFIRM |     |     |     |     |     |</td><td> </td><td =
class=3D"right">               |   RECONFIRM |     |     |     |     |   =
  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">               =
+-------------+-----+-----+-----+-----+-----+</td><td> </td><td =
class=3D"right">               =
+-------------+-----+-----+-----+-----+-----+</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0100"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
  Table <span class=3D"delete">4</span>: DSO TLV Server Context =
Summary</td><td> </td><td class=3D"rblock">                  Table <span =
class=3D"insert">3</span>: DSO TLV Server Context Summary</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">6.7.  =
Client-Initiated Termination</td><td> </td><td class=3D"right">6.7.  =
Client-Initiated Termination</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   An individual =
subscription is terminated by sending an UNSUBSCRIBE</td><td> </td><td =
class=3D"right">   An individual subscription is terminated by sending =
an UNSUBSCRIBE</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   TLV for that =
specific subscription, or all subscriptions can be</td><td> </td><td =
class=3D"right">   TLV for that specific subscription, or all =
subscriptions can be</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   cancelled at =
once by the client closing the DSO session.  When a</td><td> </td><td =
class=3D"right">   cancelled at once by the client closing the DSO =
session.  When a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client =
terminates an individual subscription (via UNSUBSCRIBE) or all</td><td> =
</td><td class=3D"right">   client terminates an individual subscription =
(via UNSUBSCRIBE) or all</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   subscriptions =
on that DSO session (by ending the session) it is</td><td> </td><td =
class=3D"right">   subscriptions on that DSO session (by ending the =
session) it is</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   signaling to =
the server that it is longer interested in receiving</td><td> </td><td =
class=3D"right">   signaling to the server that it is longer interested =
in receiving</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   those =
particular updates.  It is informing the server that the server</td><td> =
</td><td class=3D"right">   those particular updates.  It is informing =
the server that the server</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   may release =
any state information it has been keeping with regards to</td><td> =
</td><td class=3D"right">   may release any state information it has =
been keeping with regards to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   these =
particular subscriptions.</td><td> </td><td class=3D"right">   these =
particular subscriptions.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   After =
terminating its last subscription on a session via UNSUBSCRIBE,</td><td> =
</td><td class=3D"right">   After terminating its last subscription on a =
session via UNSUBSCRIBE,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   a client MAY =
close the session immediately, or it may keep it open if</td><td> =
</td><td class=3D"right">   a client MAY close the session immediately, =
or it may keep it open if</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   it anticipates =
performing further operations on that session in the</td><td> </td><td =
class=3D"right">   it anticipates performing further operations on that =
session in the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   future.  If a =
client wishes to keep an idle session open, it MUST</td><td> </td><td =
class=3D"right">   future.  If a client wishes to keep an idle session =
open, it MUST</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0101"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   respect the =
maximum idle time required by the server [<span =
class=3D"delete">DSO</span>].</td><td> </td><td class=3D"rblock">   =
respect the maximum idle time required by the server [<span =
class=3D"insert">RFC8490</span>].</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   If a client =
plans to terminate one or more subscriptions on a session</td><td> =
</td><td class=3D"right">   If a client plans to terminate one or more =
subscriptions on a session</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   and doesn't =
intend to keep that session open, then as an efficiency</td><td> =
</td><td class=3D"right">   and doesn't intend to keep that session =
open, then as an efficiency</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   optimization =
it MAY instead choose to simply close the session, which</td><td> =
</td><td class=3D"right">   optimization it MAY instead choose to simply =
close the session, which</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   implicitly =
terminates all subscriptions on that session.  This may</td><td> =
</td><td class=3D"right">   implicitly terminates all subscriptions on =
that session.  This may</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   occur because =
the client computer is being shut down, is going to</td><td> </td><td =
class=3D"right">   occur because the client computer is being shut down, =
is going to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   sleep, the =
application requiring the subscriptions has terminated, or</td><td> =
</td><td class=3D"right">   sleep, the application requiring the =
subscriptions has terminated, or</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   simply because =
the last active subscription on that session has been</td><td> </td><td =
class=3D"right">   simply because the last active subscription on that =
session has been</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
cancelled.</td><td> </td><td class=3D"right">   cancelled.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-12" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-12"><em> page 30, line =
8<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-12"><em> page 32, line =
8<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   If a client =
has performed operations on this session that it would</td><td> </td><td =
class=3D"right">   If a client has performed operations on this session =
that it would</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   not want lost =
(like DNS updates) then the client SHOULD do an orderly</td><td> =
</td><td class=3D"right">   not want lost (like DNS updates) then the =
client SHOULD do an orderly</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   disconnect, =
sending a TLS close_notify followed by a TCP FIN.  (In</td><td> </td><td =
class=3D"right">   disconnect, sending a TLS close_notify followed by a =
TCP FIN.  (In</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the BSD =
Sockets API, sending a TCP FIN is achieved by calling</td><td> </td><td =
class=3D"right">   the BSD Sockets API, sending a TCP FIN is achieved by =
calling</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
"shutdown(s,SHUT_WR)" and keeping the socket open until all =
remaining</td><td> </td><td class=3D"right">   "shutdown(s,SHUT_WR)" and =
keeping the socket open until all remaining</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   data has been =
read from it.)</td><td> </td><td class=3D"right">   data has been read =
from it.)</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">7.  Security =
Considerations</td><td> </td><td class=3D"right">7.  Security =
Considerations</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The Strict =
Privacy Usage Profile for DNS over TLS is REQUIRED for DNS</td><td> =
</td><td class=3D"right">   The Strict Privacy Usage Profile for DNS =
over TLS is REQUIRED for DNS</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0102"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Push =
Notifications <span class=3D"delete">as defined in "Usage Profiles for =
DNS over TLS and</span></td><td> </td><td class=3D"rblock">   Push =
Notifications [RFC8310].  Cleartext connections for DNS Push</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   DNS over DTLS"</span> [RFC8310].  Cleartext =
connections for DNS Push</td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Notifications =
are not permissible.  Since this is a new protocol,</td><td> </td><td =
class=3D"right">   Notifications are not permissible.  Since this is a =
new protocol,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   transition =
mechanisms from the Opportunistic Privacy profile are</td><td> </td><td =
class=3D"right">   transition mechanisms from the Opportunistic Privacy =
profile are</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0103"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">deemed</span> unnecessary.</td><td> </td><td =
class=3D"rblock">   unnecessary.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">                                               =
                          </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">Also, see Section 9 =
of the DNS over (D)TLS Usage Profiles document</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   [RFC8310] for =
additional recommendations for various versions of TLS</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   =
usage.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   DNSSEC is =
RECOMMENDED for the authentication of DNS Push Notification</td><td> =
</td><td class=3D"right">   DNSSEC is RECOMMENDED for the authentication =
of DNS Push Notification</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   servers.  TLS =
alone does not provide complete security.  TLS</td><td> </td><td =
class=3D"right">   servers.  TLS alone does not provide complete =
security.  TLS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   certificate =
verification can provide reasonable assurance that the</td><td> </td><td =
class=3D"right">   certificate verification can provide reasonable =
assurance that the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   client is =
really talking to the server associated with the desired</td><td> =
</td><td class=3D"right">   client is really talking to the server =
associated with the desired</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   host name, but =
since the desired host name is learned via a DNS SRV</td><td> </td><td =
class=3D"right">   host name, but since the desired host name is learned =
via a DNS SRV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   query, if the =
SRV query is subverted then the client may have a</td><td> </td><td =
class=3D"right">   query, if the SRV query is subverted then the client =
may have a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   secure =
connection to a rogue server.  DNSSEC can provided added</td><td> =
</td><td class=3D"right">   secure connection to a rogue server.  DNSSEC =
can provided added</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   confidence =
that the SRV query has not been subverted.</td><td> </td><td =
class=3D"right">   confidence that the SRV query has not been =
subverted.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-13" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-13"><em> page 30, line =
52<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-13"><em> page 33, line =
6<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
recommendations will continue to change.  Updated versions or =
errata</td><td> </td><td class=3D"right">   recommendations will =
continue to change.  Updated versions or errata</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   may exist for =
these recommendations.</td><td> </td><td class=3D"right">   may exist =
for these recommendations.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">7.2.  TLS Name =
Authentication</td><td> </td><td class=3D"right">7.2.  TLS Name =
Authentication</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   As described =
in Section 6.1, the client discovers the DNS Push</td><td> </td><td =
class=3D"right">   As described in Section 6.1, the client discovers the =
DNS Push</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Notification =
server using an SRV lookup for the record name</td><td> </td><td =
class=3D"right">   Notification server using an SRV lookup for the =
record name</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
"_dns-push-tls._tcp.&lt;zone&gt;".  The server connection endpoint =
SHOULD</td><td> </td><td class=3D"right">   =
"_dns-push-tls._tcp.&lt;zone&gt;".  The server connection endpoint =
SHOULD</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   then be =
authenticated using DANE TLSA records for the associated SRV</td><td> =
</td><td class=3D"right">   then be authenticated using DANE TLSA =
records for the associated SRV</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   record.  This =
associates the target's name and port number with a</td><td> </td><td =
class=3D"right">   record.  This associates the target's name and port =
number with a</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0104"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   trusted TLS =
certificate [RFC7673].  This procedure uses the TLS <span =
class=3D"delete">Sever</span></td><td> </td><td class=3D"rblock">   =
trusted TLS certificate [RFC7673].  This procedure uses the TLS</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Name =
Indication (SNI) extension [RFC6066] to inform the server of =
the</td><td> </td><td class=3D"rblock">   <span =
class=3D"insert">Server</span> Name Indication (SNI) extension [RFC6066] =
to inform the server</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   name the =
client has authenticated through the use of TLSA records.</td><td> =
</td><td class=3D"rblock">   of the name the client has authenticated =
through the use of TLSA</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Therefore, =
if the SRV record passes DNSSEC validation and a TLSA</td><td> </td><td =
class=3D"rblock">   records.  Therefore, if the SRV record passes DNSSEC =
validation and a</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   record =
matching the target name is useable, an SNI extension must be</td><td> =
</td><td class=3D"rblock">   TLSA record matching the target name is =
useable, an SNI extension</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   used for the =
target name to ensure the client is connecting to the</td><td> </td><td =
class=3D"rblock">   must be used for the target name to ensure the =
client is connecting</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   server it =
has authenticated.  If the target name does not have a</td><td> </td><td =
class=3D"rblock">   to the server it has authenticated.  If the target =
name does not have</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   usable TLSA =
record, then the use of the SNI extension is optional.</td><td> </td><td =
class=3D"rblock">   a usable TLSA record, then the use of the SNI =
extension is optional.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
                                                         </td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   See Usage =
Profiles for DNS over TLS and DNS over DTLS [RFC8310] for</td><td> =
</td><td class=3D"right">   See Usage Profiles for DNS over TLS and DNS =
over DTLS [RFC8310] for</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0105"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   more =
information on authenticating domain names.  <span class=3D"delete">Also =
note that a</span></td><td> </td><td class=3D"rblock">   more =
information on authenticating domain names.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   DNS Push server is an authoritative server and a DNS =
Push client is a</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   standard DNS client.  While the terminology in Usage =
Profiles for DNS</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   over TLS and DNS over DTLS [RFC8310] explicitly =
states it does not</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   apply to authoritative servers, it does in this case =
apply to DNS</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   Push Notification clients and =
servers.</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">7.3.  TLS Compression</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete"></span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   In order to reduce the chances of =
compression-related attacks, TLS-</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   level compression SHOULD be disabled when using TLS =
versions 1.2 and</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   earlier.  In TLS 1.3 [RFC8446], TLS-level =
compression has been</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">   removed completely.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0106"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">7.<span =
class=3D"delete">4</span>.  TLS Session Resumption</td><td> </td><td =
class=3D"rblock">7.<span class=3D"insert">3</span>.  TLS Session =
Resumption</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   TLS Session =
Resumption is permissible on DNS Push Notification</td><td> </td><td =
class=3D"right">   TLS Session Resumption is permissible on DNS Push =
Notification</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0107"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   servers.  =
The server may keep TLS state with Session IDs [RFC<span =
class=3D"delete">52</span>46] or</td><td> </td><td class=3D"rblock">   =
servers.  The server may keep TLS state with Session IDs [RFC<span =
class=3D"insert">84</span>46] or</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   operate in =
stateless mode by sending a Session Ticket [RFC5077] to</td><td> =
</td><td class=3D"right">   operate in stateless mode by sending a =
Session Ticket [RFC5077] to</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the client for =
it to store.  However, closing the TLS connection</td><td> </td><td =
class=3D"right">   the client for it to store.  However, closing the TLS =
connection</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   terminates the =
DSO session.  When the TLS session is resumed, the DNS</td><td> </td><td =
class=3D"right">   terminates the DSO session.  When the TLS session is =
resumed, the DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Push =
Notification server will not have any subscription state and</td><td> =
</td><td class=3D"right">   Push Notification server will not have any =
subscription state and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   will proceed =
as with any other new DSO session.  Use of TLS Session</td><td> </td><td =
class=3D"right">   will proceed as with any other new DSO session.  Use =
of TLS Session</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Resumption may =
allow a TLS connection to be set up more quickly, but</td><td> </td><td =
class=3D"right">   Resumption may allow a TLS connection to be set up =
more quickly, but</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   the client =
will still have to recreate any desired subscriptions.</td><td> </td><td =
class=3D"right">   the client will still have to recreate any desired =
subscriptions.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">8.  IANA =
Considerations</td><td> </td><td class=3D"right">8.  IANA =
Considerations</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-14" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-14"><em> page 32, line =
18<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-14"><em> page 33, line =
42<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Registry =
Service Types [RFC6335][ST] that is only applicable for the</td><td> =
</td><td class=3D"right">   Registry Service Types [RFC6335][ST] that is =
only applicable for the</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   TCP =
protocol.</td><td> </td><td class=3D"right">   TCP protocol.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
+-----------------------+------+----------------------+-------------+</td>=
<td> </td><td class=3D"right">   =
+-----------------------+------+----------------------+-------------+</td>=
<td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   | Name         =
         | Port |        Value         | Definition  |</td><td> </td><td =
class=3D"right">   | Name                  | Port |        Value         =
| Definition  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
+-----------------------+------+----------------------+-------------+</td>=
<td> </td><td class=3D"right">   =
+-----------------------+------+----------------------+-------------+</td>=
<td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   | DNS Push =
Notification | None | "_dns-push-tls._tcp" | Section 6.1 |</td><td> =
</td><td class=3D"right">   | DNS Push Notification | None | =
"_dns-push-tls._tcp" | Section 6.1 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   | Service Type =
         |      |                      |             |</td><td> </td><td =
class=3D"right">   | Service Type          |      |                      =
|             |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
+-----------------------+------+----------------------+-------------+</td>=
<td> </td><td class=3D"right">   =
+-----------------------+------+----------------------+-------------+</td>=
<td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0108"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
  Table <span class=3D"delete">5</span>: IANA Service Type =
Assignments</td><td> </td><td class=3D"rblock">                  Table =
<span class=3D"insert">4</span>: IANA Service Type Assignments</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   This document =
also defines four new DNS Stateful Operation TLV types</td><td> </td><td =
class=3D"right">   This document also defines four new DNS Stateful =
Operation TLV types</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   to be recorded =
in the IANA DSO Type Code Registry.</td><td> </td><td class=3D"right">   =
to be recorded in the IANA DSO Type Code Registry.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0109"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         <span =
class=3D"delete">+-------------+------------------------+---------------+<=
/span></td><td> </td><td class=3D"rblock">          <span =
class=3D"insert">+-------------+------------------------+-------------+</s=
pan></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         | Name =
       |         Value          | Definition    |</td><td> </td><td =
class=3D"rblock">          | Name        |         Value          | =
Definition  |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         <span =
class=3D"delete">+-------------+------------------------+---------------+<=
/span></td><td> </td><td class=3D"rblock">          <span =
class=3D"insert">+-------------+------------------------+-------------+</s=
pan></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         | =
SUBSCRIBE   | TBA (tentatively 0x40) | Section 6.2   |</td><td> </td><td =
class=3D"rblock">          | SUBSCRIBE   | TBA (tentatively 0x40) | =
Section 6.2 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         | PUSH =
       | TBA (tentatively 0x41) | Section <span =
class=3D"delete">6.3.1</span> |</td><td> </td><td class=3D"rblock">      =
    | PUSH        | TBA (tentatively 0x41) | Section <span =
class=3D"insert">6.3</span> |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         | =
UNSUBSCRIBE | TBA (tentatively 0x42) | Section 6.4   |</td><td> </td><td =
class=3D"rblock">          | UNSUBSCRIBE | TBA (tentatively 0x42) | =
Section 6.4 |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         | =
RECONFIRM   | TBA (tentatively 0x43) | Section <span =
class=3D"delete">6.5.1</span> |</td><td> </td><td class=3D"rblock">      =
    | RECONFIRM   | TBA (tentatively 0x43) | Section <span =
class=3D"insert">6.5</span> |</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">         <span =
class=3D"delete">+-------------+------------------------+---------------+<=
/span></td><td> </td><td class=3D"rblock">          <span =
class=3D"insert">+-------------+------------------------+-------------+</s=
pan></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0110"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
Table <span class=3D"delete">6</span>: IANA DSO TLV Type Code =
Assignments</td><td> </td><td class=3D"rblock">                Table =
<span class=3D"insert">5</span>: IANA DSO TLV Type Code =
Assignments</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">9.  =
Acknowledgements</td><td> </td><td class=3D"right">9.  =
Acknowledgements</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   The authors =
would like to thank Kiren Sekar and Marc Krochmal for</td><td> </td><td =
class=3D"right">   The authors would like to thank Kiren Sekar and Marc =
Krochmal for</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   previous work =
completed in this field.</td><td> </td><td class=3D"right">   previous =
work completed in this field.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   This draft has =
been improved due to comments from Ran Atkinson, Tim</td><td> </td><td =
class=3D"right">   This draft has been improved due to comments from Ran =
Atkinson, Tim</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Chown, Mark =
Delany, Ralph Droms, Bernie Volz, Jan Komissar, Manju</td><td> </td><td =
class=3D"right">   Chown, Mark Delany, Ralph Droms, Bernie Volz, Jan =
Komissar, Manju</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Shankar Rao, =
Markus Stenberg, Dave Thaler, Soraia Zlatkovic, Sara</td><td> </td><td =
class=3D"right">   Shankar Rao, Markus Stenberg, Dave Thaler, Soraia =
Zlatkovic, Sara</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Dickinson, and =
Andrew Sullivan.  Ted Lemon provided clarifying text</td><td> </td><td =
class=3D"right">   Dickinson, and Andrew Sullivan.  Ted Lemon provided =
clarifying text</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   that was =
greatly appreciated.</td><td> </td><td class=3D"right">   that was =
greatly appreciated.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">10.  =
References</td><td> </td><td class=3D"right">10.  References</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">10.1.  Normative =
References</td><td> </td><td class=3D"right">10.1.  Normative =
References</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0111"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">[DSO]      Bellis, R., Cheshire, S., Dickinson, J., =
Dickinson, S.,</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">              Lemon, T., and T. Pusateri, "DNS Stateful =
Operations",</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">              draft-ietf-dnsop-session-signal-18 (work =
in progress),</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">              October 2018.</span></td><td> </td><td =
class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
                                                         </td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC0768]  =
Postel, J., "User Datagram Protocol", STD 6, RFC 768,</td><td> </td><td =
class=3D"right">   [RFC0768]  Postel, J., "User Datagram Protocol", STD =
6, RFC 768,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              DOI =
10.17487/RFC0768, August 1980,</td><td> </td><td class=3D"right">        =
      DOI 10.17487/RFC0768, August 1980,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc768&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc768&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC0793]  =
Postel, J., "Transmission Control Protocol", STD 7,</td><td> </td><td =
class=3D"right">   [RFC0793]  Postel, J., "Transmission Control =
Protocol", STD 7,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              RFC =
793, DOI 10.17487/RFC0793, September 1981,</td><td> </td><td =
class=3D"right">              RFC 793, DOI 10.17487/RFC0793, September =
1981,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc793&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc793&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC1034]  =
Mockapetris, P., "Domain names - concepts and facilities",</td><td> =
</td><td class=3D"right">   [RFC1034]  Mockapetris, P., "Domain names - =
concepts and facilities",</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              STD =
13, RFC 1034, DOI 10.17487/RFC1034, November 1987,</td><td> </td><td =
class=3D"right">              STD 13, RFC 1034, DOI 10.17487/RFC1034, =
November 1987,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-15" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-15"><em> page 33, line =
45<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-15"><em> page 35, line =
15<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC2119]  =
Bradner, S., "Key words for use in RFCs to Indicate</td><td> </td><td =
class=3D"right">   [RFC2119]  Bradner, S., "Key words for use in RFCs to =
Indicate</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Requirement Levels", BCP 14, RFC 2119,</td><td> </td><td class=3D"right"> =
             Requirement Levels", BCP 14, RFC 2119,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              DOI =
10.17487/RFC2119, March 1997,</td><td> </td><td class=3D"right">         =
     DOI 10.17487/RFC2119, March 1997,</td><td class=3D"lineno"></td></tr>=

      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc2119&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc2119&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC2136]  =
Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound,</td><td> =
</td><td class=3D"right">   [RFC2136]  Vixie, P., Ed., Thomson, S., =
Rekhter, Y., and J. Bound,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
"Dynamic Updates in the Domain Name System (DNS UPDATE)",</td><td> =
</td><td class=3D"right">              "Dynamic Updates in the Domain =
Name System (DNS UPDATE)",</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              RFC =
2136, DOI 10.17487/RFC2136, April 1997,</td><td> </td><td class=3D"right">=
              RFC 2136, DOI 10.17487/RFC2136, April 1997,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc2136&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc2136&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0112"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">[RFC2181]  Elz, R. =
and R. Bush, "Clarifications to the DNS</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              =
Specification", RFC 2181, DOI 10.17487/RFC2181, July =
1997,</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              =
&lt;https://www.rfc-editor.org/info/rfc2181&gt;.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">                                               =
                          </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC2782]  =
Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for</td><td> =
</td><td class=3D"right">   [RFC2782]  Gulbrandsen, A., Vixie, P., and =
L. Esibov, "A DNS RR for</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
specifying the location of services (DNS SRV)", RFC 2782,</td><td> =
</td><td class=3D"right">              specifying the location of =
services (DNS SRV)", RFC 2782,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              DOI =
10.17487/RFC2782, February 2000,</td><td> </td><td class=3D"right">      =
        DOI 10.17487/RFC2782, February 2000,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc2782&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc2782&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0113"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">[RFC5246]  Dierks, T. and E. Rescorla, "The Transport =
Layer Security</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">              (TLS) Protocol Version 1.2", RFC =
5246,</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">              DOI 10.17487/RFC5246, August =
2008,</span></td><td> </td><td class=3D"rblock"></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">              =
&lt;https://www.rfc-editor.org/info/rfc5246&gt;.</span></td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">                =
                                                         </td><td> =
</td><td class=3D"rblock"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC6066]  =
Eastlake 3rd, D., "Transport Layer Security (TLS)</td><td> </td><td =
class=3D"right">   [RFC6066]  Eastlake 3rd, D., "Transport Layer =
Security (TLS)</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Extensions: Extension Definitions", RFC 6066,</td><td> </td><td =
class=3D"right">              Extensions: Extension Definitions", RFC =
6066,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              DOI =
10.17487/RFC6066, January 2011,</td><td> </td><td class=3D"right">       =
       DOI 10.17487/RFC6066, January 2011,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc6066&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc6066&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC6335]  =
Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S.</td><td> =
</td><td class=3D"right">   [RFC6335]  Cotton, M., Eggert, L., Touch, =
J., Westerlund, M., and S.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Cheshire, "Internet Assigned Numbers Authority (IANA)</td><td> </td><td =
class=3D"right">              Cheshire, "Internet Assigned Numbers =
Authority (IANA)</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Procedures for the Management of the Service Name and</td><td> </td><td =
class=3D"right">              Procedures for the Management of the =
Service Name and</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Transport Protocol Port Number Registry", BCP 165,</td><td> </td><td =
class=3D"right">              Transport Protocol Port Number Registry", =
BCP 165,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              RFC =
6335, DOI 10.17487/RFC6335, August 2011,</td><td> </td><td =
class=3D"right">              RFC 6335, DOI 10.17487/RFC6335, August =
2011,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-16" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-16"><em> page 34, line =
44<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-16"><em> page 36, line =
9<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc7766&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc7766&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC8174]  =
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC</td><td> </td><td =
class=3D"right">   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs =
Lowercase in RFC</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,</td><td> =
</td><td class=3D"right">              2119 Key Words", BCP 14, RFC =
8174, DOI 10.17487/RFC8174,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              May =
2017, &lt;https://www.rfc-editor.org/info/rfc8174&gt;.</td><td> </td><td =
class=3D"right">              May 2017, =
&lt;https://www.rfc-editor.org/info/rfc8174&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC8446]  =
Rescorla, E., "The Transport Layer Security (TLS) Protocol</td><td> =
</td><td class=3D"right">   [RFC8446]  Rescorla, E., "The Transport =
Layer Security (TLS) Protocol</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,</td><td> =
</td><td class=3D"right">              Version 1.3", RFC 8446, DOI =
10.17487/RFC8446, August 2018,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc8446&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc8446&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0114"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">[RFC8490]  Bellis, =
R., Cheshire, S., Dickinson, J., Dickinson, S.,</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              Lemon, =
T., and T. Pusateri, "DNS Stateful Operations",</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              RFC 8490, =
DOI 10.17487/RFC8490, March 2019,</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              =
&lt;https://www.rfc-editor.org/info/rfc8490&gt;.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">                                               =
                          </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [ST]       =
"Service Name and Transport Protocol Port Number</td><td> </td><td =
class=3D"right">   [ST]       "Service Name and Transport Protocol Port =
Number</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Registry", &lt;http://www.iana.org/assignments/</td><td> </td><td =
class=3D"right">              Registry", =
&lt;http://www.iana.org/assignments/</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
service-names-port-numbers/&gt;.</td><td> </td><td class=3D"right">      =
        service-names-port-numbers/&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">10.2.  =
Informative References</td><td> </td><td class=3D"right">10.2.  =
Informative References</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [DisProx]  =
Cheshire, S., "Discovery Proxy for Multicast DNS-Based</td><td> </td><td =
class=3D"right">   [DisProx]  Cheshire, S., "Discovery Proxy for =
Multicast DNS-Based</td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0115"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">              =
Service Discovery", <span =
class=3D"delete">draft-ietf-dnssd-hybrid-08</span> (work in</td><td> =
</td><td class=3D"rblock">              Service Discovery", <span =
class=3D"insert">draft-ietf-dnssd-hybrid-10</span> (work in</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">              =
progress), March <span class=3D"delete">2018.</span></td><td> </td><td =
class=3D"rblock">              progress), March <span =
class=3D"insert">2019.</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
[I-D.dukkipati-tcpm-tcp-loss-probe]</td><td> </td><td class=3D"right">   =
[I-D.dukkipati-tcpm-tcp-loss-probe]</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Dukkipati, N., Cardwell, N., Cheng, Y., and M. Mathis,</td><td> </td><td =
class=3D"right">              Dukkipati, N., Cardwell, N., Cheng, Y., =
and M. Mathis,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
"Tail Loss Probe (TLP): An Algorithm for Fast Recovery of</td><td> =
</td><td class=3D"right">              "Tail Loss Probe (TLP): An =
Algorithm for Fast Recovery of</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Tail Losses", draft-dukkipati-tcpm-tcp-loss-probe-01 (work</td><td> =
</td><td class=3D"right">              Tail Losses", =
draft-dukkipati-tcpm-tcp-loss-probe-01 (work</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              in =
progress), February 2013.</td><td> </td><td class=3D"right">             =
 in progress), February 2013.</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0116"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   [LLQ]      =
<span class=3D"delete">Sekar, K.,</span> "DNS Long-Lived Queries", <span =
class=3D"delete">draft-sekar-dns-</span></td><td> </td><td =
class=3D"rblock">   [LLQ]      <span class=3D"insert">Cheshire, S. and =
M. Krochmal,</span> "DNS Long-Lived Queries",</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"><span =
class=3D"delete">              llq-01</span> (work in progress), <span =
class=3D"delete">August 2006.</span></td><td> </td><td class=3D"rblock"> =
             <span class=3D"insert">draft-sekar-dns-llq-03</span> (work =
in progress), <span class=3D"insert">March 2019.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [obs]      =
"Observer Pattern",</td><td> </td><td class=3D"right">   [obs]      =
"Observer Pattern",</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://en.wikipedia.org/wiki/Observer_pattern&gt;.</td><td> =
</td><td class=3D"right">              =
&lt;https://en.wikipedia.org/wiki/Observer_pattern&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC2308]  =
Andrews, M., "Negative Caching of DNS Queries (DNS</td><td> </td><td =
class=3D"right">   [RFC2308]  Andrews, M., "Negative Caching of DNS =
Queries (DNS</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998,</td><td> </td><td =
class=3D"right">              NCACHE)", RFC 2308, DOI 10.17487/RFC2308, =
March 1998,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc2308&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc2308&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0117"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">[RFC3123]  Koch, P., =
"A DNS RR Type for Lists of Address Prefixes</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              (APL =
RR)", RFC 3123, DOI 10.17487/RFC3123, June 2001,</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              =
&lt;https://www.rfc-editor.org/info/rfc3123&gt;.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">                                               =
                          </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC4287]  =
Nottingham, M., Ed. and R. Sayre, Ed., "The Atom</td><td> </td><td =
class=3D"right">   [RFC4287]  Nottingham, M., Ed. and R. Sayre, Ed., =
"The Atom</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Syndication Format", RFC 4287, DOI 10.17487/RFC4287,</td><td> </td><td =
class=3D"right">              Syndication Format", RFC 4287, DOI =
10.17487/RFC4287,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
December 2005, &lt;https://www.rfc-editor.org/info/rfc4287&gt;.</td><td> =
</td><td class=3D"right">              December 2005, =
&lt;https://www.rfc-editor.org/info/rfc4287&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC4953]  =
Touch, J., "Defending TCP Against Spoofing Attacks",</td><td> </td><td =
class=3D"right">   [RFC4953]  Touch, J., "Defending TCP Against Spoofing =
Attacks",</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              RFC =
4953, DOI 10.17487/RFC4953, July 2007,</td><td> </td><td class=3D"right"> =
             RFC 4953, DOI 10.17487/RFC4953, July 2007,</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc4953&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc4953&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC5077]  =
Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig,</td><td> </td><td =
class=3D"right">   [RFC5077]  Salowey, J., Zhou, H., Eronen, P., and H. =
Tschofenig,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
"Transport Layer Security (TLS) Session Resumption without</td><td> =
</td><td class=3D"right">              "Transport Layer Security (TLS) =
Session Resumption without</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-17" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-17"><em> page 36, line =
5<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-17"><em> page 37, line =
28<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC6763]  =
Cheshire, S. and M. Krochmal, "DNS-Based Service</td><td> </td><td =
class=3D"right">   [RFC6763]  Cheshire, S. and M. Krochmal, "DNS-Based =
Service</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013,</td><td> =
</td><td class=3D"right">              Discovery", RFC 6763, DOI =
10.17487/RFC6763, February 2013,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc6763&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc6763&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC6824]  =
Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,</td><td> </td><td =
class=3D"right">   [RFC6824]  Ford, A., Raiciu, C., Handley, M., and O. =
Bonaventure,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
"TCP Extensions for Multipath Operation with Multiple</td><td> </td><td =
class=3D"right">              "TCP Extensions for Multipath Operation =
with Multiple</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013,</td><td> =
</td><td class=3D"right">              Addresses", RFC 6824, DOI =
10.17487/RFC6824, January 2013,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc6824&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc6824&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0118"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">   <span class=3D"insert">[RFC6886]  Cheshire, =
S. and M. Krochmal, "NAT Port Mapping Protocol</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              =
(NAT-PMP)", RFC 6886, DOI 10.17487/RFC6886, April 2013,</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              =
&lt;https://www.rfc-editor.org/info/rfc6886&gt;.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert"></span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">   [RFC6887]  Wing, D., =
Ed., Cheshire, S., Boucadair, M., Penno, R., and</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              P. =
Selkirk, "Port Control Protocol (PCP)", RFC 6887,</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              DOI =
10.17487/RFC6887, April 2013,</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock"><span class=3D"insert">              =
&lt;https://www.rfc-editor.org/info/rfc6887&gt;.</span></td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock"></td><td> =
</td><td class=3D"rblock">                                               =
                          </td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC7413]  =
Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP</td><td> =
</td><td class=3D"right">   [RFC7413]  Cheng, Y., Chu, J., =
Radhakrishnan, S., and A. Jain, "TCP</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014,</td><td> =
</td><td class=3D"right">              Fast Open", RFC 7413, DOI =
10.17487/RFC7413, December 2014,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
&lt;https://www.rfc-editor.org/info/rfc7413&gt;.</td><td> </td><td =
class=3D"right">              =
&lt;https://www.rfc-editor.org/info/rfc7413&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   [RFC7525]  =
Sheffer, Y., Holz, R., and P. Saint-Andre,</td><td> </td><td =
class=3D"right">   [RFC7525]  Sheffer, Y., Holz, R., and P. =
Saint-Andre,</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
"Recommendations for Secure Use of Transport Layer</td><td> </td><td =
class=3D"right">              "Recommendations for Secure Use of =
Transport Layer</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
Security (TLS) and Datagram Transport Layer Security</td><td> </td><td =
class=3D"right">              Security (TLS) and Datagram Transport =
Layer Security</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
(DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May</td><td> </td><td =
class=3D"right">              (DTLS)", BCP 195, RFC 7525, DOI =
10.17487/RFC7525, May</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">              =
2015, &lt;https://www.rfc-editor.org/info/rfc7525&gt;.</td><td> </td><td =
class=3D"right">              2015, =
&lt;https://www.rfc-editor.org/info/rfc7525&gt;.</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"part-18" class=3D"change"><td></td><th><small>skipping =
to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-18"><em> page 37, line =
17<span class=3D"hide"> =C2=B6</span></em></a></th><th> =
</th><th><small>skipping to change at</small><a =
href=3D"https://tools.ietf.org/rfcdiff#part-18"><em> page 38, line =
44<span class=3D"hide"> =C2=B6</span></em></a></th><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Tom =
Pusateri</td><td> </td><td class=3D"right">   Tom Pusateri</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   =
Unaffiliated</td><td> </td><td class=3D"right">   Unaffiliated</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Raleigh, NC  =
27608</td><td> </td><td class=3D"right">   Raleigh, NC  27608</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   USA</td><td> =
</td><td class=3D"right">   USA</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Phone: +1 919 =
867 1330</td><td> </td><td class=3D"right">   Phone: +1 919 867 =
1330</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Email: =
pusateri@bangj.com</td><td> </td><td class=3D"right">   Email: =
pusateri@bangj.com</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Stuart =
Cheshire</td><td> </td><td class=3D"right">   Stuart Cheshire</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Apple =
Inc.</td><td> </td><td class=3D"right">   Apple Inc.</td><td =
class=3D"lineno"></td></tr>
      <tr id=3D"diff0119"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   <span =
class=3D"delete">1 Infinite Loop</span></td><td> </td><td =
class=3D"rblock">   <span class=3D"insert">One Apple Park =
Way</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Cupertino, CA  =
95014</td><td> </td><td class=3D"right">   Cupertino, CA  95014</td><td =
class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   USA</td><td> =
</td><td class=3D"right">   USA</td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left"></td><td> =
</td><td class=3D"right"></td><td class=3D"lineno"></td></tr>
      <tr id=3D"diff0120"><td></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"lblock">   Phone: +1 =
<span class=3D"delete">408 974 3207</span></td><td> </td><td =
class=3D"rblock">   Phone: +1 <span class=3D"insert">(408) =
996-1010</span></td><td class=3D"lineno"></td></tr>
      <tr><td class=3D"lineno"></td><td class=3D"left">   Email: =
cheshire@apple.com</td><td> </td><td class=3D"right">   Email: =
cheshire@apple.com</td><td class=3D"lineno"></td></tr>

     <tr><td></td><td class=3D"left"></td><td> </td><td =
class=3D"right"></td><td></td></tr>
     <tr id=3D"end" bgcolor=3D"gray"><th colspan=3D"5" =
align=3D"center">&nbsp;End of changes. 120 change =
blocks.&nbsp;</th></tr>
     <tr class=3D"stats"><td></td><th><i>455 lines changed or =
deleted</i></th><th><i> </i></th><th><i>506 lines changed or =
added</i></th><td></td></tr>
     <tr><td colspan=3D"5" align=3D"center" class=3D"small"><br>This =
html diff was produced by rfcdiff 1.47. The latest version is available =
from <a =
href=3D"http://www.tools.ietf.org/tools/rfcdiff/">http://tools.ietf.org/to=
ols/rfcdiff/</a> </td></tr>
   </tbody></table>
  =20
  =20
</body></html>=

--Boundary_(ID_Wq1XeBIaw82Bwu0++WUYSg)--


From nobody Sun Apr 28 17:07:06 2019
Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 31FC1120121 for <dnssd@ietfa.amsl.com>; Sun, 28 Apr 2019 17:07:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level: 
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 MOd-oo-ULJc0 for <dnssd@ietfa.amsl.com>; Sun, 28 Apr 2019 17:07:01 -0700 (PDT)
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) (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 80BFA12004C for <dnssd@ietf.org>; Sun, 28 Apr 2019 17:07:01 -0700 (PDT)
Received: by mail-lj1-x22c.google.com with SMTP id y8so1321250ljd.3 for <dnssd@ietf.org>; Sun, 28 Apr 2019 17:07:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;  h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vxoDqj4UKenebMbzliyVqa59HFxvLIiam0Fzc8FgT8Q=; b=Vsn4VfXLFh77my7G4drVajtQdr3rUEmvu6xpWdf6vlgtiwpLzZacbfmkV+jVy+WRk7 7huFGpJBvOcLgwlkYh8ehqAUsyL4boPANUv2aoX1yOLwmMPxFif5NRjnfvzLhGMtqtzR m1LGQkUn+z6y7FXQzrSHNUPKSuHhqxVr3JbZ/70Fb1im/GwDJ8PAEoRAtN2l/i+XiJNZ QpF5uDr2gvVxoccvxZtCuk+OAcNmq9WlpaD/1K5v3HOv8TM4fzkfyw/yevjIr7Ns15u/ Zm5I62bqGghUKCP+ftKI4xdTYOfb+hUlqhGdpKl/FtxXju0aZnZlDrPTWYAEib1UgYHE mx0A==
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=vxoDqj4UKenebMbzliyVqa59HFxvLIiam0Fzc8FgT8Q=; b=kEeuS9HK8k/Un3b4AUIPann/Yc7XwdrwTWgCdRal+q6PvAETVpNER8x7NtGjlqRxLt ZYUTrN3mQHpyFtxu4HhkNvkz2I0QR9iRMfj7naVWXKchF+GCW/k2jSV82IqmHv4B951N kr/ylD5ekv2i+KQ453RR0CkVclNaxf4s+MfRKLqeAhobnpK7p1qDDpfkcp9jUbA3iGHY EK1HXJwezIIZYm9opHjORwZt54ygLrA/76w5OZjcz1Rqx0rqdGTI3lYig0sbryV2P/hM loMF2D4tFBp3PqmFCh+pIEt0XidlhuC7O1l32Ya6lllmTfBrB/ir3WOWo6Uw8tqFWCXC 2CXg==
X-Gm-Message-State: APjAAAXT7uLGgtoACL8ompW4ZpF8+wGJSfW4xFKMUvmgRsDqO/JjbZNq Bfg2k3dXdLmt2lYdBnLPbo3w7tr8D2CX1+ejb+gl9zGG
X-Google-Smtp-Source: APXvYqyEyUVuEIakIihmcytV9+H2r0a+doEsavkGFJC36Zt/TxWVFYM1dIVS9is6B3P9TLFzPQd+xjNIJtuyxb2WFoI=
X-Received: by 2002:a2e:8556:: with SMTP id u22mr4324471ljj.120.1556496419530;  Sun, 28 Apr 2019 17:06:59 -0700 (PDT)
MIME-Version: 1.0
References: <CAPDSy+6S5XzmBvAB-1EEoL+2UyZFtJBQ8KwXd2gRVGrwCzjK7g@mail.gmail.com> <19C8C2DA-8B57-44B2-9457-DCB395D95D62@apple.com>
In-Reply-To: <19C8C2DA-8B57-44B2-9457-DCB395D95D62@apple.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Sun, 28 Apr 2019 17:06:48 -0700
Message-ID: <CAPDSy+4eSK1Sx3ssckj1AdX0zvYacLKmbWHO0cppoCG7CiYyHg@mail.gmail.com>
To: Stuart Cheshire <cheshire=40apple.com@dmarc.ietf.org>
Cc: DNSSD <dnssd@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000002e2c430587a01061"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/t4c8OIoFcFtmfaf4SY-WS1yZ71Y>
Subject: Re: [dnssd] WGLC for draft-ietf-dnssd-push
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 29 Apr 2019 00:07:04 -0000

--0000000000002e2c430587a01061
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thank you Stuart.

To give working group members time to review this diff and your email, we
are extending this WGLC by a week, until 2019-05-06.

For future reference, you can use rfcdiff with published draft names in the
URL:
https://tools.ietf.org//rfcdiff?url1=3Ddraft-ietf-dnssd-push-16&url2=3Ddraf=
t-ietf-dnssd-push-19

Speaking with WG chair hat off, I personally do not see any problem with
these changes and support publication.

Thanks,
David

On Thu, Apr 25, 2019 at 10:13 PM Stuart Cheshire <cheshire=3D
40apple.com@dmarc.ietf.org> wrote:

> On 15 Apr 2019, at 10:07, David Schinazi <dschinazi.ietf@gmail.com> wrote=
:
>
> > This email starts another Working Group Last Call (WGLC) for
> draft-ietf-dnssd-push, which will last for two weeks until 2019-04-29. As=
 a
> reminder, this document has already passed WGLC but some slight changes t=
o
> the document warranted another WGLC.
>
> Thank you David.
>
> I have attached an HTML file of the output from <
> https://tools.ietf.org/rfcdiff> comparing draft-ietf-dnssd-push-16 with
> draft-ietf-dnssd-push-19.
>
> There are a variety of minor textual changes, such as replacing reference=
s
> to draft-ietf-dnsop-session-signal with references to RFC 8490, now that
> this document is published.
>
> In terms of substantive changes, there are two:
>
> 1. DNS Push Notification RECONFIRM
>
> We realized that there is no useful response to a RECONFIRM request. We
> changed RECONFIRM to be a unidirectional DSO message, and that results in
> the deletion of the entire =E2=80=9CRECONFIRM Response=E2=80=9D section. =
This simplifies
> both code, and the document.
>
> 2. DNS Push Notification Updates
>
> Previously, Tom Pusateri and I thought that borrowing the DNS Update
> encoding made sense. That was before DSO (RFC 8490).
>
> When implementing the current specification of DNS Push Notifications ove=
r
> DSO, Ted Lemon discovered that it has no way to express the DNS CLASS of
> changes.
>
> We need to address the problem Ted Lemon discovered, and now that DNS Pus=
h
> uses DSO TLV encoding instead of traditional DNS messages, the incentive =
to
> follow strictly the existing DNS Update encoding has disappeared.
>
> To address this issue, we adopted a new, simpler, way of expressing
> changes. It=E2=80=99s broadly similar, but simpler.
>
> Please take a look at these changes and let us know if you see any
> problems.
>
> And if you *don=E2=80=99t* see any problems with these changes, please re=
spond
> saying that too.
>
> Stuart Cheshire
>
> _______________________________________________
> dnssd mailing list
> dnssd@ietf.org
> https://www.ietf.org/mailman/listinfo/dnssd
>

--0000000000002e2c430587a01061
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Thank you Stuart.<div><br></div><div>To g=
ive working group members time to review this diff and your email, we are e=
xtending this WGLC by a week, until 2019-05-06.</div><div><br></div><div>Fo=
r future reference, you can use rfcdiff with published draft names in the U=
RL:</div><div><a href=3D"https://tools.ietf.org//rfcdiff?url1=3Ddraft-ietf-=
dnssd-push-16&amp;url2=3Ddraft-ietf-dnssd-push-19">https://tools.ietf.org//=
rfcdiff?url1=3Ddraft-ietf-dnssd-push-16&amp;url2=3Ddraft-ietf-dnssd-push-19=
</a></div><div><br></div><div>Speaking with WG chair hat off, I personally =
do not see any problem with these changes and support publication.</div><di=
v><br></div><div>Thanks,</div><div>David</div><div></div></div></div><br><d=
iv class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Apr =
25, 2019 at 10:13 PM Stuart Cheshire &lt;cheshire=3D<a href=3D"mailto:40app=
le.com@dmarc.ietf.org">40apple.com@dmarc.ietf.org</a>&gt; wrote:<br></div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex">On 15 Apr 2019, at 10:07, =
David Schinazi &lt;<a href=3D"mailto:dschinazi.ietf@gmail.com" target=3D"_b=
lank">dschinazi.ietf@gmail.com</a>&gt; wrote:<br>
<br>
&gt; This email starts another Working Group Last Call (WGLC) for draft-iet=
f-dnssd-push, which will last for two weeks until 2019-04-29. As a reminder=
, this document has already passed WGLC but some slight changes to the docu=
ment warranted another WGLC.<br>
<br>
Thank you David.<br>
<br>
I have attached an HTML file of the output from &lt;<a href=3D"https://tool=
s.ietf.org/rfcdiff" rel=3D"noreferrer" target=3D"_blank">https://tools.ietf=
.org/rfcdiff</a>&gt; comparing draft-ietf-dnssd-push-16 with draft-ietf-dns=
sd-push-19.<br>
<br>
There are a variety of minor textual changes, such as replacing references =
to draft-ietf-dnsop-session-signal with references to RFC 8490, now that th=
is document is published.<br>
<br>
In terms of substantive changes, there are two:<br>
<br>
1. DNS Push Notification RECONFIRM<br>
<br>
We realized that there is no useful response to a RECONFIRM request. We cha=
nged RECONFIRM to be a unidirectional DSO message, and that results in the =
deletion of the entire =E2=80=9CRECONFIRM Response=E2=80=9D section. This s=
implifies both code, and the document.<br>
<br>
2. DNS Push Notification Updates<br>
<br>
Previously, Tom Pusateri and I thought that borrowing the DNS Update encodi=
ng made sense. That was before DSO (RFC 8490).<br>
<br>
When implementing the current specification of DNS Push Notifications over =
DSO, Ted Lemon discovered that it has no way to express the DNS CLASS of ch=
anges.<br>
<br>
We need to address the problem Ted Lemon discovered, and now that DNS Push =
uses DSO TLV encoding instead of traditional DNS messages, the incentive to=
 follow strictly the existing DNS Update encoding has disappeared.<br>
<br>
To address this issue, we adopted a new, simpler, way of expressing changes=
. It=E2=80=99s broadly similar, but simpler.<br>
<br>
Please take a look at these changes and let us know if you see any problems=
.<br>
<br>
And if you *don=E2=80=99t* see any problems with these changes, please resp=
ond saying that too.<br>
<br>
Stuart Cheshire<br>
<br>
_______________________________________________<br>
dnssd mailing list<br>
<a href=3D"mailto:dnssd@ietf.org" target=3D"_blank">dnssd@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/dnssd" rel=3D"noreferrer" =
target=3D"_blank">https://www.ietf.org/mailman/listinfo/dnssd</a><br>
</blockquote></div>

--0000000000002e2c430587a01061--


From nobody Mon Apr 29 08:38:55 2019
Return-Path: <jkomissa@cisco.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 79D841201BE for <dnssd@ietfa.amsl.com>; Mon, 29 Apr 2019 08:38:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.499
X-Spam-Level: 
X-Spam-Status: No, score=-14.499 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=SSiRImKl; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=GfyNzFPP
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 5xcSyCJ2Vh6C for <dnssd@ietfa.amsl.com>; Mon, 29 Apr 2019 08:38:51 -0700 (PDT)
Received: from alln-iport-6.cisco.com (alln-iport-6.cisco.com [173.37.142.93]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9FAFC120162 for <dnssd@ietf.org>; Mon, 29 Apr 2019 08:38:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=13397; q=dns/txt; s=iport; t=1556552331; x=1557761931; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=lyTouNkvFLKyjTFUH7u9GVmk5T4dQK9KRnfKcTctslw=; b=SSiRImKlYJreDzUELJ1hnF4ZkkE2flY6CItz/ouxwj0VEiRcKOm52feF /M9xpD2JPB78PMpTO5P20Td91+W38SJJgOW48o8ab99+EN22jcR85gmPh cZeXhHJRvNMOnuM9nFA/0RQZqsPTSMypbVzkDZiICFBpPh6xj9ojQq+Xv U=;
IronPort-PHdr: =?us-ascii?q?9a23=3ATpoudRMWOIEgpI07kNQl6mtXPHoupqn0MwgJ65?= =?us-ascii?q?Eul7NJdOG58o//OFDEu6w/l0fHCIPc7f8My/HbtaztQyQh2d6AqzhDFf4ETB?= =?us-ascii?q?oZkYMTlg0kDtSCDBj5L/nvbjchFexJVURu+DewNk0GUMs=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0AGAABVGcdc/5tdJa1mGQEBAQEBAQE?= =?us-ascii?q?BAQEBAQcBAQEBAQGBUQQBAQEBAQsBgQ4vUANoVSAECygKhAaDRwOEUoo7gjI?= =?us-ascii?q?liT6JGIRMgS4UgRADVA4BARgBDAiDCYE3AheGGyM0CQ4BAwEBBAEBAgECbRw?= =?us-ascii?q?MhUoBAQEDAQEBEBEdAQEsCwEECwIBCA4DAwECKAMCAgIfBgsUCQgCBAENBSK?= =?us-ascii?q?DAAGBHUwDDQ8BDqJ2AoE1iF9xgS+CeQEBBYE2AoEPgjUNC4IOAwaBMgGLSRe?= =?us-ascii?q?BQD+BEScME4JMPoIaRwEBAgEXgRAEARIBPw0JglQygiaNPIREh3eMSzkJAoI?= =?us-ascii?q?JhhGDb4Rmg00bgg2GNIxmizYJToEehSOBSIxEAgQCBAUCDgEBBYFPOGVxcBU?= =?us-ascii?q?7KgGCQYFrJINvhRSFP3IBgSiQPw8XgQsBgSABAQ?=
X-IronPort-AV: E=Sophos;i="5.60,409,1549929600";  d="scan'208,217";a="268832618"
Received: from rcdn-core-4.cisco.com ([173.37.93.155]) by alln-iport-6.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 29 Apr 2019 15:38:50 +0000
Received: from XCH-RCD-017.cisco.com (xch-rcd-017.cisco.com [173.37.102.27]) by rcdn-core-4.cisco.com (8.15.2/8.15.2) with ESMTPS id x3TFcoqk020566 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Mon, 29 Apr 2019 15:38:50 GMT
Received: from xhs-aln-003.cisco.com (173.37.135.120) by XCH-RCD-017.cisco.com (173.37.102.27) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 29 Apr 2019 10:38:49 -0500
Received: from xhs-rcd-001.cisco.com (173.37.227.246) by xhs-aln-003.cisco.com (173.37.135.120) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 29 Apr 2019 10:38:49 -0500
Received: from NAM01-BY2-obe.outbound.protection.outlook.com (72.163.14.9) by xhs-rcd-001.cisco.com (173.37.227.246) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 29 Apr 2019 10:38:49 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com;  s=selector1-cisco-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lyTouNkvFLKyjTFUH7u9GVmk5T4dQK9KRnfKcTctslw=; b=GfyNzFPPoN21ev1P2OR3VZZtzTLaRiAUEEHVrKCTulIgi5duoQZ7baqbGLmGrwP+qAqNkl9KZ9esDGOg4mku1hPmKKJwEuZAJNPclAM1LtNEtbNBpFXAetQvL78DbZXRda6qR0yrHcSWdHD4BQliODMfe0bjGV6pdfLzoSSn68w=
Received: from BY5PR11MB4037.namprd11.prod.outlook.com (10.255.161.210) by BY5PR11MB4021.namprd11.prod.outlook.com (10.255.161.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.14; Mon, 29 Apr 2019 15:38:48 +0000
Received: from BY5PR11MB4037.namprd11.prod.outlook.com ([fe80::608b:c4db:ca21:b0ae]) by BY5PR11MB4037.namprd11.prod.outlook.com ([fe80::608b:c4db:ca21:b0ae%4]) with mapi id 15.20.1835.016; Mon, 29 Apr 2019 15:38:48 +0000
From: "Jan Komissar (jkomissa)" <jkomissa@cisco.com>
To: David Schinazi <dschinazi.ietf@gmail.com>, Stuart Cheshire <cheshire=40apple.com@dmarc.ietf.org>
CC: DNSSD <dnssd@ietf.org>
Thread-Topic: [dnssd] WGLC for draft-ietf-dnssd-push
Thread-Index: AQHU862+HHNXiouiakCm0k7H6pvGS6ZN9jqAgARhSgCAAMFWAA==
Date: Mon, 29 Apr 2019 15:38:48 +0000
Message-ID: <9C4A5433-4490-43B3-B82B-EFFD52FF5AB4@cisco.com>
References: <CAPDSy+6S5XzmBvAB-1EEoL+2UyZFtJBQ8KwXd2gRVGrwCzjK7g@mail.gmail.com> <19C8C2DA-8B57-44B2-9457-DCB395D95D62@apple.com> <CAPDSy+4eSK1Sx3ssckj1AdX0zvYacLKmbWHO0cppoCG7CiYyHg@mail.gmail.com>
In-Reply-To: <CAPDSy+4eSK1Sx3ssckj1AdX0zvYacLKmbWHO0cppoCG7CiYyHg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.18.0.190414
authentication-results: spf=none (sender IP is ) smtp.mailfrom=jkomissa@cisco.com; 
x-originating-ip: [173.38.117.73]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 68689417-a260-4c76-ae92-08d6ccb8c5e2
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020); SRVR:BY5PR11MB4021; 
x-ms-traffictypediagnostic: BY5PR11MB4021:
x-ms-exchange-purlcount: 5
x-microsoft-antispam-prvs: <BY5PR11MB4021208AF7A5504F97B5A0D0CB390@BY5PR11MB4021.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0022134A87
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(136003)(396003)(366004)(39860400002)(376002)(199004)(189003)(76176011)(64756008)(66446008)(76116006)(66476007)(66556008)(66946007)(5024004)(236005)(6116002)(3846002)(5660300002)(26005)(14444005)(73956011)(58126008)(91956017)(316002)(110136005)(229853002)(256004)(25786009)(102836004)(99286004)(86362001)(7736002)(68736007)(53546011)(6506007)(478600001)(81156014)(81166006)(97736004)(82746002)(66066001)(4326008)(8676002)(6436002)(446003)(11346002)(476003)(2616005)(83716004)(6512007)(71200400001)(2906002)(53936002)(71190400001)(966005)(186003)(14454004)(486006)(6486002)(54896002)(6306002)(33656002)(8936002)(6246003)(36756003)(606006); DIR:OUT; SFP:1101; SCL:1; SRVR:BY5PR11MB4021; H:BY5PR11MB4037.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: MzmimNadmpJOMpSrMNxMq+FJzbFx1deJrIaodgx50S36QuuOl3Cwuis5Wi/FNs2ut/Xid9hi2uHZK8A/KRuYaivSsTCwXq/r0lLCZSCdviRFMEDT1G9lzA90ED2atbeJUC8eD3EjXZtXOMzoy2E2j0hizeO0esjYZw0rNr4MRj2nxpIQKhNaiJ/kNWONboo3jGnH8ez27pQgwmI6PqN1v512fiU7occ8SrpMoOiYGiAla+6QZTN5HerILRuV5IWRJKnMrv0hlGPikOs80is9sclbNxNhgEjw1fWOJFRvBTzHk4AGIw9CWljyvz2N7uk34rIYWAZiM3OOnU57VKJeJJqgRDLsZQ3fKvBMrIPo0IRjPGmngvYX8iiLf1VgWFQU696dt+nK02SjoQkGshWRHwf+d4U3AS2l/lQ/j+LhYLg=
Content-Type: multipart/alternative; boundary="_000_9C4A5433449043B3B82BEFFD52FF5AB4ciscocom_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 68689417-a260-4c76-ae92-08d6ccb8c5e2
X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2019 15:38:48.3939 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4021
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.37.102.27, xch-rcd-017.cisco.com
X-Outbound-Node: rcdn-core-4.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/dRXtmn1DsNJFSAPiK45Pfw77UAg>
Subject: Re: [dnssd] WGLC for draft-ietf-dnssd-push
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 29 Apr 2019 15:38:53 -0000

--_000_9C4A5433449043B3B82BEFFD52FF5AB4ciscocom_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

VGhpcyBkcmFmdCBsb29rcyBmaW5lIHRvIG1lLg0KDQpKYW4uDQoNCkZyb206IGRuc3NkIDxkbnNz
ZC1ib3VuY2VzQGlldGYub3JnPiBvbiBiZWhhbGYgb2YgRGF2aWQgU2NoaW5hemkgPGRzY2hpbmF6
aS5pZXRmQGdtYWlsLmNvbT4NCkRhdGU6IFN1bmRheSwgQXByaWwgMjgsIDIwMTkgYXQgODowNyBQ
TQ0KVG86IFN0dWFydCBDaGVzaGlyZSA8Y2hlc2hpcmU9NDBhcHBsZS5jb21AZG1hcmMuaWV0Zi5v
cmc+DQpDYzogRE5TU0QgPGRuc3NkQGlldGYub3JnPg0KU3ViamVjdDogUmU6IFtkbnNzZF0gV0dM
QyBmb3IgZHJhZnQtaWV0Zi1kbnNzZC1wdXNoDQoNClRoYW5rIHlvdSBTdHVhcnQuDQoNClRvIGdp
dmUgd29ya2luZyBncm91cCBtZW1iZXJzIHRpbWUgdG8gcmV2aWV3IHRoaXMgZGlmZiBhbmQgeW91
ciBlbWFpbCwgd2UgYXJlIGV4dGVuZGluZyB0aGlzIFdHTEMgYnkgYSB3ZWVrLCB1bnRpbCAyMDE5
LTA1LTA2Lg0KDQpGb3IgZnV0dXJlIHJlZmVyZW5jZSwgeW91IGNhbiB1c2UgcmZjZGlmZiB3aXRo
IHB1Ymxpc2hlZCBkcmFmdCBuYW1lcyBpbiB0aGUgVVJMOg0KaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy8vcmZjZGlmZj91cmwxPWRyYWZ0LWlldGYtZG5zc2QtcHVzaC0xNiZ1cmwyPWRyYWZ0LWlldGYt
ZG5zc2QtcHVzaC0xOTxodHRwczovL3Rvb2xzLmlldGYub3JnL3JmY2RpZmY/dXJsMT1kcmFmdC1p
ZXRmLWRuc3NkLXB1c2gtMTYmdXJsMj1kcmFmdC1pZXRmLWRuc3NkLXB1c2gtMTk+DQoNClNwZWFr
aW5nIHdpdGggV0cgY2hhaXIgaGF0IG9mZiwgSSBwZXJzb25hbGx5IGRvIG5vdCBzZWUgYW55IHBy
b2JsZW0gd2l0aCB0aGVzZSBjaGFuZ2VzIGFuZCBzdXBwb3J0IHB1YmxpY2F0aW9uLg0KDQpUaGFu
a3MsDQpEYXZpZA0KDQpPbiBUaHUsIEFwciAyNSwgMjAxOSBhdCAxMDoxMyBQTSBTdHVhcnQgQ2hl
c2hpcmUgPGNoZXNoaXJlPTQwYXBwbGUuY29tQGRtYXJjLmlldGYub3JnPG1haWx0bzo0MGFwcGxl
LmNvbUBkbWFyYy5pZXRmLm9yZz4+IHdyb3RlOg0KT24gMTUgQXByIDIwMTksIGF0IDEwOjA3LCBE
YXZpZCBTY2hpbmF6aSA8ZHNjaGluYXppLmlldGZAZ21haWwuY29tPG1haWx0bzpkc2NoaW5hemku
aWV0ZkBnbWFpbC5jb20+PiB3cm90ZToNCg0KPiBUaGlzIGVtYWlsIHN0YXJ0cyBhbm90aGVyIFdv
cmtpbmcgR3JvdXAgTGFzdCBDYWxsIChXR0xDKSBmb3IgZHJhZnQtaWV0Zi1kbnNzZC1wdXNoLCB3
aGljaCB3aWxsIGxhc3QgZm9yIHR3byB3ZWVrcyB1bnRpbCAyMDE5LTA0LTI5LiBBcyBhIHJlbWlu
ZGVyLCB0aGlzIGRvY3VtZW50IGhhcyBhbHJlYWR5IHBhc3NlZCBXR0xDIGJ1dCBzb21lIHNsaWdo
dCBjaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCB3YXJyYW50ZWQgYW5vdGhlciBXR0xDLg0KDQpUaGFu
ayB5b3UgRGF2aWQuDQoNCkkgaGF2ZSBhdHRhY2hlZCBhbiBIVE1MIGZpbGUgb2YgdGhlIG91dHB1
dCBmcm9tIDxodHRwczovL3Rvb2xzLmlldGYuLm9yZy9yZmNkaWZmPGh0dHBzOi8vdG9vbHMuaWV0
Zi5vcmcvcmZjZGlmZj4+IGNvbXBhcmluZyBkcmFmdC1pZXRmLWRuc3NkLXB1c2gtMTYgd2l0aCBk
cmFmdC1pZXRmLWRuc3NkLXB1c2gtMTkuDQoNClRoZXJlIGFyZSBhIHZhcmlldHkgb2YgbWlub3Ig
dGV4dHVhbCBjaGFuZ2VzLCBzdWNoIGFzIHJlcGxhY2luZyByZWZlcmVuY2VzIHRvIGRyYWZ0LWll
dGYtZG5zb3Atc2Vzc2lvbi1zaWduYWwgd2l0aCByZWZlcmVuY2VzIHRvIFJGQyA4NDkwLCBub3cg
dGhhdCB0aGlzIGRvY3VtZW50IGlzIHB1Ymxpc2hlZC4NCg0KSW4gdGVybXMgb2Ygc3Vic3RhbnRp
dmUgY2hhbmdlcywgdGhlcmUgYXJlIHR3bzoNCg0KMS4gRE5TIFB1c2ggTm90aWZpY2F0aW9uIFJF
Q09ORklSTQ0KDQpXZSByZWFsaXplZCB0aGF0IHRoZXJlIGlzIG5vIHVzZWZ1bCByZXNwb25zZSB0
byBhIFJFQ09ORklSTSByZXF1ZXN0LiBXZSBjaGFuZ2VkIFJFQ09ORklSTSB0byBiZSBhIHVuaWRp
cmVjdGlvbmFsIERTTyBtZXNzYWdlLCBhbmQgdGhhdCByZXN1bHRzIGluIHRoZSBkZWxldGlvbiBv
ZiB0aGUgZW50aXJlIOKAnFJFQ09ORklSTSBSZXNwb25zZeKAnSBzZWN0aW9uLiBUaGlzIHNpbXBs
aWZpZXMgYm90aCBjb2RlLCBhbmQgdGhlIGRvY3VtZW50Lg0KDQoyLiBETlMgUHVzaCBOb3RpZmlj
YXRpb24gVXBkYXRlcw0KDQpQcmV2aW91c2x5LCBUb20gUHVzYXRlcmkgYW5kIEkgdGhvdWdodCB0
aGF0IGJvcnJvd2luZyB0aGUgRE5TIFVwZGF0ZSBlbmNvZGluZyBtYWRlIHNlbnNlLiBUaGF0IHdh
cyBiZWZvcmUgRFNPIChSRkMgODQ5MCkuDQoNCldoZW4gaW1wbGVtZW50aW5nIHRoZSBjdXJyZW50
IHNwZWNpZmljYXRpb24gb2YgRE5TIFB1c2ggTm90aWZpY2F0aW9ucyBvdmVyIERTTywgVGVkIExl
bW9uIGRpc2NvdmVyZWQgdGhhdCBpdCBoYXMgbm8gd2F5IHRvIGV4cHJlc3MgdGhlIEROUyBDTEFT
UyBvZiBjaGFuZ2VzLg0KDQpXZSBuZWVkIHRvIGFkZHJlc3MgdGhlIHByb2JsZW0gVGVkIExlbW9u
IGRpc2NvdmVyZWQsIGFuZCBub3cgdGhhdCBETlMgUHVzaCB1c2VzIERTTyBUTFYgZW5jb2Rpbmcg
aW5zdGVhZCBvZiB0cmFkaXRpb25hbCBETlMgbWVzc2FnZXMsIHRoZSBpbmNlbnRpdmUgdG8gZm9s
bG93IHN0cmljdGx5IHRoZSBleGlzdGluZyBETlMgVXBkYXRlIGVuY29kaW5nIGhhcyBkaXNhcHBl
YXJlZC4NCg0KVG8gYWRkcmVzcyB0aGlzIGlzc3VlLCB3ZSBhZG9wdGVkIGEgbmV3LCBzaW1wbGVy
LCB3YXkgb2YgZXhwcmVzc2luZyBjaGFuZ2VzLi4gSXTigJlzIGJyb2FkbHkgc2ltaWxhciwgYnV0
IHNpbXBsZXIuDQoNClBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGVzZSBjaGFuZ2VzIGFuZCBsZXQg
dXMga25vdyBpZiB5b3Ugc2VlIGFueSBwcm9ibGVtcy4uDQoNCkFuZCBpZiB5b3UgKmRvbuKAmXQq
IHNlZSBhbnkgcHJvYmxlbXMgd2l0aCB0aGVzZSBjaGFuZ2VzLCBwbGVhc2UgcmVzcG9uZCBzYXlp
bmcgdGhhdCB0b28uDQoNClN0dWFydCBDaGVzaGlyZQ0KDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXw0KZG5zc2QgbWFpbGluZyBsaXN0DQpkbnNzZEBpZXRm
Lm9yZzxtYWlsdG86ZG5zc2RAaWV0Zi5vcmc+DQpodHRwczovL3d3dy5pZXRmLm9yZy9tYWlsbWFu
L2xpc3RpbmZvL2Ruc3NkDQo=

--_000_9C4A5433449043B3B82BEFFD52FF5AB4ciscocom_
Content-Type: text/html; charset="utf-8"
Content-ID: <1B69A4E657DCF842BB0263FEAFFECDDE@namprd11.prod.outlook.com>
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4
bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l
dGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQg
bWVkaXVtKSI+DQo8c3R5bGU+PCEtLQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFj
ZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2
IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToy
IDE1IDUgMiAyIDIgNCAzIDIgNDt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3Jt
YWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGluOw0KCW1hcmdpbi1i
b3R0b206LjAwMDFwdDsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJp
IixzYW5zLXNlcmlmO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXBy
aW9yaXR5Ojk5Ow0KCWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQph
OnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQNCgl7bXNvLXN0eWxlLXByaW9yaXR5
Ojk5Ow0KCWNvbG9yOnB1cnBsZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCnAubXNv
bm9ybWFsMCwgbGkubXNvbm9ybWFsMCwgZGl2Lm1zb25vcm1hbDANCgl7bXNvLXN0eWxlLW5hbWU6
bXNvbm9ybWFsOw0KCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOw0KCW1hcmdpbi1yaWdodDowaW47
DQoJbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6MGluOw0KCWZvbnQt
c2l6ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0Kc3Bhbi5F
bWFpbFN0eWxlMTgNCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1p
bHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJY29sb3I6d2luZG93dGV4dDt9DQouTXNvQ2hwRGVm
YXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsNCglmb250LXNpemU6MTAuMHB0O30N
CkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWluIDExLjBpbjsNCgltYXJnaW46MS4waW4g
MS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9u
MTt9DQotLT48L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9ImJsdWUi
IHZsaW5rPSJwdXJwbGUiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPlRoaXMgZHJhZnQgbG9va3MgZmluZSB0byBtZS48bzpwPjwvbzpwPjwvcD4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+SmFuLjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJz
cDs8L286cD48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNC
NUM0REYgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtjb2xvcjpibGFjayI+RnJvbTog
PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtjb2xvcjpibGFjayI+ZG5z
c2QgJmx0O2Ruc3NkLWJvdW5jZXNAaWV0Zi5vcmcmZ3Q7IG9uIGJlaGFsZiBvZiBEYXZpZCBTY2hp
bmF6aSAmbHQ7ZHNjaGluYXppLmlldGZAZ21haWwuY29tJmd0Ozxicj4NCjxiPkRhdGU6IDwvYj5T
dW5kYXksIEFwcmlsIDI4LCAyMDE5IGF0IDg6MDcgUE08YnI+DQo8Yj5UbzogPC9iPlN0dWFydCBD
aGVzaGlyZSAmbHQ7Y2hlc2hpcmU9NDBhcHBsZS5jb21AZG1hcmMuaWV0Zi5vcmcmZ3Q7PGJyPg0K
PGI+Q2M6IDwvYj5ETlNTRCAmbHQ7ZG5zc2RAaWV0Zi5vcmcmZ3Q7PGJyPg0KPGI+U3ViamVjdDog
PC9iPlJlOiBbZG5zc2RdIFdHTEMgZm9yIGRyYWZ0LWlldGYtZG5zc2QtcHVzaDxvOnA+PC9vOnA+
PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5i
c3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
PlRoYW5rIHlvdSBTdHVhcnQuIDxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+VG8gZ2l2ZSB3b3JraW5nIGdyb3VwIG1lbWJlcnMgdGltZSB0byByZXZpZXcgdGhp
cyBkaWZmIGFuZCB5b3VyIGVtYWlsLCB3ZSBhcmUgZXh0ZW5kaW5nIHRoaXMgV0dMQyBieSBhIHdl
ZWssIHVudGlsIDIwMTktMDUtMDYuPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiPkZvciBmdXR1cmUgcmVmZXJlbmNlLCB5b3UgY2FuIHVzZSByZmNk
aWZmIHdpdGggcHVibGlzaGVkIGRyYWZ0IG5hbWVzIGluIHRoZSBVUkw6PG86cD48L286cD48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YSBocmVmPSJodHRwczovL3Rv
b2xzLmlldGYub3JnL3JmY2RpZmY/dXJsMT1kcmFmdC1pZXRmLWRuc3NkLXB1c2gtMTYmYW1wO3Vy
bDI9ZHJhZnQtaWV0Zi1kbnNzZC1wdXNoLTE5Ij5odHRwczovL3Rvb2xzLmlldGYub3JnLy9yZmNk
aWZmP3VybDE9ZHJhZnQtaWV0Zi1kbnNzZC1wdXNoLTE2JmFtcDt1cmwyPWRyYWZ0LWlldGYtZG5z
c2QtcHVzaC0xOTwvYT48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+U3BlYWtpbmcgd2l0aCBXRyBjaGFpciBoYXQgb2ZmLCBJIHBlcnNvbmFsbHkg
ZG8gbm90IHNlZSBhbnkgcHJvYmxlbSB3aXRoIHRoZXNlIGNoYW5nZXMgYW5kIHN1cHBvcnQgcHVi
bGljYXRpb24uPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPlRoYW5rcyw8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiPkRhdmlkPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+T24gVGh1LCBBcHIgMjUsIDIwMTkgYXQgMTA6MTMgUE0gU3R1
YXJ0IENoZXNoaXJlICZsdDtjaGVzaGlyZT08YSBocmVmPSJtYWlsdG86NDBhcHBsZS5jb21AZG1h
cmMuaWV0Zi5vcmciPjQwYXBwbGUuY29tQGRtYXJjLmlldGYub3JnPC9hPiZndDsgd3JvdGU6PG86
cD48L286cD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3Jk
ZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFy
Z2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5P
biAxNSBBcHIgMjAxOSwgYXQgMTA6MDcsIERhdmlkIFNjaGluYXppICZsdDs8YSBocmVmPSJtYWls
dG86ZHNjaGluYXppLmlldGZAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+ZHNjaGluYXppLmll
dGZAZ21haWwuY29tPC9hPiZndDsgd3JvdGU6PGJyPg0KPGJyPg0KJmd0OyBUaGlzIGVtYWlsIHN0
YXJ0cyBhbm90aGVyIFdvcmtpbmcgR3JvdXAgTGFzdCBDYWxsIChXR0xDKSBmb3IgZHJhZnQtaWV0
Zi1kbnNzZC1wdXNoLCB3aGljaCB3aWxsIGxhc3QgZm9yIHR3byB3ZWVrcyB1bnRpbCAyMDE5LTA0
LTI5LiBBcyBhIHJlbWluZGVyLCB0aGlzIGRvY3VtZW50IGhhcyBhbHJlYWR5IHBhc3NlZCBXR0xD
IGJ1dCBzb21lIHNsaWdodCBjaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCB3YXJyYW50ZWQgYW5vdGhl
ciBXR0xDLjxicj4NCjxicj4NClRoYW5rIHlvdSBEYXZpZC48YnI+DQo8YnI+DQpJIGhhdmUgYXR0
YWNoZWQgYW4gSFRNTCBmaWxlIG9mIHRoZSBvdXRwdXQgZnJvbSAmbHQ7PGEgaHJlZj0iaHR0cHM6
Ly90b29scy5pZXRmLm9yZy9yZmNkaWZmIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly90b29scy5p
ZXRmLi5vcmcvcmZjZGlmZjwvYT4mZ3Q7IGNvbXBhcmluZyBkcmFmdC1pZXRmLWRuc3NkLXB1c2gt
MTYgd2l0aCBkcmFmdC1pZXRmLWRuc3NkLXB1c2gtMTkuPGJyPg0KPGJyPg0KVGhlcmUgYXJlIGEg
dmFyaWV0eSBvZiBtaW5vciB0ZXh0dWFsIGNoYW5nZXMsIHN1Y2ggYXMgcmVwbGFjaW5nIHJlZmVy
ZW5jZXMgdG8gZHJhZnQtaWV0Zi1kbnNvcC1zZXNzaW9uLXNpZ25hbCB3aXRoIHJlZmVyZW5jZXMg
dG8gUkZDIDg0OTAsIG5vdyB0aGF0IHRoaXMgZG9jdW1lbnQgaXMgcHVibGlzaGVkLjxicj4NCjxi
cj4NCkluIHRlcm1zIG9mIHN1YnN0YW50aXZlIGNoYW5nZXMsIHRoZXJlIGFyZSB0d286PGJyPg0K
PGJyPg0KMS4gRE5TIFB1c2ggTm90aWZpY2F0aW9uIFJFQ09ORklSTTxicj4NCjxicj4NCldlIHJl
YWxpemVkIHRoYXQgdGhlcmUgaXMgbm8gdXNlZnVsIHJlc3BvbnNlIHRvIGEgUkVDT05GSVJNIHJl
cXVlc3QuIFdlIGNoYW5nZWQgUkVDT05GSVJNIHRvIGJlIGEgdW5pZGlyZWN0aW9uYWwgRFNPIG1l
c3NhZ2UsIGFuZCB0aGF0IHJlc3VsdHMgaW4gdGhlIGRlbGV0aW9uIG9mIHRoZSBlbnRpcmUg4oCc
UkVDT05GSVJNIFJlc3BvbnNl4oCdIHNlY3Rpb24uIFRoaXMgc2ltcGxpZmllcyBib3RoIGNvZGUs
IGFuZCB0aGUgZG9jdW1lbnQuPGJyPg0KPGJyPg0KMi4gRE5TIFB1c2ggTm90aWZpY2F0aW9uIFVw
ZGF0ZXM8YnI+DQo8YnI+DQpQcmV2aW91c2x5LCBUb20gUHVzYXRlcmkgYW5kIEkgdGhvdWdodCB0
aGF0IGJvcnJvd2luZyB0aGUgRE5TIFVwZGF0ZSBlbmNvZGluZyBtYWRlIHNlbnNlLiBUaGF0IHdh
cyBiZWZvcmUgRFNPIChSRkMgODQ5MCkuPGJyPg0KPGJyPg0KV2hlbiBpbXBsZW1lbnRpbmcgdGhl
IGN1cnJlbnQgc3BlY2lmaWNhdGlvbiBvZiBETlMgUHVzaCBOb3RpZmljYXRpb25zIG92ZXIgRFNP
LCBUZWQgTGVtb24gZGlzY292ZXJlZCB0aGF0IGl0IGhhcyBubyB3YXkgdG8gZXhwcmVzcyB0aGUg
RE5TIENMQVNTIG9mIGNoYW5nZXMuPGJyPg0KPGJyPg0KV2UgbmVlZCB0byBhZGRyZXNzIHRoZSBw
cm9ibGVtIFRlZCBMZW1vbiBkaXNjb3ZlcmVkLCBhbmQgbm93IHRoYXQgRE5TIFB1c2ggdXNlcyBE
U08gVExWIGVuY29kaW5nIGluc3RlYWQgb2YgdHJhZGl0aW9uYWwgRE5TIG1lc3NhZ2VzLCB0aGUg
aW5jZW50aXZlIHRvIGZvbGxvdyBzdHJpY3RseSB0aGUgZXhpc3RpbmcgRE5TIFVwZGF0ZSBlbmNv
ZGluZyBoYXMgZGlzYXBwZWFyZWQuPGJyPg0KPGJyPg0KVG8gYWRkcmVzcyB0aGlzIGlzc3VlLCB3
ZSBhZG9wdGVkIGEgbmV3LCBzaW1wbGVyLCB3YXkgb2YgZXhwcmVzc2luZyBjaGFuZ2VzLi4gSXTi
gJlzIGJyb2FkbHkgc2ltaWxhciwgYnV0IHNpbXBsZXIuPGJyPg0KPGJyPg0KUGxlYXNlIHRha2Ug
YSBsb29rIGF0IHRoZXNlIGNoYW5nZXMgYW5kIGxldCB1cyBrbm93IGlmIHlvdSBzZWUgYW55IHBy
b2JsZW1zLi48YnI+DQo8YnI+DQpBbmQgaWYgeW91ICpkb27igJl0KiBzZWUgYW55IHByb2JsZW1z
IHdpdGggdGhlc2UgY2hhbmdlcywgcGxlYXNlIHJlc3BvbmQgc2F5aW5nIHRoYXQgdG9vLjxicj4N
Cjxicj4NClN0dWFydCBDaGVzaGlyZTxicj4NCjxicj4NCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fPGJyPg0KZG5zc2QgbWFpbGluZyBsaXN0PGJyPg0KPGEg
aHJlZj0ibWFpbHRvOmRuc3NkQGlldGYub3JnIiB0YXJnZXQ9Il9ibGFuayI+ZG5zc2RAaWV0Zi5v
cmc8L2E+PGJyPg0KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5m
by9kbnNzZCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlz
dGluZm8vZG5zc2Q8L2E+PG86cD48L286cD48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCjwv
ZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K

--_000_9C4A5433449043B3B82BEFFD52FF5AB4ciscocom_--

