<?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.6.34 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-05" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.2 -->
  <front>
    <title abbrev="UUID">Universally Unique IDentifiers (UUID)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-05"/>
    <author initials="P." surname="Leach" fullname="P. Leach">
      <organization>Microsoft</organization>
      <address>
        <email>paulle@microsoft.com</email>
      </address>
    </author>
    <author initials="M." surname="Mealling" fullname="M. Mealling">
      <organization>VeriSign, Inc.</organization>
      <address>
        <email>michael@refactored-networks.com</email>
      </address>
    </author>
    <author initials="B. G." surname="Peabody" fullname="Brad G. Peabody">
      <organization>Uncloud</organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </author>
    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <date year="2023"/>
    <area>ART</area>
    <workgroup>uuidrev</workgroup>
    <keyword>uuid</keyword>
    <abstract>
      <?line 251?>

<t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and is intended to guarantee
uniqueness across space and time.  UUIDs were originally used in the
Apollo Network Computing System and later in the Open Software
Foundation's (OSF) Distributed Computing Environment (DCE), and then
in Microsoft Windows platforms.</t>
      <t>This specification is derived from the DCE specification with the
kind permission of the OSF (now known as The Open Group).
Information from earlier versions of the DCE specification have been
incorporated into this document. This document obsoletes RFC4122.</t>
    </abstract>
  </front>
  <middle>
    <?line 265?>

<section anchor="Background">
      <name>Introduction</name>
      <t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and requires no central
registration process.</t>
      <t>The use of UUIDs is extremely pervasive in computing.  They comprise
the core identifier infrastructure for many operating systems
such as Microsoft Windows and applications such as the Mozilla Web browser and in
many cases, become exposed in many non-standard ways.</t>
      <t>This specification attempts to standardize that practice as openly as
possible and in a way that attempts to benefit the entire Internet.
The information here is meant to be a concise guide for those wishing
to implement services using UUIDs, UUIDs in combination with URNs <xref target="RFC8141"/>, or otherwise.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from <xref target="RFC4122"/>.  Both sets of
specifications have been aligned and are fully technically
compatible.  In addition, a global registration function is being
provided by the Telecommunications Standardization Bureau of ITU-T;
for details see <eref target="https://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx"/>.
Nothing in this document should be construed to override the DCE standards that defined UUIDs.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although one format uses
IEEE 802 node identifiers, others do not).  As a result, generation
on demand can be completely automated and used for a variety of
purposes.  The UUID generation algorithm described here supports very
high allocation rates of 10 million per second per machine or more if
necessary, so that they could even be used as transaction IDs.</t>
      <t>UUIDs are of a fixed size (128 bits), which is reasonably small
compared to other alternatives.  This lends itself well to sorting,
ordering, and hashing of all sorts, storing in databases, simple
allocation, and ease of programming in general.</t>
      <t>Since UUIDs are unique and persistent, they make excellent Uniform
Resource Names.  The unique ability to generate a new UUID without a
registration process allows for UUIDs to be one of the URNs with the
lowest minting cost.</t>
      <section anchor="update-motivation">
        <name>Update Motivation</name>
        <t>Many things have changed in the time since UUIDs were originally created.
Modern applications have a need to create and utilize UUIDs as the primary
identifier for a variety of different items in complex computational systems,
including but not limited to database keys, file names, machine or system
names, and identifiers for event-driven transactions.</t>
        <t>One area in which UUIDs have gained popularity is as database keys.
This stems from the increasingly distributed nature of modern applications.
In such cases, "auto increment" schemes often used by databases do not work
well, as the effort required to coordinate sequential numeric identifiers across
a network can easily become a burden.
The fact that UUIDs can be used to create unique, reasonably short values
in distributed systems without requiring coordination makes them a good
alternative, but UUID versions 1-5 lack certain other desirable characteristics:</t>
        <ol spacing="normal" type="1"><li>Non-time-ordered UUID versions such as UUIDv4 (described in <xref target="uuidv4"/>) have poor database index
  locality.
  This means that new values created in succession are not close to each other in
  the index and thus require inserts to be performed at random
  locations.
  The negative performance effects of which on common structures used for
  this (B-tree and its variants) can be dramatic.</li>
          <li>The 100-nanosecond Gregorian epoch used in UUIDv1 (described in <xref target="uuidv1"/>) timestamps is uncommon
  and difficult to represent accurately using a standard number format such
  as <xref target="IEEE754"/>.</li>
          <li>Introspection/parsing is required to order by time sequence, as opposed to
  being able to perform a simple byte-by-byte comparison.</li>
          <li>Privacy and network security issues arise from using a MAC address in the
  node field of Version 1 UUIDs.
  Exposed MAC addresses can be used as an attack surface to locate machines
  and reveal various other
  information about such machines (minimally manufacturer, potentially other
  details). Additionally, with the advent of virtual machines and containers,
  MAC address uniqueness is no longer guaranteed.</li>
          <li>Many of the implementation details specified in RFC4122 involved trade
  offs that are neither possible to specify for all applications nor
  necessary to produce interoperable implementations.</li>
          <li>RFC4122 did not distinguish between the requirements for generation
  of a UUID versus an application that simply stores one, which are often
  different.</li>
        </ol>
        <t>Due to the aforementioned issues, many widely distributed database applications
and large application vendors have sought to solve the problem of creating
a better
time-based, sortable unique identifier for use as a database key. This has
lead to numerous implementations
over the past 10+ years solving the same problem in slightly different ways.</t>
        <t>While preparing this specification, the following 16 different implementations
were analyzed for trends in total ID length, bit layout, lexical formatting/encoding,
timestamp type, timestamp format, timestamp accuracy, node format/components,
collision handling, and multi-timestamp tick generation sequencing:</t>
        <ol spacing="compact" type="1"><li>
            <xref target="ULID"/> by A. Feerasta</li>
          <li>
            <xref target="LexicalUUID"/> by Twitter</li>
          <li>
            <xref target="Snowflake"/> by Twitter</li>
          <li>
            <xref target="Flake"/> by Boundary</li>
          <li>
            <xref target="ShardingID"/> by Instagram</li>
          <li>
            <xref target="KSUID"/> by Segment</li>
          <li>
            <xref target="Elasticflake"/> by P. Pearcy</li>
          <li>
            <xref target="FlakeID"/> by T. Pawlak</li>
          <li>
            <xref target="Sonyflake"/> by Sony</li>
          <li>
            <xref target="orderedUuid"/> by IT. Cabrera</li>
          <li>
            <xref target="COMBGUID"/> by R. Tallent</li>
          <li>
            <xref target="SID"/> by A. Chilton</li>
          <li>
            <xref target="pushID"/> by Google</li>
          <li>
            <xref target="XID"/> by O. Poitrey</li>
          <li>
            <xref target="ObjectID"/> by MongoDB</li>
          <li>
            <xref target="CUID"/> by E. Elliott</li>
        </ol>
        <t>An inspection of these implementations and the issues described above has
led to this document which intends to adapt UUIDs to address these issues.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <section anchor="requirements_language">
        <name>Requirements Language</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?>

</section>
      <section anchor="acronyms">
        <name>Abbreviations</name>
        <t>The following abbreviations are used in this document:</t>
        <dl indent="14">
          <dt>UUID</dt>
          <dd>
            <t>Universally Unique Identifier</t>
          </dd>
          <dt>URN</dt>
          <dd>
            <t>Uniform Resource Names</t>
          </dd>
          <dt>ABNF</dt>
          <dd>
            <t>Augmented Backus-Naur Form</t>
          </dd>
          <dt>CSPRNG</dt>
          <dd>
            <t>Cryptographically Secure Pseudo-Random Number Generator</t>
          </dd>
          <dt>MAC</dt>
          <dd>
            <t>Media Access Control</t>
          </dd>
          <dt>MSB</dt>
          <dd>
            <t>Most Significant Bit</t>
          </dd>
          <dt>DBMS</dt>
          <dd>
            <t>Database Management System</t>
          </dd>
          <dt>IEEE</dt>
          <dd>
            <t>Institute of Electrical and Electronics Engineers, Inc.</t>
          </dd>
          <dt>ITU</dt>
          <dd>
            <t>International Telecommunication Union</t>
          </dd>
          <dt>MD5</dt>
          <dd>
            <t>Message Digest 5</t>
          </dd>
          <dt>SHA</dt>
          <dd>
            <t>Secure Hash Algorithm</t>
          </dd>
          <dt>SHA-1</dt>
          <dd>
            <t>Secure Hash Algorithm 1 with message digest of 160 bits</t>
          </dd>
          <dt>SHA-224</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 224 bits</t>
          </dd>
          <dt>SHA-256</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 256 bits</t>
          </dd>
          <dt>SHA-512</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 512 bits</t>
          </dd>
          <dt>SHA-3</dt>
          <dd>
            <t>Secure Hash Algorithm 3</t>
          </dd>
          <dt>SHAKE</dt>
          <dd>
            <t>Secure Hash Algorithm 3 based on KECCAK algorithm</t>
          </dd>
          <dt>UTC</dt>
          <dd>
            <t>Coordinated Universal Time</t>
          </dd>
          <dt>OID</dt>
          <dd>
            <t>Object Identifier</t>
          </dd>
        </dl>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>Changelog</name>
        <t>draft-05</t>
        <ul spacing="compact">
          <li>Changed Max UUID to Omni UUID to better complement Latin Nil UUID verbiage. #95</li>
          <li>Align Method 3 text with the 12 bits limitation #96</li>
          <li>Make Version/version casing consistent across 5. UUID Layouts #97</li>
          <li>Cite MS COM GUID as little-endian #95</li>
        </ul>
        <t>draft-04</t>
        <ul spacing="compact">
          <li>Remove extra words #82, #88, and #93</li>
          <li>Punctuation and minor style fixes #84</li>
          <li>Change rounding mode of Method 4 Section 6.2 #90 (from #86)</li>
          <li>Add verbal description of v7 generation to 5.7. UUID Version 7 #91</li>
          <li>Remove Re-randomize Until Monotonic (Method 3) from Monotonicity and Counters #92</li>
          <li>Fix ambiguous text around UUIDv6 clock sequence #89</li>
          <li>Move endianness statement from layout to format section #85</li>
          <li>Further modified abstract to separate URN topic from UUID definition #83</li>
          <li>Provided three more UUID format examples #83</li>
          <li>Added text further clarifying version construct is for the variant in this doc #83</li>
          <li>Provided further clarification for local/global bit vs multicast bit #83</li>
        </ul>
        <t>draft-03</t>
        <ul spacing="compact">
          <li>Revised IANA Considerations #71</li>
          <li>Fix "integral numbers of octets" verbiage #67</li>
          <li>Transpose UUID Namespaces to match UUID Hashspaces #70</li>
          <li>Reference all Hash Algorithms. #69</li>
          <li>Normalize SHA abbreviation formats #66</li>
          <li>Add other Hash Abbreviations #65</li>
          <li>Remove URN from title #73</li>
          <li>Move Community Considerations to Introduction #68</li>
          <li>Move some Normative Reference to Informative #74</li>
          <li>Misc formatting changes to address IDNITS feedback</li>
          <li>Downgrade <bcp14>MUST NOT</bcp14> to <bcp14>SHOULD NOT</bcp14> for guessability of UUIDs #75</li>
          <li>Misc. text formatting, typo fixes #78</li>
          <li>Misc. text clarifications #79</li>
          <li>Misc. <bcp14>SHOULD</bcp14>/<bcp14>MUST</bcp14> adjustments #80</li>
          <li>Method 3 and 4 added to monotonic section #81</li>
        </ul>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>Change md5_high in SHA-1 section to sha1_mid #59</li>
          <li>Describe Nil/Omni UUID in variant table #16</li>
          <li>Further Clarify that non-descript node IDs are the preferred method in distributed UUID Generation #49</li>
          <li>Appendix B, consistent naming #55</li>
          <li>Remove duplicate ABNF from IANA considerations #56</li>
          <li>Monotonic Error Checking missing newline #57</li>
          <li>More Security Considerations Randomness #26</li>
          <li>SHA-256 UUID Generation #50</li>
          <li>Expand multiplexed fields within v1 and v6 bit definitions #43</li>
          <li>Clean up text in UUIDs that Do Not Identify the Host #61</li>
          <li>Revise UUID Generator States section #47</li>
          <li>Expand upon why unix epoch rollover is not a problem #44</li>
          <li>Delete Sample Code Appendix #62</li>
        </ul>
        <t>draft-01</t>
        <ul spacing="compact">
          <li>Mixed Case Spelling error #18</li>
          <li>Add "UUIDs that Do Not Identify the Host as well" reference to security considerations #19</li>
          <li>Out of Place Distributed node text #20</li>
          <li>v6 clock_seq and node usage ambiguity #21</li>
          <li>Figure 2 and 3 Fix Title #22</li>
          <li>Move Namespace Registration Template to IANA Considerations #23</li>
          <li>Verify ABNF formatting against RFC5234 #24</li>
          <li>Bump ABNF reference to RFC 5234 #25</li>
          <li>Modify v8 <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> #27</li>
          <li>Remove "time-based" constraint from version 8 UUID #29</li>
          <li>Further clarify v7 field description #125 #30</li>
          <li>Typo: Section 4.2, Version Field, "UUID from in this" #33</li>
          <li>Create better ABNF to represent Hex Digit #39</li>
          <li>Break Binary form of UUID into two lines. #40</li>
          <li>Move octet text from section 4 to section 5 #41</li>
          <li>Add forward reference to UUIDv1 and UUIDv4 in Section 2 #42</li>
          <li>Erroneous reference to v1 in monotonicity #45</li>
          <li>Add Label for "Monotonic Error Checking" paragraph to frame the topic #46</li>
          <li>Remove IEEE paragraph from "uuids that do not identify the host" #48</li>
          <li>Grammar Review #52</li>
        </ul>
        <t>draft-00</t>
        <ul spacing="compact">
          <li>Merge RFC4122 with draft-peabody-dispatch-new-uuid-format-04.md</li>
          <li>Change: Reference RFC1321 to RFC6151</li>
          <li>Change: Reference RFC2141 to RFC8141</li>
          <li>Change: Reference RFC2234 to RFC5234</li>
          <li>Change: Reference FIPS 180-1 to FIPS 180-4 for SHA-1</li>
          <li>Change: Converted UUIDv1 to match UUIDv6 section from Draft 04</li>
          <li>Change: Trimmed down the ABNF representation</li>
          <li>Change: http websites to https equivalent</li>
          <li>Errata: Bad Reference to RFC1750 | 3641 #4</li>
          <li>Errata: Change MD5 website to example.com | 3476 #6 (Also Fixes Errata: Fix uuid_create_md5_from_name() | 1352 #2)</li>
          <li>Errata: Typo in code comment | 6665 #11</li>
          <li>Errata: Fix BAD OID acronym | 6225 #9</li>
          <li>Errata: Incorrect Parenthesis usage Section 4.3 | 184 #5</li>
          <li>Errata: Lexicographically Sorting Paragraph Fix | 1428 #3</li>
          <li>Errata: Fix 4.1.3 reference to the correct bits | 1957 #13</li>
          <li>Errata: Fix reference to variant in octet 8 | 4975 #7</li>
          <li>Errata: Further clarify 3rd/last bit of Variant for spec | 5560 #8</li>
          <li>Errata: Fix clock_seq_hi_and_reserved most-significant bit verbiage | 4976 #10</li>
          <li>Errata: Better Clarify network byte order when referencing most significant bits | 3546 #12</li>
          <li>Draft 05: B.2. Example of a UUIDv7 Value two "var" in table #120</li>
          <li>Draft 05: <bcp14>MUST</bcp14> verbiage in Reliability of 6.1 #121</li>
          <li>Draft 05: Further discourage centralized registry for distributed UUID Generation.</li>
          <li>New: Further Clarity of exact octet and bit of var/ver in this spec</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv4</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv3</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv5</li>
          <li>New: Add MD5 Security Considerations reference, RFC6151</li>
          <li>New: Add SHA-1 Security Considerations reference, RFC6194</li>
        </ul>
      </section>
    </section>
    <section anchor="format">
      <name>UUID Format</name>
      <t>The UUID format is 16 octets (128 bits); the variant bits in conjunction with the version
bits described in the next sections in determine finer structure. While discussing UUID formats and layout, bit definitions start at 0 and end at 127 while octet definitions start at 0 and end at 15.</t>
      <t>In the absence of explicit application or presentation protocol
specification to the contrary, each field is encoded with the Most
Significant Byte first (known as network byte order).</t>
      <t>Saving UUIDs to binary format is done by sequencing all fields in big-endian format.
However there is a known caveat that Microsoft's Component Object Model (COM) GUIDs leverage little-endian when saving GUIDs.
The discussion of this <xref target="MS_COM_GUID"/> outside the scope of this specification.</t>
      <t>UUIDs <bcp14>MAY</bcp14> be represented as binary data or integers.
When in use with URNs or as text in applications, any given UUID <bcp14>SHOULD</bcp14>
be represented by the "hex-and-dash" string format consisting of multiple
groups of upper or lowercase alphanumeric hexadecimal characters separated by single dashes/hyphens.
When used with databases please refer to <xref target="database_considerations"/>.</t>
      <t>The formal definition of the UUID string representation is provided by the following (ABNF) <xref target="RFC5234"/>.</t>
      <sourcecode type="abnf"><![CDATA[
UUID     = 4hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           6hexOctet
hexOctet = HEXDIG HEXDIG
DIGIT    = %x30-39
HEXDIG   = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
]]></sourcecode>
      <t>An example UUID using this textual representation from the above ABNF is shown in <xref target="sampleStringUUID"/>.
Note that in this example the alphabetic characters may be all uppercase, all lowercase, or mixed case, as per <xref section="2.3" sectionFormat="comma" target="RFC5234"/></t>
      <figure anchor="sampleStringUUID">
        <name>Example String UUID format</name>
        <artwork><![CDATA[
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>The same UUID from <xref target="sampleStringUUID"/> is represented in Binary <xref target="sampleBinaryUUID"/>, Integer <xref target="sampleIntegerUUID"/> and as a URN <xref target="sampleURNUUID"/> defined by <xref target="RFC8141"/>.</t>
      <figure anchor="sampleBinaryUUID">
        <name>Example Binary UUID</name>
        <artwork><![CDATA[
111110000001110101001111101011100111110111101100000100011101000\
01010011101100101000000001010000011001001000111100110101111110110
]]></artwork>
      </figure>
      <figure anchor="sampleIntegerUUID">
        <name>Example Integer UUID (shown as a decimal number)</name>
        <artwork><![CDATA[
329800735698586629295641978511506172918
]]></artwork>
      </figure>
      <figure anchor="sampleURNUUID">
        <name>Example URN UUID</name>
        <artwork><![CDATA[
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>There many other ways to define a UUID format some select methods are detailed below.
Please note that this is not an exhaustive list and is only provided for informational purposes.</t>
      <ul spacing="compact">
        <li>Some UUID implementations, such as those found in <xref target="Python"/> and <xref target="Microsoft"/>, will output UUID with the string format, including dashes, enclosed in curly braces.</li>
        <li>
          <xref target="X667"/> provides UUID format definitions for use of UUID with an OID.</li>
        <li>The legacy <xref target="IBM_NCS"/> implementation produces a unique UUID format compatible with Variant 0xx of <xref target="table1"/></li>
      </ul>
      <section anchor="variant_field">
        <name>Variant Field</name>
        <t>The variant field determines the layout of the UUID.  That is, the
interpretation of all other bits in the UUID depends on the setting
of the bits in the variant field.  As such, it could more accurately
be called a type field; we retain the original term for
compatibility.  The variant field consists of a variable number of
the most significant bits of octet 8 of the UUID.</t>
        <t><xref target="table1"/> lists the contents of the variant field, where
the letter "x" indicates a "don't-care" value.</t>
        <table anchor="table1">
          <name>UUID Variants</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">Reserved, NCS backward compatibility and includes Nil UUID as per <xref target="niluuid"/>.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">The variant specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">Reserved, Microsoft Corporation backward compatibility.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">Reserved for future definition and includes Omni UUID as per <xref target="omniuuid"/>.</td>
            </tr>
          </tbody>
        </table>
        <t>Interoperability, in any form, with variants other than the one
defined here is not guaranteed but is not likely to be an issue in
practice.</t>
        <t>Specifically for UUIDs in this document bits 64 and 65 of the UUID (bits 0 and 1 of octet 8) <bcp14>MUST</bcp14> be set to 1 and 0 as specified in row 2 of <xref target="table1"/>.
Accordingly, all bit and field layouts avoid the use of these bits.</t>
      </section>
      <section anchor="version_field">
        <name>Version Field</name>
        <t>The version number is in the most significant 4 bits of octet 6
(bits 48 through 51 of the UUID).</t>
        <t><xref target="table2"/> lists all of the versions for this UUID variant 10x specified in this document.</t>
        <table anchor="table2">
          <name>UUID variant 10x versions defined by this specification</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Msb3</th>
              <th align="left">Version</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">Unused</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">The Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">2</td>
              <td align="left">Reserved for DCE Security version, with embedded POSIX UUIDs.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">3</td>
              <td align="left">The name-based version specified in this document that uses MD5 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">4</td>
              <td align="left">The randomly or pseudo-randomly generated version specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">5</td>
              <td align="left">The name-based version specified in this document that uses SHA-1 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">6</td>
              <td align="left">Reordered Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">7</td>
              <td align="left">Unix Epoch time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">8</td>
              <td align="left">Reserved for custom UUID formats specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">9</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">10</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">11</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">12</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">13</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">14</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">15</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
          </tbody>
        </table>
        <t>An example version/variant layout for UUIDv4 follows the table
where M represents the version placement for the hexadecimal representation of 4 (0100)
and the N represents the variant placement for one of the four possible hexadecimal representation of variant 10x:
8 (1000), 9 (1001), A (1010), B (1011)</t>
        <figure>
          <name>UUIDv4 Variant Examples</name>
          <artwork><![CDATA[
00000000-0000-4000-8000-000000000000
00000000-0000-4000-9000-000000000000
00000000-0000-4000-A000-000000000000
00000000-0000-4000-B000-000000000000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
]]></artwork>
        </figure>
        <t>It should be noted that the other remaining UUID variants found in <xref target="table1"/> leverage different sub-typing/versioning mechanisms.
The recording and definition of the remaining UUID variant and sub-typing combinations are outside of the scope of this document.</t>
      </section>
    </section>
    <section anchor="layout">
      <name>UUID Layouts</name>
      <t>To minimize confusion about bit assignments within octets and among differing versions, the UUID record definition is provided as a grouping of fields within bit layout consisting four octets to a row.
The fields are presented with the most significant one first.</t>
      <section anchor="uuidv1">
        <name>UUID Version 1</name>
        <t>UUID version 1 is a time-based UUID featuring a 60-bit timestamp
represented by Coordinated Universal Time (UTC) as a count of 100-
nanosecond intervals since 00:00:00.00, 15 October 1582 (the date of
Gregorian reform to the Christian calendar).</t>
        <t>UUIDv1 also features a clock sequence field which is used to help avoid
duplicates that could arise when the clock is set backwards in time
or if the node ID changes.</t>
        <t>The node field consists of an IEEE 802 MAC
address, usually the host address.  For systems with multiple IEEE
802 addresses, any available one <bcp14>MAY</bcp14> be used.  The lowest addressed
octet (octet number 10) contains the global/local bit and the
unicast/multicast bit, and is the first octet of the address
transmitted on an 802.3 LAN.</t>
        <figure>
          <name>UUIDv1 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_high       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_low:</dt>
          <dd>
            <t>The least significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3)</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5)</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0001.
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>time_high:</dt>
          <dd>
            <t>12 bits that will contain the most significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14-bits containing the clock sequence.
  Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>For systems that do not have UTC available, but do have the local
time, they may use that instead of UTC, as long as they do so
consistently throughout the system.  However, this is not recommended
since generating the UTC from local time only needs a time zone
offset.</t>
        <t>If the clock is set backwards, or might have been set backwards
(e.g., while the system was powered off), and the UUID generator can
not be sure that no UUIDs were generated with timestamps larger than
the value to which the clock was set, then the clock sequence <bcp14>MUST</bcp14>
be changed.  If the previous value of the clock sequence is known, it
<bcp14>MAY</bcp14> be incremented; otherwise it <bcp14>SHOULD</bcp14> be set to a random or
high-quality pseudo-random value.</t>
        <t>Similarly, if the node ID changes (e.g., because a network card has
been moved between machines), setting the clock sequence to a random
number minimizes the probability of a duplicate due to slight
differences in the clock settings of the machines.  If the value of
clock sequence associated with the changed node ID were known, then
the clock sequence <bcp14>MAY</bcp14> be incremented, but that is unlikely.</t>
        <t>The clock sequence <bcp14>MUST</bcp14> be originally (i.e., once in the lifetime of
a system) initialized to a random number to minimize the correlation
across systems.  This provides maximum protection against node
identifiers that may move or switch from system to system rapidly.
The initial value <bcp14>MUST NOT</bcp14> be correlated to the node identifier.</t>
        <t>For systems with no IEEE address, a randomly or pseudo-randomly
generated value may be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
      </section>
      <section anchor="uuidv2">
        <name>UUID Version 2</name>
        <t>UUID version 2 is known as DCE Security UUIDs <xref target="C309"/> and <xref target="C311"/>.
As such the definition of these UUIDs are outside the scope of this specification.</t>
      </section>
      <section anchor="uuidv3">
        <name>UUID Version 3</name>
        <t>UUID version 3 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv3 values are created by computing an MD5 <xref target="RFC1321"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This MD5 value is then used to populate all 128 bits of the UUID layout.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>.</t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>Where possible UUIDv5 <bcp14>SHOULD</bcp14> be used in lieu of UUIDv3.
For more information on MD5 security considerations see <xref target="RFC6151"/>.</t>
        <figure>
          <name>UUIDv3 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          md5_high             |  ver  |       md5_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>md5_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed MD5 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0011</t>
          </dd>
          <dt>md5_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following md5_high
from the computed MD5 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>md5_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with the least-significant, right-most bits of the final 64 bits
from the computed MD5 value.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv4">
        <name>UUID Version 4</name>
        <t>UUID version 4 is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random data which is
used to fill out the UUID fields in <xref target="uuidv4fields"/>. The UUID version
and variant then replace the respective bits as defined by <xref target="version_field"/>
and <xref target="variant_field"/>,</t>
        <t>Alternatively, an implementation <bcp14>MAY</bcp14> choose to randomly generate the exact required number of bits for
random_a, random_b, and random_c (122 bits total), and then concatenate the version and variant in the required position.</t>
        <t>For guidelines on random data generation see <xref target="unguessability"/>.</t>
        <figure anchor="uuidv4fields">
          <name>UUIDv4 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          random_a             |  ver  |       random_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>random_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled with random data as specified in <xref target="unguessability"/></t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0100</t>
          </dd>
          <dt>random_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled random data as per <xref target="unguessability"/></t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>random_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with random data as per <xref target="unguessability"/></t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv5">
        <name>UUID Version 5</name>
        <t>UUID version 5 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv5 values are created by computing an SHA-1 <xref target="FIPS180-4"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This SHA-1 value is then used to populate all 128 bits of the UUID layout. Excess bits beyond 128 are discarded.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/></t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>There may be scenarios, usually depending on organizational security policies, where SHA-1 libraries may not be available or deemed unsafe for use.
As such it may be desirable to generate name-based UUIDs derived from SHA-256 or newer SHA methods. These name-based UUIDs <bcp14>MUST NOT</bcp14> utilize UUIDv5 and <bcp14>MUST</bcp14> be within the UUIDv8 space defined by <xref target="v8"/>.
For implementation guidance around utilizing UUIDv8 for name-based UUIDs refer to the sub-section of <xref target="name_based_uuid_generation"/>.</t>
        <t>For more information on SHA-1 security considerations see <xref target="RFC6194"/>.</t>
        <figure>
          <name>UUIDv5 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         sha1_high             |  ver  |      sha1_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>sha1_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed SHA-1 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>sha1_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following sha1_high
from the computed SHA-1 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>sha1_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled by skipping the 2 most significant, left-most bits of the remaining SHA-1 hash
and then using the next 62 most significant, left-most bits.
Any leftover SHA-1 bits are discarded and unused.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv6">
        <name>UUID Version 6</name>
        <t>UUID version 6 is a field-compatible version of UUIDv1, reordered for improved
DB locality.
It is expected that UUIDv6 will primarily be used in contexts where there
are existing v1 UUIDs.
Systems that do not involve legacy UUIDv1 <bcp14>SHOULD</bcp14> use UUIDv7 instead.</t>
        <t>Instead of splitting the timestamp into the low, mid, and high sections from
UUIDv1, UUIDv6 changes this sequence so timestamp bytes are stored from most
to least significant.
That is, given a 60 bit timestamp value as specified for UUIDv1 in <xref target="uuidv1"/>,
for UUIDv6, the first 48 most significant bits are stored
first, followed by the 4 bit version (same position), followed by the remaining
12 bits of the original 60 bit timestamp.</t>
        <t>The clock sequence  and node bits remain unchanged from their position in <xref target="uuidv1"/>.</t>
        <t>The clock sequence and node bits <bcp14>SHOULD</bcp14> be reset to a pseudo-random value for each new UUIDv6 generated; however, implementations <bcp14>MAY</bcp14> choose to retain the old clock sequence and MAC address behavior from <xref target="uuidv1"/>. For more information on MAC address usage within UUIDs see the <xref target="Security"/>.</t>
        <t>The format for the 16-byte, 128 bit UUIDv6 is shown in <xref target="v6layout"/></t>
        <figure anchor="v6layout">
          <name>UUIDv6 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_low        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_high:</dt>
          <dd>
            <t>The most significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3)</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5)</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0110.
Occupies bits 48 through 51 of Octet 6.</t>
          </dd>
          <dt>time_low:</dt>
          <dd>
            <t>12 bits that will contain the least significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14 bits containing the clock sequence.
Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>With UUIDv6 the steps for splitting the timestamp into time_high and time_mid
are <bcp14>OPTIONAL</bcp14>
since the 48 bits of time_high and time_mid will remain in the same order.
An extra step of splitting the first 48 bits of the timestamp into the most
significant
32 bits and least significant 16 bits proves useful when reusing an existing
UUIDv1 implementation.</t>
      </section>
      <section anchor="v7">
        <name>UUID Version 7</name>
        <t>UUID version 7 features a time-ordered value field derived from the widely
implemented and well known Unix Epoch timestamp source, the number of milliseconds
since midnight 1 Jan 1970 UTC, leap seconds excluded.
UUIDv7 generally has improved entropy characteristics over UUIDv1 or UUIDv6.</t>
        <t>UUIDv7 values are created by allocating a Unix timestamp in milliseconds in the most significant 48 bits and filling the remaining 74 bits, jointly, excluding the required version and variant bits, with a combination of the following subfields, in this order from the most significant bits to the least:</t>
        <ol spacing="normal" type="1"><li>An <bcp14>OPTIONAL</bcp14> sub-millisecond timestamp fraction (12 bits at maximum) to utilize extra clock precision as per <xref target="monotonicity_counters"/> (Method 3).</li>
          <li>An <bcp14>OPTIONAL</bcp14> carefully seeded counter to guarantee additional monotonicity as per <xref target="monotonicity_counters"/> (Method 1 or 2).</li>
          <li>Random data for each new UUIDv7 generated to provide uniqueness as per <xref target="unguessability"/> for any remaining space.</li>
        </ol>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize UUIDv7 instead of UUIDv1 and UUIDv6 if
possible.</t>
        <figure>
          <name>UUIDv7 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           unix_ts_ms                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          unix_ts_ms           |  ver  |       rand_a          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>unix_ts_ms:</dt>
          <dd>
            <t>48 bit big-endian unsigned number of Unix epoch timestamp in milliseconds as per <xref target="timestamp_considerations"/>.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>4 bit UUIDv7 version set as per <xref target="version_field"/></t>
          </dd>
          <dt>rand_a:</dt>
          <dd>
            <t>12 bits pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or optional constructs to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>rand_b:</dt>
          <dd>
            <t>The final 62 bits of pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or an optional counter to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="v8">
        <name>UUID Version 8</name>
        <t>UUID version 8 provides an RFC-compatible format for experimental or vendor-specific
use cases.
The only requirement is that the variant and version bits <bcp14>MUST</bcp14> be set as
defined in <xref target="variant_field"/> and <xref target="version_field"/>.
UUIDv8's uniqueness will be implementation-specific and <bcp14>MUST NOT</bcp14> be assumed.</t>
        <t>The only explicitly defined bits are the version and variant, leaving 122
bits
for implementation specific UUIDs. To be clear:
UUIDv8 is not a replacement for UUIDv4 where all 122 extra bits are
filled with random data.</t>
        <t>Some example situations in which UUIDv8 usage could occur:</t>
        <ul spacing="normal">
          <li>An implementation would like to embed extra information
within the UUID other than what is defined in this document.</li>
          <li>An implementation has other application/language restrictions which
inhibit the use of one of the current UUIDs.</li>
        </ul>
        <figure>
          <name>UUIDv8 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          custom_a             |  ver  |       custom_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>custom_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled as an implementation sees
fit.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>custom_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled as an implementation sees fit.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>custom_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled as an implementation sees fit.</t>
          </dd>
        </dl>
      </section>
      <section anchor="niluuid">
        <name>Nil UUID</name>
        <t>The nil UUID is special form of UUID that is specified to have all
128 bits set to zero.</t>
        <figure>
          <name>Nil UUID Format</name>
          <artwork><![CDATA[
00000000-0000-0000-0000-000000000000
]]></artwork>
        </figure>
        <t>A Nil UUID value can be useful to communicate the absence of any other UUID value in situations that otherwise require or use a 128-bit UUID.  A Nil UUID can express the concept "no such value here". Thus it is reserved for such use as needed for implementation-specific situations.</t>
      </section>
      <section anchor="omniuuid">
        <name>Omni UUID</name>
        <t>The Omni UUID is special form of UUID that is specified to have all 128 bits
set to 1. This UUID can be thought of as the inverse of Nil UUID defined
in <xref target="niluuid"/>.</t>
        <figure>
          <name>Omni UUID Format</name>
          <artwork><![CDATA[
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
]]></artwork>
        </figure>
        <t>A Omni UUID value can be used as a sentinel value in situations where a 128-bit UUID is required but a concept such as "end of UUID list" needs to be expressed, and is reserved for such use as needed for implementation-specific situations.</t>
      </section>
    </section>
    <section anchor="uuid_best_practices">
      <name>UUID Best Practices</name>
      <t>The minimum requirements for generating UUIDs are
described in this document for each version.
Everything else is an implementation detail and
up to the implementer to decide what is appropriate for a given
implementation. Various relevant factors are covered
below to help guide an implementer through the different trade-offs among
differing UUID implementations.</t>
      <section anchor="timestamp_considerations">
        <name>Timestamp Considerations</name>
        <t>UUID timestamp source, precision, and length was the topic of great debate
while creating UUIDv7 for this specification. Choosing the right timestamp for
your application is a very important topic. This section will detail some
of the most common points on this topic.</t>
        <dl newline="true">
          <dt>Reliability:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> use the current timestamp from a reliable source to
provide values that are time-ordered and continually increasing.
Care <bcp14>SHOULD</bcp14> be taken to ensure that timestamp changes from the environment
or operating system are handled in a way that is consistent with implementation
requirements.
For example, if it is possible for the system clock to move backward due
to either manual adjustment or corrections from a time synchronization protocol,
implementations need to determine how to handle such cases. (See Altering, Fuzzing,
or Smearing below.)</t>
          </dd>
          <dt>Source:</dt>
          <dd>
            <t>UUID version 1 and 6 both utilize a Gregorian epoch timestamp while UUIDv7
utilizes a Unix Epoch timestamp. If other timestamp sources or a custom timestamp
epoch are required, UUIDv8 <bcp14>MUST</bcp14> be used.</t>
          </dd>
          <dt>Sub-second Precision and Accuracy:</dt>
          <dd>
            <t>Many levels of precision exist for timestamps: milliseconds, microseconds,
nanoseconds, and beyond.
Additionally fractional representations of sub-second precision may be desired
to mix various levels of precision in a time-ordered manner.
Furthermore, system clocks themselves have an underlying granularity and
it is frequently less than the precision offered by the operating system.
With UUID version 1 and 6, 100-nanoseconds of precision are present while
UUIDv7 features fixed millisecond level of precision within the Unix epoch
that does not exceed the granularity capable in most modern systems.
For other levels of precision UUIDv8 <bcp14>SHOULD</bcp14> be utilized.
Similar to <xref target="monotonicity_counters"/>, with UUIDv1 or UUIDv6,
a high resolution timestamp can be simulated by keeping a count of
the number of UUIDs that have been generated with the same value of
the system time, and using it to construct the low order bits of the
timestamp.  The count will range between zero and the number of
100-nanosecond intervals per system time interval.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The length of a given timestamp directly impacts how long a given UUID will
be valid.
That is, how many timestamp ticks can be contained in a UUID before the maximum
value for the timestamp field is reached.
Care <bcp14>SHOULD</bcp14> be given to ensure that the proper length is selected for a given
timestamp.
UUID version 1 and 6 utilize a 60 bit timestamp valid until 5623 AD and UUIDv7 features a 48
bit timestamp valid until the year 10889 AD.</t>
          </dd>
          <dt>Altering, Fuzzing, or Smearing:</dt>
          <dd>
            <t>Implementations <bcp14>MAY</bcp14> alter the actual timestamp. Some examples include security
considerations around providing a real clock value within a UUID, to correct
inaccurate clocks, or to handle leap seconds. This specification makes no
requirement or guarantee about how close the clock value needs to be to the actual
time.
If UUIDs do not need to be frequently generated, the UUIDv1 or UUIDv6 timestamp can
simply be the system time multiplied by the number of 100-nanosecond
intervals per system time interval.</t>
          </dd>
          <dt>Padding:</dt>
          <dd>
            <t>When timestamp padding is required, implementations <bcp14>MUST</bcp14> pad the most significant
bits (left-most) bits with zeros. An example is padding the most significant,
left-most bits of a 32 bit Unix timestamp with zeros to fill out the 48
bit timestamp in UUIDv7.</t>
          </dd>
          <dt>Truncating:</dt>
          <dd>
            <t>When timestamps need to be truncated, the lower, least significant
bits <bcp14>MUST</bcp14> be used. An example would be truncating a 64 bit Unix timestamp
to the least significant, right-most 48 bits for UUIDv7.</t>
          </dd>
          <dt>Error Handling:</dt>
          <dd>
            <t>If a system overruns the generator by requesting too many UUIDs
within a single system time interval, the UUID service <bcp14>SHOULD</bcp14> either
return an error, or stall the UUID generator until the system clock
catches up, and <bcp14>MUST NOT</bcp14> return knowingly duplicate values.
Note that if the processors overrun the UUID generation frequently,
additional node identifiers can be allocated to the system, which
will permit higher speed allocation by making multiple UUIDs
potentially available for each time stamp value.
Similar techniques are discussed in <xref target="distributed_shared_knowledge"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="monotonicity_counters">
        <name>Monotonicity and Counters</name>
        <t>Monotonicity (each subsequent value being greater than the last) is the backbone of time-based sortable UUIDs. Normally, time-based
UUIDs from this document will be monotonic due to an embedded timestamp; however,
implementations can guarantee additional monotonicity via the concepts covered
in this section.</t>
        <t>Care <bcp14>SHOULD</bcp14> be taken to ensure UUIDs generated in batches are
also monotonic. That is, if one thousand UUIDs are generated for the same
timestamp, there <bcp14>SHOULD</bcp14> be sufficient logic for organizing the creation order of
those one thousand UUIDs.
Batch UUID creation implementations <bcp14>MAY</bcp14> utilize a monotonic counter that
<bcp14>SHOULD</bcp14> increment for each UUID created during a given timestamp.</t>
        <t>For single-node UUID implementations that do not need to create batches of
UUIDs, the embedded timestamp within UUID version 6 and 7 can provide
sufficient monotonicity guarantees by simply ensuring that timestamp increments
before creating a new UUID. Distributed nodes are discussed in
<xref target="distributed_shared_knowledge"/>.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> choose one method for single-node UUID implementations
that require batch UUID creation, or are otherwise concerned about monotonicity
with high frequency UUID generation.</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Bits (Method 1):</dt>
          <dd>
            <t>Some implementations allocate a specific number of bits in the
UUID layout to the sole purpose of tallying the total number of UUIDs created
during a given UUID timestamp tick.
A fixed bit-length counter, if present, <bcp14>SHOULD</bcp14> be positioned immediately after the
embedded timestamp. This promotes sortability and allows random data generation
for each counter increment.
With this method, the rand_a section of UUIDv7 <bcp14>SHOULD</bcp14> be used as fixed-length
dedicated counter bits that are incremented by one for every UUID generation.
The trailing random bits generated for each new UUID in rand_b can help produce
unguessable UUIDs. In the event more counter bits are required, the most significant
(left-most) bits of rand_b <bcp14>MAY</bcp14> be used as additional counter bits.</t>
          </dd>
          <dt>Monotonic Random (Method 2):</dt>
          <dd>
            <t>With this method, the random data is extended to also function as a counter.
This monotonic value can be thought of as a "randomly seeded counter" which
<bcp14>MUST</bcp14> be incremented in the least significant position for each UUID created
on a given timestamp tick.
UUIDv7's rand_b section <bcp14>SHOULD</bcp14> be utilized with this method to handle batch
UUID generation during a single timestamp tick.
The increment value for every UUID generation <bcp14>SHOULD</bcp14> be a random integer
of any desired length larger than zero. It ensures the UUIDs retain the required
level of unguessability provided by the underlying entropy.
The increment value <bcp14>MAY</bcp14> be one when the number of UUIDs generated in a particular
period of time is important and guessability is not an issue. However, it
<bcp14>SHOULD NOT</bcp14> be used by implementations that favor unguessablity, as the resulting
values are easily guessable.</t>
          </dd>
          <dt>Replace Left-Most Random Bits with Increased Clock Precision (Method 3):</dt>
          <dd>
            <t>For UUIDv7, which has millisecond timestamp precision, it is possible
to use additional clock precision available on the system to substitute
for up to 12 random bits immediately following the timestamp.  This can provide
values that are time-ordered with sub-millisecond precision, using
however many bits are appropriate in the implementation environment.
With this method, the additional time precision bits <bcp14>MUST</bcp14> follow the
timestamp as the next available bit, in the rand_a field for UUIDv7.
</t>
            <t>To calculate this value, start with the portion of the timestamp
expressed as a fraction of clock's tick value (fraction of a millisecond
for UUIDv7).  Compute the count of possible values that can be represented in
the available bit space, 4096 for the UUIDv7 rand_a field.
Using floating point math, multiply this fraction of a millisecond
value by 4096 and round down (toward zero) to an integer result to arrive at a number
between 0 and the maximum allowed for the indicated bits
which is sorts monotonically based on time. Each increasing fractional
value will result in an increasing bit field value, to the
precision available with these bits.</t>
            <t>For example, let's assume a system timestamp of 1 Jan 2023 12:34:56.1234567.
Taking the precision greater than 1ms gives us a value of 0.4567, as a
fraction of a millisecond.  If we wish to encode this as 12 bits, we can
take the count of possible values that fit in those bits (4096, or 2 to the 12th power)
and multiply it by our millisecond fraction value of 0.4567 and truncate the result to
an integer, which gives an integer value of 1870. Expressed as hexadecimal it is
0x74E, or the binary bits 011101001110.  One can then use those 12 bits
as the most significant (left-most) portion of the random section of the UUID
(e.g. the rand_a field in UUIDv7).
This works for any desired bit length that fits into a UUID, and applications
can decide the appropriate length based on available clock precision, but for
UUIDv7, it is limited to 12 bits at maximum to reserve sufficient space for
random bits.</t>
            <t>The main benefit to encoding additional timestamp precision
is that it utilizes additional time precision already available in the system clock
to provide values that are more likely to be unique, and thus may simplify
certain implementations. This technique can also be used in conjunction with one
of the other methods, where this additional time precision would immediately
follow the timestamp, and then if any bits are to be used as clock sequence
they would follow next.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover topics related solely with creating reliable
fixed-length dedicated counters:</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Seeding:</dt>
          <dd>
            <t>Implementations utilizing the fixed-length counter method <bcp14>SHOULD</bcp14> randomly initialize
the counter with each new timestamp tick.
However, when the timestamp has not incremented, the counter <bcp14>SHOULD</bcp14> be frozen
and incremented via the desired increment logic.
When utilizing a randomly seeded counter alongside Method 1, the random value <bcp14>MAY</bcp14>
be regenerated with each counter increment without impacting sortability.
The downside is that Method 1 is prone to overflows if a counter of adequate
length is not selected or the random data generated leaves little room for
the required number of increments.
Implementations utilizing fixed-length counter method <bcp14>MAY</bcp14> also choose to
randomly initialize a portion counter rather than the entire counter. For
example, a 24 bit counter could have the 23 bits in least-significant, right-most,
position randomly initialized. The remaining most significant, left-most
counter bits are initialized as zero for the sole purpose of guarding against
counter rollovers.</t>
          </dd>
          <dt>Fixed-Length Dedicated Counter Length:</dt>
          <dd>
            <t>Select a counter bit-length that can properly handle
the level of timestamp precision in use.
For example, millisecond precision generally requires a larger counter than a
timestamp with nanosecond precision.
General guidance is that the counter <bcp14>SHOULD</bcp14> be at least 12 bits but no longer
than 42 bits.
Care <bcp14>SHOULD</bcp14> also be given to ensure that the counter length selected leaves
room for sufficient entropy in the random portion of the UUID after the counter.
This entropy helps improve the unguessability characteristics of UUIDs created
within the batch.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover rollover handling with either type of counter
method:</t>
        <dl newline="true">
          <dt>Counter Rollover Guards:</dt>
          <dd>
            <t>The technique from Fixed-Length Dedicated Counter Seeding that describes
allocating a segment of the fixed-length counter as a rollover guard is also
helpful to mitigate counter rollover issues.
This same technique can be used with monotonic random counter methods
by ensuring the total length of a possible increment in the least significant,
right most position is less than the total length of the random being incremented.
As such the most significant, left-most, bits can be incremented as rollover
guarding.</t>
          </dd>
          <dt>Counter Rollover Handling:</dt>
          <dd>
            <t>Counter rollovers <bcp14>SHOULD</bcp14> be handled by the application to avoid sorting issues.
The general guidance is that applications that care about absolute monotonicity
and sortability <bcp14>SHOULD</bcp14> freeze the counter and wait for the timestamp to advance
which ensures monotonicity is not broken.
Alternatively, implementations <bcp14>MAY</bcp14> increment the timestamp ahead of the actual
time and reinitialize the counter.</t>
          </dd>
        </dl>
        <t>Implementations <bcp14>MAY</bcp14> use the following logic to ensure UUIDs featuring embedded
counters are monotonic in nature:</t>
        <ol spacing="normal" type="1"><li>Compare the current timestamp against the previously stored timestamp.</li>
          <li>If the current timestamp is equal to the previous timestamp, increment the
  counter according to the desired method.</li>
          <li>If the current timestamp is greater than the previous timestamp, re-initialize
  the desired counter method to the new timestamp and generate new random bytes
  (if the bytes were frozen or being used as the seed for a monotonic counter).</li>
        </ol>
        <dl newline="true">
          <dt>Monotonic Error Checking:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> check if the currently generated UUID is greater
than the previously generated UUID. If this is not the case then any number
of things could have occurred, such as clock rollbacks,
leap second handling, and counter rollovers. Applications <bcp14>SHOULD</bcp14> embed sufficient
logic to catch these scenarios and correct the problem to ensure that the next
UUID generated is greater than the previous, or at least report an appropriate error.
To handle this scenario, the
general guidance is that application <bcp14>MAY</bcp14> reuse the previous timestamp and
increment the previous counter method.</t>
          </dd>
        </dl>
      </section>
      <section anchor="generator_states">
        <name>UUID Generator States</name>
        <t>The (optional) UUID generator state only needs to be read from stable storage once at boot
time, if it is read into a system-wide shared volatile store (and
updated whenever the stable store is updated).</t>
        <t>This stable storage <bcp14>MAY</bcp14> be used to record various portions of the UUID generation
which prove useful for batch UUID generation purposes and monotonic error checking with UUIDv6 and UUIDv7.
These stored values include but are not limited to last known timestamp, clock sequence, counters, and random data.</t>
        <t>If an implementation does not have any stable store available, then
it <bcp14>SHOULD</bcp14> proceed with UUID generation as if this was the first UUID created within a batch.
This is the least desirable implementation because it will increase the frequency
of creation of values such as clock sequence, counters, or random data, which increases the
probability of duplicates.</t>
        <t>An implementation <bcp14>MAY</bcp14> also return an application error in the event that collision resistance is of the utmost concern.
The semantics of this error are up to the application and implementation.
See <xref target="collision_resistance"/> for more information on weighting collision tolerance in applications.</t>
        <t>For UUIDv1 and UUIDv6, if the node ID can never change (e.g., the network interface card
from which the node ID is derived is inseparable
from the system), or if any change also re-initializes the clock
sequence to a random value, then instead of keeping it in stable
store, the current node ID may be returned.</t>
        <t>For UUIDv1 and UUIDv6, the state does not always need to be written to stable store every
time a UUID is generated.  The timestamp in the stable store can be
periodically set to a value larger than any yet used in a UUID.  As
long as the generated UUIDs have timestamps less than that value, and
the clock sequence and node ID remain unchanged, only the shared
volatile copy of the state needs to be updated.  Furthermore, if the
timestamp value in stable store is in the future by less than the
typical time it takes the system to reboot, a crash will not cause a
re-initialization of the clock sequence.</t>
        <t>If it is too expensive to access shared state each time a UUID is
generated, then the system-wide generator can be implemented to
allocate a block of time stamps each time it is called; a per-
process generator can allocate from that block until it is exhausted.</t>
      </section>
      <section anchor="distributed_shared_knowledge">
        <name>Distributed UUID Generation</name>
        <t>Some implementations <bcp14>MAY</bcp14> desire to utilize multi-node, clustered, applications
which involve two or more
nodes independently generating UUIDs that will be stored in a common location.
While UUIDs already feature sufficient entropy to ensure that the chances
of collision are low, as the total number of UUID generating nodes increase; so does the likelihood
of a collision.</t>
        <t>This section will detail the two additional collision resistance approaches that have been observed by by multi-node
UUID implementations in distributed environments.</t>
        <t>It should be noted that although this section details two methods for the sake of completeness;
implementations <bcp14>SHOULD</bcp14> utilize the pseudo-random Node ID option if additional collision resistance for distributed UUID generation is a requirement.
Likewise, utilization of either method is not required for implementing UUID generation in distributed environments.</t>
        <dl newline="true">
          <dt>Node IDs:</dt>
          <dd>
            <t>With this method, a pseudo-random Node ID value is placed within the UUID
layout.
This identifier helps ensure the bit-space for a given node is unique, resulting
in UUIDs that do not conflict with any other UUID created by another node
with a different node id.
Implementations that choose to leverage an embedded node id <bcp14>SHOULD</bcp14> utilize
UUIDv8.
The node id <bcp14>SHOULD NOT</bcp14> be an IEEE 802 MAC address as per <xref target="Security"/>.
The location and bit length are left to implementations and are outside the
scope of this specification.
Furthermore, the creation and negotiation of unique node ids among nodes
is also out of scope for this specification.</t>
          </dd>
          <dt>Centralized Registry:</dt>
          <dd>
            <t>With this method all nodes tasked with creating UUIDs consult a central registry
and confirm the generated value is unique. As applications scale, the communication
with the central registry could become a bottleneck and impact UUID generation
in a negative way. Shared knowledge schemes with central/global
registries are outside the scope of this specification and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
          </dd>
        </dl>
        <t>Distributed applications generating UUIDs at a variety of hosts <bcp14>MUST</bcp14>
be willing to rely on the random number source at all hosts.</t>
      </section>
      <section anchor="name_based_uuid_generation">
        <name>Name-Based UUID Generation</name>
        <t>The concept of name and name space should be broadly construed and not
limited to textual names.  For example, some name spaces are the
domain name system, URLs, Object Identifiers (OIDs), X.500 Distinguished
Names (DNs), and reserved words in a programming language.  The
mechanisms or conventions used for allocating names and ensuring
their uniqueness within their name spaces are beyond the scope of
this specification.</t>
        <t>The requirements for name-based UUIDs are as follows:</t>
        <ul spacing="normal">
          <li>UUIDs generated at different times from the same name in the
same namespace <bcp14>MUST</bcp14> be equal.</li>
          <li>UUIDs generated from two different names in the same namespace
should be different (with very high probability).</li>
          <li>UUIDs generated from the same name in two different namespaces
should be different (with very high probability).</li>
          <li>If two UUIDs that were generated from names are equal, then they
were generated from the same name in the same namespace (with very
high probability).</li>
        </ul>
        <dl newline="true">
          <dt>A note on namespaces:</dt>
          <dd>
            <t>While <xref target="namespaces"/> details a few interesting namespaces; implementations <bcp14>SHOULD</bcp14> provide the ability input a custom namespace.
For example, any other UUID <bcp14>MAY</bcp14> be generated and used as the desired namespace input for a given application context to
ensure all names created are unique within the newly created namespace.</t>
          </dd>
          <dt>Name-based UUIDs using version 8:</dt>
          <dd>
            <t>As per <xref target="uuidv5"/> name-based UUIDs that desire to use modern hashing algorithms <bcp14>MUST</bcp14> be created within the UUIDv8 space.
 These <bcp14>MAY</bcp14> leverage newer hashing protocols such as SHA-256 or SHA-512 defined by <xref target="FIPS180-4"/>, SHA-3 or SHAKE defined by <xref target="FIPS202"/>, or even protocols that have not been defined yet.
 To ensure UUIDv8 Name-Based UUID values of different hashing protocols can exist in the same bit space; this document defines various "hashspaces" in <xref target="hashspaces"/>.
 Creation of name-based version 8 UUIDs follow the same logic defined in <xref target="uuidv5"/>, but the hashspace should be used to as the starting point with the desired
 namespace and name concatenated to the end of the hashspace.
 Then an implementation may apply the desired hashing algorithm to the entire value after all have been converted to a canonical sequence of octets in network byte order.
 Ensure the version and variant and variant bits are modified as per <xref target="v8"/> bit layout, and finally trim any excess bits beyond 128.
 An important note for secure hashing algorithms that produce variable rate outputs, such as those found in SHAKE, the output hash <bcp14>MUST</bcp14> be 128 bits or larger.
 See <xref target="uuidv8_example_name"/> for a SHA-256 UUIDv8 example test vector.</t>
          </dd>
          <dt>Advertising the Hash Algorithm:</dt>
          <dd>
            <t>Name-based UUIDs utilizing UUIDv8 do not allocate any available bits to identifying the hashing algorithm.
As such where common knowledge about the hashing algorithm for a given UUIDv8 name-space UUID is required, sharing the Hash Space ID proves useful for identifying a the algorithm.
That is, to detail SHA-256 was used to create a given UUIDv8 name-based UUID an implementation may also share the "3fb32780-953c-4464-9cfd-e85dbbe9843d" hash space which uniquely identifies the SHA-256 hashing algorithm for the purpose of UUIDv8. Mind you that this need not be the only method of sharing the hashing algorithm; this is one example of how two systems could share knowledge.
The protocol of choice, communication channels, and actual method of sharing this data between systems it outside the scope of this specification.</t>
          </dd>
        </dl>
      </section>
      <section anchor="collision_resistance">
        <name>Collision Resistance</name>
        <t>Implementations <bcp14>SHOULD</bcp14> weigh the consequences of UUID collisions within their
application and when deciding between UUID versions that use entropy (randomness)
versus the other components such as those in <xref target="timestamp_considerations"/> and <xref target="monotonicity_counters"/>.
This is especially true for distributed node collision resistance as defined
by <xref target="distributed_shared_knowledge"/>.</t>
        <t>There are two example scenarios below which help illustrate the varying seriousness
of a collision within an application.</t>
        <dl newline="true">
          <dt>Low Impact</dt>
          <dd>
            <t>A UUID collision generated a duplicate log entry which results in incorrect
statistics derived from the data. Implementations that are not negatively
affected by collisions may continue with the entropy and uniqueness provided
by the traditional UUID format.</t>
          </dd>
          <dt>High Impact:</dt>
          <dd>
            <t>A duplicate key causes an airplane to receive the wrong course which puts
people's lives at risk. In this scenario there is no margin for error. Collisions
<bcp14>MUST</bcp14> be avoided and failure is unacceptable. Applications dealing with this
type of scenario <bcp14>MUST</bcp14> employ as much collision resistance as possible within
the given application context.</t>
          </dd>
        </dl>
      </section>
      <section anchor="global_local_uniqueness">
        <name>Global and Local Uniqueness</name>
        <t>UUIDs created by this specification <bcp14>MAY</bcp14> be used to provide local uniqueness
guarantees.
For example, ensuring UUIDs created within a local application context are
unique within a database <bcp14>MAY</bcp14> be sufficient for some implementations where
global uniqueness outside of the application context, in other applications,
or around the world is not required.</t>
        <t>Although true global uniqueness is impossible to guarantee without a shared
knowledge scheme, a shared knowledge scheme is not required by UUID to provide
uniqueness for practical implementation purposes.
Implementations <bcp14>MAY</bcp14> implement a shared knowledge scheme introduced in <xref target="distributed_shared_knowledge"/> as they see fit to extend the uniqueness guaranteed this specification.</t>
      </section>
      <section anchor="unguessability">
        <name>Unguessability</name>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize a cryptographically secure pseudo-random number
generator (CSPRNG) to provide values that are both difficult to predict ("unguessable")
and have a low likelihood of collision ("unique").
Care <bcp14>SHOULD</bcp14> be taken to ensure the CSPRNG state is properly reseeded upon
state changes, such as process forks, to ensure proper CSPRNG operation.
CSPRNG ensures the best of <xref target="collision_resistance"/> and <xref target="Security"/> are present in modern UUIDs.</t>
        <t>Further advice on generating cryptographic-quality random numbers can be found in <xref target="RFC4086"/> and in <xref target="RANDOM"/>.</t>
      </section>
      <section anchor="unidentifiable">
        <name>UUIDs That Do Not Identify the Host</name>
        <t>This section describes how to generate a UUIDv1 or UUIDv6 value if an IEEE
802 address is not available, or its use is not desired.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> obtain a 47-bit cryptographic-quality random
number as per <xref target="unguessability"/> and use it as the low 47 bits of the node ID.</t>
        <t>Implementations <bcp14>MUST</bcp14> set the least significant bit of the first octet of the node ID set to one to create a 48-bit node id.
This bit is the unicast/multicast bit, which will never be set in IEEE 802
addresses obtained from network cards.  Hence, there can never be a
conflict between UUIDs generated by machines with and without network
cards.</t>
        <t>For compatibility with earlier specifications, note that this
document uses the unicast/multicast bit, instead of the arguably more
correct local/global bit because MAC addresses with the local/global bit set or not are both possible in a network.
This is not the case with the unicast/multicast bit.
One node cannot have a MAC address that multicasts to multiple nodes.</t>
        <t>In addition, items such as the computer's name and the name of the
operating system, while not strictly speaking random, will help
differentiate the results from those obtained by other systems.</t>
        <t>The exact algorithm to generate a node ID using these data is system
specific, because both the data available and the functions to obtain
them are often very system specific.  A generic approach, however, is
to accumulate as many sources as possible into a buffer, use a
message digest such as MD5 <xref target="RFC1321"/> or SHA-1 <xref target="FIPS180-4"/>, take an arbitrary 6
bytes from the hash value, and set the multicast bit as described
above.</t>
      </section>
      <section anchor="sorting">
        <name>Sorting</name>
        <t>UUIDv6 and UUIDv7 are designed so that implementations that require sorting
(e.g. database indexes) <bcp14>SHOULD</bcp14> sort as opaque raw bytes, without need for
parsing or introspection.</t>
        <t>Time ordered monotonic UUIDs benefit from greater database index locality
because the new values are near each other in the index.
As a result objects are more easily clustered together for better performance.
The real-world differences in this approach of index locality vs random data
inserts can be quite large.</t>
        <t>UUIDs formats created by this specification <bcp14>SHOULD</bcp14> be lexicographically sortable
while in the textual representation.</t>
        <t>UUIDs created by this specification are crafted with big-endian byte order
(network byte order) in mind. If little-endian style is required a custom
UUID format <bcp14>SHOULD</bcp14> be created using UUIDv8.</t>
      </section>
      <section anchor="opacity">
        <name>Opacity</name>
        <t>UUIDs <bcp14>SHOULD</bcp14> be treated as opaque values and implementations <bcp14>SHOULD NOT</bcp14> examine
the bits in a UUID. However,
inspectors <bcp14>MAY</bcp14> refer to <xref target="variant_field"/> and <xref target="version_field"/> when required to determine UUID version and variant.</t>
        <t>As general guidance, we recommend not parsing UUID values unnecessarily,
and instead treating them as opaquely as possible.  Although application-specific
concerns could of course require some degree of introspection
(e.g. to examine the variant, version or perhaps the timestamp of a UUID),
the advice here is to avoid this or other parsing unless absolutely necessary.
Applications typically tend to be simpler, more interoperable, and perform better,
when this advice is followed.</t>
      </section>
      <section anchor="database_considerations">
        <name>DBMS and Database Considerations</name>
        <t>For many applications, such as databases, storing UUIDs as text is unnecessarily
verbose, requiring 288 bits to represent 128 bit UUID values.
Thus, where feasible, UUIDs <bcp14>SHOULD</bcp14> be stored within database applications
as the underlying 128 bit binary value.</t>
        <t>For other systems, UUIDs <bcp14>MAY</bcp14> be stored in binary form or as text, as appropriate.
The trade-offs to both approaches are:</t>
        <ul spacing="normal">
          <li>Storing as binary requires less space and may result in faster data access.</li>
          <li>Storing as text requires more space but may require less translation if the
resulting text form is to be used after retrieval and thus maybe simpler
to implement.</li>
        </ul>
        <t>DBMS vendors are encouraged to provide functionality to generate and store
UUID formats defined by this specification for use as identifiers or left
parts of identifiers such as, but not limited to, primary keys, surrogate
keys for temporal databases, foreign keys included in polymorphic relationships,
and keys for key-value pairs in JSON columns and key-value databases.
Applications using a monolithic database may find using database-generated
UUIDs (as opposed to client-generate UUIDs) provides the best UUID monotonicity.
In addition to UUIDs, additional identifiers <bcp14>MAY</bcp14> be used to ensure integrity
and feedback.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>There is no update required to the IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/>.
Further, at this time the authors and working group have concluded that IANA is not required to track UUIDs used for identifying items such as versions, variants, namespaces, or hashspaces.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> assume that UUIDs are hard to guess.
For example, they <bcp14>MUST NOT</bcp14> be used
as security capabilities (identifiers whose mere possession grants
access).  Discovery of predictability in a random number source will
result in a vulnerability.</t>
      <t>Implementations <bcp14>MUST NOT</bcp14> assume that it is easy to determine if a UUID has been
slightly transposed in order to redirect a reference to another
object.  Humans do not have the ability to easily check the integrity
of a UUID by simply glancing at it.</t>
      <t>MAC addresses pose inherent security risks and <bcp14>SHOULD NOT</bcp14> be used within
a UUID.
Instead CSPRNG data <bcp14>SHOULD</bcp14> be selected from a source with sufficient entropy
to ensure guaranteed
uniqueness among UUID generation. See <xref target="unguessability"/> and <xref target="unidentifiable"/> for more information.</t>
      <t>Timestamps embedded in the UUID do pose a very small attack surface. The
timestamp in conjunction with
an embedded counter does signal the order of creation for a given UUID and
its corresponding data but
does not define anything about the data itself or the application as a whole.
If UUIDs are required for
use with any security operation within an application context in any shape
or form then UUIDv4, <xref target="uuidv4"/> <bcp14>SHOULD</bcp14> be utilized.</t>
      <t>See <xref target="RFC6151"/> for MD5 Security Considerations and <xref target="RFC6194"/> for SHA-1 security considerations.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions of Rich Salz,
Ben Campbell,
Ben Ramsey,
Fabio Lima,
Gonzalo Salgueiro,
Martin Thomson,
Murray S. Kucherawy,
Rick van Rein,
Rob Wilton,
Sean Leonard,
Theodore Y. Ts'o,
Robert Kieffer,
Sergey Prokhorenko,
LiosK.</t>
      <t>As well as all of those in the IETF community and on GitHub to who contributed
to the discussions which resulted in this document.</t>
      <t>This document draws heavily on the OSF DCE specification for UUIDs.
Ted Ts'o provided helpful comments, especially on the byte ordering
section which we mostly plagiarized from a proposed wording he
supplied (all errors in that section are our responsibility,
however).</t>
      <t>We are also grateful to the careful reading and bit-twiddling of Ralf
S. Engelschall, John Larmouth, and Paul Thorpe.  Professor Larmouth
was also invaluable in achieving coordination with ISO/IEC.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="C309" target="https://pubs.opengroup.org/onlinepubs/9696999099/toc.pdf">
          <front>
            <title>DCE: Remote Procedure Call</title>
            <author>
              <organization/>
            </author>
            <date year="1994" month="August"/>
          </front>
          <seriesInfo name="ISBN" value="1-85912-041-5"/>
          <refcontent>Open Group CAE Specification C309</refcontent>
        </reference>
        <reference anchor="X667">
          <front>
            <title>Information Technology, "Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components"</title>
            <author>
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-8:2004"/>
          <seriesInfo name="ITU-T Rec." value="X.667"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier.  With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance.  With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA).  This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="FIPS180-4" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 180-4"/>
        </reference>
        <reference anchor="FIPS202" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 202"/>
        </reference>
        <reference anchor="C311" target="https://pubs.opengroup.org/onlinepubs/9696989899/toc.pdf">
          <front>
            <title>DCE 1.1: Authentication and Security Services</title>
            <author>
              <organization/>
            </author>
            <date year="1997"/>
          </front>
          <refcontent>Open Group CAE Specification C311</refcontent>
        </reference>
        <reference anchor="RANDOM" target="https://peteroupc.github.io/random.html">
          <front>
            <title>Random Number Generator Recommendations for Applications</title>
            <author initials="P." surname="Occil" fullname="Peter Occil">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest">
              <organization/>
            </author>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input.  This memo provides information for the Internet community.  It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach">
              <organization/>
            </author>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <author fullname="R. Salz" initials="R." surname="Salz">
              <organization/>
            </author>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier).  A UUID is 128 bits long, and can guarantee uniqueness across space and time.  UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group).  Information from earlier versions of the DCE specification have been incorporated into this document.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm.  It also updates the security considerations for HMAC-MD5.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6194">
          <front>
            <title>Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms</title>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document includes security considerations for the SHA-0 and SHA-1 message digest algorithm.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6194"/>
          <seriesInfo name="DOI" value="10.17487/RFC6194"/>
        </reference>
        <reference anchor="LexicalUUID" target="https://github.com/twitter-archive/cassie">
          <front>
            <title>A Scala client for Cassandra</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2012" month="November"/>
          </front>
          <seriesInfo name="commit" value="f6da4e0"/>
        </reference>
        <reference anchor="Snowflake" target="https://github.com/twitter-archive/snowflake/releases/tag/snowflake-2010">
          <front>
            <title>Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees.</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2014" month="May"/>
          </front>
          <seriesInfo name="Commit" value="b3f6a3c"/>
        </reference>
        <reference anchor="Flake" target="https://github.com/boundary/flake">
          <front>
            <title>Flake: A decentralized, k-ordered id generation service in Erlang</title>
            <author>
              <organization>Boundary</organization>
            </author>
            <date year="2017" month="February"/>
          </front>
          <seriesInfo name="Commit" value="15c933a"/>
        </reference>
        <reference anchor="ShardingID" target="https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c">
          <front>
            <title>Sharding &amp; IDs at Instagram</title>
            <author>
              <organization>Instagram Engineering</organization>
            </author>
            <date year="2012" month="December"/>
          </front>
        </reference>
        <reference anchor="KSUID" target="https://github.com/segmentio/ksuid">
          <front>
            <title>K-Sortable Globally Unique IDs</title>
            <author>
              <organization>Segment</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Commit" value="bf376a7"/>
        </reference>
        <reference anchor="Elasticflake" target="https://github.com/ppearcy/elasticflake">
          <front>
            <title>Sequential UUID / Flake ID generator pulled out of elasticsearch common</title>
            <author initials="P." surname="Pearcy" fullname="Paul Pearcy">
              <organization/>
            </author>
            <date year="2015" month="January"/>
          </front>
          <seriesInfo name="Commit" value="dd71c21"/>
        </reference>
        <reference anchor="FlakeID" target="https://github.com/T-PWK/flake-idgen">
          <front>
            <title>Flake ID Generator</title>
            <author initials="T." surname="Pawlak" fullname="Tom Pawlak">
              <organization/>
            </author>
            <date year="2020" month="April"/>
          </front>
          <seriesInfo name="Commit" value="fcd6a2f"/>
        </reference>
        <reference anchor="Sonyflake" target="https://github.com/sony/sonyflake">
          <front>
            <title>A distributed unique ID generator inspired by Twitter's Snowflake</title>
            <author>
              <organization>Sony</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="Commit" value="848d664"/>
        </reference>
        <reference anchor="orderedUuid" target="https://itnext.io/laravel-the-mysterious-ordered-uuid-29e7500b4f8">
          <front>
            <title>Laravel: The mysterious "Ordered UUID"</title>
            <author initials="I. B." surname="Cabrera" fullname="Italo Baeza Cabrera">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="COMBGUID" target="https://github.com/richardtallent/RT.Comb">
          <front>
            <title>Creating sequential GUIDs in C# for MSSQL or PostgreSql</title>
            <author initials="R." surname="Tallent" fullname="Richard Tallent">
              <organization/>
            </author>
            <date year="2020" month="December"/>
          </front>
          <seriesInfo name="Commit" value="2759820"/>
        </reference>
        <reference anchor="ULID" target="https://github.com/ulid/spec">
          <front>
            <title>Universally Unique Lexicographically Sortable Identifier</title>
            <author initials="A." surname="Feerasta" fullname="Alizain Feerasta">
              <organization/>
            </author>
            <date year="2019" month="May"/>
          </front>
          <seriesInfo name="Commit" value="d0c7170"/>
        </reference>
        <reference anchor="SID" target="https://github.com/chilts/sid">
          <front>
            <title>sid : generate sortable identifiers</title>
            <author initials="A." surname="Chilton" fullname="Andrew Chilton">
              <organization/>
            </author>
            <date year="2019" month="June"/>
          </front>
          <seriesInfo name="Commit" value="660e947"/>
        </reference>
        <reference anchor="pushID" target="https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html">
          <front>
            <title>The 2^120 Ways to Ensure Unique Identifiers</title>
            <author>
              <organization>Google</organization>
            </author>
            <date year="2015" month="February"/>
          </front>
        </reference>
        <reference anchor="XID" target="https://github.com/rs/xid">
          <front>
            <title>Globally Unique ID Generator</title>
            <author initials="O." surname="Poitrey" fullname="Olivier Poitrey">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="efa678f"/>
        </reference>
        <reference anchor="ObjectID" target="https://docs.mongodb.com/manual/reference/method/ObjectId/">
          <front>
            <title>ObjectId - MongoDB Manual</title>
            <author>
              <organization>MongoDB</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CUID" target="https://github.com/ericelliott/cuid">
          <front>
            <title>Collision-resistant ids optimized for horizontal scaling and performance.</title>
            <author initials="E." surname="Elliott" fullname="Eric Elliott">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="215b27b"/>
        </reference>
        <reference anchor="IEEE754" target="https://standards.ieee.org/ieee/754/6210/">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic.</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2019" month="July"/>
          </front>
          <seriesInfo name="Series" value="754-2019"/>
        </reference>
        <reference anchor="URNNamespaces" target="https://www.iana.org/assignments/urn-namespaces/urn-namespaces.xhtml">
          <front>
            <title>Uniform Resource Names (URN) Namespaces</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022" month="November" day="18"/>
          </front>
        </reference>
        <reference anchor="Python" target="https://docs.python.org/3/library/uuid.html">
          <front>
            <title>UUID objects according to RFC</title>
            <author>
              <organization>Python</organization>
            </author>
            <date year="2023" month="May" day="23"/>
          </front>
        </reference>
        <reference anchor="Microsoft" target="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/a66edeb1-52a0-4d64-a93b-2f5c833d7d92">
          <front>
            <title>curly braced GUID string</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date year="2023" month="April" day="03"/>
          </front>
        </reference>
        <reference anchor="MS_COM_GUID" target="https://devblogs.microsoft.com/oldnewthing/20220928-00/?p=107221">
          <front>
            <title>Why does COM express GUIDs in a mix of big-endian and little-endian? Why can’t it just pick a side and stick with it?</title>
            <author initials="R." surname="Chen" fullname="Raymond Chen">
              <organization/>
            </author>
            <date year="2022" month="September" day="28"/>
          </front>
        </reference>
        <reference anchor="IBM_NCS" target="https://www.ibm.com/docs/en/aix/7.1?topic=u-uuid-gen-command-ncs">
          <front>
            <title>uuid_gen Command (NCS)</title>
            <author>
              <organization>IBM</organization>
            </author>
            <date year="2023" month="March" day="23"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1840?>

<section anchor="namespaces">
      <name>Some Name Space IDs</name>
      <t>This appendix lists the name space IDs for some potentially interesting name spaces such those for
fully-qualified domain names (DNS), uniform resource locators (URLs), ISO OIDs, and X.500 distinguished names (DNs) in distinguished encoding rule (DER) or text format.</t>
      <sourcecode type="code"><![CDATA[
NameSpace_DNS  = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
NameSpace_URL  = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
NameSpace_OID  = "6ba7b812-9dad-11d1-80b4-00c04fd430c8"
NameSpace_X500 = "6ba7b814-9dad-11d1-80b4-00c04fd430c8"
]]></sourcecode>
    </section>
    <section anchor="hashspaces">
      <name>Some Hash Space IDs</name>
      <t>This appendix lists the hash space IDs for use with UUIDv8 name-based UUIDs.</t>
      <sourcecode type="code"><![CDATA[
SHA2_224     = "59031ca3-fbdb-47fb-9f6c-0f30e2e83145"
SHA2_256     = "3fb32780-953c-4464-9cfd-e85dbbe9843d"
SHA2_384     = "e6800581-f333-484b-8778-601ff2b58da8"
SHA2_512     = "0fde22f2-e7ba-4fd1-9753-9c2ea88fa3f9"
SHA2_512_224 = "003c2038-c4fe-4b95-a672-0c26c1b79542"
SHA2_512_256 = "9475ad00-3769-4c07-9642-5e7383732306"
SHA3_224     = "9768761f-ac5a-419e-a180-7ca239e8025a"
SHA3_256     = "2034d66b-4047-4553-8f80-70e593176877"
SHA3_384     = "872fb339-2636-4bdd-bda6-b6dc2a82b1b3"
SHA3_512     = "a4920a5d-a8a6-426c-8d14-a6cafbe64c7b"
SHAKE_128    = "7ea218f6-629a-425f-9f88-7439d63296bb"
SHAKE_256    = "2e7fc6a4-2919-4edc-b0ba-7d7062ce4f0a"
]]></sourcecode>
    </section>
    <section anchor="test_vectors">
      <name>Test Vectors</name>
      <t>Both UUIDv1 and UUIDv6 test vectors utilize the same 60 bit timestamp: 0x1EC9414C232AB00
(138648505420000000) Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00</t>
      <t>Both UUIDv1 and UUIDv6 utilize the same values in clock_seq,
and node. All of which have been generated with random data.</t>
      <t>The pseudocode used for converting from a 64 bit Unix timestamp to a 100ns Gregorian timestamp value
has been left in the document for reference purposes.</t>
      <figure>
        <name>Test Vector Timestamp Pseudo-code</name>
        <sourcecode type="code"><![CDATA[
# Gregorian to Unix Offset:
# The number of 100-ns intervals between the
# UUID epoch 1582-10-15 00:00:00
# and the Unix epoch 1970-01-01 00:00:00
# Greg_Unix_offset = 0x01b21dd213814000 or 122192928000000000

# Unix 64 bit Nanosecond Timestamp:
# Unix NS: Tuesday, February 22, 2022 2:22:22 PM GMT-05:00
# Unix_64_bit_ns = 0x16D6320C3D4DCC00 or 1645557742000000000

# Unix Nanosecond precision to Gregorian 100-nanosecond intervals
# Greg_100_ns = (Unix_64_bit_ns/100)+Greg_Unix_offset

# Work:
# Greg_100_ns = (1645557742000000000/100)+122192928000000000
# Unix_64_bit_ns = (138648505420000000-122192928000000000)*100

# Final:
# Greg_100_ns = 0x1EC9414C232AB00 or 138648505420000000
]]></sourcecode>
      </figure>
      <section anchor="uuidv1_example">
        <name>Example of a UUIDv1 Value</name>
        <figure>
          <name>UUIDv1 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
time_low   32   0xC232AB00
time_mid   16   0x9414
ver         4   0x1
time_high  12   0x1EC
var         2   b10
clock_seq  14   b11, 0x3C8
node       48   0x9E6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   b10
md5_low   62   b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the hexadecimal value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the fields as shown in <xref target="v4fields"/>.</t>
        <t>Finally to further illustrate the bit swapping for version and variant see <xref target="v4vervar"/>.</t>
        <figure anchor="v4fields">
          <name>UUIDv4 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
random_a  48   0x919108f752d1
ver        4   0x4
random_b  12   0x320
var        2   b10
random_c  62   b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   b10
sha1_low   62   b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded SHA-1 segment</name>
          <artwork><![CDATA[
SHA-1 hex and dash:    2ed6657d-e927-468b-55e1-2665a8aea6a2-2dee3e35
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 2ed6657d-e927-568b-95e1-2665a8aea6a2
Discarded:                                                 -2dee3e35
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv6_example">
        <name>Example of a UUIDv6 Value</name>
        <figure>
          <name>UUIDv6 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
time_high   32   0x1EC9414C
time_mid    16   0x232A
ver          4   0x6
time_high   12   0xB00
var          2   b10
clock_seq   14   b11, 0x3C8
node        48   0x9E6BDECED846
-------------------------------------------
total       128
-------------------------------------------
final: 1EC9414C-232A-6B00-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv7_example">
        <name>Example of a UUIDv7 Value</name>
        <t>This example UUIDv7 test vector utilizes a well-known 32 bit Unix epoch with
additional millisecond precision to fill the first 48 bits</t>
        <t>rand_a and rand_b are filled with random data.</t>
        <t>The timestamp is Tuesday, February 22, 2022 2:22:22.00 PM GMT-05:00 represented
as 0x17F22E279B0 or 1645557742000</t>
        <figure>
          <name>UUIDv7 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
unix_ts_ms  48   0x17F22E279B0
ver          4   0x7
rand_a      12   0xCC3
var          2   b10
rand_b      62   b01, 0x8C4DC0C0C07398F
-------------------------------------------
total       128
-------------------------------------------
final: 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example">
        <name>Example of a UUIDv8 Value (time-based)</name>
        <t>This example UUIDv8 test vector utilizes a well-known 64 bit Unix epoch with
nanosecond precision, truncated to the least-significant, right-most, bits
to fill the first 48 bits through version.</t>
        <t>The next two segments of custom_b and custom_c are are filled with random
data.</t>
        <t>Timestamp is Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00 represented
as 0x16D6320C3D4DCC00 or 1645557742000000000</t>
        <t>It should be noted that this example is just to illustrate one scenario for
UUIDv8. Test vectors will likely be implementation specific and vary greatly
from this simple example.</t>
        <figure>
          <name>UUIDv8 Example Time-based Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x320C3D4DCC00
ver        4   0x8
custom_b  12   0x75B
var        2   b10
custom_c  62   b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 320C3D4D-CC00-875B-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> to detail the usage of hash spaces alongside namespace and names.
The field mapping and all values are illustrated in <xref target="v8fieldssha256"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-256 value see <xref target="v8vervar"/>.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Hash Space (SHA2_256): 3fb32780-953c-4464-9cfd-e85dbbe9843d
Name Space (DNS):      6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
401835fda627a70a073fed73f2bc5b2c2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x401835fda627
ver        4   0x8
custom_b  12   0x627
var        2   b10
custom_c  62   b0, 0x73fed73f2bc5b2c
-------------------------------------------
total     128
-------------------------------------------
final: 401835fd-a627-870a-873f-ed73f2bc5b2c
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 401835fd-a627-a70a-073f-ed73f2bc5b2c-2a8936385a38a9c133de0ca4af0dfaed
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 401835fd-a627-870a-873f-ed73f2bc5b2c
D:                                     -2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</li>
          <li>Line B details the version and variant hexadecimal positions which must be overwritten.</li>
          <li>Line C details the final value after the ver/var have been overwritten.</li>
          <li>Line D details the discarded, leftover values from the original SHA-256 computation.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
