Subject: IETF 42 (Chicago) AgentX minutes

From: Dale Francisco <[email-masked]>
Date: Tue, 3 Nov 1998 14:04:41 -0800 (PST)

Well, better late than not at all, I suppose.
My apologies for getting these out so long
after the fact, but I think there's still
some value in the minutes.

Dale

Meeting of the SNMP Agent Extensibility (agentx) working group
at IETF-42 Chicago (Wed 8/26/98 15:30-17:30)

Reported by Dale Francisco ([email-masked])

Bob Natale, Chair ([email-masked])

For more information on the agentx wg, please see:
    http://www.ietf.org/html.charters/agentx-charter.html  (IETF charter)
    http://www.scguild.com/agentx/  (AgentX home page)

The meeting began with an account by Bob Natale, working
group chair, of the status of the group's goals and
milestones:

    publish protocol (rfc 2257)--done
    submit agentx MIB i-d to wg--done
    Jun 98 collect implementation reports--done
    Jul 98 interoperability tests (BMC Sunnyvale)--done
    Aug 98 meet at 42 IETF (refine or revise 2257)
    Sep 98 petition iesg to advance 2257 to draft
           or recycle at proposed.

    Oct 98 submit agentx mib to iesg
    Nov 98 submit agentx api i-d v0.1
    Dec 98 submit agentx api i-d v0.2
    Jan 99 agentx api i-d to iesg
    Feb 99 evaluate revs to rfc2257 v2.0

    Mar 99 meet at 44th ietf (tbd)
        Assess status of agentx deployment
        Determine need for agentx v2
        Plan future work items accordingly.
    Apr 99 submit new charter proposal to IESG or retire wg.

Bob then recounted progress to date on RFC 2257, noting
first that it is time (or actually past time) to update
the document.  RFC 2257 was originally published in
January 1997, since which time there has been significant
implementation experience.  The goals of the RFC update
are to:

    Avoid semantic changes

    Avoid/minimize changes to bits on the wire

    Provide clarifications

    Remove superfluous material

    Note limitations (already fairly
    complete in this regard)

    Schedule future work

    Submit updated RFC to the IESG, probably for
    recycling at Proposed.

Bob then discussed interoperability testing and
the current state of implementations.  Five organizations
participated at the AgentX bakeoff held at the end
of July, hosted by BMC at their Sunnyvale office.  He
began with a list of the features not fully tested
(or not tested at all):

        Index allocation/deallocation operations

        AGENT-CAPS operations

        UNIX domain sockets (multi-vendor configurations)
            (at the bakeoff only used TCP)

        Multiple sessions over a single connection

        Complex region registrations

        Agentx-Notify-PDUs
            Didn't carry to SNMP-level of actually
            emitting SNMP traps

        NON_DEFAULT_CONTEXT processing

During the course of the bakeoff, several problems
were exposed in implementations, though not in the
protocol specification itself.  Nevertheless, some
of these problems indicated the need for clarifications
in RFC 2257*.  These problems included:

        Byte-ordering conventions
            Some implementations didn't know when to switch

        *TCP streams vs UDP datagrams
            Add language in transport mappings section

        *"optional" PDU elements
            context field or not

        Counter64 handling

Several clarifications were proposed:

        PDU types not needing a response
            Currently, the RFC specifies two PDU types
            from subagent to master (Close and Notify)
            that don't require a response.

            Consensus: These PDUs should get a response;
            this is so the subagent knows when to stop
            waiting for an error.

        UNIX-domain socket conventions
            Need to define tDomain for it (MIB issue).

        Optional vs NULL/missing vs zero-length PDU fields:
            Mike Daniele will clarify the meaning of "optional".

        Search ranges for PDUs
            What happens if the master agent sends PDU to a
            subagent for an OID lower than anything the subagent
            has registered for?  What about on GetNext?  There
            were some boundary case problems here.

        Description of range_subid in register-PDU
            There was confusion over whether or not the
            prefix of an OID was included when specifying a
            range sub-id.  The range sub-id number is calculated
            _including_ the prefix (if any).

        Reuse of SessionID values
            Is this allowed?  Is 0 a valid SessionID value?

        Additional error codes needed:
            generalRegistrationFailed, unknownError

Randy Presuhn suggested that clarification was needed on
exactly what it means for a deregistration to "match" a
registration request.  Shawn, Randy, and Mike volunteered
to resolve this issue on the list.

Mike Daniele then presented his perspective on the
bakeoff.  He emphasized what had worked, and noted that
the majority of AgentX features were tested.  There were
four "full" implementations (each with a master and
subagent).  Command line SNMP utilities were used to
send SNMP requests to the master agents.  Functionality
tested included:

        Get, GetNext, Set PDUs

        Commits that failed, undos that failed

        Tested every data type except opaque

        2 implementations tested getBulk

Mike then initiated a general discussion of the
bakeoff experience.

Jeff Case noted that, of the two implementations that
tested getBulk, one had an SNMPv3-capable master.  He
wondered if there had been any testing done with
view-based access control enabled.  Mike Thatcher
replied that in one test case VACM was on and he was at
first puzzled that he didn't get any information back
(VACM was doing its job!).

Jeff suggested doing further testing with part of a
registered block in view and part out.  

It was suggested that we needed a TDomain and TAddresses
for the AgentX MIB.  Randy Presuhn suggested the
possibility of a follow-on document on new transport
mappings.  It was noted that CMU is making AgentX code
available with UNIX-domain sockets.

Other topics of discussion included:

    Search ranges: In the current elements of procedure for
    the master agent, it says that for a GetNext before a
    registered subagent region, the master should send the
    starting OID of the nearest relevant session.  One
    implementation sent an OID from immediately _before_
    the registered region, and one subagent rejected it.
    Need to relax rules on what master can dispatch in this
    case, as long as the master only returns values from
    a registered region.

    Session IDs: Should they really be globally unique, or
    is it sufficient that they be unique per connection?
    Randy: Globally unique is not needed for
    interoperability.  Mike D: There was a request from some
    wg members to have sessionIDs unique across all
    connections and all transports.  Jeff: Is zero a
    reserved value?  On the mailing list, it was suggested
    that 0 be a request value but never a granted value.  So
    sessionIDs should start at 1.  Lauren: This impacts
    indexing on sessionTable in MIB.  Consensus: Disallow 0
    as sessionID; it was decided to take the question of
    whether sessionIDs should be unique across all
    transports back to the list for further discussion.

    Additional error codes:  At least two more are needed.
    A 'genError' error code, and a code to indicate that a
    registration was rejected by the master agent for
    administrative reasons ("you want to register something
    I don't want to let you register").  It was thought that
    this should be discussed on the list, to see if any
    other error codes were needed.

    Support for disman Credential Delegation Service (CDS):
    Deferred for now.

    Topics concerning the text of the protocol draft included:

    1) The word "subagent" should often be "session"
    2) openPDU response has sysUpTime in _default_ context
    3) Elements of procedure for Notify
    4) Cleanup the test/commit/undo text:
        - "PDU" not "transaction"
        - Don't refer to "multiple varbinds" in all PDUs
          if it really only applies to Test PDUs.
        - "all subagents" should be "all involved sessions"
        - Master agent will not do multiple sets on the
          same session.
        - Prohibit concurrent transactions.
    5) Index allocation (Juergen's posted question)
        - Clarify the contents of v.name (no instance
          information).
    6) "using index allocation" should be "registering stuff".
        - Use of default priority
        - Should default == 128?
        - Handling duplicates
        - Make clear that allocating indexes is not mandatory
          for registration
    7) Remove "splitting" text where possible, replace
       with "overlapping registration".

Lauren Heintz (BMC) gave an overview of the AgentX MIB as
described in draft-ietf-agentx-mib-02.txt.  She also discussed
the MIB issues she had posted to the list on the preceding
Friday.

Bob Natale concluded the meeting with a brief summary of
status and the work to be done.  He noted that because
interoperability testing was not complete, we were not
in a position to petition for advancement of RFC 2257
(recycle at Proposed).  He then outlined action items
for the next phase of work, including:

    1) An updated MIB
    2) Posting of revised issues to list within a week.
    3) New protocol draft with changes agreed upon at this
       meeting and on the list, within 5 weeks.