<?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.29 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-03" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.0 -->
  <front>
    <title abbrev="UUID">Universally Unique IDentifiers (UUID)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-03"/>
    <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 a Uniform Resource Name namespace for
UUIDs (Universally Unique IDentifiers), 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 a Uniform Resource Name namespace for
UUIDs (Universally Unique IDentifiers), 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, as 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>
        </dl>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>changelog</name>
        <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>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 hex 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>
      <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 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 hex representation of 4 (0100)
and the N represents the variant placement for one of the four possible hex 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>
      </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 a grouping of fields within bit layout consisting four octets to a row.
The fields are presented with the most significant one first.</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>
      <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 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) 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 bits remain unchanged from their usage and 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 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
seconds since midnight 1 Jan 1970 UTC, leap seconds excluded.
UUID version 7 also has improved entropy characteristics over versions 1 or 6.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize UUID version 7 instead of UUID version 1 and 6 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 an optional counter 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>Re-randomize Until Monotonic (Method 3):</dt>
          <dd>
            <t>If the performance impact is acceptable (depending on the UUID version,
granularity of the system clock, and expected throughput of values
generated per clock value), an implementation can, in the case
of multiple UUID values using the same clock tick, simply regenerate
a new random value as many times as needed in order to produce a UUID that is
ordered after the last one.  The primary benefit of this approach is simplicity
of implementation. One downside to this approach is the fact that
generation will become increasingly slower for a given timestamp value as
more attempts are required to produce monotonic output, and the fact that
subsequent values will have less entropy and be more easily guessable.</t>
          </dd>
          <dt>Replace Left-Most Random Bits with Increased Clock Precision (Method 4):</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 maximum value that can be represented in
the available bit space, 4095 for the UUIDv7 rand_a field.
Using floating point math, multiply this fraction of a millisecond
value by 4095 and round 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 maximum value that fits in those bits (4095, or 2 to the 12th power minus 1)
and multiply it by our millisecond fraction value of 0.4567 and round the result to
an integer, which gives an integer value of 1870. Expressed as hex 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 uses 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.</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.
Foe 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>
      </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 hex 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 hex value with the dashes inserted.</li>
          <li>Line B details the version and variant hex 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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
KVM7IwepmWZUiDiWbxj3fwE6gahaZ2IBAA==

-->

</rfc>
