Alex Rivera | Logout

Where do UUID namespaces come from?

Asked 2011-10-11T10:57:05.490
53

The UUID specification defines 4 predefined namespaces which it describes as "potentially interesting" - meaning among other things, "if other people have generated UUIDs in this namespace you can verify them":

  • 6ba7b810-9dad-11d1-80b4-00c04fd430c8 for DNS
  • 6ba7b811-9dad-11d1-80b4-00c04fd430c8 for URL
  • 6ba7b812-9dad-11d1-80b4-00c04fd430c8 for ISO OID
  • 6ba7b814-9dad-11d1-80b4-00c04fd430c8 for X.500 DN

Where did these come from?

Specifically;

  • If I'm generating my own namespace UUID do I need to avoid anything in particular?
  • I'm aware how big the UUID space is, but does this have any implication on collisions?
  • Why have they chosen the 4th octet to increase as a kind of UUID 'version number'?
  • Do my questions imply that I'm missing something fundamental about UUIDs?
Edit
Report

1 Answer

51

First, to be clear, this whole discussion is limited to version 3 & 5 UUIDs. In my (anecdotal) experience, version 4 (random) UUIDs are most commonly used.

4122's namespaced UUID generation algorithm ambiguously begins:

Allocate a UUID to use as a "name space ID"

There is no other mention of "name space ID" allocation, and neither I nor python have found any standardized spaces beyond the four listed in RFC 4122.

So the answer to your first question,

  • If I'm generating my own namespace UUID do I need to avoid anything in particular?

You only need to avoid the four standard namespaces.


The next question,

  • I'm aware how big the UUID space is, but does this have any implication on collisions?

Has two parts:

  1. Will UUIDs within your namespace collide? Verbatim from 4122:

    The UUIDs generated from two different names in [your] namespace should be different (with very high probability).

  2. Will your namespace UUID collide with other namespaces? I couldn't find a direct answer, since there's no standard for "name space ID" allocation, but the argument in section 4.1.1 seems relevant:

    Interoperability, in any form, with variants other than the one defined here is not guaranteed, and is not likely to be an issue in practice.


  • Why have they chosen the 4th octet to increase as a kind of UUID 'version number'?

This one's a bit of a mystery. Luckily, we have a

answered 2011-10-19T03:05:04.513

Your Answer