TOC 
Inter-Domain Routing Working GroupJ. Haas
Internet-DraftJune 23, 2008
Intended status: Standards Track 
Expires: December 25, 2008 


Definitions of Managed Objects for the Fourth Version of Border Gateway Protocol (BGP-4), Second Version
draft-ietf-idr-bgp4-mibv2-07

Status of This Memo

By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.

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

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

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

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

This Internet-Draft will expire on December 25, 2008.

Abstract

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols. In particular it defines objects for managing the Border Gateway Protocol, Version 4.



Table of Contents

1.  Introduction
2.  The Internet-Standard Management Framework
3.  Conventions
4.  Overview
5.  Structure of the MIB Module
    5.1.  Global Scalars
    5.2.  Tables
    5.3.  Obsoleted Tables
    5.4.  Textual Conventions
    5.5.  Notifications
    5.6.  Extensions
6.  Relationship to Other MIB Modules
    6.1.  Relationship to the TCP-MIB
    6.2.  MIB modules required for IMPORTS
7.  Definitions
8.  Security Considerations
9.  IANA Considerations
10.  Contributors
11.  Acknowledgements
12.  References
    12.1.  Normative References
    12.2.  Informative References




 TOC 

1.  Introduction

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols. In particular it defines objects for managing the Border Gateway Protocol, Version 4 [RFC4271] (Rekhter, Y., Li, T., and S. Hares, “A Border Gateway Protocol 4 (BGP-4),” January 2006.).



 TOC 

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] (Case, J., Mundy, R., Partain, D., and B. Stewart, “Introduction and Applicability Statements for Internet-Standard Management Framework,” December 2002.).

Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. MIB objects are generally accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined using the mechanisms defined in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578] (McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., “Structure of Management Information Version 2 (SMIv2),” April 1999.), STD 58, RFC 2579 [RFC2579] (McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., “Textual Conventions for SMIv2,” April 1999.) and STD 58, RFC 2580 [RFC2580] (McCloghrie, K., Perkins, D., and J. Schoenwaelder, “Conformance Statements for SMIv2,” April 1999.).



 TOC 

3.  Conventions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.).



 TOC 

4.  Overview

As part of the IETF standardization effort for the BGP-4 protocol, [RFC4273] (Haas, J. and S. Hares, “Definitions of Managed Objects for BGP-4,” January 2006.) was written to address open issues in the previous version of the BGP-4 MIB, [RFC1657] (Willis, S., Burruss, J., and J. Chu, “Definitions of Managed Objects for the Fourth Version of the Border Gateway Protocol (BGP-4) using SMIv2,” July 1994.). However, that RFC was primarily intended to address the base BGP-4 protocol as documented in [RFC4271] (Rekhter, Y., Li, T., and S. Hares, “A Border Gateway Protocol 4 (BGP-4),” January 2006.).

The BGP-4 protocol has greatly increased in scope over the years from its original definition. Scaling mechanisms such as Route Reflection (Bates, T., Chen, E., and R. Chandra, “BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP),” April 2006.) [RFC4456] and Confederations (Traina, P., McPherson, D., and J. Scudder, “Autonomous System Confederations for BGP,” August 2007.) [RFC5065] have been introduced. Multi-protocol extensions (Bates, T., Chandra, R., Katz, D., and Y. Rekhter, “Multiprotocol Extensions for BGP-4,” January 2007.) [RFC4760] were introduced which allowed advertisement of reachability such as IPv6 (Marques, P. and F. Dupont, “Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing,” March 1999.) [RFC2545], MPLS Labeled routes (Rekhter, Y. and E. Rosen, “Carrying Label Information in BGP-4,” May 2001.) [RFC3107], etc.

This MIB addresses several of the deficiencies of the previous BGP-4 MIB and provides an extension mechanism to permit additional MIB modules to be authored without requiring the base BGP-4 MIB to be updated. This is seen as a desirable goal since the BGP-4 protocol continues to receive attention by those wishing to add to its functionality.

In particular, this MIB addresses some specific weaknesses of the previous version:



 TOC 

5.  Structure of the MIB Module



 TOC 

5.1.  Global Scalars



 TOC 

5.2.  Tables



 TOC 

5.3.  Obsoleted Tables



 TOC 

5.4.  Textual Conventions



 TOC 

5.5.  Notifications



 TOC 

5.6.  Extensions

A feature of this MIB is the recognition that the BGP protocol continues to grow in functionality. The bgpExtensions OID is defined to provide a place for IDR-approved MIB modules for BGP extensions to be added to the bgp MIB subtree.

It is intended that, where possible, that tables added via extensions that add information via additional path attributes use bgpAfPathAttrIndex as a common index, either via INDEX or AUGMENTS.



 TOC 

6.  Relationship to Other MIB Modules



 TOC 

6.1.  Relationship to the TCP-MIB

The bgpPeerAfLocalAddrType/bgpPeerAfLocalAddr/bgpPeerAfLocalPort and bgpPeerAfRemoteAddrType/bgpPeerAfRemoteAddr/bgpPeerAfRemotePort objects may provide a suitable index for monitoring the BGP peering session's TCP session via the TCP-MIB (Raghunarayan, R., “Management Information Base for the Transmission Control Protocol (TCP),” March 2005.) [RFC4022].

Note that conducting BGP peering sessions over transport protocols other than TCP over IP are out of scope of the current BGP specifications.



 TOC 

6.2.  MIB modules required for IMPORTS

The following MIB module IMPORTS objects from SNMPv2-SMI [RFC2578] (McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., “Structure of Management Information Version 2 (SMIv2),” April 1999.), SNMPv2-TC [RFC2579] (McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., “Textual Conventions for SMIv2,” April 1999.), SNMPv2-CONF [RFC2580] (McCloghrie, K., Perkins, D., and J. Schoenwaelder, “Conformance Statements for SMIv2,” April 1999.), INET-ADDRESS-MIB [RFC4001] (Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, “Textual Conventions for Internet Network Addresses,” February 2005.) and SNMP-FRAMEWORK-MIB [RFC3411] (Harrington, D., Presuhn, R., and B. Wijnen, “An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks,” December 2002.).



 TOC 

7.  Definitions

BGP4-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
	IpAddress, Counter32, Gauge32, mib-2, Unsigned32, Integer32
            FROM SNMPv2-SMI
        InetAddressType, InetAddress, InetPortNumber,
        InetAutonomousSystemNumber, InetAddressPrefixLength
            FROM INET-ADDRESS-MIB
        TEXTUAL-CONVENTION, TruthValue, RowPointer, TimeStamp
            FROM SNMPv2-TC
        MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
            FROM SNMPv2-CONF
        SnmpAdminString
            FROM SNMP-FRAMEWORK-MIB;

        bgp MODULE-IDENTITY
            LAST-UPDATED "200806220000Z"
            ORGANIZATION "IETF IDR Working Group"
            CONTACT-INFO "E-mail:  idr@ietf.org"

            DESCRIPTION
                    "The MIB module for the BGP-4 protocol.

                     Copyright (C) The Internet Society (2008).  This
                     version of this MIB module is part of RFC XXX;
                     see the RFC itself for full legal notices."
-- RFC Editor - replace XXX with RFC number

	    REVISION "200806220000Z"
	    DESCRIPTION
	           "Changes from RFC 4273:

		    TODO"

            REVISION "200601110000Z"
            DESCRIPTION
                   "Changes from RFC 1657:

                    1) Fixed the definitions of the notifications
                       to make them equivalent to their initial
                       definition in RFC 1269.
                    2) Added compliance and conformance info.
                    3) Updated information for the values of
                       bgpPeerNegotiatedVersion, bgp4PathAttrLocalPref,
                       bgp4PathAttrCalcLocalPref,
                       bgp4PathAttrMultiExitDisc,
                       bgp4PathAttrASPathSegement.
                    4) Added additional clarification comments where
                       needed.
                    5) Noted where objects do not fully reflect
                       the protocol as Known Issues.
                    6) Updated the DESCRIPTION for the
                       bgp4PathAttrAtomicAggregate object.
                    7) The following objects have had their DESCRIPTION
                       clause modified to remove the text that suggested
                       (using 'should' verb) initializing the counter
                       to zero on a transition to the established state:
                         bgpPeerInUpdates, bgpPeerOutUpdates,
                         bgpPeerInTotalMessages, bgpPeerOutTotalMessages
                       Those implementations that still do this are
                       still compliant with this new wording.
                       Applications should not assume counters have
                       started at zero.

                     Published as RFC 4273."

            REVISION "199405050000Z"
            DESCRIPTION
                    "Translated to SMIv2 and published as RFC 1657."

            REVISION "199110261839Z"
            DESCRIPTION
                    "Initial version, published as RFC 1269."
            ::= { mib-2 15 }

    --
    -- Textual Conventions
    --


-- TODO: Separate into BGP4-TC-MIB
    BgpIdentifierTC ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "1d."
        STATUS       current
        DESCRIPTION
	    "The representation of a BGP Identifier.  BGP Identifiers
	     are presented in the received network byte order.

	     The BGP Identifier is displayed as if it is an IP address,
	     even if it would be an illegal one."
	REFERENCE
	    "RFC 4273, Section 4.2"
        SYNTAX OCTET STRING(SIZE (4))


-- TODO: Separate into BGP4-TC-MIB
    BgpAddressFamilyIdentifierTC ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "d"
        STATUS       current
        DESCRIPTION
            "The representation of a BGP AFI"
	REFERENCE
	    "RFC 4760, Section 3"
        SYNTAX Unsigned32(0..65535)


-- TODO: Separate into BGP4-TC-MIB
    BgpSubsequentAddressFamilyIdentifierTC ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "d"
        STATUS       current
        DESCRIPTION
            "The representation of a BGP SAFI"
	REFERENCE
	    "RFC 4760, Section 3"
        SYNTAX Unsigned32(0..255)

    BgpPathAttributeFlagsTC ::= TEXTUAL-CONVENTION
        STATUS       current
	DESCRIPTION
	    "The representation of BGP Path Attribute Flags.  Note that this
	     textual convention is meant to directly map to a BGP Path
	     Attribute's Flags and is thus constrained by protocol to have no
	     more than 8 total bits in use."
	REFERENCE
	    "RFC 4271, Sec. 4.3"
	SYNTAX BITS {
	    optional(0),    -- When set, path attribute is optional instead of
	                    -- well known.
	    transitive(1),  -- Path attribute is transitive when set.
	    partial(2),     -- Path attribute is partial when set.
	    extLength(3)    -- Path attributes has extended length field.
	    -- 4-7 are reserved
	    -- values 8 or greater are illegal.
	}

    --
    -- Top level scalars for this MIB
    --

    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."
        REFERENCE
            "RFC 4271, Section 4.2."
        ::= { bgp 1 }

    -- { bgp 2 } and { bgp 3 } have been deprecated and are documented
    -- elsewhere in this MIB

    bgpIdentifier OBJECT-TYPE
        SYNTAX     IpAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The BGP Identifier of the local system.

	     A SYNTAX of BgpIdentifierTC would be used here,
	     however it would cause this object to be
	     deprecated with no additional value.  The
	     comments in the DESCRIPTION of BgpIdentifierTC
	     apply here."
        REFERENCE
                "RFC 4271, Section 4.2."
        ::= { bgp 4 }

    bgpLocalAsNew OBJECT-TYPE
        SYNTAX     InetAutonomousSystemNumber
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The local autonomous system number.

	     This object supports 4 byte ASes and replaces
	     bgpLocalAs."
	REFERENCE
		 "RFC 4271, Section 4.2, 'My Autonomous System'.

		  RFC 4893, BGP Support for Four-octet AS Number
		  Space."
        ::= { bgp 9 }

    --
    -- Address Family (Af) independent per-peer management information.
    --

    bgpPeerAf
        OBJECT IDENTIFIER ::= { bgp 10 }

    --
    -- Address Family (Af) independent per-peer session management
    -- information.
    --

    bgpPeerAfTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpPeerAfEntry
        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.

	     This table replaces bgpPeerTable."
        ::= { bgpPeerAf 1 }

    bgpPeerAfEntry OBJECT-TYPE
        SYNTAX     BgpPeerAfEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Entry containing information about the connection with
             a remote BGP peer."
        INDEX {
	    bgpPeerAfInstance,
            bgpPeerAfLocalAddrType,
            bgpPeerAfLocalAddr,
            bgpPeerAfRemoteAddrType,
            bgpPeerAfRemoteAddr
        }
        ::= { bgpPeerAfTable 1 }

    BgpPeerAfEntry ::= SEQUENCE {
	-- INDEX information
	bgpPeerAfInstance
	    Unsigned32,
        bgpPeerAfLocalAddrType
            InetAddressType,
        bgpPeerAfLocalAddr
            InetAddress,
        bgpPeerAfRemoteAddrType
            InetAddressType,
        bgpPeerAfRemoteAddr
            InetAddress,

	-- Local
        bgpPeerAfLocalPort
            InetPortNumber,
        bgpPeerAfLocalAs
            InetAutonomousSystemNumber,

	-- Remote
        bgpPeerAfRemotePort
            InetPortNumber,
        bgpPeerAfRemoteAs
            InetAutonomousSystemNumber,
        bgpPeerAfIdentifier
            BgpIdentifierTC,

	-- Session status
        bgpPeerAfAdminStatus
            INTEGER,
        bgpPeerAfPeerState
            INTEGER,
        bgpPeerAfConfiguredVersion
            Unsigned32,
        bgpPeerAfNegotiatedVersion
            Unsigned32
    }

    bgpPeerAfInstance OBJECT-TYPE
	SYNTAX     Unsigned32 (1..4294967295)
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
	    "The routing instance index.

	     Some BGP implementations permit the creation of
	     multiple instances of a BGP routing process. An
	     example includes routers running BGP/MPLS IP Virtual
	     Private Networks.

	     Implementations that do not support multiple
	     routing instances should return 1 for this object."
        ::= { bgpPeerAfEntry 1 }

    bgpPeerAfLocalAddrType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The address family of the local end of the peering
             session."
        ::= { bgpPeerAfEntry 2 }

    bgpPeerAfLocalAddr OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
	    "The local IP address of this entry's BGP connection."
        ::= { bgpPeerAfEntry 3 }

    bgpPeerAfRemoteAddrType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The address family of the remote end of the peering
             session."
        ::= { bgpPeerAfEntry 4 }

    bgpPeerAfRemoteAddr OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
	    "The remote IP address of this entry's BGP peer."
        ::= { bgpPeerAfEntry 5 }

    bgpPeerAfLocalPort OBJECT-TYPE
        SYNTAX     InetPortNumber
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The local port for the TCP connection between the BGP
             peers."
        ::= { bgpPeerAfEntry 6 }

    bgpPeerAfLocalAs OBJECT-TYPE
        SYNTAX     InetAutonomousSystemNumber
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Some implementations of BGP can represent themselves
             as multiple ASes. This is the AS that this peering
             session is representing itself as to the remote peer."
        ::= { bgpPeerAfEntry 7 }

    bgpPeerAfRemotePort OBJECT-TYPE
        SYNTAX     InetPortNumber
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The remote port for the TCP connection between the BGP
             peers.

             Note that the objects bgpPeerAfLocalAddr,
             bgpPeerAfLocalPort, bgpPeerAfRemoteAddr and
             bgpPeerAfRemotePort provide the appropriate reference to
             the standard MIB TCP connection table, or even the ipv6
             TCP MIB as in RFC 4022."
        REFERENCE
            "RFC 2012 - SNMPv2 Management Information Base for the
             Transmission Control Protocol using SMIv2.
             RFC 4022 - IP Version 6 Management Information Base
             for the Transmission Control Protocol."
        ::= { bgpPeerAfEntry 8 }

    bgpPeerAfRemoteAs OBJECT-TYPE
        SYNTAX     InetAutonomousSystemNumber
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The remote autonomous system number received in the BGP
	     OPEN message."
	REFERENCE
            "RFC 4271, Section 4.2."
        ::= { bgpPeerAfEntry 9 }

    bgpPeerAfIdentifier OBJECT-TYPE
        SYNTAX     BgpIdentifierTC
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The BGP Identifier of this entry's remote BGP peer.

	     This entry should be 0.0.0.0 unless the
	     bgpPeerAfPeerState is in the openconfirm or the
	     established state."
        REFERENCE
	    "RFC 4271, Section 4.2, 'BGP Identifier'."
        ::= { bgpPeerAfEntry 10 }

    bgpPeerAfAdminStatus OBJECT-TYPE
        SYNTAX     INTEGER {
            halted(1),
            running(2)
        }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "Whether or not the BGP FSM for this remote peer is
	     halted or running. The BGP FSM for a remote peer is
	     halted after processing a Stop event. Likewise, it is
	     in the running state after a Start event.

	     The bgpPeerAfState will generally be in the idle state
	     when the FSM is halted, although some extensions such
	     as Graceful Restart will leave the peer in the Idle
	     state but with the FSM running."
	REFERENCE
	    "RFC 4271, Section 8.1.2."
        ::= { bgpPeerAfEntry 11 }

    -- TODO - update according to new FSM
    bgpPeerAfPeerState 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."
        REFERENCE
	    "RFC 4271, Section 8.2.2."
        ::= { bgpPeerAfEntry 12 }

    bgpPeerAfConfiguredVersion OBJECT-TYPE
        SYNTAX     Unsigned32 (1..255)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The configured version to originally start with this
             remote peer. The BGP speaker may permit negotiation to a
             lower version number of the protocol."
	REFERENCE
            "RFC 4271, Section 4.2.
             RFC 4271, Section 7."
        ::= { bgpPeerAfEntry 13 }

    bgpPeerAfNegotiatedVersion OBJECT-TYPE
        SYNTAX     Unsigned32 (1..255)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The negotiated version of BGP running between
             the two peers.

             This entry MUST be zero (0) unless the
             bgpPeerAfState is in the openconfirm or the
	     established state.

	     Note that legal values for this object are
	     between 0 and 255."
	REFERENCE
            "RFC 4271, Section 4.2.
             RFC 4271, Section 7."
        ::= { bgpPeerAfEntry 14 }


    --
    -- Address Family (Af) independent per-peer error management
    -- information.
    --

    bgpPeerAfErrors
        OBJECT IDENTIFIER ::= { bgpPeerAf 2 }

    bgpPeerAfErrorsTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpPeerAfErrorsEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "On a per-peer basis, this table reflects the last
             protocol-defined error encountered and reported on
             the peer session. If no entry for a given peer
	     exists in this table, then no such errors have been
	     observed, reported, and recorded on the session."
        ::= { bgpPeerAfErrors 1 }

    bgpPeerAfErrorsEntry OBJECT-TYPE
        SYNTAX     BgpPeerAfErrorsEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Each entry contains information about errors sent
             and received for a particular BGP peer."
        AUGMENTS {
            bgpPeerAfEntry
        }
        ::= { bgpPeerAfErrorsTable 1 }

    BgpPeerAfErrorsEntry ::= SEQUENCE {
        bgpPeerAfLastErrorCodeReceived
            OCTET STRING,
        bgpPeerAfLastErrorSubCodeReceived
            OCTET STRING,
        bgpPeerAfLastErrorReceivedTime
            TimeStamp,
        bgpPeerAfLastErrorReceivedText
            SnmpAdminString,
        bgpPeerAfLastErrorReceivedData
            OCTET STRING,
        bgpPeerAfLastErrorCodeSent
            OCTET STRING,
        bgpPeerAfLastErrorSubCodeSent
            OCTET STRING,
        bgpPeerAfLastErrorSentTime
            TimeStamp,
        bgpPeerAfLastErrorSentText
            SnmpAdminString,
        bgpPeerAfLastErrorSentData
            OCTET STRING
    }

    bgpPeerAfLastErrorCodeReceived OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE (1))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The last error code received from this peer via NOTIFICATION
	     message on this connection.  If no error has occurred, this
	     field is zero."
        REFERENCE
            "RFC 4271, Section 4.5.
	     RFC 4486 optionally supported.
	     RFC 3362, Section 5 optionally supported."
        ::= { bgpPeerAfErrorsEntry 1 }

    bgpPeerAfLastErrorSubCodeReceived OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE (1))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The last subcode received from this peer via NOTIFICATION
	     message on this connection.  If no error has occurred, this
	     field is zero."
        REFERENCE
            "RFC 4271, Section 4.5.
	     RFC 4486 optionally supported.
	     RFC 3362, Section 5 optionally supported."
        ::= { bgpPeerAfErrorsEntry 2 }

    bgpPeerAfLastErrorReceivedTime OBJECT-TYPE
        SYNTAX     TimeStamp
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The timestamp that the last NOTIFICATION was received from
             this peer."
        REFERENCE
            "RFC 4271, Section 4.5."
        ::= { bgpPeerAfErrorsEntry 3 }

    bgpPeerAfLastErrorReceivedText OBJECT-TYPE
        SYNTAX     SnmpAdminString
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This object contains an implementation specific
             explanation of the error that was reported."
        ::= { bgpPeerAfErrorsEntry 4 }

    bgpPeerAfLastErrorReceivedData OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE(0..4075))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The last error code's data seen by this peer.

	     Per RFC 2578, some implementations may have limitations
	     dealing with OCTET STRINGS larger than 255.  Thus, this
	     data may be truncated."
        REFERENCE
            "RFC 4271, Section 4.5,
	     RFC 2578, Section 7.1.2,
	     RFC 4486 optionaly supported.
	     RFC 3362, Section 5 optionally supported."
        ::= { bgpPeerAfErrorsEntry 5 }

    bgpPeerAfLastErrorCodeSent OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE (1))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The last error code sent to this peer via NOTIFICATION
	     message on this connection.  If no error has occurred, this
	     field is zero."
        REFERENCE
            "RFC 4271, Section 4.5.
	     RFC 4486 optionally supported.
	     RFC 3362, Section 5 optionally supported."
        ::= { bgpPeerAfErrorsEntry 6 }

    bgpPeerAfLastErrorSubCodeSent OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE (1))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The last subcode sent to this peer via NOTIFICATION
	     message on this connection.  If no error has occurred, this
	     field is zero."
        REFERENCE
            "RFC 4271, Section 4.5.
	     RFC 4486 optionally supported.
	     RFC 3362, Section 5 optionally supported."
        ::= { bgpPeerAfErrorsEntry 7 }

    bgpPeerAfLastErrorSentTime OBJECT-TYPE
        SYNTAX     TimeStamp
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The timestamp that the last NOTIFICATION was sent to
             this peer."
        REFERENCE
            "RFC 4271, Section 4.5."
        ::= { bgpPeerAfErrorsEntry 8 }

    bgpPeerAfLastErrorSentText OBJECT-TYPE
        SYNTAX     SnmpAdminString
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This object contains an implementation specific
             explanation of the error that is being reported."
        ::= { bgpPeerAfErrorsEntry 9 }

    bgpPeerAfLastErrorSentData OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE(0..4075))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The last error code's data sent to this peer.

	     Per RFC 2578, some implementations may have limitations
	     dealing with OCTET STRINGS larger than 255.  Thus, this
	     data may be truncated."
        REFERENCE
            "RFC 4271, Section 4.5,
	     RFC 2578, Section 7.1.2
	     RFC 4486 optionaly supported.
	     RFC 3362, Section 5 optionally supported."
        ::= { bgpPeerAfErrorsEntry 10 }

    --
    -- Address Family (Af) independent per-peer timer information
    --

    bgpPeerAfTimers
        OBJECT IDENTIFIER ::= { bgpPeerAf 3 }

    --
    -- Per-peer Event Times
    --

    bgpPeerAfEventTimesTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpPeerAfEventTimesEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "A table reporting the per-peering session amount
             of time elapsed and update events since the peering
             session advanced into the established state."
        ::= { bgpPeerAfTimers 1 }

    bgpPeerAfEventTimesEntry OBJECT-TYPE
        SYNTAX     BgpPeerAfEventTimesEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Each row contains a set of statistics about time
             spent and events encountered in the peer session
             established state."
        AUGMENTS {
            bgpPeerAfEntry
        }
        ::= { bgpPeerAfEventTimesTable 1 }

    BgpPeerAfEventTimesEntry ::= SEQUENCE {
        bgpPeerAfFsmEstablishedTime
            Gauge32,
        bgpPeerAfInUpdatesElapsedTime
            Gauge32
    }

    bgpPeerAfFsmEstablishedTime OBJECT-TYPE
        SYNTAX     Gauge32
	UNITS      "seconds"
        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 when the router is
	     booted.  If the peer has never reached the established
	     state, the value remains zero."
	REFERENCE
	    "RFC 4271, Section 8."
        ::= { bgpPeerAfEventTimesEntry 1 }

    bgpPeerAfInUpdatesElapsedTime OBJECT-TYPE
        SYNTAX     Gauge32
	UNITS      "seconds"
        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)."
	REFERENCE
	    "RFC 4271, Section 4.3.
	     RFC 4271, Section 8.2.2, Established state."

        ::= { bgpPeerAfEventTimesEntry 2 }

    --
    -- Per-Peer Configured Timers
    --

    bgpPeerAfConfiguredTimersTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpPeerAfConfiguredTimersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Per peer management data on BGP session timers."
        ::= { bgpPeerAfTimers 2 }

    bgpPeerAfConfiguredTimersEntry OBJECT-TYPE
        SYNTAX     BgpPeerAfConfiguredTimersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Each entry corresponds to the current state of
             BGP timers on a given peering session."
        AUGMENTS {
            bgpPeerAfEntry
        }
        ::= { bgpPeerAfConfiguredTimersTable 1 }

    BgpPeerAfConfiguredTimersEntry ::= SEQUENCE {
        bgpPeerAfConnectRetryInterval
            Unsigned32,
        bgpPeerAfHoldTimeConfigured
            Unsigned32,
        bgpPeerAfKeepAliveConfigured
            Unsigned32,
        bgpPeerAfMinASOrigInterval
            Unsigned32,
        bgpPeerAfMinRouteAdverInterval
            Unsigned32
    }

    bgpPeerAfConnectRetryInterval OBJECT-TYPE
        SYNTAX     Unsigned32 (1..65535)
	UNITS      "seconds"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "Time interval (in seconds) for the ConnectRetry timer.
	     The suggested value for this timer is 120 seconds."
	REFERENCE
	    "RFC 4271, Section 8.2.2.  This is the value used
	     to initialize the 'ConnectRetryTimer'."
        ::= { bgpPeerAfConfiguredTimersEntry 1 }

    bgpPeerAfHoldTimeConfigured OBJECT-TYPE
        SYNTAX     Unsigned32 ( 0 | 3..65535 )
        UNITS      "seconds"
        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, using the smaller of the
	     values in bgpPeerHoldTimeConfigured and the Hold Time
	     received in the OPEN message.

	     This value must be at least three seconds if it is not
	     zero (0).

	     If the Hold Timer has not been established with the
	     peer this object MUST have a value of zero (0).

	     If the bgpPeerHoldTimeConfigured object has a value of
	     (0), then this object MUST have a value of (0)."
	REFERENCE
	    "RFC 4271, Section 4.2."
        ::= { bgpPeerAfConfiguredTimersEntry 2 }

    bgpPeerAfKeepAliveConfigured OBJECT-TYPE
        SYNTAX     Unsigned32 ( 0 | 1..21845 )
        UNITS      "seconds"
        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 one
	     third of that of bgpPeerHoldTimeConfigured.

	     If the value of this object is zero (0), no periodic
	     KEEPALIVE messages are sent to the peer after the BGP
	     connection has been established.  The suggested value
	     for this timer is 30 seconds."
	REFERENCE
	    "RFC 4271, Section 4.4.
	     RFC 4271, Section 10."
        ::= { bgpPeerAfConfiguredTimersEntry 3 }

    bgpPeerAfMinASOrigInterval OBJECT-TYPE
        SYNTAX     Unsigned32 (0..65535)
	UNITS      "seconds"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "Time interval (in seconds) for the
	     MinASOriginationInterval timer.

	     The suggested value for this timer is 15 seconds."
	REFERENCE
	    "RFC 4271, Section 9.2.1.2.
	     RFC 4271, Section 10."
        ::= { bgpPeerAfConfiguredTimersEntry 4 }

    bgpPeerAfMinRouteAdverInterval OBJECT-TYPE
        SYNTAX     Unsigned32 (0..65535)
	UNITS      "seconds"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "Time interval (in seconds) for the
	     MinRouteAdvertisementInterval timer.

	     The suggested value for this timer is 30 seconds for
	     EBGP connections and 5 seconds for IBGP connections."
	REFERENCE
	    "RFC 4271, Section 9.2.1.1.
	     RFC 4271, Section 10."
        ::= { bgpPeerAfConfiguredTimersEntry 5 }

    --
    -- Per-Peer Negotiated Timers
    --

    bgpPeerAfNegotiatedTimersTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpPeerAfNegotiatedTimersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Configured values of per-peer timers are seen
             in the bgpPeerAfConfiguredTimersTable.

             Values in this table reflect the current
             operational values, after negotiation from values
             derived from initial configuration."
        ::= { bgpPeerAfTimers 3 }

    bgpPeerAfNegotiatedTimersEntry OBJECT-TYPE
        SYNTAX     BgpPeerAfNegotiatedTimersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Each entry reflects a value of the currently
             operational, negotiated timer as reflected in the
             BgpPeerAfNegotiatedTimersEntry."
        AUGMENTS {
            bgpPeerAfEntry
        }
        ::= { bgpPeerAfNegotiatedTimersTable 1 }

    BgpPeerAfNegotiatedTimersEntry ::= SEQUENCE {
        bgpPeerAfHoldTime
            Unsigned32,
        bgpPeerAfKeepAlive
            Unsigned32
    }

    bgpPeerAfHoldTime OBJECT-TYPE
        SYNTAX     Unsigned32 ( 0 | 3..65535 )
	UNITS      "seconds"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The value of this object is calculated by this BGP
             Speaker as being;

             zero (0) - if this was the value sent by the peer and
             this value is permitted by this BGP Speaker. In this
             case, no keepalive messages are sent and the Hold Timer
             is not set.

             At least three (3). This value is the smaller of
             the value sent by this peer in the OPEN message and
             bgpPeerAfHoldTimeConfigured for this peer.

             This value is only defined when the peering session is
             in the Established state."
        REFERENCE
	    "RFC 4271, Section 4.2."
        ::= { bgpPeerAfNegotiatedTimersEntry 1 }

    bgpPeerAfKeepAlive OBJECT-TYPE
        SYNTAX     Unsigned32 ( 0 | 1..21845 )
	UNITS      "seconds"
        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 bgpPeerAfHoldTime, it has the same
             proportion as what bgpPeerAfKeepAliveConfigured has
             when compared with bgpPeerAfHoldTimeConfigured. 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
             bgpPeerAfKeepAliveConfigured is zero (0).

             This value is only defined when the peering session is
             in the Established state."
        REFERENCE
	    "RFC 4271, Section 4.4."
        ::= { bgpPeerAfNegotiatedTimersEntry 2 }

    --
    -- Per-peer counters
    --

    bgpPeerAfCounters
        OBJECT IDENTIFIER ::= { bgpPeerAf 4 }

    bgpPeerAfCountersTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpPeerAfCountersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The counters associated with a BGP Peer."
        ::= { bgpPeerAfCounters 1 }

    bgpPeerAfCountersEntry OBJECT-TYPE
        SYNTAX     BgpPeerAfCountersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Each entry contains counters of message transmissions
             and FSM transitions for a given BGP Peering session."
        AUGMENTS {
            bgpPeerAfEntry
        }
        ::= { bgpPeerAfCountersTable 1 }

    BgpPeerAfCountersEntry ::= SEQUENCE {
        bgpPeerAfInUpdates
            Counter32,
        bgpPeerAfOutUpdates
            Counter32,
        bgpPeerAfInTotalMessages
            Counter32,
        bgpPeerAfOutTotalMessages
            Counter32,
        bgpPeerAfFsmEstablishedTransitions
            Counter32
    }

    bgpPeerAfInUpdates OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The number of BGP UPDATE messages received on this
             connection."
        ::= { bgpPeerAfCountersEntry 1 }

    bgpPeerAfOutUpdates OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The number of BGP UPDATE messages transmitted on this
             connection."
        ::= { bgpPeerAfCountersEntry 2 }

    bgpPeerAfInTotalMessages OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The total number of messages received from the remote
             peer on this connection."
        ::= { bgpPeerAfCountersEntry 3 }

    bgpPeerAfOutTotalMessages OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The total number of messages transmitted to the remote
             peer on this connection."
        ::= { bgpPeerAfCountersEntry 4 }

    bgpPeerAfFsmEstablishedTransitions OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The total number of times the BGP FSM transitioned into
	     the established state for this peer."
        ::= { bgpPeerAfCountersEntry 5 }

    --
    -- Per-Peer Prefix Counters
    --

    bgpPrefixCountersTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpPrefixCountersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
	    "Additional per-peer, per AFI-SAFI counters for
	     prefixes"
        ::= { bgpPeerAfCounters 2 }

    bgpPrefixCountersEntry OBJECT-TYPE
        SYNTAX     BgpPrefixCountersEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Entry containing information about a bgp-peers prefix
             counters."
        INDEX {
	    bgpPeerAfInstance,
            bgpPeerAfLocalAddrType,
            bgpPeerAfLocalAddr,
            bgpPeerAfRemoteAddrType,
            bgpPeerAfRemoteAddr,
            bgpPrefixCountersAfi,
            bgpPrefixCountersSafi
        }
        ::= { bgpPrefixCountersTable 1 }

    BgpPrefixCountersEntry ::= SEQUENCE {
        bgpPrefixCountersAfi
            BgpAddressFamilyIdentifierTC,
        bgpPrefixCountersSafi
            BgpSubsequentAddressFamilyIdentifierTC,
        bgpPrefixInPrefixes
            Gauge32,
        bgpPrefixInPrefixesAccepted
            Gauge32,
        bgpPrefixOutPrefixes
            Gauge32
    }

    bgpPrefixCountersAfi OBJECT-TYPE
        SYNTAX     BgpAddressFamilyIdentifierTC
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The AFI index of the per-peer, per prefix counters"
        ::= { bgpPrefixCountersEntry 1 }

    bgpPrefixCountersSafi OBJECT-TYPE
        SYNTAX     BgpSubsequentAddressFamilyIdentifierTC
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The SAFI index of the per-peer, per prefix counters"
        ::= { bgpPrefixCountersEntry 2 }

    bgpPrefixInPrefixes OBJECT-TYPE
        SYNTAX     Gauge32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The number of prefixes received from a peer and are
             stored in the Adj-Ribs-In for that peer.

	     Note that this number does not reflect prefixes that
	     have been discarded due to policy."
        REFERENCE
	    "RFC 4271, Sections 3.2 and 9."
        ::= { bgpPrefixCountersEntry 3 }

    bgpPrefixInPrefixesAccepted OBJECT-TYPE
        SYNTAX     Gauge32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The number of prefixes for a peer that are installed
             in the Adj-Ribs-In and are eligible to become active
             in the Loc-Rib."
        REFERENCE
	    "RFC 4271, Sections 3.2 and 9."
        ::= { bgpPrefixCountersEntry 4 }

    bgpPrefixOutPrefixes OBJECT-TYPE
        SYNTAX     Gauge32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The number of prefixes for a peer that are installed
             in that peer's Adj-Ribs-Out."
        REFERENCE
	    "RFC 4271, Sections 3.2 and 9."
        ::= { bgpPrefixCountersEntry 5 }

    --
    -- BGP NLRI Data
    --

    bgpRib
        OBJECT IDENTIFIER ::= { bgp 11 }

    --
    -- NLRI Table
    --

    bgpNlriTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpNlriEntry
        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. Collectively, this
             represents the Adj-Ribs-In. The route where
             bgpNlriBest is true represents, for this NLRI,
             the route that is installed in the LocRib from the
             Adj-Ribs-In."
        REFERENCE
	    "RFC 4271, Sections 3.2 and 9."
        ::= { bgpRib 1 }

    bgpNlriEntry OBJECT-TYPE
        SYNTAX     BgpNlriEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Information about a path to a network."
        INDEX {
            bgpNlriAfi,
            bgpNlriSafi,
            bgpNlriPrefix,
            bgpNlriPrefixLen,
            bgpNlriIndex,
	    bgpPeerAfInstance,
            bgpPeerAfLocalAddrType,
            bgpPeerAfLocalAddr,
            bgpPeerAfRemoteAddrType,
            bgpPeerAfRemoteAddr
        }
        ::= { bgpNlriTable 1 }

    BgpNlriEntry ::= SEQUENCE {
        bgpNlriIndex
            Unsigned32,
        bgpNlriAfi
            BgpAddressFamilyIdentifierTC,
        bgpNlriSafi
            BgpSubsequentAddressFamilyIdentifierTC,
 	bgpNlriPrefixType
 	    InetAddressType,
        bgpNlriPrefix
            InetAddress,
        bgpNlriPrefixLen
            InetAddressPrefixLength,
        bgpNlriBest
            TruthValue,
        bgpNlriCalcLocalPref
            Unsigned32,
	bgpAfPathAttrIndex
	    Unsigned32,
	bgpAfPathAttrUnknownIndex
	    Unsigned32
    }

    bgpNlriIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "This index allows for multiple instances of a base
             prefix for a certain AFI-SAFI from a given peer.
             This is currently useful for two things:
             1. Allowing for a peer in future implementations to
                send more than a single route instance.
             2. Allow for extensions which extend the NLRI field
                to send the same prefix while utilizing other
                extension specific information. An example of
                this is RFC 3107 - Carrying MPLS labels in BGP."
        REFERENCE
            "RFC 3107 - Carrying Label Information in BGP-4."
        ::= { bgpNlriEntry 1 }

    bgpNlriAfi OBJECT-TYPE
        SYNTAX     BgpAddressFamilyIdentifierTC
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The address family of the prefix for this NLRI.

	     Note that the AFI is not necessarily equivalent to
	     the an InetAddressType."
	REFERENCE
            "RFC 4760 - Multiprotocol Extensions for BGP-4"
        ::= { bgpNlriEntry 2 }

    bgpNlriSafi OBJECT-TYPE
        SYNTAX     BgpSubsequentAddressFamilyIdentifierTC
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The subsequent address family of the prefix for
             this NLRI"
        REFERENCE
            "RFC 4760 - Multiprotocol Extensions for BGP-4"
        ::= { bgpNlriEntry 3 }

    bgpNlriPrefixType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The type of the IP address prefix in the
	     Network Layer Reachability Information field.
	     The value of this object is derived from the
	     appropriate value from the bgpNlriAfi field.
	     Where an appropriate InetAddressType is not
	     available, the value of the object must be
	     unknown(0)."
        ::= { bgpNlriEntry 4 }

    bgpNlriPrefix OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS not-accessible
        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
             bgpAfPathAttrAddrPrefixLen.
             Any bits beyond the length specified by
             bgpAfPathAttrAddrPrefixLen are zeroed."
	REFERENCE
	    "RFC 4271, Section 4.3."
        ::= { bgpNlriEntry 5 }

    bgpNlriPrefixLen OBJECT-TYPE
        SYNTAX     InetAddressPrefixLength
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Length in bits of the address prefix in
             the Network Layer Reachability Information field."
        ::= { bgpNlriEntry 6 }

    bgpNlriBest OBJECT-TYPE
        SYNTAX     TruthValue
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "An indication of whether or not this route
	     was chosen as the best BGP4 route for this
	     destination."
	REFERENCE
	    "RFC 4271, Section 9.1.2."
        ::= { bgpNlriEntry 7 }

    bgpNlriCalcLocalPref OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The degree of preference calculated by the
             receiving BGP4 speaker for an advertised
             route.

	     In the case where this prefix is ineligible, this
	     object will be absent."
	REFERENCE
	    "RFC 4271, Section 9.1.1"
        ::= { bgpNlriEntry 8 }

    bgpAfPathAttrIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "This value is a unique index for entries in the
	     bgpAfPathAttrTable. It is assigned by the agent at the
	     point of creation of the bgpAfPathAttrTable row entry.
	     While its value is guaranteed to be unique at any time,
	     it is otherwise opaque to the management application
	     with respect to its value or the contiguity of
	     bgpAfPathAttrIndex row instance values across rows of the
	     bgpAfPathAttrTable.

	     Note well that this index is used to distinguish unique
	     sets of Path Attributes sent as part of BGP NLRI.  The
	     implementor is thus encouraged to make this index unique
	     per set of all received path attributes.  This value may
	     be used to index tables in extension MIBs that share the
	     property of belonging to the same received Path Attribute
	     tuple."
        ::= { bgpNlriEntry 9 }

    bgpAfPathAttrUnknownIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "This value is a unique index for entries in the
	     bgpAfPathAttrUnknownTable. It is assigned by the agent at
	     the point of creation of the bgpAfPathAttrUnknownTable row
	     entry.  While its value is guaranteed to be unique at
	     any time, it is otherwise opaque to the management
	     application with respect to its value or the contiguity
	     of bgpAfPathAttrUnknownIndex row instance values across
	     rows of the bgpAfPathAttrUnknownTable."
        ::= { bgpNlriEntry 10 }

    --
    -- Adj-Ribs-Out Table
    --

    bgpAdjRibsOutTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpAdjRibsOutEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "This table contains on a per-peer basis one or more
             routes from the bgpNlriTable that have been
             placed in this peer's Adj-Ribs-Out."
        REFERENCE
            "RFC 4271, Section 3.2."
        ::= { bgpRib 2 }

    bgpAdjRibsOutEntry OBJECT-TYPE
        SYNTAX     BgpAdjRibsOutEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "List of BGP routes that have been placed into a
             peer's Adj-Ribs-Out."
        INDEX {
            bgpNlriAfi,
            bgpNlriSafi,
            bgpNlriPrefix,
            bgpNlriPrefixLen,
            bgpAdjRibsOutIndex,
	    bgpPeerAfInstance,
            bgpPeerAfLocalAddrType,
            bgpPeerAfLocalAddr,
            bgpPeerAfRemoteAddrType,
            bgpPeerAfRemoteAddr
        }
        ::= { bgpAdjRibsOutTable 1 }

    BgpAdjRibsOutEntry ::= SEQUENCE {
        bgpAdjRibsOutIndex
            Unsigned32,
        bgpAdjRibsOutRoute
            RowPointer
    }

    bgpAdjRibsOutIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certain extensions to BGP permit multiple instance of
             a per afi, per safi prefix to be advertised to a peer.
             This object allows the enumeration of them."
        ::= { bgpAdjRibsOutEntry 1 }

    bgpAdjRibsOutRoute OBJECT-TYPE
        SYNTAX     RowPointer
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This object points to the route in the bgpNlriTable
             that corresponds to the entry in the peer's
             Adj-Rib-Out. Outgoing route maps are not
             reflected at this point as those are part of the
             Update-Send process."
        REFERENCE
            "RFC 4271, Section 9.2."
        ::= { bgpAdjRibsOutEntry 2 }

    --
    -- Path Attribute Counter
    --

    bgpAfPathAttrCounter OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The number of entries in the bgpAfPathAttrTable."
        ::= { bgpRib 3 }

    --
    -- Path Attributes Table
    --

    bgpAfPathAttrTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpAfPathAttrEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
	    "Provides per advertised network-prefix attribute data,
             as advertised over a peering session."
        ::= { bgpRib 4 }

    bgpAfPathAttrEntry OBJECT-TYPE
        SYNTAX     BgpAfPathAttrEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Each entry contains data about path attributes
	     associated with a given prefix in the bgpNlriTable."
	REFERENCE
	     "RFC 4271, Section 5."
        INDEX {
            bgpAfPathAttrIndex
        }
        ::= { bgpAfPathAttrTable 1 }

    BgpAfPathAttrEntry ::= SEQUENCE {
        bgpAfPathAttrOrigin
            INTEGER,
        bgpAfPathAttrNextHopAddrType
            InetAddressType,
        bgpAfPathAttrNextHopAddr
            InetAddress,
        bgpAfPathAttrLinkLocalNextHopAddrType
            InetAddressType,
        bgpAfPathAttrLinkLocalNextHopAddr
	    InetAddress,
        bgpAfPathAttrMedPresent
	    TruthValue,
        bgpAfPathAttrMed
            Unsigned32,
        bgpAfPathAttrLocalPref
            Unsigned32,
        bgpAfPathAttrAtomicAggregate
            INTEGER,
        bgpAfPathAttrAggregatorAS
            InetAutonomousSystemNumber,
        bgpAfPathAttrAggregatorAddr
            BgpIdentifierTC,
        bgpAsPathCalcLength
            Unsigned32,
        bgpAsPathIndex
            Unsigned32,
        bgpAsPathString
            SnmpAdminString
    }

    bgpAfPathAttrOrigin OBJECT-TYPE
        SYNTAX     INTEGER {
            igp(1),-- networks are interior
            egp(2),-- networks learned via the EGP protocol
            incomplete(3) -- networks that
                          -- are learned by some other
                          -- means
            }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The ultimate origin of the path information."
	REFERENCE
	    "RFC 4271, Section 4.3.
	     RFC 4271, Section 5.1.1."
        ::= { bgpAfPathAttrEntry 1 }

    bgpAfPathAttrNextHopAddrType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The address family of the address for
             the border router that should be used
             to access the destination network."
        ::= { bgpAfPathAttrEntry 2 }

    bgpAfPathAttrNextHopAddr OBJECT-TYPE
        SYNTAX     InetAddress (SIZE(4..20))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The address of the border router that
             should be used to access the destination
             network. This address is the nexthop
             address received in the UPDATE packet associated with
	     this prefix.

             Note that for RFC2545 style double nexthops,
             this object will always contain the global scope
             nexthop. bgpPathAttrLinkLocalNextHop will contain
             the linklocal scope nexthop, if it is present.

	     In the case a mechanism is developed to use only a link
	     local nexthop, bgpAfPathAttrNextHopAddr will contain the
	     link local nexthop."
	REFERENCE
	    "RFC 4271, Section 4.3,
	     RFC 4271, Section 5.1.3,
	     RFC 2545, Section 3."
        ::= { bgpAfPathAttrEntry 3 }

    bgpAfPathAttrLinkLocalNextHopAddrType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The address type for IPv6 link local addresses.
	     This is present only when receiving RFC 2545
	     style double nexthops.

	     This object is optionally present in BGP
	     implementations that do not support IPv6."
	REFERENCE
	    "RFC 2545, Section 3."
        ::= { bgpAfPathAttrEntry 4 }

    bgpAfPathAttrLinkLocalNextHopAddr OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This value contains an IPv6 link local address
	     and is present only when receiving RFC 2545 style
	     double nexthops.

	     This object is optionally present in BGP
	     implementations that do not support IPv6."
	REFERENCE
	    "RFC 2545, Section 3."
        ::= { bgpAfPathAttrEntry 5 }

    bgpAfPathAttrMedPresent OBJECT-TYPE
        SYNTAX     TruthValue
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This value is true when the MED value was sent in
	     the UPDATE message."
        ::= { bgpAfPathAttrEntry 6 }

    bgpAfPathAttrMed OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "This metric is used to discriminate between multiple
	     exit points to an adjacent autonomous system.  When the MED
	     value is absent but has a calculated default value, this
	     object will contain the calculated value."
	REFERENCE
	    "RFC 4271, Section 4.3.
	     RFC 4271, Section 5.1.4."
        ::= { bgpAfPathAttrEntry 7 }

    bgpAfPathAttrLocalPref OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The originating BGP4 speakers degree of preference for an
	     advertised route.  If the route was not sent with a LOCAL_PREF
	     value, this object will be absent."
	REFERENCE
	    "RFC 4271, Section 4.3.
	     RFC 4271, Section 5.1.5."
        ::= { bgpAfPathAttrEntry 8 }

    bgpAfPathAttrAtomicAggregate OBJECT-TYPE
        SYNTAX     INTEGER {
            atomicAggregatePresent(1),
            atomicAggregateMissing(2)
            }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "When this object is set to atomicAggregatePresent,
	     the ATOMIC_AGGREGATE Path Attribute is present and
	     indicates that the NLRI MUST NOT be made more
	     specific."
	REFERENCE
	    "RFC 4271, Sections 5.1.6 and 9.1.4."
        ::= { bgpAfPathAttrEntry 9 }

    bgpAfPathAttrAggregatorAS OBJECT-TYPE
        SYNTAX     InetAutonomousSystemNumber
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The AS number of the last BGP4 speaker that performed route
	     aggregation. If the AGGREGATOR path attribute is absent, this
	     object will not be present in the conceptual row."
        REFERENCE
	    "RFC 4271, Section 5.1.7.
             RFC 4271, Section 9.2.2.2."
        ::= { bgpAfPathAttrEntry 10 }

    bgpAfPathAttrAggregatorAddr OBJECT-TYPE
        SYNTAX     BgpIdentifierTC
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "The IP address of the last BGP4 speaker that performed route
	     aggregation.  If the AGGREGATOR path attribute is absent, this
	     object will not be present in the conceptual row."
        REFERENCE
	    "RFC 4271, Section 5.1.7.
             RFC 4271, Section 9.2.2.2."
        ::= { bgpAfPathAttrEntry 11 }

    bgpAsPathCalcLength OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This value represents the calculated length of the
	     AS Path according to the rules of the BGP
	     specification.  This value is used in route selection."
        REFERENCE
            "RFC 4271, Section 9.1.2.2.a"
        ::= { bgpAfPathAttrEntry 12 }

    bgpAsPathIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This value is a unique index for the decomposed AS Path
             in the bgpAsPathTable. It is assigned by the
             agent at the point of creation of the bgpAsPathTable
             row entry. While its value is guaranteed to be unique
             at any time, it is otherwise opaque to the management
             application with respect to its value or the contiguity
             of bgpAsPathIndex row instance values across rows
             of the bgpAsPathTable."
        ::= { bgpAfPathAttrEntry 13 }

    bgpAsPathString OBJECT-TYPE
        SYNTAX     SnmpAdminString
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "This is a string depicting the autonomous system
             path to this network which was received from the
             peer which advertised it. The format of the string
             is implementation-dependent, and should be designed
             for operator readability.

	     Note that SnmpAdminString is only capable of
	     representing a maximum of 255 characters.  This may
	     lead to the string being truncated in the presence of
	     a large AS Path.  The bgpAsPathTable will give access
	     to the full AS Path."
        ::= { bgpAfPathAttrEntry 14 }


    --
    -- BGP 4 AS_PATH.  This table provides a platform netrual
    -- representation of the AS_PATH.
    --

    bgpAsPathTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpAsPathEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The BGP-4 Path Attribute AS Path Table
             contains the per network path (NLRI)
             AS PATH data received from the
             advertising BGP peer.

	     Note that the bgpAsPathElementValue is 4-byte AS capable.  This
	     table and related objects in this MIB are meant to reflect the
	     active AS_PATH for a 2-byte or a 4-byte AS speaker.  For a
	     transitional 2-byte to 4-byte speaker, the received AS_PATH and
	     AS4_PATH path attributes may be present in an extension MIB."
	REFERENCE
	    "RFC 4271, Sections 4.3 and 5.1.2.
	     RFC 4893, BGP Support for Four-octet AS Number Space"
        ::= { bgpRib 5 }

    bgpAsPathEntry OBJECT-TYPE
        SYNTAX     BgpAsPathEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Information about an AS path provided with a path to
             a network."
        INDEX {
            bgpAsPathIndex,
            bgpAsPathSegmentIndex,
            bgpAsPathElementIndex
        }
        ::= { bgpAsPathTable 1 }

    BgpAsPathEntry ::= SEQUENCE {
        bgpAsPathSegmentIndex
            Unsigned32,
        bgpAsPathElementIndex
            Unsigned32,
        bgpAsPathType
            INTEGER,
        bgpAsPathElementValue
            InetAutonomousSystemNumber
    }

    bgpAsPathSegmentIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "A per-AS path segment index.  This will index a set of
             autonomous systems in an AS path which are part
             of the same sequence or set (as determined by
             the row value of bgpAsPathType, which
             should be the same value for each bgpAsPathTable
             entry indexed by the same bgpAsPathIndex."
	REFERENCE
	    "RFC 4271, Sections 4.3 and 5.1.2."
        ::= { bgpAsPathEntry 1 }

    bgpAsPathElementIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "A per-AS element index.  This will index a particular
             AS within a sequence or set of autonomous systems in
             an AS path."
	REFERENCE
	    "RFC 4271, Sections 4.3 and 5.1.2."
        ::= { bgpAsPathEntry 2 }

    bgpAsPathType OBJECT-TYPE
        SYNTAX     INTEGER {
            asSet(1),
            asSequence(2),
            confedSequence(3),
            confedSet(4)
         }
         MAX-ACCESS read-only
         STATUS     current
         DESCRIPTION
             "The path segment type advertised for the per-AS element.
              Note that all asPath row instances for a given
              bgpAsPathIndex index will have their
              bgpAsPathType set to the same value.
              The values for bgpAsPathType are
              interpreted as defined in the base BGP document
              and the BGP AS Confederations document."
        REFERENCE
	    "RFC 4271, Sections 4.3 and 5.1.2,
             RFC 5065 - BGP AS Confederations"
        ::= { bgpAsPathEntry 3 }

    bgpAsPathElementValue OBJECT-TYPE
        SYNTAX     InetAutonomousSystemNumber
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
	    "An AS the NLRI traversed in the propagation of its
	     advertisement.  This value is to be interpreted in
	     the context of the segment type of the bgpAsPathType
	     in the same conceptual row."
        ::= { bgpAsPathEntry 4 }

    -- BGP 4 Path unknown attribute. There is one row in
    -- this table for each attribute not known by this BGP
    -- implementation (or agent instrumentation), but provided
    -- from a peer.

    bgpAfPathAttrUnknownTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF BgpAfPathAttrUnknownEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The BGP-4 Path Attribute Unknown Table
             contains the per network path (NLRI)
             data on the path attributes advertised
	     with a route but not known to the local BGP
	     implementation or not otherwise capable of being
	     returned from this agent.

	     The absence of row data for a given index value for
	     bgpAfPathAttrIndex indicates a lack of such unknown
	     attribute information for the indicated network path
	     (as indexed by that bgpAfPathAttrIndex value in the
	     bgpAfPathAttrTable)."
	REFERENCE
	    "RFC 4271, Sections 4.3 and 5."
        ::= { bgpRib 6 }

    bgpAfPathAttrUnknownEntry OBJECT-TYPE
        SYNTAX     BgpAfPathAttrUnknownEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Information about an unknown attribute
             provided with a path to a network."
        INDEX {
            bgpAfPathAttrUnknownIndex,
	    bgpAfPathAttrUnknownCode
        }
        ::= { bgpAfPathAttrUnknownTable 1 }

    BgpAfPathAttrUnknownEntry ::= SEQUENCE {
        bgpAfPathAttrUnknownCode
            Unsigned32,
	bgpAfPathAttrUnknownFlags
	    BgpPathAttributeFlagsTC,
        bgpAfPathAttrUnknownValue
            OCTET STRING
    }

    bgpAfPathAttrUnknownCode OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The path attribute code advertised with this unknown
             attribute by the peer."
        ::= { bgpAfPathAttrUnknownEntry 1 }

    -- Maximum size of the following is derived as
    -- 4096 max message size
    -- - 16 BGP message marker bytes
    -- - 2 BGP message size
    -- - 1 BGP message type (UPDATE with unknown attr)
    -- - 2 UPDATE routes length (even assuming no routes)
    -- - 2 UPDATE path attributes length
    -- - 1 path attribute flag octet
    -- - 1 unknown path attr type (in bgpAfPathAttrUnknownCode)
    -- ---------
    -- 4071 bytes maximum per-message attribute value data

    bgpAfPathAttrUnknownFlags OBJECT-TYPE
        SYNTAX     BgpPathAttributeFlagsTC
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    "The flags of the unknown path attribute."
	::= { bgpAfPathAttrUnknownEntry 2 }

    bgpAfPathAttrUnknownValue OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE(0..4071))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Value of path attribute not understood
             by the base BGP-4 document.

	     Per RFC 2578, Section 7.1.2, some implementations
	     may have limitations dealing with OCTET STRINGS
	     larger than 255.  Thus, this data may be truncated.

             Octets beyond the maximum size, if any,
             are not recorded by this row object."
        ::= { bgpAfPathAttrUnknownEntry 3 }

    --
    -- Mount point for extensions
    --

    bgpExtensions OBJECT IDENTIFIER ::= { bgp 12 }

    --
    -- Discontinuity
    --
    bgpDiscontinuityTime OBJECT-TYPE
        SYNTAX     TimeStamp
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
	    "The value of sysUpTime at the most recent occasion at which
	     this BGP management instance has suffered a discontinuity.

	     In particular, tables with abstract indexes such as
	     bgpAfPathAttrIndex, bgpAsPathIndex and
	     bgpAfPathAttrUnknownIndex are not guaranteed to contain the
	     same data across discontinuities."
	 ::= { bgp 13 }

    --
    -- Notifications
    --

    bgpNotification OBJECT IDENTIFIER ::= { bgp 0 }

    -- bgpNotification 1 and 2 have been deprecated and are
    -- documented elsewhere in this MIB

    bgpAfEstablishedNotification NOTIFICATION-TYPE
        OBJECTS {
            bgpPeerAfPeerState,
	    bgpPeerAfLocalPort,
	    bgpPeerAfRemotePort
        }
        STATUS current
        DESCRIPTION
            "The BGP Established event is generated when
             the BGP FSM enters the established state."
        ::= { bgpNotification 3 }

    bgpAfBackwardTransitionNotification NOTIFICATION-TYPE
        OBJECTS {
            bgpPeerAfPeerState,
	    bgpPeerAfLocalPort,
	    bgpPeerAfRemotePort,
            bgpPeerAfLastErrorCodeReceived,
            bgpPeerAfLastErrorSubCodeReceived,
            bgpPeerAfLastErrorReceivedText
        }
        STATUS current
        DESCRIPTION
            "The BGPBackwardTransition Event is generated
             when the BGP FSM moves from a higher numbered
             state to a lower numbered state.

	     Due to the nature of the BGP state machine, an implementation MAY
	     rate limit the generation of this event.  An implementation MAY
	     also generate this notification ONLY when the state machine moves
	     out of the established state.  An implementation should document
	     its specific behavior."
        ::= { bgpNotification 4 }

    --
    -- Conformance Information
    --

    bgpConformance
        OBJECT IDENTIFIER ::= { bgp 8 }

    bgp4MIBCompliances OBJECT IDENTIFIER ::=
        { bgpConformance 1 }

    bgp4MIBGroups OBJECT IDENTIFIER ::=
        { bgpConformance 2 }

    -- bgp4MIBCompliances 1 through 3 have been deprecated and are
    -- documented elsewhere in this MIB.

    bgpAfMIBCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "The compliance statement for entities which
            implement the BGP4 mib."
        MODULE -- this module
        MANDATORY-GROUPS {
            bgpTimersGroup,
            bgpCountersGroup,
            bgpAsPathGroup,
            bgpBaseGroup,
            bgpErrorsGroup,
            bgpPeerAfGroup,
            bgpAfPathAttributesGroup,
            bgpAfMIBGlobalsGroup
            }
        GROUP bgpAsPathGroup
        DESCRIPTION
            "This group is optional for all agent implementations."
        GROUP bgpAfMIBNotificationGroup
	DESCRIPTION
	    "Implementation of BGP Notifications are completely
	     optional in this MIB."

	OBJECT bgpPeerAfLocalAddr
	SYNTAX InetAddress (SIZE(4|16|20))
	DESCRIPTION
	    "An implementation is required to support IPv4 peering
	     sessions.  An implementation MAY support IPv6 peering
	     sessions.  IPv6 link-local peering sessions MAY be
	     supported by this MIB."

	OBJECT bgpPeerAfRemoteAddr
	SYNTAX InetAddress (SIZE(4|16|20))
	DESCRIPTION
	    "An implementation is required to support IPv4 peering
	     sessions.  An implementation MAY support IPv6 peering
	     sessions.  IPv6 link-local peering sessions MAY be
	     supported by this MIB."

	OBJECT bgpNlriPrefix
	SYNTAX InetAddress (SIZE(0..16))
	DESCRIPTION
	    "An implementation is required to support IPv4 prefixes.
	     An implementation MAY support IPv6 prefixes."

        OBJECT bgpAfPathAttrLinkLocalNextHopAddrType
	SYNTAX InetAddressType
	DESCRIPTION
	    "This object is only present when RFC 2545 double nexthops
	     are sent for IPv6 reachability.  IPv6 is optionally
	     supported.  When present, this object shall only have a
	     value of ipv6z"

	OBJECT bgpAfPathAttrLinkLocalNextHopAddr
	SYNTAX InetAddress (SIZE(20))
	DESCRIPTION
	    "This object is only present when RFC 2545 double nexthops
	     are sent for IPv6 reachability.  IPv6 is optionally
	     supported.  When present, this object shall only have a
	     size of 20."

	OBJECT bgpPeerAfInstance
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpNlriIndex
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpAdjRibsOutIndex
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpAfPathAttrIndex
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpAsPathIndex
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpAsPathSegmentIndex
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpAsPathElementIndex
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpAfPathAttrUnknownIndex
	SYNTAX Unsigned32 (1..4294967295)
	DESCRIPTION
	    "This object represents an abstract index which can utilize the
	     full range of acceptable SNMP index values."

	OBJECT bgpAfPathAttrUnknownCode
	SYNTAX Unsigned32 (0..255)
	DESCRIPTION
	    "Path attribute codes are one octet."

        ::= { bgp4MIBCompliances 4 }

    bgpAfMIBDeprecatedCompliances MODULE-COMPLIANCE
        STATUS deprecated
        DESCRIPTION
            "The compliance statement for entities which
            implement the BGP4 mib."
         MODULE -- this module
	GROUP bgpAfMIBOldGlobalsGroup
	DESCRIPTION
	    "Implementation of the bgp4MIBGlobalsGroup is OPTIONAL.
	     If it is implemented, then bgp4MIBGlobalsGroup,
	     bgp4MIBPeerGroup, bgp4MIBPathAttrGroup and
	     bgp4MIBNotificationGroup MUST all be implemented."
	GROUP bgp4MIBPeerGroup
	DESCRIPTION
	    "Implementation of the bgp4MIBPeerGroup is OPTIONAL.
	     If it is implemented, then bgp4MIBGlobalsGroup,
	     bgp4MIBPeerGroup, bgp4MIBPathAttrGroup and
	     bgp4MIBNotificationGroup MUST all be implemented."
	GROUP bgp4MIBPathAttrGroup
	DESCRIPTION
	    "Implementation of the bgp4MIBPathAttrGroup is OPTIONAL.
	     If it is implemented, then bgp4MIBGlobalsGroup,
	     bgp4MIBPeerGroup, bgp4MIBPathAttrGroup and
	     bgp4MIBNotificationGroup MUST all be implemented."
	GROUP bgp4MIBNotificationGroup
	DESCRIPTION
	    "Implementation of the bgp4MIBNotificationGroup is OPTIONAL.
	     If it is implemented, then bgp4MIBGlobalsGroup,
	     bgp4MIBPeerGroup, bgp4MIBPathAttrGroup and
	     bgp4MIBNotificationGroup MUST all be implemented."
        ::= { bgp4MIBCompliances 5 }

    -- bgp4MIBGroups 1 through 7 have been deprecated and are documented
    -- elsewhere in this MIB.

    bgpAfMIBGlobalsGroup OBJECT-GROUP
	OBJECTS { bgpVersion,
		  bgpIdentifier,
                  bgpDiscontinuityTime }
	STATUS current
	DESCRIPTION
	    "A collection of objects providing information on global
	     BGP state.  This group covers objects that overlap the
	     old bgp4MIBGlobalsGroup that are still current."
	::= { bgp4MIBGroups 8 }

    bgpAfMIBOldGlobalsGroup OBJECT-GROUP
        OBJECTS { bgpLocalAs }
	STATUS deprecated
	DESCRIPTION
	    "A collection of objects providing information on global
	     BGP state.  This group covers objects that overlap the
	     old bgp4MIBGlobalsGroup that are deprecated."
	::= { bgp4MIBGroups 9 }

    bgpTimersGroup OBJECT-GROUP
        OBJECTS {
            bgpPeerAfFsmEstablishedTime,
            bgpPeerAfInUpdatesElapsedTime,
            bgpPeerAfConnectRetryInterval,
            bgpPeerAfHoldTimeConfigured,
            bgpPeerAfKeepAliveConfigured,
            bgpPeerAfMinASOrigInterval,
            bgpPeerAfMinRouteAdverInterval,
            bgpPeerAfHoldTime,
            bgpPeerAfKeepAlive
        }
        STATUS current
        DESCRIPTION
            "Objects associated with BGP peering timers."
        ::= { bgp4MIBGroups 10 }

    bgpCountersGroup OBJECT-GROUP
        OBJECTS {
            bgpPeerAfInUpdates,
            bgpPeerAfOutUpdates,
            bgpPeerAfInTotalMessages,
            bgpPeerAfOutTotalMessages,
            bgpPeerAfFsmEstablishedTransitions,
            bgpPrefixInPrefixes,
            bgpPrefixInPrefixesAccepted,
            bgpPrefixOutPrefixes
        }
        STATUS current
        DESCRIPTION
            "Objects to count discrete events and exchanges on BGP
             sessions."
         ::= { bgp4MIBGroups 11 }

    bgpAsPathGroup OBJECT-GROUP
        OBJECTS {
            bgpAsPathType,
            bgpAsPathElementValue
        }
        STATUS current
        DESCRIPTION
            "Objects to report AS paths received on BGP NLRIs."
        ::= { bgp4MIBGroups 12 }

    bgpBaseGroup OBJECT-GROUP
        OBJECTS {
            bgpLocalAsNew
        }
        STATUS current
        DESCRIPTION
            "Basic objects in local BGP implementation."
        ::= { bgp4MIBGroups 13 }

    bgpErrorsGroup OBJECT-GROUP
        OBJECTS {
            bgpPeerAfLastErrorCodeReceived,
            bgpPeerAfLastErrorSubCodeReceived,
            bgpPeerAfLastErrorReceivedData,
            bgpPeerAfLastErrorReceivedTime,
            bgpPeerAfLastErrorReceivedText,
            bgpPeerAfLastErrorCodeSent,
            bgpPeerAfLastErrorSubCodeSent,
            bgpPeerAfLastErrorSentData,
            bgpPeerAfLastErrorSentTime,
            bgpPeerAfLastErrorSentText
        }
        STATUS current
        DESCRIPTION
            "Errors received on BGP peering sessions."
        ::= { bgp4MIBGroups 14 }

    bgpPeerAfGroup OBJECT-GROUP
        OBJECTS {
            bgpPeerAfIdentifier,
            bgpPeerAfPeerState,
            bgpPeerAfAdminStatus,
            bgpPeerAfConfiguredVersion,
            bgpPeerAfNegotiatedVersion,
            bgpPeerAfLocalPort,
            bgpPeerAfLocalAs,
            bgpPeerAfRemotePort,
            bgpPeerAfRemoteAs
        }
        STATUS current
        DESCRIPTION
            "Core object types on BGP peering sessions."
        ::= { bgp4MIBGroups 15 }

    bgpAfPathAttributesGroup OBJECT-GROUP
        OBJECTS {
            bgpAfPathAttrCounter,
            bgpAsPathCalcLength,
            bgpAsPathElementValue,
            bgpAsPathIndex,
            bgpAsPathString,
            bgpAsPathType,
            bgpNlriBest,
            bgpNlriCalcLocalPref,
	    bgpNlriPrefixType,
            bgpAdjRibsOutRoute,
            bgpAfPathAttrAggregatorAS,
            bgpAfPathAttrAggregatorAddr,
            bgpAfPathAttrAtomicAggregate,
            bgpAfPathAttrIndex,
            bgpAfPathAttrLocalPref,
            bgpAfPathAttrMed,
            bgpAfPathAttrMedPresent,
            bgpAfPathAttrNextHopAddr,
            bgpAfPathAttrNextHopAddrType,
            bgpAfPathAttrLinkLocalNextHopAddrType,
	    bgpAfPathAttrLinkLocalNextHopAddr,
            bgpAfPathAttrOrigin,
            bgpAfPathAttrUnknownIndex,
            bgpAfPathAttrUnknownFlags,
            bgpAfPathAttrUnknownValue
        }
        STATUS current
        DESCRIPTION
            "Attributes received on BGP peering sessions."
        ::= { bgp4MIBGroups 16 }


    -- =========================================================
    --
    -- Objects that are deprecated from RFC 4273 follow below.
    --
    -- =========================================================

    bgpLocalAs OBJECT-TYPE
	SYNTAX     Integer32 (0..65535)
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The local autonomous system number.

		 This object has been replaced with bgpLocalAsNew
		 which can accomodate 4-byte AS numbers.  When
		 the Local AS number cannot be represented by
		 a 2-byte number, this object should return the
		 AS_TRANS value, 23456."
	REFERENCE
		 "RFC 4271, Section 4.2, 'My Autonomous System'.

		  RFC 4893, BGP Support for Four-octet AS Number
		  Space."
	::= { 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     deprecated
	DESCRIPTION
		"BGP peer table.  This table contains,
		 one entry per BGP peer, information about the
		 connections with BGP peers.

		 This table has been replaced with bgpPeerAfTable."
	::= { bgp 3 }

    bgpPeerEntry OBJECT-TYPE
	SYNTAX     BgpPeerEntry
	MAX-ACCESS not-accessible
	STATUS     deprecated
	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
		Integer32,
	    bgpPeerRemoteAddr
		IpAddress,
	    bgpPeerRemotePort
		Integer32,
	    bgpPeerRemoteAs
		Integer32,
	    bgpPeerInUpdates
		Counter32,
	    bgpPeerOutUpdates
		Counter32,
	    bgpPeerInTotalMessages
		Counter32,
	    bgpPeerOutTotalMessages
		Counter32,
	    bgpPeerLastError
		OCTET STRING,
	    bgpPeerFsmEstablishedTransitions
		Counter32,
	    bgpPeerFsmEstablishedTime
		Gauge32,
	    bgpPeerConnectRetryInterval
		Integer32,
	    bgpPeerHoldTime
		Integer32,
	    bgpPeerKeepAlive
		Integer32,
	    bgpPeerHoldTimeConfigured
		Integer32,
	    bgpPeerKeepAliveConfigured
		Integer32,
	    bgpPeerMinASOriginationInterval
		Integer32,
	    bgpPeerMinRouteAdvertisementInterval
		Integer32,
	    bgpPeerInUpdateElapsedTime
		Gauge32
	    }

    bgpPeerIdentifier OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The BGP Identifier of this entry's BGP peer.
		 This entry MUST be 0.0.0.0 unless the
		 bgpPeerState is in the openconfirm or the
		 established state.

		 This object has been replaced with
		 bgpPeerAfIdentifier."
	REFERENCE
		"RFC 4271, Section 4.2, 'BGP Identifier'."
	::= { bgpPeerEntry 1 }

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

		 This object has been replaced with
		 bgpPeerAfPeerState."
	REFERENCE
		"RFC 4271, Section 8.2.2."
	::= { bgpPeerEntry 2 }

    bgpPeerAdminStatus OBJECT-TYPE
	SYNTAX     INTEGER {
			    stop(1),
			    start(2)
		   }
	MAX-ACCESS read-write
	STATUS     deprecated
	DESCRIPTION
		"The desired state of the BGP connection.
		 A transition from 'stop' to 'start' will cause
		 the BGP Manual Start Event to be generated.
		 A transition from 'start' to 'stop' will cause
		 the BGP Manual 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.

		 This object has been replaced with
		 bgpPeerAfAdminStatus."
	REFERENCE
		"RFC 4271, Section 8.1.2."
	::= { bgpPeerEntry 3 }

    bgpPeerNegotiatedVersion OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The negotiated version of BGP running between
		 the two peers.

		 This entry MUST be zero (0) unless the
		 bgpPeerState is in the openconfirm or the
		 established state.

		 Note that legal values for this object are
		 between 0 and 255.

		 This object has been replaced with
		 bgpPeerAfNegotiatedVersion."
	REFERENCE
		"RFC 4271, Section 4.2.
		 RFC 4271, Section 7."
	::= { bgpPeerEntry 4 }

    bgpPeerLocalAddr OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The local IP address of this entry's BGP
		 connection.

		 This object has been replaced with
		 bgpPeerAfLocalAddrType and bgpPeerAfLocalAddr."
	::= { bgpPeerEntry 5 }

    bgpPeerLocalPort OBJECT-TYPE
	SYNTAX     Integer32 (0..65535)
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The local port for the TCP connection between
		 the BGP peers.

		 This object has been replaced with
		 bgpPeerAfLocalPort."
	::= { bgpPeerEntry 6 }

    bgpPeerRemoteAddr OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The remote IP address of this entry's BGP
		 peer.

		 This object has been replaced with
		 bgpPeerAfRemoteAddrType and bgpPeerAfRemoteAddr."
	::= { bgpPeerEntry 7 }

    bgpPeerRemotePort OBJECT-TYPE
	SYNTAX     Integer32 (0..65535)
	MAX-ACCESS read-only
	STATUS     deprecated
	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.

		 This object has been replaced with
		 bgpPeerAfRemotePort."
	::= { bgpPeerEntry 8 }

    bgpPeerRemoteAs OBJECT-TYPE
	SYNTAX     Integer32 (0..65535)
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The remote autonomous system number received in
		 the BGP OPEN message.

		 This object has been replaced with
		 bgpPeerAfRemoteAs."
	REFERENCE
		"RFC 4271, Section 4.2."
	::= { bgpPeerEntry 9 }

    bgpPeerInUpdates OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The number of BGP UPDATE messages
		 received on this connection.

		 This object has been replaced with
		 bgpPeerAfInUpdates."
	REFERENCE
		"RFC 4271, Section 4.3."
	::= { bgpPeerEntry 10 }

    bgpPeerOutUpdates OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The number of BGP UPDATE messages
		 transmitted on this connection.

		 This object has been replaced with
		 bgpPeerAfOutUpdates."
	REFERENCE
		"RFC 4271, Section 4.3."
	::= { bgpPeerEntry 11 }

    bgpPeerInTotalMessages OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The total number of messages received
		 from the remote peer on this connection.

		 This object has been replaced with
		 bgpPeerAfInTotalMessages."
	REFERENCE
		"RFC 4271, Section 4."
	::= { bgpPeerEntry 12 }

    bgpPeerOutTotalMessages OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The total number of messages transmitted to
		 the remote peer on this connection.

		 This object has been replaced with
		 bgpPeerAfOutTotalMessages."
	REFERENCE
		"RFC 4271, Section 4."
	::= { bgpPeerEntry 13 }

    bgpPeerLastError OBJECT-TYPE
	SYNTAX     OCTET STRING (SIZE (2))
	MAX-ACCESS read-only
	STATUS     deprecated
	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.

		 This object has been replaced by
		 bgpPeerAfLastErrorCodeRecieved and
		 bgpPeerAfLastErrorSubCodeReceived.  Further, this
		 data has been supplemented by additional objects
		 in the bgpPeerAfErrorsTable."
	REFERENCE
		"RFC 4271, Section 4.5."
	::= { bgpPeerEntry 14 }

    bgpPeerFsmEstablishedTransitions OBJECT-TYPE
	SYNTAX     Counter32
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The total number of times the BGP FSM
		 transitioned into the established state
		 for this peer.

		 This object has been replaced by
		 bgpPeerAfFsmEstablishedTransitions."
	REFERENCE
		"RFC 4271, Section 8."
	::= { bgpPeerEntry 15 }

    bgpPeerFsmEstablishedTime OBJECT-TYPE
	SYNTAX     Gauge32
	UNITS      "seconds"
	MAX-ACCESS read-only
	STATUS     deprecated
	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 when the router is
		 booted.

		 This object has been replaced by
		 bgpPeerAfFsmEstablishedTime."
	REFERENCE
		"RFC 4271, Section 8."
	::= { bgpPeerEntry 16 }

    bgpPeerConnectRetryInterval OBJECT-TYPE
	SYNTAX     Integer32 (1..65535)
	UNITS      "seconds"
	MAX-ACCESS read-write
	STATUS     deprecated
	DESCRIPTION
		"Time interval (in seconds) for the
		 ConnectRetry timer.  The suggested value
		 for this timer is 120 seconds.

		 This object has been replaced by
		 bgpPeerAfConnectRetryInterval."
	REFERENCE
		"RFC 4271, Section 8.2.2.  This is the value used
		 to initialize the 'ConnectRetryTimer'."
	::= { bgpPeerEntry 17 }

    bgpPeerHoldTime OBJECT-TYPE
	SYNTAX     Integer32  ( 0 | 3..65535 )
	UNITS      "seconds"
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"Time interval (in seconds) for the Hold
		 Timer established with the peer.  The
		 value of this object is calculated by this
		 BGP speaker, using the smaller of the
		 values in bgpPeerHoldTimeConfigured and the
		 Hold Time received in the OPEN message.

		 This value must be at least three seconds
		 if it is not zero (0).

		 If the Hold Timer has not been established
		 with the peer this object MUST have a value
		 of zero (0).

		 If the bgpPeerHoldTimeConfigured object has
		 a value of (0), then this object MUST have a
		 value of (0).

		 This object has been replaced by
		 bgpPeerAfHoldTime."
	REFERENCE
		"RFC 4271, Section 4.2."
	::= { bgpPeerEntry 18 }

    bgpPeerKeepAlive OBJECT-TYPE
	SYNTAX     Integer32 ( 0 | 1..21845 )
	UNITS      "seconds"
	MAX-ACCESS read-only
	STATUS     deprecated
	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
		 that bgpPeerKeepAliveConfigured has,
		 compared with bgpPeerHoldTimeConfigured.

		 If the KeepAlive timer has not been established
		 with the peer, this object MUST have a value
		 of zero (0).

		 If the of bgpPeerKeepAliveConfigured object
		 has a value of (0), then this object MUST have
		 a value of (0).

		 This object has been replaced by
		 bgpPeerAfKeepAlive."
	REFERENCE
		"RFC 4271, Section 4.4."
	::= { bgpPeerEntry 19 }

    bgpPeerHoldTimeConfigured OBJECT-TYPE
	SYNTAX     Integer32 ( 0 | 3..65535 )
	UNITS      "seconds"
	MAX-ACCESS read-write
	STATUS     deprecated
	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).  If it is
		 zero (0), the Hold Time is NOT to be
		 established with the peer.  The suggested
		 value for this timer is 90 seconds.

		 This object has been replaced by
		 bgpPeerAfHoldTimeConfigured."
	REFERENCE
		"RFC 4271, Section 4.2.
		 RFC 4271, Section 10."
	::= { bgpPeerEntry 20 }

    bgpPeerKeepAliveConfigured OBJECT-TYPE
	SYNTAX     Integer32 ( 0 | 1..21845 )
	UNITS      "seconds"
	MAX-ACCESS read-write
	STATUS     deprecated
	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 one third of that of
		 bgpPeerHoldTimeConfigured.
		 If the value of this object is zero (0),
		 no periodic KEEPALIVE messages are sent
		 to the peer after the BGP connection has
		 been established.  The suggested value for
		 this timer is 30 seconds.

		 This object has been replaced by
		 bgpPeerAfKeepAliveConfigured."
	REFERENCE
		"RFC 4271, Section 4.4.
		 RFC 4271, Section 10."
	::= { bgpPeerEntry 21 }

    bgpPeerMinASOriginationInterval OBJECT-TYPE
	SYNTAX     Integer32 (1..65535)
	UNITS      "seconds"
	MAX-ACCESS read-write
	STATUS     deprecated
	DESCRIPTION
		"Time interval (in seconds) for the
		 MinASOriginationInterval timer.
		 The suggested value for this timer is 15
		 seconds.

		 This object has been replaced by
		 bgpPeerAfMinASOrigInterval."
	REFERENCE
		"RFC 4271, Section 9.2.1.2.
		 RFC 4271, Section 10."
	::= { bgpPeerEntry 22 }

    bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE
	SYNTAX     Integer32 (1..65535)
	UNITS      "seconds"
	MAX-ACCESS read-write
	STATUS     deprecated
	DESCRIPTION
		"Time interval (in seconds) for the
		 MinRouteAdvertisementInterval timer.
		 The suggested value for this timer is 30
		 seconds for EBGP connections and 5
		 seconds for IBGP connections.

		 This object has been replaced by
		 bgpPeerAfMinRouteAdverInterval."
	REFERENCE
		"RFC 4271, Section 9.2.1.1.
		 RFC 4271, Section 10."
	::= { bgpPeerEntry 23 }

    bgpPeerInUpdateElapsedTime OBJECT-TYPE
	SYNTAX     Gauge32
	UNITS      "seconds"
	MAX-ACCESS read-only
	STATUS     deprecated
	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).

		 This object has been replaced by
		 bgpPeerAfInUpdatesElapsedTime."
	REFERENCE
		"RFC 4271, Section 4.3.
		 RFC 4271, Section 8.2.2, Established state."
	::= { bgpPeerEntry 24 }


    -- BGP Received Path Attribute Table.  This table contains
    -- one entry per path to a network, and path attributes
    -- received from all peers running BGP version 3 or less.
    -- This table is obsolete, having been replaced in
    -- functionality by the bgp4PathAttrTable.

    bgpRcvdPathAttrTable OBJECT-TYPE
	SYNTAX     SEQUENCE OF BgpPathAttrEntry
	MAX-ACCESS not-accessible
	STATUS     obsolete
	DESCRIPTION
		"The BGP Received Path Attribute Table
		 contains information about paths to
		 destination networks, received from all
		 peers running BGP version 3 or less."
	::= { bgp 5 }

    bgpPathAttrEntry OBJECT-TYPE
	SYNTAX     BgpPathAttrEntry
	MAX-ACCESS not-accessible
	STATUS     obsolete
	DESCRIPTION
		"Information about a path to a network."
	INDEX { bgpPathAttrDestNetwork,
		bgpPathAttrPeer        }
	::= { bgpRcvdPathAttrTable 1 }

    BgpPathAttrEntry ::= SEQUENCE {
	bgpPathAttrPeer
	     IpAddress,
	bgpPathAttrDestNetwork
	     IpAddress,
	bgpPathAttrOrigin
	     INTEGER,
	bgpPathAttrASPath
	     OCTET STRING,
	bgpPathAttrNextHop
	     IpAddress,
	bgpPathAttrInterASMetric
	     Integer32
    }

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

    bgpPathAttrDestNetwork OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     obsolete
	DESCRIPTION
		"The address of the destination network."
	REFERENCE
		"RFC 1267, Section 4.3."
	::= { bgpPathAttrEntry 2 }

    bgpPathAttrOrigin OBJECT-TYPE
	SYNTAX     INTEGER {
		       igp(1),-- networks are interior
		       egp(2),-- networks learned via the
			      -- EGP protocol
		       incomplete(3) -- networks that
			      -- are learned by some other
			      -- means
		   }
	MAX-ACCESS read-only
	STATUS     obsolete
	DESCRIPTION
		"The ultimate origin of the path information."
	REFERENCE
		"RFC 1267, Section 4.3.
		 RFC 1267, Section 5."
	::= { bgpPathAttrEntry 3 }

    bgpPathAttrASPath OBJECT-TYPE
	SYNTAX     OCTET STRING (SIZE (2..255))
	MAX-ACCESS read-only
	STATUS     obsolete
	DESCRIPTION
		"The set of ASes that must be traversed to reach
		 the network.  This object is probably best
		 represented as SEQUENCE OF INTEGER.  For SMI
		 compatibility, though, it is represented as
		 OCTET STRING.  Each AS is represented as a pair
		 of octets according to the following algorithm:

		    first-byte-of-pair = ASNumber / 256;
		    second-byte-of-pair = ASNumber & 255;"
	REFERENCE
		"RFC 1267, Section 4.3.
		 RFC 1267, Section 5."
	::= { bgpPathAttrEntry 4 }

    bgpPathAttrNextHop OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     obsolete
	DESCRIPTION
		"The address of the border router that should
		 be used for the destination network."
	REFERENCE
		"RFC 1267, Section 4.3.
		 RFC 1267, Section 5."
	::= { bgpPathAttrEntry 5 }

    bgpPathAttrInterASMetric OBJECT-TYPE
	SYNTAX     Integer32
	MAX-ACCESS read-only
	STATUS     obsolete
	DESCRIPTION
		"The optional inter-AS metric.  If this
		 attribute has not been provided for this route,
		 the value for this object is 0."
	REFERENCE
		"RFC 1267, Section 4.3.
		 RFC 1267, Section 5."
	::= { bgpPathAttrEntry 6 }

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

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

		 This table has been replaced by the functionality
		 provided under the bgpRib OID."
	::= { bgp 6 }

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

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

    bgp4PathAttrPeer OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The IP address of the peer where the path
		 information was learned.

		 This object has been replaced by the following
		 tuples of objects: bgpPeerAfInstance,
		 bgpPeerAfLocalAddrType, bgpPeerAfLocalAddr,
		 bgpPeerAfRemoteAddrType, bgpPeerAfRemoteAddr."
	::= { bgp4PathAttrEntry 1 }

    bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE
	SYNTAX     Integer32 (0..32)
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"Length in bits of the IP address prefix in
		 the Network Layer Reachability
		 Information field.

		 This object has been replaced by bgpNlriPrefixLen."
	::= { bgp4PathAttrEntry 2 }

    bgp4PathAttrIpAddrPrefix OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     deprecated
	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.

		 This object has been replaced by bgpNlriPrefixType
		 and bgpNlriPrefix."
	REFERENCE
		"RFC 4271, Section 4.3."
	::= { bgp4PathAttrEntry 3 }

    bgp4PathAttrOrigin OBJECT-TYPE
	SYNTAX     INTEGER {
		       igp(1),-- networks are interior
		       egp(2),-- networks learned via the
			      -- EGP protocol
		       incomplete(3) -- networks that
			      -- are learned by some other
			      -- means
		   }
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The ultimate origin of the path
		 information.

		 This object has been replaced by bgpAfPathAttrOrigin."
	REFERENCE
		"RFC 4271, Section 4.3.
		 RFC 4271, Section 5.1.1."
	::= { bgp4PathAttrEntry 4 }

    bgp4PathAttrASPathSegment OBJECT-TYPE
	SYNTAX     OCTET STRING (SIZE (2..255))
	MAX-ACCESS read-only
	STATUS     deprecated
	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 that has two
		 possible values:
		     1      AS_SET: unordered set of ASes that a
				 route in the UPDATE message
				 has traversed

		     2      AS_SEQUENCE: ordered set of ASes that
				 a route in the UPDATE message
				 has traversed.

		 The length is a 1-octet field containing the
		 number of ASes 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;

		 Known Issues:
		 o BGP Confederations will result in
		   a type of either 3 or 4.
		 o An AS Path may be longer than 255 octets.
		   This may result in this object containing
		   a truncated AS Path.

		 This object has been replaced by the bgpAsPathTable
		 and supplemented by a human readable object,
		 bgpAsPathString."
	REFERENCE
		"RFC 4271, Section 4.3.
		 RFC 4271, Section 5.1.2."
	::= { bgp4PathAttrEntry 5 }

    bgp4PathAttrNextHop OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The address of the border router that
		 should be used for the destination
		 network.  This address is the NEXT_HOP
		 address received in the UPDATE packet.

		 This object has been replaced by
		 bgpAfPathAttrNextHop."
	REFERENCE
		"RFC 4271, Section 4.3.
		 RFC 4271, Section 5.1.3."
	::= { bgp4PathAttrEntry 6 }

    bgp4PathAttrMultiExitDisc OBJECT-TYPE
	SYNTAX     Integer32 (-1..2147483647)
	MAX-ACCESS read-only
	STATUS     deprecated
	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.

		 Known Issues:
		 o The BGP-4 specification uses an
		   unsigned 32 bit number.  Thus, this
		   object cannot represent the full
		   range of the protocol.

		 This object has been replaced by bgpAfPathAttrMed
		 and bgpAfPathAttrMedPresent."
	REFERENCE
		"RFC 4271, Section 4.3.
		 RFC 4271, Section 5.1.4."
	::= { bgp4PathAttrEntry 7 }

    bgp4PathAttrLocalPref OBJECT-TYPE
	SYNTAX     Integer32 (-1..2147483647)
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The originating BGP4 speaker's degree of
		 preference for an advertised route.  A
		 value of -1 indicates the absence of this
		 attribute.

		 Known Issues:
		 o The BGP-4 specification uses an
		   unsigned 32 bit number and thus this
		   object cannot represent the full
		   range of the protocol.

		 This object has been replaced by bgpAfPathAttrLocalPref."
	REFERENCE
		"RFC 4271, Section 4.3.
		 RFC 4271, Section 5.1.5."
	::= { bgp4PathAttrEntry 8 }

    bgp4PathAttrAtomicAggregate OBJECT-TYPE
	SYNTAX     INTEGER {
		       lessSpecificRouteNotSelected(1),
			   -- Typo corrected from RFC 1657
		       lessSpecificRouteSelected(2)
		   }
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"If the ATOMIC_AGGREGATE attribute is present
		 in the Path Attributes then this object MUST
		 have a value of 'lessSpecificRouteNotSelected'.

		 If the ATOMIC_AGGREGATE attribute is missing
		 in the Path Attributes then this object MUST
		 have a value of 'lessSpecificRouteSelected'.

		 Note that ATOMIC_AGGREGATE is now a primarily
		 informational attribute.

		 This object has been replaced by
		 bgpAfPathAttrAtomicAggregate."
	REFERENCE
		"RFC 4271, Sections 5.1.6 and 9.1.4."
	::= { bgp4PathAttrEntry 9 }

    bgp4PathAttrAggregatorAS OBJECT-TYPE
	SYNTAX     Integer32 (0..65535)
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"The AS number of the last BGP4 speaker that
		 performed route aggregation.  A value of
		 zero (0) indicates the absence of this
		 attribute.

		 Note that propagation of AS of zero is illegal
		 in the Internet.

		 This object has been replaced by
		 bgpAfPathAttrAggregatorAS."
	REFERENCE
		"RFC 4271, Section 5.1.7.
		 RFC 4271, Section 9.2.2.2."
	::= { bgp4PathAttrEntry 10 }

    bgp4PathAttrAggregatorAddr OBJECT-TYPE
	SYNTAX     IpAddress
	MAX-ACCESS read-only
	STATUS     deprecated
	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.

		 This object has been replaced by
		 bgpAfPathAttrAggregatorAddr."
	REFERENCE
		"RFC 4271, Section 5.1.7.
		 RFC 4271, Section 9.2.2.2."
	::= { bgp4PathAttrEntry 11 }

    bgp4PathAttrCalcLocalPref OBJECT-TYPE
	SYNTAX     Integer32 (-1..2147483647)
	MAX-ACCESS read-only
	STATUS     deprecated
	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.

		 Known Issues:
		 o The BGP-4 specification uses an
		   unsigned 32 bit number and thus this
		   object cannot represent the full
		   range of the protocol.

		 This object has been replaced by
		 bgpNlriCalcLocalPref."
	REFERENCE
		"RFC 4271, Section 9.1.1."
	::= { 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     deprecated
	DESCRIPTION
		"An indication of whether this route
		 was chosen as the best BGP4 route for this
		 destination.

		 This object has been replaced by bgpNlriBest."
	REFERENCE
		"RFC 4271, Section 9.1.2."
	::= { bgp4PathAttrEntry 13 }

    bgp4PathAttrUnknown OBJECT-TYPE
	SYNTAX     OCTET STRING (SIZE(0..255))
	MAX-ACCESS read-only
	STATUS     deprecated
	DESCRIPTION
		"One or more path attributes not understood by
		 this BGP4 speaker.

		 Path attributes are recorded in the Update Path
		 attribute format of type, length, value.

		 Size zero (0) indicates the absence of such
		 attributes.

		 Octets beyond the maximum size, if any, are not
		 recorded by this object.

		 Known Issues:
		 o Attributes understood by this speaker, but not
		   represented in this MIB, are unavailable to
		   the agent.

		 This object has been replaced by the contents of
		 bgpAfPathAttrUnknownTable."
	REFERENCE
		"RFC 4271, Section 5."
	::= { bgp4PathAttrEntry 14 }


    -- Traps.
    -- Note that in RFC 1657, bgpTraps was incorrectly
    -- assigned a value of { bgp 7 } and each of the
    -- traps had the bgpPeerRemoteAddr object inappropriately
    -- removed from their OBJECTS clause.  The following
    -- definitions restore the semantics of the traps as
    -- they were initially defined in RFC 1269.

    bgpEstablishedNotification NOTIFICATION-TYPE
	OBJECTS { bgpPeerRemoteAddr,
		  bgpPeerLastError,
		  bgpPeerState      }
	STATUS  deprecated
	DESCRIPTION
		"The bgpEstablishedNotification event is generated
		 when the BGP FSM enters the established state.

		 This Notification replaces the bgpEstablished
		 Notification and has been replaced by
		 bgpAfEstablishedNotification."
	::= { bgpNotification 1 }

    bgpBackwardTransNotification NOTIFICATION-TYPE
	OBJECTS { bgpPeerRemoteAddr,
		  bgpPeerLastError,
		  bgpPeerState      }
	STATUS  deprecated
	DESCRIPTION
		"The bgpBackwardTransNotification event is
		 generated when the BGP FSM moves from a higher
		 numbered state to a lower numbered state.

		 This Notification replaces the
		 bgpBackwardsTransition Notification and has
		 been replaced by bgpAfBackwardsNotification."
	::= { bgpNotification 2 }

    -- { bgp 7 } is deprecated.  Do not allocate new objects or
    --           notifications underneath this branch.

    bgpTraps        OBJECT IDENTIFIER ::= { bgp 7 } -- deprecated

    bgpEstablished NOTIFICATION-TYPE
	OBJECTS { bgpPeerLastError,
		  bgpPeerState      }
	STATUS  deprecated
	DESCRIPTION
		"The bgpEstablished event is generated when
		 the BGP FSM enters the established state.

		 This Notification has been replaced by the
		 bgpEstablishedNotification Notification."
	::= { bgpTraps 1 }

    bgpBackwardTransition NOTIFICATION-TYPE
	OBJECTS { bgpPeerLastError,
		  bgpPeerState      }
	STATUS  deprecated
	DESCRIPTION
		"The bgpBackwardTransition event is generated
		 when the BGP FSM moves from a higher numbered
		 state to a lower numbered state.

		 This Notification has been replaced by the
		 bgpBackwardTransNotification Notification."
	::= { bgpTraps 2 }


    -- Obsolete Compliance statements

    bgp4MIBCompliance MODULE-COMPLIANCE
	STATUS  obsolete
	DESCRIPTION
		"The compliance statement for entities which
		 implement the BGP4 mib.

		 This compliance statement is obsoleted by
		 bgpAfMIBCompliance."
	MODULE  -- this module
	    MANDATORY-GROUPS { bgp4MIBGlobalsGroup,
			       bgp4MIBPeerGroup,
			       bgp4MIBPathAttrGroup }
	    GROUP bgp4MIBNotificationGroup
	    DESCRIPTION
		    "Implementation of BGP Notifications are
		     completely optional in this MIB."
	::= { bgp4MIBCompliances 1 }

    bgp4MIBDeprecatedCompliances MODULE-COMPLIANCE
	STATUS  obsolete
	DESCRIPTION
		"The compliance statement documenting deprecated
		 objects in the BGP4 mib.

		 This compliance statement is obsoleted
		 by bgpAfMIBCompliance."
	MODULE  -- this module
	    GROUP bgp4MIBTrapGroup
	    DESCRIPTION
		"Group containing TRAP objects that were
		 improperly converted from SMIv1 in RFC 1657.
		 The proper semantics have been restored
		 with the objects in bgp4MIBNotificationGroup."
	::= { bgp4MIBCompliances 2 }

    bgp4MIBObsoleteCompliances MODULE-COMPLIANCE
	STATUS  obsolete
	DESCRIPTION
		"The compliance statement documenting obsolete
		 objects in the BGP4 mib."
	MODULE  -- this module
	    GROUP bgpRcvdPathAttrGroup
	    DESCRIPTION
		"Group containing objects relevant to BGP-3
		 and earlier objects."
	::= { bgp4MIBCompliances 3 }

    -- Units of conformance

    bgp4MIBGlobalsGroup OBJECT-GROUP
	OBJECTS { bgpVersion,
		  bgpLocalAs,
		  bgpIdentifier }
	STATUS  obsolete
	DESCRIPTION
		"A collection of objects providing
		 information on global BGP state.

		 This group has been replaced by
		 bgpAfMIBGlobalsGroup and bgpAfMIBOldGlobalsGroup."
	::= { bgp4MIBGroups 1 }

    bgp4MIBPeerGroup OBJECT-GROUP
	OBJECTS { bgpPeerIdentifier,
		  bgpPeerState,
		  bgpPeerAdminStatus,
		  bgpPeerNegotiatedVersion,
		  bgpPeerLocalAddr,
		  bgpPeerLocalPort,
		  bgpPeerRemoteAddr,
		  bgpPeerRemotePort,
		  bgpPeerRemoteAs,
		  bgpPeerInUpdates,
		  bgpPeerOutUpdates,
		  bgpPeerInTotalMessages,
		  bgpPeerOutTotalMessages,
		  bgpPeerLastError,
		  bgpPeerFsmEstablishedTransitions,
		  bgpPeerFsmEstablishedTime,
		  bgpPeerConnectRetryInterval,
		  bgpPeerHoldTime,
		  bgpPeerKeepAlive,
		  bgpPeerHoldTimeConfigured,
		  bgpPeerKeepAliveConfigured,
		  bgpPeerMinASOriginationInterval,
		  bgpPeerMinRouteAdvertisementInterval,
		  bgpPeerInUpdateElapsedTime }
	STATUS  deprecated
	DESCRIPTION
		"A collection of objects for managing BGP peers
		 from the previous version of this MIB.  The
		 individual objects are deprecated and their support
		 is OPTIONAL."
	::= { bgp4MIBGroups 2 }

    bgpRcvdPathAttrGroup OBJECT-GROUP
	OBJECTS { bgpPathAttrPeer,
		  bgpPathAttrDestNetwork,
		  bgpPathAttrOrigin,
		  bgpPathAttrASPath,
		  bgpPathAttrNextHop,
		  bgpPathAttrInterASMetric }
	STATUS  obsolete
	DESCRIPTION
		"A collection of objects for managing BGP-3 and
		earlier path entries.

		This conformance group, like BGP-3, is obsolete."
	::= { bgp4MIBGroups 3 }

    bgp4MIBPathAttrGroup OBJECT-GROUP
	OBJECTS { bgp4PathAttrPeer,
		  bgp4PathAttrIpAddrPrefixLen,
		  bgp4PathAttrIpAddrPrefix,
		  bgp4PathAttrOrigin,
		  bgp4PathAttrASPathSegment,
		  bgp4PathAttrNextHop,
		  bgp4PathAttrMultiExitDisc,
		  bgp4PathAttrLocalPref,
		  bgp4PathAttrAtomicAggregate,
		  bgp4PathAttrAggregatorAS,
		  bgp4PathAttrAggregatorAddr,
		  bgp4PathAttrCalcLocalPref,
		  bgp4PathAttrBest,
		  bgp4PathAttrUnknown }
	STATUS  deprecated
	DESCRIPTION
		"A collection of objects for managing BGP path
		 entries from the previous version of this MIB.  This
		 individual objects are deprecated and their support
		 is OPTIONAL."
	::= { bgp4MIBGroups 4 }

    bgp4MIBTrapGroup NOTIFICATION-GROUP
	NOTIFICATIONS { bgpEstablished,
			bgpBackwardTransition }
	STATUS  deprecated
	DESCRIPTION
		"A collection of notifications for signaling
		 changes in BGP peer relationships.

		 Obsoleted by bgp4MIBNotificationGroup.  Support of
		 the objects in this group is OPTIONAL."
	::= { bgp4MIBGroups 5 }

    bgp4MIBNotificationGroup NOTIFICATION-GROUP
	NOTIFICATIONS { bgpEstablishedNotification,
			bgpBackwardTransNotification }
	STATUS deprecated
	DESCRIPTION
		"A collection of notifications for signaling
		 changes in BGP peer relationships.

		 Obsoletes bgp4MIBTrapGroup.  Obsoleted by
		 bgpAfMIBNotificationGroup.  Support for objects in
		 this group is OPTIONAL."
	::= { bgp4MIBGroups 6 }

    bgpAfMIBNotificationGroup NOTIFICATION-GROUP
        NOTIFICATIONS { bgpAfEstablishedNotification,
			bgpAfBackwardTransitionNotification }
	STATUS current
	DESCRIPTION
		"A collection of notifications for signaling
		 changes in BGP peer relationships.

		 Obsoletes bgp4MIBNotificationGroup."
        ::= { bgp4MIBGroups 7 }

END


 TOC 

8.  Security Considerations

This MIB relates to a system providing inter-domain routing. As such, improper manipulation of the objects represented by this MIB may result in denial of service to a large number of end-users.

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

bgpPeerAdminStatus - Improper change of bgpPeerAdminStatus, from start to stop, can cause significant disruption of the connectivity to those portions of the Internet reached via the applicable remote BGP peer.

bgpPeerConnectRetryInterval - Improper change of this object can cause connections to be disrupted for extremely long time periods when otherwise they would be restored in a relatively short period of time.

bgpPeerHoldTimeConfigured, bgpPeerKeepAliveConfigured - Misconfiguration of these objects can make BGP sessions more fragile and less resilient to denial of service attacks on the inter-domain routing system.

bgpPeerMinASOriginationInterval, bgpPeerMinRouteAdvertisementInterval - Misconfiguration of these objects may adversely affect global Internet convergence of the routes advertised by this BGP speaker. This may result in long-lived routing loops and blackholes for the portions of the Internet that utilize these routes.

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. These are the tables and objects and their sensitivity/vulnerability:

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] (Case, J., Mundy, R., Partain, D., and B. Stewart, “Introduction and Applicability Statements for Internet-Standard Management Framework,” December 2002.), 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.



 TOC 

9.  IANA Considerations

This document includes an OID, bgpExtensions, which defines a name space for future BGP extensions. IANA is requested to create a new registry for new OIDs under bgpExtensions that will define the root OID of future MIB modules for bgp extensions. The assignment OIDs should be done based upon IDR working group consensus.



 TOC 

10.  Contributors

This document owes significant thanks over the years to Wayne Tackabury, Susan Hares and the members of the idr and ops-nm mailing lists. This document represents several years of negotiating operational needs, Internet operational security considerations and the sheer messiness of representing the BGP protocol in SMIv2.

I owe particular thanks to Susan Hares as a mentor who let me dive head-first into the world of Internet standards work by saying, "We have this MIB that just needs a little cleanup to advance in the standards process."



 TOC 

11.  Acknowledgements

We would like to acknowledge the assistance of all the members of the Inter-Domain Routing Working Group, and particularly the following individuals:

Yakov Rekhter, Juniper Networks

Rob Coltun, Redback

Guy Almes, Internet2

Jeff Honig, BSDi

Marshall T. Rose, Dover Beach Consulting, Inc.

Dennis Ferguson, Juniper Networks

Matt Mathis, PSC

John Krawczyk, Bay Networks

Curtis Villamizar, Avici

Dave LeRoy, Pencom Systems

Paul Traina, Juniper Networks

Andrew Partan, MFN

Robert Snyder, Cisco Systems

Dimitry Haskin, Nortel

Peder Chr Norgaard, Telebit Communications A/S

Joel Halpern, CTO Longitude Systems, Inc.

Nick Thille, RedBack Networks

Bert Wijnen, Lucent

Shane Wright, NextHop Technologies

Mike McFadden, Riverstone Networks, Inc.

Jon Saperia, JDS Consulting, Inc.

Wayne Tackabury, Gold Wire Technology, Inc.

Bill Fenner, AT&T Research

RJ Atkinson, Extreme Networks

Dan Romascanu, Avaya

Mathew Richardson, NextHop Technologies

The origin of this document is from RFC 1269 "Definitions of Managed Objects for the Border Gateway Protocol (Version 3)" written by Steve Willis and John Burruss, which was updated by John Chu to support BGP-4 in RFC 1657. The editors wish to acknowledge the fine work of these original authors.



 TOC 

12.  References



 TOC 

12.1. Normative References

[RFC2119] Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML).
[RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., “Structure of Management Information Version 2 (SMIv2),” STD 58, RFC 2578, April 1999 (TXT).
[RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., “Textual Conventions for SMIv2,” STD 58, RFC 2579, April 1999 (TXT).
[RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, “Conformance Statements for SMIv2,” STD 58, RFC 2580, April 1999 (TXT).
[RFC3411] Harrington, D., Presuhn, R., and B. Wijnen, “An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks,” STD 62, RFC 3411, December 2002 (TXT).
[RFC4271] Rekhter, Y., Li, T., and S. Hares, “A Border Gateway Protocol 4 (BGP-4),” RFC 4271, January 2006 (TXT).
[RFC4273] Haas, J. and S. Hares, “Definitions of Managed Objects for BGP-4,” RFC 4273, January 2006 (TXT).
[RFC2545] Marques, P. and F. Dupont, “Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing,” RFC 2545, March 1999 (TXT).
[RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, “Textual Conventions for Internet Network Addresses,” RFC 4001, February 2005 (TXT).
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, “Multiprotocol Extensions for BGP-4,” RFC 4760, January 2007 (TXT).
[RFC5065] Traina, P., McPherson, D., and J. Scudder, “Autonomous System Confederations for BGP,” RFC 5065, August 2007 (TXT).


 TOC 

12.2. Informative References

[RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, “Introduction and Applicability Statements for Internet-Standard Management Framework,” RFC 3410, December 2002 (TXT).
[RFC1657] Willis, S., Burruss, J., and J. Chu, “Definitions of Managed Objects for the Fourth Version of the Border Gateway Protocol (BGP-4) using SMIv2,” RFC 1657, July 1994 (TXT).
[RFC3107] Rekhter, Y. and E. Rosen, “Carrying Label Information in BGP-4,” RFC 3107, May 2001 (TXT).
[RFC4022] Raghunarayan, R., “Management Information Base for the Transmission Control Protocol (TCP),” RFC 4022, March 2005 (TXT).
[RFC4456] Bates, T., Chen, E., and R. Chandra, “BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP),” RFC 4456, April 2006 (TXT).


 TOC 

Author's Address

  Jeffrey Haas
 
Phone: 
EMail:  jhaas@pfrc.org


 TOC 

Full Copyright Statement

Intellectual Property