TL;DR: Get a free OID online instantly at https://freeoid.pythonanywhere.com
I have long been interested in GUIDs (UUIDs) which provide a mechanism for unique IDs across multiple domains without any central authority required. The version 1 GUID partitioned a huge 128 bit number space up into unique computer, and also time domains. This meant GUIDs could be generated anywhere anytime at extremely fast rates without any worry of collision. The downside to version 1 GUIDs are that the computer network address (MAC address) is generally encoded into GUID which leads to privacy issues. Version 4 GUIDs take the approach that 128 bits (122 actually) is so huge that if everyone just picks random numbers the chance of collision is close to 0 anyway. Version 4 GUIDs are now the most common form and they work great as unique IDs. It is not, however, the only approach provide globally unique IDs. I recently stumbled across a different scheme called the OID.
I had been revisiting information on version 3 and 5 GUIDs and looking to see what pre-made namespaces were provided. Disappointingly there are only 4 default namespaces: NameSpace_DNS,
NameSpace_URL,
NameSpace_OID
, and NameSpace_X500.
I was curious as to what the NameSpace_OID was for and that led me to discover the Object Identifier (OID).
What is an Object Identifier (OID)
The OID is a globally unique identifier that is guaranteed to be unique by using a tree structure where each part of the tree is responsible for assigning the elements directly under it. This provides a controlled, yet distributed mechanism for assigning OIDs so that they will never collide.
The most common way to display an OID is in “dotted decimal” form. Such as:
1.3.6.1.4.1.37476.9000.79
This OID is registered to this website. I can subdelegate this anyway I wish by appending a futher dot and number. I am responsible for assigning any futher oids from this one. I can also give one of my sub OIDs or range of sub OIDs to someone else to manage.
So how did this ID get formed?
The first level is controlled by ITU-T and ISO organisations. They have assigned only 3 values. 0 for ITU-T, 1 for ISO, and 2 for joint ITU-T and ISO things. The number follows a path down a tree, which in the case of our example is
- 1 – ISO
- 1.3 – Identified organization
- 1.3.6 – DoD (Department of Defence)
- 1.3.6.1 – Internet
- 1.3.6.1.4 – Private
- 1.3.6.1.4.1 – IANA enterprise numbers
- 1.3.6.1.4.1.37476 – ViaThinkSoft (IANA number 37476)
- 1.3.6.1.4.1.37476.9000 – FreeOid
- 1.3.6.1.4.1.37476.9000.79 – WaterJuice
Because any OIDs I create will be appended on as 1.3.6.1.4.1.37476.9000.79.* there is no chance that someone else will create the same IDs as they will be starting theirs from somewhere else in the tree.
The majority of all OIDs are hanging off the 1.3.6.1.4.1 branch. Anyone can (with a bit of effort) get an IANA “Enterprise Number” for free. You have to register for it and provide details and it takes about a week. Once you have your number you can assign sub OIDs however you want. Obviously no one is supposed to just arbitrarily use someone else’s branch and assume they can just add some branches that they don’t think are being used. The whole scheme breaks down if people do that.
There are other OID branches further up the tree but there are much harder to get attached to one of those. They tend to be used for ISO things, or reserved for countries etc. There are some places that will charge you a fee to get an OID. So generally most organisations get themselves a free IANA number. It is disappointing that the IANA numbers can’t start much higher up, ideally even at the top level. It could have been 3.* for the IANA enterprise numbers. However the biggest problem with the OIDs are how precious people who control the early ones tend to be. ViaThinkSoft provide free ones attached to a sub OID from their IANA number. You just need an email address to get one. One will be assigned and sent in a reasonably short amount of time.
There are also two methods to get an OID instantly by converting a GUID into an OID. This requires no registration or server interaction and can be done at anytime by anyone. However neither of the techniques are particularly satisfactory (I’ll discuss why in a later article) and you have a rather ugly looking OID such as
2.25.324293003071620890871350535745399440863
or
1.2.840.113556.1.8000.2554.62456.36735.23508.16633.39838.4613307.1590751
(These incidentally both represent the GUID {f3f88f7f-5bd4-40f9-9b9e-4664bb1845df} )
These might be okay for automatically generated OIDs that stand alone, but they don’t make a particularly good branch to add a whole sub tree to. I could sub-delegate out that tree and give, for example, 1.2.840.113556.1.8000.2554.62456.36735.23508.16633.39838.4613307.1590751.2 to someone to start their own tree, but its not a great starting point, they would generally prefer to be much higher up the tree.
So the methods available to get an OID seemed to be either generate an obnoxiously large one of your own instantly from a GUID, or wait around for someone to give you a nicer one from their tree. The IANA branch is the best one you can realistically get, but it can be an annoying process getting one from them (and you will start getting spam immediately after you get one as they publish your email address!).
Given that OIDs are just numbers and not precious gems, it seems ridiculous that its not possible just to easily get one without any hassle. The only point of the scheme is to avoid collisions, the whole registering for one and providing identification etc is unnecessary. So I decided I would provide a free service to give a decent OID to anyone and everyone who wants one!
Get a free OID
https://freeoid.pythonanywhere.com
This is a very simple website I setup to issue unique OIDs at the press of a button. There is no registration, email address, or anything required. Simply press the button and a new OID will be generated. I was originally going to attach it to a branch off my 1.3.6.1.4.1.37476.9000.79 OID, but I felt that it would be too far down the tree and there is no reason why anyone shouldn’t be able to easily have a better one. So I registered an IANA number for the purpose and have assigned the following OID to be the branch for these free OIDs
1.3.6.1.4.1.54392.5
If you go to the site you can get an instant OID that will be a sub OID from this one. You might be wondering what the .5 part is for. I have already assigned the earlier ones for a different use that I will detail in a future article).
There are no limits on generating OIDs with this site. It will simply increment an internal counter and give you the next one available. There is no practical limit as to how large the number can grow. I don’t imagine the service will be particularly busy so the numbers aren’t likely to get to enormous.
So feel free to get yourself your very own OID for free right now, or get several if you want. I don’t mind how many you want or what you want to do with them!