Network Working Group
Request for Comments: 1657
Category: Standards Track
S. Willis
J. Burruss
Wellfleet Communications Inc.
J. Chu, Editor
IBM Corp.
July 1994

Definitions of Managed Objects for the Fourth Version of the

Border Gateway Protocol (BGP-4) using SMIv2

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

1. Introduction

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects used for managing the Border Gateway Protocol Version 4 or lower [1, 2].

2. The SNMPv2 Network Management Framework

The SNMPv2 Network Management Framework consists of four major components. They are:

RFC 1442 which defines the SMI, the mechanisms used for describing and naming objects for the purpose of management.

STD 17, RFC 1213 defines MIB-II, the core set of managed objects forthe Internet suite of protocols.

RFC 1445 which defines the administrative and other architectural aspects of the framework.

RFC 1448 which defines the protocol used for network access to managed objects.

The Framework permits new objects to be defined for the purpose of experimentation and evaluation.

3. Object Definitions

Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. Objects in the MIB are defined using the subset of Abstract Syntax Notation One (ASN.1) defined in the SMI. In particular, each object type is named by an OBJECT IDENTIFIER, an administratively assigned name. The object type together with an object instance serves to uniquely identify a specific instantiation of the object. For human convenience, we often use a textual string, termed the descriptor, to refer to the object type.

4. Overview

These objects are used to control and manage a BGP-4 implementation.

Apart from a few system-wide scalar objects, this MIB is broken into three tables: the BGP Peer Table, the BGP Received Path Attribute Table, and the BGP-4 Received Path Attribute Table. The BGP Peer Table contains information about state and current activity of connections with the BGP peers. The Received Path Attribute Table contains path attributes received from all peers running BGP version 3 or less. The BGP-4 Received Path Attribute Table contains path attributes received from all BGP-4 peers. The actual attributes used in determining a route are a subset of the received attribute tables after local routing policy has been applied.

5. Definitions

BGP4-MIB DEFINITIONS ::= BEGIN

IMPORTS

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

bgp MODULE-IDENTITY

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

bgpVersion OBJECT-TYPE

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

bgpLocalAs OBJECT-TYPE

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

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

bgpPeerTable OBJECT-TYPE

                    SYNTAX     SEQUENCE OF BgpPeerEntry
                    MAX-ACCESS not-accessible
                    STATUS     current
                    DESCRIPTION
                            "BGP peer table.  This table contains,
                            one entry per BGP peer, information about
                            the connections with BGP peers."
                    ::= { bgp 3 }

bgpPeerEntry OBJECT-TYPE

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

BgpPeerEntry ::= SEQUENCE {

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

bgpPeerIdentifier OBJECT-TYPE

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

bgpPeerState OBJECT-TYPE

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

bgpPeerAdminStatus OBJECT-TYPE

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

bgpPeerNegotiatedVersion OBJECT-TYPE

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

bgpPeerLocalAddr OBJECT-TYPE

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

bgpPeerLocalPort OBJECT-TYPE

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

bgpPeerRemoteAddr OBJECT-TYPE

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

bgpPeerRemotePort OBJECT-TYPE

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

bgpPeerRemoteAs OBJECT-TYPE

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

bgpPeerInUpdates OBJECT-TYPE

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

bgpPeerOutUpdates OBJECT-TYPE

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

bgpPeerInTotalMessages OBJECT-TYPE

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

bgpPeerOutTotalMessages OBJECT-TYPE

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

bgpPeerLastError OBJECT-TYPE

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

bgpPeerFsmEstablishedTransitions OBJECT-TYPE

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

bgpPeerFsmEstablishedTime OBJECT-TYPE

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

bgpPeerConnectRetryInterval OBJECT-TYPE

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

bgpPeerHoldTime OBJECT-TYPE

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

bgpPeerKeepAlive OBJECT-TYPE

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

bgpPeerHoldTimeConfigured OBJECT-TYPE

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

bgpPeerKeepAliveConfigured OBJECT-TYPE

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

bgpPeerMinASOriginationInterval OBJECT-TYPE

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

bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE

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

bgpPeerInUpdateElapsedTime OBJECT-TYPE

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

bgpIdentifier OBJECT-TYPE

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

-- Received Path Attribute Table. This table contains, -- one entry per path to a network, path attributes -- received from all peers running BGP version 3 or -- less. This table is deprecated.

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."
                    ::= { bgpPathAttrEntry 2 }

bgpPathAttrOrigin OBJECT-TYPE

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

bgpPathAttrASPath OBJECT-TYPE

                    SYNTAX     OCTET STRING (SIZE (2..255))
                    MAX-ACCESS read-only
                    STATUS     obsolete
                    DESCRIPTION
                            "The set of ASs 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;"
                    ::= { 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."
                    ::= { 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."
                    ::= { bgpPathAttrEntry 6 }

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

bgp4PathAttrTable OBJECT-TYPE

                    SYNTAX     SEQUENCE OF Bgp4PathAttrEntry
                    MAX-ACCESS not-accessible
                    STATUS     current
                    DESCRIPTION
                            "The BGP-4 Received Path Attribute Table
                            contains information about paths to
                            destination networks received from all
                            BGP4 peers."
                    ::= { bgp 6 }

bgp4PathAttrEntry OBJECT-TYPE

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

Bgp4PathAttrEntry ::= SEQUENCE {

                    bgp4PathAttrPeer
                         IpAddress,
                    bgp4PathAttrIpAddrPrefixLen
                         INTEGER,
                    bgp4PathAttrIpAddrPrefix
                         IpAddress,
                    bgp4PathAttrOrigin
                         INTEGER,
                    bgp4PathAttrASPathSegment
                         OCTET STRING,
                    bgp4PathAttrNextHop
                         IpAddress,
                    bgp4PathAttrMultiExitDisc
                         INTEGER,
                    bgp4PathAttrLocalPref
                         INTEGER,
                    bgp4PathAttrAtomicAggregate
                         INTEGER,
                    bgp4PathAttrAggregatorAS
                         INTEGER,
                    bgp4PathAttrAggregatorAddr
                         IpAddress,
                    bgp4PathAttrCalcLocalPref
                         INTEGER,
                    bgp4PathAttrBest
                         INTEGER,
                    bgp4PathAttrUnknown
                         OCTET STRING
                
                }

bgp4PathAttrPeer OBJECT-TYPE

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

bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE

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

bgp4PathAttrIpAddrPrefix OBJECT-TYPE

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

bgp4PathAttrOrigin OBJECT-TYPE

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

bgp4PathAttrASPathSegment OBJECT-TYPE

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

The type is a 1-octet field which has two possible values:

                                 1      AS_SET: unordered set of ASs a
                                             route in the UPDATE
                                             message has traversed
                                 2      AS_SEQUENCE: ordered set of ASs
                                             a route in the UPDATE
                                             message has traversed.

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

The value field contains one or more AS numbers, each AS is represented in the octet string as a pair of octets according to the following algorithm:

                                first-byte-of-pair = ASNumber / 256;
                                second-byte-of-pair = ASNumber & 255;"
                    ::= { bgp4PathAttrEntry 5 }

bgp4PathAttrNextHop OBJECT-TYPE

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

bgp4PathAttrMultiExitDisc OBJECT-TYPE

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

bgp4PathAttrLocalPref OBJECT-TYPE

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

bgp4PathAttrAtomicAggregate OBJECT-TYPE

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

bgp4PathAttrAggregatorAS OBJECT-TYPE

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

bgp4PathAttrAggregatorAddr OBJECT-TYPE

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

bgp4PathAttrCalcLocalPref OBJECT-TYPE

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

bgp4PathAttrBest OBJECT-TYPE

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

bgp4PathAttrUnknown OBJECT-TYPE

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

-- Traps.

                bgpTraps                OBJECT IDENTIFIER ::= { bgp 7 }

bgpEstablished NOTIFICATION-TYPE

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

bgpBackwardTransition NOTIFICATION-TYPE

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

END

6. Acknowledgements

We would like to acknowledge the assistance of all the members of the Interconnectivity Working Group, and particularly the following individuals:

Yakov Rekhter, IBM
Rob Coltun, University of Maryland
Guy Almes, ANS
Jeff Honig, Cornell Theory Center
Marshall T. Rose, Dover Beach Consulting, Inc. Dennis Ferguson, ANS
Mike Mathis, PSC
John Krawczyk, Wellfleet Communications Inc. Curtis Villamizar, ANS
Dave LeRoy, Pencom Systems
Paul Traina, cisco Systems
Andrew Partan, UUNET
Robert Snyder, cisco Systems
Dimitry Haskin, Wellfleet Communications Inc.
Peder Chr Norgaard, Telebit Communications A/S
Joel Halpern, Network Systems Corporation

7. References

   [1] Rekhter, Y., and T. Li, "A Border Gateway Protocol 4 (BGP-4)",
   
       RFC 1654,  T.J. Watson Research Center, IBM Corp., cisco Systems,
       July 1994.
   
   [2] Rekhter, Y., and P. Gross, Editors, "Application of the Border
       Gateway Protocol in the Internet", RFC 1655 T.J. Watson Research
       Center, IBM Corp., MCI, July 1994.

8. Security Considerations

Security issues are not discussed in this memo.

9. Authors' Addresses

Steven Willis
Wellfleet Communications Inc.
15 Crosby Drive
Bedford, MA 01730

   Phone: (617) 275-2400
   EMail: swillis@wellfleet.com

John Burruss
Wellfleet Communications Inc.
15 Crosby Drive
Bedford, MA 01730

   Phone: (617) 275-2400
   EMail: jburruss@wellfleet.com

John Chu
IBM Corp.
P.O.Box 218
Yorktown Heights, NY 10598

   Phone: (914) 945-3156
   EMail: jychu@watson.ibm.com