Subversion Repositories oidplus

Rev

Blame | Last modification | View Log | RSS feed

  1. <html>
  2.  
  3. <head>
  4. <meta http-equiv="Content-Type"
  5. content="text/html; charset=iso-8859-1">
  6. <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
  7. <title>OIDDB Format</title>
  8. </head>
  9.  
  10. <body>
  11.  
  12. <h1>&quot;OIDDB/0.1&quot; <font color="red">DRAFT</font> file format description and examples</h1>
  13.  
  14. <p>(C) 2012 ViaThinkSoft, Daniel Marschall</p>
  15.  
  16. <h2>Intended purpose</h2>
  17.  
  18. <ul>
  19.     <li>This format describes an OID tree resp. a part of an OID
  20.         tree</li>
  21.     <li>Main purpose: Format for the OID tree viewer &quot;OID
  22.         Plus&quot; by ViaThinkSoft, which is intended for smaller
  23.         registration authorities who need a simply way to manage
  24.         their OID allocations as well as present their tree to
  25.         the public</li>
  26.     <li>Another purpose can be to create a more simple
  27.         alternative to ORS</li>
  28.     <li>Maybe the format could be globally describe OIDs as an
  29.         open and human readable format, maybe also for
  30.         interchanging informations</li>
  31. </ul>
  32.  
  33. <h2>Use cases</h2>
  34.  
  35. <ul>
  36.     <li>Easily administrate, delegate and display the tree for a
  37.         specific RA</li>
  38.     <li>Look up an OID by identifier, unicode label (like ORS) or
  39.         by numerical value =&gt; Alternative to ORS</li>
  40. </ul>
  41.  
  42. <h2>Advantages</h2>
  43.  
  44. <ul>
  45.     <li>Highly scaleable: No database needed. The &quot;zones&quot;
  46.         are working fine just with textfiles, but dynamic
  47.         generated records are also OK!</li>
  48.     <li>Node can be delegated, which makes this format also
  49.         suitable as an alternative to the complex ORS</li>
  50.     <li>Format can be extended easily</li>
  51.     <li>No individual name server necessary for ORS functionality</li>
  52.     <li>HTTPS connections are no problem</li>
  53.     <li>File can be easily filtered by &quot;grep&quot; because
  54.         every line contains just 1 attribute and contains the OID
  55.         &quot;zone&quot;</li>
  56.     <li>Simplyness: The main format is simply: &lt;root zone&gt;
  57.         &lt;attribute&gt; &lt;params&gt;</li>
  58. </ul>
  59.  
  60. <h2>Disadvantages</h2>
  61.  
  62. <ul>
  63.     <li>The FORMAT itself allows also illegal labels etc. The OID
  64.         viewer has to check all data for validity</li>
  65. </ul>
  66.  
  67. <h2>Format</h2>
  68.  
  69. <ul>
  70.     <li>Each zone file begins with &quot;[OIDDB/0.1]&quot; in the
  71.         first line.</li>
  72.     <li>Whitespaces at the beginning or end of every line (except
  73.         first line) are tolerated</li>
  74.     <li>Every line contains either '#' (comment line) or a &lt;zone
  75.         record&gt;</li>
  76.     <li>Comments cannot be in the same line as a zone record!
  77.         They need an separate line.</li>
  78.     <li>&lt;zone record&gt; is defined as &lt;zone&gt; &lt;attribute&gt;
  79.         &lt;parameters&gt;</li>
  80.     <li>&lt;zone&gt; is either an dot-notation OID or &quot;root&quot;
  81.         (root is the &quot;zone&quot; which delegates the OIDS 0,
  82.         1 and 2).</li>
  83.     <li>&lt;attribute&gt; is an attribute in uppercase (see below
  84.         for valid attributes and their &lt;parameters&gt;)</li>
  85.     <li>Between zone, attribute and parameters there are
  86.         whitespaces (but no line break)</li>
  87.     <li>If an attribute is unknown by the client, it will be
  88.         simply ignored</li>
  89. </ul>
  90.  
  91. <h2>Current list of attributes</h2>
  92.  
  93. <table border="2">
  94.     <tr>
  95.         <td><strong>Attribute</strong></td>
  96.         <td><strong>Inherited from parent</strong></td>
  97.         <td><strong>Scope [1]</strong></td>
  98.         <td><strong>Parameters</strong></td>
  99.         <td><strong>Comments</strong></td>
  100.     </tr>
  101.     <tr>
  102.         <td>SOA (valid for all NIDs)</td>
  103.         <td>No</td>
  104.         <td>LOCAL RA</td>
  105.         <td>None</td>
  106.         <td>Place holder if no delegations or attributes are available for this object.</td>
  107.     </tr>
  108.     <tr>
  109.         <td>RA</td>
  110.         <td>If not set [3]</td>
  111.         <td>LOCAL RA</td>
  112.         <td>&quot;&lt;RA contact information, human-readable, '\n'
  113.         allowed&gt;&quot;</td>
  114.         <td>[7]</td>
  115.     </tr>
  116.     <tr>
  117.         <td>NAME</td>
  118.         <td>No</td>
  119.         <td>LOCAL RA</td>
  120.         <td>&quot;&lt;Single line name resp very short
  121.         description&gt;&quot;</td>
  122.         <td>&nbsp;</td>
  123.     </tr>
  124.     <tr>
  125.         <td>DESCRIPTION</td>
  126.         <td>No</td>
  127.         <td>LOCAL RA</td>
  128.         <td>&quot;&lt;Description and additional information,
  129.         human-readable, '\n' allowed&gt;&quot;</td>
  130.         <td>&nbsp;</td>
  131.     </tr>
  132.     <tr>
  133.         <td>DELEGATION</td>
  134.         <td>No</td>
  135.         <td>LOCAL RA</td>
  136.         <td>&lt;numeric child identifier&gt; &lt;zone file
  137.         location [2]&gt;</td>
  138.         <td>&nbsp;</td>
  139.     </tr>
  140.     <tr>
  141.         <td>PRIVATECHILD</td>
  142.         <td>No</td>
  143.         <td>LOCAL RA</td>
  144.         <td>&lt;numeric child identifier&gt;</td>
  145.         <td>&nbsp;</td>
  146.     </tr>
  147.     <tr>
  148.         <td>NUMSECRETCHILDREN</td>
  149.         <td>No</td>
  150.         <td>LOCAL RA</td>
  151.         <td>&lt;number of childnodes which are NOT listed as
  152.         CHILD or PRIVATECHILD (i.e. their numerical values are
  153.         secret)&gt;</td>
  154.         <td>&nbsp;</td>
  155.     </tr>
  156.     <tr>
  157.         <td>IDENTIFIER</td>
  158.         <td>No</td>
  159.         <td>SUPERIOR RA</td>
  160.         <td>&lt;identifier value, e.g. example&gt; &lt;numeric
  161.         child identifier, e.g. 999&gt;</td>
  162.         <td>&nbsp;</td>
  163.     </tr>
  164.     <tr>
  165.         <td>UNICODELABEL</td>
  166.         <td>No</td>
  167.         <td>SUPERIOR RA</td>
  168.         <td>&lt;Unicode label, e.g. ViaThinkSoft&gt; &lt;numeric
  169.         child identifier, e.g. 12345&gt;</td>
  170.         <td>[4]</td>
  171.     </tr>
  172.     <tr>
  173.         <td>FLAG-DRAFT</td>
  174.         <td>Yes, cannot be unset</td>
  175.         <td>SUPERIOR RA</td>
  176.         <td>&lt;numeric child identifier&gt;</td>
  177.         <td>[5]</td>
  178.     </tr>
  179.     <tr>
  180.         <td>FLAG-LEAF</td>
  181.         <td>Yes, cannot be unset</td>
  182.         <td>SUPERIOR RA</td>
  183.         <td>&lt;numeric child identifier&gt;</td>
  184.         <td>[6]</td>
  185.     </tr>
  186. </table>
  187.  
  188. <p>Remarks:</p>
  189.  
  190. <ol>
  191.     <li>Defines who may change the attribute for a given OID<br>
  192.         LOCAL = (Attributes the local RA can change by itself)<br>
  193.         SUPERIOR RA = (Attributes only the superior RA can change)</li>
  194.     <li>Zone location. There are 3 possibilities:<br>
  195.         A) URL where the zone informations of the child are
  196.         stored.<br>
  197.         <font color="#FF8000">?? should local file references be
  198.         accepted ???</font><br>
  199.         Relative urls shall be accepted.<br>
  200.         Please note: IDNs (Unicode domain name which needs to be
  201.         translated into punycode first) shall be accepted by the
  202.         client.<br>
  203.         FTP URLs shall be accepted.<br>
  204.         HTTPS MUST be accepted by the client. Only with HTTPS,
  205.         informations can be ensured authorative.<br>
  206.         Also note that the URL can be a simple TXT file or a PHP
  207.         script which generates the record files from a database
  208.         etc. This makes delegation pretty flexible.<br>
  209.         B) &quot;&lt;here&gt;&quot; (without quotes), if the zone
  210.         informations are stored in the same file<br>
  211.         C) &quot;&lt;none&gt;&quot; (without quotes) if no zone
  212.         exists yet resp. if the child is a leaf node. But if you want to set a RA, description or name, you have to create a zone for this OID, since the superior OID cannot define these attributes.</li>
  213.     <li>If the RA attribute is NOT set locally, it will be
  214.         INHERITED from the superior OID! This makes it very easy
  215.         for companies who have many OIDs. They only need to
  216.         change the RA for children they delegate to another
  217.         person/department.</li>
  218.     <li>It could be also an longarc definition, e.g. &quot;root
  219.         UNICODELABEL Example 2.999&quot;</li>
  220.     <li>(Idea by Daniel Marschall) This indicates that the OID is
  221.         a draft resp reserved. It can be removed or changed at
  222.         ANY TIME. An OID viewer/resolver SHOULD NOT DISPLAY DRAFT-OIDS.
  223.         THESE ENTRIES ARE USUALLY PRIVATE FOR THE OID RA, e.g.
  224.         when they draft some new software which is needing an
  225.         amount of OIDs. An draft OID usually just reserves the
  226.         OID from accidently getting overwritten by another OID.</li>
  227.     <li>(Like seen at oid-info.com) This indicates that the OID
  228.         is a leaf. A parser will stop searching for children,
  229.         resp. children are locked</li>
  230.     <li>Note that since the TXT file is publicly available
  231.         through HTTP(S), the RA contact information cannot be
  232.         made private. If you'd like to be private, just don't
  233.         enter your address. You can also e.g. publish a handle
  234.         number which can be used to contact you resp. a URL to an
  235.         online contact form.</li>
  236. </ol>
  237.  
  238. <h2>EXAMPLE 1: USING OID PLUS FOR MANAGING THE WHOLE OID TREE AS
  239. AN ALTERNATIVE FOR ORS</h2>
  240.  
  241. <p>Making ORS easier would mean:</p>
  242.  
  243. <ul>
  244.     <li>People without an own nameserver could implement ORS (note
  245.         that nearly no public available DNS hosting company
  246.         allows customers to create NAPTR records!)</li>
  247.     <li>The easier, the faster it is implemented world wide</li>
  248. </ul>
  249.  
  250. <p>In our example of an ORS-alternative, the resolution would start at https://root.ors.example.com/ with the entry "root". It does not matter if the first arc you want to resolve is an numeric identifier, or an alpha identifier or an non-numeric Unicode label.</p>
  251.  
  252. <pre><strong>[OIDDB/0.1]</strong>
  253.  
  254. <font color="#000080"># -------------------------
  255. # ROOT ZONE FILE WHICH DEFINES THE ATTRIBUTES OF THE OIDS 0, 1 AND 2 AS WELL AS LONGARCS
  256. # -------------------------</font>
  257.  
  258. oid:    UNICODELABEL    ISO     0
  259. oid:    IDENTIFIER      iso     0
  260. oid:    DELEGATION      0       https://iso.example.com/zone_record.php?oid=0
  261.  
  262. oid:    IDENTIFIER      itu-t   1
  263. oid:    IDENTIFIER      itu-r   1
  264. oid:    IDENTIFIER      ccitt   1
  265. oid:    DELEGATION      1       https://itu.example.com/zone_1.txt
  266.  
  267. oid:    IDENTIFIER      joint-iso-itu-t 2
  268. oid:    IDENTIFIER      joint-iso-ccitt 2
  269. oid:    DELEGATION      2       &lt;here&gt;
  270.  
  271. <font color="#000080"># Longarcs</font>
  272. oid:    UNICODELABEL    Example 2.999
  273.  
  274. <font color="#000080"># -------------------------
  275. # ZONE FILE FOR OID &quot;2&quot;
  276. # -------------------------</font>
  277.  
  278. oid:2   RA              &quot;RA information about Joint ISO/ITU-T&quot;
  279. oid:2   DELEGATION      999     &lt;here&gt;
  280. oid:2   FLAG-LEAF       999
  281.  
  282. <font color="#000080"># -------------------------
  283. # ZONE FILE FOR OID &quot;2.999&quot;
  284. # -------------------------</font>
  285.  
  286. oid:2.999       RA              &quot;None&quot;
  287. oid:2.999       NAME            &quot;Example OID&quot;
  288. oid:2.999       DESCRIPTION     &quot;This OID is used as example&quot;</pre>
  289.  
  290. <h2>EXAMPLE 2: HOW A SMALL COMPANY WHICH OWNS THE OID 2.999.1.2.3
  291. COULD MANAGE ITS OID TREE WITH A SINGLE TXT FILE</h2>
  292.  
  293. <p>They simply create this text file and tell &quot;OID Plus&quot;
  294. to use this textfile as root for displaying/querying everything.
  295. Also, the root OIDs have to be specified (2.999.1.2.3)</p>
  296.  
  297. <pre><strong>[OIDDB/0.1]</strong>
  298.  
  299. <font color="#000080"># -------------------------
  300. # ZONE 2.999.1.2.3</font>
  301. <font color="#000080"># -------------------------
  302. </font>
  303. oid:2.999.1.2.3 RA              &quot;My company&quot;
  304. oid:2.999.1.2.3 NAME            &quot;My company Root OID&quot;
  305. oid:2.999.1.2.3 DESCRIPTION     &quot;This is the OID 2.999.1.2.3 owned by My Company!&quot;
  306. oid:2.999.1.2.3 IDENTIFIER      four    4
  307. oid:2.999.1.2.3 IDENTIFIER      vier    4
  308. oid:2.999.1.2.3 IDENTIFIER      quattro 4
  309. oid:2.999.1.2.3 UNICODELABEL    FOUR    4
  310. oid:2.999.1.2.3 UNICODELABEL    VIER    4
  311. oid:2.999.1.2.3 UNICODELABEL    QUATTRO 4
  312. oid:2.999.1.2.3 DELEGATION      4       &lt;here&gt;
  313. oid:2.999.1.2.3 FLAG-LEAF       4
  314. oid:2.999.1.2.3 FLAG-DRAFT      4
  315.  
  316. oid:2.999.1.2.3 PRIVATECHILD    5
  317. oid:2.999.1.2.3 PRIVATECHILD    6
  318. oid:2.999.1.2.3 PRIVATECHILD    7
  319.  
  320. <font color="#000080"># There are 100 secret children, 3 private children (id 5, 6 and 7) and 1 public child (id 4), so 2.999.1.2.3 has 104 child nodes in total</font>
  321. oid:2.999.1.2.3 NUMSECRETCHILDREN 100
  322.  
  323. <font color="#000080"># -------------------------
  324. # ZONE 2.999.1.2.3.4</font>
  325. <font color="#000080"># -------------------------
  326. </font>
  327. oid:2.999.1.2.3.4       NAME            &quot;Cup of tea&quot;
  328. oid:2.999.1.2.3.4       DESCRIPTION     &quot;This is the OID 2.999.1.2.3.4!&quot;</pre>
  329.  
  330. <p>Beside "oid" there could be also other NIDs like e.g. "clsid" or "doi" which can be also delegated.
  331. Note that the attribute IDs, e.g. unicodelabel are dependent to the NID oid, e.g. the attribute "unicodelabel"
  332. should behave different on a oid than for a clsid.</p>
  333.  
  334. <h2>More ideas / TODO</h2>
  335.  
  336. <ul>
  337.     <li>Add more attributes. Research more use cases</li>
  338.     <li>Implement client &quot;OID Plus&quot; with real-world
  339.         example &quot;ViaThinkSoft RA&quot;</li>
  340.     <li>Attribute: Information how to obtain a child</li>
  341.     <li>Erweiterung um java-packagenamen auf die selbe weise zu
  342.         verwalten</li>
  343.     <li>Attributes as OIDs: vmd attribute? identified by attr-oid.
  344.         &quot;X&quot; am anfang bei fremden herstellern</li>
  345.         <li>Tool that checks the validity of everything (identifier, leaf status etc)</li>
  346. </ul>
  347. </body>
  348. </html>
  349.