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

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

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

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

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

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

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

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

# Final:
# Greg_100_ns = 0x1EC9414C232AB00 or 138648505420000000
]]></sourcecode>
      </figure>
      <section anchor="uuidv1_example">
        <name>Example of a UUIDv1 Value</name>
        <figure>
          <name>UUIDv1 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
time_low   32   0xC232AB00
time_mid   16   0x9414
ver         4   0x1
time_high  12   0x1EC
var         2   0b10
clock_seq  14   0b11, 0x3C8
node       48   0x9E6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   0b10
md5_low   62   0b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the hexadecimal value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the fields as shown in <xref target="v4fields"/>.</t>
        <t>Finally to further illustrate the bit swapping for version and variant see <xref target="v4vervar"/>.</t>
        <figure anchor="v4fields">
          <name>UUIDv4 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
random_a  48   0x919108f752d1
ver        4   0x4
random_b  12   0x320
var        2   0b10
random_c  62   0b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   0b10
sha1_low   62   0b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded SHA-1 segment</name>
          <artwork><![CDATA[
SHA-1 hex and dash:    2ed6657d-e927-468b-55e1-2665a8aea6a2-2dee3e35
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 2ed6657d-e927-568b-95e1-2665a8aea6a2
Discarded:                                                 -2dee3e35
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv6_example">
        <name>Example of a UUIDv6 Value</name>
        <figure>
          <name>UUIDv6 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
time_high   32   0x1EC9414C
time_mid    16   0x232A
ver          4   0x6
time_high   12   0xB00
var          2   0b10
clock_seq   14   0b11, 0x3C8
node        48   0x9E6BDECED846
-------------------------------------------
total       128
-------------------------------------------
final: 1EC9414C-232A-6B00-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv7_example">
        <name>Example of a UUIDv7 Value</name>
        <t>This example UUIDv7 test vector utilizes a well-known Unix epoch timestamp with
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   0b10
rand_b      62   0b01, 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 timestamp 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 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   0b10
custom_c  62   0b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 320C3D4D-CC00-875B-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> to detail the usage of hash spaces <xref target="hashspaces"/> alongside namespace <xref target="namespaces"/> and names.
The field mapping and all values are illustrated in <xref target="v8fieldssha256"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-256 value see <xref target="v8vervar"/>.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Hash Space (SHA2_256): 3fb32780-953c-4464-9cfd-e85dbbe9843d
Name Space (DNS):      6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
401835fda627a70a073fed73f2bc5b2c2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x401835fda627
ver        4   0x8
custom_b  12   0x70a
var        2   0b10
custom_c  62   0b00, 0x73fed73f2bc5b2c
-------------------------------------------
total     128
-------------------------------------------
final: 401835fd-a627-870a-873f-ed73f2bc5b2c
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 401835fd-a627-a70a-073f-ed73f2bc5b2c-2a8936385a38a9c133de0ca4af0dfaed
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 401835fd-a627-870a-873f-ed73f2bc5b2c
D:                                     -2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</li>
          <li>Line B details the version and variant hexadecimal positions which must be overwritten.</li>
          <li>Line C details the final value after the ver/var have been overwritten.</li>
          <li>Line D details the discarded, leftover values from the original SHA-256 computation.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y96XYjWXIm+N+fwps8M0FKAIh9YXaqxGAwMqmMTUFGZep0
98RxAA7SKwA45O7gklT00Tv0r/k3v+ZB5lH0JGOfmd3FHQCDkZWZJamaJUWS
gPtd7Nq1fanX68HNcdgJpulkGS3i43CaRbOinsTFrL5eJ9Msvqlns0m31W6P
k7zeHAWTqDgO82IapOM8ncdFnB+Hz/D9s2CSLvN4ma/xSZGt42dBvh4vkjxP
0mVxv6LRz88uXwar5DgIaYgsmdBQz+7j/Bn9XaST0h/TeFVc0ycd/J3fL7J4
lrsH8jQrvE/C/TCaTJJpvCyi+fw+nKRZFk+KZHllPw+P64dBkRRzWsaHZXIT
Zzk/Sr//8zoOz1/QM8ksoY/Dgw8fzl8cBtF4TNunp+mvIMri6Dg8eX8Z3F4d
hwqa4NOt/B5Mo4LGbTfbnSCI1sV1mh0H9VBA+sP9z3EWvm+EL6KbJKfFx4so
mR+Hn+6n+ODvJ0k+SRuTdEFfpRmNfooPwov7vIgXuR3meRZNw+8a4bs4GqfT
ezfOmL74+5V82khSM8qH5WSerqf0frIkOL1rhK/iaHJNX8t43gc60OpP88Hf
r28b8XTtBmFIJcV9mM7CH6P8mmBapMsgWKbZIiroWxzmaac5wn/p5KLsKqZj
vS6KVX58dLRaj/NGuoqXV1m6XjVo0KN0OU+WMb44GvXpf6NRczQ6oiNvrKYz
GUSOae/F6dlx+D5epEUcvsvSCS0si8NTOrc9fi4jlHlLY4ffYfDw9OQsvFjF
EzpGwlJCOl4XP5nHWRLnyXKWyjLD8Pzi+ZvjsFUf9katdr3ZbdV7/I2c5Mn6
ap0XYWs06tKnP/X7g+Od47w9Oj87JUQcDTvd+vC43Wx2n5kvLz/UL2kHk8Zx
+FODRvG393fmIRqNYUkLvown18t0nl7d18I9u+U8pCfC4jrWNwiemTxPh/L2
4pxmuEroQslnJ4x/SZHgan4XL82z0XKq72f+4zTEtvswrdyH/BADYBFJpsOs
8ziM8vDk4k2jFb4d/4lunPceXcLFKl3Sn/meB1mAh/58//K02xz2j80v8tGw
1W0dm1/0o1FncGx+oY9enr+7aA2b9e52fFvezBnllrTBxlV6c4RfGNfw4tGb
84vLBn5r8BhVjLuIJ8Cw7wnPw4uC9htlAjNzp/F7Xa7GGwZfNKfzy+n1NeEo
gdK8lTO03HFu4la72ertwCkskC7oh+chr1J3TdTlz9wzjbBxxy6+P6l37LJp
1jhbrAveW/15lMdTgQZ2c3ZXxPTUeB7X365pgiJ8uV5O8KSe8F8KSrQvJkKt
1i8mQkP6304iFLYarWO+V0Duib1Ogi8gjhdxdpNM4vzJdKnV8vZKZGYQBImh
A0JTCeVbnbZcB/yiHw06w2Pzi94jYr7H5hf5qNfudI/NL/JRv9WTsfCL+WjU
PTa/6G3rjkbH5hdQvl6z+QTK1xt1663tRI8G+BLRK+z5h//2r/9LIKfcj54r
4owEi2XMiMYPXF7H4YsEDD7N7gnSNwB+fAvEoicnJDjktXCRTuO54Feuh1Oi
Qq2REPanbA+Efcf2aICv3N4mVS/T81QIaeIIaYlcR5vUfR6u3JhMpNNVGGWT
HMNh/ARAXJqbuDkBiVJxGTgtBs7wCcAZDtsEHOJ67V0QGn4RQo4AENk4GWOv
tMCLe5Lm7sI3qVCj8O0yDg+Y2RyG/6dynXg5SacQ87L1vHLAfGNexXd05+Zg
YNtJw1VSXK/HkL6OitukIDjVCXLXdAePJhFJrrG/9pPwggaLwsk8gUSJ4zul
hwjkWbSLAF7KqGXwtut6/zchSytZJLTAWX8adWOA7mKZ3s7m0af4q3eQmzeP
sngeEzHPj4royn1cp6VsPRw7ZZgQRoXLuLhNs0/mIvHGr1SwINivjQgdLteL
MSSGqAivk6trHS0noMUhre2a5PZFHObJYkUfXK2jLCLMjPPGVwGvW2/uYgmn
CrxxZ9aPOhMwzicBbpyuwY/uj3jTPkSeyQB09NN4QodOty35OZ7Wwk/1NJvG
GfHHZGqBQVhqYJQsw7NsHi2vnu3a3HOdtLy7QZ2Z2WO7a/Umo04HGHdxTUyU
jmAXdpPkTweeRYs68T7idzTk8op3nOub9WSa1yPS+OyTrcmsFw1acS/qTUqy
kb5Bd4+kQRzxuXln1w7tA+GZm37jJmC7P1w85Ybm8dUCRCs9+pRD6/JW90P9
glRCyCbhd/N0XFbt8l0LvJABy3SjWW8OvoRfs86gH+Gps3lEcs3kafdzRVpa
Nrk/ir2XyuInrZf2R0QaFCs8EvTFzVIMo4u3Ws/nhHUpiV9E3nWoHANfM/Eg
5Wxzt6ryRes59EdaQ/kUevXmLnpktjydDloTpqm8piec1mX93Y8/yI0iLKMN
+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
PUzdF9H851rwmn6N4nn4Oo44CawWPCdgnBIujeP5XP56Hy3ymFTBl4ToafiK
JJ5a8F26/DmapxiF7kCSpTQUh2YSQqaLPF3S3yQNkRhx0Qh/IB5D27ulMd5L
fX/E+ST0zPt0HP6YzAs8fxHTx69i4vXZtIa9pVPcmX8iHM+fpfxsnBXhD0nM
ljt6PrsifvAuSz8RBOLlJ3rmVZLmP4j6exvjtnBjJjG7arwNM/Ozy5cm5kkb
ExGSfJcU36/HoHmEhQ5qRBBMuTHpnKVebRc9Yu6tF1drssBdnC3tH+XMo5vE
pdi9vXgZvjg92yKlqg/skobG7l37E1NEUdR4cGkv+EeHdeYV2PZsIrp4OCSl
gh5ezaOrhHj9z45YQo1hXnKrddau0bBsJX1UDwBJDuBQG1dUWC+XBHxxL4IV
sFkoYi1QEy2yuX6UqCEO0zPIatM46Bv8mWm+habV1ovbZCpVMoG10XwWEDad
La/ieU5oS/gZ/kN6TUgTZQsiMteiQ7+LaCTCwmwFWwShx4y7QdqngttIU2GT
JSRk43SF0yW+keIxvH1HUMLzi7dH52enECXr9Tp3LGQRCJYKCH02MDLXpEeV
AhULiBTBpnVHugN7FYw7ILdv2egJvwtkNR3BpENooUiJj82CpySc1b4yaerL
KUk1JW1fyh4jmP1P+gnR2oBzBxhUH2lRYfhtuNcfR4PxsNWsj6bRtN5qTVv1
YXPcrTebk2Z3Nu12mpPhnvcerc9/r/XU95Cf5L3Xfup72J73Xvfx97BTixil
iFkghhdJvxMvvIBUgxeW5W2Ph81LECbe0v7YbndD/NC6e6NmpzWJOvXZeDqu
dwezcX0060/qzVmnGbfjYafV7e3pW72+eetJwbPyVmdo54r7w2azN2zVZ51O
p94ddsf14WAwrPebrdmsPe4Np9FQ30KShb7VnE3jdnvWrseDcVQnWNKZDnod
mrAdR8PhLOrMRu4t3hveanYm3A940p3F9e541KtH/UG73py0+5PWeDDqddv+
W7Q3emvUHfSiabNZ7wz6o3p30hzUR/1uu96L6WJ0Bp12p9nntzo+DEeD/nDQ
b83q0aRHK2yN4noE389gErU7o3jYbPci85aDIa2uO+33CejN7qDe7dGWhjO8
1Yx7o04LYw70LQ+Gw0GbYN8Z1dv9Tp/2NZ3Wx9OoXx/3p5N2NGyPW+OOvuXB
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

-->

</rfc>
