Fix call to otp_write
[freeradius.git] / doc / rfc / rfc1157.txt
1
2
3
4
5
6
7 Network Working Group                                            J. Case
8 Request for Comments:  1157                                SNMP Research
9 Obsoletes:  RFC 1098                                            M. Fedor
10                                        Performance Systems International
11                                                           M. Schoffstall
12                                        Performance Systems International
13                                                                 J. Davin
14                                      MIT Laboratory for Computer Science
15                                                                 May 1990
16
17
18               A Simple Network Management Protocol (SNMP)
19
20                            Table of Contents
21
22    1. Status of this Memo ...................................    2
23    2. Introduction ..........................................    2
24    3. The SNMP Architecture .................................    5
25    3.1 Goals of the Architecture ............................    5
26    3.2 Elements of the Architecture .........................    5
27    3.2.1 Scope of Management Information ....................    6
28    3.2.2 Representation of Management Information ...........    6
29    3.2.3 Operations Supported on Management Information .....    7
30    3.2.4 Form and Meaning of Protocol Exchanges .............    8
31    3.2.5 Definition of Administrative Relationships .........    8
32    3.2.6 Form and Meaning of References to Managed Objects ..   12
33    3.2.6.1 Resolution of Ambiguous MIB References ...........   12
34    3.2.6.2 Resolution of References across MIB Versions......   12
35    3.2.6.3 Identification of Object Instances ...............   12
36    3.2.6.3.1 ifTable Object Type Names ......................   13
37    3.2.6.3.2 atTable Object Type Names ......................   13
38    3.2.6.3.3 ipAddrTable Object Type Names ..................   14
39    3.2.6.3.4 ipRoutingTable Object Type Names ...............   14
40    3.2.6.3.5 tcpConnTable Object Type Names .................   14
41    3.2.6.3.6 egpNeighTable Object Type Names ................   15
42    4. Protocol Specification ................................   16
43    4.1 Elements of Procedure ................................   17
44    4.1.1 Common Constructs ..................................   19
45    4.1.2 The GetRequest-PDU .................................   20
46    4.1.3 The GetNextRequest-PDU .............................   21
47    4.1.3.1 Example of Table Traversal .......................   23
48    4.1.4 The GetResponse-PDU ................................   24
49    4.1.5 The SetRequest-PDU .................................   25
50    4.1.6 The Trap-PDU .......................................   27
51    4.1.6.1 The coldStart Trap ...............................   28
52    4.1.6.2 The warmStart Trap ...............................   28
53    4.1.6.3 The linkDown Trap ................................   28
54    4.1.6.4 The linkUp Trap ..................................   28
55
56
57
58 Case, Fedor, Schoffstall, & Davin                               [Page 1]
59 \f
60 RFC 1157                          SNMP                          May 1990
61
62
63    4.1.6.5 The authenticationFailure Trap ...................   28
64    4.1.6.6 The egpNeighborLoss Trap .........................   28
65    4.1.6.7 The enterpriseSpecific Trap ......................   29
66    5. Definitions ...........................................   30
67    6. Acknowledgements ......................................   33
68    7. References ............................................   34
69    8. Security Considerations................................   35
70    9. Authors' Addresses.....................................   35
71
72 1.  Status of this Memo
73
74    This RFC is a re-release of RFC 1098, with a changed "Status of this
75    Memo" section plus a few minor typographical corrections.  This memo
76    defines a simple protocol by which management information for a
77    network element may be inspected or altered by logically remote
78    users.  In particular, together with its companion memos which
79    describe the structure of management information along with the
80    management information base, these documents provide a simple,
81    workable architecture and system for managing TCP/IP-based internets
82    and in particular the Internet.
83
84    The Internet Activities Board recommends that all IP and TCP
85    implementations be network manageable.  This implies implementation
86    of the Internet MIB (RFC-1156) and at least one of the two
87    recommended management protocols SNMP (RFC-1157) or CMOT (RFC-1095).
88    It should be noted that, at this time, SNMP is a full Internet
89    standard and CMOT is a draft standard.  See also the Host and Gateway
90    Requirements RFCs for more specific information on the applicability
91    of this standard.
92
93    Please refer to the latest edition of the "IAB Official Protocol
94    Standards" RFC for current information on the state and status of
95    standard Internet protocols.
96
97    Distribution of this memo is unlimited.
98
99 2.  Introduction
100
101    As reported in RFC 1052, IAB Recommendations for the Development of
102    Internet Network Management Standards [1], a two-prong strategy for
103    network management of TCP/IP-based internets was undertaken.  In the
104    short-term, the Simple Network Management Protocol (SNMP) was to be
105    used to manage nodes in the Internet community.  In the long-term,
106    the use of the OSI network management framework was to be examined.
107    Two documents were produced to define the management information: RFC
108    1065, which defined the Structure of Management Information (SMI)
109    [2], and RFC 1066, which defined the Management Information Base
110    (MIB) [3].  Both of these documents were designed so as to be
111
112
113
114 Case, Fedor, Schoffstall, & Davin                               [Page 2]
115 \f
116 RFC 1157                          SNMP                          May 1990
117
118
119    compatible with both the SNMP and the OSI network management
120    framework.
121
122    This strategy was quite successful in the short-term: Internet-based
123    network management technology was fielded, by both the research and
124    commercial communities, within a few months.  As a result of this,
125    portions of the Internet community became network manageable in a
126    timely fashion.
127
128    As reported in RFC 1109, Report of the Second Ad Hoc Network
129    Management Review Group [4], the requirements of the SNMP and the OSI
130    network management frameworks were more different than anticipated.
131    As such, the requirement for compatibility between the SMI/MIB and
132    both frameworks was suspended.  This action permitted the operational
133    network management framework, the SNMP, to respond to new operational
134    needs in the Internet community by producing documents defining new
135    MIB items.
136
137    The IAB has designated the SNMP, SMI, and the initial Internet MIB to
138    be full "Standard Protocols" with "Recommended" status.  By this
139    action, the IAB recommends that all IP and TCP implementations be
140    network manageable and that the implementations that are network
141    manageable are expected to adopt and implement the SMI, MIB, and
142    SNMP.
143
144    As such, the current network management framework for TCP/IP- based
145    internets consists of:  Structure and Identification of Management
146    Information for TCP/IP-based Internets, which describes how managed
147    objects contained in the MIB are defined as set forth in RFC 1155
148    [5]; Management Information Base for Network Management of TCP/IP-
149    based Internets, which describes the managed objects contained in the
150    MIB as set forth in RFC 1156 [6]; and, the Simple Network Management
151    Protocol, which defines the protocol used to manage these objects, as
152    set forth in this memo.
153
154    As reported in RFC 1052, IAB Recommendations for the Development of
155    Internet Network Management Standards [1], the Internet Activities
156    Board has directed the Internet Engineering Task Force (IETF) to
157    create two new working groups in the area of network management.  One
158    group was charged with the further specification and definition of
159    elements to be included in the Management Information Base (MIB).
160    The other was charged with defining the modifications to the Simple
161    Network Management Protocol (SNMP) to accommodate the short-term
162    needs of the network vendor and operations communities, and to align
163    with the output of the MIB working group.
164
165    The MIB working group produced two memos, one which defines a
166    Structure for Management Information (SMI) [2] for use by the managed
167
168
169
170 Case, Fedor, Schoffstall, & Davin                               [Page 3]
171 \f
172 RFC 1157                          SNMP                          May 1990
173
174
175    objects contained in the MIB.  A second memo [3] defines the list of
176    managed objects.
177
178    The output of the SNMP Extensions working group is this memo, which
179    incorporates changes to the initial SNMP definition [7] required to
180    attain alignment with the output of the MIB working group.  The
181    changes should be minimal in order to be consistent with the IAB's
182    directive that the working groups be "extremely sensitive to the need
183    to keep the SNMP simple."  Although considerable care and debate has
184    gone into the changes to the SNMP which are reflected in this memo,
185    the resulting protocol is not backwardly-compatible with its
186    predecessor, the Simple Gateway Monitoring Protocol (SGMP) [8].
187    Although the syntax of the protocol has been altered, the original
188    philosophy, design decisions, and architecture remain intact.  In
189    order to avoid confusion, new UDP ports have been allocated for use
190    by the protocol described in this memo.
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226 Case, Fedor, Schoffstall, & Davin                               [Page 4]
227 \f
228 RFC 1157                          SNMP                          May 1990
229
230
231 3.  The SNMP Architecture
232
233    Implicit in the SNMP architectural model is a collection of network
234    management stations and network elements.  Network management
235    stations execute management applications which monitor and control
236    network elements.  Network elements are devices such as hosts,
237    gateways, terminal servers, and the like, which have management
238    agents responsible for performing the network management functions
239    requested by the network management stations.  The Simple Network
240    Management Protocol (SNMP) is used to communicate management
241    information between the network management stations and the agents in
242    the network elements.
243
244 3.1.  Goals of the Architecture
245
246    The SNMP explicitly minimizes the number and complexity of management
247    functions realized by the management agent itself.  This goal is
248    attractive in at least four respects:
249
250       (1)  The development cost for management agent software
251            necessary to support the protocol is accordingly reduced.
252
253       (2)  The degree of management function that is remotely
254            supported is accordingly increased, thereby admitting
255            fullest use of internet resources in the management task.
256
257       (3)  The degree of management function that is remotely
258            supported is accordingly increased, thereby imposing the
259            fewest possible restrictions on the form and
260            sophistication of management tools.
261
262       (4)  Simplified sets of management functions are easily
263            understood and used by developers of network management
264            tools.
265
266    A second goal of the protocol is that the functional paradigm for
267    monitoring and control be sufficiently extensible to accommodate
268    additional, possibly unanticipated aspects of network operation and
269    management.
270
271    A third goal is that the architecture be, as much as possible,
272    independent of the architecture and mechanisms of particular hosts or
273    particular gateways.
274
275 3.2.  Elements of the Architecture
276
277    The SNMP architecture articulates a solution to the network
278    management problem in terms of:
279
280
281
282 Case, Fedor, Schoffstall, & Davin                               [Page 5]
283 \f
284 RFC 1157                          SNMP                          May 1990
285
286
287       (1)  the scope of the management information communicated by
288            the protocol,
289
290       (2)  the representation of the management information
291            communicated by the protocol,
292
293       (3)  operations on management information supported by the
294            protocol,
295
296       (4)  the form and meaning of exchanges among management
297            entities,
298
299       (5)  the definition of administrative relationships among
300            management entities, and
301
302       (6)  the form and meaning of references to management
303            information.
304
305 3.2.1.  Scope of Management Information
306
307    The scope of the management information communicated by operation of
308    the SNMP is exactly that represented by instances of all non-
309    aggregate object types either defined in Internet-standard MIB or
310    defined elsewhere according to the conventions set forth in
311    Internet-standard SMI [5].
312
313    Support for aggregate object types in the MIB is neither required for
314    conformance with the SMI nor realized by the SNMP.
315
316 3.2.2.  Representation of Management Information
317
318    Management information communicated by operation of the SNMP is
319    represented according to the subset of the ASN.1 language [9] that is
320    specified for the definition of non-aggregate types in the SMI.
321
322    The SGMP adopted the convention of using a well-defined subset of the
323    ASN.1 language [9].  The SNMP continues and extends this tradition by
324    utilizing a moderately more complex subset of ASN.1 for describing
325    managed objects and for describing the protocol data units used for
326    managing those objects.  In addition, the desire to ease eventual
327    transition to OSI-based network management protocols led to the
328    definition in the ASN.1 language of an Internet-standard Structure of
329    Management Information (SMI) [5] and Management Information Base
330    (MIB) [6].  The use of the ASN.1 language, was, in part, encouraged
331    by the successful use of ASN.1 in earlier efforts, in particular, the
332    SGMP.  The restrictions on the use of ASN.1 that are part of the SMI
333    contribute to the simplicity espoused and validated by experience
334    with the SGMP.
335
336
337
338 Case, Fedor, Schoffstall, & Davin                               [Page 6]
339 \f
340 RFC 1157                          SNMP                          May 1990
341
342
343    Also for the sake of simplicity, the SNMP uses only a subset of the
344    basic encoding rules of ASN.1 [10].  Namely, all encodings use the
345    definite-length form.  Further, whenever permissible, non-constructor
346    encodings are used rather than constructor encodings.  This
347    restriction applies to all aspects of ASN.1 encoding, both for the
348    top-level protocol data units and the data objects they contain.
349
350 3.2.3.  Operations Supported on Management Information
351
352    The SNMP models all management agent functions as alterations or
353    inspections of variables.  Thus, a protocol entity on a logically
354    remote host (possibly the network element itself) interacts with the
355    management agent resident on the network element in order to retrieve
356    (get) or alter (set) variables.  This strategy has at least two
357    positive consequences:
358
359       (1)  It has the effect of limiting the number of essential
360            management functions realized by the management agent to
361            two:  one operation to assign a value to a specified
362            configuration or other parameter and another to retrieve
363            such a value.
364
365       (2)  A second effect of this decision is to avoid introducing
366            into the protocol definition support for imperative
367            management commands:  the number of such commands is in
368            practice ever-increasing, and the semantics of such
369            commands are in general arbitrarily complex.
370
371    The strategy implicit in the SNMP is that the monitoring of network
372    state at any significant level of detail is accomplished primarily by
373    polling for appropriate information on the part of the monitoring
374    center(s).  A limited number of unsolicited messages (traps) guide
375    the timing and focus of the polling.  Limiting the number of
376    unsolicited messages is consistent with the goal of simplicity and
377    minimizing the amount of traffic generated by the network management
378    function.
379
380    The exclusion of imperative commands from the set of explicitly
381    supported management functions is unlikely to preclude any desirable
382    management agent operation.  Currently, most commands are requests
383    either to set the value of some parameter or to retrieve such a
384    value, and the function of the few imperative commands currently
385    supported is easily accommodated in an asynchronous mode by this
386    management model.  In this scheme, an imperative command might be
387    realized as the setting of a parameter value that subsequently
388    triggers the desired action.  For example, rather than implementing a
389    "reboot command," this action might be invoked by simply setting a
390    parameter indicating the number of seconds until system reboot.
391
392
393
394 Case, Fedor, Schoffstall, & Davin                               [Page 7]
395 \f
396 RFC 1157                          SNMP                          May 1990
397
398
399 3.2.4.  Form and Meaning of Protocol Exchanges
400
401    The communication of management information among management entities
402    is realized in the SNMP through the exchange of protocol messages.
403    The form and meaning of those messages is defined below in Section 4.
404
405    Consistent with the goal of minimizing complexity of the management
406    agent, the exchange of SNMP messages requires only an unreliable
407    datagram service, and every message is entirely and independently
408    represented by a single transport datagram.  While this document
409    specifies the exchange of messages via the UDP protocol [11], the
410    mechanisms of the SNMP are generally suitable for use with a wide
411    variety of transport services.
412
413 3.2.5.  Definition of Administrative Relationships
414
415    The SNMP architecture admits a variety of administrative
416    relationships among entities that participate in the protocol.  The
417    entities residing at management stations and network elements which
418    communicate with one another using the SNMP are termed SNMP
419    application entities.  The peer processes which implement the SNMP,
420    and thus support the SNMP application entities, are termed protocol
421    entities.
422
423    A pairing of an SNMP agent with some arbitrary set of SNMP
424    application entities is called an SNMP community.  Each SNMP
425    community is named by a string of octets, that is called the
426    community name for said community.
427
428    An SNMP message originated by an SNMP application entity that in fact
429    belongs to the SNMP community named by the community component of
430    said message is called an authentic SNMP message.  The set of rules
431    by which an SNMP message is identified as an authentic SNMP message
432    for a particular SNMP community is called an authentication scheme.
433    An implementation of a function that identifies authentic SNMP
434    messages according to one or more authentication schemes is called an
435    authentication service.
436
437    Clearly, effective management of administrative relationships among
438    SNMP application entities requires authentication services that (by
439    the use of encryption or other techniques) are able to identify
440    authentic SNMP messages with a high degree of certainty.  Some SNMP
441    implementations may wish to support only a trivial authentication
442    service that identifies all SNMP messages as authentic SNMP messages.
443
444    For any network element, a subset of objects in the MIB that pertain
445    to that element is called a SNMP MIB view.  Note that the names of
446    the object types represented in a SNMP MIB view need not belong to a
447
448
449
450 Case, Fedor, Schoffstall, & Davin                               [Page 8]
451 \f
452 RFC 1157                          SNMP                          May 1990
453
454
455    single sub-tree of the object type name space.
456
457    An element of the set { READ-ONLY, READ-WRITE } is called an SNMP
458    access mode.
459
460    A pairing of a SNMP access mode with a SNMP MIB view is called an
461    SNMP community profile.  A SNMP community profile represents
462    specified access privileges to variables in a specified MIB view. For
463    every variable in the MIB view in a given SNMP community profile,
464    access to that variable is represented by the profile according to
465    the following conventions:
466
467       (1)  if said variable is defined in the MIB with "Access:" of
468            "none," it is unavailable as an operand for any operator;
469
470       (2)  if said variable is defined in the MIB with "Access:" of
471            "read-write" or "write-only" and the access mode of the
472            given profile is READ-WRITE, that variable is available
473            as an operand for the get, set, and trap operations;
474
475       (3)  otherwise, the variable is available as an operand for
476            the get and trap operations.
477
478       (4)  In those cases where a "write-only" variable is an
479            operand used for the get or trap operations, the value
480            given for the variable is implementation-specific.
481
482    A pairing of a SNMP community with a SNMP community profile is called
483    a SNMP access policy. An access policy represents a specified
484    community profile afforded by the SNMP agent of a specified SNMP
485    community to other members of that community.  All administrative
486    relationships among SNMP application entities are architecturally
487    defined in terms of SNMP access policies.
488
489    For every SNMP access policy, if the network element on which the
490    SNMP agent for the specified SNMP community resides is not that to
491    which the MIB view for the specified profile pertains, then that
492    policy is called a SNMP proxy access policy. The SNMP agent
493    associated with a proxy access policy is called a SNMP proxy agent.
494    While careless definition of proxy access policies can result in
495    management loops, prudent definition of proxy policies is useful in
496    at least two ways:
497
498       (1)  It permits the monitoring and control of network elements
499            which are otherwise not addressable using the management
500            protocol and the transport protocol.  That is, a proxy
501            agent may provide a protocol conversion function allowing
502            a management station to apply a consistent management
503
504
505
506 Case, Fedor, Schoffstall, & Davin                               [Page 9]
507 \f
508 RFC 1157                          SNMP                          May 1990
509
510
511            framework to all network elements, including devices such
512            as modems, multiplexors, and other devices which support
513            different management frameworks.
514
515       (2)  It potentially shields network elements from elaborate
516            access control policies.  For example, a proxy agent may
517            implement sophisticated access control whereby diverse
518            subsets of variables within the MIB are made accessible
519            to different management stations without increasing the
520            complexity of the network element.
521
522    By way of example, Figure 1 illustrates the relationship between
523    management stations, proxy agents, and management agents.  In this
524    example, the proxy agent is envisioned to be a normal Internet
525    Network Operations Center (INOC) of some administrative domain which
526    has a standard managerial relationship with a set of management
527    agents.
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562 Case, Fedor, Schoffstall, & Davin                              [Page 10]
563 \f
564 RFC 1157                          SNMP                          May 1990
565
566
567    +------------------+       +----------------+      +----------------+
568    |  Region #1 INOC  |       |Region #2 INOC  |      |PC in Region #3 |
569    |                  |       |                |      |                |
570    |Domain=Region #1  |       |Domain=Region #2|      |Domain=Region #3|
571    |CPU=super-mini-1  |       |CPU=super-mini-1|      |CPU=Clone-1     |
572    |PCommunity=pub    |       |PCommunity=pub  |      |PCommunity=slate|
573    |                  |       |                |      |                |
574    +------------------+       +----------------+      +----------------+
575           /|\                      /|\                     /|\
576            |                        |                       |
577            |                        |                       |
578            |                       \|/                      |
579            |               +-----------------+              |
580            +-------------->| Region #3 INOC  |<-------------+
581                            |                 |
582                            |Domain=Region #3 |
583                            |CPU=super-mini-2 |
584                            |PCommunity=pub,  |
585                            |         slate   |
586                            |DCommunity=secret|
587            +-------------->|                 |<-------------+
588            |               +-----------------+              |
589            |                       /|\                      |
590            |                        |                       |
591            |                        |                       |
592           \|/                      \|/                     \|/
593    +-----------------+     +-----------------+       +-----------------+
594    |Domain=Region#3  |     |Domain=Region#3  |       |Domain=Region#3  |
595    |CPU=router-1     |     |CPU=mainframe-1  |       |CPU=modem-1      |
596    |DCommunity=secret|     |DCommunity=secret|       |DCommunity=secret|
597    +-----------------+     +-----------------+       +-----------------+
598
599
600    Domain:  the administrative domain of the element
601    PCommunity:  the name of a community utilizing a proxy agent
602    DCommunity:  the name of a direct community
603
604
605                                  Figure 1
606                  Example Network Management Configuration
607
608
609
610
611
612
613
614
615
616
617
618 Case, Fedor, Schoffstall, & Davin                              [Page 11]
619 \f
620 RFC 1157                          SNMP                          May 1990
621
622
623 3.2.6.  Form and Meaning of References to Managed Objects
624
625    The SMI requires that the definition of a conformant management
626    protocol address:
627
628       (1)  the resolution of ambiguous MIB references,
629
630       (2)  the resolution of MIB references in the presence multiple
631            MIB versions, and
632
633       (3)  the identification of particular instances of object
634            types defined in the MIB.
635
636 3.2.6.1.  Resolution of Ambiguous MIB References
637
638    Because the scope of any SNMP operation is conceptually confined to
639    objects relevant to a single network element, and because all SNMP
640    references to MIB objects are (implicitly or explicitly) by unique
641    variable names, there is no possibility that any SNMP reference to
642    any object type defined in the MIB could resolve to multiple
643    instances of that type.
644
645 3.2.6.2.  Resolution of References across MIB Versions
646
647    The object instance referred to by any SNMP operation is exactly that
648    specified as part of the operation request or (in the case of a get-
649    next operation) its immediate successor in the MIB as a whole.  In
650    particular, a reference to an object as part of some version of the
651    Internet-standard MIB does not resolve to any object that is not part
652    of said version of the Internet-standard MIB, except in the case that
653    the requested operation is get-next and the specified object name is
654    lexicographically last among the names of all objects presented as
655    part of said version of the Internet-Standard MIB.
656
657 3.2.6.3.  Identification of Object Instances
658
659    The names for all object types in the MIB are defined explicitly
660    either in the Internet-standard MIB or in other documents which
661    conform to the naming conventions of the SMI.  The SMI requires that
662    conformant management protocols define mechanisms for identifying
663    individual instances of those object types for a particular network
664    element.
665
666    Each instance of any object type defined in the MIB is identified in
667    SNMP operations by a unique name called its "variable name." In
668    general, the name of an SNMP variable is an OBJECT IDENTIFIER of the
669    form x.y, where x is the name of a non-aggregate object type defined
670    in the MIB and y is an OBJECT IDENTIFIER fragment that, in a way
671
672
673
674 Case, Fedor, Schoffstall, & Davin                              [Page 12]
675 \f
676 RFC 1157                          SNMP                          May 1990
677
678
679    specific to the named object type, identifies the desired instance.
680
681    This naming strategy admits the fullest exploitation of the semantics
682    of the GetNextRequest-PDU (see Section 4), because it assigns names
683    for related variables so as to be contiguous in the lexicographical
684    ordering of all variable names known in the MIB.
685
686    The type-specific naming of object instances is defined below for a
687    number of classes of object types.  Instances of an object type to
688    which none of the following naming conventions are applicable are
689    named by OBJECT IDENTIFIERs of the form x.0, where x is the name of
690    said object type in the MIB definition.
691
692    For example, suppose one wanted to identify an instance of the
693    variable sysDescr The object class for sysDescr is:
694
695              iso org dod internet mgmt mib system sysDescr
696               1   3   6     1      2    1    1       1
697
698    Hence, the object type, x, would be 1.3.6.1.2.1.1.1 to which is
699    appended an instance sub-identifier of 0.  That is, 1.3.6.1.2.1.1.1.0
700    identifies the one and only instance of sysDescr.
701
702 3.2.6.3.1.  ifTable Object Type Names
703
704    The name of a subnet interface, s, is the OBJECT IDENTIFIER value of
705    the form i, where i has the value of that instance of the ifIndex
706    object type associated with s.
707
708    For each object type, t, for which the defined name, n, has a prefix
709    of ifEntry, an instance, i, of t is named by an OBJECT IDENTIFIER of
710    the form n.s, where s is the name of the subnet interface about which
711    i represents information.
712
713    For example, suppose one wanted to identify the instance of the
714    variable ifType associated with interface 2.  Accordingly, ifType.2
715    would identify the desired instance.
716
717 3.2.6.3.2.  atTable Object Type Names
718
719    The name of an AT-cached network address, x, is an OBJECT IDENTIFIER
720    of the form 1.a.b.c.d, where a.b.c.d is the value (in the familiar
721    "dot" notation) of the atNetAddress object type associated with x.
722
723    The name of an address translation equivalence e is an OBJECT
724    IDENTIFIER value of the form s.w, such that s is the value of that
725    instance of the atIndex object type associated with e and such that w
726    is the name of the AT-cached network address associated with e.
727
728
729
730 Case, Fedor, Schoffstall, & Davin                              [Page 13]
731 \f
732 RFC 1157                          SNMP                          May 1990
733
734
735    For each object type, t, for which the defined name, n, has a prefix
736    of atEntry, an instance, i, of t is named by an OBJECT IDENTIFIER of
737    the form n.y, where y is the name of the address translation
738    equivalence about which i represents information.
739
740    For example, suppose one wanted to find the physical address of an
741    entry in the address translation table (ARP cache) associated with an
742    IP address of 89.1.1.42 and interface 3.  Accordingly,
743    atPhysAddress.3.1.89.1.1.42 would identify the desired instance.
744
745 3.2.6.3.3.  ipAddrTable Object Type Names
746
747    The name of an IP-addressable network element, x, is the OBJECT
748    IDENTIFIER of the form a.b.c.d such that a.b.c.d is the value (in the
749    familiar "dot" notation) of that instance of the ipAdEntAddr object
750    type associated with x.
751
752    For each object type, t, for which the defined name, n, has a prefix
753    of ipAddrEntry, an instance, i, of t is named by an OBJECT IDENTIFIER
754    of the form n.y, where y is the name of the IP-addressable network
755    element about which i represents information.
756
757    For example, suppose one wanted to find the network mask of an entry
758    in the IP interface table associated with an IP address of 89.1.1.42.
759    Accordingly, ipAdEntNetMask.89.1.1.42 would identify the desired
760    instance.
761
762 3.2.6.3.4.  ipRoutingTable Object Type Names
763
764    The name of an IP route, x, is the OBJECT IDENTIFIER of the form
765    a.b.c.d such that a.b.c.d is the value (in the familiar "dot"
766    notation) of that instance of the ipRouteDest object type associated
767    with x.
768
769    For each object type, t, for which the defined name, n, has a prefix
770    of ipRoutingEntry, an instance, i, of t is named by an OBJECT
771    IDENTIFIER of the form n.y, where y is the name of the IP route about
772    which i represents information.
773
774    For example, suppose one wanted to find the next hop of an entry in
775    the IP routing table associated  with the destination of 89.1.1.42.
776    Accordingly, ipRouteNextHop.89.1.1.42 would identify the desired
777    instance.
778
779 3.2.6.3.5.  tcpConnTable Object Type Names
780
781    The name of a TCP connection, x, is the OBJECT IDENTIFIER of the form
782    a.b.c.d.e.f.g.h.i.j such that a.b.c.d is the value (in the familiar
783
784
785
786 Case, Fedor, Schoffstall, & Davin                              [Page 14]
787 \f
788 RFC 1157                          SNMP                          May 1990
789
790
791    "dot" notation) of that instance of the tcpConnLocalAddress object
792    type associated with x and such that f.g.h.i is the value (in the
793    familiar "dot" notation) of that instance of the tcpConnRemoteAddress
794    object type associated with x and such that e is the value of that
795    instance of the tcpConnLocalPort object type associated with x and
796    such that j is the value of that instance of the tcpConnRemotePort
797    object type associated with x.
798
799    For each object type, t, for which the defined name, n, has a prefix
800    of  tcpConnEntry, an instance, i, of t is named by an OBJECT
801    IDENTIFIER of the form n.y, where y is the name of the TCP connection
802    about which i represents information.
803
804    For example, suppose one wanted to find the state of a TCP connection
805    between the local address of 89.1.1.42 on TCP port 21 and the remote
806    address of 10.0.0.51 on TCP port 2059.  Accordingly,
807    tcpConnState.89.1.1.42.21.10.0.0.51.2059 would identify the desired
808    instance.
809
810 3.2.6.3.6.  egpNeighTable Object Type Names
811
812    The name of an EGP neighbor, x, is the OBJECT IDENTIFIER of the form
813    a.b.c.d such that a.b.c.d is the value (in the familiar "dot"
814    notation) of that instance of the egpNeighAddr object type associated
815    with x.
816
817    For each object type, t, for which the defined name, n, has a prefix
818    of egpNeighEntry, an instance, i, of t is named by an OBJECT
819    IDENTIFIER of the form n.y, where y is the name of the EGP neighbor
820    about which i represents information.
821
822    For example, suppose one wanted to find the neighbor state for the IP
823    address of 89.1.1.42.  Accordingly, egpNeighState.89.1.1.42 would
824    identify the desired instance.
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842 Case, Fedor, Schoffstall, & Davin                              [Page 15]
843 \f
844 RFC 1157                          SNMP                          May 1990
845
846
847 4.  Protocol Specification
848
849    The network management protocol is an application protocol by which
850    the variables of an agent's MIB may be inspected or altered.
851
852    Communication among protocol entities is accomplished by the exchange
853    of messages, each of which is entirely and independently represented
854    within a single UDP datagram using the basic encoding rules of ASN.1
855    (as discussed in Section 3.2.2).  A message consists of a version
856    identifier, an SNMP community name, and a protocol data unit (PDU).
857    A protocol entity receives messages at UDP port 161 on the host with
858    which it is associated for all messages except for those which report
859    traps (i.e., all messages except those which contain the Trap-PDU).
860    Messages which report traps should be received on UDP port 162 for
861    further processing.  An implementation of this protocol need not
862    accept messages whose length exceeds 484 octets.  However, it is
863    recommended that implementations support larger datagrams whenever
864    feasible.
865
866    It is mandatory that all implementations of the SNMP support the five
867    PDUs:  GetRequest-PDU, GetNextRequest-PDU, GetResponse-PDU,
868    SetRequest-PDU, and Trap-PDU.
869
870     RFC1157-SNMP DEFINITIONS ::= BEGIN
871
872      IMPORTS
873           ObjectName, ObjectSyntax, NetworkAddress, IpAddress, TimeTicks
874                   FROM RFC1155-SMI;
875
876
877      -- top-level message
878
879              Message ::=
880                      SEQUENCE {
881                           version        -- version-1 for this RFC
882                              INTEGER {
883                                  version-1(0)
884                              },
885
886                          community      -- community name
887                              OCTET STRING,
888
889                          data           -- e.g., PDUs if trivial
890                              ANY        -- authentication is being used
891                      }
892
893
894
895
896
897
898 Case, Fedor, Schoffstall, & Davin                              [Page 16]
899 \f
900 RFC 1157                          SNMP                          May 1990
901
902
903      -- protocol data units
904
905              PDUs ::=
906                      CHOICE {
907                          get-request
908                              GetRequest-PDU,
909
910                          get-next-request
911                              GetNextRequest-PDU,
912
913                          get-response
914                              GetResponse-PDU,
915
916                          set-request
917                              SetRequest-PDU,
918
919                          trap
920                              Trap-PDU
921                           }
922
923      -- the individual PDUs and commonly used
924      -- data types will be defined later
925
926      END
927
928
929 4.1.  Elements of Procedure
930
931    This section describes the actions of a protocol entity implementing
932    the SNMP. Note, however, that it is not intended to constrain the
933    internal architecture of any conformant implementation.
934
935    In the text that follows, the term transport address is used.  In the
936    case of the UDP, a transport address consists of an IP address along
937    with a UDP port.  Other transport services may be used to support the
938    SNMP.  In these cases, the definition of a transport address should
939    be made accordingly.
940
941    The top-level actions of a protocol entity which generates a message
942    are as follows:
943
944         (1)  It first constructs the appropriate PDU, e.g., the
945              GetRequest-PDU, as an ASN.1 object.
946
947         (2)  It then passes this ASN.1 object along with a community
948              name its source transport address and the destination
949              transport address, to the service which implements the
950              desired authentication scheme.  This authentication
951
952
953
954 Case, Fedor, Schoffstall, & Davin                              [Page 17]
955 \f
956 RFC 1157                          SNMP                          May 1990
957
958
959              service returns another ASN.1 object.
960
961         (3)  The protocol entity then constructs an ASN.1 Message
962              object, using the community name and the resulting ASN.1
963              object.
964
965         (4)  This new ASN.1 object is then serialized, using the basic
966              encoding rules of ASN.1, and then sent using a transport
967              service to the peer protocol entity.
968
969    Similarly, the top-level actions of a protocol entity which receives
970    a message are as follows:
971
972         (1)  It performs a rudimentary parse of the incoming datagram
973              to build an ASN.1 object corresponding to an ASN.1
974              Message object. If the parse fails, it discards the
975              datagram and performs no further actions.
976
977         (2)  It then verifies the version number of the SNMP message.
978              If there is a mismatch, it discards the datagram and
979              performs no further actions.
980
981         (3)  The protocol entity then passes the community name and
982              user data found in the ASN.1 Message object, along with
983              the datagram's source and destination transport addresses
984              to the service which implements the desired
985              authentication scheme.  This entity returns another ASN.1
986              object, or signals an authentication failure.  In the
987              latter case, the protocol entity notes this failure,
988              (possibly) generates a trap, and discards the datagram
989              and performs no further actions.
990
991         (4)  The protocol entity then performs a rudimentary parse on
992              the ASN.1 object returned from the authentication service
993              to build an ASN.1 object corresponding to an ASN.1 PDUs
994              object.  If the parse fails, it discards the datagram and
995              performs no further actions.  Otherwise, using the named
996              SNMP community, the appropriate profile is selected, and
997              the PDU is processed accordingly.  If, as a result of
998              this processing, a message is returned then the source
999              transport address that the response message is sent from
1000              shall be identical to the destination transport address
1001              that the original request message was sent to.
1002
1003
1004
1005
1006
1007
1008
1009
1010 Case, Fedor, Schoffstall, & Davin                              [Page 18]
1011 \f
1012 RFC 1157                          SNMP                          May 1990
1013
1014
1015 4.1.1.  Common Constructs
1016
1017    Before introducing the six PDU types of the protocol, it is
1018    appropriate to consider some of the ASN.1 constructs used frequently:
1019
1020                   -- request/response information
1021
1022                   RequestID ::=
1023                           INTEGER
1024
1025                   ErrorStatus ::=
1026                           INTEGER {
1027                               noError(0),
1028                               tooBig(1),
1029                               noSuchName(2),
1030                               badValue(3),
1031                               readOnly(4)
1032                               genErr(5)
1033                           }
1034
1035                   ErrorIndex ::=
1036                           INTEGER
1037
1038
1039                   -- variable bindings
1040
1041                   VarBind ::=
1042                           SEQUENCE {
1043                               name
1044                                   ObjectName,
1045
1046                               value
1047                                   ObjectSyntax
1048                           }
1049
1050                   VarBindList ::=
1051                           SEQUENCE OF
1052                               VarBind
1053
1054
1055    RequestIDs are used to distinguish among outstanding requests.  By
1056    use of the RequestID, an SNMP application entity can correlate
1057    incoming responses with outstanding requests.  In cases where an
1058    unreliable datagram service is being used, the RequestID also
1059    provides a simple means of identifying messages duplicated by the
1060    network.
1061
1062    A non-zero instance of ErrorStatus is used to indicate that an
1063
1064
1065
1066 Case, Fedor, Schoffstall, & Davin                              [Page 19]
1067 \f
1068 RFC 1157                          SNMP                          May 1990
1069
1070
1071    exception occurred while processing a request.  In these cases,
1072    ErrorIndex may provide additional information by indicating which
1073    variable in a list caused the exception.
1074
1075    The term variable refers to an instance of a managed object.  A
1076    variable binding, or VarBind, refers to the pairing of the name of a
1077    variable to the variable's value.  A VarBindList is a simple list of
1078    variable names and corresponding values.  Some PDUs are concerned
1079    only with the name of a variable and not its value (e.g., the
1080    GetRequest-PDU).  In this case, the value portion of the binding is
1081    ignored by the protocol entity.  However, the value portion must
1082    still have valid ASN.1 syntax and encoding.  It is recommended that
1083    the ASN.1 value NULL be used for the value portion of such bindings.
1084
1085 4.1.2.  The GetRequest-PDU
1086
1087              The form of the GetRequest-PDU is:
1088                   GetRequest-PDU ::=
1089                       [0]
1090                           IMPLICIT SEQUENCE {
1091                               request-id
1092                                   RequestID,
1093
1094                               error-status        -- always 0
1095                                   ErrorStatus,
1096
1097                               error-index         -- always 0
1098                                   ErrorIndex,
1099
1100                               variable-bindings
1101                                   VarBindList
1102                           }
1103
1104
1105    The GetRequest-PDU is generated by a protocol entity only at the
1106    request of its SNMP application entity.
1107
1108    Upon receipt of the GetRequest-PDU, the receiving protocol entity
1109    responds according to any applicable rule in the list below:
1110
1111         (1)  If, for any object named in the variable-bindings field,
1112              the object's name does not exactly match the name of some
1113              object available for get operations in the relevant MIB
1114              view, then the receiving entity sends to the originator
1115              of the received message the GetResponse-PDU of identical
1116              form, except that the value of the error-status field is
1117              noSuchName, and the value of the error-index field is the
1118              index of said object name component in the received
1119
1120
1121
1122 Case, Fedor, Schoffstall, & Davin                              [Page 20]
1123 \f
1124 RFC 1157                          SNMP                          May 1990
1125
1126
1127              message.
1128
1129         (2)  If, for any object named in the variable-bindings field,
1130              the object is an aggregate type (as defined in the SMI),
1131              then the receiving entity sends to the originator of the
1132              received message the GetResponse-PDU of identical form,
1133              except that the value of the error-status field is
1134              noSuchName, and the value of the error-index field is the
1135              index of said object name component in the received
1136              message.
1137
1138         (3)  If the size of the GetResponse-PDU generated as described
1139              below would exceed a local limitation, then the receiving
1140              entity sends to the originator of the received message
1141              the GetResponse-PDU of identical form, except that the
1142              value of the error-status field is tooBig, and the value
1143              of the error-index field is zero.
1144
1145         (4)  If, for any object named in the variable-bindings field,
1146              the value of the object cannot be retrieved for reasons
1147              not covered by any of the foregoing rules, then the
1148              receiving entity sends to the originator of the received
1149              message the GetResponse-PDU of identical form, except
1150              that the value of the error-status field is genErr and
1151              the value of the error-index field is the index of said
1152              object name component in the received message.
1153
1154    If none of the foregoing rules apply, then the receiving protocol
1155    entity sends to the originator of the received message the
1156    GetResponse-PDU such that, for each object named in the variable-
1157    bindings field of the received message, the corresponding component
1158    of the GetResponse-PDU represents the name and value of that
1159    variable.  The value of the error- status field of the GetResponse-
1160    PDU is noError and the value of the error-index field is zero.  The
1161    value of the request-id field of the GetResponse-PDU is that of the
1162    received message.
1163
1164 4.1.3.  The GetNextRequest-PDU
1165
1166    The form of the GetNextRequest-PDU is identical to that of the
1167    GetRequest-PDU except for the indication of the PDU type.  In the
1168    ASN.1 language:
1169
1170                   GetNextRequest-PDU ::=
1171                       [1]
1172                           IMPLICIT SEQUENCE {
1173                               request-id
1174                                   RequestID,
1175
1176
1177
1178 Case, Fedor, Schoffstall, & Davin                              [Page 21]
1179 \f
1180 RFC 1157                          SNMP                          May 1990
1181
1182
1183                               error-status        -- always 0
1184                                   ErrorStatus,
1185
1186                               error-index         -- always 0
1187                                   ErrorIndex,
1188
1189                               variable-bindings
1190                                   VarBindList
1191                           }
1192
1193
1194    The GetNextRequest-PDU is generated by a protocol entity only at the
1195    request of its SNMP application entity.
1196
1197    Upon receipt of the GetNextRequest-PDU, the receiving protocol entity
1198    responds according to any applicable rule in the list below:
1199
1200         (1)  If, for any object name in the variable-bindings field,
1201              that name does not lexicographically precede the name of
1202              some object available for get operations in the relevant
1203              MIB view, then the receiving entity sends to the
1204              originator of the received message the GetResponse-PDU of
1205              identical form, except that the value of the error-status
1206              field is noSuchName, and the value of the error-index
1207              field is the index of said object name component in the
1208              received message.
1209
1210         (2)  If the size of the GetResponse-PDU generated as described
1211              below would exceed a local limitation, then the receiving
1212              entity sends to the originator of the received message
1213              the GetResponse-PDU of identical form, except that the
1214              value of the error-status field is tooBig, and the value
1215              of the error-index field is zero.
1216
1217         (3)  If, for any object named in the variable-bindings field,
1218              the value of the lexicographical successor to the named
1219              object cannot be retrieved for reasons not covered by any
1220              of the foregoing rules, then the receiving entity sends
1221              to the originator of the received message the
1222              GetResponse-PDU of identical form, except that the value
1223              of the error-status field is genErr and the value of the
1224              error-index field is the index of said object name
1225              component in the received message.
1226
1227    If none of the foregoing rules apply, then the receiving protocol
1228    entity sends to the originator of the received message the
1229    GetResponse-PDU such that, for each name in the variable-bindings
1230    field of the received message, the corresponding component of the
1231
1232
1233
1234 Case, Fedor, Schoffstall, & Davin                              [Page 22]
1235 \f
1236 RFC 1157                          SNMP                          May 1990
1237
1238
1239    GetResponse-PDU represents the name and value of that object whose
1240    name is, in the lexicographical ordering of the names of all objects
1241    available for get operations in the relevant MIB view, together with
1242    the value of the name field of the given component, the immediate
1243    successor to that value.  The value of the error-status field of the
1244    GetResponse-PDU is noError and the value of the errorindex field is
1245    zero.  The value of the request-id field of the GetResponse-PDU is
1246    that of the received message.
1247
1248 4.1.3.1.  Example of Table Traversal
1249
1250    One important use of the GetNextRequest-PDU is the traversal of
1251    conceptual tables of information within the MIB. The semantics of
1252    this type of SNMP message, together with the protocol-specific
1253    mechanisms for identifying individual instances of object types in
1254    the MIB, affords  access to related objects in the MIB as if they
1255    enjoyed a tabular organization.
1256
1257    By the SNMP exchange sketched below, an SNMP application entity might
1258    extract the destination address and next hop gateway for each entry
1259    in the routing table of a particular network element. Suppose that
1260    this routing table has three entries:
1261
1262          Destination                     NextHop         Metric
1263
1264          10.0.0.99                       89.1.1.42       5
1265          9.1.2.3                         99.0.0.3        3
1266          10.0.0.51                       89.1.1.42       5
1267
1268
1269    The management station sends to the SNMP agent a GetNextRequest-PDU
1270    containing the indicated OBJECT IDENTIFIER values as the requested
1271    variable names:
1272
1273    GetNextRequest ( ipRouteDest, ipRouteNextHop, ipRouteMetric1 )
1274
1275
1276    The SNMP agent responds with a GetResponse-PDU:
1277
1278                  GetResponse (( ipRouteDest.9.1.2.3 =  "9.1.2.3" ),
1279                          ( ipRouteNextHop.9.1.2.3 = "99.0.0.3" ),
1280                          ( ipRouteMetric1.9.1.2.3 = 3 ))
1281
1282
1283    The management station continues with:
1284
1285                  GetNextRequest ( ipRouteDest.9.1.2.3,
1286                          ipRouteNextHop.9.1.2.3,
1287
1288
1289
1290 Case, Fedor, Schoffstall, & Davin                              [Page 23]
1291 \f
1292 RFC 1157                          SNMP                          May 1990
1293
1294
1295                          ipRouteMetric1.9.1.2.3 )
1296
1297
1298    The SNMP agent responds:
1299
1300                  GetResponse (( ipRouteDest.10.0.0.51 = "10.0.0.51" ),
1301                          ( ipRouteNextHop.10.0.0.51 = "89.1.1.42" ),
1302                          ( ipRouteMetric1.10.0.0.51 = 5 ))
1303
1304
1305    The management station continues with:
1306
1307                  GetNextRequest ( ipRouteDest.10.0.0.51,
1308                          ipRouteNextHop.10.0.0.51,
1309                          ipRouteMetric1.10.0.0.51 )
1310
1311
1312    The SNMP agent responds:
1313
1314                  GetResponse (( ipRouteDest.10.0.0.99 = "10.0.0.99" ),
1315                          ( ipRouteNextHop.10.0.0.99 = "89.1.1.42" ),
1316                          ( ipRouteMetric1.10.0.0.99 = 5 ))
1317
1318
1319    The management station continues with:
1320
1321                  GetNextRequest ( ipRouteDest.10.0.0.99,
1322                          ipRouteNextHop.10.0.0.99,
1323                          ipRouteMetric1.10.0.0.99 )
1324
1325
1326    As there are no further entries in the table, the SNMP agent returns
1327    those objects that are next in the lexicographical ordering of the
1328    known object names.  This response signals the end of the routing
1329    table to the management station.
1330
1331 4.1.4.  The GetResponse-PDU
1332
1333    The form of the GetResponse-PDU is identical to that of the
1334    GetRequest-PDU except for the indication of the PDU type.  In the
1335    ASN.1 language:
1336
1337                   GetResponse-PDU ::=
1338                       [2]
1339                           IMPLICIT SEQUENCE {
1340                               request-id
1341                                   RequestID,
1342
1343
1344
1345
1346 Case, Fedor, Schoffstall, & Davin                              [Page 24]
1347 \f
1348 RFC 1157                          SNMP                          May 1990
1349
1350
1351                               error-status
1352                                   ErrorStatus,
1353
1354                               error-index
1355                                   ErrorIndex,
1356
1357                               variable-bindings
1358                                   VarBindList
1359                           }
1360
1361
1362    The GetResponse-PDU is generated by a protocol entity only upon
1363    receipt of the GetRequest-PDU, GetNextRequest-PDU, or SetRequest-PDU,
1364    as described elsewhere in this document.
1365
1366    Upon receipt of the GetResponse-PDU, the receiving protocol entity
1367    presents its contents to its SNMP application entity.
1368
1369 4.1.5.  The SetRequest-PDU
1370
1371    The form of the SetRequest-PDU is identical to that of the
1372    GetRequest-PDU except for the indication of the PDU type.  In the
1373    ASN.1 language:
1374
1375                   SetRequest-PDU ::=
1376                       [3]
1377                           IMPLICIT SEQUENCE {
1378                               request-id
1379                                   RequestID,
1380
1381                               error-status        -- always 0
1382                                   ErrorStatus,
1383
1384                               error-index         -- always 0
1385                                   ErrorIndex,
1386
1387                               variable-bindings
1388                                   VarBindList
1389                           }
1390
1391
1392    The SetRequest-PDU is generated by a protocol entity only at the
1393    request of its SNMP application entity.
1394
1395    Upon receipt of the SetRequest-PDU, the receiving entity responds
1396    according to any applicable rule in the list below:
1397
1398         (1)  If, for any object named in the variable-bindings field,
1399
1400
1401
1402 Case, Fedor, Schoffstall, & Davin                              [Page 25]
1403 \f
1404 RFC 1157                          SNMP                          May 1990
1405
1406
1407              the object is not available for set operations in the
1408              relevant MIB view, then the receiving entity sends to the
1409              originator of the received message the GetResponse-PDU of
1410              identical form, except that the value of the error-status
1411              field is noSuchName, and the value of the error-index
1412              field is the index of said object name component in the
1413              received message.
1414
1415         (2)  If, for any object named in the variable-bindings field,
1416              the contents of the value field does not, according to
1417              the ASN.1 language, manifest a type, length, and value
1418              that is consistent with that required for the variable,
1419              then the receiving entity sends to the originator of the
1420              received message the GetResponse-PDU of identical form,
1421              except that the value of the error-status field is
1422              badValue, and the value of the error-index field is the
1423              index of said object name in the received message.
1424
1425         (3)  If the size of the Get Response type message generated as
1426              described below would exceed a local limitation, then the
1427              receiving entity sends to the originator of the received
1428              message the GetResponse-PDU of identical form, except
1429              that the value of the error-status field is tooBig, and
1430              the value of the error-index field is zero.
1431
1432         (4)  If, for any object named in the variable-bindings field,
1433              the value of the named object cannot be altered for
1434              reasons not covered by any of the foregoing rules, then
1435              the receiving entity sends to the originator of the
1436              received message the GetResponse-PDU of identical form,
1437              except that the value of the error-status field is genErr
1438              and the value of the error-index field is the index of
1439              said object name component in the received message.
1440
1441    If none of the foregoing rules apply, then for each object named in
1442    the variable-bindings field of the received message, the
1443    corresponding value is assigned to the variable.  Each variable
1444    assignment specified by the SetRequest-PDU should be effected as if
1445    simultaneously set with respect to all other assignments specified in
1446    the same message.
1447
1448    The receiving entity then sends to the originator of the received
1449    message the GetResponse-PDU of identical form except that the value
1450    of the error-status field of the generated message is noError and the
1451    value of the error-index field is zero.
1452
1453
1454
1455
1456
1457
1458 Case, Fedor, Schoffstall, & Davin                              [Page 26]
1459 \f
1460 RFC 1157                          SNMP                          May 1990
1461
1462
1463 4.1.6.  The Trap-PDU
1464
1465    The form of the Trap-PDU is:
1466
1467      Trap-PDU ::=
1468          [4]
1469
1470               IMPLICIT SEQUENCE {
1471                  enterprise          -- type of object generating
1472                                      -- trap, see sysObjectID in [5]
1473                      OBJECT IDENTIFIER,
1474
1475                  agent-addr          -- address of object generating
1476                      NetworkAddress, -- trap
1477
1478                  generic-trap        -- generic trap type
1479                      INTEGER {
1480                          coldStart(0),
1481                          warmStart(1),
1482                          linkDown(2),
1483                          linkUp(3),
1484                          authenticationFailure(4),
1485                          egpNeighborLoss(5),
1486                          enterpriseSpecific(6)
1487                      },
1488
1489                  specific-trap     -- specific code, present even
1490                      INTEGER,      -- if generic-trap is not
1491                                    -- enterpriseSpecific
1492
1493                  time-stamp        -- time elapsed between the last
1494                    TimeTicks,      -- (re)initialization of the network
1495                                    -- entity and the generation of the
1496                                       trap
1497
1498                  variable-bindings   -- "interesting" information
1499                       VarBindList
1500              }
1501
1502
1503    The Trap-PDU is generated by a protocol entity only at the request of
1504    the SNMP application entity.  The means by which an SNMP application
1505    entity selects the destination addresses of the SNMP application
1506    entities is implementation-specific.
1507
1508    Upon receipt of the Trap-PDU, the receiving protocol entity presents
1509    its contents to its SNMP application entity.
1510
1511
1512
1513
1514 Case, Fedor, Schoffstall, & Davin                              [Page 27]
1515 \f
1516 RFC 1157                          SNMP                          May 1990
1517
1518
1519    The significance of the variable-bindings component of the Trap-PDU
1520    is implementation-specific.
1521
1522    Interpretations of the value of the generic-trap field are:
1523
1524 4.1.6.1.  The coldStart Trap
1525
1526    A coldStart(0) trap signifies that the sending protocol entity is
1527    reinitializing itself such that the agent's configuration or the
1528    protocol entity implementation may be altered.
1529
1530 4.1.6.2.  The warmStart Trap
1531
1532    A warmStart(1) trap signifies that the sending protocol entity is
1533    reinitializing itself such that neither the agent configuration nor
1534    the protocol entity implementation is altered.
1535
1536 4.1.6.3.  The linkDown Trap
1537
1538    A linkDown(2) trap signifies that the sending protocol entity
1539    recognizes a failure in one of the communication links represented in
1540    the agent's configuration.
1541
1542    The Trap-PDU of type linkDown contains as the first element of its
1543    variable-bindings, the name and value of the ifIndex instance for the
1544    affected interface.
1545
1546 4.1.6.4.  The linkUp Trap
1547
1548    A linkUp(3) trap signifies that the sending protocol entity
1549    recognizes that one of the communication links represented in the
1550    agent's configuration has come up.
1551
1552    The Trap-PDU of type linkUp contains as the first element of its
1553    variable-bindings, the name and value of the ifIndex instance for the
1554    affected interface.
1555
1556 4.1.6.5.  The authenticationFailure Trap
1557
1558    An authenticationFailure(4) trap signifies that the sending protocol
1559    entity is the addressee of a protocol message that is not properly
1560    authenticated.  While implementations of the SNMP must be capable of
1561    generating this trap, they must also be capable of suppressing the
1562    emission of such traps via an implementation-specific mechanism.
1563
1564 4.1.6.6.  The egpNeighborLoss Trap
1565
1566    An egpNeighborLoss(5) trap signifies that an EGP neighbor for whom
1567
1568
1569
1570 Case, Fedor, Schoffstall, & Davin                              [Page 28]
1571 \f
1572 RFC 1157                          SNMP                          May 1990
1573
1574
1575    the sending protocol entity was an EGP peer has been marked down and
1576    the peer relationship no longer obtains.
1577
1578    The Trap-PDU of type egpNeighborLoss contains as the first element of
1579    its variable-bindings, the name and value of the egpNeighAddr
1580    instance for the affected neighbor.
1581
1582 4.1.6.7.  The enterpriseSpecific Trap
1583
1584    A enterpriseSpecific(6) trap signifies that the sending protocol
1585    entity recognizes that some enterprise-specific event has occurred.
1586    The specific-trap field identifies the particular trap which
1587    occurred.
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626 Case, Fedor, Schoffstall, & Davin                              [Page 29]
1627 \f
1628 RFC 1157                          SNMP                          May 1990
1629
1630
1631 5.  Definitions
1632
1633      RFC1157-SNMP DEFINITIONS ::= BEGIN
1634
1635       IMPORTS
1636           ObjectName, ObjectSyntax, NetworkAddress, IpAddress, TimeTicks
1637               FROM RFC1155-SMI;
1638
1639
1640           -- top-level message
1641
1642           Message ::=
1643                   SEQUENCE {
1644                       version          -- version-1 for this RFC
1645                           INTEGER {
1646                               version-1(0)
1647                           },
1648
1649                       community        -- community name
1650                           OCTET STRING,
1651
1652                       data             -- e.g., PDUs if trivial
1653                           ANY          -- authentication is being used
1654                   }
1655
1656
1657           -- protocol data units
1658
1659           PDUs ::=
1660                   CHOICE {
1661                               get-request
1662                                   GetRequest-PDU,
1663
1664                               get-next-request
1665                                   GetNextRequest-PDU,
1666
1667                               get-response
1668                                   GetResponse-PDU,
1669
1670                               set-request
1671                                   SetRequest-PDU,
1672
1673                               trap
1674                                   Trap-PDU
1675                           }
1676
1677
1678
1679
1680
1681
1682 Case, Fedor, Schoffstall, & Davin                              [Page 30]
1683 \f
1684 RFC 1157                          SNMP                          May 1990
1685
1686
1687           -- PDUs
1688
1689           GetRequest-PDU ::=
1690               [0]
1691                   IMPLICIT PDU
1692
1693           GetNextRequest-PDU ::=
1694               [1]
1695                   IMPLICIT PDU
1696
1697           GetResponse-PDU ::=
1698               [2]
1699                   IMPLICIT PDU
1700
1701           SetRequest-PDU ::=
1702               [3]
1703                   IMPLICIT PDU
1704
1705           PDU ::=
1706                   SEQUENCE {
1707                      request-id
1708                           INTEGER,
1709
1710                       error-status      -- sometimes ignored
1711                           INTEGER {
1712                               noError(0),
1713                               tooBig(1),
1714                               noSuchName(2),
1715                               badValue(3),
1716                               readOnly(4),
1717                               genErr(5)
1718                           },
1719
1720                       error-index       -- sometimes ignored
1721                          INTEGER,
1722
1723                       variable-bindings -- values are sometimes ignored
1724                           VarBindList
1725                   }
1726
1727           Trap-PDU ::=
1728               [4]
1729                  IMPLICIT SEQUENCE {
1730                       enterprise        -- type of object generating
1731                                         -- trap, see sysObjectID in [5]
1732
1733
1734                           OBJECT IDENTIFIER,
1735
1736
1737
1738 Case, Fedor, Schoffstall, & Davin                              [Page 31]
1739 \f
1740 RFC 1157                          SNMP                          May 1990
1741
1742
1743                       agent-addr        -- address of object generating
1744                           NetworkAddress, -- trap
1745
1746                       generic-trap      -- generic trap type
1747                           INTEGER {
1748                               coldStart(0),
1749                               warmStart(1),
1750                               linkDown(2),
1751                               linkUp(3),
1752                               authenticationFailure(4),
1753                               egpNeighborLoss(5),
1754                               enterpriseSpecific(6)
1755                           },
1756
1757                       specific-trap  -- specific code, present even
1758                           INTEGER,   -- if generic-trap is not
1759                                      -- enterpriseSpecific
1760
1761                       time-stamp     -- time elapsed between the last
1762                           TimeTicks, -- (re)initialization of the
1763                                         network
1764                                      -- entity and the generation of the
1765                                         trap
1766
1767                        variable-bindings -- "interesting" information
1768                           VarBindList
1769                   }
1770
1771
1772           -- variable bindings
1773
1774           VarBind ::=
1775                   SEQUENCE {
1776                       name
1777                           ObjectName,
1778
1779                       value
1780                           ObjectSyntax
1781                   }
1782
1783          VarBindList ::=
1784                   SEQUENCE OF
1785                      VarBind
1786
1787          END
1788
1789
1790
1791
1792
1793
1794 Case, Fedor, Schoffstall, & Davin                              [Page 32]
1795 \f
1796 RFC 1157                          SNMP                          May 1990
1797
1798
1799 6.  Acknowledgements
1800
1801    This memo was influenced by the IETF SNMP Extensions working
1802    group:
1803
1804              Karl Auerbach, Epilogue Technology
1805              K. Ramesh Babu, Excelan
1806              Amatzia Ben-Artzi, 3Com/Bridge
1807              Lawrence Besaw, Hewlett-Packard
1808              Jeffrey D. Case, University of Tennessee at Knoxville
1809              Anthony Chung, Sytek
1810              James Davidson, The Wollongong Group
1811              James R. Davin, MIT Laboratory for Computer Science
1812              Mark S. Fedor, NYSERNet
1813              Phill Gross, The MITRE Corporation
1814              Satish Joshi, ACC
1815              Dan Lynch, Advanced Computing Environments
1816              Keith McCloghrie, The Wollongong Group
1817              Marshall T. Rose, The Wollongong Group (chair)
1818              Greg Satz, cisco
1819              Martin Lee Schoffstall, Rensselaer Polytechnic Institute
1820              Wengyik Yeong, NYSERNet
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850 Case, Fedor, Schoffstall, & Davin                              [Page 33]
1851 \f
1852 RFC 1157                          SNMP                          May 1990
1853
1854
1855 7.  References
1856
1857    [1] Cerf, V., "IAB Recommendations for the Development of
1858        Internet Network Management Standards", RFC 1052, IAB,
1859        April 1988.
1860
1861    [2] Rose, M., and K. McCloghrie, "Structure and Identification
1862        of Management Information for TCP/IP-based internets",
1863        RFC 1065, TWG, August 1988.
1864
1865    [3] McCloghrie, K., and M. Rose, "Management Information Base
1866        for Network Management of TCP/IP-based internets",
1867        RFC 1066, TWG, August 1988.
1868
1869    [4] Cerf, V., "Report of the Second Ad Hoc Network Management
1870        Review Group", RFC 1109, IAB, August 1989.
1871
1872    [5] Rose, M., and K. McCloghrie, "Structure and Identification
1873        of Management Information for TCP/IP-based Internets",
1874        RFC 1155, Performance Systems International and Hughes LAN
1875        Systems, May 1990.
1876
1877    [6] McCloghrie, K., and M. Rose, "Management Information Base
1878        for Network Management of TCP/IP-based Internets",
1879        RFC 1156, Hughes LAN Systems and Performance Systems
1880        International, May 1990.
1881
1882    [7] Case, J., M. Fedor, M. Schoffstall, and J. Davin,
1883        "A Simple Network Management Protocol", Internet
1884        Engineering Task Force working note, Network Information
1885        Center, SRI International, Menlo Park, California,
1886        March 1988.
1887
1888    [8] Davin, J., J. Case, M. Fedor, and M. Schoffstall,
1889        "A Simple Gateway Monitoring Protocol", RFC 1028,
1890        Proteon, University of Tennessee at Knoxville,
1891        Cornell University, and Rensselaer Polytechnic
1892        Institute, November 1987.
1893
1894    [9] Information processing systems - Open Systems
1895        Interconnection, "Specification of Abstract Syntax
1896        Notation One (ASN.1)", International Organization for
1897        Standardization, International Standard 8824,
1898        December 1987.
1899
1900   [10] Information processing systems - Open Systems
1901        Interconnection, "Specification of Basic Encoding Rules
1902        for Abstract Notation One (ASN.1)", International
1903
1904
1905
1906 Case, Fedor, Schoffstall, & Davin                              [Page 34]
1907 \f
1908 RFC 1157                          SNMP                          May 1990
1909
1910
1911        Organization for Standardization, International Standard
1912        8825, December 1987.
1913
1914   [11] Postel, J., "User Datagram Protocol", RFC 768,
1915        USC/Information Sciences Institute, November 1980.
1916
1917 Security Considerations
1918
1919    Security issues are not discussed in this memo.
1920
1921 Authors' Addresses
1922
1923    Jeffrey D. Case
1924    SNMP Research
1925    P.O. Box 8593
1926    Knoxville, TN 37996-4800
1927
1928    Phone:  (615) 573-1434
1929
1930    Email:  case@CS.UTK.EDU
1931
1932
1933    Mark Fedor
1934    Performance Systems International
1935    Rensselaer Technology Park
1936    125 Jordan Road
1937    Troy, NY 12180
1938
1939    Phone:  (518) 283-8860
1940
1941    Email:  fedor@patton.NYSER.NET
1942
1943
1944    Martin Lee Schoffstall
1945    Performance Systems International
1946    Rensselaer Technology Park
1947    165 Jordan Road
1948    Troy, NY 12180
1949
1950    Phone:  (518) 283-8860
1951
1952    Email:  schoff@NISC.NYSER.NET
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962 Case, Fedor, Schoffstall, & Davin                              [Page 35]
1963 \f
1964 RFC 1157                          SNMP                          May 1990
1965
1966
1967    James R. Davin
1968    MIT Laboratory for Computer Science, NE43-507
1969    545 Technology Square
1970    Cambridge, MA 02139
1971
1972    Phone:  (617) 253-6020
1973
1974    EMail:  jrd@ptt.lcs.mit.edu
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018 Case, Fedor, Schoffstall, & Davin                              [Page 36]
2019 \f