RFC 1471
The Definitions of Managed Objects for the Link Control Protocol of the Point-to-Point Protocol
The Definitions of Managed Objects for the Link Control Protocol of the Point-to-Point Protocol π
Okay bestie, this one is RFC 1471 π It's a MIB spec, meaning it defines the managed objects you can read and tweak to keep a PPP link healthy β¨
- Network Working Group: the group that published it π§
- RFC number: 1471
- Author: F. Kastenholz, FTP Software, Inc. π
- Date: June 1993 πΈ
- Category: an IAB standards track protocol π
- Obsoletes / updates: the header doesn't say it obsoletes or updates anything π«Ά
Status of this Memo β¨
This RFC specifies an IAB standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "IAB Official Protocol Standards" for the standardization state and status of this protocol. Distribution of this memo is unlimited. π¦
Abstract π
This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in TCP/IP-based internets. In particular, it describes managed objects used for managing the Link Control Protocol and Link Quality Monitoring on subnetwork interfaces that use the family of Point-to-Point Protocols [8, 9, 10, 11, & 12]. So basically, this is the MIB for LCP and LQM on PPP interfaces π₯
Table of Contents π
1. The Network Management Framework ...................... 2
2. Objects ............................................... 2
2.1 Format of Definitions ................................ 2
3. Overview .............................................. 2
3.1 Object Selection Criteria ............................ 2
3.2 Structure of the PPP ................................. 3
3.3 MIB Groups ........................................... 4
3.4 Relationship to Interface and Interface Extensions
Groups ............................................... 5
4. Definitions ........................................... 6
4.1 PPP Link Group ....................................... 7
4.2 PPP LQR Group ........................................ 16
4.3 PPP LQR Extensions Group ............................. 21
4.4 PPP Tests ............................................ 22
4.4.1 PPP Echo Test ...................................... 22
4.4.2 PPP Discard Test ................................... 23
5. Acknowledgements ...................................... 23
6. Security Considerations ............................... 23
7. References ............................................ 24
8. Author's Address ...................................... 25
1. The Network Management Framework π§
Okay so the Internet-standard Network Management Framework is built from three components, and they're all giving teamwork π€
- STD 16/RFC 1155 defines the SMI, the mechanisms used for describing and naming objects for the purpose of management. STD 16/RFC 1212 defines a more concise description mechanism, which is wholly consistent with the SMI.
- STD 17/RFC 1213 defines MIB-II, the core set of managed objects for the Internet suite of protocols. π
- STD 15/RFC 1157 defines the SNMP, the protocol used for network access to managed objects. π‘
The Framework also permits new objects to be defined for the purpose of experimentation and evaluation. Iconic flexibility π
2. Objects π
Managed objects are accessed via a virtual information store, called the Management Information Base or MIB. Objects in the MIB are defined using the subset of Abstract Syntax Notation One (ASN.1) [3] defined in the SMI. Each object type is named by an OBJECT IDENTIFIER, which is an administratively assigned name. The object type together with an object instance is what uniquely identifies one specific instance of the object. For human convenience, we often use a textual string, called the descriptor, to refer to the object type π§
2.1. Format of Definitions πΈ
Section 4 contains the specification of all object types contained in this MIB module. The object types are defined using the conventions defined in the SMI, as amended by the extensions specified in [5,6]. β¨
3. Overview π¦
3.1. Object Selection Criteria π₯
To be consistent with IAB directives and good engineering practice, an explicit attempt was made to keep this MIB as simple as possible. The team got there by applying these four criteria to every object proposed for inclusion:
- Require objects be essential for either fault or configuration management. Objects whose only purpose was to debug implementations were explicitly excluded from the MIB. π
- Consider evidence of current use and/or utility.
- Limit the total number of objects.
- Exclude objects which are simply derivable from others in this or other MIBs.
3.2. Structure of the PPP π
This section describes the basic model of PPP used in developing the PPP MIB. This information should be useful to the implementor in understanding some of the basic design decisions of the MIB.
PPP is not one single protocol but a large family of protocols. Each of these is, in itself, a fairly complex protocol. The PPP protocols may be divided into three rough categories:
- Control Protocols: used to control the operation of PPP. The Control Protocols include the Link Control Protocol (LCP), the Password Authentication Protocol (PAP), the Link Quality Report (LQR), and the Challenge Handshake Authentication Protocol (CHAP).
- Network Protocols: used to move the network traffic over the PPP interface. A Network Protocol encapsulates the datagrams of a specific higher-layer protocol that is using PPP as a data link. Note that within the context of PPP, the term "Network Protocol" does not imply an OSI Layer-3 protocol; for instance, there is a Bridging network protocol. π
- Network Control Protocols (NCPs): used to control the operation of the Network Protocols. Generally, each Network Protocol has its own Network Control Protocol, so the IP Network Protocol has its IP Control Protocol, the Bridging Network Protocol has its Bridging Network Control Protocol, and so on. π
This document specifies the objects used in managing one of these protocols, namely the Link Control Protocol and Link Quality Monitoring Protocol. π
3.3. MIB Groups π
Objects in this MIB are arranged into several MIB groups. Each group is organized as a set of related objects.
These groups are the basic unit of conformance: if the semantics of a group are applicable to an implementation then all objects in the group must be implemented.
The PPP MIB is organized into several MIB Groups, including, but not limited to, the following groups:
- The PPP Link Group
- The PPP LQR Group
- The PPP LQR Extensions Group
- The PPP IP Group
- The PPP Bridge Group
- The PPP Security Group
This document specifies the following groups:
- The PPP Link Group: this group represents the lowest "level" of the PPP protocol. It contains two tables, one containing status information and the other configuration information. The configuration table is split off of the status so that it may be placed in a separate MIB View for security purposes. Implementation of this group is mandatory for all PPP implementations. π
- The PPP LQR Group: this group provides the basic MIB variables that apply to the PPP LQR Protocol, giving MIB access to the information required for LQR processing. It contains two tables, one containing status information and the other configuration information. The configuration table is split off of the status so that it may be placed in a separate MIB View for security purposes. Implementation of the PPP LQR Group is mandatory for all PPP implementations that implement LQR. π‘
- The PPP LQR Extensions Group: this group contains the most recently received LQR packet, as well as the "save" fields that are "logically appended" [12] to received LQR packets. This is done in order to facilitate external implementations of the Link Quality Monitoring policies.
It is not practical to examine the relevant MIB objects which are used to generate LQR packets, since LQR policies may require synchronization of the values of all data used to determine Link Quality. In other words, the values of the relevant counters must all be taken at the same instant in time. So by recording the last received LQR packet, a synchronized record of the relevant data is available. π§
As this information may not be efficiently maintained on all PPP implementations, implementation of this group is optional. πΈ
3.4. Relationship to Interface and Interface Extensions Groups π₯
The PPP MIB is a medium-specific extension to the standard MIB-2 interface group [2] and to the Interface Extensions MIB [7]. This section discusses certain components of these groups when the interface is a PPP interface.
The PPP interface represents a single interface in the sense used in [2], and thus has a single entry in the ifTable.
Furthermore, the PPP interface may be operating over a lower layer hardware interface (such as an RS-232 port). It is important to capture the relationship between the PPP interface and the lower-layer interface over which it operates. This MIB presumes that the lower-layer interface has an ifEntry associated with it. The lower-layer ifEntry is identified via the pppLinkStatusPhysicalIndex object, which contains the value of ifIndex for the lower-layer ifEntry. π¦
For example, suppose you run PPP over an RS-232 port. This would use two entries in the ifTable. Let's say entry number 123 is for the PPP "interface" and entry number 987 is for the RS-232 port. So ifSpecific.123 would contain the ppp OBJECT IDENTIFIER, pppLinkStatusPhysicalIndex.123 would contain 987, and ifSpecific.987 would contain the rs_232 OBJECT IDENTIFIER (or whatever it is). π
All PPP packets are defined in [8] as being broadcast packets. Thus, the packets are counted as non-unicast packets in the ifTable (ifInNUcastPkts and ifOutNUCastPkts) and as broadcasts in the ifExtnsTable (ifExtnsBroadcastsReceivedOks and ifExtnsBroadcastsTransmittedOks). π‘
ifSpecific Contains the OBJECT IDENTIFIER ppp.
ifAdminStatus Setting this object to up will inject an administrative open event into the LCP's finite state machine. Setting this object to down will inject an administrative close event into the LCP's finite state machine.
The use of the testing value is beyond the scope of this document. π
ifOperStatus Represents the state of the LCP Finite State Machine. If the Finite State Machine is in the Opened state, then the value of ifOperStatus is up. Otherwise, the value of ifOperStatus is down.
The meaning of the testing value is beyond the scope of this document. π
Per the SNMP Protocol Specification [13], the linkUp and linkDown traps apply to the PPP Protocol entity. When the LCP's Finite State Machine attains the Opened state, a linkUp trap should be sent. When the Finite State Machine leaves the Opened state, a linkDown trap should be sent. π₯
Some tests for the link are defined in this document. Running these tests does not place the link's ifOperStatus in the testing state, because these tests do not prevent normal data transmission from occurring over the link. β¨
4. Definitions β¨
PPP-LCP-MIB DEFINITIONS ::= BEGIN
This next bit is the setup for everything else: it pulls in the stuff we need from other RFCs and carves out the PPP branch of the MIB tree under transmission 23 π§
IMPORTS
Counter
FROM RFC1155-SMI
ifIndex, transmission
FROM RFC1213-MIB
OBJECT-TYPE
FROM RFC-1212;
-- PPP MIB
ppp OBJECT IDENTIFIER ::= { transmission 23 }
pppLcp OBJECT IDENTIFIER ::= { ppp 1 }
-- The individual groups within the PPP-LCP-MIB
pppLink OBJECT IDENTIFIER ::= { pppLcp 1 }
pppLqr OBJECT IDENTIFIER ::= { pppLcp 2 }
pppTests OBJECT IDENTIFIER ::= { pppLcp 3 }
4.1. PPP Link Group β¨
Okay this is the main event, bestie π The PPP Link Group is the one that's mandatory for all PPP entities π₯ so if you're doing PPP at all, you're implementing this. The objects here mirror the option values negotiated in the PPP Link Control Protocol, and they only mean something once the link is up (ifOperStatus is up). Before that, the value is implementation dependent, so don't stress π
--
-- The PPP Link Group. Implementation of this
-- group is mandatory for all PPP entities.
--
-- The following object reflect the values of the option
-- parameters used in the PPP Link Control Protocol
-- pppLinkStatusLocalMRU
-- pppLinkStatusRemoteMRU
-- pppLinkStatusLocalToPeerACCMap
-- pppLinkStatusPeerToLocalACCMap
-- pppLinkStatusLocalToRemoteProtocolCompression
-- pppLinkStatusRemoteToLocalProtocolCompression
-- pppLinkStatusLocalToRemoteACCompression
-- pppLinkStatusRemoteToLocalACCompression
-- pppLinkStatusTransmitFcsSize
-- pppLinkStatusReceiveFcsSize
--
-- These values are not available until after the PPP Option
-- negotiation has completed, which is indicated by the link
-- reaching the open state (i.e., ifOperStatus is set to
-- up).
--
-- Therefore, when ifOperStatus is not up
-- the contents of these objects is undefined. The value
-- returned when accessing the objects is an implementation
-- dependent issue.
pppLinkStatusTable OBJECT-TYPE
SYNTAX SEQUENCE OF PppLinkStatusEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A table containing PPP-link specific variables
for this PPP implementation."
::= { pppLink 1 }
pppLinkStatusEntry OBJECT-TYPE
SYNTAX PppLinkStatusEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Management information about a particular PPP
Link."
INDEX { ifIndex }
::= { pppLinkStatusTable 1 }
PppLinkStatusEntry ::= SEQUENCE {
pppLinkStatusPhysicalIndex
INTEGER,
pppLinkStatusBadAddresses
Counter,
pppLinkStatusBadControls
Counter,
pppLinkStatusPacketTooLongs
Counter,
pppLinkStatusBadFCSs
Counter,
pppLinkStatusLocalMRU
INTEGER,
pppLinkStatusRemoteMRU
INTEGER,
pppLinkStatusLocalToPeerACCMap
OCTET STRING,
pppLinkStatusPeerToLocalACCMap
OCTET STRING,
pppLinkStatusLocalToRemoteProtocolCompression
INTEGER,
pppLinkStatusRemoteToLocalProtocolCompression
INTEGER,
pppLinkStatusLocalToRemoteACCompression
INTEGER,
pppLinkStatusRemoteToLocalACCompression
INTEGER,
pppLinkStatusTransmitFcsSize
INTEGER,
pppLinkStatusReceiveFcsSize
INTEGER
}
pppLinkStatusPhysicalIndex OBJECT-TYPE
SYNTAX INTEGER(0..2147483647)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The value of ifIndex that identifies the
lower-level interface over which this PPP Link
is operating. This interface would usually be
an HDLC or RS-232 type of interface. If there
is no lower-layer interface element, or there
is no ifEntry for the element, or the element
can not be identified, then the value of this
object is 0. For example, suppose that PPP is
operating over a serial port. This would use
two entries in the ifTable. The PPP could be
running over `interface' number 123 and the
serial port could be running over `interface'
number 987. Therefore, ifSpecific.123 would
contain the OBJECT IDENTIFIER ppp
pppLinkStatusPhysicalIndex.123 would contain
987, and ifSpecific.987 would contain the
OBJECT IDENTIFIER for the serial-port's media-
specific MIB."
::= { pppLinkStatusEntry 1 }
pppLinkStatusBadAddresses OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of packets received with an
incorrect Address Field. This counter is a
component of the ifInErrors variable that is
associated with the interface that represents
this PPP Link."
REFERENCE
"Section 3.1, Address Field, of RFC1331."
::= { pppLinkStatusEntry 2 }
pppLinkStatusBadControls OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of packets received on this link
with an incorrect Control Field. This counter
is a component of the ifInErrors variable that
is associated with the interface that
represents this PPP Link."
REFERENCE
"Section 3.1, Control Field, of RFC1331."
::= { pppLinkStatusEntry 3 }
pppLinkStatusPacketTooLongs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of received packets that have been
discarded because their length exceeded the
MRU. This counter is a component of the
ifInErrors variable that is associated with the
interface that represents this PPP Link. NOTE,
packets which are longer than the MRU but which
are successfully received and processed are NOT
included in this count."
::= { pppLinkStatusEntry 4 }
pppLinkStatusBadFCSs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of received packets that have been
discarded due to having an incorrect FCS. This
counter is a component of the ifInErrors
variable that is associated with the interface
that represents this PPP Link."
::= { pppLinkStatusEntry 5 }
pppLinkStatusLocalMRU OBJECT-TYPE
SYNTAX INTEGER(1..2147483648)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The current value of the MRU for the local PPP
Entity. This value is the MRU that the remote
entity is using when sending packets to the
local PPP entity. The value of this object is
meaningful only when the link has reached the
open state (ifOperStatus is up)."
::= { pppLinkStatusEntry 6 }
pppLinkStatusRemoteMRU OBJECT-TYPE
SYNTAX INTEGER(1..2147483648)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The current value of the MRU for the remote
PPP Entity. This value is the MRU that the
local entity is using when sending packets to
the remote PPP entity. The value of this object
is meaningful only when the link has reached
the open state (ifOperStatus is up)."
::= { pppLinkStatusEntry 7 }
pppLinkStatusLocalToPeerACCMap OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (4))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The current value of the ACC Map used for
sending packets from the local PPP entity to
the remote PPP entity. The value of this object
is meaningful only when the link has reached
the open state (ifOperStatus is up)."
::= { pppLinkStatusEntry 8 }
pppLinkStatusPeerToLocalACCMap OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (4))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The ACC Map used by the remote PPP entity when
transmitting packets to the local PPP entity.
The value of this object is meaningful only
when the link has reached the open state
(ifOperStatus is up)."
::= { pppLinkStatusEntry 9 }
pppLinkStatusLocalToRemoteProtocolCompression
OBJECT-TYPE
SYNTAX INTEGER {
enabled(1),
disabled(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Indicates whether the local PPP entity will
use Protocol Compression when transmitting
packets to the remote PPP entity. The value of
this object is meaningful only when the link
has reached the open state (ifOperStatus is
up)."
::= { pppLinkStatusEntry 10 }
pppLinkStatusRemoteToLocalProtocolCompression
OBJECT-TYPE
SYNTAX INTEGER {
enabled(1),
disabled(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Indicates whether the remote PPP entity will
use Protocol Compression when transmitting
packets to the local PPP entity. The value of
this object is meaningful only when the link
has reached the open state (ifOperStatus is
up)."
::= { pppLinkStatusEntry 11 }
pppLinkStatusLocalToRemoteACCompression OBJECT-TYPE
SYNTAX INTEGER {
enabled(1),
disabled(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Indicates whether the local PPP entity will
use Address and Control Compression when
transmitting packets to the remote PPP entity.
The value of this object is meaningful only
when the link has reached the open state
(ifOperStatus is up)."
::= { pppLinkStatusEntry 12 }
pppLinkStatusRemoteToLocalACCompression OBJECT-TYPE
SYNTAX INTEGER {
enabled(1),
disabled(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Indicates whether the remote PPP entity will
use Address and Control Compression when
transmitting packets to the local PPP entity.
The value of this object is meaningful only
when the link has reached the open state
(ifOperStatus is up)."
::= { pppLinkStatusEntry 13 }
pppLinkStatusTransmitFcsSize OBJECT-TYPE
SYNTAX INTEGER (0..128)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The size of the Frame Check Sequence (FCS) in
bits that the local node will generate when
sending packets to the remote node. The value
of this object is meaningful only when the link
has reached the open state (ifOperStatus is
up)."
::= { pppLinkStatusEntry 14 }
pppLinkStatusReceiveFcsSize OBJECT-TYPE
SYNTAX INTEGER (0..128)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The size of the Frame Check Sequence (FCS) in
bits that the remote node will generate when
sending packets to the local node. The value of
this object is meaningful only when the link
has reached the open state (ifOperStatus is
up)."
::= { pppLinkStatusEntry 15 }
pppLinkConfigTable OBJECT-TYPE
SYNTAX SEQUENCE OF PppLinkConfigEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A table containing the LCP configuration
parameters for this PPP Link. These variables
represent the initial configuration of the PPP
Link. The actual values of the parameters may
be changed when the link is brought up via the
LCP options negotiation mechanism."
::= { pppLink 2 }
pppLinkConfigEntry OBJECT-TYPE
SYNTAX PppLinkConfigEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Configuration information about a particular
PPP Link."
INDEX { ifIndex }
::= { pppLinkConfigTable 1 }
PppLinkConfigEntry ::= SEQUENCE {
pppLinkConfigInitialMRU
INTEGER,
pppLinkConfigReceiveACCMap
OCTET STRING,
pppLinkConfigTransmitACCMap
OCTET STRING,
pppLinkConfigMagicNumber
INTEGER,
pppLinkConfigFcsSize
INTEGER
}
pppLinkConfigInitialMRU OBJECT-TYPE
SYNTAX INTEGER(0..2147483647)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The initial Maximum Receive Unit (MRU) that
the local PPP entity will advertise to the
remote entity. If the value of this variable is
0 then the local PPP entity will not advertise
any MRU to the remote entity and the default
MRU will be assumed. Changing this object will
have effect when the link is next restarted."
REFERENCE
"Section 7.2, Maximum Receive Unit of RFC1331."
DEFVAL { 1500 }
::= { pppLinkConfigEntry 1 }
pppLinkConfigReceiveACCMap OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (4))
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The Asynchronous-Control-Character-Map (ACC)
that the local PPP entity requires for use on
its receive side. In effect, this is the ACC
Map that is required in order to ensure that
the local modem will successfully receive all
characters. The actual ACC map used on the
receive side of the link will be a combination
of the local node's pppLinkConfigReceiveACCMap
and the remote node's
pppLinkConfigTransmitACCMap. Changing this
object will have effect when the link is next
restarted."
REFERENCE
"Section 7.3, page 4, Async-Control-Character-
Map of RFC1331."
DEFVAL { 'ffffffff'h }
::= { pppLinkConfigEntry 2 }
pppLinkConfigTransmitACCMap OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (4))
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The Asynchronous-Control-Character-Map (ACC)
that the local PPP entity requires for use on
its transmit side. In effect, this is the ACC
Map that is required in order to ensure that
all characters can be successfully transmitted
through the local modem. The actual ACC map
used on the transmit side of the link will be a
combination of the local node's
pppLinkConfigTransmitACCMap and the remote
node's pppLinkConfigReceiveACCMap. Changing
this object will have effect when the link is
next restarted."
REFERENCE
"Section 7.3, page 4, Async-Control-Character-
Map of RFC1331."
DEFVAL { 'ffffffff'h }
::= { pppLinkConfigEntry 3 }
pppLinkConfigMagicNumber OBJECT-TYPE
SYNTAX INTEGER {false (1), true (2)}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"If true(2) then the local node will attempt to
perform Magic Number negotiation with the
remote node. If false(1) then this negotiation
is not performed. In any event, the local node
will comply with any magic number negotiations
attempted by the remote node, per the PPP
specification. Changing this object will have
effect when the link is next restarted."
REFERENCE
"Section 7.6, Magic Number, of RFC1331."
DEFVAL { false }
::= { pppLinkConfigEntry 4 }
pppLinkConfigFcsSize OBJECT-TYPE
SYNTAX INTEGER (0..128)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The size of the FCS, in bits, the local node
will attempt to negotiate for use with the
remote node. Regardless of the value of this
object, the local node will comply with any FCS
size negotiations initiated by the remote node,
per the PPP specification. Changing this object
will have effect when the link is next
restarted."
DEFVAL { 16 }
::= { pppLinkConfigEntry 5 }
okay the link status and config stuff is all wrapped up, bestie π β¨ the config table is basically the starting settings for the link, and the actual values can change once LCP options negotiation happens π
4.2. PPP LQR Group β¨
this next part is the LQR group, and it's giving quality monitoring vibes π¦ the whole group is mandatory for any PPP implementation that does LQR, no cap π
-- 4.2. PPP LQR Group
--
-- The PPP LQR Group.
-- Implementation of this group is mandatory for all
-- PPP implementations that implement LQR.
--
pppLqrTable OBJECT-TYPE
SYNTAX SEQUENCE OF PppLqrEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Table containing the LQR parameters and
statistics for the local PPP entity."
::= { pppLqr 1 }
pppLqrEntry OBJECT-TYPE
SYNTAX PppLqrEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"LQR information for a particular PPP link. A
PPP link will have an entry in this table if
and only if LQR Quality Monitoring has been
successfully negotiated for said link."
INDEX { ifIndex }
::= { pppLqrTable 1 }
PppLqrEntry ::= SEQUENCE {
pppLqrQuality
INTEGER,
pppLqrInGoodOctets
Counter,
pppLqrLocalPeriod
INTEGER,
pppLqrRemotePeriod
INTEGER,
pppLqrOutLQRs
Counter,
pppLqrInLQRs
Counter
}
pppLqrQuality OBJECT-TYPE
SYNTAX INTEGER {
good(1),
bad(2),
not-determined(3)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The current quality of the link as declared by
the local PPP entity's Link-Quality Management
modules. No effort is made to define good or
bad, nor the policy used to determine it. The
not-determined value indicates that the entity
does not actually evaluate the link's quality.
This value is used to disambiguate the
`determined to be good' case from the `no
determination made and presumed to be good'
case."
::= { pppLqrEntry 1 }
that's the end of this chunk, bestie πΈ the LQR table and its entries are set up, and pppLqrQuality is the one telling you how the link is doing π«Ά
pppLqrInGoodOctets OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The LQR InGoodOctets counter for this link."
REFERENCE
"Section 2.2, Counters, of RFC1333."
::= { pppLqrEntry 2 }
Okay bestie, we're picking up right where we left off in the MIB definitions, and this part is all about the LQR counters and the config tables πβ¨
First up, pppLqrInGoodOctets π¦ It's a read-only Counter that tracks the LQR InGoodOctets count for the link. Its reference points you to Section 2.2 of RFC1333 (Counters) π
pppLqrLocalPeriod OBJECT-TYPE
SYNTAX INTEGER(1..2147483648)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The LQR reporting period, in hundredths of a
second that is in effect for the local PPP
entity."
REFERENCE
"Section 2.5, Configuration Option Format, of
RFC1333."
::= { pppLqrEntry 3 }
Next is pppLqrLocalPeriod πΈ This is the LQR reporting period that's actually in effect for the local PPP entity, measured in hundredths of a second. It's read-only, and it's documented in Section 2.5 of RFC1333 (Configuration Option Format) π«Ά
pppLqrRemotePeriod OBJECT-TYPE
SYNTAX INTEGER(1..2147483648)
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The LQR reporting period, in hundredths of a
second, that is in effect for the remote PPP
entity."
REFERENCE
"Section 2.5, Configuration Option Format, of
RFC1333."
::= { pppLqrEntry 4 }
pppLqrRemotePeriod is the mirror image of that one π§ Same units, same range, same Section 2.5 reference, but it's the period in effect for the remote PPP entity instead π
pppLqrOutLQRs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The value of the OutLQRs counter on the local
node for the link identified by ifIndex."
REFERENCE
"Section 2.2, Counters, of RFC1333."
::= { pppLqrEntry 5 }
pppLqrOutLQRs is a read-only Counter holding the OutLQRs value on the local node, for the link identified by ifIndex π
Section 2.2 of RFC1333 covers it π
pppLqrInLQRs OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The value of the InLQRs counter on the local
node for the link identified by ifIndex."
REFERENCE
"Section 2.2, Counters, of RFC1333."
::= { pppLqrEntry 6 }
And its partner pppLqrInLQRs π¦ Same deal, read-only Counter, but this one is the InLQRs value on the local node for that same ifIndex link π Section 2.2 of RFC1333 again β¨
--
-- The PPP LQR Configuration table.
--
pppLqrConfigTable OBJECT-TYPE
SYNTAX SEQUENCE OF PppLqrConfigEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Table containing the LQR Configuration
parameters for the local PPP entity."
::= { pppLqr 2 }
Now we've hit the LQR Configuration table π pppLqrConfigTable is not-accessible, so you can't read it directly. It's the table that holds the LQR configuration parameters for the local PPP entity, and it lives under pppLqr at index 2 π§
pppLqrConfigEntry OBJECT-TYPE
SYNTAX PppLqrConfigEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"LQR configuration information for a particular
PPP link."
INDEX { ifIndex }
::= { pppLqrConfigTable 1 }
PppLqrConfigEntry ::= SEQUENCE {
pppLqrConfigPeriod
INTEGER,
pppLqrConfigStatus
INTEGER
}
Each row, pppLqrConfigEntry, is also not-accessible and is indexed by ifIndex π«Ά It describes the LQR configuration for one particular PPP link. The entry is made of two INTEGER columns: pppLqrConfigPeriod and pppLqrConfigStatus πΈ
pppLqrConfigPeriod OBJECT-TYPE
SYNTAX INTEGER(0..2147483647)
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The LQR Reporting Period that the local PPP
entity will attempt to negotiate with the
remote entity, in units of hundredths of a
second. Changing this object will have effect
when the link is next restarted."
REFERENCE
"Section 2.5, Configuration Option Format, of
RFC1333."
DEFVAL { 0 }
::= { pppLqrConfigEntry 1 }
pppLqrConfigPeriod is the one you can actually write π
It's the LQR Reporting Period the local PPP entity will try to negotiate with the remote entity, in hundredths of a second. The default is 0. Heads up, changing it only takes effect the next time the link restarts π
pppLqrConfigStatus OBJECT-TYPE
SYNTAX INTEGER {disabled (1), enabled (2)}
ACCESS read-write
STATUS mandatory
DESCRIPTION
"If enabled(2) then the local node will attempt
to perform LQR negotiation with the remote
node. If disabled(1) then this negotiation is
not performed. In any event, the local node
will comply with any magic number negotiations
attempted by the remote node, per the PPP
specification. Changing this object will have
effect when the link is next restarted.
Setting this object to the value disabled(1)
has the effect of invalidating the
corresponding entry in the pppLqrConfigTable
object. It is an implementation-specific matter
as to whether the agent removes an invalidated
entry from the table. Accordingly, management
stations must be prepared to receive tabular
information from agents that corresponds to
entries not currently in use."
REFERENCE
"Section 7.6, Magic Number, of RFC1331."
DEFVAL { enabled }
::= { pppLqrConfigEntry 2 }
pppLqrConfigStatus is the on/off switch π₯ Enabled(2) means the local node will try to do LQR negotiation with the remote node, and disabled(1) means it won't. Even when it's disabled, the local node still goes along with any magic number negotiations the remote node starts, as the PPP spec says. Changes only land on the next link restart. Setting it to disabled(1) basically invalidates that row in pppLqrConfigTable, and whether the agent actually deletes the invalidated row is up to the implementation π So management stations need to be ready to get table info for rows that aren't in use anymore π The default is enabled, and the magic number bit points to Section 7.6 of RFC1331 π
-- 4.3. PPP LQR Extensions Group
--
-- The PPP LQR Extensions Group.
-- Implementation of this group is optional.
--
-- The intent of this group is to allow external
-- implementation of the policy mechanisms that
-- are used to declare a link to be "bad" or not.
--
-- It is not practical to examine the MIB objects
-- which are used to generate LQR packets since
-- LQR policies tend to require synchronization of
-- the values of all data used to determine Link
-- Quality; i.e. the values of the relevant counters
-- must all be taken at the same instant in time.
--
pppLqrExtnsTable OBJECT-TYPE
SYNTAX SEQUENCE OF PppLqrExtnsEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Table containing additional LQR information
for the local PPP entity."
::= { pppLqr 3 }
pppLqrExtnsEntry OBJECT-TYPE
SYNTAX PppLqrExtnsEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Extended LQR information for a particular PPP
link. Assuming that this group has been
implemented, a PPP link will have an entry in
this table if and only if LQR Quality
Monitoring has been successfully negotiated for
said link."
INDEX { ifIndex }
::= { pppLqrExtnsTable 1 }
PppLqrExtnsEntry ::= SEQUENCE {
pppLqrExtnsLastReceivedLqrPacket
OCTET STRING(SIZE(68))
}
pppLqrExtnsLastReceivedLqrPacket OBJECT-TYPE
SYNTAX OCTET STRING(SIZE(68))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This object contains the most recently
received LQR packet. The format of the packet
is as described in the LQM Protocol
specificiation. All fields of the packet,
including the `save' fields, are stored in this
object.
The LQR packet is stored in network byte order.
The LAP-B and PPP headers are not stored in
this object; the first four octets of this
variable contain the Magic-Number field, the
second four octets contain the LastOutLQRs
field and so on. The last four octets of this
object contain the SaveInOctets field of the
LQR packet."
REFERENCE
"Section 2.6, Packet Format, of RFC1333"
::= { pppLqrExtnsEntry 1 }
Now the LQR Extensions Group π Heads up, this whole group is optional to implement β¨ Its purpose is to let external software handle the policy stuff that decides whether a link is "bad" or not. The reason it's not practical to inspect the MIB objects used to build LQR packets is that LQR policies need every piece of data for Link Quality to be synchronized, so the relevant counters all have to be captured at the exact same moment in time β°
pppLqrExtnsTable is not-accessible and sits under pppLqr at index 3 π It holds extra LQR info for the local PPP entity π
pppLqrExtnsEntry is also not-accessible and indexed by ifIndex π§ This is where it gets specific: assuming the group is implemented, a PPP link gets an entry here if and only if LQR Quality Monitoring has been successfully negotiated for that link π₯
pppLqrExtnsLastReceivedLqrPacket is a read-only OCTET STRING of exactly 68 octets π
It holds the most recently received LQR packet, in the format from the LQM Protocol specification, and every field goes in there, including the save fields π¦ The packet is stored in network byte order, and the LAP-B and PPP headers are left out. The first four octets are the Magic-Number field, the next four are LastOutLQRs, and so on. The last four octets hold the SaveInOctets field of the LQR packet πΈ It references Section 2.6 of RFC1333 (Packet Format) π
-- 4.4. PPP Tests
-- The extensions to the interface table in RFC1229 define a
-- table through which the network manager can instruct the
-- managed object to perform various tests of the interface. This
-- is the ifExtnsTestTable.
-- The PPP MIB defines two such tests.
-- 4.4.1. PPP Echo Test
-- The PPP Echo Test is defined as
pppEchoTest OBJECT IDENTIFIER ::= { pppTests 1 }
-- Invoking this test causes a PPP Echo Packet to be sent on the
-- line. ifExtnsTestResult returns success(2) if the echo
-- response came back properly. It returns failed(7) if the
-- response did not properly return. The definition of "proper"
-- in this context is left to the discretion of the
-- implementor.
-- 4.4.2. PPP Discard Test
-- The PPP Discard Test is defined as
pppDiscardTest OBJECT IDENTIFIER ::= { pppTests 2 }
-- Invoking this test causes a PPP Discard Packet to be sent on
-- the line. ifExtnsTestResult returns success(2) if the discard
-- packet was successfully transmitted and failed(7) if an error
-- was detected on transmission. The definition of "transmission
-- error" in this context is left to the discretion of the
-- implementor.
END
4.4. PPP Tests
The PPP MIB has two tests, and they both run through the interface extensions table from RFC1229, which is ifExtnsTestTable π§ͺ That's the table where the network manager tells the managed object to run tests on the interface π«§
4.4.1. PPP Echo Test
pppEchoTest is just pppTests 1 β¨ Running it sends a PPP Echo Packet out on the line. ifExtnsTestResult gives back success(2) if the echo response comes back properly, and failed(7) if it doesn't π« What counts as "proper" is up to the implementor π
4.4.2. PPP Discard Test
pppDiscardTest is pppTests 2 πΈ Running it sends a PPP Discard Packet on the line. ifExtnsTestResult returns success(2) if the discard packet got transmitted fine, and failed(7) if an error showed up during transmission π¦ Again, what "transmission error" means is left to the implementor π
END
5. Acknowledgements
This document was produced by the PPP working group π«Ά The author also wants to thank these people for their comments and contributions π
- Bill Simpson -- Daydreamer π
- Glenn McGregor -- Merit π
- Jesse Walker -- DEC π§
- Chris Gunner -- DEC β¨
6. Security Considerations
The PPP MIB lets the network operator configure and control the PPP links on a system, and that is a real security risk π Here's how it's handled:
- All variables that pose a significant security risk go into separate, optional MIB Groups. Since the MIB Group is the unit of implementation within a MIB, the implementor can choose not to implement these groups π‘οΈ
- The implementor can make security-sensitive variables non-writable, so they're READ-ONLY. This still leaves a security risk and is not recommended π¨ Specifically, the PPP Authentication Protocols' variables can be read pretty easily π
- With SNMPv2, the operator can put those variables into protected MIB views, where the parties accessing them use authentication and privacy protocols. Or the operator can make those views completely inaccessible to everyone π To make that easier, all security-related variables sit in separate MIB Tables, which helps identify the right MIB View Subtree π
7. References β¨
Okay bestie, the reference list is where all the receipts live π§Ύπ Every single source the spec leans on is right here, so nothing gets left out.
- [1] Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", STD 16, RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990.
- [2] McCloghrie K., and M. Rose, Editors, "Management Information Base for Network Management of TCP/IP-based internets", STD 17, RFC 1213, Performance Systems International, March 1991.
- [3] Information processing systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1), International Organization for Standardization, International Standard 8824, December 1987.
- [4] Information processing systems - Open Systems Interconnection - Specification of Basic Encoding Rules for Abstract Notation One (ASN.1), International Organization for Standardization, International Standard 8825, December 1987.
- [5] Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions", STD 16, RFC 1212, Performance Systems International, Hughes LAN Systems, March 1991.
- [6] Rose, M., Editor, "A Convention for Defining Traps for use with the SNMP", RFC 1215, Performance Systems International, March 1991.
- [7] McCloghrie, K., "Extensions to the Generic-Interface MIB", RFC 1229, Hughes LAN Systems, Inc., May 1991.
- [8] Simpson, W., "The Point-to-Point Protocol for the Transmission of Multi-protocol Datagrams over Point-to-Point Links, RFC 1331, Daydreamer, May 1992.
- [9] McGregor, G., "The PPP Internet Protocol Control Protocol", RFC 1332, Merit, May 1992.
- [10] Baker, F., "Point-to-Point Protocol Extensions for Bridging", RFC 1220, ACC, April 1991.
- [11] Lloyd, B., and W. Simpson, "PPP Authentication Protocols", RFC 1334, L&A, Daydreamer, October 1992.
- [12] Simpson, W., "PPP Link Quality Monitoring", RFC 1333, Daydreamer, May 1992.
- [13] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, SNMP Research, Performance Systems International, Performance Systems International, MIT Laboratory for Computer Science, May 1990.
8. Author's Address π¦
Here's where you can find the author, Frank Kastenholz, over at FTP Software, Inc. π
Frank Kastenholz
FTP Software, Inc.
2 High Street
North Andover, Mass 01845 USA
Phone: (508) 685-4000
EMail: kasten@ftp.com
That's the whole spec, bestie! ππ You made it to the end, and honestly the references section is giving "I did my homework" energy πβ¨
π¦ where this page comes from
- ietf: rfc1471 1993-06
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms