<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-seemann-masque-connect-ip-qlog-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="CONNECT-IP qlog">qlog Definitions for CONNECT-IP</title>
    <seriesInfo name="Internet-Draft" value="draft-seemann-masque-connect-ip-qlog-00"/>
    <author fullname="Marten Seemann">
      <organization/>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="20"/>
    <area>Web and Internet Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>masque</keyword>
    <keyword>connect-ip</keyword>
    <keyword>qlog</keyword>
    <abstract>
      <?line 44?>

<t>This document defines qlog events for CONNECT-IP packet processing and
representations for its capsules, including the DNS and PREF64 configuration
extensions. It extends the HTTP event schema defined in the HTTP/3 qlog
document.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://marten-seemann.github.io/draft-seemann-masque-connect-ip-qlog/draft-seemann-masque-connect-ip-qlog.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-seemann-masque-connect-ip-qlog/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Multiplexed Application Substrate over QUIC Encryption Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/marten-seemann/draft-seemann-masque-connect-ip-qlog"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="intro">
      <name>Introduction</name>
      <t>CONNECT-IP (<xref target="CONNECT-IP"/>) uses capsules to exchange address assignments,
address requests, and routing information. <xref target="CONNECT-IP-DNS"/> defines
additional capsules for DNS and PREF64 configuration.</t>
      <t>This document defines how these capsules and IP packet processing are
represented in qlog (<xref target="QLOG-MAIN"/>). Packet events record forwarding decisions
for inputs from the peer and the local application, including rejected inputs
and generated ICMP responses. Capsule representations use the HTTP events
defined in <xref target="QLOG-HTTP"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The data types are defined using CDDL (<xref target="CDDL"/>). The <tt>uint8</tt>, <tt>uint16</tt>,
<tt>uint32</tt>, <tt>uint64</tt>, <tt>hexstring</tt>, and <tt>RawInfo</tt> types are defined in <xref target="QLOG-MAIN"/>.
<tt>ECN</tt> is defined in <xref target="QLOG-QUIC"/>.</t>
    </section>
    <section anchor="schema">
      <name>Event Schemas</name>
      <t>The schemas defined in <xref target="connect-ip-schema"/> and <xref target="dns-schema"/> extend the
<tt>http</tt> namespace defined in <xref target="QLOG-HTTP"/>. Implementations <bcp14>SHOULD</bcp14> include the
URIs of the schemas they use, together with the HTTP event schema URI, in the
trace's <tt>event_schemas</tt> field, as described in <xref section="8" sectionFormat="of" target="QLOG-MAIN"/>.</t>
      <section removeInRFC="true" anchor="draft-event-schema-identification">
        <name>Draft Event Schema Identification</name>
        <t>Until this document is published as an RFC, implementations <bcp14>MUST NOT</bcp14> use the
unversioned event schema URIs. Instead, they <bcp14>MUST</bcp14> append a hyphen and the
two-digit draft number to each extension identifier. For draft 00, the URIs are
<tt>urn:ietf:params:qlog:events:http#connect-ip-00</tt> and
<tt>urn:ietf:params:qlog:events:http#connect-ip-dns-00</tt>.</t>
      </section>
      <section anchor="common-encoding">
        <name>Capsule Encoding</name>
        <t>Capsule representations extend the <tt>$HTTPCapsule</tt> type socket defined in
<xref section="7.1" sectionFormat="of" target="QLOG-HTTP"/>.</t>
        <t>These representations are used in the <tt>capsule</tt> field of
<tt>http:capsule_created</tt> and <tt>http:capsule_parsed</tt> events. The event's <tt>stream_id</tt>
identifies the CONNECT-IP request stream, allowing multiple sessions and
application protocols to share a trace.</t>
        <t>Sequence fields preserve the order of entries in the capsule. Empty sequences
are represented by empty arrays. Integer fields contain their numeric values
without the variable-length integer encoding.</t>
        <t>In capsule representations, the optional <tt>raw</tt> field uses <tt>RawInfo</tt>. Its
<tt>length</tt> includes the capsule's Type, Length, and Value fields;
<tt>payload_length</tt> is the length of the Value field. Both exclude HTTP DATA
frame headers.</t>
      </section>
    </section>
    <section anchor="connect-ip-schema">
      <name>CONNECT-IP Schema</name>
      <t>This schema defines capsule representations and packet processing events for
<xref target="CONNECT-IP"/>. Its URI is <tt>urn:ietf:params:qlog:events:http#connect-ip</tt>.</t>
      <section anchor="capsules">
        <name>Capsules</name>
        <sourcecode type="cddl"><![CDATA[
ConnectIPCapsule = ConnectIPAddressAssignCapsule /
                   ConnectIPAddressRequestCapsule /
                   ConnectIPRouteAdvertisementCapsule

$HTTPCapsule /= ConnectIPCapsule
]]></sourcecode>
        <section anchor="address-assign">
          <name>ADDRESS_ASSIGN</name>
          <t><tt>ConnectIPAddressAssignCapsule</tt> represents the ADDRESS_ASSIGN capsule defined
in <xref section="4.7.1" sectionFormat="of" target="CONNECT-IP"/>. Each assigned address records its Request
ID and IP prefix.</t>
          <sourcecode type="cddl"><![CDATA[
ConnectIPAddressAssignCapsule = {
    capsule_type: "address_assign"
    assigned_addresses: [* ConnectIPAddress]
    ? raw: RawInfo
}

ConnectIPAddress = {
    request_id: uint64
    ip_prefix: IPPrefix
}
]]></sourcecode>
          <t>Unsolicited assignments retain Request ID 0. Refused assignments retain the
prefix <tt>0.0.0.0/32</tt> or <tt>::/128</tt>, as specified in
<xref section="4.7.2" sectionFormat="of" target="CONNECT-IP"/>.</t>
        </section>
        <section anchor="address-request">
          <name>ADDRESS_REQUEST</name>
          <t><tt>ConnectIPAddressRequestCapsule</tt> represents the ADDRESS_REQUEST capsule defined
in <xref section="4.7.2" sectionFormat="of" target="CONNECT-IP"/>. Each requested address records its Request
ID and requested IP prefix, including an unspecified address when the sender
has no preference for a particular address.</t>
          <sourcecode type="cddl"><![CDATA[
ConnectIPAddressRequestCapsule = {
    capsule_type: "address_request"
    requested_addresses: [+ ConnectIPAddress]
    ? raw: RawInfo
}
]]></sourcecode>
        </section>
        <section anchor="route-advertisement">
          <name>ROUTE_ADVERTISEMENT</name>
          <t><tt>ConnectIPRouteAdvertisementCapsule</tt> represents the ROUTE_ADVERTISEMENT capsule
defined in <xref section="4.7.3" sectionFormat="of" target="CONNECT-IP"/>. Each range records its inclusive
start and end addresses and its IP Protocol value. A protocol value of 0
retains its meaning of allowing all protocols.</t>
          <sourcecode type="cddl"><![CDATA[
ConnectIPRouteAdvertisementCapsule = {
    capsule_type: "route_advertisement"
    ip_address_ranges: [* ConnectIPAddressRange]
    ? raw: RawInfo
}

ConnectIPAddressRange = {
    start_ip: IPAddress
    end_ip: IPAddress
    ip_protocol: uint8
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="packets">
        <name>Packet Processing</name>
        <t>The <tt>http:connect_ip_packet_processed</tt> event (Base importance) records an IP
packet after processing, its forwarding decision, and any generated ICMP
response. <tt>stream_id</tt> identifies the CONNECT-IP request stream. <tt>forwarded</tt>
means handed to the application or accepted by HTTP for transmission.</t>
        <sourcecode type="cddl"><![CDATA[
ConnectIPPacketProcessed = {
    stream_id: uint64
    source: "application" / "peer"
    packet: ConnectIPPacket
    outcome: "forwarded" / "dropped"
    ? reason: "invalid" /
              "source_address_not_allowed" /
              "destination_address_not_allowed" /
              "protocol_not_allowed" /
              "hop_limit_exceeded" /
              "packet_too_large" /
              "send_error" /
              "other"
    ? icmp_response: {
        to: "peer" / "application"
        packet: ConnectIPPacket
    }
    * $$http-connectippacketprocessed-extension
}

$ProtocolEventData /= ConnectIPPacketProcessed
]]></sourcecode>
        <t><tt>source</tt> identifies the input as coming from the application or peer.
<tt>packet</tt> describes it before forwarding changes. <tt>icmp_response</tt> records a
generated response and its destination.</t>
        <t>Capsule and packet events <bcp14>SHOULD</bcp14> be ordered to reflect the address and route
state used for each decision. A local change can take effect when its capsule
is created and queued.</t>
        <section anchor="ip-packets">
          <name>IP Packets</name>
          <t>Header fields retain their wire values; unavailable fields are omitted.
IPv6 extension headers appear in wire order. <tt>upper_layer_protocol</tt> identifies
the protocol after them.</t>
          <t>For <tt>raw</tt>, <tt>length</tt> is the observed packet length, <tt>payload_length</tt> excludes
IP and extension headers, and <tt>data</tt> may contain a prefix of the packet.</t>
          <sourcecode type="cddl"><![CDATA[
ConnectIPPacket = {
    ? header: ConnectIPIPv4Header / ConnectIPIPv6Header
    ? extension_headers: [* ConnectIPIPv6ExtensionHeader]
    ? upper_layer_protocol: uint8
    ? icmp: ConnectIPICMP
    ? raw: RawInfo
}
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
ConnectIPIPv4Header = {
    version: 4
    ? ihl: uint8
    ? dscp: uint8
    ? ecn: ECN
    ? total_length: uint16
    ? identification: uint16
    ? flags: uint8
    ? fragment_offset: uint16
    ? ttl: uint8
    ? protocol: uint8
    ? checksum: uint16
    ? source_address: IPAddress
    ? destination_address: IPAddress
    ? options: RawInfo
}
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
ConnectIPIPv6Header = {
    version: 6
    ? dscp: uint8
    ? ecn: ECN
    ? flow_label: uint32
    ? payload_length: uint16
    ? next_header: uint8
    ? hop_limit: uint8
    ? source_address: IPAddress
    ? destination_address: IPAddress
}

ConnectIPIPv6ExtensionHeader = {
    type: uint8
    ? raw: RawInfo
}
]]></sourcecode>
        </section>
        <section anchor="icmp">
          <name>ICMP</name>
          <t><tt>quoted_packet</tt> describes the packet quoted by an ICMP error. <tt>mtu</tt> is the
advertised MTU for Packet Too Big or Fragmentation Needed. ICMP <tt>raw</tt> excludes
the IP header; <tt>payload_length</tt> excludes the ICMP header.</t>
          <sourcecode type="cddl"><![CDATA[
ConnectIPICMP = {
    ? type: uint8
    ? code: uint8
    ? checksum: uint16
    ? mtu: uint32
    ? quoted_packet: ConnectIPPacket
    ? raw: RawInfo
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="dns-schema">
      <name>DNS and PREF64 Capsule Schema</name>
      <t>This schema defines representations for the capsules in <xref target="CONNECT-IP-DNS"/>.
Its URI is <tt>urn:ietf:params:qlog:events:http#connect-ip-dns</tt>.</t>
      <sourcecode type="cddl"><![CDATA[
ConnectIPDNSCapsule = ConnectIPDNSAssignCapsule / ConnectIPPREF64Capsule

$HTTPCapsule /= ConnectIPDNSCapsule
]]></sourcecode>
      <section anchor="dns-assign">
        <name>DNS_ASSIGN</name>
        <t><tt>ConnectIPDNSAssignCapsule</tt> represents the DNS_ASSIGN capsule defined in
<xref section="3.4" sectionFormat="of" target="CONNECT-IP-DNS"/>. Each configuration records its nameservers,
internal domains, and search domains.</t>
        <sourcecode type="cddl"><![CDATA[
ConnectIPDNSAssignCapsule = {
    capsule_type: "dns_assign"
    dns_configurations: [* ConnectIPDNSConfiguration]
    ? raw: RawInfo
}

ConnectIPDNSConfiguration = {
    nameservers: [* ConnectIPDNSNameserver]
    internal_domains: [* text]
    search_domains: [* text]
}

ConnectIPDNSNameserver = {
    service_priority: uint16
    ipv4_addresses: [* IPAddress]
    ipv6_addresses: [* IPAddress]
    authentication_domain_name: text
    service_parameters: [* ConnectIPDNSServiceParameter]
}

ConnectIPDNSServiceParameter = {
    key: uint16
    value: hexstring
}
]]></sourcecode>
        <t>Domain names retain the presentation format used in the capsule, including
empty strings where permitted by <xref target="CONNECT-IP-DNS"/>. Each service parameter
records its numeric SvcParamKey and its SvcParamValue wire bytes as a
hexadecimal string. Parameters are listed in ascending key order.</t>
      </section>
      <section anchor="pref64">
        <name>PREF64</name>
        <t><tt>ConnectIPPREF64Capsule</tt> represents the PREF64 capsule defined in
<xref section="4.1" sectionFormat="of" target="CONNECT-IP-DNS"/>. The 96 address bits carried in the capsule
are followed by 32 zero bits to form the IPv6 address.</t>
        <sourcecode type="cddl"><![CDATA[
ConnectIPPREF64Capsule = {
    capsule_type: "pref64"
    prefixes: [* IPPrefix]
    ? raw: RawInfo
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="common-types">
      <name>Common Data Types</name>
      <t>These types are shared by both event schemas.</t>
      <section anchor="ipaddress">
        <name>IPAddress</name>
        <sourcecode type="cddl"><![CDATA[
IPAddress = text / hexstring
]]></sourcecode>
        <t>An IP address can be represented as text, hexadecimal bytes, or a redacted
value. Human-readable IPv4 and IPv6 addresses use dotted-decimal notation
and <xref target="RFC5952"/>, respectively.</t>
      </section>
      <section anchor="ipprefix">
        <name>IPPrefix</name>
        <sourcecode type="cddl"><![CDATA[
IPPrefix = text
]]></sourcecode>
        <t>An IP prefix is a textual address, a slash, and a decimal prefix length,
for example <tt>192.0.2.0/24</tt> or <tt>2001:db8::/64</tt>.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security and privacy considerations in <xref target="QLOG-MAIN"/> apply. Headers,
configuration, and raw data can reveal network topology, user activity, and
application data. Implementations should minimize capture and protect logs.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document requests two entries in the "qlog event schema URIs" registry
defined in <xref section="15" sectionFormat="of" target="QLOG-MAIN"/>.</t>
      <section anchor="iana-connect-ip">
        <name>CONNECT-IP Schema</name>
        <dl>
          <dt>Event schema URI:</dt>
          <dd>
            <t>urn:ietf:params:qlog:events:http#connect-ip</t>
          </dd>
          <dt>Namespace:</dt>
          <dd>
            <t>http</t>
          </dd>
          <dt>Event Types:</dt>
          <dd>
            <t>connect_ip_packet_processed</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Capsule representations and packet processing events for CONNECT-IP.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="connect-ip-schema"/> of this document.</t>
          </dd>
        </dl>
      </section>
      <section anchor="dns-and-pref64-capsule-schema">
        <name>DNS and PREF64 Capsule Schema</name>
        <dl>
          <dt>Event schema URI:</dt>
          <dd>
            <t>urn:ietf:params:qlog:events:http#connect-ip-dns</t>
          </dd>
          <dt>Namespace:</dt>
          <dd>
            <t>http</t>
          </dd>
          <dt>Event Types:</dt>
          <dd>
            <t>None. This schema extends the capsule data types of existing events.</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Capsule representations for the CONNECT-IP DNS and PREF64 extensions.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="dns-schema"/> of this document.</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="QLOG-MAIN">
        <front>
          <title>qlog: Structured Logging for Network Protocols</title>
          <author fullname="Robin Marx" initials="R." surname="Marx">
            <organization>Akamai</organization>
          </author>
          <author fullname="Luca Niccolini" initials="L." surname="Niccolini">
            <organization>Meta</organization>
          </author>
          <author fullname="Marten Seemann" initials="M." surname="Seemann">
         </author>
          <author fullname="Lucas Pardue" initials="L." surname="Pardue">
            <organization>Cloudflare</organization>
          </author>
          <date day="6" month="July" year="2026"/>
          <abstract>
            <t>   qlog provides extensible structured logging for network protocols,
   allowing for easy sharing of data that benefits common debug and
   analysis methods and tooling.  This document describes key concepts
   of qlog: formats, files, traces, events, and extension points.  This
   definition includes the high-level log file schemas, and generic
   event schemas.  Requirements and guidelines for creating protocol-
   specific event schemas are also presented.  All schemas are defined
   independent of serialization format, allowing logs to be represented
   in various ways such as JSON, CSV, or protobuf.

Note to Readers

      Note to RFC editor: Please remove this section before publication.

   Feedback and discussion are welcome at https://github.com/quicwg/qlog
   (https://github.com/quicwg/qlog).  Readers are advised to refer to
   the "editor's draft" at that URL for an up-to-date version of this
   document.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-main-schema-14"/>
      </reference>
      <reference anchor="QLOG-HTTP">
        <front>
          <title>HTTP/3 qlog event definitions</title>
          <author fullname="Robin Marx" initials="R." surname="Marx">
            <organization>Akamai</organization>
          </author>
          <author fullname="Luca Niccolini" initials="L." surname="Niccolini">
            <organization>Meta</organization>
          </author>
          <author fullname="Marten Seemann" initials="M." surname="Seemann">
         </author>
          <author fullname="Lucas Pardue" initials="L." surname="Pardue">
            <organization>Cloudflare</organization>
          </author>
          <date day="6" month="July" year="2026"/>
          <abstract>
            <t>   This document defines qlog event schemas containing concrete events
   for the core HTTP/3 protocol and selected extensions.  It also
   defines an http namespace for the Capsule Protocol.

Note to Readers

      Note to RFC editor: Please remove this section before publication.

   Feedback and discussion are welcome at https://github.com/quicwg/qlog
   (https://github.com/quicwg/qlog).  Readers are advised to refer to
   the "editor's draft" at that URL for an up-to-date version of this
   document.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-h3-events-13"/>
      </reference>
      <reference anchor="QLOG-QUIC">
        <front>
          <title>QUIC event definitions for qlog</title>
          <author fullname="Robin Marx" initials="R." surname="Marx">
            <organization>Akamai</organization>
          </author>
          <author fullname="Luca Niccolini" initials="L." surname="Niccolini">
            <organization>Meta</organization>
          </author>
          <author fullname="Marten Seemann" initials="M." surname="Seemann">
         </author>
          <author fullname="Lucas Pardue" initials="L." surname="Pardue">
            <organization>Cloudflare</organization>
          </author>
          <date day="6" month="July" year="2026"/>
          <abstract>
            <t>   This document describes a qlog event schema containing concrete qlog
   event definitions and their metadata for the core QUIC protocol and
   selected extensions.

Note to Readers

      Note to RFC editor: Please remove this section before publication.

   Feedback and discussion are welcome at https://github.com/quicwg/qlog
   (https://github.com/quicwg/qlog).  Readers are advised to refer to
   the "editor's draft" at that URL for an up-to-date version of this
   document.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-quic-events-13"/>
      </reference>
      <reference anchor="CONNECT-IP">
        <front>
          <title>Proxying IP in HTTP</title>
          <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
          <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
          <author fullname="A. Chernyakhovsky" initials="A." surname="Chernyakhovsky"/>
          <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
          <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
          <date month="October" year="2023"/>
          <abstract>
            <t>This document describes how to proxy IP packets in HTTP. This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets. More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy. This document updates RFC 9298.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9484"/>
        <seriesInfo name="DOI" value="10.17487/RFC9484"/>
      </reference>
      <reference anchor="CONNECT-IP-DNS">
        <front>
          <title>DNS and PREF64 Configuration for Proxying IP in HTTP</title>
          <author fullname="David Schinazi" initials="D." surname="Schinazi">
            <organization>Google LLC</organization>
          </author>
          <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
            <organization>Zscaler</organization>
          </author>
          <date day="13" month="October" year="2026"/>
          <abstract>
            <t>   Proxying IP in HTTP allows building a VPN through HTTP load
   balancers.  However, at the time of writing, that mechanism lacks a
   way to communicate network configuration details such as DNS
   information or IPv6 NAT64 prefixes (PREF64).  In contrast, most
   existing VPN protocols provide mechanisms to exchange such
   configuration information.

   This document defines extensions that convey DNS and PREF64
   configuration using HTTP capsules.  This mechanism supports encrypted
   DNS transports and can be used to inform peers about network
   translation prefixes for IPv6/IPv4 synthesis.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-dns-07"/>
      </reference>
      <reference anchor="CDDL">
        <front>
          <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
          <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
          <author fullname="C. Vigano" initials="C." surname="Vigano"/>
          <author fullname="C. Bormann" initials="C." surname="Bormann"/>
          <date month="June" year="2019"/>
          <abstract>
            <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8610"/>
        <seriesInfo name="DOI" value="10.17487/RFC8610"/>
      </reference>
      <reference anchor="RFC5952">
        <front>
          <title>A Recommendation for IPv6 Address Text Representation</title>
          <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
          <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
          <date month="August" year="2010"/>
          <abstract>
            <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5952"/>
        <seriesInfo name="DOI" value="10.17487/RFC5952"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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
GTEAAA==

-->

</rfc>
