Annotation of 43BSDReno/contrib/isode-beta/doc/rfcs/smux.rf, revision 1.1.1.1

1.1       root        1: .\" smux.rf - SNMP MUX definitions
                      2: .de UL
                      3: .ti -.5i
                      4: -------
                      5: .br
                      6: ..
                      7: .ie \nh \{\
                      8: .ll 66 
                      9: .po 2 \}
                     10: .el \{\
                     11: .ll 62 
                     12: .pl 58
                     13: .nr sf R
                     14: .nr fm 0 \}
                     15: .he 'draft'SMUX'May 1990'
                     16: .fo 'M.T. Rose''[Page %]'
                     17: .de $0
                     18: .(x t
                     19: \\$2 \\$1
                     20: .)x
                     21: ..
                     22: .lp
                     23: .na
                     24: .nh
                     25: .ce
                     26: \fBSNMP MUX Protocol and MIB\fR
                     27: .sp 1
                     28: .ce
                     29: Sun May 13 14:53:58 1990
                     30: .sp 2
                     31: .ce
                     32: Marshall T. Rose
                     33: .sp 1
                     34: .ce 4
                     35: Performance Systems International, Inc.
                     36: 11800 Sunrise Valley Drive
                     37: Suite 1100
                     38: Reston, VA  22091
                     39: .sp 1
                     40: .ce
                     41: [email protected]
                     42: .sp 5
                     43: .sh 1 "Status of this Memo"
                     44: .lp
                     45: This document defines a mechanism by which multiple UNIX daemons
                     46: may communicate with the local SNMP agent on a host.
                     47: This is a local mechanism.
                     48: 
                     49: .bp
                     50: .sh 1 "Introduction"
                     51: .lp
                     52: On kernel/user systems such as BSD UNIX,
                     53: an agent speaking the SNMP [1] is often implemented as a user-process,
                     54: which reads kernel variables in order to realize the Internet-standard
                     55: MIB [2].
                     56: This approach works fine as long as all of the information needed by
                     57: the SNMP agent resides in either the kernel or in stable storage
                     58: (i.e., files).
                     59: However,
                     60: when other user-processes are employed to implement other network
                     61: services,
                     62: such as routing protocols,
                     63: communication between the SNMP agent the and other processes is problematic.
                     64: .lp
                     65: In order to solve this problem,
                     66: a new protocol,
                     67: the SNMP multiplexing (SMUX) protocol is introduced.
                     68: When a user-process,
                     69: termed a SMUX peer,
                     70: wishes to export a MIB module,
                     71: it initiates a SMUX association to the local SNMP agent,
                     72: registers itself, and (later) fields management operations for objects
                     73: in the MIB module.
                     74: .lp
                     75: Carrying this approach to its fullest,
                     76: it is possible to generalize the SNMP agent so that it knows about
                     77: only the SNMP group of the Internet-standard MIB.
                     78: All other portions of the Internet-standard MIB can be implemented by
                     79: another process.
                     80: This is quite useful, for example, when a computer manufacturer wishes
                     81: to provide SNMP access for its operating system in binary form.
                     82: .lp
                     83: In addition to defining the SMUX protocol,
                     84: this document defines a MIB for the SMUX.
                     85: Obviously,
                     86: this MIB module must also be implemented in the local SNMP agent.
                     87: 
                     88: .bp
                     89: .sh 1 "Architecture"
                     90: .lp
                     91: There are two approaches that can be taken when trying to integrate
                     92: arbitrary MIB modules with the SNMP agent: request-response and cache-ahead.
                     93: .lp
                     94: The request-response model simply propagates the SNMP requests
                     95: received by the SNMP agent to the user process which exported the MIB
                     96: module.
                     97: The SMUX peer then performs the operation and returns a response.
                     98: In turn,
                     99: the SNMP agent propagates this response back to the network management station.
                    100: The request-response model is said to be agent-driven since,
                    101: after registration,
                    102: the SNMP agent initiates all transactions.
                    103: .lp
                    104: The cache-ahead model requires that the SMUX peer,
                    105: after registration,
                    106: periodically updates the SNMP agent with the subtree for the MIB module
                    107: which has been registered.
                    108: The SNMP agent, upon receiving an SNMP request,
                    109: locally performs the operation,
                    110: and returns a response to the network management station.
                    111: The cache-ahead model is said to be peer-driven since,
                    112: after registration,
                    113: the SMUX peer initiates all transactions.
                    114: .lp
                    115: There are advantages and disadvantages to both approaches.
                    116: As such,
                    117: the architecture envisioned supports both models in the following
                    118: fashion:
                    119: the protocol between the SNMP agent and the SMUX peer is based on the
                    120: request-response model.
                    121: However,
                    122: the SMUX peer,
                    123: may itself be a user-process which employs the cache-ahead model with
                    124: other user-processes.
                    125: .lp
                    126: Obviously,
                    127: the SMUX peer which employs the cache-ahead model acts as a \*(lqfirewall\*(rq
                    128: for those user-processes which actually implement the managed objects
                    129: in the given MIB module.
                    130: .lp
                    131: Note that this document describes only the SMUX protocol,
                    132: for the request-response model.
                    133: Each SMUX peer is free to define a cache-ahead protocol specific for
                    134: the application at hand.
                    135: 
                    136: .bp
                    137: .sh 1 "Protocol"
                    138: .lp
                    139: The SMUX protocol is simple:
                    140: the SNMP agent listens for incoming connections.
                    141: Upon establishing a connection,
                    142: the SMUX peer issues an OpenPDU to initialize the SMUX association.
                    143: If the SNMP agent declines the association,
                    144: it issues a closePDU and closes the connection.
                    145: If the SNMP agent accepts the association,
                    146: no response is issued by the SNMP agent.
                    147: .lp
                    148: For each subtree defined in a MIB module that the SMUX peer wishes to
                    149: register (or unregister),
                    150: the SMUX peer issues a RReqPDU.
                    151: When the SNMP agent receives such a PDU,
                    152: it issues a corresponding RRspPDU.
                    153: The SNMP agent returns RRspPDUs in the same order as the RReqPDUs were
                    154: received.
                    155: .lp
                    156: When the SMUX peer wishes to issue a trap,
                    157: it issues an SNMP Trap-PDU.
                    158: When the SNMP agent receives such a PDU,
                    159: it propagates this to the network management stations that it is
                    160: configured to send traps to.
                    161: .lp
                    162: When the SNMP agent receives an SNMP GetRequest-PDU,
                    163: GetNextRequest-PDU, or SetRequest-PDU which includes one or more
                    164: variable-bindings within a subtree registered by a SMUX peer,
                    165: the SNMP agent sends an equivalent SNMP PDU containing only those
                    166: variables within the subtree registered by that SMUX peer.
                    167: When the SMUX peer receives such a PDU,
                    168: it applies the indicated operation and issues a corresponding SNMP
                    169: GetResponse-PDU.
                    170: The SNMP agent then correlates this result and propagates the
                    171: resulting GetResponse-PDU to the network management station.
                    172: .lp
                    173: When either the SNMP agent or the SMUX peer wishes to release the SMUX
                    174: association,
                    175: the ClosePDU is issued and the connection is closed.
                    176: 
                    177: .sh 2 "Tricky Things"
                    178: .lp
                    179: Although straight-forward, there are a few nuances.
                    180: 
                    181: .sh 3 "Registration"
                    182: .lp
                    183: Associated with each registration is an integer priority,
                    184: from 0 to (2^31)-1.
                    185: The lower the value,
                    186: the higher the priority.
                    187: .lp
                    188: Multiple SMUX peers may register the same subtree.
                    189: However,
                    190: they must do so at different priorities
                    191: (i.e., a subtree and a priority uniquely identifies a SMUX peer).
                    192: As such,
                    193: if a SMUX peer wishes to register a subtree at a priority which is
                    194: already taken,
                    195: the SNMP agent repeatedly increments the integer value until an unused
                    196: priority is found.
                    197: .lp
                    198: When registering a subtree,
                    199: the special priority -1 may be used,
                    200: which selects the highest available priority.
                    201: .lp
                    202: Of course,
                    203: the SNMP agent may select an arbitrarily worse priority for a SMUX
                    204: peer,
                    205: based on local (configuration)  information.
                    206: .lp
                    207: Note that when a subtree is registered,
                    208: the SMUX peer with the highest registration priority is exclusively
                    209: consulted for all operations on that subtree.
                    210: Further note that SNMP agents must enforce the
                    211: \*(lqsubtree mounting effect\*(rq,
                    212: which hides the registrations by other SMUX peers of objects within
                    213: the subtree.
                    214: For example,
                    215: if a SMUX peer registered \*(lqsysDescr\*(rq,
                    216: and later another SMUX peer registered \*(lqsystem\*(rq
                    217: (which scopes \*(lqsysDescr\*(rq),
                    218: then all requests for \*(lqsysDescr\*(rq would be given to the latter
                    219: SMUX peer.
                    220: .lp
                    221: An SNMP agent should disallow any attempt to register at or within the SNMP
                    222: and SMUX subtrees of the MIB.
                    223: Other subtrees may be disallowed as an implementation-specific option.
                    224: 
                    225: .sh 3 "Removing Registration"
                    226: .lp
                    227: A SMUX peer may remove registrations for only those subtrees which it
                    228: has registered.
                    229: If the priority given in the RReq-PDU is -1,
                    230: then the registration of highest priority is selected for deletion.
                    231: Otherwise, only that registration with the precise registration
                    232: is selected.
                    233: 
                    234: .sh 3 "Variables in Requests"
                    235: .lp
                    236: When constructing an SNMP GetRequest-PDU, GetNextRequest-PDU, or
                    237: SetRequest-PDU, for a SMUX peer,
                    238: the SNMP agent may send one, or more than one variable in a single request.
                    239: In all cases,
                    240: the SNMP agent should process each variable sequentially,
                    241: and block accordingly when a SMUX peer is contacted.
                    242: 
                    243: .sh 3 "Request-ID"
                    244: .lp
                    245: When the SNMP agent constructs an SNMP GetRequest-PDU,
                    246: GetNextRequest-PDU, or SetRequest-PDU, for a SMUX peer,
                    247: the \fIrequest_id\fR field of the SNMP takes a special meaning.
                    248: Basically,
                    249: this field should take a different value for each SNMP PDU received by
                    250: the SNMP agent.
                    251: As such,
                    252: if an SNMP agent generates multiple PDUs for a SMUX peer,
                    253: upon receipt of a single PDU from the network management station,
                    254: then the \fIrequest_id\fR field of the PDUs sent to the SMUX peer
                    255: takes the same value
                    256: (which need bear no relationship to the value of the \fIrequest_id\fR
                    257: field of the PDU originally received by the SNMP agent.)
                    258: 
                    259: .sh 3 "The powerful get-next operator"
                    260: .lp
                    261: Each SMUX peer acts as though it contains the entire MIB when
                    262: processing the powerful get-next operator.
                    263: This means that the SNMP agent must check each variable named returned
                    264: in the SNMP GetResponse-PDU generated by a SMUX peer and see if it is in
                    265: the subtree of the managed object corresponding to original SNMP
                    266: GetNextRequest-PDU.
                    267: If not,
                    268: the SNMP agent will apply the get-next operator to the next managed object.
                    269: This may result in contacting a different SMUX peer,
                    270: depending on the registration topology.
                    271: 
                    272: .sh 2 "Protocol Data Units"
                    273: .lp
                    274: The SMUX protocol data units are defined using Abstract Syntax
                    275: Notation One (ASN.1) [3]:
                    276: .sp
                    277: .in +.5i
                    278: .nf
                    279: SMUX DEFINITIONS ::= BEGIN
                    280: 
                    281: IMPORTS
                    282:        DisplayString, ObjectName
                    283:                FROM RFC1155-SMI
                    284: 
                    285:        PDUs
                    286:                FROM RFC1157-SNMP;
                    287: 
                    288: 
                    289: -- tags for SMUX-specific PDUs are application-wide to
                    290: -- avoid conflict with tags for current (and future)
                    291: -- SNMP-generic PDUs
                    292: 
                    293: SMUX-PDUs ::=
                    294:     CHOICE {
                    295:        open            -- SMUX peer uses
                    296:            OpenPDU,    -- immediately after TCP open
                    297: 
                    298:        close           -- either uses immediately before TCP close
                    299:            ClosePDU,
                    300: 
                    301:        registerRequest -- SMUX peer uses
                    302:            RReqPDU,
                    303: 
                    304:        registerResponse -- SNMP agent uses
                    305:            RRspPDU,
                    306: 
                    307:        PDUs            -- note that roles are reversed:
                    308:                        --   SNMP agent does get/get-next/set
                    309:                        --   SMUX peer does get-response/trap
                    310:     }
                    311: 
                    312: 
                    313: -- open PDU
                    314: -- currently only simple authentication
                    315: 
                    316: OpenPDU ::=
                    317:     CHOICE {
                    318:        simple
                    319:            SimpleOpen
                    320:     }
                    321: 
                    322: SimpleOpen ::=
                    323:     [APPLICATION 0] IMPLICIT
                    324:        SEQUENCE {
                    325:            version     -- of SMUX protocol
                    326:                INTEGER {
                    327:                    version-1(0)
                    328:                },
                    329: 
                    330:            identity    -- of SMUX peer, authoritative
                    331:                OBJECT IDENTIFIER,
                    332: 
                    333:            description -- of SMUX peer, implementation-specific
                    334:                DisplayString,
                    335: 
                    336:            password    -- zero length indicates no authentication
                    337:                OCTET STRING
                    338:        }
                    339: 
                    340: 
                    341: -- close PDU
                    342: 
                    343: ClosePDU ::=
                    344:     [APPLICATION 1] IMPLICIT
                    345:        INTEGER {
                    346:            goingDown(0), 
                    347:            unsupportedVersion(1),
                    348:            packetFormat(2),
                    349:            protocolError(3),
                    350:            internalError(4),
                    351:            authenticationFailure(5)
                    352:        }
                    353: 
                    354: 
                    355: -- insert PDU
                    356: 
                    357: RReqPDU ::=
                    358:     [APPLICATION 2] IMPLICIT
                    359:        SEQUENCE {
                    360:            subtree
                    361:                ObjectName,
                    362: 
                    363:            priority    -- the lower the better, "-1" means default
                    364:                INTEGER (-1..2147483647),
                    365: 
                    366:            operation
                    367:                INTEGER {
                    368:                    delete(0),
                    369:                    readOnly(1),
                    370:                    readWrite(2)
                    371:                }
                    372:        }
                    373: 
                    374: RRspPDU ::=
                    375:     [APPLICATION 3] IMPLICIT
                    376:        INTEGER {
                    377:            failure(-1)
                    378: 
                    379:            -- on success the non-negative priority is returned
                    380:        }
                    381: 
                    382: END
                    383: .fi
                    384: .in -.5i
                    385: .sp
                    386: 
                    387: .sh 2 "Mappings on Transport Service"
                    388: .lp
                    389: The SMUX protocol may be mapped onto any CO-mode transport service.
                    390: At present,
                    391: only one such mapping is defined.
                    392: 
                    393: .sh 3 "Mapping onto the TCP"
                    394: .lp
                    395: When using the TCP to provide the transport-backing for the SMUX
                    396: protocol,
                    397: the SNMP agent listens on TCP port 199.
                    398: .lp
                    399: Each SMUX PDU is serialized using the Basic Encoding Rules [4] and
                    400: sent on the TCP.
                    401: As ASN.1 objects are self-delimiting when encoding using the BER,
                    402: so no packetization protocol is required.
                    403: 
                    404: .bp
                    405: .sh 1 "MIB for the SMUX"
                    406: .lp
                    407: The MIB objects for the SMUX are implemented by the local SNMP agent:
                    408: .sp
                    409: .in +.5i
                    410: .nf
                    411: SMUX-MIB DEFINITIONS ::= BEGIN
                    412: 
                    413: IMPORTS
                    414:        enterprises, OBJECT-TYPE, ObjectName
                    415:                FROM RFC1155-SMI;
                    416: 
                    417: 
                    418: unix    OBJECT IDENTIFIER ::= { enterprises 4 }
                    419: 
                    420: 
                    421: smux   OBJECT IDENTIFIER ::= { unix 4 }
                    422: 
                    423: smuxPeerTable  OBJECT-TYPE
                    424:        SYNTAX  SEQUENCE OF SmuxPeerEntry
                    425:        ACCESS  not-accessible
                    426:        STATUS  mandatory
                    427:        ::= { smux 1 }
                    428: 
                    429: smuxPeerEntry  OBJECT-TYPE
                    430:        SYNTAX  SmuxPeerEntry
                    431:        ACCESS  not-accessible
                    432:        STATUS  mandatory
                    433: --     INDEX   { smuxPindex }
                    434:        ::= { smuxPeerTable 1}
                    435: 
                    436: SmuxPeerEntry ::= SEQUENCE {
                    437:     smuxPindex
                    438:        INTEGER,
                    439:     smuxPidentity
                    440:        OBJECT IDENTIFIER,
                    441:     smuxPdescription
                    442:        DisplayString,
                    443:     smuxPstatus
                    444:        INTEGER
                    445: }
                    446: 
                    447: smuxPindex     OBJECT-TYPE
                    448:        SYNTAX  INTEGER
                    449:        ACCESS  read-write
                    450:        STATUS  mandatory
                    451:        ::= { smuxPeerEntry 1 }
                    452: 
                    453: smuxPidentity  OBJECT-TYPE
                    454:        SYNTAX  OBJECT IDENTIFIER
                    455:        ACCESS  read-write
                    456:        STATUS  mandatory
                    457:        ::= { smuxPeerEntry 2 }
                    458: 
                    459: smuxPdescription OBJECT-TYPE
                    460:        SYNTAX  DisplayString (SIZE (0..255))
                    461:        ACCESS  read-write
                    462:        STATUS  mandatory
                    463:        ::= { smuxPeerEntry 3 }
                    464: 
                    465: smuxPstatus    OBJECT-TYPE
                    466:        SYNTAX  INTEGER { valid(1), invalid(2), connecting(3) }
                    467:        ACCESS  read-write
                    468:        STATUS  mandatory
                    469:        ::= { smuxPeerEntry 4 }
                    470: 
                    471: smuxTreeTable  OBJECT-TYPE
                    472:        SYNTAX  SEQUENCE OF SmuxTreeEntry
                    473:        ACCESS  not-accessible
                    474:        STATUS  mandatory
                    475:        ::= { smux 2 }
                    476: 
                    477: smuxTreeEntry  OBJECT-TYPE
                    478:        SYNTAX  SmuxTreeEntry
                    479:        ACCESS  not-accessible
                    480:        STATUS  mandatory
                    481:        ::= { smuxTreeTable 1}
                    482: 
                    483: SmuxTreeEntry ::= SEQUENCE {
                    484:     smuxTsubtree
                    485:        ObjectName
                    486:     smuxTpriority
                    487:        INTEGER,
                    488:     smuxTindex
                    489:        INTEGER,
                    490:     smuxTstatus
                    491:        INTEGER
                    492: }
                    493: 
                    494: smuxTsubtree   OBJECT-TYPE
                    495:        SYNTAX  ObjectName
                    496:        ACCESS  read-write
                    497:        STATUS  mandatory
                    498: --     INDEX   { smuxTsubtree, smuxTpriority }
                    499:        ::= { smuxTreeEntry 1 }
                    500: 
                    501: smuxTpriority OBJECT-TYPE
                    502:        SYNTAX  INTEGER (0..2147483647)
                    503:        ACCESS  read-write
                    504:        STATUS  mandatory
                    505:        ::= { smuxTreeEntry 2 }
                    506: 
                    507: smuxTindex OBJECT-TYPE
                    508:        SYNTAX  INTEGER (0..2147483647)
                    509:        ACCESS  read-write
                    510:        STATUS  mandatory
                    511:        ::= { smuxTreeEntry 3 }
                    512: 
                    513: smuxTstatus    OBJECT-TYPE
                    514:        SYNTAX  INTEGER { valid(1), invalid(2) }
                    515:        ACCESS  read-write
                    516:        STATUS  mandatory
                    517:        ::= { smuxTreeEntry 4 }
                    518: 
                    519: END
                    520: .fi
                    521: .in -.5i
                    522: .sp
                    523: 
                    524: .sh 2 "Identification of OBJECT instances for use with the SNMP"
                    525: .lp
                    526: The names for all object types in the MIB are defined explicitly either
                    527: in the Internet-standard MIB or in other documents which conform to
                    528: the naming conventions of the SMI[5]. The SMI requires
                    529: that conformant management protocols define mechanisms
                    530: for identifying individual instances of those object types
                    531: for a particular network element.
                    532: .lp
                    533: Each instance of any object type defined in the MIB is identified
                    534: in SNMP operations by a unique name called its "variable name."
                    535: In general, the name of an SNMP variable is an OBJECT IDENTIFIER
                    536: of the form x.y, where x is the name of a non-aggregate object type 
                    537: defined in the MIB and y is an OBJECT IDENTIFIER fragment
                    538: that, in a way specific to the named object type, identifies the
                    539: desired instance.
                    540: .lp
                    541: This naming strategy admits the fullest exploitation of the
                    542: semantics of the powerful SNMP get-next operator,
                    543: because it assigns names for related variables so as to be contiguous
                    544: in the lexicographical ordering of all variable names
                    545: known in the MIB.
                    546: .lp
                    547: The type-specific naming of object instances is defined below
                    548: for a number of classes of object types.
                    549: Instances of
                    550: an object type to which
                    551: none of the following naming conventions are applicable are
                    552: named by OBJECT IDENTIFIERs of the form
                    553: x.0, where x is the name of said object type in the MIB definition.
                    554: .lp
                    555: For example,
                    556: suppose one wanted to identify an instance of the variable sysDescr.
                    557: The object class for sysDescr is:
                    558: .sp
                    559: .in +0.25
                    560: .nf
                    561: iso org dod internet mgmt mib system sysDescr
                    562:  1   3   6     1      2    1    1       1
                    563: .fi
                    564: .in -0.25
                    565: .sp
                    566: Hence,
                    567: the object type, x, would be 1.3.6.1.2.1.1.1 to which
                    568: is appended an instance sub-identifier of 0.
                    569: That is, 1.3.6.1.2.1.1.1.0
                    570: identifies the one and only instance of sysDescr.
                    571: 
                    572: .sh 3 "smuxPeerTable Object Type Names"
                    573: .lp
                    574: The name of a SMUX peer relationship, s, is the OBJECT IDENTIFIER
                    575: value of the form i, where i has the value of that
                    576: instance of the smuxPindex object type associated with s.
                    577: .lp
                    578: For each object type, t, for which the defined name, n, has
                    579: a prefix of smuxPeerEntry, an instance, i, of t is named by an OBJECT
                    580: IDENTIFIER of the form n.s, where s is the name of the SMUX peer relationship
                    581: about which i represents information.
                    582: .lp
                    583: For example,
                    584: suppose one wanted to identify the instance of the variable smuxPidentity
                    585: associated with peer relationship number 2.
                    586: Accordingly, smuxPidentity.2 would identify the desired instance.
                    587: 
                    588: .sh 3 "smuxTreeTable Object Type Names"
                    589: .lp
                    590: The name of a SMUX subtree relationship, s, is the OBJECT IDENTIFIER
                    591: value of the form i.j, where i has the value of that
                    592: instance of the smuxTsubtree object type,
                    593: and j has the value of that instance of the smuxTpriority object type,
                    594: associated with s.
                    595: .lp
                    596: For each object type, t, for which the defined name, n, has
                    597: a prefix of smuxTreeEntry, an instance, i, of t is named by an OBJECT
                    598: IDENTIFIER of the form n.s.t.u,
                    599: where s is the number of sub-identifiers in the corresponding instance
                    600: of smuxTsubtree,
                    601: t is the value of the instance of smuxTsubtree corresponding to this
                    602: entry,
                    603: and u is the value of the instance of smuxTpriority corresponding to
                    604: this entry.
                    605: .lp
                    606: For example,
                    607: suppose one wanted to identify the instance of the variable smuxTindex
                    608: associated with the subtree 1.3.6.1.5 for priority 3.
                    609: Accordingly, smuxTindex.5.1.3.6.1.5.3 would identify the desired instance.
                    610: 
                    611: .bp
                    612: .sh 1 "Acknowledgements"
                    613: .lp
                    614: SMUX was designed one afternoon by these people:
                    615: .sp
                    616: .in +.5i
                    617: .nf
                    618: Jeffrey S. Case, UTK-CS
                    619: James R. Davin, MIT-LCS
                    620: Mark S. Fedor, PSI
                    621: Jeffrey C. Honig, Cornell
                    622: Louie A. Mamakos, UMD
                    623: Michael G. Petry, UMD
                    624: Yakov Rekhter, IBM
                    625: Marshall T. Rose, PSI
                    626: .fi
                    627: .in -.5i
                    628: .sp
                    629: 
                    630: .bp
                    631: .sh 1 "References"
                    632: .ip [1]
                    633: J.D.\0Case, M.S.\0Fedor, M.L.\0Schoffstall, and J.R.\0Davin,
                    634: \fISimple Network Management Protocol\fR,
                    635: Internet Working Group Request for Comments 1157.
                    636: Network Information Center, SRI International, Menlo Park, California,
                    637: (May, 1990).
                    638: .ip [2]
                    639: K.\0McCloghrie and M.T.\0Rose,
                    640: \fIManagement Information Base for Network Management of TCP/IP-based
                    641: internets\fR,
                    642: Internet Working Group Request for Comments 1156.
                    643: Network Information Center, SRI International, Menlo Park, California,
                    644: (May, 1990).
                    645: .ip [3]
                    646: \fIInformation processing systems \(em Open Systems Interconnection \(em
                    647: Specification of Abstract Syntax Notation One (ASN.1)\fP, International
                    648: Organization for Standardization.  International Standard 8824,
                    649: (December, 1987).
                    650: .ip [4]
                    651: \fIInformation processing systems \(em Open Systems Interconnection \(em
                    652: Specification of Basic Encoding Rules for Abstract Notation
                    653: One (ASN.1)\fP, International Organization for Standardization.
                    654: International Standard 8825,
                    655: (December, 1987).
                    656: .ip [5]
                    657: M.T.\0Rose and K.\0McCloghrie,
                    658: \fIStructure and Identification of Management Information for
                    659: TCP/IP\-based internets\fR,
                    660: Internet Working Group Request for Comments 1155.
                    661: Network Information Center, SRI International, Menlo Park, California,
                    662: (May, 1990).
                    663: 
                    664: .bp
                    665: .lp
                    666: \fBTable of Contents\fR
                    667: .sp 2
                    668: .xp t

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.