Subject: interface creation

From: Dave Thaler <[email-masked]>
Date: Fri, 26 Jun 1998 15:28:48 -0400 (EDT)

Last IETF, I agreed to update the IP Tunnel MIB to give the manager
a way to determine which ifIndex to use for tunnel interface
creation.  The LAN-Emulation MIB was suggested as an example.

In reviewing this, it seems that there are two options:
a) Have one table which allows row creation, and maps a manager-generated 
   index to an agent-generated index.  Since we need to easily map from 
   an ifIndex to the tunnel attributes, this requires a separate table
   indexed by ifIndex which either contains the index into the first 
   table, or the attributes themselves.
b) Have a single scalar object which, when read, contains a value which 
   the manager may use for row creation in a table indexed by ifIndex.
   
The LANE mib uses (a) with the attributes being (only) in the table 
indexed by the manager-generated index.

Tradeoffs I see:
(a) requires the manager to somehow "determine an suitable index"
    (such as walking the table, or picking a random number and
    retrying a SET if the index collides).
(b) requires the manager to retry a SET only if the "next ifindex"
    scalar changes between the GET and the SET.  It's pretty easy for
    an agent to reserve the ifIndex though.

(a) allows row creation with a single SET (assuming the manager
    picks a random 32-bit number and doesn't get unlucky enough
    to hit a used value) as long as the attributes are in the
    table indexed by the manager-generated index.  However,
    it takes 2 GETs (or GETNEXTs) to retrieve a row of the Interface 
    table extended by tunnel attributes, unless you duplicate the
    attributes in both tables (ugh).
(b) requires a GET and a SET to do interface creation, but
    only 1 GET to retrieve tunnel information for an interface.

(a) requires more objects and is more of a change from the existing
    draft

Are there other technical arguments why (a) is better than (b)?
If not, I plan on just doing (b) by adding one scalar object to
the draft.

Dave Thaler