Internet Engineering Task Force (IETF)
Request for Comments: 7388
Category: Standards Track
ISSN: 2070-1721
J. Schoenwaelder
A. Sehgal
Jacobs University
T. Tsou
C. Zhou
Huawei Technologies
October 2014

Definition of Managed Objects for

IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)

Abstract

This document defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it defines objects for managing IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs).

Status of This Memo

This is an Internet Standards Track document.

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7388.

Copyright Notice

Copyright © 2014 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 Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

Table of Contents

   1. Introduction ....................................................2
   2. The Internet-Standard Management Framework ......................2
   3. Conventions .....................................................3
   4. Overview ........................................................3
   5. Relationship to Other MIB Modules ...............................7
   6. Definitions .....................................................7
   7. Security Considerations ........................................24
   8. IANA Considerations ............................................25
   9. References .....................................................25
      9.1. Normative References ......................................25
      9.2. Informative References ....................................26
   Acknowledgements ..................................................27
   Authors' Addresses ................................................27

1. Introduction

This document defines a portion of the Management Information Base (MIB) for use with network management protocols. In particular it defines objects for managing IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) [RFC4944].

While a MIB module provides a direct binding for accessing data via the Simple Network Management Protocol (SNMP) [RFC3410], supporting SNMP may not always be affordable on constrained devices. Other protocols to access data modeled in MIB modules are possible and proposals have been made recently to provide bindings to the Constrained Application Protocol (CoAP) [RFC7252].

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 document 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

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

4. Overview

The left part of Figure 1 provides an overview of the IETF protocols designed for constrained devices. The right part lists the MIB modules providing monitoring and troubleshooting support ([RFC4113], [RFC4292], [RFC4293], and [RFC2863]). The LOWPAN-MIB defined in this document fills a hole by providing monitoring and troubleshooting support for the 6LoWPAN layer.

          Protocol Layer                    MIB Modules
      +--------------------+
      |   CoAP   [RFC7252] |
      +--------------------+       +--------------------------+
      |    UDP   [RFC0768] |       | UDP-MIB        [RFC4113] |
      +--------------------+       +--------------------------+
      |   IPv6   [RFC2460] |       | IP-MIB         [RFC4293] |
      |  ICMPv6  [RFC4443] |       | IP-FORWARD-MIB [RFC4292] |
      +--------------------+       +--------------------------+
      |  6LoWPAN [RFC4944] |       | LOWPAN-MIB     [RFC7388] |
      +--------------------+       +--------------------------+
                                   | IF-MIB         [RFC2863] |
      +--------------------+       +--------------------------+
      | IEEE 802.15.4, ... |
      +--------------------+

Figure 1: Protocol Layers and MIB Modules

The LOWPAN-MIB module is primarily a collection of counters that reflect how 6LoWPAN datagrams are processed by the 6LoWPAN layer. The objects are defined twice: once to report the global statistics as seen by the 6LoWPAN layer and once to report per-interface 6LoWPAN layer statistics. The per-interface statistics are optional to implement. The object identifier registration tree has the following structure:

   ---- lowpanMIB(1.3.6.1.2.1.226)
   
     +---- lowpanNotifications(0)
     +---- lowpanObjects(1)
     |  +---- lowpanStats(1)
     |  |  +--r- lowpanReasmTimeout(1)            Unsigned32
     |  |  +--r- lowpanInReceives(2)              Counter32
     |  |  +--r- lowpanInHdrErrors(3)             Counter32
     |  |  +--r- lowpanInMeshReceives(4)          Counter32
     |  |  +--r- lowpanInMeshForwds(5)            Counter32
     |  |  +--r- lowpanInMeshDelivers(6)          Counter32
     |  |  +--r- lowpanInReasmReqds(7)            Counter32
     |  |  +--r- lowpanInReasmFails(8)            Counter32
     |  |  +--r- lowpanInReasmOKs(9)              Counter32
     |  |  +--r- lowpanInCompReqds(10)            Counter32
     |  |  +--r- lowpanInCompFails(11)            Counter32
     |  |  +--r- lowpanInCompOKs(12)              Counter32
     |  |  +--r- lowpanInDiscards(13)             Counter32
     |  |  +--r- lowpanInDelivers(14)             Counter32
     |  |  +--r- lowpanOutRequests(15)            Counter32
     |  |  +--r- lowpanOutCompReqds(16)           Counter32
     |  |  +--r- lowpanOutCompFails(17)           Counter32
     |  |  +--r- lowpanOutCompOKs(18)             Counter32
     |  |  +--r- lowpanOutFragReqds(19)           Counter32
     |  |  +--r- lowpanOutFragFails(20)           Counter32
     |  |  +--r- lowpanOutFragOKs(21)             Counter32
     |  |  +--r- lowpanOutFragCreates(22)         Counter32
     |  |  +--r- lowpanOutMeshHopLimitExceeds(23) Counter32
     |  |  +--r- lowpanOutMeshNoRoutes(24)        Counter32
     |  |  +--r- lowpanOutMeshRequests(25)        Counter32
     |  |  +--r- lowpanOutMeshForwds(26)          Counter32
     |  |  +--r- lowpanOutMeshTransmits(27)       Counter32
     |  |  +--r- lowpanOutDiscards(28)            Counter32
     |  |  +--r- lowpanOutTransmits(29)           Counter32
     |  +---- lowpanIfStatsTable(2)
     |     +---- lowpanIfStatsEntry(1) [ifIndex]
     |        +--r- lowpanIfReasmTimeout(1)            Unsigned32
     |        +--r- lowpanIfInReceives(2)              Counter32
     |        +--r- lowpanIfInHdrErrors(3)             Counter32
     |        +--r- lowpanIfInMeshReceives(4)          Counter32
     |        +--r- lowpanIfInMeshForwds(5)            Counter32
     |        +--r- lowpanIfInMeshDelivers(6)          Counter32
     |        +--r- lowpanIfInReasmReqds(7)            Counter32
     |        +--r- lowpanIfInReasmFails(8)            Counter32
     |        +--r- lowpanIfInReasmOKs(9)              Counter32
     |        +--r- lowpanIfInCompReqds(10)            Counter32
     |        +--r- lowpanIfInCompFails(11)            Counter32
     |        +--r- lowpanIfInCompOKs(12)              Counter32
     |        +--r- lowpanIfInDiscards(13)             Counter32
     |        +--r- lowpanIfInDelivers(14)             Counter32
     |        +--r- lowpanIfOutRequests(15)            Counter32
     |        +--r- lowpanIfOutCompReqds(16)           Counter32
     |        +--r- lowpanIfOutCompFails(17)           Counter32
     |        +--r- lowpanIfOutCompOKs(18)             Counter32
     |        +--r- lowpanIfOutFragReqds(19)           Counter32
     |        +--r- lowpanIfOutFragFails(20)           Counter32
     |        +--r- lowpanIfOutFragOKs(21)             Counter32
     |        +--r- lowpanIfOutFragCreates(22)         Counter32
     |        +--r- lowpanIfOutMeshHopLimitExceeds(23) Counter32
     |        +--r- lowpanIfOutMeshNoRoutes(24)        Counter32
     |        +--r- lowpanIfOutMeshRequests(25)        Counter32
     |        +--r- lowpanIfOutMeshForwds(26)          Counter32
     |        +--r- lowpanIfOutMeshTransmits(27)       Counter32
     |        +--r- lowpanIfOutDiscards(28)            Counter32
     |        +--r- lowpanIfOutTransmits(29)           Counter32
     +---- lowpanConformance(2)
        +---- lowpanGroups(1)
        |  +---- lowpanStatsGroup(1)
        |  +---- lowpanStatsMeshGroup(2)
        |  +---- lowpanIfStatsGroup(3)
        |  +---- lowpanIfStatsMeshGroup(4)
        +---- lowpanCompliances(2)
           +---- lowpanCompliance(1)

Figure 2: Object Identifier Registration Tree

The counters defined in the LOWPAN-MIB module provide information about the 6LoWPAN datagrams received and transmitted and how they are processed in the 6LoWPAN layer. For link layers that use the 6LoWPAN dispatch byte as defined in [RFC4944] (e.g., IEEE 802.15.4), a 6LoWPAN datagram is a datagram with a dispatch byte matching the bit patterns 01xxxxxx, 10xxxxxx, or 11xxxxxx. Datagrams with a dispatch byte matching the bit pattern 00xxxxxx (NALP - not a LoWPAN frame) are not considered to be 6LoWPAN datagrams by this specification. Other radio technologies may use different mechanisms to identify 6LoWPAN datagrams (e.g., the BLUETOOTH Low-Energy Logical Link Control and Adaptation Protocol uses Channel Identifiers [IPV6-BTLE]).

The Case Diagram [CASE] in Figure 3 illustrates the conceptual relationships between the counters. Implementations may choose to implement the processing of 6LoWPAN datagrams in a different order.

The generic InDiscards and OutDiscards counters can be incremented anytime 6LoWPAN datagrams are discarded due to reasons not covered by the other more specific counters. For example, an implementation discarding 6LoWPAN datagrams while all buffers are used for ongoing packet reassemblies will increment the relevant InDiscards counters for each discarded 6LoWPAN datagram.

                             IPv6 layer
                         ^               v
     InDelivers         -+-             -+-       OutRequests
                         |               |
     InDiscards       <--+               |
                         |               |
     InCompOKs       .-->|               |-->.    OutCompReqds
     InCompFails  <--|   |               |   +--> OutCompFails
     InCompReqds     `<--+               +<--'    OutCompOKs
                         |               |
                         |               +-->.    OutFragReqds
     InReasmOKs      .-->|               |   +--> OutFragFails
     InReasmFails <--|   |               |  -+-   OutFragOKs
     InReasmReqds    `<--+               +<--'    OutFragCreates
                         |               |
                         |               |
     InMeshDelivers      |<--.           |
     InMeshForwds        |   |-->.       |
     InMeshReceives      +-->'   |       |
                         |       +-->    |        OutMeshHopLimitExceeds
                         |       +-->    |        OutMeshNoRoutes
                         |       |       |
                         |       |   .<--+        OutMeshRequests
                         |       `-->|   |        OutMeshForwds
                         |           `-->|        OutMeshTransmits
                         |               |
     InHdrErrors      <--+               +-->     OutDiscards
                         |               |
     InReceives         -+-             -+-       OutTransmits
                         ^               v
                          interface layer

Figure 3: Conceptual Relationship between LOWPAN-MIB Counters

The fragmentation-related counters have been modeled after the fragmentation-related counters of the IP-MIB [RFC4293]. The discard counters have been placed at the end of the input and output chains, but they can be bumped any time if a datagram is discarded for a reason not covered by the other counters.

The compression-related counters provide insights into compression requests and, in particular, compression-related failures. Note that the diagram is conceptual in the sense that compression happens after reassembly for incoming 6LoWPAN datagrams, and compression happens before fragmentation for outgoing 6LoWPAN datagrams. Implementations may choose to implement things slightly differently. For example, implementations may decompress FRAG1 fragments as soon as they are received, not waiting for reassembly to complete.

The counters related to MESH header processing do not have an explicit discard counter. Implementations that do not support mesh forwarding MUST count the number of received 6LoWPAN datagrams with a MESH header (lowpanInMeshReceives), but they MUST NOT increment the lowpanInMeshReceives and lowpanInMeshDelivers counters if these 6LoWPAN datagrams are dropped.

5. Relationship to Other MIB Modules

   The MIB module imports definitions from SNMPv2-SMI [RFC2578],
   SNMPv2-CONF [RFC2580], and IF-MIB [RFC2863].

6. Definitions

LOWPAN-MIB DEFINITIONS ::= BEGIN

IMPORTS

       MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Counter32, mib-2
           FROM SNMPv2-SMI                                 -- RFC 2578
       OBJECT-GROUP, MODULE-COMPLIANCE
           FROM SNMPv2-CONF                                -- RFC 2580
       ifIndex FROM IF-MIB;                                -- RFC 2863
   
   lowpanMIB    MODULE-IDENTITY
       LAST-UPDATED    "201410100000Z"  -- October 10, 2014
       ORGANIZATION
           "IETF IPv6 over Networks of Resource-constrained Nodes
            Working Group"
       CONTACT-INFO
           "WG Email: 6lo@ietf.org
            WG Web:   http://tools.ietf.org/wg/6lo/
   
            Juergen Schoenwaelder
            Jacobs University Bremen
            Email: j.schoenwaelder@jacobs-university.de
   
            Anuj Sehgal
            Jacobs University Bremen
            Email: s.anuj@jacobs-university.de
   
            Tina Tsou
            Huawei Technologies
            Email: tina.tsou.zouting@huawei.com
   
            Cathy Zhou
            Huawei Technologies
            Email: cathyzhou@huawei.com"
       DESCRIPTION
           "The MIB module for monitoring nodes implementing the IPv6
            over Low-Power Wireless Personal Area Networks (6LoWPAN)
            protocol.

Copyright © 2014 IETF Trust and the persons identified as authors of the code. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."

       REVISION "201410100000Z" -- October 10, 2014
       DESCRIPTION
           "Initial version, published as RFC 7388."
       
       ::= { mib-2 226 }
   
   -- object definitions
   
   lowpanNotifications     OBJECT IDENTIFIER ::= { lowpanMIB 0 }
   lowpanObjects           OBJECT IDENTIFIER ::= { lowpanMIB 1 }
   lowpanConformance       OBJECT IDENTIFIER ::= { lowpanMIB 2 }
   
   lowpanStats             OBJECT IDENTIFIER ::= { lowpanObjects 1 }

lowpanReasmTimeout OBJECT-TYPE

       SYNTAX      Unsigned32
       UNITS       "seconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The maximum number of seconds that received fragments are
            held while they are awaiting reassembly at this entity."
       ::= { lowpanStats 1 }

lowpanInReceives OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of 6LoWPAN datagrams received, including
            those received in error."
       ::= { lowpanStats 2 }

lowpanInHdrErrors OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of received 6LoWPAN datagrams discarded due to
            errors in their headers, including unknown dispatch values."
       ::= { lowpanStats 3 }

lowpanInMeshReceives OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of received 6LoWPAN datagrams with a MESH
            header."
       ::= { lowpanStats 4 }

lowpanInMeshForwds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of received 6LoWPAN datagrams requiring mesh
            forwarding."
       ::= { lowpanStats 5 }

lowpanInMeshDelivers OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of received 6LoWPAN datagrams with a MESH header
            delivered to the local system."
       ::= { lowpanStats 6 }

lowpanInReasmReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of received 6LoWPAN fragments that needed to
            be reassembled.  This includes both FRAG1 and FRAGN 6LoWPAN
            datagrams."
       ::= { lowpanStats 7 }

lowpanInReasmFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of failures detected by the re-assembly
            algorithm (e.g., timeouts).  Note that this is not
            necessarily a count of discarded 6LoWPAN fragments
            since implementations can lose track of the number
            of fragments by combining them as received."
       ::= { lowpanStats 8 }

lowpanInReasmOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets successfully reassembled."
       ::= { lowpanStats 9 }

lowpanInCompReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams requiring header
            decompression."
       ::= { lowpanStats 10 }

lowpanInCompFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams where header decompression
            failed (e.g., because the necessary context information was
            not available)."
       ::= { lowpanStats 11 }

lowpanInCompOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams where header decompression
            was successful."
       ::= { lowpanStats 12 }

lowpanInDiscards OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of received 6LoWPAN datagrams that were
            discarded (e.g., for lack of buffer space) even though no
            problems were encountered to prevent their continued
            processing.  Note that this counter does not include any
            datagrams discarded due to a reassembly failure or a
            compression failure."
       ::= { lowpanStats 13 }

lowpanInDelivers OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets successfully delivered
            to the IPv6 layer."
       ::= { lowpanStats 14 }

lowpanOutRequests OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets supplied by the IPv6
            layer."
       ::= { lowpanStats 15 }

lowpanOutCompReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets for which header
            compression was attempted."
       ::= { lowpanStats 16 }

lowpanOutCompFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets for which header
            compression failed."
       ::= { lowpanStats 17 }

lowpanOutCompOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets for which header
            compression was successful."
       ::= { lowpanStats 18 }

lowpanOutFragReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets that required fragmentation
            in order to be transmitted."
       ::= { lowpanStats 19 }

lowpanOutFragFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets that have been discarded because
            fragmentation failed."
       ::= { lowpanStats 20 }

lowpanOutFragOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets that have been successfully
            fragmented."
       ::= { lowpanStats 21 }

lowpanOutFragCreates OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN fragments that have been
            generated as a result of fragmentation.  This includes
            both FRAG1 and FRAGN 6LoWPAN datagrams."
       ::= { lowpanStats 22 }

lowpanOutMeshHopLimitExceeds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams with a MESH header that
            were dropped because the hop limit was exceeded."
       ::= { lowpanStats 23 }

lowpanOutMeshNoRoutes OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams with a MESH header that
            were dropped because there was no forwarding information
            available."
       ::= { lowpanStats 24 }

lowpanOutMeshRequests OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams requiring MESH header
            encapsulation."
       ::= { lowpanStats 25 }

lowpanOutMeshForwds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams with a MESH header for
            which suitable forwarding information was available."
       ::= { lowpanStats 26 }

lowpanOutMeshTransmits OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams with a MESH header
            created."
       ::= { lowpanStats 27 }

lowpanOutDiscards OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets that were discarded (e.g.,
            for lack of buffer space) even though no problem was
            encountered to prevent their transmission to their
            destination."
       ::= { lowpanStats 28 }

lowpanOutTransmits OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of 6LoWPAN datagram that this entity
            supplied to the lower layers for transmission."
       ::= { lowpanStats 29 }

lowpanIfStatsTable OBJECT-TYPE

       SYNTAX      SEQUENCE OF LowpanIfStatsEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "A table providing per-interface statistics."
       ::= { lowpanObjects 2 }

lowpanIfStatsEntry OBJECT-TYPE

       SYNTAX      LowpanIfStatsEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "An entry providing statistics for a specific interface."
       INDEX       { ifIndex }
       ::= { lowpanIfStatsTable 1 }

LowpanIfStatsEntry ::= SEQUENCE {

       lowpanIfReasmTimeout           Unsigned32,
       lowpanIfInReceives             Counter32,
       lowpanIfInHdrErrors            Counter32,
       lowpanIfInMeshReceives         Counter32,
       lowpanIfInMeshForwds           Counter32,
   
       lowpanIfInMeshDelivers         Counter32,
       lowpanIfInReasmReqds           Counter32,
       lowpanIfInReasmFails           Counter32,
       lowpanIfInReasmOKs             Counter32,
       lowpanIfInCompReqds            Counter32,
       lowpanIfInCompFails            Counter32,
       lowpanIfInCompOKs              Counter32,
       lowpanIfInDiscards             Counter32,
       lowpanIfInDelivers             Counter32,
       lowpanIfOutRequests            Counter32,
       lowpanIfOutCompReqds           Counter32,
       lowpanIfOutCompFails           Counter32,
       lowpanIfOutCompOKs             Counter32,
       lowpanIfOutFragReqds           Counter32,
       lowpanIfOutFragFails           Counter32,
       lowpanIfOutFragOKs             Counter32,
       lowpanIfOutFragCreates         Counter32,
       lowpanIfOutMeshHopLimitExceeds Counter32,
       lowpanIfOutMeshNoRoutes        Counter32,
       lowpanIfOutMeshRequests        Counter32,
       lowpanIfOutMeshForwds          Counter32,
       lowpanIfOutMeshTransmits       Counter32,
       lowpanIfOutDiscards            Counter32,
       lowpanIfOutTransmits           Counter32
   }

lowpanIfReasmTimeout OBJECT-TYPE

       SYNTAX      Unsigned32
       UNITS       "seconds"
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The maximum number of seconds that received fragments are
            held while they are awaiting reassembly at this interface."
       ::= { lowpanIfStatsEntry 1 }

lowpanIfInReceives OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of 6LoWPAN datagrams received on this
            interface, including those received in error."
       ::= { lowpanIfStatsEntry 2 }

lowpanIfInHdrErrors OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface that were discarded due to errors in
            their headers, including unknown dispatch values."
       ::= { lowpanIfStatsEntry 3 }

lowpanIfInMeshReceives OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface with a MESH header."
       ::= { lowpanIfStatsEntry 4 }

lowpanIfInMeshForwds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface requiring mesh forwarding."
       ::= { lowpanIfStatsEntry 5 }

lowpanIfInMeshDelivers OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface with a MESH header delivered to the local
            system."
       ::= { lowpanIfStatsEntry 6 }

lowpanIfInReasmReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN fragments received on this
            interface that needed to be reassembled.  This
            includes both FRAG1 and FRAGN 6LoWPAN datagrams."
       ::= { lowpanIfStatsEntry 7 }

lowpanIfInReasmFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of failures detected by the reassembly
            algorithm (e.g., timeouts) for datagrams received
            on this interface.  Note that this is not necessarily
            a count of discarded 6LoWPAN fragments since
            implementations can lose track of the number
            of fragments by combining them as received."
       ::= { lowpanIfStatsEntry 8 }

lowpanIfInReasmOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets successfully reassembled
            from fragments received on this interface."
       ::= { lowpanIfStatsEntry 9 }

lowpanIfInCompReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface requiring header decompression."
       ::= { lowpanIfStatsEntry 10 }

lowpanIfInCompFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface where header decompression failed (e.g.,
            because the necessary context information was
            not available)."
       ::= { lowpanIfStatsEntry 11 }

lowpanIfInCompOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface where header decompression was successful."
       ::= { lowpanIfStatsEntry 12 }

lowpanIfInDiscards OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams received on this
            interface that were discarded (e.g., for lack of buffer
            space) even though no problems were encountered to
            prevent their continued processing.  Note that this
            counter does not include any datagrams discarded due
            to a reassembly failure or a compression failure."
       ::= { lowpanIfStatsEntry 13 }

lowpanIfInDelivers OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets received on this
            interface that were successfully delivered to the
            IPv6 layer."
       ::= { lowpanIfStatsEntry 14 }

lowpanIfOutRequests OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets supplied by the IPv6
            layer to be sent over this interface."
       ::= { lowpanIfStatsEntry 15 }

lowpanIfOutCompReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets to be sent over
            this interface for which header compression was
            attempted."
       ::= { lowpanIfStatsEntry 16 }

lowpanIfOutCompFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets to be sent over
            this interface for which header compression failed."
       ::= { lowpanIfStatsEntry 17 }

lowpanIfOutCompOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of IPv6 packets to be sent over
            this interface for which header compression was
            successful."
       ::= { lowpanIfStatsEntry 18 }

lowpanIfOutFragReqds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets to be sent over this
            interface that required fragmentation in order
            to be transmitted."
       ::= { lowpanIfStatsEntry 19 }

lowpanIfOutFragFails OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets to be sent over this
            interface that have been discarded because
            fragmentation failed."
       ::= { lowpanIfStatsEntry 20 }

lowpanIfOutFragOKs OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets to be sent over this
            interface that have been successfully fragmented."
       ::= { lowpanIfStatsEntry 21 }

lowpanIfOutFragCreates OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN fragments that have been
            generated on this interface as a result of
            fragmentation.  This includes both FRAG1 and FRAGN
            6LoWPAN datagrams."
       ::= { lowpanIfStatsEntry 22 }

lowpanIfOutMeshHopLimitExceeds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams to be sent on this
            interface with a MESH header that were dropped
            because the hop limit was exceeded."
       ::= { lowpanIfStatsEntry 23 }

lowpanIfOutMeshNoRoutes OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams to be sent on this
            interface with a MESH header that were dropped
            because there was no forwarding information available."
       ::= { lowpanIfStatsEntry 24 }

lowpanIfOutMeshRequests OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams to be sent on this
            interface requiring MESH header encapsulation."
       ::= { lowpanIfStatsEntry 25 }

lowpanIfOutMeshForwds OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams to be sent on this
            interface with a MESH header for which suitable
            forwarding information was available."
       ::= { lowpanIfStatsEntry 26 }

lowpanIfOutMeshTransmits OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of 6LoWPAN datagrams to be sent on this
            interface with a MESH header created."
       ::= { lowpanIfStatsEntry 27 }

lowpanIfOutDiscards OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The number of IPv6 packets to be sent over this
            interface that were discarded (e.g., for lack of buffer
            space) even though no problem was encountered to
            prevent their transmission to their destination."
       ::= { lowpanIfStatsEntry 28 }

lowpanIfOutTransmits OBJECT-TYPE

       SYNTAX      Counter32
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The total number of 6LoWPAN datagrams to be sent on
            this interface that this entity supplied to the lower
            layers for transmission."
       ::= { lowpanIfStatsEntry 29 }
   
   -- conformance definitions
   
   lowpanGroups      OBJECT IDENTIFIER ::= { lowpanConformance 1 }
   lowpanCompliances OBJECT IDENTIFIER ::= { lowpanConformance 2 }

lowpanCompliance MODULE-COMPLIANCE

       STATUS      current
       DESCRIPTION
           "Compliance statement for systems that implement 6LoWPAN."
       MODULE      -- this module
       MANDATORY-GROUPS {
           lowpanStatsGroup
       }
       GROUP       lowpanStatsMeshGroup
       DESCRIPTION
         "This group is mandatory for implementations that process
          or forward 6LoWPAN datagrams with a MESH header."
       GROUP       lowpanIfStatsGroup
       DESCRIPTION
         "This group is mandatory for implementations that expose
          per-interface statistics."
       GROUP       lowpanIfStatsMeshGroup
       DESCRIPTION
         "This group is mandatory for implementations that expose
          per-interface statistics and that process or forward
          6LoWPAN datagrams with a MESH header."
       ::= { lowpanCompliances 1 }

lowpanStatsGroup OBJECT-GROUP

       OBJECTS {
           lowpanReasmTimeout,
           lowpanInReceives,
           lowpanInHdrErrors,
           lowpanInMeshReceives,
           lowpanInReasmReqds,
           lowpanInReasmFails,
           lowpanInReasmOKs,
           lowpanInCompReqds,
           lowpanInCompFails,
           lowpanInCompOKs,
           lowpanInDiscards,
           lowpanInDelivers,
           lowpanOutRequests,
           lowpanOutCompReqds,
           lowpanOutCompFails,
           lowpanOutCompOKs,
           lowpanOutFragReqds,
           lowpanOutFragFails,
           lowpanOutFragOKs,
           lowpanOutFragCreates,
           lowpanOutDiscards,
           lowpanOutTransmits
       }
       STATUS      current
       DESCRIPTION
           "A collection of objects providing information and
            statistics about the processing of 6LoWPAN datagrams,
            excluding counters covering the processing of datagrams
            with a MESH header."
       ::= { lowpanGroups 1 }

lowpanStatsMeshGroup OBJECT-GROUP

OBJECTS {

lowpanInMeshForwds,
lowpanInMeshDelivers,
lowpanOutMeshHopLimitExceeds,

           lowpanOutMeshNoRoutes,
           lowpanOutMeshRequests,
           lowpanOutMeshForwds,
           lowpanOutMeshTransmits
       }
       STATUS      current
       DESCRIPTION
           "A collection of objects providing information and
            statistics about the processing of 6LoWPAN datagrams
            with a MESH header."
       ::= { lowpanGroups 2 }

lowpanIfStatsGroup OBJECT-GROUP

       OBJECTS {
           lowpanIfReasmTimeout,
           lowpanIfInReceives,
           lowpanIfInHdrErrors,
           lowpanIfInMeshReceives,
           lowpanIfInReasmReqds,
           lowpanIfInReasmFails,
           lowpanIfInReasmOKs,
           lowpanIfInCompReqds,
           lowpanIfInCompFails,
           lowpanIfInCompOKs,
           lowpanIfInDiscards,
           lowpanIfInDelivers,
           lowpanIfOutRequests,
           lowpanIfOutCompReqds,
           lowpanIfOutCompFails,
           lowpanIfOutCompOKs,
           lowpanIfOutFragReqds,
           lowpanIfOutFragFails,
           lowpanIfOutFragOKs,
           lowpanIfOutFragCreates,
           lowpanIfOutDiscards,
           lowpanIfOutTransmits
       }
       STATUS      current
       DESCRIPTION
           "A collection of objects providing per-interface
            information and statistics about the processing
            of 6LoWPAN datagrams, excluding counters covering
            the processing of datagrams with a MESH header."
       ::= { lowpanGroups 3 }

lowpanIfStatsMeshGroup OBJECT-GROUP

       OBJECTS {
           lowpanIfInMeshForwds,
           lowpanIfInMeshDelivers,
           lowpanIfOutMeshHopLimitExceeds,
           lowpanIfOutMeshNoRoutes,
           lowpanIfOutMeshRequests,
           lowpanIfOutMeshForwds,
           lowpanIfOutMeshTransmits
       }
       STATUS      current
       DESCRIPTION
           "A collection of objects providing per-interface
            information and statistics about the processing
            of 6LoWPAN datagrams with a MESH header."
       ::= { lowpanGroups 4 }
   
   END

7. Security Considerations

There are no management objects defined in this MIB module that have a MAX-ACCESS clause of read-write and/or read-create. So, if this MIB module is implemented correctly, then there is no risk that an intruder can alter or create any management objects of this MIB module via direct SNMP SET operations.

Some of the readable objects in this MIB module (i.e., objects with a MAX-ACCESS other than not-accessible) may be considered sensitive or vulnerable in some network environments. It is thus important to control even GET and/or NOTIFY access to these objects and possibly to even encrypt the values of these objects when sending them over the network via SNMP.

The read-only counters provide insights into the amount of 6LoWPAN traffic a node is receiving or transmitting. This might provide information regarding whether a device is regularly exchanging information with other devices or whether a device is mostly not participating in any communication (e.g., the device might be "easier" to take away unnoticed). The reassembly counters could be used to direct denial-of-service attacks on the reassembly mechanism.

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.

8. IANA Considerations

The MIB module in this document uses the following IANA-assigned OBJECT IDENTIFIER value recorded in the SMI Numbers registry:

           Descriptor        OBJECT IDENTIFIER value
           ----------        -----------------------
           lowpanMIB         { mib-2 226 }

9. References

9.1. Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.
   
   [RFC2578]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Structure of Management Information
              Version 2 (SMIv2)", STD 58, RFC 2578, April 1999,
              <http://www.rfc-editor.org/info/rfc2578>.
   
   [RFC2579]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "Textual Conventions for SMIv2", STD
              58, RFC 2579, April 1999,
              <http://www.rfc-editor.org/info/rfc2579>.
   
   [RFC2580]  McCloghrie, K., Perkins, D., and J. Schoenwaelder,
              "Conformance Statements for SMIv2", STD 58, RFC 2580,
              April 1999, <http://www.rfc-editor.org/info/rfc2580>.
   
   [RFC2863]  McCloghrie, K. and F. Kastenholz, "The Interfaces Group
              MIB", RFC 2863, June 2000,
              <http://www.rfc-editor.org/info/rfc2863>.
   
   [RFC4944]  Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler,
              "Transmission of IPv6 Packets over IEEE 802.15.4
              Networks", RFC 4944, September 2007,
              <http://www.rfc-editor.org/info/rfc4944>.

9.2. Informative References

   [CASE]     Case, J. and C. Partridge, "Case Diagrams: A First Step to
              Diagrammed Management Information Bases", Computer
              Communications Review 19(1), January 1989.

[IPV6-BTLE]

              Nieminen, J., Savolainen, T., Isomaki, M., Patil, B.,
              Shelby, Z., and C. Gomez, "Transmission of IPv6 Packets
              over BLUETOOTH(R) Low Energy", Work in Progress, draft-
              ietf-6lo-btle-03, September 2014.
   
   [RFC0768]  Postel, J., "User Datagram Protocol", STD 6, RFC 768,
              August 1980, <http://www.rfc-editor.org/info/rfc768>.
   
   [RFC2460]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
              (IPv6) Specification", RFC 2460, December 1998,
              <http://www.rfc-editor.org/info/rfc2460>.
   
   [RFC3410]  Case, J., Mundy, R., Partain, D., and B. Stewart,
              "Introduction and Applicability Statements for Internet-
              Standard Management Framework", RFC 3410, December 2002,
              <http://www.rfc-editor.org/info/rfc3410>.
   
   [RFC4113]  Fenner, B. and J. Flick, "Management Information Base for
              the User Datagram Protocol (UDP)", RFC 4113, June 2005,
              <http://www.rfc-editor.org/info/rfc4113>.
   
   [RFC4292]  Haberman, B., "IP Forwarding Table MIB", RFC 4292, April
              2006, <http://www.rfc-editor.org/info/rfc4292>.
   
   [RFC4293]  Routhier, S., "Management Information Base for the
              Internet Protocol (IP)", RFC 4293, April 2006,
              <http://www.rfc-editor.org/info/rfc4293>.
   
   [RFC4443]  Conta, A., Deering, S., and M. Gupta, "Internet Control
              Message Protocol (ICMPv6) for the Internet Protocol
              Version 6 (IPv6) Specification", RFC 4443, March 2006,
              <http://www.rfc-editor.org/info/rfc4443>.
   
   [RFC7252]  Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
              Application Protocol (CoAP)", RFC 7252, June 2014,
              <http://www.rfc-editor.org/info/rfc7252>.

Acknowledgements

This specification borrows heavily from the IP-MIB defined in [RFC4293].

Juergen Schoenwaelder and Anuj Sehgal were partly funded by Flamingo, a Network of Excellence project (ICT-318488) supported by the European Commission under its Seventh Framework Programme.

Authors' Addresses

   Juergen Schoenwaelder
   Jacobs University
   Campus Ring 1
   Bremen  28759
   Germany
   
   EMail: j.schoenwaelder@jacobs-university.de
   
   Anuj Sehgal
   Jacobs University
   Campus Ring 1
   Bremen  28759
   Germany
   
   EMail: s.anuj@jacobs-university.de
   
   Tina Tsou
   Huawei Technologies
   2330 Central Expressway
   Santa Clara  CA 95050
   United States
   
   EMail: tina.tsou.zouting@huawei.com
   
   Cathy Zhou
   Huawei Technologies
   Bantian, Longgang District
   Shenzhen  518129
   China

EMail:

          cathyzhou@huawei.com