-- *****************************************************************
-- DTI-MIB.my:
--   
-- Mar 2007 Baoli Chen
--   
-- Initial Version: July 2006: DTI-MIB-I03-060728.txt
--   
-- Copyright (c) 2007-2009 by cisco Systems Inc.
-- All rights reserved.
-- *****************************************************************

DTI-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    Integer32,
    Unsigned32,
    Counter32,
    OBJECT-TYPE
        FROM SNMPv2-SMI
    OBJECT-GROUP,
    MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    TruthValue,
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    InetAddressType,
    InetAddress
        FROM INET-ADDRESS-MIB
    ifIndex
        FROM IF-MIB
    PhysicalIndex
        FROM ENTITY-MIB
    clabProjDocsis
        FROM CLAB-DEF-MIB;


dtiMib MODULE-IDENTITY
    LAST-UPDATED    "200606280000Z"
    ORGANIZATION    "CableLabs Cable Television Laboratories, Inc"
    CONTACT-INFO
            "Postal: Cable Television Laboratories, Inc
            858 Coal Creek Circle
            Louisville, CO 80027
            U.S.A.
            Phone:  +1 303-661-9100
            Fax:    +1 303-661-9199
            E-mail: mibs@cablelabs.com"
    DESCRIPTION
        "This MIB module provides the management objects necessary
        to configure and manage the DOCSIS Timing Interface 
        devices."
    REVISION        "200606280000Z"
    DESCRIPTION
        "Revised Version
        includes ECN M-OSSI-N-06.0278-4"
    REVISION        "200508050000Z"
    DESCRIPTION
        "Initial version of the DTI MIB module.
        This revision is published as part of the CableLabs 
        M-CMTS specification.
        Copyright 2005 Cable Television Laboratories, Inc.
        All rights reserved."
    ::= { clabProjDocsis 7 }



-- Textual Conventions

DtiCableAdvance ::= TEXTUAL-CONVENTION
    DISPLAY-HINT    "2d-1d"
    STATUS          current
    DESCRIPTION
        "The early time adjustment the Client applies to the
        DTI timing frame to mitigate the propagation delay 
        between the DTI server and client.  The cable advance
        value is calculated by the DTI server and sent to the 
        DTI client.

        The DTI cable Advance is a 24-bit field.  The first two 
        bytes represent the integer value of the 149.8 MHz sample 
        clock cycles that measure the Cable advance value; the 
        third octet represents the remaining fraction of the cable 
        advance value in units of the 256th of the 149.8 MHz 
        clock cycle."
    SYNTAX          OCTET STRING (SIZE (3))
-- Administrative assignments

dtiNotifications  OBJECT IDENTIFIER
    ::= { dtiMib 0 }

dtiMibObjects  OBJECT IDENTIFIER
    ::= { dtiMib 1 }

dtiProtocolObjects  OBJECT IDENTIFIER
    ::= { dtiMibObjects 1 }

dtiServerObjects  OBJECT IDENTIFIER
    ::= { dtiMibObjects 2 }

dtiClientObjects  OBJECT IDENTIFIER
    ::= { dtiMibObjects 3 }

dtiServerProperties  OBJECT IDENTIFIER
    ::= { dtiServerObjects 1 }

dtiServerGlobalParameters  OBJECT IDENTIFIER
    ::= { dtiServerObjects 2 }

-- The following group describes the objects that apply to
-- both DTI Server and DTI Client

dtiProtocolTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF DtiProtocolEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table describes the DTI protocol related information
        contained in Server and Client Frames of a DTI 
        client-server pair."
    ::= { dtiProtocolObjects 1 }

dtiProtocolEntry OBJECT-TYPE
    SYNTAX          DtiProtocolEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row entry in the DTI Protocol table.
        A DTI server has an entry for each client interface. 
        A DTI client has an entry for each server connection. 
        A DTI server (proxy) is a client of the root server DTI 
        input."
    INDEX           { ifIndex } 
    ::= { dtiProtocolTable 1 }

DtiProtocolEntry ::= SEQUENCE {
        dtiProtocolEntityType              INTEGER,
        dtiProtocolClientClockType         INTEGER,
        dtiProtocolServerStatusFlag        INTEGER,
        dtiProtocolClientStatusFlag        INTEGER,
        dtiProtocolServerToDState          INTEGER,
        dtiProtocolServerToDType           INTEGER,
        dtiProtocolServerToDValue          OCTET STRING,
        dtiProtocolServerCableAdvanceFlag  INTEGER,
        dtiProtocolServerCableAdvanceValue DtiCableAdvance,
        dtiProtocolClientPhaseError        Integer32,
        dtiProtocolClientVersion           Unsigned32,
        dtiProtocolClientPathTraceability  Unsigned32,
        dtiProtocolServerClientStableFlag  INTEGER
}

dtiProtocolEntityType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        root(1),
                        server(2),
                        client(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The type of DTI interface of this entry in the managed
        entity. 
        'root' 
          indicates the interface generates DTI Server
          Frames and processes DTI Client Frames from a proxy 
          server or a client. 
        'server' 
          indicates the interface generates DTI Server Frames
          and processes DTI Client Frames from a DTI client.
        'client' 
           indicates the interface processes DTI Server Frames and 
           generates DTI Client Frames." 
    ::= { dtiProtocolEntry 1 }

dtiProtocolClientClockType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        ituI(1),
                        ituII(2),
                        ituIII(3),
                        st3(4),
                        dtiClock(5)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The clock Type of the client as reported in DTI client
        Frames." 
    ::= { dtiProtocolEntry 2 }

dtiProtocolServerStatusFlag OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unknown(0),
                        warmup(1),
                        freerun(2),
                        fastTrackingMode(3),
                        normalMode(4),
                        holdoverMode(5),
                        clientStable(6), -- deprecated
                        testMode(7)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The current Operational Status of the server side of the
        DTI interface. This MIB object should be updated no more 
        than once per second. The Server reports the status of the
        DTI interface associated to this entry as follows: 

        'warmup' 
              The server clock has not yet stabilized and has not 
              acquired a stable Time of Day.
        'freerun'
              The server has a stable clock and Time of Day but 
              is not locked to an external clock reference.
        'fastTrackingMode'
              The server is in the process of locking to the 
              timing reference.
        'normalMode'
              The server is locked to the timing reference.
        'holdover'
              The server has lost the timing reference and is in 
              holdover mode.
        'clientStable'
              The server has verified that the Client phase error
              is acceptable for this DTI interface entry. This 
              value is deprecated as does not indicate the status
              of the server side of the DTI interface. The performace 
              stable client is reported by 
              dtiProtocolServerClientStableFlag. 

        'testMode'
              The server has entered in  Test Mode for this
              DTI entry interface due a set to 'true' of 
              dtiProtocolControlTestMode or because is receiving 
              test mode frames from the DTI client remote end."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Server-Client
            Protocol Interaction." 
    ::= { dtiProtocolEntry 3 }

dtiProtocolClientStatusFlag OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unknown(0),
                        warmup(1),
                        freerun(2),
                        fastTrackingMode(3),
                        normalMode(4),
                        holdoverMode(5),
                        bridgingMode(6),
                        testMode(7)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The current Operational Status of the client side of the
        DTI interface. This MIB object should be updated no more 
        than once per second.
        The Client status values are:

        'warmup' 
             The client clock has not stabilized yet.
        'freerun'
             The client has a stable clock but has not locked 
             to an external clock reference yet.
        'fastTrackingMode'
             The client is in the process of locking to the 
             timing reference.
        'normalMode'
             The client is locked to the timing reference.
        'holdover'
             The client has lost the timing reference and is in 
             holdover mode.
        'bridgingMode'
             The client has lost its timing reference but is under
             acceptable operational conditions based on previous 
             data acquired in 'normalMode' state.
        'testMode' (Rephrase this definition)
             The client has entered in Test Mode for this DTI 
             interface entry due to a set to 'true' of 
             dtiProtocolControlTestMode or because is receiving 
             Test Signaling frames from the DTI Server remote end."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client 
            Operation." 
    ::= { dtiProtocolEntry 4 }

dtiProtocolServerToDState OBJECT-TYPE
    SYNTAX          INTEGER  {
                        valid(1),
                        invalid(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Indicates the validity of the Time of Day.
        Possible values are 'valid' and 'invalid'.
        When the object dtiProtocolControlToDValue
        Corresponding to this Client-Server connection or the
        global object dtiServerGlobalToDValue 
        is set by a manager rather than acquired via the protocol,
        'valid'.
        A ToD invalid state could be a consequence of an improper 
        configuration of dtiServerToDSources or connectivity 
        problems within the ToD protocol." 
    ::= { dtiProtocolEntry 5 }

dtiProtocolServerToDType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        default(1),
                        userTime(2),
                        ntpv4(3),
                        gps(4)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Indicates the current Time of Day source for DTI
        Server-Client connection.
        'default' indicates the ToD of the DTI server is used and 
            implies that this value is not updated via GPS or NTP.
        'userTime' indicates the ToD value was configured by the 
            management interface. This object reports 'userTime'
            when dtiProtocolServerToDValue is set by a manager
            entity.
        'ntpv4' indicates NTP, Network Time Protocol version 4.
        'gps' indicates GPS ToD gpssec." 
    ::= { dtiProtocolEntry 6 }

dtiProtocolServerToDValue OBJECT-TYPE
    SYNTAX          OCTET STRING (SIZE  (0 | 33))
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The value of the Time of Day sent by the server in the
        format DDDDD.YYYY/MM/DD.HH:MM:SS.SHH:F.D independent of 
        being transmitted in short or verbose message format in
        the DTI Server Frame. Reading this object returns the ToD
        value for the specific DTI Client-Server connection." 
    ::= { dtiProtocolEntry 7 }

dtiProtocolServerCableAdvanceFlag OBJECT-TYPE
    SYNTAX          INTEGER  {
                        valid(1),
                        invalid(2),
                        manual(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the cable advance status of the DTI
        Server Frame. This object is not updated more than once per
        second. If dtiProtocolServerCableAdvanceValue is set to a 
        valid value by a manager entity, this objects reports 
        'manual'." 
    ::= { dtiProtocolEntry 8 }

dtiProtocolServerCableAdvanceValue OBJECT-TYPE
    SYNTAX          DtiCableAdvance
    UNITS           "clockSamples"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "A Set to zero-length string returns the control of the
        Cable Advance Field and Cable Advance Flag Bit to the DTI
        server.

        Setting this object to a valid value sets the DTI Server 
        Frames Frame Cable Advance field to the specified value and
        sets the Cable Advance Status Flag BIT to '1' (valid), and
        sets the object dtiProtocolServerCableAdvanceFlag to 
        'manual' for this entry." 
    ::= { dtiProtocolEntry 9 }

dtiProtocolClientPhaseError OBJECT-TYPE
    SYNTAX          Integer32 (-32767..32767)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The phase error measured at the client as reported to the
        server in the DTI Client Frames. This object is quantified
        in units of a 149.8MHz clock cycles. This object 
        represents the 16 MSB bits of the 3 octet Client Clock 
        Integrated Phase field." 
    ::= { dtiProtocolEntry 10 }

dtiProtocolClientVersion OBJECT-TYPE
    SYNTAX          Unsigned32 (0..1023)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object reports the client DTI protocol version as
        indicated in the 10-bit field 'CLIENT DTI VERSION'." 
    ::= { dtiProtocolEntry 11 }

dtiProtocolClientPathTraceability OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "A reference to the index of dtiPathTraceabilityTable to
        which this DTI Client-Server connection has associated its
        traceable path. It is likely that many traceable paths of
        DTI clients would have the same rootServer and proxy server
        for multiple Client Server. A manager application can build
        the Traceability Path, e.g., of a DTI client,
        if reading this entry from a proxy DTI server as follows:

        Client:
           This entry DTI Client IP Address,
           This entry ifIndex, (see below) 
           dtiProtocolClientVersion
        Proxy Server:
           dtiPathTraceabilityServerInetAddr,
           dtiPathTraceabilityServerOutPhyIdx,
           dtiPathTraceabilityServerProtVersion
        RootServer:
           dtiPathTraceabilityRootServerInetAddr,
           dtiPathTraceabilityRootServerOutPhyIdx,
           dtiPathTraceabilityRootServerProtVersion

        For the DTI client the Physical port would correspond to:
           PhysicalIndex where
           entAliasMappingIdentifier.PhysicalIndex = ifIndex" 
    ::= { dtiProtocolEntry 12 }

dtiProtocolServerClientStableFlag OBJECT-TYPE
    SYNTAX          INTEGER  {
                        valid(1),
                        invalid(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the client performance stable status of the DTI
        Server Frame. This object is not updated more than once per
        second." 
    ::= { dtiProtocolEntry 13 }
 

-- DTI Protocol Control
-- Provides mechanisms to control the DTI Client-Server connections
-- on a pair basis

dtiProtocolControlTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF DtiProtocolControlEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table is an extension of dtiProtocolTable for the
        control of individual DTI Client-Server connections."
    ::= { dtiProtocolObjects 2 }

dtiProtocolControlEntry OBJECT-TYPE
    SYNTAX          DtiProtocolControlEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row entry of this table."
    INDEX           { ifIndex } 
    ::= { dtiProtocolControlTable 1 }

DtiProtocolControlEntry ::= SEQUENCE {
        dtiProtocolControlTimeInterval       Unsigned32,
        dtiProtocolControlErrorRateInterval  Unsigned32,
        dtiProtocolControlJitterTimeInterval Unsigned32,
        dtiProtocolControlTestMode           TruthValue,
        dtiProtocolControlToDValue           OCTET STRING
}

dtiProtocolControlTimeInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (0..3600)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The time interval used to calculate
        dtiProtocolPerformanceDelay and 
        dtiProtocolPerformanceWanderTSeconds for this Client-Server
        connection.
        The value zero indicates the Wander for T Seconds and 
        Protocol Delay is not calculated."
    DEFVAL          { 0 } 
    ::= { dtiProtocolControlEntry 1 }

dtiProtocolControlErrorRateInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (0..3600)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The time interval used to calculate the value of
        dtiProtocolPerformanceFrameErrorRate for this Client-Server
        connection. The value zero indicates no current FER 
        measurements are being taken."
    DEFVAL          { 0 } 
    ::= { dtiProtocolControlEntry 2 }

dtiProtocolControlJitterTimeInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (0..3600)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The time interval used to calculate
        dtiProtocolPerformancePeakToPeakJitter for this 
        Client-Server connection.
        The value zero indicates no Jitter measurements are being
        taken."
    DEFVAL          { 0 } 
    ::= { dtiProtocolControlEntry 3 }

dtiProtocolControlTestMode OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "If set to 'true' starts the sequence of Test Mode
        on this DTI Client-Server connection.
        The Test Mode consist in a sequence of all DTI frames
        set to '1' before the Manchester line code is applied." 
    ::= { dtiProtocolControlEntry 4 }

dtiProtocolControlToDValue OBJECT-TYPE
    SYNTAX          OCTET STRING (SIZE  (0 | 33))
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The control object to specify a particular ToD value to
        a Client-Server connection. The format of this object is 
        DDDDD.YYYY/MM/DD.HH:MM:SS.SHH:F.D independent of being
        transmitted in short or verbose message format in the DTI
        Server Frame.

        Setting this object to a zero length string resets the ToD
        source of this DTI Client-Server connection to the current
        Server ToD reference of dtiServerGlobalToDMethod and
        dtiServerGlobalToDValue.

        Reading this value returns the last set value of this 
        object or zero length string if a global ToD value and/or
        method were lately performed." 
    ::= { dtiProtocolControlEntry 5 }
 

-- DTI protocol performance

dtiProtocolPerformanceTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF DtiProtocolPerformanceEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The DTI protocol performance metrics of a DTI
        Client-Server Connection. In the DTI server an entry
        of this table registers the DTI Client frames performance.
        In the DTI client the measurements 
        correspond to the DTI server frames performance."
    ::= { dtiProtocolObjects 3 }

dtiProtocolPerformanceEntry OBJECT-TYPE
    SYNTAX          DtiProtocolPerformanceEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row entry in the DTI performance table.
        This table is an extension of dtiProtocolTable for 
        entries with dtiProtocolEntityType equals to 'root' 
        and 'server'."
    INDEX           { ifIndex } 
    ::= { dtiProtocolPerformanceTable 1 }

DtiProtocolPerformanceEntry ::= SEQUENCE {
        dtiProtocolPerformanceDelay            Unsigned32,
        dtiProtocolPerformanceFrameErrorRate   Unsigned32,
        dtiProtocolPerformancePeakToPeakJitter Integer32,
        dtiProtocolPerformanceWander35Second   Unsigned32,
        dtiProtocolPerformanceWanderTSeconds   Unsigned32
}

dtiProtocolPerformanceDelay OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "nanoseconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The roundtrip delay measured in nanoseconds." 
    ::= { dtiProtocolPerformanceEntry 1 }

dtiProtocolPerformanceFrameErrorRate OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "FER"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Frame Error Rate (FER) corresponds to the ratio of DTI
        protocol frames in error and the total of frames received
        during a period of time. 
        Frames in error and total frames correspond to the delta
        of ifErrors and ifUcastPackets MIB objects respectively 
        during the period of time defined by 
        dtiFrameErrorRateInterval object. For the DTI server the 
        FER value is based on the DTI client interval frames and
        for the DTI client, corresponds to the DTI 
        server interval frames." 
    ::= { dtiProtocolPerformanceEntry 2 }

dtiProtocolPerformancePeakToPeakJitter OBJECT-TYPE
    SYNTAX          Integer32 (-10000..10000)
    UNITS           "picoseconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum phase variation (with frequency components
        > 10 Hz) in the client frame with respect to the master 
        clock and reported in the DTI client frame for the time 
        interval specified in dtiProtocolControlJitterTimeInterval
        object." 
    ::= { dtiProtocolPerformanceEntry 3 }

dtiProtocolPerformanceWander35Second OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    UNITS           "picoseconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The largest wander value observed by the server in a
        35-second interval for the corresponding Client-Server
        connection." 
    ::= { dtiProtocolPerformanceEntry 4 }

dtiProtocolPerformanceWanderTSeconds OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    UNITS           "picoseconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The largest wander value observed by the server in a time
        interval defined by dtiWanderTimeInterval for the 
        corresponding Client-Server connection." 
    ::= { dtiProtocolPerformanceEntry 5 }
 

-- DTI Client State Machine

dtiProtocolClientFsmStatsTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF DtiProtocolClientFsmStatsEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Statistics associated to the DTI client state machine.
        This table contains counters of the most significant
        DTI finite State machine transitions and states as 
        reported in the DTI Client Frame.

        Below is a description of the State Transition and 
        counters supported (not all State Transitions need 
        object definitions):

        T1: Warmup to Free-run
          Normally once after the clock warms up. 
          Rather than defining a counter for this 
          state transition, the managed system updates
          the object ifDiscontinuity with the time when
          the clock performs a transition to Free-run 
          State
        T2: Free-run to Fast 
          Not defined counter. T2 = T3 + 1
        T3: Fast to Free-run (dtiProtocolClientFsmStatsT3Count)
        T4: Fast to Normal (dtiProtocolClientFsmStatsT4Count)
          Counts the times the clock enters to the normal
          mode of operation.
        T5: Normal to Bridging
          Not defined counter. T5 = T6 + T7
        T6: Bridging to Normal (dtiProtocolClientFsmStatsT6Count)
        T7: Bridging to Holdover (dtiProtocolClientFsmStatsT7Count)
        T8: Holdover to Fast 
          No counter defined. 
          If DTI Client State is Holdover, T8 = T7 - 1 
          other DTI Client State, T8 = T7

        This table also includes the active time the DTI client is
        in Normal state(dtiProtocolClientFsmStatsNormalActiveTime)
        and Holdover state 
        (dtiProtocolClientFsmStatsHoldoverActiveTime)."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client Mode 
            Transition Diagram."
    ::= { dtiProtocolObjects 6 }

dtiProtocolClientFsmStatsEntry OBJECT-TYPE
    SYNTAX          DtiProtocolClientFsmStatsEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row entry in the DTI FSM Statistics table.
        In the DTI Server (proxy) this table has an entry for 
        each DTI client interface as well as an entry for each 
        Server (proxy) interface to root server. In the DTI client
        there is an entry for each client interface."
    INDEX           { ifIndex } 
    ::= { dtiProtocolClientFsmStatsTable 1 }

DtiProtocolClientFsmStatsEntry ::= SEQUENCE {
        dtiProtocolClientFsmStatsT3Count            Counter32,
        dtiProtocolClientFsmStatsT4Count            Counter32,
        dtiProtocolClientFsmStatsT6Count            Counter32,
        dtiProtocolClientFsmStatsT7Count            Counter32,
        dtiProtocolClientFsmStatsNormalActiveTime   Counter32,
        dtiProtocolClientFsmStatsHoldoverActiveTime Counter32
}

dtiProtocolClientFsmStatsT3Count OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Counts the Transition from Fast to Free-run state (T3).
        This transition occurs when the client aborts the clock
        acquisition due to a high Frame Error Rate."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client Mode 
            Transition Diagram." 
    ::= { dtiProtocolClientFsmStatsEntry 1 }

dtiProtocolClientFsmStatsT4Count OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Counts the Transition from Fast to Normal state (T4).
        This transition occurs when the client acquires for the 
        first time or recovers a stable clock reference."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client Mode 
            Transition Diagram." 
    ::= { dtiProtocolClientFsmStatsEntry 2 }

dtiProtocolClientFsmStatsT6Count OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Counts the Transition from Bridging to Normal state (T6).
        This transition occurs when in Bridging mode the Frame 
        Error rate is reduced and the DTI client recovers the clock
        reference before a bridging mode timeout."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client Mode 
            Transition Diagram." 
    ::= { dtiProtocolClientFsmStatsEntry 3 }

dtiProtocolClientFsmStatsT7Count OBJECT-TYPE
    SYNTAX          Counter32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Counts the Transition from Bridging to Holdover state
        (T7). This transition occurs when the client is in Bridging
        mode, the bridging timeout expires and the DTI client 
        enters in Holdover mode."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client Mode 
            Transition Diagram." 
    ::= { dtiProtocolClientFsmStatsEntry 4 }

dtiProtocolClientFsmStatsNormalActiveTime OBJECT-TYPE
    SYNTAX          Counter32
    UNITS           "milliseconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The cumulative count in 10 KHz clock cycles the DTI client
        is being in Normal Mode.
        The percentage of time the DTI client is being operating in
        Normal Mode is calculated as the ratio of this object and 
        sysUpTime within two consecutive measurements. Note that 
        the value sysUpTime is given in hundreds of seconds, 
        therefore it needs to be multiplied by 100."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client Mode 
            Transition Diagram." 
    ::= { dtiProtocolClientFsmStatsEntry 5 }

dtiProtocolClientFsmStatsHoldoverActiveTime OBJECT-TYPE
    SYNTAX          Counter32
    UNITS           "milliseconds"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The cumulative count in 10 KHz clock cycles the DTI client
        is being in Holdover Mode.
        The percentage of time the DTI client is being operating in
        Holdover Mode is calculated as the ratio of this object and
        sysUpTime within two consecutive measurements. Note that 
        the value sysUpTime is given in hundreds of seconds; 
        therefore it needs to be multiplied by 100."
    REFERENCE
        "DOCSIS Timing Interface Specification, DTI Client Mode 
            Transition Diagram." 
    ::= { dtiProtocolClientFsmStatsEntry 6 }
 

-- Path Traceability Table

dtiPathTraceabilityTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF DtiPathTraceabilityEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The Traceable Path information sent from the DTI server
        to the client. The traceability path includes node 
        information about DTI root server and DTI server (proxy).
        The entries of this table are pointed by dtiProtocolTable
        in both DTI Server and Client.
        The DTI server may aggregate in a single entry all the 
        root-to-server traceable paths that are common across
        multiple DTI clients."
    ::= { dtiProtocolObjects 4 }

dtiPathTraceabilityEntry OBJECT-TYPE
    SYNTAX          DtiPathTraceabilityEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row entry in the DTI Path Traceability table.
        This table is an expansion of the dtiProtocolTable for 
        entries with dtiProtocolEntityType equal to 'server' 
        and 'client'."
    INDEX           { dtiPathTraceabilityIndex } 
    ::= { dtiPathTraceabilityTable 1 }

DtiPathTraceabilityEntry ::= SEQUENCE {
        dtiPathTraceabilityIndex                  Unsigned32,
        dtiPathTraceabilityRootServerInetAddrType InetAddressType,
        dtiPathTraceabilityRootServerInetAddr     InetAddress,
        dtiPathTraceabilityRootServerOutPhyIdx    PhysicalIndex,
        dtiPathTraceabilityServerInetAddrType     InetAddressType,
        dtiPathTraceabilityServerInetAddr         InetAddress,
        dtiPathTraceabilityServerOutPhyIdx        PhysicalIndex,
        dtiPathTraceabilityRootServerProtVersion  Unsigned32,
        dtiPathTraceabilityServerProtVersion      Unsigned32
}

dtiPathTraceabilityIndex OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The index of this conceptual entry." 
    ::= { dtiPathTraceabilityEntry 1 }

dtiPathTraceabilityRootServerInetAddrType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The type of internet address for
        dtiPathTraceabilityRootServerInetAddr." 
    ::= { dtiPathTraceabilityEntry 2 }

dtiPathTraceabilityRootServerInetAddr OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The IP address of the clock synchronization root server.
        If this management entity has dtiServerExternalSource 
        'notExternal' this value returns an empty octet string and
        dtiPathTraceabilityRootServerInetAddrType. 
        The type of this address is determined by the value of the
        dtiPathTraceabilityRootServerInetAddrType object." 
    ::= { dtiPathTraceabilityEntry 3 }

dtiPathTraceabilityRootServerOutPhyIdx OBJECT-TYPE
    SYNTAX          PhysicalIndex
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The physical port number of the clock synchronization
        root server." 
    ::= { dtiPathTraceabilityEntry 4 }

dtiPathTraceabilityServerInetAddrType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The type of internet address for
        dtiPathTraceabilityServerInetAddr." 
    ::= { dtiPathTraceabilityEntry 5 }

dtiPathTraceabilityServerInetAddr OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The IP address of the clock synchronization server
        associated with this management entity. The type of this
        address is determined by the value of the 
        dtiPathTraceabilityServerInetAddrType object." 
    ::= { dtiPathTraceabilityEntry 6 }

dtiPathTraceabilityServerOutPhyIdx OBJECT-TYPE
    SYNTAX          PhysicalIndex
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The physical port number of the clock synchronization
        server associated with this management entity." 
    ::= { dtiPathTraceabilityEntry 7 }

dtiPathTraceabilityRootServerProtVersion OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The DTI Protocol Version of the clock synchronization root
        server." 
    ::= { dtiPathTraceabilityEntry 8 }

dtiPathTraceabilityServerProtVersion OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The DTI Protocol Version of the clock synchronization
        server associated with this management entity." 
    ::= { dtiPathTraceabilityEntry 9 }
 


-- DTI server objects

dtiServerRootClockType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        ituI(1),
                        ituII(2),
                        ituIII(3),
                        st3(4)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The clock type of the root server this server is
        connected. If dtiServerHopCount is 'root' the clock type
        is the self clock.
        'ituI' corresponds to an ITU Type I clock. 
        'ituII' corresponds to an ITU Type II clock. 
        'ituIII' corresponds to an ITU Type III clock.
        'st3' corresponds to an ANSI T1.101 ST3 clock." 
    ::= { dtiServerProperties 1 }

dtiServerHopCount OBJECT-TYPE
    SYNTAX          INTEGER  {
                        root(1),
                        proxy(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of the DTI server.
        'root' indicates the server is the DTI root server. 'proxy'
        indicates the DTI server is connected to a root DTI 
        server." 
    ::= { dtiServerProperties 2 }

dtiServerExternalTimingSource OBJECT-TYPE
    SYNTAX          INTEGER  {
                        noExternal(1),
                        gps(2),
                        network(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The type of external clock that provides the reference
        for this DTI server.
        'none' indicates the DTI server has no timing reference 
           input.
        'gps' indicates the timing source is GPS.
        'network' indicates the timing is obtained from a network
           such as a PDH, or SONET network." 
    ::= { dtiServerProperties 3 }

dtiServerToDSources OBJECT-TYPE
    SYNTAX          BITS {
                        default(0),
                        userTime(1),
                        ntpv4(2),
                        gps(3)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Indicates the DTI Server's registered Time of Day sources.
        A bit set to '1' has the following meaning:

        'default' the internal DTI Server ToD reference without 
                external updates.
        'userTime' indicates the capability of ToD being set by a
                manager entity either setting 
                dtiServerGlobalToDValue or 
                dtiProtocolControlToDValue. 
        'ntpv4' indicates support of NTP Network Time Protocol 
                version 4.
        'gps' indicates support of GPS ToD gpssec.

        The initialization or configuration of GPS or NTPv4 ToD 
        sources is not defined in this MIB module." 
    ::= { dtiServerProperties 4 }

dtiServerGlobalTimeInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (0..3600)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The time interval used to calculate
        dtiProtocolPerformanceDelay and 
        dtiProtocolPerformanceWanderTSeconds for all Client-Server
        connections of the managed system.
        A set to this object overrides all the entries of 
        dtiProtocolControlTimeInterval previously configured.
        The value zero indicates the Wander for T Seconds and 
        Protocol Delay is not calculated."
    DEFVAL          { 0 } 
    ::= { dtiServerGlobalParameters 1 }

dtiServerGlobalErrorRateInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (0..3600)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The time interval used to calculate the value of
        dtiProtocolPerformanceFrameErrorRate for all Client-Server
        connections of the managed system.
        A set to this object overrides all the entries of 
        dtiProtocolControlErrorRateInterval previously configured.
        The value zero indicates no current FER measurements are 
        being taken."
    DEFVAL          { 0 } 
    ::= { dtiServerGlobalParameters 2 }

dtiServerGlobalJitterTimeInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (0..3600)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The time interval used to calculate
        dtiProtocolPerformancePeakToPeakJitter for all 
        Client-Server connections of the managed system.
        A set to this object overrides all the entries of 
        dtiProtocolControlErrorRateInterval previously configured.
        The value zero indicates no Jitter measurements are being 
        taken."
    DEFVAL          { 0 } 
    ::= { dtiServerGlobalParameters 3 }

dtiServerGlobalToDMethod OBJECT-TYPE
    SYNTAX          INTEGER  {
                        default(1),
                        userTime(2),
                        ntpv4(3),
                        gps(4)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Selects the type of ToD Source for the DTI server
        operation. The set of this object to its enumerated
        values is described below:

        'default' instructs the DTI server to use the last ToD 
                reference as the value for its internal clock.
        'userTime' instructs the DTI server to use the value of 
                dtiServerGlobalToDValue for the DTI server internal
                time ticks clock. 
        'ntpv4' instructs the DTI server to use the NTP Network 
                Time Protocol version 4 as the ToD reference.
        'gps' instructs the DTI server to use the GPS gpssec ToD
                as the ToD reference.

        It is recommended to reject an SNMP SET to a particular ToD
        method if such ToD capability is not active or requires 
        other configuration steps.

        A successful set of this object sets to a zero length 
        string all the DTI Client-Server connections that 
        previously were set via dtiProtocolControlToDValue to 
        particular ToD Values." 
    ::= { dtiServerGlobalParameters 4 }

dtiServerGlobalToDValue OBJECT-TYPE
    SYNTAX          OCTET STRING (SIZE  (0 | 33))
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The control object to specify the ToD value for all DTI
        server Client-Server connections. The format of this object
        is DDDDD.YYYY/MM/DD.HH:MM:SS.SHH:F.D independent of being
        transmitted in short or verbose message format in the DTI
        Server Frame.

        A set of this object to a valid value different of zero 
        length string automatically sets dtiServerGlobalToDMethod
        to 'userTime'. Setting this object to zero re-establishes
        the ToD source to the current Server ToD reference 
        dtiServerGlobalToDMethod 'default', 'ntpProtocol' 
        or 'gps'." 
    ::= { dtiServerGlobalParameters 5 }
-- Conformance information

dtiMibConformance  OBJECT IDENTIFIER
    ::= { dtiMib 2 }

dtiMibCompliances  OBJECT IDENTIFIER
    ::= { dtiMibConformance 1 }

dtiMibGroups  OBJECT IDENTIFIER
    ::= { dtiMibConformance 2 }


-- Compliance statements

dtiMibCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for DTI."
    MODULE          -- this module
    MANDATORY-GROUPS { dtiBaseGroup }

    GROUP           dtiServerGroup
    DESCRIPTION
        "Mandatory group for DTI server."

    GROUP           dtiClientGroup
    DESCRIPTION
        "Mandatory group for DTI client."

    OBJECT          dtiProtocolServerStatusFlag
    SYNTAX          INTEGER  {
                        unknown(0),
                        warmup(1),
                        freerun(2),
                        fastTrackingMode(3),
                        normalMode(4),
                        holdoverMode(5),
                        testMode(7)
                    }
    DESCRIPTION
        "The value 'clientStable' is deprecated and not used."

    OBJECT          dtiProtocolServerCableAdvanceValue
    DESCRIPTION
        "This object is always read only for DTI client
        devices. A DTI Server also treated as a DTI client
        for the interfaces connected to a DTI root server."
    ::= { dtiMibCompliances 1 }

dtiBaseGroup OBJECT-GROUP
    OBJECTS         {
                        dtiProtocolServerToDState,
                        dtiProtocolEntityType,
                        dtiProtocolClientClockType,
                        dtiProtocolServerStatusFlag,
                        dtiProtocolClientStatusFlag,
                        dtiProtocolServerToDType,
                        dtiProtocolServerToDValue,
                        dtiProtocolServerCableAdvanceFlag,
                        dtiProtocolServerCableAdvanceValue,
                        dtiProtocolClientPhaseError,
                        dtiProtocolClientVersion,
                        dtiProtocolClientPathTraceability,
                        dtiPathTraceabilityRootServerInetAddrType,
                        dtiPathTraceabilityRootServerInetAddr,
                        dtiPathTraceabilityRootServerOutPhyIdx,
                        dtiPathTraceabilityServerInetAddrType,
                        dtiPathTraceabilityServerInetAddr,
                        dtiPathTraceabilityServerOutPhyIdx,
                        dtiPathTraceabilityRootServerProtVersion,
                        dtiPathTraceabilityServerProtVersion,
                        dtiProtocolPerformanceDelay,
                        dtiProtocolPerformanceFrameErrorRate,
                        dtiProtocolPerformancePeakToPeakJitter,
                        dtiProtocolPerformanceWander35Second,
                        dtiProtocolPerformanceWanderTSeconds,
                        dtiProtocolServerClientStableFlag
                    }
    STATUS          current
    DESCRIPTION
        "Group of object applicable to DTI Server and DTI Client."
    ::= { dtiMibGroups 1 }

dtiServerGroup OBJECT-GROUP
    OBJECTS         {
                        dtiProtocolControlTimeInterval,
                        dtiProtocolControlErrorRateInterval,
                        dtiProtocolControlJitterTimeInterval,
                        dtiProtocolControlTestMode,
                        dtiProtocolControlToDValue,
                        dtiServerRootClockType,
                        dtiServerHopCount,
                        dtiServerExternalTimingSource,
                        dtiServerToDSources,
                        dtiServerGlobalTimeInterval,
                        dtiServerGlobalErrorRateInterval,
                        dtiServerGlobalJitterTimeInterval,
                        dtiServerGlobalToDMethod,
                        dtiServerGlobalToDValue
                    }
    STATUS          current
    DESCRIPTION
        "Group of objects applicable to DTI Server only."
    ::= { dtiMibGroups 2 }

dtiClientGroup OBJECT-GROUP
    OBJECTS         {
                        dtiProtocolClientFsmStatsT3Count,
                        dtiProtocolClientFsmStatsT4Count,
                        dtiProtocolClientFsmStatsT6Count,
                        dtiProtocolClientFsmStatsT7Count,
                        dtiProtocolClientFsmStatsNormalActiveTime,
                        dtiProtocolClientFsmStatsHoldoverActiveTime
                    }
    STATUS          current
    DESCRIPTION
        "Group of objects applicable to DTI Client."
    ::= { dtiMibGroups 3 }

END
