[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:
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.
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
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
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
I think this concept will be needed for any xxxProvisioning MIB.
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".
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
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)