82 lines
4.8 KiB
Plaintext
82 lines
4.8 KiB
Plaintext
|
|
_ ___ ____ ____ ____ _ _
|
|
|_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| |
|
|
_|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` |
|
|
|_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| |
|
|
|_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_|
|
|
|
|
OSSP uuid - Universally Unique Identifier
|
|
|
|
OVERVIEW
|
|
|
|
A UUID consists of 128 bits (16-octets) which are split into 6
|
|
octet-bounded unsigned integer fields ("time_low", "time_mid",
|
|
"time_hi_and_version", "clk_seq_hi_res", "clk_seq_low" and "node") and
|
|
where two fields are multiplexed with a fixed size 4-bit "version" and
|
|
a variable sized 2-3 bit "variant" field.
|
|
|
|
The UUID octets are counted from left to right 15 to 0 and the bits
|
|
in each octet are counted from left to right 7 to 0 (most significant
|
|
bit first, least significant bit last). The unsigned integer fields
|
|
formed out of multiple octets are stored in "network byte order" (most
|
|
significant octet first, least significant octet last). A UUID is
|
|
stored and transmitted from left to right, i.e., in "network byte
|
|
order" with the most significant octet first and the least significant
|
|
octet last.
|
|
|
|
Illustration 1:
|
|
(single octet array, less compact, more annotations)
|
|
|
|
|
|
Bits: [4] [2-3]
|
|
Field: version variant
|
|
MSO -->| |<-- -->| |<-- LSO
|
|
\ | | | | /
|
|
Octet: 15 14 13 12 11 10 | |9 8 | | 7 6 5 4 3 2 1 0
|
|
+------++------++------++------++------++------++------++------++------++------++------++------++------++------++------++------+
|
|
UUID: | || || || || || |#### || |##: || || || || || || || |
|
|
+------++------++------++------++------++------++------++------++------++------++------++------++------++------++------++------+
|
|
Bit: 76543210765432107654321076543210765432107654321076543210765432107654321076543210765432107654321076543210765432107654321076543210
|
|
/| || || || || || |\
|
|
MSB | || || || || || | LSB
|
|
|<---------------------------->||<------------>||<------------>||<---->||<---->||<-------------------------------------------->|
|
|
time_hi clk_seq clk_seq
|
|
Field: time_low time_mid _and_version _hi_res _low node
|
|
Bits: [32] [16] [16] [5-6] [8] [48]
|
|
|
|
|
|
Illustration 2:
|
|
(two octet arrays, more compact, less annotations)
|
|
|
|
[4]
|
|
version
|
|
-->| |<--
|
|
| |
|
|
| | [16]
|
|
[32] [16] | |time_hi
|
|
time_low time_mid | _and_version
|
|
|<---------------------------->||<------------>||<------------>|
|
|
| MSO || || | |
|
|
| / || || | |
|
|
| 15 14 13 12 || 11 10 || |9 8 |
|
|
7654321076543210765432107654321076543210765432107654321076543210
|
|
/+------++------++------++------++------++------++------++------+~
|
|
MSB | || || || || || |#### || | ...
|
|
+------++------++------++------++------++------++------++------+~
|
|
~+------++------++------++------++------++------++------++------+
|
|
... ##: || || || || || || || | LSB
|
|
~+------++------++------++------++------++------++------++------+/
|
|
7654321076543210765432107654321076543210765432107654321076543210
|
|
| | 7 || 6 || 5 4 3 2 1 0 |
|
|
| | || || / |
|
|
| | || || LSO |
|
|
|<---->||<---->||<-------------------------------------------->|
|
|
|clk_seq clk_seq node
|
|
|_hi_res _low [48]
|
|
|[5-6] [8]
|
|
| |
|
|
-->| |<--
|
|
variant
|
|
[2-3]
|
|
|