BGP4-MIB DEFINITIONS ::= BEGIN

                IMPORTS
                    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
                    IpAddress, Integer32, Counter32, Gauge32
                        FROM SNMPv2-SMI
                    mib-2
                        FROM RFC1213-MIB;

                bgp MODULE-IDENTITY
                    LAST-UPDATED "9405050000Z"
                    ORGANIZATION "IETF BGP Working Group"
                    CONTACT-INFO
                                "   John Chu  (Editor)
                            Postal: IBM Corp.
                                    P.O.Box 218
                                    Yorktown Heights, NY 10598
                                    US
                               Tel: +1 914 945 3156
                               Fax: +1 914 945 2141
                            E-mail: jychu@watson.ibm.com"
                        DESCRIPTION
                                "The MIB module for BGP-4."
                    ::= { mib-2 15 }

                bgpVersion OBJECT-TYPE
                    SYNTAX     OCTET STRING (SIZE (1..255))
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Vector of supported BGP protocol version
                            numbers.  Each peer negotiates the version
                            from this vector.  Versions are identified
                            via the string of bits contained within this
                            object.  The first octet contains bits 0 to
                            7, the second octet contains bits 8 to 15,
                            and so on, with the most significant bit
                            referring to the lowest bit number in the
                            octet (e.g., the MSB of the first octet
                            refers to bit 0).  If a bit, i, is present
                            and set, then the version (i+1) of the BGP
                            is supported."
                    ::= { bgp 1 }

                bgpLocalAs OBJECT-TYPE
                    SYNTAX     INTEGER (0..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The local autonomous system number."
                    ::= { bgp 2 }



                -- BGP Peer table.  This table contains, one entry per
                -- BGP peer, information about the BGP peer.

                bgpPeerTable OBJECT-TYPE
                    SYNTAX     SEQUENCE OF BgpPeerEntry
                    MAX-ACCESS not-accessible
                    STATUS     current
                    DESCRIPTION
                            "BGP peer table.  This table contains,
                            one entry per BGP peer, information about
                            the connections with BGP peers."


                    ::= { bgp 3 }



                bgpPeerEntry OBJECT-TYPE
                    SYNTAX     BgpPeerEntry
                    MAX-ACCESS not-accessible
                    STATUS     current
                    DESCRIPTION
                            "Entry containing information about the
                            connection with a BGP peer."
                    INDEX { bgpPeerRemoteAddr }
                    ::= { bgpPeerTable 1 }

                BgpPeerEntry ::= SEQUENCE {
                        bgpPeerIdentifier
                            IpAddress,
                        bgpPeerState
                            INTEGER,
                        bgpPeerAdminStatus
                            INTEGER,
                        bgpPeerNegotiatedVersion
                            Integer32,
                        bgpPeerLocalAddr
                            IpAddress,
                        bgpPeerLocalPort
                            INTEGER,
                        bgpPeerRemoteAddr
                            IpAddress,
                        bgpPeerRemotePort
                            INTEGER,
                        bgpPeerRemoteAs
                            INTEGER,
                        bgpPeerInUpdates
                            Counter32,
                        bgpPeerOutUpdates
                            Counter32,
                        bgpPeerInTotalMessages
                            Counter32,
                        bgpPeerOutTotalMessages
                            Counter32,
                        bgpPeerLastError
                            OCTET STRING,
                        bgpPeerFsmEstablishedTransitions
                            Counter32,
                        bgpPeerFsmEstablishedTime
                            Gauge32,
                        bgpPeerConnectRetryInterval
                            INTEGER,
                        bgpPeerHoldTime
                            INTEGER,
                        bgpPeerKeepAlive
                            INTEGER,
                        bgpPeerHoldTimeConfigured
                            INTEGER,
                        bgpPeerKeepAliveConfigured
                            INTEGER,
                        bgpPeerMinASOriginationInterval
                            INTEGER,
                        bgpPeerMinRouteAdvertisementInterval
                            INTEGER,
                        bgpPeerInUpdateElapsedTime
                            Gauge32
                        }

                bgpPeerIdentifier OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The BGP Identifier of this entry's BGP
                            peer."
                    ::= { bgpPeerEntry 1 }

                bgpPeerState OBJECT-TYPE
                    SYNTAX     INTEGER {
                                        idle(1),
                                        connect(2),
                                        active(3),
                                        opensent(4),
                                        openconfirm(5),
                                        established(6)
                               }
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The BGP peer connection state."
                    ::= { bgpPeerEntry 2 }

                bgpPeerAdminStatus OBJECT-TYPE
                    SYNTAX     INTEGER {
                                        stop(1),
                                        start(2)
                               }
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The desired state of the BGP connection.
                            A transition from 'stop' to 'start' will
                            cause the BGP Start Event to be generated.
                            A transition from 'start' to 'stop' will
                            cause the BGP Stop Event to be generated.
                            This parameter can be used to restart BGP
                            peer connections.  Care should be used in
                            providing write access to this object
                            without adequate authentication."
                    ::= { bgpPeerEntry 3 }

                bgpPeerNegotiatedVersion OBJECT-TYPE
                    SYNTAX     Integer32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The negotiated version of BGP running
                            between the two peers."
                    ::= { bgpPeerEntry 4 }

                bgpPeerLocalAddr OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The local IP address of this entry's BGP
                            connection."
                    ::= { bgpPeerEntry 5 }

                bgpPeerLocalPort OBJECT-TYPE
                    SYNTAX     INTEGER (0..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The local port for the TCP connection
                            between the BGP peers."
                    ::= { bgpPeerEntry 6 }

                bgpPeerRemoteAddr OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The remote IP address of this entry's BGP
                            peer."
                    ::= { bgpPeerEntry 7 }

                bgpPeerRemotePort OBJECT-TYPE
                    SYNTAX     INTEGER (0..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The remote port for the TCP connection
                            between the BGP peers.  Note that the
                            objects bgpPeerLocalAddr,
                            bgpPeerLocalPort, bgpPeerRemoteAddr and
                            bgpPeerRemotePort provide the appropriate
                            reference to the standard MIB TCP
                            connection table."
                    ::= { bgpPeerEntry 8 }

                bgpPeerRemoteAs OBJECT-TYPE
                    SYNTAX     INTEGER (0..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The remote autonomous system number."
                    ::= { bgpPeerEntry 9 }

                bgpPeerInUpdates OBJECT-TYPE
                    SYNTAX     Counter32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The number of BGP UPDATE messages
                            received on this connection.  This object
                            should be initialized to zero (0) when the
                            connection is established."
                    ::= { bgpPeerEntry 10 }

                bgpPeerOutUpdates OBJECT-TYPE
                    SYNTAX     Counter32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The number of BGP UPDATE messages
                            transmitted on this connection.  This
                            object should be initialized to zero (0)
                            when the connection is established."
                    ::= { bgpPeerEntry 11 }

                bgpPeerInTotalMessages OBJECT-TYPE
                    SYNTAX     Counter32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The total number of messages received
                            from the remote peer on this connection.
                            This object should be initialized to zero
                            when the connection is established."
                    ::= { bgpPeerEntry 12 }

                bgpPeerOutTotalMessages OBJECT-TYPE
                    SYNTAX     Counter32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The total number of messages transmitted to
                            the remote peer on this connection.  This
                            object should be initialized to zero when
                            the connection is established."
                    ::= { bgpPeerEntry 13 }

                bgpPeerLastError OBJECT-TYPE
                    SYNTAX     OCTET STRING (SIZE (2))
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The last error code and subcode seen by this
                            peer on this connection.  If no error has
                            occurred, this field is zero.  Otherwise, the
                            first byte of this two byte OCTET STRING
                            contains the error code, and the second byte
                            contains the subcode."
                    ::= { bgpPeerEntry 14 }

                bgpPeerFsmEstablishedTransitions OBJECT-TYPE
                    SYNTAX     Counter32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The total number of times the BGP FSM
                            transitioned into the established state."
                    ::= { bgpPeerEntry 15 }

                bgpPeerFsmEstablishedTime OBJECT-TYPE
                    SYNTAX     Gauge32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "This timer indicates how long (in
                            seconds) this peer has been in the
                            Established state or how long
                            since this peer was last in the
                            Established state.  It is set to zero when
                            a new peer is configured or the router is
                            booted."
                    ::= { bgpPeerEntry 16 }

                bgpPeerConnectRetryInterval OBJECT-TYPE
                    SYNTAX     INTEGER (1..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Time interval in seconds for the
                            ConnectRetry timer.  The suggested value
                            for this timer is 120 seconds."
                    ::= { bgpPeerEntry 17 }

                bgpPeerHoldTime OBJECT-TYPE
                    SYNTAX     INTEGER  ( 0 | 3..65535 )
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Time interval in seconds for the Hold
                            Timer established with the peer.  The
                            value of this object is calculated by this
                            BGP speaker by using the smaller of the
                            value in bgpPeerHoldTimeConfigured and the
                            Hold Time received in the OPEN message.
                            This value must be at lease three seconds
                            if it is not zero (0) in which case the
                            Hold Timer has not been established with
                            the peer, or, the value of
                            bgpPeerHoldTimeConfigured is zero (0)."
                    ::= { bgpPeerEntry 18 }

                bgpPeerKeepAlive OBJECT-TYPE
                    SYNTAX     INTEGER ( 0 | 1..21845 )
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Time interval in seconds for the KeepAlive
                            timer established with the peer.  The value
                            of this object is calculated by this BGP
                            speaker such that, when compared with
                            bgpPeerHoldTime, it has the same
                            proportion as what
                            bgpPeerKeepAliveConfigured has when
                            compared with bgpPeerHoldTimeConfigured.
                            If the value of this object is zero (0),
                            it indicates that the KeepAlive timer has
                            not been established with the peer, or,
                            the value of bgpPeerKeepAliveConfigured is
                            zero (0)."
                    ::= { bgpPeerEntry 19 }

                bgpPeerHoldTimeConfigured OBJECT-TYPE
                    SYNTAX     INTEGER ( 0 | 3..65535 )
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Time interval in seconds for the Hold Time
                            configured for this BGP speaker with this
                            peer.  This value is placed in an OPEN
                            message sent to this peer by this BGP
                            speaker, and is compared with the Hold
                            Time field in an OPEN message received
                            from the peer when determining the Hold
                            Time (bgpPeerHoldTime) with the peer.
                            This value must not be less than three
                            seconds if it is not zero (0) in which
                            case the Hold Time is NOT to be
                            established with the peer.  The suggested
                            value for this timer is 90 seconds."
                    ::= { bgpPeerEntry 20 }

                bgpPeerKeepAliveConfigured OBJECT-TYPE
                    SYNTAX     INTEGER ( 0 | 1..21845 )
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Time interval in seconds for the
                            KeepAlive timer configured for this BGP
                            speaker with this peer.  The value of this
                            object will only determine the
                            KEEPALIVE messages' frequency relative to
                            the value specified in
                            bgpPeerHoldTimeConfigured; the actual
                            time interval for the KEEPALIVE messages
                            is indicated by bgpPeerKeepAlive.  A
                            reasonable maximum value for this timer
                            would be configured to be one
                            third of that of
                            bgpPeerHoldTimeConfigured.
                            If the value of this object is zero (0),
                            no periodical KEEPALIVE messages are sent
                            to the peer after the BGP connection has
                            been established.  The suggested value for
                            this timer is 30 seconds."
                    ::= { bgpPeerEntry 21 }

                bgpPeerMinASOriginationInterval OBJECT-TYPE
                    SYNTAX     INTEGER (1..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Time interval in seconds for the
                            MinASOriginationInterval timer.
                            The suggested value for this timer is 15
                            seconds."
                    ::= { bgpPeerEntry 22 }

                bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE
                    SYNTAX     INTEGER (1..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Time interval in seconds for the
                            MinRouteAdvertisementInterval timer.
                            The suggested value for this timer is 30
                            seconds."
                    ::= { bgpPeerEntry 23 }

                bgpPeerInUpdateElapsedTime OBJECT-TYPE
                    SYNTAX     Gauge32
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Elapsed time in seconds since the last BGP
                            UPDATE message was received from the peer.
                            Each time bgpPeerInUpdates is incremented,
                            the value of this object is set to zero
                            (0)."
                    ::= { bgpPeerEntry 24 }



                bgpIdentifier OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The BGP Identifier of local system."
                    ::= { bgp 4 }

                -- BGP-4 Received Path Attribute Table.  This table
                -- contains, one entry per path to a network, path
                -- attributes received from all peers running BGP-4.

                bgp4PathAttrTable OBJECT-TYPE
                    SYNTAX     SEQUENCE OF Bgp4PathAttrEntry
                    MAX-ACCESS not-accessible
                    STATUS     current
                    DESCRIPTION
                            "The BGP-4 Received Path Attribute Table
                            contains information about paths to
                            destination networks received from all
                            BGP4 peers."


                    ::= { bgp 6 }

                bgp4PathAttrEntry OBJECT-TYPE
                    SYNTAX     Bgp4PathAttrEntry
                    MAX-ACCESS not-accessible
                    STATUS     current
                    DESCRIPTION
                            "Information about a path to a network."
                    INDEX { bgp4PathAttrIpAddrPrefix,
                            bgp4PathAttrIpAddrPrefixLen,
                            bgp4PathAttrPeer            }
                    ::= { bgp4PathAttrTable 1 }

                Bgp4PathAttrEntry ::= SEQUENCE {
                    bgp4PathAttrPeer
                         IpAddress,
                    bgp4PathAttrIpAddrPrefixLen
                         INTEGER,
                    bgp4PathAttrIpAddrPrefix
                         IpAddress,
                    bgp4PathAttrOrigin
                         INTEGER,
                    bgp4PathAttrASPathSegment
                         OCTET STRING,
                    bgp4PathAttrNextHop
                         IpAddress,
                    bgp4PathAttrMultiExitDisc
                         INTEGER,
                    bgp4PathAttrLocalPref
                         INTEGER,
                    bgp4PathAttrAtomicAggregate
                         INTEGER,
                    bgp4PathAttrAggregatorAS
                         INTEGER,
                    bgp4PathAttrAggregatorAddr
                         IpAddress,
                    bgp4PathAttrCalcLocalPref
                         INTEGER,
                    bgp4PathAttrBest
                         INTEGER,
                    bgp4PathAttrUnknown
                         OCTET STRING

                }

                bgp4PathAttrPeer OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The IP address of the peer where the path
                            information was learned."
                    ::= { bgp4PathAttrEntry 1 }

                bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE
                    SYNTAX     INTEGER (0..32)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Length in bits of the IP address prefix
                            in the Network Layer Reachability
                            Information field."
                    ::= { bgp4PathAttrEntry 2 }

                bgp4PathAttrIpAddrPrefix OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "An IP address prefix in the Network Layer
                            Reachability Information field.  This object
                            is an IP address containing the prefix with
                            length specified by
                            bgp4PathAttrIpAddrPrefixLen.
                            Any bits beyond the length specified by
                            bgp4PathAttrIpAddrPrefixLen are zeroed."
                    ::= { bgp4PathAttrEntry 3 }

                bgp4PathAttrOrigin OBJECT-TYPE
                    SYNTAX     INTEGER {
                                         igp(1),-- networks are interior
                                         egp(2),-- networks learned
                                                -- via EGP
                                         incomplete(3) -- undetermined
                                       }
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The ultimate origin of the path
                            information."
                    ::= { bgp4PathAttrEntry 4 }

                bgp4PathAttrASPathSegment OBJECT-TYPE
                    SYNTAX     OCTET STRING (SIZE (2..255))
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The sequence of AS path segments.  Each AS
                            path segment is represented by a triple
                            <type, length, value>.

                            The type is a 1-octet field which has two
                            possible values:
                                 1      AS_SET: unordered set of ASs a
                                             route in the UPDATE
                                             message has traversed
                                 2      AS_SEQUENCE: ordered set of ASs
                                             a route in the UPDATE
                                             message has traversed.

                            The length is a 1-octet field containing the
                            number of ASs in the value field.

                            The value field contains one or more AS
                            numbers, each AS is represented in the octet
                            string as a pair of octets according to the
                            following algorithm:
                                first-byte-of-pair = ASNumber / 256;
                                second-byte-of-pair = ASNumber & 255;"
                    ::= { bgp4PathAttrEntry 5 }

                bgp4PathAttrNextHop OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The address of the border router that
                            should be used for the destination
                            network."
                    ::= { bgp4PathAttrEntry 6 }

                bgp4PathAttrMultiExitDisc OBJECT-TYPE
                    SYNTAX     INTEGER (-1..2147483647)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "This metric is used to discriminate
                            between multiple exit points to an
                            adjacent autonomous system.  A value of -1
                            indicates the absence of this attribute."
                    ::= { bgp4PathAttrEntry 7 }

                bgp4PathAttrLocalPref OBJECT-TYPE
                    SYNTAX     INTEGER (-1..2147483647)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The originating BGP4 speaker's degree of
                            preference for an advertised route.  A
                            value of -1 indicates the absence of this
                            attribute."
                    ::= { bgp4PathAttrEntry 8 }

                bgp4PathAttrAtomicAggregate OBJECT-TYPE
                    SYNTAX     INTEGER {
                                   lessSpecificRrouteNotSelected(1),
                                   lessSpecificRouteSelected(2)
                               }
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "Whether or not the local system has
                            selected a less specific route without
                            selecting a more specific route."
                    ::= { bgp4PathAttrEntry 9 }

                bgp4PathAttrAggregatorAS OBJECT-TYPE
                    SYNTAX     INTEGER (0..65535)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The AS number of the last BGP4 speaker that
                            performed route aggregation.  A value of
                            zero (0) indicates the absence of this
                            attribute."
                    ::= { bgp4PathAttrEntry 10 }

                bgp4PathAttrAggregatorAddr OBJECT-TYPE
                    SYNTAX     IpAddress
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The IP address of the last BGP4 speaker
                            that performed route aggregation.  A value
                            of 0.0.0.0 indicates the absence of this
                            attribute."
                    ::= { bgp4PathAttrEntry 11 }

                bgp4PathAttrCalcLocalPref OBJECT-TYPE
                    SYNTAX     INTEGER (-1..2147483647)
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "The degree of preference calculated by the
                            receiving BGP4 speaker for an advertised
                            route.  A value of -1 indicates the
                            absence of this attribute."
                    ::= { bgp4PathAttrEntry 12 }

                bgp4PathAttrBest OBJECT-TYPE
                    SYNTAX     INTEGER {
                                   false(1),-- not chosen as best route
                                   true(2) -- chosen as best route
                               }
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "An indication of whether or not this route
                            was chosen as the best BGP4 route."
                    ::= { bgp4PathAttrEntry 13 }

               bgp4PathAttrUnknown OBJECT-TYPE
                    SYNTAX     OCTET STRING (SIZE(0..255))
                    MAX-ACCESS read-only
                    STATUS     current
                    DESCRIPTION
                            "One or more path attributes not understood
                             by this BGP4 speaker.  Size zero (0)
                             indicates the absence of such
                             attribute(s).  Octets beyond the maximum
                             size, if any, are not recorded by this
                             object."
                    ::= { bgp4PathAttrEntry 14 }


                -- Traps.

                bgpTraps                OBJECT IDENTIFIER ::= { bgp 7 }

                bgpEstablished NOTIFICATION-TYPE
                    OBJECTS { bgpPeerLastError,
                              bgpPeerState      }
                    STATUS  current
                    DESCRIPTION
                            "The BGP Established event is generated when
                            the BGP FSM enters the ESTABLISHED state."
                    ::= { bgpTraps 1 }

                bgpBackwardTransition NOTIFICATION-TYPE
                    OBJECTS { bgpPeerLastError,
                              bgpPeerState      }
                    STATUS  current
                    DESCRIPTION
                            "The BGPBackwardTransition Event is generated
                            when the BGP FSM moves from a higher numbered
                            state to a lower numbered state."
                    ::= { bgpTraps 2 }


END
