<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.31 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-04" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="UUID">Universally Unique IDentifiers (UUID)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-04"/>
    <author initials="P." surname="Leach" fullname="P. Leach">
      <organization>Microsoft</organization>
      <address>
        <email>paulle@microsoft.com</email>
      </address>
    </author>
    <author initials="M." surname="Mealling" fullname="M. Mealling">
      <organization>VeriSign, Inc.</organization>
      <address>
        <email>michael@refactored-networks.com</email>
      </address>
    </author>
    <author initials="B. G." surname="Peabody" fullname="Brad G. Peabody">
      <organization>Uncloud</organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </author>
    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <date year="2023"/>
    <area>ART</area>
    <workgroup>uuidrev</workgroup>
    <keyword>uuid</keyword>
    <abstract>
      <t>This specification defines 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>
    <section anchor="Background">
      <name>Introduction</name>
      <t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and requires no central
registration process.</t>
      <t>The use of UUIDs is extremely pervasive in computing.  They comprise
the core identifier infrastructure for many operating systems
such as Microsoft Windows and applications such as the Mozilla Web browser and in
many cases, become exposed in many non-standard ways.</t>
      <t>This specification attempts to standardize that practice as openly as
possible and in a way that attempts to benefit the entire Internet.
The information here is meant to be a concise guide for those wishing
to implement services using UUIDs, UUIDs in combination with URNs <xref target="RFC8141"/>, or otherwise.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from <xref target="RFC4122"/>.  Both sets of
specifications have been aligned and are fully technically
compatible.  In addition, a global registration function is being
provided by the Telecommunications Standardization Bureau of ITU-T;
for details see <eref target="https://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx"/>.
Nothing in this document should be construed to override the DCE standards that defined UUIDs.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although one format uses
IEEE 802 node identifiers, others do not).  As a result, generation
on demand can be completely automated and used for a variety of
purposes.  The UUID generation algorithm described here supports very
high allocation rates of 10 million per second per machine or more if
necessary, so that they could even be used as transaction IDs.</t>
      <t>UUIDs are of a fixed size (128 bits), which is reasonably small
compared to other alternatives.  This lends itself well to sorting,
ordering, and hashing of all sorts, storing in databases, simple
allocation, and ease of programming in general.</t>
      <t>Since UUIDs are unique and persistent, they make excellent Uniform
Resource Names.  The unique ability to generate a new UUID without a
registration process allows for UUIDs to be one of the URNs with the
lowest minting cost.</t>
      <section anchor="update-motivation">
        <name>Update Motivation</name>
        <t>Many things have changed in the time since UUIDs were originally created.
Modern applications have a need to create and utilize UUIDs as the primary
identifier for a variety of different items in complex computational systems,
including but not limited to database keys, file names, machine or system
names, and identifiers for event-driven transactions.</t>
        <t>One area in which UUIDs have gained popularity is as database keys.
This stems from the increasingly distributed nature of modern applications.
In such cases, "auto increment" schemes often used by databases do not work
well, as the effort required to coordinate sequential numeric identifiers across
a network can easily become a burden.
The fact that UUIDs can be used to create unique, reasonably short values
in distributed systems without requiring coordination makes them a good
alternative, but UUID versions 1-5 lack certain other desirable characteristics:</t>
        <ol spacing="normal" type="1"><li>Non-time-ordered UUID versions such as UUIDv4 (described in <xref target="uuidv4"/>) have poor database index
  locality.
  This means that new values created in succession are not close to each other in
  the index and thus require inserts to be performed at random
  locations.
  The negative performance effects of which on common structures used for
  this (B-tree and its variants) can be dramatic.</li>
          <li>The 100-nanosecond Gregorian epoch used in UUIDv1 (described in <xref target="uuidv1"/>) timestamps is uncommon
  and difficult to represent accurately using a standard number format such
  as <xref target="IEEE754"/>.</li>
          <li>Introspection/parsing is required to order by time sequence, as opposed to
  being able to perform a simple byte-by-byte comparison.</li>
          <li>Privacy and network security issues arise from using a MAC address in the
  node field of Version 1 UUIDs.
  Exposed MAC addresses can be used as an attack surface to locate machines
  and reveal various other
  information about such machines (minimally manufacturer, potentially other
  details). Additionally, with the advent of virtual machines and containers,
  MAC address uniqueness is no longer guaranteed.</li>
          <li>Many of the implementation details specified in RFC4122 involved trade
  offs that are neither possible to specify for all applications nor
  necessary to produce interoperable implementations.</li>
          <li>RFC4122 did not distinguish between the requirements for generation
  of a UUID versus an application that simply stores one, which are often
  different.</li>
        </ol>
        <t>Due to the aforementioned issues, many widely distributed database applications
and large application vendors have sought to solve the problem of creating
a better
time-based, sortable unique identifier for use as a database key. This has
lead to numerous implementations
over the past 10+ years solving the same problem in slightly different ways.</t>
        <t>While preparing this specification, the following 16 different implementations
were analyzed for trends in total ID length, bit layout, lexical formatting/encoding,
timestamp type, timestamp format, timestamp accuracy, node format/components,
collision handling, and multi-timestamp tick generation sequencing:</t>
        <ol spacing="compact" type="1"><li>
            <xref target="ULID"/> by A. Feerasta</li>
          <li>
            <xref target="LexicalUUID"/> by Twitter</li>
          <li>
            <xref target="Snowflake"/> by Twitter</li>
          <li>
            <xref target="Flake"/> by Boundary</li>
          <li>
            <xref target="ShardingID"/> by Instagram</li>
          <li>
            <xref target="KSUID"/> by Segment</li>
          <li>
            <xref target="Elasticflake"/> by P. Pearcy</li>
          <li>
            <xref target="FlakeID"/> by T. Pawlak</li>
          <li>
            <xref target="Sonyflake"/> by Sony</li>
          <li>
            <xref target="orderedUuid"/> by IT. Cabrera</li>
          <li>
            <xref target="COMBGUID"/> by R. Tallent</li>
          <li>
            <xref target="SID"/> by A. Chilton</li>
          <li>
            <xref target="pushID"/> by Google</li>
          <li>
            <xref target="XID"/> by O. Poitrey</li>
          <li>
            <xref target="ObjectID"/> by MongoDB</li>
          <li>
            <xref target="CUID"/> by E. Elliott</li>
        </ol>
        <t>An inspection of these implementations and the issues described above has
led to this document which intends to adapt UUIDs to address these issues.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <section anchor="requirements_language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
      <section anchor="acronyms">
        <name>Abbreviations</name>
        <t>The following abbreviations are used in this document:</t>
        <dl indent="14">
          <dt>UUID</dt>
          <dd>
            <t>Universally Unique Identifier</t>
          </dd>
          <dt>URN</dt>
          <dd>
            <t>Uniform Resource Names</t>
          </dd>
          <dt>ABNF</dt>
          <dd>
            <t>Augmented Backus-Naur Form</t>
          </dd>
          <dt>CSPRNG</dt>
          <dd>
            <t>Cryptographically Secure Pseudo-Random Number Generator</t>
          </dd>
          <dt>MAC</dt>
          <dd>
            <t>Media Access Control</t>
          </dd>
          <dt>MSB</dt>
          <dd>
            <t>Most Significant Bit</t>
          </dd>
          <dt>DBMS</dt>
          <dd>
            <t>Database Management System</t>
          </dd>
          <dt>IEEE</dt>
          <dd>
            <t>Institute of Electrical and Electronics Engineers, Inc.</t>
          </dd>
          <dt>ITU</dt>
          <dd>
            <t>International Telecommunication Union</t>
          </dd>
          <dt>MD5</dt>
          <dd>
            <t>Message Digest 5</t>
          </dd>
          <dt>SHA</dt>
          <dd>
            <t>Secure Hash Algorithm</t>
          </dd>
          <dt>SHA-1</dt>
          <dd>
            <t>Secure Hash Algorithm 1 with message digest of 160 bits</t>
          </dd>
          <dt>SHA-224</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 224 bits</t>
          </dd>
          <dt>SHA-256</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 256 bits</t>
          </dd>
          <dt>SHA-512</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 512 bits</t>
          </dd>
          <dt>SHA-3</dt>
          <dd>
            <t>Secure Hash Algorithm 3</t>
          </dd>
          <dt>SHAKE</dt>
          <dd>
            <t>Secure Hash Algorithm 3 based on KECCAK algorithm</t>
          </dd>
          <dt>UTC</dt>
          <dd>
            <t>Coordinated Universal Time</t>
          </dd>
          <dt>OID</dt>
          <dd>
            <t>Object Identifier</t>
          </dd>
        </dl>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>Changelog</name>
        <t>draft-04</t>
        <ul spacing="compact">
          <li>Remove extra words #82, #88, and #93</li>
          <li>Punctuation and minor style fixes #84</li>
          <li>Change rounding mode of Method 4 Section 6.2 #90 (from #86)</li>
          <li>Add verbal description of v7 generation to 5.7. UUID Version 7 #91</li>
          <li>Remove Re-randomize Until Monotonic (Method 3) from Monotonicity and Counters #92</li>
          <li>Fix ambiguous text around UUIDv6 clock sequence #89</li>
          <li>Move endianness statement from layout to format section #85</li>
          <li>Further modified abstract to separate URN topic from UUID definition #83</li>
          <li>Provided three more UUID format examples #83</li>
          <li>Added text further clarifying version construct is for the variant in this doc #83</li>
          <li>Provided further clarification for local/global bit vs multicast bit #83</li>
        </ul>
        <t>draft-03</t>
        <ul spacing="compact">
          <li>Revised IANA Considerations #71</li>
          <li>Fix "integral numbers of octets" verbiage #67</li>
          <li>Transpose UUID Namespaces to match UUID Hashspaces #70</li>
          <li>Reference all Hash Algorithms. #69</li>
          <li>Normalize SHA abbreviation formats #66</li>
          <li>Add other Hash Abbreviations #65</li>
          <li>Remove URN from title #73</li>
          <li>Move Community Considerations to Introduction #68</li>
          <li>Move some Normative Reference to Informative #74</li>
          <li>Misc formatting changes to address IDNITS feedback</li>
          <li>Downgrade <bcp14>MUST NOT</bcp14> to <bcp14>SHOULD NOT</bcp14> for guessability of UUIDs #75</li>
          <li>Misc. text formatting, typo fixes #78</li>
          <li>Misc. text clarifications #79</li>
          <li>Misc. <bcp14>SHOULD</bcp14>/<bcp14>MUST</bcp14> adjustments #80</li>
          <li>Method 3 and 4 added to monotonic section #81</li>
        </ul>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>Change md5_high in SHA-1 section to sha1_mid #59</li>
          <li>Describe Nil/Max UUID in variant table #16</li>
          <li>Further Clarify that non-descript node IDs are the preferred method in distributed UUID Generation #49</li>
          <li>Appendix B, consistent naming #55</li>
          <li>Remove duplicate ABNF from IANA considerations #56</li>
          <li>Monotonic Error Checking missing newline #57</li>
          <li>More Security Considerations Randomness #26</li>
          <li>SHA-256 UUID Generation #50</li>
          <li>Expand multiplexed fields within v1 and v6 bit definitions #43</li>
          <li>Clean up text in UUIDs that Do Not Identify the Host #61</li>
          <li>Revise UUID Generator States section #47</li>
          <li>Expand upon why unix epoch rollover is not a problem #44</li>
          <li>Delete Sample Code Appendix #62</li>
        </ul>
        <t>draft-01</t>
        <ul spacing="compact">
          <li>Mixed Case Spelling error #18</li>
          <li>Add "UUIDs that Do Not Identify the Host as well" reference to security considerations #19</li>
          <li>Out of Place Distributed node text #20</li>
          <li>v6 clock_seq and node usage ambiguity #21</li>
          <li>Figure 2 and 3 Fix Title #22</li>
          <li>Move Namespace Registration Template to IANA Considerations #23</li>
          <li>Verify ABNF formatting against RFC5234 #24</li>
          <li>Bump ABNF reference to RFC 5234 #25</li>
          <li>Modify v8 <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> #27</li>
          <li>Remove "time-based" constraint from version 8 UUID #29</li>
          <li>Further clarify v7 field description #125 #30</li>
          <li>Typo: Section 4.2, Version Field, "UUID from in this" #33</li>
          <li>Create better ABNF to represent Hex Digit #39</li>
          <li>Break Binary form of UUID into two lines. #40</li>
          <li>Move octet text from section 4 to section 5 #41</li>
          <li>Add forward reference to UUIDv1 and UUIDv4 in Section 2 #42</li>
          <li>Erroneous reference to v1 in monotonicity #45</li>
          <li>Add Label for "Monotonic Error Checking" paragraph to frame the topic #46</li>
          <li>Remove IEEE paragraph from "uuids that do not identify the host" #48</li>
          <li>Grammar Review #52</li>
        </ul>
        <t>draft-00</t>
        <ul spacing="compact">
          <li>Merge RFC4122 with draft-peabody-dispatch-new-uuid-format-04.md</li>
          <li>Change: Reference RFC1321 to RFC6151</li>
          <li>Change: Reference RFC2141 to RFC8141</li>
          <li>Change: Reference RFC2234 to RFC5234</li>
          <li>Change: Reference FIPS 180-1 to FIPS 180-4 for SHA-1</li>
          <li>Change: Converted UUIDv1 to match UUIDv6 section from Draft 04</li>
          <li>Change: Trimmed down the ABNF representation</li>
          <li>Change: http websites to https equivalent</li>
          <li>Errata: Bad Reference to RFC1750 | 3641 #4</li>
          <li>Errata: Change MD5 website to example.com | 3476 #6 (Also Fixes Errata: Fix uuid_create_md5_from_name() | 1352 #2)</li>
          <li>Errata: Typo in code comment | 6665 #11</li>
          <li>Errata: Fix BAD OID acronym | 6225 #9</li>
          <li>Errata: Incorrect Parenthesis usage Section 4.3 | 184 #5</li>
          <li>Errata: Lexicographically Sorting Paragraph Fix | 1428 #3</li>
          <li>Errata: Fix 4.1.3 reference to the correct bits | 1957 #13</li>
          <li>Errata: Fix reference to variant in octet 8 | 4975 #7</li>
          <li>Errata: Further clarify 3rd/last bit of Variant for spec | 5560 #8</li>
          <li>Errata: Fix clock_seq_hi_and_reserved most-significant bit verbiage | 4976 #10</li>
          <li>Errata: Better Clarify network byte order when referencing most significant bits | 3546 #12</li>
          <li>Draft 05: B.2. Example of a UUIDv7 Value two "var" in table #120</li>
          <li>Draft 05: <bcp14>MUST</bcp14> verbiage in Reliability of 6.1 #121</li>
          <li>Draft 05: Further discourage centralized registry for distributed UUID Generation.</li>
          <li>New: Further Clarity of exact octet and bit of var/ver in this spec</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv4</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv3</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv5</li>
          <li>New: Add MD5 Security Considerations reference, RFC6151</li>
          <li>New: Add SHA-1 Security Considerations reference, RFC6194</li>
        </ul>
      </section>
    </section>
    <section anchor="format">
      <name>UUID Format</name>
      <t>The UUID format is 16 octets (128 bits); the variant bits in conjunction with the version
bits described in the next sections in 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>UUIDs <bcp14>MAY</bcp14> be represented as binary data or integers.
When in use with URNs or as text in applications, any given UUID <bcp14>SHOULD</bcp14>
be represented by the "hex-and-dash" string format consisting of multiple
groups of upper or lowercase alphanumeric 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>An example UUID using this textual representation from the above ABNF is shown in <xref target="sampleStringUUID"/>.
Note that in this example the alphabetic characters may be all uppercase, all lowercase, or mixed case, as per <xref section="2.3" sectionFormat="comma" target="RFC5234"/></t>
      <figure anchor="sampleStringUUID">
        <name>Example String UUID format</name>
        <artwork><![CDATA[
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>The same UUID from <xref target="sampleStringUUID"/> is represented in Binary <xref target="sampleBinaryUUID"/>, Integer <xref target="sampleIntegerUUID"/> and as a URN <xref target="sampleURNUUID"/> defined by <xref target="RFC8141"/>.</t>
      <figure anchor="sampleBinaryUUID">
        <name>Example Binary UUID</name>
        <artwork><![CDATA[
111110000001110101001111101011100111110111101100000100011101000\
01010011101100101000000001010000011001001000111100110101111110110
]]></artwork>
      </figure>
      <figure anchor="sampleIntegerUUID">
        <name>Example Integer UUID (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 many other ways to define a UUID format some select methods are detailed below.
Please note that this is not an exhaustive list and is only provided for informational purposes.</t>
      <ul spacing="compact">
        <li>Some UUID implementations, such as those found in <xref target="Python"/> and <xref target="Microsoft"/>, will output UUID with the string format, including dashes, enclosed in curly braces.</li>
        <li>
          <xref target="X667"/> provides UUID format definitions for use of UUID with an OID.</li>
        <li>The legacy <xref target="IBM_NCS"/> implementation produces a unique UUID format compatible with Variant 0xx of <xref target="table1"/></li>
      </ul>
      <section anchor="variant_field">
        <name>Variant Field</name>
        <t>The variant field determines the layout of the UUID.  That is, the
interpretation of all other bits in the UUID depends on the setting
of the bits in the variant field.  As such, it could more accurately
be called a type field; we retain the original term for
compatibility.  The variant field consists of a variable number of
the most significant bits of octet 8 of the UUID.</t>
        <t><xref target="table1"/> lists the contents of the variant field, where
the letter "x" indicates a "don't-care" value.</t>
        <table anchor="table1">
          <name>UUID Variants</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">Reserved, NCS backward compatibility and includes Nil UUID as per <xref target="niluuid"/>.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">The variant specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">Reserved, Microsoft Corporation backward compatibility.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">Reserved for future definition and includes Max UUID as per <xref target="maxuuid"/>.</td>
            </tr>
          </tbody>
        </table>
        <t>Interoperability, in any form, with variants other than the one
defined here is not guaranteed but is not likely to be an issue in
practice.</t>
        <t>Specifically for UUIDs in this document bits 64 and 65 of the UUID (bits 0 and 1 of octet 8) <bcp14>MUST</bcp14> be set to 1 and 0 as specified in row 2 of <xref target="table1"/>.
Accordingly, all bit and field layouts avoid the use of these bits.</t>
      </section>
      <section anchor="version_field">
        <name>Version Field</name>
        <t>The version number is in the most significant 4 bits of octet 6
(bits 48 through 51 of the UUID).</t>
        <t><xref target="table2"/> lists all of the versions for this UUID variant 10x specified in this document.</t>
        <table anchor="table2">
          <name>UUID variant 10x versions defined by this specification</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Msb3</th>
              <th align="left">Version</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">Unused</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">The Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">2</td>
              <td align="left">Reserved for DCE Security version, with embedded POSIX UUIDs.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">3</td>
              <td align="left">The name-based version specified in this document that uses MD5 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">4</td>
              <td align="left">The randomly or pseudo-randomly generated version specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">5</td>
              <td align="left">The name-based version specified in this document that uses SHA-1 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">6</td>
              <td align="left">Reordered Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">7</td>
              <td align="left">Unix Epoch time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">8</td>
              <td align="left">Reserved for custom UUID formats specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">9</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">10</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">11</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">12</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">13</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">14</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">15</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
          </tbody>
        </table>
        <t>An example version/variant layout for UUIDv4 follows the table
where M represents the version placement for the hexadecimal representation of 4 (0100)
and the N represents the variant placement for one of the four possible hexadecimal representation of variant 10x:
8 (1000), 9 (1001), A (1010), B (1011)</t>
        <figure>
          <name>UUIDv4 Variant Examples</name>
          <artwork><![CDATA[
00000000-0000-4000-8000-000000000000
00000000-0000-4000-9000-000000000000
00000000-0000-4000-A000-000000000000
00000000-0000-4000-B000-000000000000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
]]></artwork>
        </figure>
        <t>It should be noted that the other remaining UUID variants found in <xref target="table1"/> leverage different sub-typing/versioning mechanisms.
The recording and definition of the remaining UUID variant and sub-typing combinations are outside of the scope of this document.</t>
      </section>
    </section>
    <section anchor="layout">
      <name>UUID Layouts</name>
      <t>To minimize confusion about bit assignments within octets and among differing versions, the UUID record definition is provided as a grouping of fields within bit layout consisting four octets to a row.
The fields are presented with the most significant one first.</t>
      <section anchor="uuidv1">
        <name>UUID Version 1</name>
        <t>UUID Version 1 is a time-based UUID featuring a 60-bit timestamp
represented by Coordinated Universal Time (UTC) as a count of 100-
nanosecond intervals since 00:00:00.00, 15 October 1582 (the date of
Gregorian reform to the Christian calendar).</t>
        <t>UUID Version 1 also features a clock sequence field which is used to help avoid
duplicates that could arise when the clock is set backwards in time
or if the node ID changes.</t>
        <t>The node field consists of an IEEE 802 MAC
address, usually the host address.  For systems with multiple IEEE
802 addresses, any available one <bcp14>MAY</bcp14> be used.  The lowest addressed
octet (octet number 10) contains the global/local bit and the
unicast/multicast bit, and is the first octet of the address
transmitted on an 802.3 LAN.</t>
        <figure>
          <name>UUIDv1 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_high       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_low:</dt>
          <dd>
            <t>The least significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3)</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5)</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0001.
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>time_high:</dt>
          <dd>
            <t>12 bits that will contain the most significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14-bits containing the clock sequence.
  Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>For systems that do not have UTC available, but do have the local
time, they may use that instead of UTC, as long as they do so
consistently throughout the system.  However, this is not recommended
since generating the UTC from local time only needs a time zone
offset.</t>
        <t>If the clock is set backwards, or might have been set backwards
(e.g., while the system was powered off), and the UUID generator can
not be sure that no UUIDs were generated with timestamps larger than
the value to which the clock was set, then the clock sequence <bcp14>MUST</bcp14>
be changed.  If the previous value of the clock sequence is known, it
<bcp14>MAY</bcp14> be incremented; otherwise it <bcp14>SHOULD</bcp14> be set to a random or
high-quality pseudo-random value.</t>
        <t>Similarly, if the node ID changes (e.g., because a network card has
been moved between machines), setting the clock sequence to a random
number minimizes the probability of a duplicate due to slight
differences in the clock settings of the machines.  If the value of
clock sequence associated with the changed node ID were known, then
the clock sequence <bcp14>MAY</bcp14> be incremented, but that is unlikely.</t>
        <t>The clock sequence <bcp14>MUST</bcp14> be originally (i.e., once in the lifetime of
a system) initialized to a random number to minimize the correlation
across systems.  This provides maximum protection against node
identifiers that may move or switch from system to system rapidly.
The initial value <bcp14>MUST NOT</bcp14> be correlated to the node identifier.</t>
        <t>For systems with no IEEE address, a randomly or pseudo-randomly
generated value may be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
      </section>
      <section anchor="uuidv2">
        <name>UUID Version 2</name>
        <t>UUID Version 2 is known as DCE Security UUIDs <xref target="C309"/> and <xref target="C311"/>.
As such the definition of these UUIDs are outside the scope of this specification.</t>
      </section>
      <section anchor="uuidv3">
        <name>UUID Version 3</name>
        <t>UUID Version 3 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv3 values are created by computing an MD5 <xref target="RFC1321"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This MD5 value is then used to populate all 128 bits of the UUID layout.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>.</t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>Where possible UUIDv5 <bcp14>SHOULD</bcp14> be used in lieu of UUIDv3.
For more information on MD5 security considerations see <xref target="RFC6151"/>.</t>
        <figure>
          <name>UUIDv3 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          md5_high             |  ver  |       md5_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>md5_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed MD5 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0011</t>
          </dd>
          <dt>md5_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following md5_high
from the computed MD5 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>md5_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with the least-significant, right-most bits of the final 64 bits
from the computed MD5 value.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv4">
        <name>UUID Version 4</name>
        <t>The version 4 UUID is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random 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"/></t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0100</t>
          </dd>
          <dt>random_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled random data as per <xref target="unguessability"/></t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>random_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with random data as per <xref target="unguessability"/></t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv5">
        <name>UUID Version 5</name>
        <t>UUID Version 5 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv5 values are created by computing an SHA-1 <xref target="FIPS180-4"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This SHA-1 value is then used to populate all 128 bits of the UUID layout. Excess bits beyond 128 are discarded.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/></t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>There may be scenarios, usually depending on organizational security policies, where SHA-1 libraries may not be available or deemed unsafe for use.
As such it may be desirable to generate name-based UUIDs derived from SHA-256 or newer SHA methods. These name-based UUIDs <bcp14>MUST NOT</bcp14> utilize UUIDv5 and <bcp14>MUST</bcp14> be within the UUIDv8 space defined by <xref target="v8"/>.
For implementation guidance around utilizing UUIDv8 for name-based UUIDs refer to the sub-section of <xref target="name_based_uuid_generation"/>.</t>
        <t>For more information on SHA-1 security considerations see <xref target="RFC6194"/>.</t>
        <figure>
          <name>UUIDv5 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         sha1_high             |  ver  |      sha1_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>sha1_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed SHA-1 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>sha1_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following sha1_high
from the computed SHA-1 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>sha1_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled by skipping the 2 most significant, left-most bits of the remaining SHA-1 hash
and then using the next 62 most significant, left-most bits.
Any leftover SHA-1 bits are discarded and unused.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv6">
        <name>UUID Version 6</name>
        <t>UUID version 6 is a field-compatible version of UUIDv1, reordered for improved
DB locality.
It is expected that UUIDv6 will primarily be used in contexts where there
are existing v1 UUIDs.
Systems that do not involve legacy UUIDv1 <bcp14>SHOULD</bcp14> use UUIDv7 instead.</t>
        <t>Instead of splitting the timestamp into the low, mid, and high sections from
UUIDv1, UUIDv6 changes this sequence so timestamp bytes are stored from most
to least significant.
That is, given a 60 bit timestamp value as specified for UUIDv1 in <xref target="uuidv1"/>,
for UUIDv6, the first 48 most significant bits are stored
first, followed by the 4 bit version (same position), followed by the remaining
12 bits of the original 60 bit timestamp.</t>
        <t>The clock sequence  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 0110.
Occupies bits 48 through 51 of Octet 6.</t>
          </dd>
          <dt>time_low:</dt>
          <dd>
            <t>12 bits that will contain the least significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14 bits containing the clock sequence.
Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>With UUIDv6 the steps for splitting the timestamp into time_high and time_mid
are <bcp14>OPTIONAL</bcp14>
since the 48 bits of time_high and time_mid will remain in the same order.
An extra step of splitting the first 48 bits of the timestamp into the most
significant
32 bits and least significant 16 bits proves useful when reusing an existing
UUIDv1 implementation.</t>
      </section>
      <section anchor="v7">
        <name>UUID Version 7</name>
        <t>UUID Version 7 features a time-ordered value field derived from the widely
implemented and well known Unix Epoch timestamp source, the number of milliseconds
since midnight 1 Jan 1970 UTC, leap seconds excluded.
UUIDv7 generally has improved entropy characteristics over UUIDv1 or 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, jointly, excluding the required version and variant bits, with a combination of the following subfields, in this order from the most significant bits to the least:</t>
        <ol spacing="normal" type="1"><li>An <bcp14>OPTIONAL</bcp14> sub-millisecond timestamp fraction (12 bits at maximum) to utilize extra clock precision as per <xref target="monotonicity_counters"/> (Method 3).</li>
          <li>An <bcp14>OPTIONAL</bcp14> carefully seeded counter to guarantee additional monotonicity as per <xref target="monotonicity_counters"/> (Method 1 or 2).</li>
          <li>Random data for each new UUIDv7 generated to provide uniqueness as per <xref target="unguessability"/> for any remaining space.</li>
        </ol>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize UUIDv7 instead of UUIDv1 and UUIDv6 if
possible.</t>
        <figure>
          <name>UUIDv7 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           unix_ts_ms                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          unix_ts_ms           |  ver  |       rand_a          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>unix_ts_ms:</dt>
          <dd>
            <t>48 bit big-endian unsigned number of Unix epoch timestamp in milliseconds as per <xref target="timestamp_considerations"/>.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>4 bit UUIDv7 version set as per <xref target="version_field"/></t>
          </dd>
          <dt>rand_a:</dt>
          <dd>
            <t>12 bits pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or optional constructs to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>rand_b:</dt>
          <dd>
            <t>The final 62 bits of pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or an optional counter to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="v8">
        <name>UUID Version 8</name>
        <t>UUID version 8 provides an RFC-compatible format for experimental or vendor-specific
use cases.
The only requirement is that the variant and version bits <bcp14>MUST</bcp14> be set as
defined in <xref target="variant_field"/> and <xref target="version_field"/>.
UUIDv8's uniqueness will be implementation-specific and <bcp14>MUST NOT</bcp14> be assumed.</t>
        <t>The only explicitly defined bits are the version and variant, leaving 122
bits
for implementation specific UUIDs. To be clear:
UUIDv8 is not a replacement for UUIDv4 where all 122 extra bits are
filled with random data.</t>
        <t>Some example situations in which UUIDv8 usage could occur:</t>
        <ul spacing="normal">
          <li>An implementation would like to embed extra information
within the UUID other than what is defined in this document.</li>
          <li>An implementation has other application/language restrictions which
inhibit the use of one of the current UUIDs.</li>
        </ul>
        <figure>
          <name>UUIDv8 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          custom_a             |  ver  |       custom_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>custom_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled as an implementation sees
fit.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>custom_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled as an implementation sees fit.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>custom_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled as an implementation sees fit.</t>
          </dd>
        </dl>
      </section>
      <section anchor="niluuid">
        <name>Nil UUID</name>
        <t>The nil UUID is special form of UUID that is specified to have all
128 bits set to zero.</t>
        <figure>
          <name>Nil UUID Format</name>
          <artwork><![CDATA[
00000000-0000-0000-0000-000000000000
]]></artwork>
        </figure>
        <t>A Nil UUID value can be useful to communicate the absence of any other UUID value in situations that otherwise require or use a 128-bit UUID.  A Nil UUID can express the concept "no such value here". Thus it is reserved for such use as needed for implementation-specific situations.</t>
      </section>
      <section anchor="maxuuid">
        <name>Max UUID</name>
        <t>The Max UUID is special form of UUID that is specified to have all 128 bits
set to 1. This UUID can be thought of as the inverse of Nil UUID defined
in <xref target="niluuid"/>.</t>
        <figure>
          <name>Max UUID Format</name>
          <artwork><![CDATA[
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
]]></artwork>
        </figure>
        <t>A Max UUID value can be used as a sentinel value in situations where a 128-bit UUID is required but a concept such as "end of UUID list" needs to be expressed, and is reserved for such use as needed for implementation-specific situations.</t>
      </section>
    </section>
    <section anchor="uuid_best_practices">
      <name>UUID Best Practices</name>
      <t>The minimum requirements for generating UUIDs are
described in this document for each version.
Everything else is an implementation detail and
up to the implementer to decide what is appropriate for a given
implementation. Various relevant factors are covered
below to help guide an implementer through the different trade-offs among
differing UUID implementations.</t>
      <section anchor="timestamp_considerations">
        <name>Timestamp Considerations</name>
        <t>UUID timestamp source, precision, and length was the topic of great debate
while creating UUIDv7 for this specification. Choosing the right timestamp for
your application is a very important topic. This section will detail some
of the most common points on this topic.</t>
        <dl newline="true">
          <dt>Reliability:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> use the current timestamp from a reliable source to
provide values that are time-ordered and continually increasing.
Care <bcp14>SHOULD</bcp14> be taken to ensure that timestamp changes from the environment
or operating system are handled in a way that is consistent with implementation
requirements.
For example, if it is possible for the system clock to move backward due
to either manual adjustment or corrections from a time synchronization protocol,
implementations need to determine how to handle such cases. (See Altering, Fuzzing,
or Smearing 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 fixed millisecond level of precision within the Unix epoch
that does not exceed the granularity capable in most modern systems.
For other levels of precision UUIDv8 <bcp14>SHOULD</bcp14> be utilized.
Similar to <xref target="monotonicity_counters"/>, with UUIDv1 or UUIDv6,
a high resolution timestamp can be simulated by keeping a count of
the number of UUIDs that have been generated with the same value of
the system time, and using it to construct the low order bits of the
timestamp.  The count will range between zero and the number of
100-nanosecond intervals per system time interval.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The length of a given timestamp directly impacts how long a given UUID will
be valid.
That is, how many timestamp ticks can be contained in a UUID before the maximum
value for the timestamp field is reached.
Care <bcp14>SHOULD</bcp14> be given to ensure that the proper length is selected for a given
timestamp.
UUID version 1 and 6 utilize a 60 bit timestamp valid until 5623 AD and UUIDv7 features a 48
bit timestamp valid until the year 10889 AD.</t>
          </dd>
          <dt>Altering, Fuzzing, or Smearing:</dt>
          <dd>
            <t>Implementations <bcp14>MAY</bcp14> alter the actual timestamp. Some examples include security
considerations around providing a real clock value within a UUID, to correct
inaccurate clocks, or to handle leap seconds. This specification makes no
requirement or guarantee about how close the clock value needs to be to the actual
time.
If UUIDs do not need to be frequently generated, the UUIDv1 or UUIDv6 timestamp can
simply be the system time multiplied by the number of 100-nanosecond
intervals per system time interval.</t>
          </dd>
          <dt>Padding:</dt>
          <dd>
            <t>When timestamp padding is required, implementations <bcp14>MUST</bcp14> pad the most significant
bits (left-most) bits with zeros. An example is padding the most significant,
left-most bits of a 32 bit Unix timestamp with zeros to fill out the 48
bit timestamp in UUIDv7.</t>
          </dd>
          <dt>Truncating:</dt>
          <dd>
            <t>When timestamps need to be truncated, the lower, least significant
bits <bcp14>MUST</bcp14> be used. An example would be truncating a 64 bit Unix timestamp
to the least significant, right-most 48 bits for UUIDv7.</t>
          </dd>
          <dt>Error Handling:</dt>
          <dd>
            <t>If a system overruns the generator by requesting too many UUIDs
within a single system time interval, the UUID service <bcp14>SHOULD</bcp14> either
return an error, or stall the UUID generator until the system clock
catches up, and <bcp14>MUST NOT</bcp14> return knowingly duplicate values.
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>Care <bcp14>SHOULD</bcp14> be taken to ensure UUIDs generated in batches are
also monotonic. That is, if one thousand UUIDs are generated for the same
timestamp, there <bcp14>SHOULD</bcp14> be sufficient logic for organizing the creation order of
those one thousand UUIDs.
Batch UUID creation implementations <bcp14>MAY</bcp14> utilize a monotonic counter that
<bcp14>SHOULD</bcp14> increment for each UUID created during a given timestamp.</t>
        <t>For single-node UUID implementations that do not need to create batches of
UUIDs, the embedded timestamp within UUID version 6 and 7 can provide
sufficient monotonicity guarantees by simply ensuring that timestamp increments
before creating a new UUID. Distributed nodes are discussed in
<xref target="distributed_shared_knowledge"/>.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> choose one method for single-node UUID implementations
that require batch UUID creation, 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>SHOULD</bcp14> be positioned immediately after the
embedded timestamp. This promotes sortability and allows random data generation
for each counter increment.
With this method, the rand_a section of UUIDv7 <bcp14>SHOULD</bcp14> be used as fixed-length
dedicated counter bits that are incremented by one for every UUID generation.
The trailing random bits generated for each new UUID in rand_b can help produce
unguessable UUIDs. In the event more counter bits are required, the most significant
(left-most) bits of rand_b <bcp14>MAY</bcp14> be used as additional counter bits.</t>
          </dd>
          <dt>Monotonic Random (Method 2):</dt>
          <dd>
            <t>With this method, the random data is extended to also function as a counter.
This monotonic value can be thought of as a "randomly seeded counter" which
<bcp14>MUST</bcp14> be incremented in the least significant position for each UUID created
on a given timestamp tick.
UUIDv7's rand_b section <bcp14>SHOULD</bcp14> be utilized with this method to handle batch
UUID generation during a single timestamp tick.
The increment value for every UUID generation <bcp14>SHOULD</bcp14> be a random integer
of any desired length larger than zero. It ensures the UUIDs retain the required
level of unguessability provided by the underlying entropy.
The increment value <bcp14>MAY</bcp14> be one when the number of UUIDs generated in a particular
period of time is important and guessability is not an issue. However, it
<bcp14>SHOULD NOT</bcp14> be used by implementations that favor unguessablity, as the resulting
values are easily guessable.</t>
          </dd>
          <dt>Replace Left-Most Random Bits with Increased Clock Precision (Method 3):</dt>
          <dd>
            <t>For UUIDv7, which has millisecond timestamp precision, it is possible
to use any additional clock precision available on the system to substitute
for random bits immediately following the timestamp.  This can provide
values that are time-ordered with sub-millisecond precision, using
however many bits are appropriate in the implementation environment.
With this method, the additional time precision bits <bcp14>MUST</bcp14> follow the
timestamp as the next available bit, in the rand_a field for UUIDv7.
</t>
            <t>To calculate this value, start with the portion of the timestamp
expressed as a fraction of clock's tick value (fraction of a millisecond
for UUIDv7).  Compute the count of possible values that can be represented in
the available bit space, 4096 for the UUIDv7 rand_a field.
Using floating point math, multiply this fraction of a millisecond
value by 4096 and round down (toward zero) to an integer result to arrive at a number
between 0 and the maximum allowed for the indicated bits
which is sorts monotonically based on time. Each increasing fractional
value will result in an increasing bit field value, to the
precision available with these bits.</t>
            <t>For example, let's assume a system timestamp of 1 Jan 2023 12:34:56.1234567.
Taking the precision greater than 1ms gives us a value of 0.4567, as a
fraction of a millisecond.  If we wish to encode this as 12 bits, we can
take the count of possible values that fit in those bits (4096, or 2 to the 12th power)
and multiply it by our millisecond fraction value of 0.4567 and truncate the result to
an integer, which gives an integer value of 1870. Expressed as hexadecimal it is
0x74E, or the binary bits 011101001110.  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 and desired
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 <bcp14>SHOULD</bcp14> randomly initialize
the counter with each new timestamp tick.
However, when the timestamp has not incremented, the counter <bcp14>SHOULD</bcp14> be frozen
and incremented via the desired increment logic.
When utilizing a randomly seeded counter alongside Method 1, the random value <bcp14>MAY</bcp14>
be regenerated with each counter increment without impacting sortability.
The downside is that Method 1 is prone to overflows if a counter of adequate
length is not selected or the random data generated leaves little room for
the required number of increments.
Implementations utilizing fixed-length counter method <bcp14>MAY</bcp14> also choose to
randomly initialize a portion counter rather than the entire counter. For
example, a 24 bit counter could have the 23 bits in least-significant, right-most,
position randomly initialized. The remaining most significant, left-most
counter bits are initialized as zero for the sole purpose of guarding against
counter rollovers.</t>
          </dd>
          <dt>Fixed-Length Dedicated Counter Length:</dt>
          <dd>
            <t>Select a counter bit-length that can properly handle
the level of timestamp precision in use.
For example, millisecond precision generally requires a larger counter than a
timestamp with nanosecond precision.
General guidance is that the counter <bcp14>SHOULD</bcp14> be at least 12 bits but no longer
than 42 bits.
Care <bcp14>SHOULD</bcp14> also be given to ensure that the counter length selected leaves
room for sufficient entropy in the random portion of the UUID after the counter.
This entropy helps improve the unguessability characteristics of UUIDs created
within the batch.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover rollover handling with either type of counter
method:</t>
        <dl newline="true">
          <dt>Counter Rollover Guards:</dt>
          <dd>
            <t>The technique from Fixed-Length Dedicated Counter Seeding that describes
allocating a segment of the fixed-length counter as a rollover guard is also
helpful to mitigate counter rollover issues.
This same technique can be used with monotonic random counter methods
by ensuring the total length of a possible increment in the least significant,
right most position is less than the total length of the random being incremented.
As such the most significant, left-most, bits can be incremented as rollover
guarding.</t>
          </dd>
          <dt>Counter Rollover Handling:</dt>
          <dd>
            <t>Counter rollovers <bcp14>SHOULD</bcp14> be handled by the application to avoid sorting issues.
The general guidance is that applications that care about absolute monotonicity
and sortability <bcp14>SHOULD</bcp14> freeze the counter and wait for the timestamp to advance
which ensures monotonicity is not broken.
Alternatively, implementations <bcp14>MAY</bcp14> increment the timestamp ahead of the actual
time and reinitialize the counter.</t>
          </dd>
        </dl>
        <t>Implementations <bcp14>MAY</bcp14> use the following logic to ensure UUIDs featuring embedded
counters are monotonic in nature:</t>
        <ol spacing="normal" type="1"><li>Compare the current timestamp against the previously stored timestamp.</li>
          <li>If the current timestamp is equal to the previous timestamp, increment the
  counter according to the desired method.</li>
          <li>If the current timestamp is greater than the previous timestamp, re-initialize
  the desired counter method to the new timestamp and generate new random bytes
  (if the bytes were frozen or being used as the seed for a monotonic counter).</li>
        </ol>
        <dl newline="true">
          <dt>Monotonic Error Checking:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> check if the 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>SHOULD</bcp14> proceed with UUID generation as if this was the first UUID created within a batch.
This is the least desirable implementation because it will increase the frequency
of creation of values such as clock sequence, counters, or random data, which increases the
probability of duplicates.</t>
        <t>An implementation <bcp14>MAY</bcp14> also return an application error in the event that collision resistance is of the utmost concern.
The semantics of this error are up to the application and implementation.
See <xref target="collision_resistance"/> for more information on weighting collision tolerance in applications.</t>
        <t>For UUIDv1 and UUIDv6, if the node ID can never change (e.g., the network interface card
from which the node ID is derived is inseparable
from the system), or if any change also re-initializes the clock
sequence to a random value, then instead of keeping it in stable
store, the current node ID may be returned.</t>
        <t>For UUIDv1 and UUIDv6, the state does not always need to be written to stable store every
time a UUID is generated.  The timestamp in the stable store can be
periodically set to a value larger than any yet used in a UUID.  As
long as the generated UUIDs have timestamps less than that value, and
the clock sequence and node ID remain unchanged, only the shared
volatile copy of the state needs to be updated.  Furthermore, if the
timestamp value in stable store is in the future by less than the
typical time it takes the system to reboot, a crash will not cause a
re-initialization of the clock sequence.</t>
        <t>If it is too expensive to access shared state each time a UUID is
generated, then the system-wide generator can be implemented to
allocate a block of time stamps each time it is called; a per-
process generator can allocate from that block until it is exhausted.</t>
      </section>
      <section anchor="distributed_shared_knowledge">
        <name>Distributed UUID Generation</name>
        <t>Some implementations <bcp14>MAY</bcp14> desire to utilize multi-node, clustered, applications
which involve two or more
nodes independently generating UUIDs that will be stored in a common location.
While UUIDs already feature sufficient entropy to ensure that the chances
of collision are low, as the total number of UUID generating nodes increase; so does the likelihood
of a collision.</t>
        <t>This section will detail the two additional collision resistance approaches that have been observed by by multi-node
UUID implementations in distributed environments.</t>
        <t>It should be noted that although this section details two methods for the sake of completeness;
implementations <bcp14>SHOULD</bcp14> utilize the pseudo-random Node ID option if additional collision resistance for distributed UUID generation is a requirement.
Likewise, utilization of either method is not required for implementing UUID generation in distributed environments.</t>
        <dl newline="true">
          <dt>Node IDs:</dt>
          <dd>
            <t>With this method, a pseudo-random Node ID value is placed within the UUID
layout.
This identifier helps ensure the bit-space for a given node is unique, resulting
in UUIDs that do not conflict with any other UUID created by another node
with a different node id.
Implementations that choose to leverage an embedded node id <bcp14>SHOULD</bcp14> utilize
UUIDv8.
The node id <bcp14>SHOULD NOT</bcp14> be an IEEE 802 MAC address as per <xref target="Security"/>.
The location and bit length are left to implementations and are outside the
scope of this specification.
Furthermore, the creation and negotiation of unique node ids among nodes
is also out of scope for this specification.</t>
          </dd>
          <dt>Centralized Registry:</dt>
          <dd>
            <t>With this method all nodes tasked with creating UUIDs consult a central registry
and confirm the generated value is unique. As applications scale, the communication
with the central registry could become a bottleneck and impact UUID generation
in a negative way. Shared knowledge schemes with central/global
registries are outside the scope of this specification and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
          </dd>
        </dl>
        <t>Distributed applications generating UUIDs at a variety of hosts <bcp14>MUST</bcp14>
be willing to rely on the random number source at all hosts.</t>
      </section>
      <section anchor="name_based_uuid_generation">
        <name>Name-Based UUID Generation</name>
        <t>The concept of name and name space should be broadly construed and not
limited to textual names.  For example, some name spaces are the
domain name system, URLs, Object Identifiers (OIDs), X.500 Distinguished
Names (DNs), and reserved words in a programming language.  The
mechanisms or conventions used for allocating names and ensuring
their uniqueness within their name spaces are beyond the scope of
this specification.</t>
        <t>The requirements for name-based UUIDs are as follows:</t>
        <ul spacing="normal">
          <li>UUIDs generated at different times from the same name in the
same namespace <bcp14>MUST</bcp14> be equal.</li>
          <li>UUIDs generated from two different names in the same namespace
should be different (with very high probability).</li>
          <li>UUIDs generated from the same name in two different namespaces
should be different (with very high probability).</li>
          <li>If two UUIDs that were generated from names are equal, then they
were generated from the same name in the same namespace (with very
high probability).</li>
        </ul>
        <dl newline="true">
          <dt>A note on namespaces:</dt>
          <dd>
            <t>While <xref target="namespaces"/> details a few interesting namespaces; implementations <bcp14>SHOULD</bcp14> provide the ability input a custom namespace.
For example, any other UUID <bcp14>MAY</bcp14> be generated and used as the desired namespace input for a given application context to
ensure all names created are unique within the newly created namespace.</t>
          </dd>
          <dt>Name-based UUIDs using version 8:</dt>
          <dd>
            <t>As per <xref target="uuidv5"/> name-based UUIDs that desire to use modern hashing algorithms <bcp14>MUST</bcp14> be created within the UUIDv8 space.
 These <bcp14>MAY</bcp14> leverage newer hashing protocols such as SHA-256 or SHA-512 defined by <xref target="FIPS180-4"/>, SHA-3 or SHAKE defined by <xref target="FIPS202"/>, or even protocols that have not been defined yet.
 To ensure UUIDv8 Name-Based UUID values of different hashing protocols can exist in the same bit space; this document defines various "hashspaces" in <xref target="hashspaces"/>.
 Creation of name-based version 8 UUIDs follow the same logic defined in <xref target="uuidv5"/>, but the hashspace should be used to as the starting point with the desired
 namespace and name concatenated to the end of the hashspace.
 Then an implementation may apply the desired hashing algorithm to the entire value after all have been converted to a canonical sequence of octets in network byte order.
 Ensure the version and variant and variant bits are modified as per <xref target="v8"/> bit layout, and finally trim any excess bits beyond 128.
 An important note for secure hashing algorithms that produce variable rate outputs, such as those found in SHAKE, the output hash <bcp14>MUST</bcp14> be 128 bits or larger.
 See <xref target="uuidv8_example_name"/> for a SHA-256 UUIDv8 example test vector.</t>
          </dd>
          <dt>Advertising the Hash Algorithm:</dt>
          <dd>
            <t>Name-based UUIDs utilizing UUIDv8 do not allocate any available bits to identifying the hashing algorithm.
As such where common knowledge about the hashing algorithm for a given UUIDv8 name-space UUID is required, sharing the Hash Space ID proves useful for identifying a the algorithm.
That is, to detail SHA-256 was used to create a given UUIDv8 name-based UUID an implementation may also share the "3fb32780-953c-4464-9cfd-e85dbbe9843d" hash space which uniquely identifies the SHA-256 hashing algorithm for the purpose of UUIDv8. Mind you that this need not be the only method of sharing the hashing algorithm; this is one example of how two systems could share knowledge.
The protocol of choice, communication channels, and actual method of sharing this data between systems it outside the scope of this specification.</t>
          </dd>
        </dl>
      </section>
      <section anchor="collision_resistance">
        <name>Collision Resistance</name>
        <t>Implementations <bcp14>SHOULD</bcp14> weigh the consequences of UUID collisions within their
application and when deciding between UUID versions that use entropy (randomness)
versus the other components such as those in <xref target="timestamp_considerations"/> and <xref target="monotonicity_counters"/>.
This is especially true for distributed node collision resistance as defined
by <xref target="distributed_shared_knowledge"/>.</t>
        <t>There are two example scenarios below which help illustrate the varying seriousness
of a collision within an application.</t>
        <dl newline="true">
          <dt>Low Impact</dt>
          <dd>
            <t>A UUID collision generated a duplicate log entry which results in incorrect
statistics derived from the data. Implementations that are not negatively
affected by collisions may continue with the entropy and uniqueness provided
by the traditional UUID format.</t>
          </dd>
          <dt>High Impact:</dt>
          <dd>
            <t>A duplicate key causes an airplane to receive the wrong course which puts
people's lives at risk. In this scenario there is no margin for error. Collisions
<bcp14>MUST</bcp14> be avoided and failure is unacceptable. Applications dealing with this
type of scenario <bcp14>MUST</bcp14> employ as much collision resistance as possible within
the given application context.</t>
          </dd>
        </dl>
      </section>
      <section anchor="global_local_uniqueness">
        <name>Global and Local Uniqueness</name>
        <t>UUIDs created by this specification <bcp14>MAY</bcp14> be used to provide local uniqueness
guarantees.
For example, ensuring UUIDs created within a local application context are
unique within a database <bcp14>MAY</bcp14> be sufficient for some implementations where
global uniqueness outside of the application context, in other applications,
or around the world is not required.</t>
        <t>Although true global uniqueness is impossible to guarantee without a shared
knowledge scheme, a shared knowledge scheme is not required by UUID to provide
uniqueness 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 this specification.</t>
      </section>
      <section anchor="unguessability">
        <name>Unguessability</name>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize a cryptographically secure pseudo-random number
generator (CSPRNG) to provide values that are both difficult to predict ("unguessable")
and have a low likelihood of collision ("unique").
Care <bcp14>SHOULD</bcp14> be taken to ensure the CSPRNG state is properly reseeded upon
state changes, such as process forks, to ensure proper CSPRNG operation.
CSPRNG ensures the best of <xref target="collision_resistance"/> and <xref target="Security"/> are present in modern UUIDs.</t>
        <t>Further advice on generating cryptographic-quality random numbers can be found in <xref target="RFC4086"/> and in <xref target="RANDOM"/>.</t>
      </section>
      <section anchor="unidentifiable">
        <name>UUIDs That Do Not Identify the Host</name>
        <t>This section describes how to generate a UUIDv1 or UUIDv6 value if an IEEE
802 address is not available, or its use is not desired.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> obtain a 47-bit cryptographic-quality random
number as per <xref target="unguessability"/> and use it as the low 47 bits of the node ID.</t>
        <t>Implementations <bcp14>MUST</bcp14> set the least significant bit of the first octet of the node ID set to one to create a 48-bit node id.
This bit is the unicast/multicast bit, which will never be set in IEEE 802
addresses obtained from network cards.  Hence, there can never be a
conflict between UUIDs generated by machines with and without network
cards.</t>
        <t>For compatibility with earlier specifications, note that this
document uses the unicast/multicast bit, instead of the arguably more
correct local/global bit because MAC addresses with the local/global bit set or not are both possible in a network.
This is not the case with the unicast/multicast bit.
One node cannot have a MAC address that multicasts to multiple nodes.</t>
        <t>In addition, items such as the computer's name and the name of the
operating system, while not strictly speaking random, will help
differentiate the results from those obtained by other systems.</t>
        <t>The exact algorithm to generate a node ID using these data is system
specific, because both the data available and the functions to obtain
them are often very system specific.  A generic approach, however, is
to accumulate as many sources as possible into a buffer, use a
message digest such as MD5 <xref target="RFC1321"/> or SHA-1 <xref target="FIPS180-4"/>, take an arbitrary 6
bytes from the hash value, and set the multicast bit as described
above.</t>
      </section>
      <section anchor="sorting">
        <name>Sorting</name>
        <t>UUIDv6 and UUIDv7 are designed so that implementations that require sorting
(e.g. database indexes) <bcp14>SHOULD</bcp14> sort as opaque raw bytes, without need for
parsing or introspection.</t>
        <t>Time ordered monotonic UUIDs benefit from greater database index locality
because the new values are near each other in the index.
As a result objects are more easily clustered together for better performance.
The real-world differences in this approach of index locality vs random data
inserts can be quite large.</t>
        <t>UUIDs formats created by this specification <bcp14>SHOULD</bcp14> be lexicographically sortable
while in the textual representation.</t>
        <t>UUIDs created by this specification are crafted with big-endian byte order
(network byte order) in mind. If little-endian style is required a custom
UUID format <bcp14>SHOULD</bcp14> be created using UUIDv8.</t>
      </section>
      <section anchor="opacity">
        <name>Opacity</name>
        <t>UUIDs <bcp14>SHOULD</bcp14> be treated as opaque values and implementations <bcp14>SHOULD NOT</bcp14> examine
the bits in a UUID. However,
inspectors <bcp14>MAY</bcp14> refer to <xref target="variant_field"/> and <xref target="version_field"/> when required to determine UUID version and variant.</t>
        <t>As general guidance, we recommend not parsing UUID values unnecessarily,
and instead treating them as opaquely as possible.  Although application-specific
concerns could of course require some degree of introspection
(e.g. to examine the variant, version or perhaps the timestamp of a UUID),
the advice here is to avoid this or other parsing unless absolutely necessary.
Applications typically tend to be simpler, more interoperable, and perform better,
when this advice is followed.</t>
      </section>
      <section anchor="database_considerations">
        <name>DBMS and Database Considerations</name>
        <t>For many applications, such as databases, storing UUIDs as text is unnecessarily
verbose, requiring 288 bits to represent 128 bit UUID values.
Thus, where feasible, UUIDs <bcp14>SHOULD</bcp14> be stored within database applications
as the underlying 128 bit binary value.</t>
        <t>For other systems, UUIDs <bcp14>MAY</bcp14> be stored in binary form or as text, as appropriate.
The trade-offs to both approaches are:</t>
        <ul spacing="normal">
          <li>Storing as binary requires less space and may result in faster data access.</li>
          <li>Storing as text requires more space but may require less translation if the
resulting text form is to be used after retrieval and thus maybe simpler
to implement.</li>
        </ul>
        <t>DBMS vendors are encouraged to provide functionality to generate and store
UUID formats defined by this specification for use as identifiers or left
parts of identifiers such as, but not limited to, primary keys, surrogate
keys for temporal databases, foreign keys included in polymorphic relationships,
and keys for key-value pairs in JSON columns and key-value databases.
Applications using a monolithic database may find using database-generated
UUIDs (as opposed to client-generate UUIDs) provides the best UUID monotonicity.
In addition to UUIDs, additional identifiers <bcp14>MAY</bcp14> be used to ensure integrity
and feedback.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>There is no update required to the IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/>.
Further, at this time the authors and working group have concluded that IANA is not required to track UUIDs used for identifying items such as versions, variants, namespaces, or hashspaces.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> assume that UUIDs are hard to guess.
For example, they <bcp14>MUST NOT</bcp14> be used
as security capabilities (identifiers whose mere possession grants
access).  Discovery of predictability in a random number source will
result in a vulnerability.</t>
      <t>Implementations <bcp14>MUST NOT</bcp14> assume that it is easy to determine if a UUID has been
slightly transposed in order to redirect a reference to another
object.  Humans do not have the ability to easily check the integrity
of a UUID by simply glancing at it.</t>
      <t>MAC addresses pose inherent security risks and <bcp14>SHOULD NOT</bcp14> be used within
a UUID.
Instead CSPRNG data <bcp14>SHOULD</bcp14> be selected from a source with sufficient entropy
to ensure guaranteed
uniqueness among UUID generation. See <xref target="unguessability"/> and <xref target="unidentifiable"/> for more information.</t>
      <t>Timestamps embedded in the UUID do pose a very small attack surface. The
timestamp in conjunction with
an embedded counter does signal the order of creation for a given UUID and
its corresponding data but
does not define anything about the data itself or the application as a whole.
If UUIDs are required for
use with any security operation within an application context in any shape
or form then UUIDv4, <xref target="uuidv4"/> <bcp14>SHOULD</bcp14> be utilized.</t>
      <t>See <xref target="RFC6151"/> for MD5 Security Considerations and <xref target="RFC6194"/> for SHA-1 security considerations.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions of Rich Salz,
Ben Campbell,
Ben Ramsey,
Fabio Lima,
Gonzalo Salgueiro,
Martin Thomson,
Murray S. Kucherawy,
Rick van Rein,
Rob Wilton,
Sean Leonard,
Theodore Y. Ts'o,
Robert Kieffer,
Sergey Prokhorenko,
LiosK.</t>
      <t>As well as all of those in the IETF community and on GitHub to who contributed
to the discussions which resulted in this document.</t>
      <t>This document draws heavily on the OSF DCE specification for UUIDs.
Ted Ts'o provided helpful comments, especially on the byte ordering
section which we mostly plagiarized from a proposed wording he
supplied (all errors in that section are our responsibility,
however).</t>
      <t>We are also grateful to the careful reading and bit-twiddling of Ralf
S. Engelschall, John Larmouth, and Paul Thorpe.  Professor Larmouth
was also invaluable in achieving coordination with ISO/IEC.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="C309" target="https://pubs.opengroup.org/onlinepubs/9696999099/toc.pdf">
          <front>
            <title>DCE: Remote Procedure Call</title>
            <author>
              <organization/>
            </author>
            <date year="1994" month="August"/>
          </front>
          <seriesInfo name="ISBN" value="1-85912-041-5"/>
          <refcontent>Open Group CAE Specification C309</refcontent>
        </reference>
        <reference anchor="X667">
          <front>
            <title>Information Technology, "Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components"</title>
            <author>
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-8:2004"/>
          <seriesInfo name="ITU-T Rec." value="X.667"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier.  With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance.  With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA).  This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="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="RANDOM" target="https://peteroupc.github.io/random.html">
          <front>
            <title>Random Number Generator Recommendations for Applications</title>
            <author initials="P." surname="Occil" fullname="Peter Occil">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest">
              <organization/>
            </author>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input.  This memo provides information for the Internet community.  It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach">
              <organization/>
            </author>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <author fullname="R. Salz" initials="R." surname="Salz">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm.  It also updates the security considerations for HMAC-MD5.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6194">
          <front>
            <title>Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms</title>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document includes security considerations for the SHA-0 and SHA-1 message digest algorithm.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6194"/>
          <seriesInfo name="DOI" value="10.17487/RFC6194"/>
        </reference>
        <reference anchor="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="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>
      </references>
    </references>
    <section anchor="namespaces">
      <name>Some Name Space IDs</name>
      <t>This appendix lists the name space IDs for some potentially interesting name spaces such those for
fully-qualified domain names (DNS), uniform resource locators (URLs), ISO OIDs, and X.500 distinguished names (DNs) in distinguished encoding rule (DER) or text format.</t>
      <sourcecode type="code"><![CDATA[
NameSpace_DNS  = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
NameSpace_URL  = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
NameSpace_OID  = "6ba7b812-9dad-11d1-80b4-00c04fd430c8"
NameSpace_X500 = "6ba7b814-9dad-11d1-80b4-00c04fd430c8"
]]></sourcecode>
    </section>
    <section anchor="hashspaces">
      <name>Some Hash Space IDs</name>
      <t>This appendix lists the hash space IDs for use with UUIDv8 name-based UUIDs.</t>
      <sourcecode type="code"><![CDATA[
SHA2_224     = "59031ca3-fbdb-47fb-9f6c-0f30e2e83145"
SHA2_256     = "3fb32780-953c-4464-9cfd-e85dbbe9843d"
SHA2_384     = "e6800581-f333-484b-8778-601ff2b58da8"
SHA2_512     = "0fde22f2-e7ba-4fd1-9753-9c2ea88fa3f9"
SHA2_512_224 = "003c2038-c4fe-4b95-a672-0c26c1b79542"
SHA2_512_256 = "9475ad00-3769-4c07-9642-5e7383732306"
SHA3_224     = "9768761f-ac5a-419e-a180-7ca239e8025a"
SHA3_256     = "2034d66b-4047-4553-8f80-70e593176877"
SHA3_384     = "872fb339-2636-4bdd-bda6-b6dc2a82b1b3"
SHA3_512     = "a4920a5d-a8a6-426c-8d14-a6cafbe64c7b"
SHAKE_128    = "7ea218f6-629a-425f-9f88-7439d63296bb"
SHAKE_256    = "2e7fc6a4-2919-4edc-b0ba-7d7062ce4f0a"
]]></sourcecode>
    </section>
    <section anchor="test_vectors">
      <name>Test Vectors</name>
      <t>Both UUIDv1 and UUIDv6 test vectors utilize the same 60 bit timestamp: 0x1EC9414C232AB00
(138648505420000000) Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00</t>
      <t>Both UUIDv1 and UUIDv6 utilize the same values in clock_seq,
and node. All of which have been generated with random data.</t>
      <t>The pseudocode used for converting from a 64 bit Unix timestamp to a 100ns Gregorian timestamp value
has been left in the document for reference purposes.</t>
      <figure>
        <name>Test Vector Timestamp Pseudo-code</name>
        <sourcecode type="code"><![CDATA[
# Gregorian to Unix Offset:
# The number of 100-ns intervals between the
# UUID epoch 1582-10-15 00:00:00
# and the Unix epoch 1970-01-01 00:00:00
# Greg_Unix_offset = 0x01b21dd213814000 or 122192928000000000

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

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

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

# Final:
# Greg_100_ns = 0x1EC9414C232AB00 or 138648505420000000
]]></sourcecode>
      </figure>
      <section anchor="uuidv1_example">
        <name>Example of a UUIDv1 Value</name>
        <figure>
          <name>UUIDv1 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
time_low   32   0xC232AB00
time_mid   16   0x9414
ver         4   0x1
time_high  12   0x1EC
var         2   b10
clock_seq  14   b11, 0x3C8
node       48   0x9E6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   b10
md5_low   62   b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the 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   b10
random_c  62   b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   b10
sha1_low   62   b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded 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   b10
clock_seq   14   b11, 0x3C8
node        48   0x9E6BDECED846
-------------------------------------------
total       128
-------------------------------------------
final: 1EC9414C-232A-6B00-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv7_example">
        <name>Example of a UUIDv7 Value</name>
        <t>This example UUIDv7 test vector utilizes a well-known 32 bit Unix epoch with
additional millisecond precision to fill the first 48 bits</t>
        <t>rand_a and rand_b are filled with random data.</t>
        <t>The timestamp is Tuesday, February 22, 2022 2:22:22.00 PM GMT-05:00 represented
as 0x17F22E279B0 or 1645557742000</t>
        <figure>
          <name>UUIDv7 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
unix_ts_ms  48   0x17F22E279B0
ver          4   0x7
rand_a      12   0xCC3
var          2   b10
rand_b      62   b01, 0x8C4DC0C0C07398F
-------------------------------------------
total       128
-------------------------------------------
final: 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example">
        <name>Example of a UUIDv8 Value (time-based)</name>
        <t>This example UUIDv8 test vector utilizes a well-known 64 bit Unix epoch with
nanosecond precision, truncated to the least-significant, right-most, bits
to fill the first 48 bits through version.</t>
        <t>The next two segments of custom_b and custom_c are are filled with random
data.</t>
        <t>Timestamp is Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00 represented
as 0x16D6320C3D4DCC00 or 1645557742000000000</t>
        <t>It should be noted that this example is just to illustrate one scenario for
UUIDv8. Test vectors will likely be implementation specific and vary greatly
from this simple example.</t>
        <figure>
          <name>UUIDv8 Example Time-based Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x320C3D4DCC00
ver        4   0x8
custom_b  12   0x75B
var        2   b10
custom_c  62   b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 320C3D4D-CC00-875B-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> to detail the usage of hash spaces alongside namespace and names.
The field mapping and all values are illustrated in <xref target="v8fieldssha256"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-256 value see <xref target="v8vervar"/>.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Hash Space (SHA2_256): 3fb32780-953c-4464-9cfd-e85dbbe9843d
Name Space (DNS):      6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
401835fda627a70a073fed73f2bc5b2c2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x401835fda627
ver        4   0x8
custom_b  12   0x627
var        2   b10
custom_c  62   b0, 0x73fed73f2bc5b2c
-------------------------------------------
total     128
-------------------------------------------
final: 401835fd-a627-870a-873f-ed73f2bc5b2c
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 401835fd-a627-a70a-073f-ed73f2bc5b2c-2a8936385a38a9c133de0ca4af0dfaed
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 401835fd-a627-870a-873f-ed73f2bc5b2c
D:                                     -2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</li>
          <li>Line B details the version and variant hexadecimal positions which must be overwritten.</li>
          <li>Line C details the final value after the ver/var have been overwritten.</li>
          <li>Line D details the discarded, leftover values from the original SHA-256 computation.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
