Object Identifiers

What is an object identifier?

Object identifiers are, basically, strings of numbers.

They are allocated in a hierarchical manner, so that, for instance, the authority for "1.2.3" is the only one that can say what "1.2.3.4" means.

They are used in a variety of protocols.

The formal definition of OIDs comes from ITU-T recommendation X.208 (ASN.1), which is available from the ITU (if you have your checkbook handy).
The definition of OID is in chapter 28; the assignment of the "top of the tree" is given in appendixes B, C and D.

The encodings - how you can transfer an OID as bits on the wire - is defined in X.209.

What object identifiers exist?

Millions and millions.... remember: once you have a valid OID that is yours to handle, you will automatically have the right to assign any OID that starts off with the digits in your OID.

The following is just a brief start at a tree....the intent is that you should be able to click your way through the tree until you find out what your current OID "means".

Click here to start walking the tree.

The Internet OID is 1.3.6.1; this link leads directly to it.

If you know of an OID that is not listed, you may use this entry form to tell me about it. Input from other people (not yet vetted by me) is found here.

How to get an OID assigned

The original intention was that anyone should be able to get an OID if they needed one.
Some currently operating registries are: Several other countries are also establishing routines for handing out OIDs. Once you get one, nobody cares much where you got it from.

Where does the dot notation for object identifiers come from?

The dot notation is an IETF invention.

The ITU thought it better to have a notation using spaces and braces, with optional text labels, so that 1.3.6.1 would become something like


 {iso(1) org(3) dod(6) iana(1)}
 {1 3 6 1}
 {dod 1}

or variants thereof. The IETF folks thought this was somewhat inconvenient, and decided to use a space-free notation.

This is, among other things, spelled out in RFC 1778, section 2.15, but was in use long before that time:


   Values of type objectIdentifierSyntax are encoded according to the  
   following BNF:
   
     <oid> ::= <descr> | <descr> '.' <numericoid> | <numericoid>
   
     <descr> ::= <keystring>

     <numericoid> ::= <numericstring> | <numericstring> '.' <numericoid>
   
   In the above BNF, <descr> is the syntactic representation of an
   object descriptor. When encoding values of type
   objectIdentifierSyntax, the first encoding option should be used in 
   preference to the second, which should be used in preference to the
   third wherever possible. That is, in encoding object identifiers,
   object descriptors (where assigned and known by the implementation)
   should be used in preference to numeric oids to the greatest extent
   possible. For example, in encoding the object identifier representing
   an organizationName, the descriptor "organizationName" is preferable
   to "ds.4.10", which is in turn preferable to the string "2.5.4.10".

This was refined in RFC 2252, 4.1. In particular, it eliminates the "ds.4.10" form.

(thanks to Kurt Zeilenga for providing the reference)

There is another OID database at Elibel, France, maintained by people who work more closely with the ITU and with ASN.1.


Harald@Alvestrand.no
Last modified: Mon Feb 10 15:01:50 1997