Network Working Group                                             W. Fan
Internet-Draft                                                   T. Meng
Intended status: Standards Track            Huawei-Symantec Technologies
Expires: November 2, 2009                                       May 2009


                         A lock feature to SNMP
                      draft-fan-meng-snmp-lock-00

Status of This Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.  This document may contain material
   from IETF Documents or IETF Contributions published or made publicly
   available before November 10, 2008.  The person(s) controlling the
   copyright in some of this material may not have granted the IETF
   Trust the right to allow modifications of such material outside the
   IETF Standards Process.  Without obtaining an adequate license from
   the person(s) controlling the copyright in such materials, this
   document may not be modified outside the IETF Standards Process, and
   derivative works of it may not be created outside the IETF Standards
   Process, except to format it for publication as an RFC or to
   translate it into languages other than English.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on November 2, 2009.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal



Fan & Meng              Expires November 2, 2009                [Page 1]


Internet-Draft           A lock feature to SNMP                 May 2009


   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.

Abstract

   This memo is intended to provide a lock mechanism to SNMP for
   protecting SET operations from being interrupted by any other network
   management operations such as NETCONF <edit-config> or CLI writes.
   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols.  In particular, it extends
   LOCK-MIB defined in [I-D.meng-fan-lock-mib] to define objects for
   managing SNMP locks.  The lock acquisition and release can be
   achieved through manipulating those objects.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  Usage Scenarios  . . . . . . . . . . . . . . . . . . . . .  3
       1.1.1.  A large SET operation handling . . . . . . . . . . . .  3
       1.1.2.  Multiple SET operations handling as a transaction  . .  3
   2.  The Internet-Standard Management Framework . . . . . . . . . .  4
   3.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  4
   4.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
   5.  MIB extension to LOCK-MIB  . . . . . . . . . . . . . . . . . .  5
   6.  Elements of Procedure  . . . . . . . . . . . . . . . . . . . .  7
     6.1.  Procedure of lock acquisition  . . . . . . . . . . . . . .  7
     6.2.  Procedure of lock release  . . . . . . . . . . . . . . . .  9
     6.3.  Procedure of lock validation . . . . . . . . . . . . . . .  9
   7.  Definitions  . . . . . . . . . . . . . . . . . . . . . . . . . 10
   8.  Relationship to other MIBs . . . . . . . . . . . . . . . . . . 15
   9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 15
     9.1.  MIB Security Considerations  . . . . . . . . . . . . . . . 16
   10. Acknowledges . . . . . . . . . . . . . . . . . . . . . . . . . 17
   11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 17
     11.1. Normative References . . . . . . . . . . . . . . . . . . . 17
     11.2. Informative References . . . . . . . . . . . . . . . . . . 18













Fan & Meng              Expires November 2, 2009                [Page 2]


Internet-Draft           A lock feature to SNMP                 May 2009


1.  Introduction

   Network devices may support multiple management protocols for
   flexible operation and management.  For example, a device may support
   NETCONF [RFC4741] , SNMP, and proprietary CLI for configuration and
   allow for multiple operators using different protocols configure it
   at the same time.  It is needed to protect operations from
   intervention by the others for data consistency, regardless of which
   NM protocol is used.

   This memo is intended to provide a lock mechanism to SNMP for
   protecting SET operations from being interrupted by any other network
   management operations such as NETCONF <edit-config> or CLI writes.
   This memo defines a portion of the Management Information Base (MIB)
   for use with network management protocols.  In particular it extends
   LOCK-MIB defined in [I-D.meng-fan-lock-mib] to define objects for
   managing SNMP locks.  The lock acquisition and releasing can be
   achieved through manipulating those objects.

1.1.  Usage Scenarios

   In the following we describe a few scenarios for SNMP locking.
   Besides the two described here, there might be many other usage
   scenarios possible.

1.1.1.  A large SET operation handling

   Now that SSH running over TCP as well as DTLS running over TCP and
   SCTP is proposed or accepted as an optional transport mapping for
   SNMP, people could write bigger messages, including SET messages.  In
   this case, SNMP agent may consume more time for processing the single
   large SET operation, SNMP would like to use locks to prevent
   conflicts during the processing as other NM interfaces might do.
   Nevertheless, locks should only be used when the manager knows they
   are sending an especially large SET except for the following cases,
   not for the normal SETs that only carry a few varbinds and complete
   in millisecond timeframes.

1.1.2.  Multiple SET operations handling as a transaction

   In some cases, we should treat multiple SET operations as a logic
   transaction as a whole, whatever they are across multiple tables or
   agents or even administrative domains.

   SNMP offers RowStatus, which can maintain state over a sequence of
   operations to a particular row in a table, but SNMP does not have a
   mechanism for "locking" while an SNMP manager builds transaction
   state across multiple tables or locking a configuration while a



Fan & Meng              Expires November 2, 2009                [Page 3]


Internet-Draft           A lock feature to SNMP                 May 2009


   manager builds a transaction across multiple agents. all operations
   within a transaction would be kept as atomic by using SNMP locking.

   New technologies that can be managed using SNMP can be implemented on
   devices that cross administrative domains.  IEEE 802.1 provider
   bridging, for example, might allow SETs to be done to a CPE device
   from two different administrative domains, where who can change what
   is determined using access controls.  But in some cases, it could be
   important when they can change what; it might be important that two
   administrators not try to modify the same device at the same time
   because this could cause misconfiguration.  Real locks (not the
   simple advisory locks commonly used in SNMP) might be used to prevent
   conflicts in provisioning shared administration environments.

2.  The Internet-Standard Management Framework

   For a detailed overview of the documents that describe the current
   Internet-Standard Management Framework, please refer to section 7 of
   RFC 3410 [RFC3410].

   Managed objects are accessed via a virtual information store, termed
   the Management Information Base or MIB.  MIB objects are generally
   accessed through the Simple Network Management Protocol (SNMP).
   Objects in the MIB are defined using the mechanisms defined in the
   Structure of Management Information (SMI).  This memo specifies a MIB
   module that is compliant to the SMIv2, which is described in STD 58,
   RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580
   [RFC2580].

3.  Conventions

   Terms "SNMP manager" and "SNMP agent" have been defined in section
   3.1.3.1 and 3.1.3.2 respectively in [RFC3411] .

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

4.  Overview

   This memo enable SNMP agent to lock a portion or all of configuration
   data for a specific user.  In particular, the protected area by a
   lock is a set of object types (and instances) which are specified by
   a family of view subtrees, per section 2.4.2, [RFC3415].

   The SNMP agent MUST ensure that all the configuration resources
   protected by a lock are not modified by other SNMP or non-SNMP users
   (and sessions) such as NETCONF and the CLI.



Fan & Meng              Expires November 2, 2009                [Page 4]


Internet-Draft           A lock feature to SNMP                 May 2009


   The duration of a lock begins when the lock is granted and lasts
   until the corresponding unlock (whether forcibly or not) request
   succeeds or the underlying session terminates or the system where the
   agent resides reboots.

   A SNMP user MAY have multiple part of the configuration data locked
   via multiple lock requests.

   The SNMP agent assigns a lock identifier to the lock when a lock
   request has been processed (whether the lock is granted or not at
   last).

5.  MIB extension to LOCK-MIB

   This section describes the MIB extension to LOCK-MIB for managing
   SNMP locks.

   LOCK-MIB is defined in [I-D.meng-fan-lock-mib] to monitor locks via
   multiple NM interfaces.  It consists of the lockTable and several
   specific NM interface tables as well as several scalar variables.
   The lockTable collects generic information for all locks being
   managed by the device regardless of protocol and its structure is
   like:

   --lockObjects(1)
     |
     +--lockTable(3)
        |
        +--lockEntry(1) [lockIndex]
           |
           +--Unsigned32      lockIndex(1)
           |
           +--SnmpAdminString lockUserName(2)
           |
           +--SnmpAdminString lockNMInterface(3)
           |
           +--INTEGER         lockType(4)
           |
           +--TimeTicks       lockStartTime(5)
           |
           +--TimeTicks       lockEndTime(6)
           |
           +--INTEGER         lockState(7)

   [I-D.meng-fan-lock-mib] has more details.

   A specific NM interface lock table collects specific information with
   regard to all locks via one specific protocol, for example,



Fan & Meng              Expires November 2, 2009                [Page 5]


Internet-Draft           A lock feature to SNMP                 May 2009


   lockNetconfTable collects specific information of all locks via
   NETCONF.  Since LOCK-MIB allows for being extended by adding a new
   specific NM interface lock table, we organize specific information of
   all locks via SNMP into a specific NM interface lock table called
   lockSnmpTable:

   --lockObjects(1)
     |
     +--lockSnmpObjects(6)
        |
        +--TestAndIncr lockSnmpSpinLock(1)
        |
        +--lockSnmpTable(2)
           |
           +--lockSnmpEntry(1) [lockSnmpLockId]
              |
              +--Unsigned32        lockSnmpLockId(1)
              |
              +--SnmpAdminString   lockSnmpViewTreeFamilyViewName(2)
              |
              +--OBJECT IDENTIFIER lockSnmpViewTreeFamilySubtree(3)
              |
              +--OCTET STRING      lockSnmpViewTreeFamilyMask(4)
              |
              +--INTEGER           lockSnmpViewTreeFamilyType(5)
              |
              +--Unsigned32        lockSnmpIndex(6)
              |
              +--RowStatus         lockSnmpStatus(7)

   The meaning of each Object Type is explained as below:

      lockSnmpSpinLock is an advisory lock which is used to coordinate
      multiple simultaneous SETs to lockSnmpTable.

      lockSnmpLockId is an instance-identifier to differentiate multiple
      entries in lockSnmpTable.

      lockSnmpViewTreeFamilyViewName, lockSnmpViewTreeFamilySubtree,
      lockSnmpViewTreeFamilyMask and lockSnmpViewTreeFamilyType are
      jointly used to represent the protected area by a lock as a MIB
      view. their semantics is specified in [RFC3415].

      lockSnmpIndex connects a entry in lockSnmpTable to the
      corresponding entry in lockTable.

      lockSnmpStatus is used to indicate the status of the associated
      entry, "notReady" means the lock request is pending, "active"



Fan & Meng              Expires November 2, 2009                [Page 6]


Internet-Draft           A lock feature to SNMP                 May 2009


      means the lock takes effect.

   The lockSnmpTable can be used to acquire or release a lock, and can
   be combined with lockTable to monitor all SNMP locks.

6.  Elements of Procedure

   This section describes how to manipulate objects defined in section 5
   in order to acquire and release a lock.  It gives the procedure of
   lock acquisition, lock release as well as lock validation.

6.1.  Procedure of lock acquisition

   SNMP manager can request a lock by trying to create an entry in
   lockSnmpTable.  Before that, we should retrieve the value of
   lockSnmpSpinLock as the instance-identifier of the entry to be
   created and calculate the value of lockSnmpViewTreeFamilySubtree and
   lockSnmpViewTreeFamilyMask as well as specify the value of
   lockSnmpViewTreeFamilyViewName and lockSnmpViewTreeFamilyType to
   identify the intended protected area by the lock based on subsequent
   SET(s) to be issued.  Even though we create a entry successfully, its
   status column won't be active until the lock is granted.  Lock
   request failure would destroy the associate entry.  Whatever the lock
   is granted or not, a entry collecting generic information about the
   lock will be added to lockTable.

   Manager                     Agent
                 (1)
            <----------->
   (2)
                 (3)
           <------------>
                             (4)
                             (5)
                             (6)
                 (7)
            <----------->

      (1) the manager GET(lockSnmpSpinLock.0) and save in sValue. sValue
      is used to be the instance-identifier of the entry to be created.
      I.e., if an entry is created successfully, the value of the
      lockSnmpLockId associated with the entry equals to sValue.

      (2) the manager specifies the viewValue and typeValue, calculates
      the subtreeValue and maskValue based on the SET operations to be
      protected.  Combination of them is used to identify the intended
      protected area by the lock.  How to get these values is out of the
      scope of this document, and it is left to implementation-specific.



Fan & Meng              Expires November 2, 2009                [Page 7]


Internet-Draft           A lock feature to SNMP                 May 2009


      (3) the manager SET(lockSnmpSpinLock.0=sValue,
      lockSnmpViewTreeFamilyViewName=viewValue,
      lockSnmpViewTreeFamilySubtree=subtreeValue,
      lockSnmpVIewTreeFamilyMask=maskValue,
      lockSnmpViewTreeFamilyViewType=typeValue)

      (4) An entry is created with lockSnmpStatus="notReady" by the
      agent.

      (5) the agent processes the lock request based on criteria
      mentioned later.

      (6) After the lock request processing completes, an entry
      representing the lock is added to lockTable with
      lockState="ACTIVE" or lockState="FAILED" depending on the lock
      request succeeded or not, if lockState=ACTIVE, then the value of
      lockSnmpIndex is set to the value of the corresponding lockIndex
      in lockTable and the value of status column is set to ACTIVE,
      otherwise, the associated entry in lockSnmpTable is deleted.

      (7) the manager GET(lockSnmpStatus).  When the value of
      lockSnmpStatus is "active", the lock is valid.  Otherwise the lock
      failed.

   Granted locks protect all instances specified by the associated
   family of view subtrees (i.e., combination of values of
   lockSnmpViewTreeFamilyViewName, lockSnmpViewTreeFamilySubtree,
   lockSnmpViewFamilyMask and lockSnmpViewFamilyType) from modification
   by others, regardless of SNMP or non-SNMP operations.

   A lock request MUST be handled atomically by the agent.  The agent
   either locks all requested parts of the configuration data or none.
   If during the lock request processing one of the requested parts
   cannot be locked, the agent MUST unlock all parts that have already
   been locked during the lock request processing.

   The agent MUST be able to grant multiple simultaneous locks to a
   single user.  If the protected area of the individual locks overlaps,
   instances in the common area MUST be protected until all of the locks
   are released.

   With point (5) above, a lock request MUST fail if:

   o  Any part of the MIB to be protected is already locked by other
      users, including SNMP users or any other non-SNMP management
      method.





Fan & Meng              Expires November 2, 2009                [Page 8]


Internet-Draft           A lock feature to SNMP                 May 2009


   o  The agent implements access control model(s), and the locking user
      does not have sufficient access rights.  The exact handling of
      access rights is outside the scope of this document, but it is
      assumed that there is an access control system that MAY deny or
      allow the lock request.

6.2.  Procedure of lock release

   Manager can try to delete an entry in lockSnmpTable in order to
   release the associated active lock.

      (1) the manager SET(lockSnmpStatus=destroy)

      (2) the agent release the lock.

      (3) the manager GET(lockState) to check if the lock has been
      released or not.

   Manager                      Agent
               (1)
           <----------->
                             (2)
               (3)
           <----------->

6.3.  Procedure of lock validation

   An active SNMP lock should protect locked managed object types (and
   instances) from modification by other SNMP users or any other non-
   SNMP methods.  When the operations attempting to modify locked object
   types (and instances) arrives, the server MUST fail them (with error
   codes).  A locked object MUST be treated as an unavailable resource.
   For example, in a SNMPv3 message, the error code MUST be
   resourceUnavailable.

   According to section 4.2.5, [RFC3416], a SET operation is
   conceptually processed as a two phase operation.  Before actual
   variable assignments, there are 12 validation steps for checking,
   e.g., access rights, value types, etc.  If any variable binding's
   name specifies an already locked managed object types (or instance),
   step (11) will be triggered, i.e., the value of the Response-PDU's
   error-status field is set to "resourceUnavailable", and the value of
   its error-index field is set to the index of the failed variable
   binding.







Fan & Meng              Expires November 2, 2009                [Page 9]


Internet-Draft           A lock feature to SNMP                 May 2009


7.  Definitions

LOCK-SNMP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE, MODULE-IDENTITY,
    mib-2, Unsigned32                FROM SNMPv2-SMI
    TestAndIncr, RowStatus           FROM SNMPv2-TC
    SnmpAdminString                  FROM SNMP-FRAMEWORK-MIB
    MODULE-COMPLIANCE, OBJECT-GROUP  FROM SNMPv2-CONF;

lockSnmpMIB MODULE-IDENTITY
    LAST-UPDATED "200905270000Z"-- 27 May 2009
    ORGANIZATION "Operations and Management Area Working Group"
    CONTACT-INFO
    "          Tony Meng
               Postal: Huawei-Symantec Technologies
                           3rd Floor, Section D, Keshi Building
                           No.28, Xinxi Rd., Shangdi, Haidian Dist.
                           Beijing 100085
                           China
               Email:  mengjian@huaweisymantec.com

               Washam Fan
               Postal: Huawei-Symantec Technologies
                           3rd Floor, Section D, Keshi Building
                           No.28, Xinxi Rd., Shangdi, Haidian Dist.
                           Beijing 100085
                           China
               Email:  Washam.Fan@huaweisymantec.com
    "
    DESCRIPTION  "The module defines management information for
                 managing SNMP locks for network management protocols.

                 Copyright (C) The IETF Trust (2009).  This version
                 of this MIB module is part of RFC XXXX; see the RFC
                 itself for full legal notices."

-- RFC Ed.: replace XXXX with actual RFC number & remove this note

    REVISION     "200905270000Z"-- 27 May 2009
    DESCRIPTION  "Initial version, published as RFC XXXX."

    ::= { mib-2 xxx } --to be assigned by IANA

-- Administrative assignments *******************************

lockSnmpObjects     OBJECT IDENTIFIER ::= { lockSnmpMIB 1 }



Fan & Meng              Expires November 2, 2009               [Page 10]


Internet-Draft           A lock feature to SNMP                 May 2009


lockSnmpConformance OBJECT IDENTIFIER ::= { lockSnmpMIB 2 }

lockSnmpSpinLock OBJECT-TYPE
    SYNTAX       TestAndIncr
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION "An advisory lock used to allow cooperating SNMP
                 Command Generator applications to coordinate their
                 use of the Set operation in creating SNMP locks.

                 When creating a new SNMP lock, it is important to
                 understand the potential interactions with other
                 uses of the lock.  The lockSnmpSpinLock should be
                 retrieved.  The lockSnmpLockId of the lock to be
                 created should be determined to be unique by the
                 SNMP Command Generator application by consulting
                 the lockSnmpSpinLock.  Finally, the requested lock
                 may be created (Set), including the advisory lock.

                 If another SNMP Command Generator application has
                 altered the locks in the meantime, then the spin
                 lock's value will have changed, and so this creation
                 will fail because it will specify the wrong value for
                 the spin lock.

                 Since this is an advisory lock, the use of this lock
                 is not enforced.
                "
    ::= { lockSnmpObjects 1 }

lockSnmpTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF LockSnmpEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "This table collects specific information of all locks
                 via SNMP. The information includes lock identifiers for
                 identifying all locks via SNMP, intended protected area
                 by the lock, etc.

                 Users can request a lock by creating a new entry
                 successfully. Combination of values of
                 lockSnmpViewTreeFamilyViewName,
                 lockSnmpViewTreeFamilySubtree,
                 lockSnmpViewTreeFamilyMask
                 and lockSnmpViewTreeFamilyType represents the intended
                 protected area by the lock.

                 Users can release an active lock by trying to destroy



Fan & Meng              Expires November 2, 2009               [Page 11]


Internet-Draft           A lock feature to SNMP                 May 2009


                 the associated entry.

                 Users can retrieve the information of a lock from
                 lockTable by referencing the value of snmpLockIndex
                 when the lock is active.
                "
    ::= { lockSnmpObjects 2 }

lockSnmpEntry OBJECT-TYPE
    SYNTAX       LockSnmpEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "An entry represents a SNMP lock and includes all
                 specific information about the lock.
                "
    INDEX       { lockSnmpLockId }
    ::= { lockSnmpTable 1 }

LockSnmpEntry ::= SEQUENCE
    {
        lockSnmpLockId                    Unsigned32,
        lockSnmpViewTreeFamilyViewName    SnmpAdminString,
        lockSnmpViewTreeFamilySubtree     OBJECT IDENTIFIER,
        lockSnmpViewTreeFamilyMask        OCTET STRING,
        lockSnmpViewTreeFamilyType        INTEGER,
        lockSnmpIndex                     Unsigned32,
        lockSnmpStatus                    RowStatus
    }

lockSnmpLockId OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Lock identifier to differentiate all SNMP locks.
                 The value should equal to the value of lockSnmpSpinLock
                 when creating the associated entry.
                "
    ::= { lockSnmpEntry 1 }

lockSnmpViewTreeFamilyViewName OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(0..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The human readable name for a family of view subtrees.
                "
    ::= { lockSnmpEntry 2 }





Fan & Meng              Expires November 2, 2009               [Page 12]


Internet-Draft           A lock feature to SNMP                 May 2009


lockSnmpViewTreeFamilySubtree OBJECT-TYPE
    SYNTAX       OBJECT IDENTIFIER
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The MIB subtree which when combined with the
                 corresponding instance of lockSnmpViewTreeFamilyMask
                 defines a family of view subtrees.
                "
    ::= { lockSnmpEntry 3 }

lockSnmpViewTreeFamilyMask OBJECT-TYPE
    SYNTAX       OCTET STRING (SIZE (0..16))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The bit mask which, in combination with the
                 corresponding instance of
                 lockSnmpViewTreeFamilySubtree,
                 defines a family of view subtrees.

                 Readers can refer to [RFC3415] for details how to
                 define a family of view subtrees with the two values.
                "
    DEFVAL      { ''H }
    ::= { lockSnmpEntry 4 }

lockSnmpViewTreeFamilyType OBJECT-TYPE
    SYNTAX       INTEGER  { included(1), excluded(2) }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "Indicates whether the corresponding instances of
                 lockSnmpViewTreeFamilySubtree and
                 lockSnmpViewTreeFamilyMask
                 define a family of view subtrees which is included in
                 or excluded from the MIB view.
                "
    DEFVAL      { included }
    ::= { lockSnmpEntry 5 }

lockSnmpIndex OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "Lock identifier to differentiate all locks via
                 multiple NM interfaces. It connects the entry to
                 the corresponding entry in lockTable.

                 Users can retrieve the info of the lock from lockTable
                 by referencing the value.



Fan & Meng              Expires November 2, 2009               [Page 13]


Internet-Draft           A lock feature to SNMP                 May 2009


                "
    ::= { lockSnmpEntry 6 }

lockSnmpStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION "With value 'notReady' means the lock request has been
                 submitted successfully but not yet processed.
                 With value 'active' means the lock is granted at last.
                 Failed and released lock will be deleted.
                "
    ::= { lockSnmpEntry 7 }

-- Conformance Information *******************************************

lockSnmpCompliances OBJECT IDENTIFIER ::= { lockSnmpConformance 1 }
lockSnmpGroups      OBJECT IDENTIFIER ::= { lockSnmpConformance 2 }


-- Compliance statements

lockSnmpCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION  "The compliance statement for an entity who implements
                 this LOCK-SNMP-MIB."

    MODULE       -- this module
    MANDATORY-GROUPS { lockSnmpGroup }

     ::= { lockSnmpCompliances 1 }

lockSnmpGroup OBJECT-GROUP
    OBJECTS     {
                  lockSnmpSpinLock,
                  lockSnmpViewTreeFamilyViewName,
                  lockSnmpViewTreeFamilySubtree,
                  lockSnmpViewTreeFamilyMask,
                  lockSnmpViewTreeFamilyType,
                  lockSnmpIndex,
                  lockSnmpStatus
                }
    STATUS       current
    DESCRIPTION "A collection of objects providing basic instrumentation
                of an entity which supports SNMP lock."
    ::= { lockSnmpGroups 1 }

END



Fan & Meng              Expires November 2, 2009               [Page 14]


Internet-Draft           A lock feature to SNMP                 May 2009


8.  Relationship to other MIBs

   LOCK-MIB defined in [I-D.meng-fan-lock-mib] collects generic
   information of all locks supported in the device, the memo extends
   LOCK-MIB to collect specific information of all SNMP locks described
   in this memo.  LOCK-MIB and the extension done in this memo can be
   used jointly to manage and control SNMP locks, per section 6.

   When the extension is added to LOCK-MIB, statistics variables should
   reflect SNMP locks defined in this memo as well as other NM interface
   locks.  When a SNMP lock becomes active, the value of lockActivelocks
   should be incremented by 1, when a SNMP lock failure occurs, the
   value of lockFailures should be incremented by 1, when an active SNMP
   lock is released, the value of lockActivelocks should be reduced by
   1.

   SNMP-VIEW-BASED-ACM-MIB defined in [RFC3416] defines
   vacmViewTreeFamilyTable to represent views. lockSnmpTable represents
   views in the identical way which is used to identify protected areas
   by locks.

9.  Security Considerations

   This document enable a SNMP agent to handle the lock acquisition,
   lock release and lock validation.  These work should be done in
   accordance with Security Model and Access Control Model to manage and
   control locks.

   Before a manager can set lockSnmpTable, it should be authenticated
   successfully.  When a conceptual row is to be created in
   lockSnmpTable, the agent should check if the authenticated manager
   has appropriate privileges about all objects falling into the
   intended locked area as well as other criteria if necessary.

   A lock might prevent other users from configuring the system (which
   might lead to DoS attack).  The following mechanisms are in place to
   prevent the misuse of this possibility:

      Only an authenticated and authorized user should be allowed to
      request a lock.

      The lock is automatically released when a session (if it exists,
      e.g., SSH transport mapping is used) is terminated regardless of
      how the session ends.  The reboot behavior leads to all the active
      locks automatically released.

      Implementations should allow an administrator to release an SNMP
      lock via SNMP and through the native CLI console interface, to be



Fan & Meng              Expires November 2, 2009               [Page 15]


Internet-Draft           A lock feature to SNMP                 May 2009


      able to prevent denial of service attacks.

      Keeping track of the number of active locks using lockActivelocks
      counter can uncover some bad behaviors.  E.g.  If the number of
      active locks grows rapidly or there are locks lasting for a long
      period of time, somebody might be trying to launch a denial of
      service attack.

      The SNMP agent may log lock requests in an audit trail.

   LOCK-MIB doesn't allow for modifying specific NM interface lock
   tables except for lockSnmpTable, which means a non SNMP lock can't be
   released via manipulating managed objects defined in LOCK-MIB.  Since
   the access control system is different among different NM interfaces,
   SNMP lock SHOULD NOT be released by non SNMP interfaces or methods.

   lock release forcibly might lead to difficult recovery, as It is
   impossible to rollback all successful SET(s) protected by the lock.
   When a lock is grant in a SET processing procedure, it may cause The
   SET processing in place failed.  In that case, the agent SHOULD try
   to undo all the assignments in the SET, the corresponding Response
   PDU is returned with error-status with value "commitFailed" or
   "undoFailed" (in the latter case. the undone failed).

9.1.  MIB Security Considerations

   There are a number of management objects defined in this MIB module
   with a MAX-ACCESS clause of read-write and/or read-create.  Such
   objects may be considered sensitive or vulnerable in some network
   environments.  The support for SET operations in a non-secure
   environment without proper protection can have a negative effect on
   network operations.  These are the tables and objects and their
   sensitivity/vulnerability:

   o  lockSnmpViewTreeFamilyViewName, lockSnmpViewTreeFamilySubtree,
      lockSnmpViewTreeFamilyMask, lockSnmpViewTreeFamilyType: these
      objects are used to identify the scope of intended locked area.
      If any object falling into this area is unauthorized to the
      requesting user, the lock request will fail.  If the SET operation
      has altered in an unauthoritative way, the lock request probably
      fails.

   o  lockSnmpStatus: this object indicates the state of the lock via
      combining with the lockState column in lockTable.  SET operations
      attempting set lockSnmpStatus to 'notInService' will release the
      lock or abort the lock request.  SET operations attempting set
      lockSnmpStatus to 'destroy' will delete the entry (and release an
      active lock).  So unauthorized SET operations will probably broken



Fan & Meng              Expires November 2, 2009               [Page 16]


Internet-Draft           A lock feature to SNMP                 May 2009


      an active lock illegally.

   SNMP versions prior to SNMPv3 did not include adequate security.
   Even if the network itself is secure (for example by using IPsec),
   even then, there is no control as to who on the secure network is
   allowed to access and GET/SET (read/change/create/delete) the objects
   in this MIB module.

   It is RECOMMENDED that implementers consider the security features as
   provided by the SNMPv3 framework (see [RFC3410], section 8),
   including full support for the SNMPv3 cryptographic mechanisms (for
   authentication and privacy).

   Further, deployment of SNMP versions prior to SNMPv3 is NOT
   RECOMMENDED.  Instead, it is RECOMMENDED to deploy SNMPv3 and to
   enable cryptographic security.  It is then a customer/operator
   responsibility to ensure that the SNMP entity giving access to an
   instance of this MIB module is properly configured to give access to
   the objects only to those principals (users) that have legitimate
   rights to indeed GET or SET (change/create/delete) them.

10.  Acknowledges

   This draft partially borrows from Balazs Lengyel and Martin
   Bjorklund's [I-D.ietf-netconf-partial-lock].  Many thanks to David
   Harrington for his guidance and feedback on this doc.

11.  References

11.1.  Normative References

   [I-D.meng-fan-lock-mib]          Meng, T. and W. Fan, "Definitions of
                                    Managed Objects for lock via network
                                    management protocols", April 2009.

   [RFC2119]                        Bradner, S., "Key words for use in
                                    RFCs to Indicate Requirement
                                    Levels", BCP 14, EFC 2119,
                                    March 1997.

   [RFC2578]                        McCloghrie, K., Ed., Perkins, D.,
                                    Ed., and J. Schoenwaelder, Ed.,
                                    "Structure of Management Information
                                    Version 2 (SMIv2)", STD 58,
                                    RFC 2578, April 1999.

   [RFC2579]                        McCloghrie, K., Ed., Perkins, D.,
                                    Ed., and J. Schoenwaelder, Ed.,



Fan & Meng              Expires November 2, 2009               [Page 17]


Internet-Draft           A lock feature to SNMP                 May 2009


                                    "Textual Conventions for SMIv2",
                                    STD 58, RFC 2579, April 1999.

   [RFC2580]                        McCloghrie, K., Perkins, D., and J.
                                    Schoenwaelder, "Conformance
                                    Statements for SMIv2", STD 58,
                                    RFC 2580, April 1999.

   [RFC3411]                        Harrington, D., Presuhn, R., and B.
                                    Wijnen, "An Architecture for
                                    Describing Simple Network Management
                                    Protocol (SNMP) Management
                                    Frameworks", STD 62, RFC 3411,
                                    December 2002.

   [RFC3415]                        Wijnen, B., Presuhn , R., and K.
                                    McCloghrie, "View-based Access
                                    Control Model (VACM) for the Simple
                                    Network Management Protocol (SNMP)",
                                    RFC 3415, December 2002.

   [RFC3416]                        Presuhn, R., "Version 2 of the
                                    Protocol Operations for the Simple
                                    Network Management Protocol (SNMP)",
                                    STD 62, RFC 3416, December 2002.

11.2.  Informative References

   [I-D.ietf-netconf-partial-lock]  Lengyel, B. and M. Bjorklund,
                                    "Partial Lock RPC for NETCONF",
                                    Feburary 2009.

   [RFC3410]                        Case, J., Mundy, R., Partain, D.,
                                    and B. Stewart, "Introduction and
                                    Applicability Statements for
                                    Internet-Standard Management
                                    Framework", RFC 3410, December 2002.

   [RFC4741]                        Enns, R., Ed., "NETCONF
                                    Configuration Protocol", RFC 4741,
                                    December 2006.










Fan & Meng              Expires November 2, 2009               [Page 18]


Internet-Draft           A lock feature to SNMP                 May 2009


Authors' Addresses

   Washam Fan
   Huawei-Symantec Technologies
   3rd Floor, Section D, Keshi Building
   No.28, Xinxi Rd., Shangdi, Haidian Dist.
   Beijing  100085
   China

   EMail: Washam.Fan@huaweisymantec.com
   URI:   http://www.huaweisymantec.com


   Tony Meng
   Huawei-Symantec Technologies
   3rd Floor, Section D, Keshi Building
   No.28, Xinxi Rd., Shangdi, Haidian Dist.
   Beijing  100085
   China

   EMail: mengjian@huaweisymantec.com
   URI:   http://www.huaweisymantec.com





























Fan & Meng              Expires November 2, 2009               [Page 19]