<?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-10" 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-10"/>
    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <author initials="B. G." surname="Peabody" fullname="Brad G. Peabody">
      <organization>Uncloud</organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </author>
    <author initials="P." surname="Leach" fullname="P. Leach">
      <organization>University of Washington</organization>
      <address>
        <email>pjl7@uw.edu</email>
      </address>
    </author>
    <date year="2023"/>
    <area>ART</area>
    <workgroup>uuidrev</workgroup>
    <keyword>uuid</keyword>
    <abstract>
      <?line 272?>

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

<section anchor="Background">
      <name>Introduction</name>
      <t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and requires no central
registration process.</t>
      <t>The use of UUIDs is extremely pervasive in computing.  They comprise
the core identifier infrastructure for many operating systems
such as Microsoft Windows and applications such as the Mozilla Web browser and in
many cases, become exposed in many non-standard ways.</t>
      <t>This specification attempts to standardize that practice as openly as
possible and in a way that attempts to benefit the entire Internet.
The information here is meant to be a concise guide for those wishing
to implement services using UUIDs, UUIDs in combination with URNs <xref target="RFC8141"/>, or otherwise.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from <xref target="RFC4122"/>.  Both sets of
specifications have been aligned and are fully technically
compatible.  In addition, a global registration function is being
provided by the Telecommunications Standardization Bureau of ITU-T;
for details see <eref target="https://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx"/>.
Nothing in this document should be construed to override the DCE standards that defined UUIDs.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although one format uses
IEEE 802 node identifiers, others do not).  As a result, generation
on demand can be completely automated and used for a variety of
purposes.  The UUID generation algorithm described here supports very
high allocation rates of 10 million per second per machine or more if
necessary, so that they could even be used as transaction IDs.</t>
      <t>UUIDs are of a fixed size (128 bits), which is reasonably small
compared to other alternatives.  This lends itself well to sorting,
ordering, and hashing of all sorts, storing in databases, simple
allocation, and ease of programming in general.</t>
      <t>Since UUIDs are unique and persistent, they make excellent Uniform
Resource Names.  The unique ability to generate a new UUID without a
registration process allows for UUIDs to be one of the URNs with the
lowest minting cost.</t>
      <section anchor="update-motivation">
        <name>Update Motivation</name>
        <t>Many things have changed in the time since UUIDs were originally created.
Modern applications have a need to create and utilize UUIDs as the primary
identifier for a variety of different items in complex computational systems,
including but not limited to database keys, file names, machine or system
names, and identifiers for event-driven transactions.</t>
        <t>One area in which UUIDs have gained popularity is 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-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 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, a randomly or pseudo-randomly
generated value may be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
      </section>
      <section anchor="uuidv2">
        <name>UUID Version 2</name>
        <t>UUID version 2 is known as DCE Security UUIDs <xref target="C309"/> and <xref target="C311"/>.
As such, the definition of these UUIDs is outside the scope of this specification.</t>
      </section>
      <section anchor="uuidv3">
        <name>UUID Version 3</name>
        <t>UUID version 3 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv3 values are created by computing an MD5 <xref target="RFC1321"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This MD5 value is then used to populate all 128 bits of the UUID layout.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>.</t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>Where possible UUIDv5 <bcp14>SHOULD</bcp14> be used in lieu of UUIDv3.
For more information on MD5 security considerations see <xref target="RFC6151"/>.</t>
        <figure>
          <name>UUIDv3 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          md5_high             |  ver  |       md5_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>md5_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed MD5 value. Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0011 (3).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>md5_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following md5_high
from the computed MD5 value.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>md5_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with the least-significant, right-most bits of the final 64 bits
from the computed MD5 value. Occupies bits 66 through 127 (octets 8-15)</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv4">
        <name>UUID Version 4</name>
        <t>UUID version 4 is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random data which is
used to fill out the UUID fields in <xref target="uuidv4fields"/>. The UUID version
and variant then replace the respective bits as defined by <xref target="version_field"/>
and <xref target="variant_field"/>.</t>
        <t>Alternatively, an implementation <bcp14>MAY</bcp14> choose to randomly generate the exact required number of bits for
random_a, random_b, and random_c (122 bits total), and then concatenate the version and variant in the required position.</t>
        <t>For guidelines on random data generation see <xref target="unguessability"/>.</t>
        <figure anchor="uuidv4fields">
          <name>UUIDv4 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          random_a             |  ver  |       random_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>random_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled with random data as specified in <xref target="unguessability"/>. Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0100 (4).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>random_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled random data as per <xref target="unguessability"/>. Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>random_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with random data as per <xref target="unguessability"/>. Occupies bits 66 through 127 (octets 8-15).</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv5">
        <name>UUID Version 5</name>
        <t>UUID version 5 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv5 values are created by computing an SHA-1 <xref target="FIPS180-4"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This SHA-1 value is then used to populate all 128 bits of the UUID layout. Excess bits beyond 128 are discarded.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>.</t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>There may be scenarios, usually depending on organizational security policies, where SHA-1 libraries may not be available or deemed unsafe for use.
As such, it may be desirable to generate name-based UUIDs derived from SHA-256 or newer SHA methods. These name-based UUIDs <bcp14>MUST NOT</bcp14> utilize UUIDv5 and <bcp14>MUST</bcp14> be within the UUIDv8 space defined by <xref target="v8"/>.
For implementation guidance around utilizing UUIDv8 for name-based UUIDs refer to the sub-section of <xref target="name_based_uuid_generation"/>.</t>
        <t>For more information on SHA-1 security considerations see <xref target="RFC6194"/>.</t>
        <figure>
          <name>UUIDv5 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         sha1_high             |  ver  |      sha1_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>sha1_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed SHA-1 value.
Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0101 (5).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>sha1_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following sha1_high
from the computed SHA-1 value.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>sha1_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled by skipping the 2 most significant, left-most bits of the remaining SHA-1 hash
and then using the next 62 most significant, left-most bits.
Any leftover SHA-1 bits are discarded and unused. Occupies bits 66 through 127 (octets 8-15).</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv6">
        <name>UUID Version 6</name>
        <t>UUID version 6 is a field-compatible version of UUIDv1 <xref target="uuidv1"/>, reordered for improved
DB locality.
It is expected that UUIDv6 will primarily be used in contexts where 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 for performance reasons such as dividing a microsecond by 1024 (or some other value) instead of 1000 to obtain a millisecond value. 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 in the
same namespace <bcp14>MUST</bcp14> be equal.</li>
          <li>UUIDs generated from two different names in the same namespace
should be different (with very high probability).</li>
          <li>UUIDs generated from the same name in two different namespaces
should be different (with very high probability).</li>
          <li>If two UUIDs that were generated from names are equal, then they
were generated from the same name in the same namespace (with very
high probability).</li>
        </ul>
        <dl newline="true">
          <dt>A note on names:</dt>
          <dd>
            <t>The concept of name (and namespace) should be broadly construed and not limited to textual names.
For example, at the time of this specification, <xref target="RFC8499"/> domain name system (DNS) has three conveyance formats: common (www.example.com), presentation (www.example.com.) and wire format (3www7example3com0).
Looking at <xref target="X500"/> distinguished names (DNs), the previous version of this specification allowed either text based or binary distinguished encoding rules (DER) based names as inputs.
For <xref target="RFC1738"/> uniform resource locators (URLs), one could provide a fully-qualified domain-name (FQDN) with or without the protocol identifier (www.example.com) or (https://www.example.com).
When it comes to <xref target="X660"/> object identifiers (OIDs) one could choose dot-notation without the leading dot (2.999), choose to include the leading dot (.2.999) or select 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 name space will output different UUIDs. 
As such, the mechanisms or conventions used for allocating names and ensuring their uniqueness within their name spaces are beyond the scope of this specification.</t>
          </dd>
          <dt>A note on namespaces:</dt>
          <dd>
            <t>While <xref target="namespaces"/> details a few interesting namespaces; implementations <bcp14>SHOULD</bcp14> provide the ability to input a custom namespace.
For example, any other UUID <bcp14>MAY</bcp14> be generated and used as the desired namespace input for a given application context to
ensure all names created are unique within the newly created namespace.</t>
          </dd>
          <dt>Name-based UUIDs using 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 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 name-space UUID is required, sharing the Hash Space 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" hash space 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>
      </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>There is no update required to the IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/>.
Further, at this time the authors and working group have concluded that IANA is not required to track UUIDs used for identifying items such as versions, variants, namespaces, or hashspaces.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> assume that UUIDs are hard to guess.
For example, they <bcp14>MUST NOT</bcp14> be used
as security capabilities (identifiers whose mere possession grants
access).  Discovery of predictability in a random number source will
result in a vulnerability.</t>
      <t>Implementations <bcp14>MUST NOT</bcp14> assume that it is easy to determine if a UUID has been
slightly transposed in order to redirect a reference to another
object.  Humans do not have the ability to easily check the integrity
of a UUID by simply glancing at it.</t>
      <t>MAC addresses pose inherent security risks and <bcp14>SHOULD NOT</bcp14> be used within
a UUID.
Instead CSPRNG data <bcp14>SHOULD</bcp14> be selected from a source with sufficient entropy
to ensure guaranteed
uniqueness among UUID generation. See <xref target="unguessability"/> and <xref target="unidentifiable"/> for more information.</t>
      <t>Timestamps embedded in the UUID do pose a very small attack surface. The
timestamp in conjunction with
an embedded counter does signal the order of creation for a given UUID and
its corresponding data but
does not define anything about the data itself or the application as a whole.
If UUIDs are required for
use with any security operation within an application context in any shape
or form then UUIDv4, <xref target="uuidv4"/> <bcp14>SHOULD</bcp14> be utilized.</t>
      <t>See <xref target="RFC6151"/> for MD5 Security Considerations and <xref target="RFC6194"/> for SHA-1 security considerations.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions of Rich Salz,
Michael Mealling,
Ben Campbell,
Ben Ramsey,
Fabio Lima,
Gonzalo Salgueiro,
Martin Thomson,
Murray S. Kucherawy,
Rick van Rein,
Rob Wilton,
Sean Leonard,
Theodore Y. Ts'o,
Robert Kieffer,
Sergey Prokhorenko,
LiosK.</t>
      <t>As well as all of those in the IETF community and on GitHub to who contributed
to the discussions which resulted in this document.</t>
      <t>This document draws heavily on the OSF DCE specification for UUIDs.
Ted Ts'o provided helpful comments, especially on the byte ordering
section which we mostly plagiarized from a proposed wording he
supplied (all errors in that section are our responsibility,
however).</t>
      <t>We are also grateful to the careful reading and bit-twiddling of Ralf
S. Engelschall, John Larmouth, and Paul Thorpe.  Professor Larmouth
was also invaluable in achieving coordination with ISO/IEC.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="C309" target="https://pubs.opengroup.org/onlinepubs/9696999099/toc.pdf">
          <front>
            <title>DCE: Remote Procedure Call</title>
            <author>
              <organization/>
            </author>
            <date year="1994" month="August"/>
          </front>
          <seriesInfo name="ISBN" value="1-85912-041-5"/>
          <refcontent>Open Group CAE Specification C309</refcontent>
        </reference>
        <reference anchor="X667">
          <front>
            <title>Information Technology, "Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components"</title>
            <author>
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-8:2004"/>
          <seriesInfo name="ITU-T Rec." value="X.667"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="FIPS180-4" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 180-4"/>
        </reference>
        <reference anchor="FIPS202" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 202"/>
        </reference>
        <reference anchor="C311" target="https://pubs.opengroup.org/onlinepubs/9696989899/toc.pdf">
          <front>
            <title>DCE 1.1: Authentication and Security Services</title>
            <author>
              <organization/>
            </author>
            <date year="1997"/>
          </front>
          <refcontent>Open Group CAE Specification C311</refcontent>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC1738">
          <front>
            <title>Uniform Resource Locators (URL)</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="M. McCahill" initials="M." surname="McCahill"/>
            <date month="December" year="1994"/>
            <abstract>
              <t>This document specifies a Uniform Resource Locator (URL), the syntax and semantics of formalized information for location and access of resources via the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1738"/>
          <seriesInfo name="DOI" value="10.17487/RFC1738"/>
        </reference>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm. It also updates the security considerations for HMAC-MD5. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6194">
          <front>
            <title>Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms</title>
            <author fullname="T. Polk" initials="T." surname="Polk"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document includes security considerations for the SHA-0 and SHA-1 message digest algorithm. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6194"/>
          <seriesInfo name="DOI" value="10.17487/RFC6194"/>
        </reference>
        <reference anchor="RFC8499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="8499"/>
          <seriesInfo name="DOI" value="10.17487/RFC8499"/>
        </reference>
        <reference anchor="X500">
          <front>
            <title>Information technology – Open Systems Interconnection – The Directory: Overview of concepts, models and services</title>
            <author>
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9594-1"/>
          <seriesInfo name="ITU-T Rec." value="X.500"/>
        </reference>
        <reference anchor="X660">
          <front>
            <title>Information technology – Procedures for the operation of object identifier registration authorities: General procedures and top arcs of the international object identifier tree</title>
            <author>
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-1"/>
          <seriesInfo name="ITU-T Rec." value="X.660"/>
        </reference>
        <reference anchor="X680">
          <front>
            <title>Information Technology - Abstract Syntax Notation One (ASN.1) &amp; ASN.1 encoding rules</title>
            <author>
              <organization/>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
          <seriesInfo name="ITU-T Rec." value="X.680"/>
        </reference>
        <reference anchor="LexicalUUID" target="https://github.com/twitter-archive/cassie">
          <front>
            <title>A Scala client for Cassandra</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2012" month="November"/>
          </front>
          <seriesInfo name="commit" value="f6da4e0"/>
        </reference>
        <reference anchor="Snowflake" target="https://github.com/twitter-archive/snowflake/releases/tag/snowflake-2010">
          <front>
            <title>Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees.</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2014" month="May"/>
          </front>
          <seriesInfo name="Commit" value="b3f6a3c"/>
        </reference>
        <reference anchor="Flake" target="https://github.com/boundary/flake">
          <front>
            <title>Flake: A decentralized, k-ordered id generation service in Erlang</title>
            <author>
              <organization>Boundary</organization>
            </author>
            <date year="2017" month="February"/>
          </front>
          <seriesInfo name="Commit" value="15c933a"/>
        </reference>
        <reference anchor="ShardingID" target="https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c">
          <front>
            <title>Sharding &amp; IDs at Instagram</title>
            <author>
              <organization>Instagram Engineering</organization>
            </author>
            <date year="2012" month="December"/>
          </front>
        </reference>
        <reference anchor="KSUID" target="https://github.com/segmentio/ksuid">
          <front>
            <title>K-Sortable Globally Unique IDs</title>
            <author>
              <organization>Segment</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Commit" value="bf376a7"/>
        </reference>
        <reference anchor="Elasticflake" target="https://github.com/ppearcy/elasticflake">
          <front>
            <title>Sequential UUID / Flake ID generator pulled out of elasticsearch common</title>
            <author initials="P." surname="Pearcy" fullname="Paul Pearcy">
              <organization/>
            </author>
            <date year="2015" month="January"/>
          </front>
          <seriesInfo name="Commit" value="dd71c21"/>
        </reference>
        <reference anchor="FlakeID" target="https://github.com/T-PWK/flake-idgen">
          <front>
            <title>Flake ID Generator</title>
            <author initials="T." surname="Pawlak" fullname="Tom Pawlak">
              <organization/>
            </author>
            <date year="2020" month="April"/>
          </front>
          <seriesInfo name="Commit" value="fcd6a2f"/>
        </reference>
        <reference anchor="Sonyflake" target="https://github.com/sony/sonyflake">
          <front>
            <title>A distributed unique ID generator inspired by Twitter's Snowflake</title>
            <author>
              <organization>Sony</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="Commit" value="848d664"/>
        </reference>
        <reference anchor="orderedUuid" target="https://itnext.io/laravel-the-mysterious-ordered-uuid-29e7500b4f8">
          <front>
            <title>Laravel: The mysterious "Ordered UUID"</title>
            <author initials="I. B." surname="Cabrera" fullname="Italo Baeza Cabrera">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="COMBGUID" target="https://github.com/richardtallent/RT.Comb">
          <front>
            <title>Creating sequential GUIDs in C# for MSSQL or PostgreSql</title>
            <author initials="R." surname="Tallent" fullname="Richard Tallent">
              <organization/>
            </author>
            <date year="2020" month="December"/>
          </front>
          <seriesInfo name="Commit" value="2759820"/>
        </reference>
        <reference anchor="ULID" target="https://github.com/ulid/spec">
          <front>
            <title>Universally Unique Lexicographically Sortable Identifier</title>
            <author initials="A." surname="Feerasta" fullname="Alizain Feerasta">
              <organization/>
            </author>
            <date year="2019" month="May"/>
          </front>
          <seriesInfo name="Commit" value="d0c7170"/>
        </reference>
        <reference anchor="SID" target="https://github.com/chilts/sid">
          <front>
            <title>sid : generate sortable identifiers</title>
            <author initials="A." surname="Chilton" fullname="Andrew Chilton">
              <organization/>
            </author>
            <date year="2019" month="June"/>
          </front>
          <seriesInfo name="Commit" value="660e947"/>
        </reference>
        <reference anchor="pushID" target="https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html">
          <front>
            <title>The 2^120 Ways to Ensure Unique Identifiers</title>
            <author>
              <organization>Google</organization>
            </author>
            <date year="2015" month="February"/>
          </front>
        </reference>
        <reference anchor="XID" target="https://github.com/rs/xid">
          <front>
            <title>Globally Unique ID Generator</title>
            <author initials="O." surname="Poitrey" fullname="Olivier Poitrey">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="efa678f"/>
        </reference>
        <reference anchor="ObjectID" target="https://docs.mongodb.com/manual/reference/method/ObjectId/">
          <front>
            <title>ObjectId - MongoDB Manual</title>
            <author>
              <organization>MongoDB</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CUID" target="https://github.com/ericelliott/cuid">
          <front>
            <title>Collision-resistant ids optimized for horizontal scaling and performance.</title>
            <author initials="E." surname="Elliott" fullname="Eric Elliott">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="215b27b"/>
        </reference>
        <reference anchor="IEEE754" target="https://standards.ieee.org/ieee/754/6210/">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic.</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2019" month="July"/>
          </front>
          <seriesInfo name="Series" value="754-2019"/>
        </reference>
        <reference anchor="URNNamespaces" target="https://www.iana.org/assignments/urn-namespaces/urn-namespaces.xhtml">
          <front>
            <title>Uniform Resource Names (URN) Namespaces</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022" month="November" day="18"/>
          </front>
        </reference>
        <reference anchor="Python" target="https://docs.python.org/3/library/uuid.html">
          <front>
            <title>UUID objects according to RFC</title>
            <author>
              <organization>Python</organization>
            </author>
            <date year="2023" month="May" day="23"/>
          </front>
        </reference>
        <reference anchor="Microsoft" target="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/a66edeb1-52a0-4d64-a93b-2f5c833d7d92">
          <front>
            <title>curly braced GUID string</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date year="2023" month="April" day="03"/>
          </front>
        </reference>
        <reference anchor="MS_COM_GUID" target="https://devblogs.microsoft.com/oldnewthing/20220928-00/?p=107221">
          <front>
            <title>Why does COM express GUIDs in a mix of big-endian and little-endian? Why can’t it just pick a side and stick with it?</title>
            <author initials="R." surname="Chen" fullname="Raymond Chen">
              <organization/>
            </author>
            <date year="2022" month="September" day="28"/>
          </front>
        </reference>
        <reference anchor="IBM_NCS" target="https://www.ibm.com/docs/en/aix/7.1?topic=u-uuid-gen-command-ncs">
          <front>
            <title>uuid_gen Command (NCS)</title>
            <author>
              <organization>IBM</organization>
            </author>
            <date year="2023" month="March" day="23"/>
          </front>
        </reference>
        <reference anchor="RANDOM" target="https://peteroupc.github.io/random.html">
          <front>
            <title>Random Number Generator Recommendations for Applications</title>
            <author initials="P." surname="Occil" fullname="Peter Occil">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1953?>

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

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

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

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

# Final:
# Greg_100_ns = 0x1EC9414C232AB00 or 138648505420000000
]]></sourcecode>
      </figure>
      <section anchor="uuidv1_example">
        <name>Example of a UUIDv1 Value</name>
        <figure>
          <name>UUIDv1 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
time_low   32   0xC232AB00
time_mid   16   0x9414
ver         4   0x1
time_high  12   0x1EC
var         2   0b10
clock_seq  14   0b11, 0x3C8
node       48   0x9E6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   0b10
md5_low   62   0b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the hexadecimal value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the fields as shown in <xref target="v4fields"/>.</t>
        <t>Finally to further illustrate the bit swapping for version and variant see <xref target="v4vervar"/>.</t>
        <figure anchor="v4fields">
          <name>UUIDv4 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
random_a  48   0x919108f752d1
ver        4   0x4
random_b  12   0x320
var        2   0b10
random_c  62   0b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   0b10
sha1_low   62   0b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded SHA-1 segment</name>
          <artwork><![CDATA[
SHA-1 hex and dash:    2ed6657d-e927-468b-55e1-2665a8aea6a2-2dee3e35
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 2ed6657d-e927-568b-95e1-2665a8aea6a2
Discarded:                                                 -2dee3e35
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv6_example">
        <name>Example of a UUIDv6 Value</name>
        <figure>
          <name>UUIDv6 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
time_high   32   0x1EC9414C
time_mid    16   0x232A
ver          4   0x6
time_high   12   0xB00
var          2   0b10
clock_seq   14   0b11, 0x3C8
node        48   0x9E6BDECED846
-------------------------------------------
total       128
-------------------------------------------
final: 1EC9414C-232A-6B00-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv7_example">
        <name>Example of a UUIDv7 Value</name>
        <t>This example UUIDv7 test vector utilizes a well-known Unix epoch timestamp with
millisecond precision to fill the first 48 bits.</t>
        <t>rand_a and rand_b are filled with random data.</t>
        <t>The timestamp is Tuesday, February 22, 2022 2:22:22.00 PM GMT-05:00 represented
as 0x17F22E279B0 or 1645557742000</t>
        <figure>
          <name>UUIDv7 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
unix_ts_ms  48   0x17F22E279B0
ver          4   0x7
rand_a      12   0xCC3
var          2   0b10
rand_b      62   0b01, 0x8C4DC0C0C07398F
-------------------------------------------
total       128
-------------------------------------------
final: 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example">
        <name>Example of a UUIDv8 Value (time-based)</name>
        <t>This example UUIDv8 test vector utilizes a well-known 64 bit Unix epoch timestamp with
nanosecond precision, truncated to the least-significant, right-most, bits
to fill the first 48 bits through version.</t>
        <t>The next two segments of custom_b and custom_c are filled with random
data.</t>
        <t>Timestamp is Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00 represented
as 0x16D6320C3D4DCC00 or 1645557742000000000</t>
        <t>It should be noted that this example is just to illustrate one scenario for
UUIDv8. Test vectors will likely be implementation specific and vary greatly
from this simple example.</t>
        <figure>
          <name>UUIDv8 Example Time-based Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x320C3D4DCC00
ver        4   0x8
custom_b  12   0x75B
var        2   0b10
custom_c  62   0b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 320C3D4D-CC00-875B-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> to detail the usage of hash spaces <xref target="hashspaces"/> alongside namespace <xref target="namespaces"/> and names.
The field mapping and all values are illustrated in <xref target="v8fieldssha256"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-256 value see <xref target="v8vervar"/>.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Hash Space (SHA2_256): 3fb32780-953c-4464-9cfd-e85dbbe9843d
Name Space (DNS):      6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
401835fda627a70a073fed73f2bc5b2c2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x401835fda627
ver        4   0x8
custom_b  12   0x70a
var        2   0b10
custom_c  62   0b00, 0x73fed73f2bc5b2c
-------------------------------------------
total     128
-------------------------------------------
final: 401835fd-a627-870a-873f-ed73f2bc5b2c
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 401835fd-a627-a70a-073f-ed73f2bc5b2c-2a8936385a38a9c133de0ca4af0dfaed
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 401835fd-a627-870a-873f-ed73f2bc5b2c
D:                                     -2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</li>
          <li>Line B details the version and variant hexadecimal positions which must be overwritten.</li>
          <li>Line C details the final value after the ver/var have been overwritten.</li>
          <li>Line D details the discarded, leftover values from the original SHA-256 computation.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
XeE0nhJpQx4BaLYC5RvworhDlbQgMkRXhNxH1dC9UFJoPE+oHlJHfIauwoOR
akGsa3hG+SGZk4VyZMFG7KEVnqwIBnS+MFLEsVkoQ/C9aLAN5A54a0UwMDTf
hRdwLTJ1Ztelz+GGAOHNREjJcVkFC+1wWCKxpQDEBQUMSyQHMm+ADIUTErvC
2aYNGx0gonFFxpNUibAk9ohR8AZNLnOmPyQ14H2qHBwoELesQXrLEDNUWv/o
PURAw2i15OGCr3K01umikXnNQQkrCEQqVRpT0Q83KAoCoUXSRO9XTUekGMDq
UUrHJ4K+K51W10eicwjX80FdwMBrSCUCFErRDww0CVSL6+KmgUoXnMcDUIcG
fEahtkLIEcYHGp/bYBgT2/Aw16xh2Yg8737C3GIC5IHJIT1wYNNQGqjLifMa
oJ5M50YhWyCX9Z3J0HVUisQkTgDPi8TyeEg2efjg2x2i75Ni57PcK4ypgUsF
XOSo6USy0HdOYDE/YoJT6WsTuFX35Sv7hY325NdM1CZ/7URR0vcUBslfmbBE
+sINL+Tv3zdN9J6d1Cy2aaLjeF6NWpOxKaaMvnFiw2RJ8K6JvKJHNNKKv//Q
tDFNPLYDRBNEQ99wMAx/qTEm9MWP+um7pg30oG80YIO/NtESvA6zhtOmDTrY
3jpKKLpOEgqY9udrJNUY0IVlWwEIuB/QEfd2ly1bYnIgF1DOpqJwWVhVWBmV
TEvDiyXrEj0dEvv+uFvY3z6LOvzBJdhvQOldhUD8HnddQn41l88/qy0daBLq
PLCanbcfLy53Gvyvd/6Ofv5w+q8fzz6cnuDPF98dvXljftiSJy6+e/fxzYn9
yb4Jh/329PyEX4ZPvdJHWztvj/60w1dx5937y7N350dvdtaNgcgwWIImNgfU
i4xZ+VZJ7Hx5/P7/+3+DLhztfwIW1w6CERwv/zIMBiAWAugjsaKkaPPmX5El
bYUUQktGb+C6k3AZA+nKSQAEjeqOzdjNra1/+K8Imf9+6P2X8WQZdP9JPsAN
lz5UmJU+JJitf7L2MgOx5qOaaQw0S59XIF1e79GfSr8r3J0P/8sfMB/K84Ph
H/5pS1DriBJnY8H+x11UapOHRW6wyHKMsPQoWaCMg9I51kMhqKg6JcW3O0EX
SSlLFfX5vE4oIT94G3zxUe+PKhCbl9rPf6ltXuo8/6WOean7/Je65qXe81/q
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
TLwQTaR7lHiF1BSAOpGcK7n2eKj8UxYu4ylB5JIqUtMe5LhMFt/YLlerE0bV
zhNrxJuOEggE6VxG1QqfctNsbzl+GlqCRDSi9vQNtQ55fFwlbvK2iSMC5iNr
Qd5gY2dKKn1bVfp2VaVvG8qA7KDkM2MK9/h43GmNzHTHnUCcxRrNQip21cKT
a2H/r4xjri68owvvVBfesY1yKtV2eWJOtaNq/Tt4aaSQ8DQL7zhQk0m+8G42
vjQ49Ize4n5iO07gBnx4RVaPK21CJ7HAAnTOt9AC6TiZFkkfP9jmSqhoosuP
4hsxle4z7Ax9YdSvBU1DFF5tlyAYgV2AYLCkTC6oajxV+1/Ig3CpZhhSM8Zu
OpYvTkxGHN1RYGsptcuxRMAUccD7vh6Sr/0HcO28ItaxE2Px4OYFBcfhmr5V
btwCW7WaTgqHnialemuqPScckSVZrIVcYvRW4qu+IGULplYETOZJeLxSBr4K
YbfHkA5/G4dy8lybQob5gUzsxpjN2TIOz9QSjvM4WmlE3W2nyXSC+7Y4JcBT
RohNGdh8+yWvphQM+3+8bcLWcPi1NWFnFbVzVm0T+JBrvvg1bBM1sPjN7TS/
3ypqbROdr7JN6EkazZDNgd0yZRJTO7USizH2ErW3jbZzLMY9K3z6WAbC541G
zXQ+mlo62dxo03AsDK1fw8IQBN5e56stDILaal8gclUDr7Jroqiz/FA/gQxl
aIZXYA1BaqKhJOuY21fY/Bc9uC9B9m/GSCG3xkFEDN/tt+sAWw8S8bHKOinI
kKBDGGvRlc7AL+GrcwDubLKE7s9BYcdS4lozhmjMqJPiuirFdatSXPc5UlyR
reYPvqN/llVOqULV1ILk5ZB0lKRN5y1XKpG3KS1OvTfbWyrMzCQi3wovNqtQ
e+nwJxiUWpVn2FH+Swk0PFq9RHNkmw1R1Oba/lE3nNyk0o9nLTCM1sNJzKbJ
i4kJF2shgpxfvAobMsTVmOVn+W2CibdqjMRWBk6DW1d0LYUiuDCKS100sBNW
Hhut4BVVrsJWFhTXT63y7OGVehDUaUp/TyKTntOvz6CdVdROWhWZFG9+4VU8
ITIZ3PwtYfE7rsKITPH02xcuiXpRCR75GiFKz/ZZQhR7t7ljksua3OtajUWv
ua+/l8QUtFreXverJSbF7C+JTDXQqQCGLQ1fgse/UyFHEf3XlXJ+FsSeElhq
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
6pwcD7DIpicaDlkec+j3PzHwkyRXhAEA

-->

</rfc>
