Subject: [dtn] AMP comment on group introspection

From: Brian Sipos <[email-masked]>
Date: Thu, 14 Apr 2016 20:39:31 +0000

This is a general comment on AMP capability, looking at it from the perspective of SNMP/NETCONF similarity and YANG modeling. This is more of a request for ideas than a request for changes at this point.

There is currently no way in the AMP to "introspect" the contents of an ADM group, and what I mean by this is to include an MID in a report which identifies not an atomic object itself but the OID of a group of atomic objects in order to request the entire group as-a-whole.

Unfortunately, because reports do not identify the objects to from which the data values were generated there is an ambiguity on how a group MID should be reported. It would be possible to use the same type of lexicographical ordering as SNMP uses for "getnext" retrieval, but this is very fragile to changes in the ADM and would impose stronger constraints on the ADM definition itself (placing ADM object definitions out-of-OID-order would be disallowed) to avoid ADM order being different than OID order.

It would also be possible to define semantics for encoding (somehow) MIDs within the structure (TDC?) reporting upon the group MID. I understand that one of the driving goals of the AMA is to provide terse PDU size for transport. There could be a trade-off in that directly-requested report objects do not contain MID but indirectly-requested ones (e.g. the objects within a group) do. This would keep the exact same behavior as current AMP when reporting on individual (primitive/computed) values but would provide MID context when reporting on nested values.

The MIDs could either be somehow interleaved with the data values (a more verbose encoding because every other encoded value would be MID-type) or there could be a concept of an identified typed data collection (ITDC) which includes MIDs in the header along with types...?

Providing this capability (along with table semantics proposed earlier) would provide a near one-to-one between AMP and NETCONF (and SNMP). Whether that is desirable or not is a separate question.

---

From: Brian Sipos <[email-masked]>
Date: Thu, 14 Apr 2016 22:02:49 +0000

Replying to myself because I forgot to mention that because we are talking about items in lexicographic order all under the same immediate prefix OID, the "identity" of each object is simply the single last digit of the OID. So a hypothetical ITDC with N items would grow by exactly N SDNV values (all likely to be small). This method is not proposing to throw around whole OIDs throughout messages as does SNMP.

________________________________
From: dtn <[email-masked]> on behalf of Brian Sipos <[email-masked]>
Sent: Thursday, April 14, 2016 16:39
To: [email-masked]
Subject: [dtn] AMP comment on group introspection

---

From: "Birrane, Edward J." <[email-masked]>
Date: Sun, 17 Apr 2016 20:29:40 +0000

Brian,

  One of the things that an AMP Agent allows for is the custom definition of a report. When defining a report the user provides the MID for the new report and the contents of that report.  The contents can be any combination of atomic data, computed data, and also other reports.  Once configured on the agent, a manager can simply request that the report be generated by including the report's MID in a GenerateReport control.

  Further, there is a DescribeReport command which will allow a manager to request the description of a report if, for example, the report was not originally defined by that manager.

  Once you have such a custom report, you can include it in your other report definitions and thereby get the contents of the "group as a whole" whenever you wish.

  Does that match your use case, or is there a more dynamic element to defining groups of atomic objects that I am missing?

-Ed

---
Edward J. Birrane, III, Ph.D.
Embedded Applications Group Supervisor
Space Exploration Sector
Johns Hopkins Applied Physics Laboratory
(W) 443-778-7423 / (F) 443-228-3839

From: dtn [mailto:[email-masked]] On Behalf Of Brian Sipos
Sent: Thursday, April 14, 2016 4:40 PM
To: [email-masked]
Subject: [dtn] AMP comment on group introspection

---

From: Brian Sipos <[email-masked]>
Date: Mon, 18 Apr 2016 13:10:58 +0000

The situation that the original comment was covering (and one which will provide alignment between NETCONF and AMP) is the ability to enumerate an OID-based hierarchy of values.

The current reporting semantics are wonderful for doing what it is supposed to do (yield a list of atomic values corresponding to an prior-known list of MIDs). One thing which is not possible to do in the current spec is to report on a hierarchy of values (not possible in the sense that I believe the case is simply not covered for reporting).

Given an example ADM OID tree (similar to the current ADM drafts) of

- Root at 1.3.6.1.2.3.1

  + Primitive data under sub-OID .1

    - Data link counters group under sub-OID .24

      + Counter A sub-OID .1

       ...

      + Counter Z sub-OID .26

I create a report (ADM-defined or custom-defined, either way) with an item in the report having non-parameterized MID [1.3.6.1.2.3.1].1.24. What I would _like_ to be able to get out of the report is a listing of all of the Counter A--Counter Z values. The exact behavior of what an Agent would do in this situation is not specified. Because the OID tree is dynamic (as you have mentioned) I don't think that encoding the 26 integer values (for the 26 counters) into a TDC is sufficient to be able to unambiguously interpret the contents. I suspect that some kind of (sub-OID, value) pairing would be needed.

The above example of a group of counters under an OID subtree is actually one that I would actually like to do, so that the report definition is simple but the report contents captures all of the defined values.

Finally, all this represents is an actual specification of what the Agent _should_ do when a report contains a non-primitive/computed MID. This is not saying that an AMP or Manager would ever actually define such a report, or that an Agent implementation could simply say "does not conform with AMP reporting on groups". The point here is simply to make it part of the spec rather than undefined. Leaving it undefined is also an option, but for my use I may end up actually defining a behavior for this case.

________________________________
From: Birrane, Edward J. <[email-masked]>
Sent: Sunday, April 17, 2016 16:29
To: Brian Sipos; [email-masked]
Subject: RE: AMP comment on group introspection

Brian,

  One of the things that an AMP Agent allows for is the custom definition of a report. When defining a report the user provides the MID for the new report and the contents of that report.  The contents can be any combination of atomic data, computed data, and also other reports.  Once configured on the agent, a manager can simply request that the report be generated by including the report’s MID in a GenerateReport control.

  Once you have such a custom report, you can include it in your other report definitions and thereby get the contents of the “group as a whole” whenever you wish.

-Ed

---

Space Exploration Sector