<?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-11" 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-11"/>
    <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.
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 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 resulting negative performance effects 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 UUID version 1.
  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 <xref target="RFC4122"/> involved trade
  offs that are neither possible to specify for all applications nor
  necessary to produce interoperable implementations.</li>
          <li>
            <xref target="RFC4122"/> did not distinguish between the requirements for generating a UUID
and those for simply storing one, although they 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
led 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>UUIDv1</dt>
          <dd>
            <t>Universally Unique Identifier Version 1</t>
          </dd>
          <dt>UUIDv2</dt>
          <dd>
            <t>Universally Unique Identifier Version 2</t>
          </dd>
          <dt>UUIDv3</dt>
          <dd>
            <t>Universally Unique Identifier Version 3</t>
          </dd>
          <dt>UUIDv4</dt>
          <dd>
            <t>Universally Unique Identifier Version 4</t>
          </dd>
          <dt>UUIDv5</dt>
          <dd>
            <t>Universally Unique Identifier Version 5</t>
          </dd>
          <dt>UUIDv6</dt>
          <dd>
            <t>Universally Unique Identifier Version 6</t>
          </dd>
          <dt>UUIDv7</dt>
          <dd>
            <t>Universally Unique Identifier Version 7</t>
          </dd>
          <dt>UUIDv8</dt>
          <dd>
            <t>Universally Unique Identifier Version 8</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-11</t>
        <ul spacing="compact">
          <li>Normalize "name space" to "namespace" everywhere #137</li>
          <li>IANA Review: Verbiage to update RFC4122 references #134</li>
          <li>DNSDIR re-review: Better Define "a canonical sequence of octets" #136</li>
          <li>Crosspost: Typo in Approximate UUID timestamp calculations #135</li>
          <li>INTDIR Review #139</li>
        </ul>
        <t>draft-10</t>
        <ul spacing="compact">
          <li>ARTART Review and Feedback #130</li>
          <li>Clarify Hash Space IDs listed are not the only options #132</li>
          <li>Add example to timestamp fuzzing #133</li>
        </ul>
        <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) in size; 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 a bit layout consisting of four octets per 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/802.11 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
the 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 or utilizing an IEEE 802.15.4 16 bit address, a randomly or pseudo-randomly
generated value <bcp14>MUST</bcp14> be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.
For systems utilizing a 64 bit MAC address the least significant, right-most 48 bits <bcp14>MAY</bcp14> be used.</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 "namespace" 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 namespace value concatenated with the desired name value
after both have been converted to a canonical sequence of octets, as defined by the standards or conventions of its namespace, 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>Information around selecting a desired name's canonical format within a given namespace can be found in <xref target="name_based_uuid_generation"/>, "A note on names".</t>
        <t>Some common namespace 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 "namespace" 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 namespace value concatenated with the desired name value
after both have been converted to a canonical sequence of octets, as defined by the standards or conventions of its namespace, 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>Information around selecting a desired name's canonical format within a given namespace can be found in <xref target="name_based_uuid_generation"/>, "A note on names".</t>
        <t>Some common namespace 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 UUIDv1 is used.
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 those of the version and variant fields, 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 a 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 it is
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.
Care must be taken to ensure that timestamp changes from the environment
or operating system are handled in a way that is consistent with implementation
requirements.
For example, if it is possible for the system clock to move backward due
to either manual adjustment or corrections from a time synchronization protocol,
implementations need to determine how to handle such cases. (See Altering, Fuzzing,
or Smearing below.)</t>
          </dd>
          <dt>Source:</dt>
          <dd>
            <t>UUID version 1 and 6 both utilize a Gregorian epoch timestamp while UUIDv7
utilizes a Unix Epoch timestamp. If other timestamp sources or a custom timestamp
epoch are required, UUIDv8 <bcp14>MUST</bcp14> be used.</t>
          </dd>
          <dt>Sub-second Precision and Accuracy:</dt>
          <dd>
            <t>Many levels of precision exist for timestamps: milliseconds, microseconds,
nanoseconds, and beyond.
Additionally fractional representations of sub-second precision may be desired
to mix various levels of precision in a time-ordered manner.
Furthermore, system clocks themselves have an underlying granularity and
it is frequently less than the precision offered by the operating system.
With UUID version 1 and 6, 100-nanoseconds of precision are present while
UUIDv7 features 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 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, to handle leap seconds, or instead of dividing a number of microseconds by 1000 to obtain a millisecond value; dividing by 1024 (or some other value) for performance reasons. 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 zeroes 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 a
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 unguessability, 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.
Care must be taken 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 that 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 (using the same canonical format) in the
same namespace <bcp14>MUST</bcp14> be equal.</li>
          <li>UUIDs generated from two different names (same or differing canonical format) in the same namespace
should be different (with very high probability).</li>
          <li>UUIDs generated from the same name (same or differing canonical format) in two different namespaces
should be different (with very high probability).</li>
          <li>If two UUIDs that were generated from names (using the same canonical format) 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. A canonical sequence of octets is one that conforms to the specification for that name form's canonical representation. A name can have many usual forms, only one of which can be canonical. An implementer of new namespaces for UUIDs needs to reference the specification for the canonical form of names in that space, or define such a canonical for the namespace if it does not exist.
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 one 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 namespace will output different UUIDs. 
As such, the mechanisms or conventions used for allocating names and ensuring their uniqueness within their namespaces 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 UUIDv8:</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 UUID values using UUIDv8 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, as defined by the standards or conventions of its namespace, in network byte order.
 Ensure that the version 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 outputs of an arbitrary size, 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 namespace UUID is required, sharing the hashspace ID proves useful for identifying the algorithm.
That is, to detail that SHA-256 was used to create a given UUIDv8 name-based UUID, an implementation may also share the "3fb32780-953c-4464-9cfd-e85dbbe9843d" hashspace which uniquely identifies the SHA-256 hashing algorithm for the purpose of UUIDv8. Mind you that this needs 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 1, 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>
        <t>Implementations can also leverage MAC address randomization techniques (IEEE 802.11bh) as an alternative to the pseudo-random logic provided in this section.</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, which thus may make it 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>All references to <xref target="RFC4122"/> in the IANA registries should be replaced with references to this document.
References to <xref target="RFC4122"/> document's Section 4.1.2 should be updated to refer to this document's <xref target="format"/>.</t>
      <t>There is no update required to the IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/>.</t>
      <t>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 around privacy 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 1971?>

<section anchor="namespaces">
      <name>Some Namespace IDs</name>
      <t>This appendix lists the namespace IDs for some potentially interesting namespaces 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 Hashspace IDs</name>
      <t>This appendix lists some hashspace 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[
Namespace (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[
Namespace (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 hashspaces <xref target="hashspaces"/> alongside namespaces <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[
Hashspace (SHA2_256):  3fb32780-953c-4464-9cfd-e85dbbe9843d
Namespace (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+y963IbSZYm+J9mfIcY0naT7AFA3AmyprqboqRMdaUuLTI7
q21nVxYAAmSUAAQ6IkCKqc6xeYf9tf/2WfZR5kn2fOfi7hEAKCors6pnulll
ShKI8Mvx4+d+aTab+3t351Fvf2+aTZbxIjmPpnk8K5tpUs6a63U6zZO7Zj6b
9Dvd7jgtmp3O/t4kLs+jopzu72XjIpsnZVKcR9/giW/oy2xZJMtijY/KfJ3Q
R8V6vEiLIs2W5cOKZnj14vrl/t4qPd/fi2icPJ3QeN88JMU3+KDMJtW/psmq
vKWPevxB8bDIk1kRPFJkeRl8FB1G8WSSTpNlGc/nD9Eky/NkUqbLG/d5dN48
3t8r03JOq/lhmd4lecHP0u//sk6iV8/poXSW0sfR0Q8/vHpOT8fjMYGCHqc/
6a88ic+ji/fX+3v3N+eRAmp/7+O9/EHwjEsavNvuEmzp+XV5m+W04WYkUP7D
w09JHr1vRc/ju7TANpJFnM7Po48PU3zy95O0mGStSbbAd1lOk1zik+jqoSiT
ReFHepbH0+jbVvQuicfZ9CEYakzf/P1KPm6lmRvoh+Vknq2nGCJdEtjetaLv
k3hyiwdkzPATHWz1p/np36/vW8l0HQzEoEvLhyibRT/GxS1BucyW2PEyyxdx
Sd/zKV/22mf8C51onN8kdOC3Zbkqzk9OVutx0cpWyfImz9arFg18ki3n6TLB
FydnQ/rf2Vn77OyEUKG1ms50FDm8g+eXL86j98kiK5PoXZ5NaHl5El3SaR7I
gzlh01saPfoWw0eXFy+iq1UyodMlNCaU5KXJo0WSp0mRLmeZLjWKXl09e3Me
dZqjwVmn22z3O82BfCXHe7G+WRdl1Dk76+PjPw6Hp+ePjPX25NWLS0LTs1Gv
3xydd9vt/jfu2+sfmte0k0nrPPpjiwaq7PNv3WM0IgOWVn6dTG6X2Ty7eWhE
B27zRURPROVtYq8QbHN5gQ7p7dUrmuQmpWsnn10wZqZlikv8bbK0Z+Pl1AbI
w+dpjG03Zlq7McUxRsAy0tzGWRdJFBfRxdWbVid6O/4T3crgRbqoi1W2pD+L
gxDGgBL+fv/yst8eDc/tF/1s1Ol3zu0X++ysd3puv+Czl6/eXXVG7WZ/Bw4u
7+aMhkvaZ+smuzvBL4x/ePPkzaur6xZ+a/EgG1h4lUyAdd/RBYiuStp3nCvw
3L3HH025NW8YkPGczrKgAdaEuQRUe69guPmj3YJu3XZnsBPLsEy6wD88i3it
tnsiRH/u3mmIzft39d1Fs+cWTxMn+WJd8g6bz+IimQpUsKcXn8qEnhrPk+bb
Nc1QRi/XywmetAP/a0KLdieEqtP55YRqRP/bTaiiTqtzzhcOOD9x90zwB1T0
Ksnv0klSPJ12dTrhlokQnYL4pkYllPzSVej0unJP8It9dtobndsvdseIjZ/b
L/rZoNvrn9sv+tmwM5Dx8Iv77Kx/br/YXeyfnZ3bL0wkB+32k4jk4Kzf7Oyg
jzTGl+lj6dAi+h///f8WSCr7pOfKJCdZZZkwBvID17dJ9DyFsJDlDwT5O5xG
cg98oycnJIYUjWiRTZO5oF2hp1WlVp0zZQVP2yVYwa5d0hhfvctNPlBlAJnQ
3dTT3Qp5jzfZwTxa+TGZqGerKM4nBYbD+ClgubR7ujkBSWdJDUYdgdHoSTAa
jboEI2KX3Z2AGj0BUJ5KEG25GGPLtM6rB5ITP0VvMiFa0dtlEh0xizqO/nfl
Vclykk0hQObref245TJ9n3yiOzkH59tBPW7S8nY9hkB3Ut6nJUGsSTC8pRt6
MolJOE4qG7iIrmi4OJrMU8irOMlLeoqgn8e7aeW1DFyDdbdpRGILlGk9i5SW
ORtO437CULxaZvezefwx+fqdFPbqSZ7MEyL/xUkZ3/iPm7ScHSflZo1SwrJo
mZT3Wf7R7hhD4EalEzqItQnq0XK9GEPqiMvoNr25teEKAl8S0fJuST9YJFGR
Llb0wc06zmNC16RofS0Y+832bj5yqWAc92bDuDdhrvs0EI6zNTjZwwlvvgKb
b2QIQoZpMiE0oKuY/pRMG9HHZpZPk5yYazp1UCHcNWCly+hFPo+XN9/s3uQz
nbe2y9Om8MFHd9kZTM56PUbEq1viwnQiO/GeNAxCgTxeNIlxErOkUZc3vPNC
X22m06IZk8rpnuxMZoP4tJMM4sGkKmjpK3QzScTEmb+yl3bv1D0SvfAr2Lwj
vO0/XD3pBhfJzQLkLTv5WLC2F6zxD80rUkgh5kTfzrNxVa8sdi/zSsasUZd2
s336Zayb9U6HMT/3Yh6TmDR54v1dkXaYTx5OkuCtmmRL66aNEl0HbYtOBK1x
8RTv6F6u1vM54WJGEh1xBB2rwMi3TF+gEG7Ztaqa8XoO3ZWWUTuTQbO9m27Z
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

-->

</rfc>
