[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

snmpconf DiffPolicy MIB comments





Here are some comments I had sent privately to David and Harrie
regarding the diffPolicy MIB.


Corrections to the code example:

   Change the code to look like:

   IF
      return roleMatch("Administrator");
   THEN
      setvar("diffServDataPathStart.$0.2",
              "diffServActionNext.1", Oid);

  Regarding the addition of "return" in the filter, this is something
  that I've been lax on in my own script examples but needs to be
  there because C/C++ won't return the expression value. I'm going to
  start being more rigorous in my examples as well.

  My other change corrects the setvar call. The correct syntax is
  simpler than what you had.

Terminology:

  I suggest that the MIB be called the Diffserv Provisioning MIB
  because it has little to do with Policy and a lot to do with
  Provisioning.

How to find proper template:

  An important usability issue is how do I find the proper row in the
  DiffPolicyDPCTable to clone? These tables are indexed by a random
  integer assigned by the RowStatus algorithm, so they will be
  different on each host. NMS code or policyScript code will want to
  find the proper entry to clone but won't want to have to walk down
  the whole path checking that the parameters are equal to it's
  understanding of "gold" (in fact, they'd have to do this N times, as
  they searched through the templates in the table until they found
  the one with the proper parameters). If they actually had to scan to
  find the proper row, they would quickly find that it was easier to
  just create a new entry than to find an existing entry that matched
  all the parameters and then clone that one (you'd need to know all
  the detailed parameters anyway). (When Hongal wrote his example he
  hid a *lot* of complexity in the getCloneOfDataPath() function
  call).

  At first I thought this was a fatal flaw in the whole Provisioning
  MIB concept but I have a solution.

  Since integers aren't constant from box to box and aren't long-lived
  on a box, something else is needed. I'd suggest that an
  SnmpAdminString be created called diffPolicyDPCName (or ID or
  something similar). This would be an administratively assigned
  identifier for a template that would be unique within an
  adminstrative domain. It is up to the management stations to agree
  how these are assigned within the administrative domain. But once
  you assign "gold", that has a certain set of parameters that achieve
  "gold" from box to box, so NMS code or policyScript code can easily
  scan the table to find the proper template and then easily assign
  it.

  I think this concept will be needed for any xxxProvisioning MIB.

StorageType

  You should probably add a storageType object or give blanket
  guidance as to what happens on a reboot.

Better linkage with Diffserv MIB

  Personally, I'm a little uncomfortable with the fact that when you
  write to diffServDataPathStart the behavior is dependent on whether
  the specified path has something pointing to it. And I'm very
  uncomfortable that this semantic is not described at all in the
  diffServDataPathStart object (i.e. you're changing the semantics of
  diffserv mib objects in a way that isn't documented in those objects).

  A suggestion would be to have a column in the diffPolicyDPCTable
  called cloneDest or something like that. If write the value of a
  diffServDataPathStart instance to this object, it will clone the
  path at diffPolicyDPCConfiguration and then write into the supplied
  dataPathStart variable the RowPointer to the cloned path.

  In other words, setting the Y'th instance of this object to X
  (object.Y = X) says: "Clone the path associated with Y and then
  modify X so that it points to the clone".

  i.e.:

  Say that a template for gold service is stored at diffServActionNext.5
  Say that diffPolicyDPCConfiguration.7 == diffServActionNext.5

  If I snmpset:
  diffPolicyDPCCloneDest.7 = diffServDataPathStart.10.1

   The agent will:
   1. clone the path at diffServActionNext.5, calling it
      diffServActionNext.55.
   2. Set diffServDataPathStart.10.1 = diffServActionNext.55


  Now diffServDataPathStart.10.1 points to diffServActionNext.55 which 
  describes gold behavior. The DPCConfiguration.7 row was not modified
  by this operation.

  If I then want to add gold behavior to ifIndex 11, I set
     diffPolicyDPCCloneDest.7 = diffServDataPathStart.11.1
  and now my table looks like:
      diffServDataPathStart.10.1 = diffServActionNext.55 (Gold)
      diffServDataPathStart.11.1 = diffServActionNext.56 (Gold)


Regards,
Steve