<?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.22 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-02" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="A UUID URN Namespace">A Universally Unique IDentifier (UUID) URN Namespace</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-02"/>
    <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/>
      <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>
      <t>This specification defines a Uniform Resource Name namespace for
UUIDs (Universally Unique IDentifiers), also known as GUIDs (Globally
Unique IDentifiers).  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.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="Background">
      <name>Introduction</name>
      <t>This specification defines a Uniform Resource Name namespace for
UUIDs (Universally Unique IDentifiers), also known as GUIDs (Globally
Unique IDentifiers).  A UUID is 128 bits long, and requires no central
registration process.</t>
      <t>The information here is meant to be a concise guide for those wishing
to implement services using UUIDs as URNs <xref target="RFC8141"/>.  Nothing in this document
should be construed to override the DCE standards that defined UUIDs.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from earlier versions of this document.  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"/>.</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 up to 10 million per second per machine 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 <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 <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 which 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 attempts 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>
      </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>SHA1</dt>
          <dd>
            <t>Secure Hash Algorithm 1</t>
          </dd>
          <dt>UTC</dt>
          <dd>
            <t>Coordinated Universal Time</t>
          </dd>
        </dl>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>changelog</name>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>Change md5_high in SHA1 section to sha1_mid #59</li>
          <li>Describe Nil/Max 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>SHA265 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>Erronous 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 SHA1</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> veribage 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 SHA1 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 octets definitions start at 0 and end at 15.</t>
      <t>UUIDs <bcp14>MAY</bcp14> be represented as binary data or integers.
When in use with URNs or 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 hex 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 previous table observed 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</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>
      <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 Max UUID as per <xref target="maxuuid"/>.</td>
            </tr>
          </tbody>
        </table>
        <t>Interoperability, in any form, with variants other than the one
defined here is not guaranteed, and 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 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 hex representation of 4 (0100)
and the N represents the variant placement for one of the four possible hex 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>
      </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 defined only in terms of fields that are
integral numbers of octets.  The fields are presented with the most
significant one first.</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>
      <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>UUID Version 1 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 can 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 has to
be changed.  If the previous value of the clock sequence is known, it
can just be incremented; otherwise it should 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 could just 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>The version 4 UUID is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random 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
for random_a, random_b, and random_c 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 SHA1 <xref target="SHA1"/>
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 SHA1 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 SHA1 libraries may not be available or deemed unsafe for use.
As such it may be desirable to generate name-based UUIDs derived from SHA256 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 SHA1 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 SHA1 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 SHA1 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 SHA1 hash
and then using the next 62 most significant, left-most bits.
Any leftover SHA1 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 bits remain unchanged from their usage and 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 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
seconds since midnight 1 Jan 1970 UTC, leap seconds excluded.
UUID verion 7 also has improved entropy characteristics over versions 1 or 6.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize UUID version 7 instead of UUID version 1 and 6 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 an optional counter 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>
      </section>
      <section anchor="maxuuid">
        <name>Max UUID</name>
        <t>The Max 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>Max UUID Format</name>
          <artwork><![CDATA[
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
]]></artwork>
        </figure>
      </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 bullet 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>SHOULD</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 should 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>MUST</bcp14> either
return an error, or stall the UUID generator until the system clock
catches up.
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 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.</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 unguessiblity, as the resulting
values are easily guessable.</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>Care <bcp14>MUST</bcp14> be taken to 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 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. 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 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.  If this
is not feasible, the namespace variant should be used.</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 uses 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 SHA256, SHA512, <xref target="SHA3"/> 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 SHA256 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 SHA2-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 SHA2-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 guarantees.
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.</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="SHA1"/>, 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>
      </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>Per <xref target="RFC8141"/> here is the Namespace Registration Template filled out for this namespace and hereby a request to reference this document (when the final version is published) at <xref target="URNNamespaces"/>.  Note that namespace is already listed and this is a request to update that entry to reference this document.</t>
      <t>Namespace Identifier: UUID (formal)</t>
      <t>Version: 1</t>
      <t>Date: 2003-10-01</t>
      <t>Registrant: JTC 1/SC6 (ASN.1 Rapporteur Group)</t>
      <t>Purpose: A UUID is an identifier that is unique across both space and time,
  with respect to the space of all UUIDs.  Since a UUID is a fixed
  size and contains a time field, it is possible for values to
  rollover (around A.D. 3400, depending on the specific algorithm
  used).  A UUID can be used for multiple purposes, from tagging
  objects with an extremely short lifetime, to reliably identifying
  very persistent objects across a network.</t>
      <t>Syntax: The internal representation of a UUID is a specific sequence of
  bits in memory, as described in <xref target="format"/> and <xref target="layout"/>.  To accurately
  represent a UUID as a URN, it is necessary to convert the bit
  sequence to a string representation.</t>
      <t>The formal definition of the UUID string representation is
  provided by the following ABNF and definitions within <xref target="format"/> and more specifically <xref target="sampleURNUUID"/>.</t>
      <t>Assignment: Individual UUID values are generated based on the uniqueness properties otherwise covered in this document with version-specific considerations for each.  Mechanisms include pseudorandom number generation, cryptographic hashing and the option to use IEEE 802 MAC addresses.</t>
      <t>Security and Privacy: The recommended generation algorithms for UUIDs per this document involve pseudorandom number generation and as such do not present additional privacy or data exposure risks beyond any such random value generated.  The use of IEEE 802 MAC addresses which may present security problems has explicitly been made optional and not recommended.</t>
      <t>Interoperability: UUIDs, and UUID values in the form of URNs in particular,
  are opaque values the syntax as covered above has no proposed changes
  and thus no known interoperability issues.</t>
      <t>Resolution: Since UUIDs are not globally resolvable, this is not applicable.</t>
      <t>Documentation: This document and RFC4122. Relevant ancillary documentation: <xref target="NCA"/><xref target="C309"/></t>
      <t>Additional Information: The intention here is simply to include this document
  in any applicable references at <xref target="URNNamespaces"/>. There is no intention
  to change the existing UUID URN registration.  The scope of this document
  pertains solely to the internal structure and versions of UUIDs, the
  textual format and URN registration are specifically out of scope and
  not changing as part of this update.</t>
      <t>Further, the authors and working group have decided that IANA is not required to track UUIDs used for identifying items such as namespaces or hashspaces from <xref target="namespaces"/> and <xref target="hashspaces"/>.</t>
    </section>
    <section anchor="community">
      <name>Community Considerations</name>
      <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.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>MUST NOT</bcp14> assume that UUIDs are hard to guess.
Foe example, they <bcp14>MUST</bcp14> not be used
as security capabilities (identifiers whose mere possession grants
access).  Discovery of predictablity 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</bcp14> not 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 SHA1 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="NCA">
          <front>
            <title>Network Computing Architecture</title>
            <author initials="L." surname="Zahn" fullname="L. Zahn">
              <organization/>
            </author>
            <author initials="T." surname="Dineen" fullname="T. Dineen">
              <organization/>
            </author>
            <author initials="P." surname="Leach" fullname="P. Leach">
              <organization/>
            </author>
            <date year="1990" month="January"/>
          </front>
          <seriesInfo name="ISBN" value="0-13-611674-4"/>
        </reference>
        <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="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="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="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="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="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="SHA1" 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="SHA3" 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="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>
      </references>
    </references>
    <section anchor="namespaces">
      <name>Some Name Space IDs</name>
      <t>This appendix lists the name space IDs for some potentially
   interesting name spaces, as initialized C structures and in the
   string representation defined above.</t>
      <artwork><![CDATA[
   /* Name string is a fully-qualified domain name */
   uuid_t NameSpace_DNS = { /* 6ba7b810-9dad-11d1-80b4-00c04fd430c8 */
       0x6ba7b810,
       0x9dad,
       0x11d1,
       0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8
   };

   /* Name string is a URL */
   uuid_t NameSpace_URL = { /* 6ba7b811-9dad-11d1-80b4-00c04fd430c8 */
       0x6ba7b811,
       0x9dad,
       0x11d1,
       0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8
   };

   /* Name string is an ISO OID */
   uuid_t NameSpace_OID = { /* 6ba7b812-9dad-11d1-80b4-00c04fd430c8 */
       0x6ba7b812,
       0x9dad,
       0x11d1,
       0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8
   };

   /* Name string is an X.500 DN (in DER or a text output format) */
   uuid_t NameSpace_X500 = { /* 6ba7b814-9dad-11d1-80b4-00c04fd430c8 */
       0x6ba7b814,
       0x9dad,
       0x11d1,
       0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8
   };
]]></artwork>
    </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>
      <artwork><![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"
]]></artwork>
    </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>
      <figure>
        <name>Test Vector Timestamp Pseudo-code</name>
        <artwork><![CDATA[
# Unix Nanosecond precision to Gregorian 100-nanosecond intervals
gregorian_100_ns = (Unix_64_bit_nanoseconds / 100) + gregorian_Unix_offset

# 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.
# gregorian_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_nanoseconds = 0x16D6320C3D4DCC00 or 1645557742000000000

# Work:
# gregorian_100_ns = (1645557742000000000 / 100) + 122192928000000000
# (138648505420000000 - 122192928000000000) * 100 = Unix_64_bit_nanoseconds

# Final:
# gregorian_100_ns = 0x1EC9414C232AB00 or 138648505420000000

# Original: 000111101100100101000001010011000010001100101010101100000000
# UUIDv1:   11000010001100101010101100000000|1001010000010100|0001|000111101100
# UUIDv6:   00011110110010010100000101001100|0010001100101010|0110|101100000000
]]></artwork>
      </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_hex: 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 swaping 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 hex value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the feilds 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 SHA1 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 SHA1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA1</name>
          <artwork><![CDATA[
Name Space (DNS):       6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                   www.example.com
-----------------------------------------------
SHA1:                   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 SHA1 segment</name>
          <artwork><![CDATA[
SHA1 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_hex: 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 SHA256 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 SHA256 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
-----------------------------------------------
SHA256:                 401835fda627a70a073fed73f2bc5b2c2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA256 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 SHA256 segment</name>
          <artwork><![CDATA[
SHA256 hex and dash:      401835fd-a627-a70a-073f-ed73f2bc5b2c-2a8936385a38a9c133de0ca4af0dfaed
Ver and Var Overwrite:    xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                    401835fd-a627-870a-873f-ed73f2bc5b2c
Discarded:                                                    -2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+29+XbbaJYn+D+eAiOdGdtZBEVwE6Wc6FOyZEe40pbdliIj
arp7fEASlJAmCRZAagmF+1n6WebJ5v7uvd8CELTlyHBkV1cr8zgkEvjWu69R
FAU3x2EvmOaTZbJIj8NpkczWUZauZ9Fmk02L9CYqZpN+3O2OszLqdINJsj4O
y/U0yMdlPk/XaXkcPsH3T4JJvizTZbnBJ+tikz4Jys14kZVlli/X9ysa/dWL
y5fBKjsOQhqiyCY01JP7tHxCf6/zSeWPabpaX9MnPfxd3i+KdFa6B8q8WHuf
hPthMplk03S5Tubz+3CSF0U6WWfLK/t5eBw9C9bZek7LOAl/XGY3aVHyw/T7
v23S8NUZPZXNsrQIn/7446uzZ+GP78/DczqVcpVM0iAZj+k0+GX6tv5lkSb0
1fvL4PbqONSTCz7eyu/BNFnTtN1OtxcEyWZ9nRfHQRRmS1r/u3b4Ok0m17Qp
uQHvg3SRZPPjcJVs5vP0nxfZpMjLfLZuT/IFfZsXNNUb86EZ7007fJPSvmjv
dsjqZzoqDXedpPN/pmNMJuu8SKfRMl3f5sXH0p/gr2mRXWRXy1b4ajlp0ywy
5PMimYbft8N3aTLOp/du2DF98c8r+bSd5faFv9z/Qif7vh2eJTdZ6Z7/eD/F
B/88ycpJ7k98ig/Ci/tynS7KIFjmxSJZ060BeM5PT/AfAhS50HNZeHiaL1Yb
vvaTYnKdrQkGNkXKT5pjx+96VK/b4f+TXC/5I3NU1c94IU+e+C9d0g6yZZpW
X6t/2vCid6/uvdqH/msCM/HRUSfqxPxJSVeRltlylh/r868unp8fh50o7kXD
OB4e9qM+fXPa6xzp8STFVUpIdr1er8rjg4PVZly281W6vCryzapN0x3kSwKL
FF8cHA3pfzTf0dEBIWB7NZ35Z7x3dvriOHyfLvJ1Gr4r8kk6pbMNTwmu9vi5
ghD4LY0dfo/Bw9OTF+HFKp0QShHNIBLA6/rsRuJoNDiKu1GnH0cD7xBONleb
co2zwPZ+Hg4Pj3eO8/bg1YtTOsSjUa8fjY67nU7/ifny8sfoknYwaR+HP7dp
FH97/8k8RKMxpNGCL9PJ9TKf51f3rXDPbrkM6YlwfZ2aS1ulhTyfz8K3F69o
hquMyJt8dsJwl60zEMrv06V5NllO9f3Cf5yGaKJNU0ObSiFO5TMMgEVkhQ6z
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
PVlhalEunTGtehTNw9pSljy+c90hilwDWhoiV6QFEWLkTU8pAgbrqf9zeG1i
n+plwGu2SK80wbzSSIOWQBpBhrwcqflhdxHudB76zSj4LFT2FaEUIiImIsVQ
hchqoRyXCRMPub1Iy2haZn+ZKXHNx3oz1DQMIjL/EaTNerTwt5JwflMUsyd5
/e8o5t9vDb7F0cB71do4/LqYZl/23KK//zum2Vg3m0J5t2Ka31ZjmlVA/HxI
83Yg+f+aMc0S0hz+Owpp/onr2QlKsdlkna5Kra/5OZnNUmXTbxrAzvKkaVeg
ccYsuniKXuOLAjEqZSjMsICjhkpOSl0XCS9vW6BsVCcbpMx6Zl9gUJ8LEG7D
qCIry+Cc8DXbzE2lT+3htbTyc2DkwIro0Q62FYVDVB05rCsJh37qWaUXnoo+
Wiqq1vZa2igFdlbVUrjXqAQS1soFyJlIjwYRTZ3XlduuShJeGeh/NQePbmnJ
0dxx+C+06/josCOh6nRuq9A8m95xdRwS/83eZGucWoc4aaPRhKgymq/u6/0A
xWTu2gnCMgla86om0BnFw7NAeifph9P730jBmSH6x5rosfZ/DDEKxfU/rMsP
pNV9U9b96xembHLc+r7dbx7RxROOd337Lc7hH7aGJqPd4aMFJ3d9HucZZ1cR
HB1oD7EsuUu4Rz5+dB0cfOpbISvO8WYfaSokqiJN3ylCh66wS7p2o2wZ6QSi
fJmkqkiyo1J67iGc3W8guNN9ieM6QMFX0vhW6tbh7GXxN9hyW7YNOvoX+hXy
XY0w79MPOoTueJfk8gUznQDTTiPdv4/Nb/HIEXjkqM4jRy4JIeEGjb41zVOn
YRsrMmYXc3AQaRYYmQh3xFlJV2DxSXKik9eAy3ZxVwMmXwP7KnUdfLh+MTNu
dSXXJFp6Ta5U32QVVoVJ3oyeVLpYsig0rncys2t3XjZNhkjKcrNgg6TdiilJ
wI5JBR5jZMKW/uq5X03lB2Lj3I0w7na53nMw23bL2TVoiapLLiQ3oVcJdNUz
Zzu2qCvXlubQKBExP4pDuatSnVlcsCOuwMSNm8IkZbbeJLbstGs1TdOLBUaS
b3LUqUSD4T+F2/F5t/wIkm+4OwBKcOlqPPuOeiD8appeBb5bzeHxbr5ekq15
bghC2jPe1Yw4ME3fYANDcynZIO+O27FeZ2yuu7aV7bxiJ7RR7u+oBtz/ECKN
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
deD/B0vgu6SQUQEA

-->

</rfc>
