diff options
Diffstat (limited to 'shared/ossp_uuid/OVERVIEW')
-rw-r--r-- | shared/ossp_uuid/OVERVIEW | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/shared/ossp_uuid/OVERVIEW b/shared/ossp_uuid/OVERVIEW new file mode 100644 index 00000000..2fb518f1 --- /dev/null +++ b/shared/ossp_uuid/OVERVIEW @@ -0,0 +1,81 @@ + + _ ___ ____ ____ ____ _ _ + |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | + _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | + |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | + |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| + + 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] + |