<?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.7.1 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-12" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="UUID">Universally Unique IDentifiers (UUID)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-12"/>
    <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 273?>

<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 287?>

<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 either in combination with URNs <xref target="RFC8141"/> or otherwise.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from <xref target="RFC4122"/>.  Both sets of
specifications have been aligned and are fully technically
compatible.
Nothing in this document should be construed to override the DCE standards that defined UUIDs.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although two formats may leverage optional
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, which were originally defined by <xref target="RFC4122"/>, lack certain other desirable characteristics:</t>
        <ol spacing="normal" type="1"><li>
            <t>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.</t>
          </li>
          <li>
            <t>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"/>.</t>
          </li>
          <li>
            <t>Introspection/parsing is required to order by time sequence, as opposed to
  being able to perform a simple byte-by-byte comparison.</t>
          </li>
          <li>
            <t>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 network interfaces
  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.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
          <li>
            <t><xref target="RFC4122"/> did not distinguish between the requirements for generating a UUID
and those for simply storing one, although they are often different.</t>
          </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>
            <t><xref target="ULID"/> by A. Feerasta</t>
          </li>
          <li>
            <t><xref target="LexicalUUID"/> by Twitter</t>
          </li>
          <li>
            <t><xref target="Snowflake"/> by Twitter</t>
          </li>
          <li>
            <t><xref target="Flake"/> by Boundary</t>
          </li>
          <li>
            <t><xref target="ShardingID"/> by Instagram</t>
          </li>
          <li>
            <t><xref target="KSUID"/> by Segment</t>
          </li>
          <li>
            <t><xref target="Elasticflake"/> by P. Pearcy</t>
          </li>
          <li>
            <t><xref target="FlakeID"/> by T. Pawlak</t>
          </li>
          <li>
            <t><xref target="Sonyflake"/> by Sony</t>
          </li>
          <li>
            <t><xref target="orderedUuid"/> by IT. Cabrera</t>
          </li>
          <li>
            <t><xref target="COMBGUID"/> by R. Tallent</t>
          </li>
          <li>
            <t><xref target="SID"/> by A. Chilton</t>
          </li>
          <li>
            <t><xref target="pushID"/> by Google</t>
          </li>
          <li>
            <t><xref target="XID"/> by O. Poitrey</t>
          </li>
          <li>
            <t><xref target="ObjectID"/> by MongoDB</t>
          </li>
          <li>
            <t><xref target="CUID"/> by E. Elliott</t>
          </li>
        </ol>
        <t>An inspection of these implementations and the issues described above has
led to this document which intends to adapt new UUIDs to address these issues.</t>
        <t>Further, <xref target="RFC4122"/> itself was in need an overhaul to address a number of topics such as but not limited to the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>Miscellaneous erratas. Mostly around bit layout clarifications which lead to inconsistent implementations.</t>
          </li>
          <li>
            <t>Decouple other UUID versions from UUIDv1 bit layout so that fields like "time_hi_and_version" do not need to be referenced within a non-time-based UUID while also providing "UUIDv1 like" definition sections for UUIDv3, UUIDv4, and UUIDv5.</t>
          </li>
          <li>
            <t>Provide implementation best practices around many real-world scenarios and corner cases observed by existing and prototype implementations.</t>
          </li>
          <li>
            <t>Update the document to address security best practices and considerations for the modern age as it pertains MAC addresses, hashing algorithms, secure randomness, and other topics.</t>
          </li>
          <li>
            <t>Provide implementations a standard-based option for implementation specific and/or experimental UUID designs.</t>
          </li>
          <li>
            <t>Provide more test vectors that illustrate real UUIDs created as per the specification.</t>
          </li>
        </ol>
      </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-12</t>
        <ul spacing="compact">
          <li>
            <t>Typos #148 #156</t>
          </li>
          <li>
            <t>SECDIR Review #141</t>
          </li>
          <li>
            <t>SECDIR Review 2 #142</t>
          </li>
          <li>
            <t>OPSDIR Review #145</t>
          </li>
          <li>
            <t>INDIR Review 2 #140</t>
          </li>
          <li>
            <t>IESG Grammar #146</t>
          </li>
          <li>
            <t>Revise 16-bit MAC Node Usage #149</t>
          </li>
          <li>
            <t>Add MSB3 to Variant Table #153</t>
          </li>
          <li>
            <t>Additional Update Motivations #157</t>
          </li>
          <li>
            <t>Expand v8 Time-based Example to larger timestamp #159</t>
          </li>
          <li>
            <t>Fix Randomized Node value's mcast bit in Appendix #151</t>
          </li>
          <li>
            <t>Clarify "Name-Based" is the same as "Hash-Based" #154</t>
          </li>
          <li>
            <t>Move UUIDv8 Examples out of Test Vectors #150</t>
          </li>
          <li>
            <t>Simplify UUIDv8 Hash-based Example #147</t>
          </li>
        </ul>
        <t>draft-11</t>
        <ul spacing="compact">
          <li>
            <t>Normalize "name space" to "namespace" everywhere #137</t>
          </li>
          <li>
            <t>IANA Review: Verbiage to update RFC4122 references #134</t>
          </li>
          <li>
            <t>DNSDIR re-review: Better Define "a canonical sequence of octets" #136</t>
          </li>
          <li>
            <t>Crosspost: Typo in Approximate UUID timestamp calculations #135</t>
          </li>
          <li>
            <t>INTDIR Review #139</t>
          </li>
        </ul>
        <t>draft-10</t>
        <ul spacing="compact">
          <li>
            <t>ARTART Review and Feedback #130</t>
          </li>
          <li>
            <t>Clarify Hash Space IDs listed are not the only options #132</t>
          </li>
          <li>
            <t>Add example to timestamp fuzzing #133</t>
          </li>
        </ul>
        <t>draft-09</t>
        <ul spacing="compact">
          <li>
            <t>Late addition of IETF reference for CSPRNG guidance #123</t>
          </li>
          <li>
            <t>DNSDIR Review: Typos! #122</t>
          </li>
          <li>
            <t>DNSDIR Review: DNS Considerations Update #121</t>
          </li>
          <li>
            <t>Error in UUIDv8 Name-based Test Vector #129</t>
          </li>
          <li>
            <t>Improve consistency of layout field definitions #128</t>
          </li>
        </ul>
        <t>draft-08</t>
        <ul spacing="compact">
          <li>
            <t>Fix typos #113</t>
          </li>
          <li>
            <t>Fix errata 6225 (again) #117 #118</t>
          </li>
          <li>
            <t>AD Review: BCP 14 - <bcp14>SHOULD</bcp14> #114</t>
          </li>
          <li>
            <t>AD Review: Add proper references to v1 and v6 #116</t>
          </li>
          <li>
            <t>AD Review: Remove <bcp14>SHOULD</bcp14> in section 4 #120</t>
          </li>
          <li>
            <t>Discuss "front-loaded rollover counter" for 32-bit epoch with Padding method #115</t>
          </li>
        </ul>
        <t>draft-07</t>
        <ul spacing="compact">
          <li>
            <t>Even more grammar tweaks! #109</t>
          </li>
          <li>
            <t>Remove unnecessary "32 bit" in UUIDv7 example #108</t>
          </li>
          <li>
            <t>Change "fixed millisecond" -&gt; "millisecond by default" relating to v7 #110</t>
          </li>
          <li>
            <t>Revert Max UUID Naming #107</t>
          </li>
          <li>
            <t>Author Changes</t>
          </li>
        </ul>
        <t>draft-06</t>
        <ul spacing="compact">
          <li>
            <t>More Grammar edits! #102</t>
          </li>
          <li>
            <t>Tweak v7 description to de-emphasize optional components #103</t>
          </li>
          <li>
            <t>Better Clarify Case in ABNF #104</t>
          </li>
          <li>
            <t>Verbiage change in 6.2 #105</t>
          </li>
        </ul>
        <t>draft-05</t>
        <ul spacing="compact">
          <li>
            <t>Changed Max UUID to Max UUID to better complement Latin Nil UUID verbiage. #95</t>
          </li>
          <li>
            <t>Align Method 3 text with the 12 bits limitation #96</t>
          </li>
          <li>
            <t>Make Version/version casing consistent across 5. UUID Layouts #97</t>
          </li>
          <li>
            <t>Cite MS COM GUID as little-endian #95</t>
          </li>
        </ul>
        <t>draft-04</t>
        <ul spacing="compact">
          <li>
            <t>Remove extra words #82, #88, and #93</t>
          </li>
          <li>
            <t>Punctuation and minor style fixes #84</t>
          </li>
          <li>
            <t>Change rounding mode of Method 4 Section 6.2 #90 (from #86)</t>
          </li>
          <li>
            <t>Add verbal description of v7 generation to 5.7. UUID Version 7 #91</t>
          </li>
          <li>
            <t>Remove Re-randomize Until Monotonic (Method 3) from Monotonicity and Counters #92</t>
          </li>
          <li>
            <t>Fix ambiguous text around UUIDv6 clock sequence #89</t>
          </li>
          <li>
            <t>Move endianness statement from layout to format section #85</t>
          </li>
          <li>
            <t>Further modified abstract to separate URN topic from UUID definition #83</t>
          </li>
          <li>
            <t>Provided three more UUID format examples #83</t>
          </li>
          <li>
            <t>Added text further clarifying version construct is for the variant in this doc #83</t>
          </li>
          <li>
            <t>Provided further clarification for local/global bit vs multicast bit #83</t>
          </li>
        </ul>
        <t>draft-03</t>
        <ul spacing="compact">
          <li>
            <t>Revised IANA Considerations #71</t>
          </li>
          <li>
            <t>Fix "integral numbers of octets" verbiage #67</t>
          </li>
          <li>
            <t>Transpose UUID Namespaces to match UUID Hashspaces #70</t>
          </li>
          <li>
            <t>Reference all Hash Algorithms. #69</t>
          </li>
          <li>
            <t>Normalize SHA abbreviation formats #66</t>
          </li>
          <li>
            <t>Add other Hash Abbreviations #65</t>
          </li>
          <li>
            <t>Remove URN from title #73</t>
          </li>
          <li>
            <t>Move Community Considerations to Introduction #68</t>
          </li>
          <li>
            <t>Move some Normative Reference to Informative #74</t>
          </li>
          <li>
            <t>Misc formatting changes to address IDNITS feedback</t>
          </li>
          <li>
            <t>Downgrade <bcp14>MUST NOT</bcp14> to <bcp14>SHOULD NOT</bcp14> for guessability of UUIDs #75</t>
          </li>
          <li>
            <t>Misc. text formatting, typo fixes #78</t>
          </li>
          <li>
            <t>Misc. text clarifications #79</t>
          </li>
          <li>
            <t>Misc. <bcp14>SHOULD</bcp14>/<bcp14>MUST</bcp14> adjustments #80</t>
          </li>
          <li>
            <t>Method 3 and 4 added to monotonic section #81</t>
          </li>
        </ul>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>
            <t>Change md5_high in SHA-1 section to sha1_mid #59</t>
          </li>
          <li>
            <t>Describe Nil/Max UUID in variant table #16</t>
          </li>
          <li>
            <t>Further Clarify that non-descript node IDs are the preferred method in distributed UUID Generation #49</t>
          </li>
          <li>
            <t>Appendix B, consistent naming #55</t>
          </li>
          <li>
            <t>Remove duplicate ABNF from IANA considerations #56</t>
          </li>
          <li>
            <t>Monotonic Error Checking missing newline #57</t>
          </li>
          <li>
            <t>More Security Considerations Randomness #26</t>
          </li>
          <li>
            <t>SHA-256 UUID Generation #50</t>
          </li>
          <li>
            <t>Expand multiplexed fields within v1 and v6 bit definitions #43</t>
          </li>
          <li>
            <t>Clean up text in UUIDs that Do Not Identify the Host #61</t>
          </li>
          <li>
            <t>Revise UUID Generator States section #47</t>
          </li>
          <li>
            <t>Expand upon why unix epoch rollover is not a problem #44</t>
          </li>
          <li>
            <t>Delete Sample Code Appendix #62</t>
          </li>
        </ul>
        <t>draft-01</t>
        <ul spacing="compact">
          <li>
            <t>Mixed Case Spelling error #18</t>
          </li>
          <li>
            <t>Add "UUIDs that Do Not Identify the Host as well" reference to security considerations #19</t>
          </li>
          <li>
            <t>Out of Place Distributed node text #20</t>
          </li>
          <li>
            <t>v6 clock_seq and node usage ambiguity #21</t>
          </li>
          <li>
            <t>Figure 2 and 3 Fix Title #22</t>
          </li>
          <li>
            <t>Move Namespace Registration Template to IANA Considerations #23</t>
          </li>
          <li>
            <t>Verify ABNF formatting against RFC5234 #24</t>
          </li>
          <li>
            <t>Bump ABNF reference to RFC 5234 #25</t>
          </li>
          <li>
            <t>Modify v8 <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> #27</t>
          </li>
          <li>
            <t>Remove "time-based" constraint from version 8 UUID #29</t>
          </li>
          <li>
            <t>Further clarify v7 field description #125 #30</t>
          </li>
          <li>
            <t>Typo: Section 4.2, Version Field, "UUID from in this" #33</t>
          </li>
          <li>
            <t>Create better ABNF to represent Hex Digit #39</t>
          </li>
          <li>
            <t>Break Binary form of UUID into two lines. #40</t>
          </li>
          <li>
            <t>Move octet text from section 4 to section 5 #41</t>
          </li>
          <li>
            <t>Add forward reference to UUIDv1 and UUIDv4 in Section 2 #42</t>
          </li>
          <li>
            <t>Erroneous reference to v1 in monotonicity #45</t>
          </li>
          <li>
            <t>Add Label for "Monotonic Error Checking" paragraph to frame the topic #46</t>
          </li>
          <li>
            <t>Remove IEEE paragraph from "uuids that do not identify the host" #48</t>
          </li>
          <li>
            <t>Grammar Review #52</t>
          </li>
        </ul>
        <t>draft-00</t>
        <ul spacing="compact">
          <li>
            <t>Merge RFC4122 with draft-peabody-dispatch-new-uuid-format-04.md</t>
          </li>
          <li>
            <t>Change: Reference RFC1321 to RFC6151</t>
          </li>
          <li>
            <t>Change: Reference RFC2141 to RFC8141</t>
          </li>
          <li>
            <t>Change: Reference RFC2234 to RFC5234</t>
          </li>
          <li>
            <t>Change: Reference FIPS 180-1 to FIPS 180-4 for SHA-1</t>
          </li>
          <li>
            <t>Change: Converted UUIDv1 to match UUIDv6 section from Draft 04</t>
          </li>
          <li>
            <t>Change: Trimmed down the ABNF representation</t>
          </li>
          <li>
            <t>Change: http websites to https equivalent</t>
          </li>
          <li>
            <t>Errata: Bad Reference to RFC1750 | 3641 #4</t>
          </li>
          <li>
            <t>Errata: Change MD5 website to example.com | 3476 #6 (Also Fixes Errata: Fix uuid_create_md5_from_name() | 1352 #2)</t>
          </li>
          <li>
            <t>Errata: Typo in code comment | 6665 #11</t>
          </li>
          <li>
            <t>Errata: Fix BAD OID acronym | 6225 #9</t>
          </li>
          <li>
            <t>Errata: Incorrect Parenthesis usage Section 4.3 | 184 #5</t>
          </li>
          <li>
            <t>Errata: Lexicographically Sorting Paragraph Fix | 1428 #3</t>
          </li>
          <li>
            <t>Errata: Fix 4.1.3 reference to the correct bits | 1957 #13</t>
          </li>
          <li>
            <t>Errata: Fix reference to variant in octet 8 | 4975 #7</t>
          </li>
          <li>
            <t>Errata: Further clarify 3rd/last bit of Variant for spec | 5560 #8</t>
          </li>
          <li>
            <t>Errata: Fix clock_seq_hi_and_reserved most-significant bit verbiage | 4976 #10</t>
          </li>
          <li>
            <t>Errata: Better Clarify network byte order when referencing most significant bits | 3546 #12</t>
          </li>
          <li>
            <t>Draft 05: B.2. Example of a UUIDv7 Value two "var" in table #120</t>
          </li>
          <li>
            <t>Draft 05: <bcp14>MUST</bcp14> verbiage in Reliability of 6.1 #121</t>
          </li>
          <li>
            <t>Draft 05: Further discourage centralized registry for distributed UUID Generation.</t>
          </li>
          <li>
            <t>New: Further Clarity of exact octet and bit of var/ver in this spec</t>
          </li>
          <li>
            <t>New: Block diagram, bit layout, test vectors for UUIDv4</t>
          </li>
          <li>
            <t>New: Block diagram, bit layout, test vectors for UUIDv3</t>
          </li>
          <li>
            <t>New: Block diagram, bit layout, test vectors for UUIDv5</t>
          </li>
          <li>
            <t>New: Add MD5 Security Considerations reference, RFC6151</t>
          </li>
          <li>
            <t>New: Add SHA-1 Security Considerations reference, RFC6194</t>
          </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>
          <t>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.</t>
        </li>
        <li>
          <t><xref target="X667"/> provides UUID format definitions for use of UUID with an OID.</t>
        </li>
        <li>
          <t>The legacy <xref target="IBM_NCS"/> implementation produces a unique UUID format compatible with Variant 0xx of <xref target="table1"/>.</t>
        </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">Msb3</th>
              <th align="left">Variant</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">x</td>
              <td align="left">1-7</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">x</td>
              <td align="left">8-9,A-B</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">x</td>
              <td align="left">C-D</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">x</td>
              <td align="left">E-F</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 10xx specified in this document.</t>
        <table anchor="table2">
          <name>UUID variant 10xx 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 10xx:
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 or a randomly derived value per <xref target="unguessability"/> and <xref target="unidentifiable"/>.</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>Notes about IEEE 802 derived nodes:</t>
        <ul spacing="compact">
          <li>
            <t>Systems with multiple IEEE 802 addresses, any available one <bcp14>MAY</bcp14> be used.</t>
          </li>
          <li>
            <t>Systems with no IEEE address, a randomly or pseudo-randomly generated value <bcp14>MUST</bcp14> be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
          </li>
          <li>
            <t>Systems utilizing a 64 bit MAC address the least significant, right-most 48 bits <bcp14>MAY</bcp14> be used.</t>
          </li>
          <li>
            <t>Systems utilizing an IEEE 802.15.4 16 bit address <bcp14>SHOULD</bcp14> instead utilize their 64 bit MAC address where least significant, right-most 48 bits <bcp14>MAY</bcp14> be used. An alternative is to generate 32 bits of random data and postfix at the end of the 16 bit MAC address to create a 48 bit value.</t>
          </li>
        </ul>
      </section>
      <section anchor="uuidv2">
        <name>UUID Version 2</name>
        <t>UUID version 2 is known as DCE Security UUIDs <xref target="C309"/> and <xref target="C311"/>.
As such, the definition of these UUIDs is outside the scope of this specification.</t>
      </section>
      <section anchor="uuidv3">
        <name>UUID Version 3</name>
        <t>UUID version 3 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "namespace" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv3 values are created by computing an MD5 <xref target="RFC1321"/>
hash over a given namespace value concatenated with the desired name value
after both have been converted to a canonical sequence of octets, as defined by the standards or conventions of its namespace, in network byte order.
This MD5 value is then used to populate all 128 bits of the UUID layout.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>. An example of this bit substitution can be found in <xref target="uuidv3_example"/>.</t>
        <t>Information around selecting a desired name's canonical format within a given namespace can be found in <xref target="name_based_uuid_generation"/>, "A note on names".</t>
        <t>Some common namespace values have been defined via <xref target="namespaces"/>.</t>
        <t>Where possible UUIDv5 <bcp14>SHOULD</bcp14> be used in lieu of UUIDv3.
For more information on MD5 security considerations see <xref target="RFC6151"/>.</t>
        <figure>
          <name>UUIDv3 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          md5_high             |  ver  |       md5_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>md5_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed MD5 value. Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0011 (3).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>md5_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following md5_high
from the computed MD5 value.
Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>md5_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with the least-significant, right-most bits of the final 64 bits
from the computed MD5 value. Occupies bits 66 through 127 (octets 8-15)</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv4">
        <name>UUID Version 4</name>
        <t>UUID version 4 is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random data which is
used to fill out the UUID fields in <xref target="uuidv4fields"/>. The UUID version
and variant then replace the respective bits as defined by <xref target="version_field"/>
and <xref target="variant_field"/>.</t>
        <t>Alternatively, an implementation <bcp14>MAY</bcp14> choose to randomly generate the exact required number of bits for
random_a, random_b, and random_c (122 bits total), and then concatenate the version and variant in the required position.</t>
        <t>For guidelines on random data generation see <xref target="unguessability"/>.</t>
        <figure anchor="uuidv4fields">
          <name>UUIDv4 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          random_a             |  ver  |       random_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>random_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled with random data as specified in <xref target="unguessability"/>. Occupies bits 0 through 47 (octets 0-5).</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/>, set to 0b0100 (4).
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>random_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled random data as per <xref target="unguessability"/>. Occupies bits 52 through 63 (octets 6-7).</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>, set to 0b10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>random_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with random data as per <xref target="unguessability"/>. Occupies bits 66 through 127 (octets 8-15).</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv5">
        <name>UUID Version 5</name>
        <t>UUID version 5 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "namespace" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv5 values are created by computing an SHA-1 <xref target="FIPS180-4"/>
hash over a given namespace value concatenated with the desired name value
after both have been converted to a canonical sequence of octets, as defined by the standards or conventions of its namespace, in network byte order.
The most significant, left-most 128 bits of the SHA-1 value is then used to populate all 128 bits of the UUID layout and the remaining 32 least significant, right-most bits of SHA-1 output are discarded.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>. An example of this bit substitution and discarding exess bits can be found in <xref target="uuidv5_example"/>.</t>
        <t>Information around selecting a desired name's canonical format within a given namespace can be found in <xref target="name_based_uuid_generation"/>, "A note on names".</t>
        <t>Some common namespace values have been defined via <xref target="namespaces"/>.</t>
        <t>There may be scenarios, usually depending on organizational security policies, where SHA-1 libraries may not be available or deemed unsafe for use.
As such, it may be desirable to generate name-based UUIDs derived from SHA-256 or newer SHA methods. These name-based UUIDs <bcp14>MUST NOT</bcp14> utilize UUIDv5 and <bcp14>MUST</bcp14> be within the UUIDv8 space defined by <xref target="uuidv8"/>.
An illustrative example of UUIDv8 for SHA-256 name-based UUIDs is provided in the appendix <xref target="uuidv8_example_name"/>.</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="uuidv7">
        <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>
            <t>An <bcp14>OPTIONAL</bcp14> sub-millisecond timestamp fraction (12 bits at maximum) as per <xref target="monotonicity_counters"/> (Method 3).</t>
          </li>
          <li>
            <t>An <bcp14>OPTIONAL</bcp14> carefully seeded counter as per <xref target="monotonicity_counters"/> (Method 1 or 2).</t>
          </li>
          <li>
            <t>Random data for each new UUIDv7 generated for any remaining space.</t>
          </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="uuidv8">
        <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>
            <t>An implementation would like to embed extra information
within the UUID other than what is defined in this document.</t>
          </li>
          <li>
            <t>An implementation has other application/language restrictions which
inhibit the use of one of the current UUIDs.</t>
          </li>
        </ul>
        <t>The appendix, <xref target="ill_examples"/>, provides two illustrative examples of custom UUIDv8 algorithms to address two example scenarios.</t>
        <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 of the high resolution timestamp will range between zero and the number of
100-nanosecond intervals per system time interval.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The length of a given timestamp directly impacts how many timestamp ticks can be contained in a UUID before the maximum
value for the timestamp field is reached.
Take care to ensure that the proper length is selected for a given
timestamp.
UUID version 1 and 6 utilize a 60 bit timestamp valid until 5623 AD and UUIDv7 features a 48
bit timestamp valid until the year 10889 AD.</t>
          </dd>
          <dt>Altering, Fuzzing, or Smearing:</dt>
          <dd>
            <t>Implementations <bcp14>MAY</bcp14> alter the actual timestamp. Some examples include security
considerations around providing a real clock value within a UUID, to correct
inaccurate clocks, to handle leap seconds, or instead of dividing a number of microseconds by 1000 to obtain a millisecond value; dividing by 1024 (or some other value) for performance reasons. This specification makes no
requirement or guarantee about how close the clock value needs to be to the actual
time.
If UUIDs do not need to be frequently generated, the UUIDv1 or UUIDv6 timestamp can
simply be the system time multiplied by the number of 100-nanosecond
intervals per system time interval.</t>
          </dd>
          <dt>Padding:</dt>
          <dd>
            <t>When timestamp padding is required, implementations <bcp14>MUST</bcp14> pad the most significant
bits (left-most) bits with data. An example for this padding data is to fill the most significant,
left-most bits of a Unix timestamp with zeroes to complete the 48
bit timestamp in UUIDv7. An alternative approach for padding data is to fill 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 1 when the number of UUIDs generated in a particular
period of time is important and guessability is not an issue. However, incrementing the counter by 1
<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 or scaled integer arithmetic, 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 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 increased, the counter is instead incremented by 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 of the 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 bit is 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 value 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>
            <t>Compare the current timestamp against the previously stored timestamp.</t>
          </li>
          <li>
            <t>If the current timestamp is equal to the previous timestamp, increment the
  counter according to the desired method.</t>
          </li>
          <li>
            <t>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).</t>
          </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. Further, frequent generation of random numbers also puts more stress on any entropy source and or entropy pool being used as the basis for such random numbers.</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>Although some prefer to use the word "hash-based" to describe UUIDs featuring hashing algorithms (MD5 or SHA-1), this document retains the usage of the adjective "name-based" in order to maintain consistency with historical documents and existing implementations.</t>
        <t>The requirements for name-based UUIDs are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>UUIDs generated at different times from the same name (using the same canonical format) in the
same namespace <bcp14>MUST</bcp14> be equal.</t>
          </li>
          <li>
            <t>UUIDs generated from two different names (same or differing canonical format) in the same namespace
should be different (with very high probability).</t>
          </li>
          <li>
            <t>UUIDs generated from the same name (same or differing canonical format) in two different namespaces
should be different (with very high probability).</t>
          </li>
          <li>
            <t>If two UUIDs that were generated from names (using the same canonical format) are equal, then they
were generated from the same name in the same namespace (with very
high probability).</t>
          </li>
        </ul>
        <dl newline="true">
          <dt>A note on names:</dt>
          <dd>
            <t>The concept of name (and namespace) should be broadly construed and not limited to textual names. A canonical sequence of octets is one that conforms to the specification for that name form's canonical representation. A name can have many usual forms, only one of which can be canonical. An implementer of new namespaces for UUIDs needs to reference the specification for the canonical form of names in that space, or define such a canonical for the namespace if it does not exist.
For example, at the time of this specification, <xref target="RFC8499"/> domain name system (DNS) has three conveyance formats: common (www.example.com), presentation (www.example.com.) and wire format (3www7example3com0).
Looking at <xref target="X500"/> distinguished names (DNs), the previous version of this specification allowed either text based or binary distinguished encoding rules (DER) based names as inputs.
For <xref target="RFC1738"/> uniform resource locators (URLs), one could provide a fully-qualified domain-name (FQDN) with or without the protocol identifier (www.example.com) or (https://www.example.com).
When it comes to <xref target="X660"/> object identifiers (OIDs) one could choose dot-notation without the leading dot (2.999), choose to include the leading dot (.2.999) or select one of the many formats from <xref target="X680"/> such as OID Internationalized Resource Identifier (OID-IRI) (/Joint-ISO-ITU-T/Example).
While most users may default to the common format for DNS, FQDN format for a URL, text format for X.500 and dot-notation without a leading dot for OID; name-based UUID implementations generally <bcp14>SHOULD</bcp14> allow arbitrary input which will compute name-based UUIDs for any of the aforementioned example names and others not defined here.
Each name format within a namespace will output different UUIDs. 
As such, the mechanisms or conventions used for allocating names and ensuring their uniqueness within their namespaces are beyond the scope of this specification.</t>
          </dd>
          <dt>A note on namespaces:</dt>
          <dd>
            <t>While <xref target="namespaces"/> details a few interesting namespaces; implementations <bcp14>SHOULD</bcp14> provide the ability to input a custom namespace.
For example, any other UUID <bcp14>MAY</bcp14> be generated and used as the desired namespace input for a given application context to
ensure all names created are unique within the newly created namespace.</t>
          </dd>
        </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
must be avoided and failure is unacceptable. Applications dealing with this
type of scenario must 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 <bcp14>MAY</bcp14> leverage MAC address randomization techniques (IEEE 802.11bh) as an alternative to the pseudo-random logic provided in this section.</t>
        <t>Alternatively, implementations <bcp14>MAY</bcp14> elect to obtain a 48 bit cryptographic-quality random
number as per <xref target="unguessability"/> to use it as the node ID.
After generating the 48 bit fully randomized node value, implementations <bcp14>MUST</bcp14> set the least significant bit of the first octet of the node ID set to 1.
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.
An example of generating a randomized 48 bit node value and the subsequent bit modification is detailed in the <xref target="test_vectors"/> appendix.
For more information about IEEE 802 address and the unicast/multicast or local/global bits please review <xref target="RFC7042"/>.</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 SHA-256 or SHA-512 defined by <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 one order of magnitude or more.</t>
        <t>UUID 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>As general guidance, it is recommend to avoid parsing UUID values unnecessarily,
and instead treating UUIDs as opaquely as possible.  Although application-specific
concerns could of course require some degree of introspection
(e.g., to examine the <xref target="variant_field"/>, <xref target="version_field"/> 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>
            <t>Storing as binary requires less space and may result in faster data access.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
        </ul>
        <t>DBMS vendors are encouraged to provide functionality to generate and store
UUID formats defined by this specification for use as identifiers or left
parts of identifiers such as, but not limited to, primary keys, surrogate
keys for temporal databases, foreign keys included in polymorphic relationships,
and keys for key-value pairs in JSON columns and key-value databases.
Applications using a monolithic database may find using database-generated
UUIDs (as opposed to client-generate UUIDs) provides the best UUID monotonicity.
In addition to UUIDs, additional identifiers <bcp14>MAY</bcp14> be used to ensure integrity
and feedback.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>All references to <xref target="RFC4122"/> in the IANA registries should be replaced with references to this document.
References to <xref target="RFC4122"/> document's Section 4.1.2 should be updated to refer to this document's <xref target="format"/>.</t>
      <t>There is no update required to the IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/>.</t>
      <t>IANA is not required to track UUIDs used for identifying items such as versions, variants, namespaces.</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 modified in order to redirect a reference to another
object.  Humans do not have the ability to easily check the integrity
of a UUID by simply glancing at it.</t>
      <t>MAC addresses pose inherent security risks around privacy and <bcp14>SHOULD NOT</bcp14> be used within
a UUID.
Instead CSPRNG data <bcp14>SHOULD</bcp14> be selected from a source with sufficient entropy
to ensure guaranteed
uniqueness among UUID generation. See <xref target="unguessability"/> and <xref target="unidentifiable"/> for more information.</t>
      <t>Timestamps embedded in the UUID do pose a very small attack surface. The
timestamp in conjunction with
an embedded counter does signal the order of creation for a given UUID and
its corresponding data but
does not define anything about the data itself or the application as a whole.
If UUIDs are required for
use with any security operation within an application context in any shape
or form then UUIDv4, <xref target="uuidv4"/> <bcp14>SHOULD</bcp14> be utilized.</t>
      <t>See <xref target="RFC6151"/> for MD5 Security Considerations and <xref target="RFC6194"/> for SHA-1 security considerations.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions of Rich Salz,
Michael Mealling,
Ben Campbell,
Ben Ramsey,
Fabio Lima,
Gonzalo Salgueiro,
Martin Thomson,
Murray S. Kucherawy,
Rick van Rein,
Rob Wilton,
Sean Leonard,
Theodore Y. Ts'o,
Robert Kieffer,
Sergey Prokhorenko,
LiosK.</t>
      <t>As well as all of those in the IETF community and on GitHub to who contributed
to the discussions which resulted in this document.</t>
      <t>This document draws heavily on the OSF DCE specification for UUIDs.
Ted Ts'o provided helpful comments, especially on the byte ordering
section which we mostly plagiarized from a proposed wording he
supplied (all errors in that section are our responsibility,
however).</t>
      <t>We are also grateful to the careful reading and bit-twiddling of Ralf
S. Engelschall, John Larmouth, and Paul Thorpe.  Professor Larmouth
was also invaluable in achieving coordination with ISO/IEC.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-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 anchor="sec-informative-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="RFC7042">
          <front>
            <title>IANA Considerations and IETF Protocol and Documentation Usage for IEEE 802 Parameters</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>Some IETF protocols make use of Ethernet frame formats and IEEE 802 parameters. This document discusses several uses of such parameters in IETF protocols, specifies IANA considerations for assignment of points under the IANA OUI (Organizationally Unique Identifier), and provides some values for use in documentation. This document obsoletes RFC 5342.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="141"/>
          <seriesInfo name="RFC" value="7042"/>
          <seriesInfo name="DOI" value="10.17487/RFC7042"/>
        </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 1978?>

<section anchor="namespaces">
      <name>Some Namespace IDs</name>
      <t>This appendix lists the namespace IDs for some potentially interesting namespaces such those for
<xref target="RFC8499"/> domain name system (DNS), <xref target="RFC1738"/> uniform resource locators (URLs), <xref target="X660"/> object identifiers (OIDs), and <xref target="X500"/> distinguished names (DNs).</t>
      <sourcecode type="code"><![CDATA[
NameSpace_DNS  = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
NameSpace_URL  = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
NameSpace_OID  = "6ba7b812-9dad-11d1-80b4-00c04fd430c8"
NameSpace_X500 = "6ba7b814-9dad-11d1-80b4-00c04fd430c8"
]]></sourcecode>
    </section>
    <section anchor="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.
For the randomized node, the least significant bit of the first octet is set to a value of 1 as per <xref target="unidentifiable"/>. 
Thus the starting value 0x9E6BDECED846 was changed to 0x9F6BDECED846.</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   0x9F6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Namespace (DNS):  6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   0b10
md5_low   62   0b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the hexadecimal value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the fields as shown in <xref target="v4fields"/>.</t>
        <t>Finally to further illustrate the bit swapping for version and variant see <xref target="v4vervar"/>.</t>
        <figure anchor="v4fields">
          <name>UUIDv4 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
random_a  48   0x919108f752d1
ver        4   0x4
random_b  12   0x320
var        2   0b10
random_c  62   0b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Namespace (DNS):  6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   0b10
sha1_low   62   0b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded SHA-1 segment</name>
          <artwork><![CDATA[
SHA-1 hex and dash:    2ed6657d-e927-468b-55e1-2665a8aea6a2-2dee3e35
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 2ed6657d-e927-568b-95e1-2665a8aea6a2
Discarded:                                                 -2dee3e35
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv6_example">
        <name>Example of a UUIDv6 Value</name>
        <figure>
          <name>UUIDv6 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
time_high   32   0x1EC9414C
time_mid    16   0x232A
ver          4   0x6
time_high   12   0xB00
var          2   0b10
clock_seq   14   0b11, 0x3C8
node        48   0x9F6BDECED846
-------------------------------------------
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>
    <section anchor="ill_examples">
      <name>Illustrative Examples</name>
      <t>The following sections contain illustrative examples which serve to show how one may use UUIDv8 <xref target="uuidv8"/> for custom and/or experimental application based logic.
The examples below have not been through the same rigorous testing, prototyping, and feedback loop that other algorithms in this document have undergone.
The authors encouraged implementors to create your own UUIDv8 algorithm rather than use the items defined in this section.</t>
      <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
10ns precision, truncated to the least-significant, right-most, bits
to fill the first 60 bits of custom_a and custom_b while setting the version bits between these two segments to the version value of 8.</t>
        <t>The variant bits are set and the final segment, custom_c, is 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>
        <figure>
          <name>UUIDv8 Example Time-based Illustrative Example</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x6D6320C3D4DC
ver        4   0x8
custom_b  12   0xC00
var        2   0b10
custom_c  62   0b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 6D6320C3-D4DC-8C00-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <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 algorithms such as SHA-256 or SHA-512 defined by <xref target="FIPS180-4"/>, SHA-3 or SHAKE defined by <xref target="FIPS202"/>, or even algorithms that have not been defined yet.</t>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> as an illustrative example detailing how this can be achieved.
The creation of the name-based UUIDv8 value in this section follows the same logic defined in <xref target="uuidv5"/> with the difference being SHA-256 in place of SHA-1.</t>
        <t>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"/>.
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.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Namespace (DNS):       6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
5c146b143c524afd938a375d0df1fbf6fe12a66b645f72f6158759387e51f3c8
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Illustrative Example</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x5c146b143c52
ver        4   0x8
custom_b  12   0xafd
var        2   0b10
custom_c  62   0b00, 0x38a375d0df1fbf6
-------------------------------------------
total     128
-------------------------------------------
final: 5c146b14-3c52-8afd-938a-375d0df1fbf6
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 5c146b14-3c52-4afd-938a-375d0df1fbf6-fe12a66b645f72f6158759387e51f3c8
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 5c146b14-3c52-8afd-938a-375d0df1fbf6
D:                                     -fe12a66b645f72f6158759387e51f3c8
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>
            <t>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</t>
          </li>
          <li>
            <t>Line B details the version and variant hexadecimal positions which must be overwritten.</t>
          </li>
          <li>
            <t>Line C details the final value after the ver/var have been overwritten.</t>
          </li>
          <li>
            <t>Line D details the discarded, leftover values from the original SHA-256 computation.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
ldf0jNO6ar/78fdyowjLaAPhVt3GvrONrV31VX5LK7+nF5bOafCVRU9G4/2k
DxHvMp89Pu+QSnqS/1o6HqIB4MPZkATbcUD1/NnQLZpnoAnDR6NdL0pPTdei
Ic22tLfDr+ztcHA43t8HBJQQfaArsYYMVLP0oerQvZkSyb1Lp22SCtq3ELGK
LF+URsrYCtTuH6UHJLUNB5PDGiX8Qd49ZvnLvxxvvFVCCJzdWEXu5BwvqmSa
xy+T9KeE2OawSJVphpsGfp2+ff3yu+eQgyIbgSbBCkS3Zuf9VYdgMwzXfFqk
wqJKf7MwdAnyfLrJjOz15eW//kAwjN/lZXVdpJf/Pl27hfcyY3wlUzaX3/sa
5X7RP9g7Oux3AaQPPzxji4tpNt4pSZ0Id7VCg2c5JydSO7+BvENfOHLolfS1
2zohnpYQRF4RhSZyUj+W3tHX+e24OzroHbCw8oxNkXAyrcqdsk7BX9Dv8bFd
ppStfrwBL6iW65HrhGQwUgFOMbRSwHAD+1/ZAInx6dEABH2+KG/W7WFCd3tI
YhTp3fn1NB2SxMobAgXd6fZ3cKv6PUKE++SxbFd5GwbSIm0Lqfi4f9i5qW6n
4aZxlfr/B70S/0ivkOBOnBKvrLDMrCMe3/Falug5UPGPz7lE5c5D/SCW+ecz
iPTbaXYHVeJdnpE2sUTNVMxcfwDpJNk/OASlFtvSupWP81HZIR53nY9l/bfJ
bJFMScCdEA0i5W/nNqXVjXd0mPFOuDX7kJb9GmOcvYxf8/vrgKtPBduZJNMy
jTfjP/7xj/HoJh2BKZ0+h1rR1kfpdJrlVbUzakgvpzl9Act5m1Q44jEkFhPa
k/42r7JbyJtMqaD3/ZTD6s0iNRu8Sdsj5ZFVKdr8KkFazuecZidhhaf/5sPp
9/aG/QNQ1ovz8/ODvTXmuNIMPZ0sTVO2vOCHHXphZ7/f69aOAiM50xBv79U0
Z2LdJhyi/Z+QkntDh5mN1qoHGGPpqq+T3S75k+OYVtNW9f/D+zdvCDrlPBnR
Nyv3dH9/38mSWcK7gUJ4PYPEWO4sill75l5u/Np5aF50uks4JNKKy3xRkH7A
E8dbtITt2C9i7U5P3pzUjw0qZLsHDv3ukR6fPXFd5vwA72B3Z5oNC2g6YPVL
5IilTrEPlHCm5CLxE1l6/+p03dpk/vrqdolntPu79OHrbFTkZT6pVi+Q1NJi
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
HAbsF+/ogcqe4BzpePIfE85iwBGGAQA=

-->

</rfc>
