12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411 |
-
-
-
-
-
-
- Network Working Group J. Case
- Request for Comments: 3412 SNMP Research, Inc.
- STD: 62 D. Harrington
- Obsoletes: 2572 Enterasys Networks
- Category: Standards Track R. Presuhn
- BMC Software, Inc.
- B. Wijnen
- Lucent Technologies
- December 2002
-
-
- Message Processing and Dispatching for the
- Simple Network Management Protocol (SNMP)
-
- Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
- Copyright Notice
-
- Copyright (C) The Internet Society (2002). All Rights Reserved.
-
- Abstract
-
- This document describes the Message Processing and Dispatching for
- Simple Network Management Protocol (SNMP) messages within the SNMP
- architecture. It defines the procedures for dispatching potentially
- multiple versions of SNMP messages to the proper SNMP Message
- Processing Models, and for dispatching PDUs to SNMP applications.
- This document also describes one Message Processing Model - the
- SNMPv3 Message Processing Model. This document obsoletes RFC 2572.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 1]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- Table of Contents
-
- 1. Introduction ................................................ 3
- 2. Overview .................................................... 4
- 2.1. The Dispatcher ............................................ 5
- 2.2. Message Processing Subsystem .............................. 5
- 3. Elements of Message Processing and Dispatching .............. 6
- 3.1. messageProcessingModel .................................... 6
- 3.2. pduVersion ................................................ 6
- 3.3. pduType ................................................... 7
- 3.4. sendPduHandle ............................................. 7
- 4. Dispatcher Elements of Procedure ............................ 7
- 4.1. Sending an SNMP Message to the Network .................... 7
- 4.1.1. Sending a Request or Notification ....................... 8
- 4.1.2. Sending a Response to the Network ....................... 9
- 4.2. Receiving an SNMP Message from the Network ................ 11
- 4.2.1. Message Dispatching of received SNMP Messages ........... 11
- 4.2.2. PDU Dispatching for Incoming Messages ................... 12
- 4.2.2.1. Incoming Requests and Notifications ................... 13
- 4.2.2.2. Incoming Responses .................................... 14
- 4.3. Application Registration for Handling PDU types ........... 15
- 4.4. Application Unregistration for Handling PDU Types ......... 16
- 5. Definitions ................................................. 16
- 5.1. Definitions for SNMP Message Processing and Dispatching ... 16
- 6. The SNMPv3 Message Format ................................... 19
- 6.1. msgVersion ................................................ 20
- 6.2. msgID ..................................................... 20
- 6.3. msgMaxSize ................................................ 21
- 6.4. msgFlags .................................................. 21
- 6.5. msgSecurityModel .......................................... 24
- 6.6. msgSecurityParameters ..................................... 24
- 6.7. scopedPduData ............................................. 24
- 6.8. scopedPDU ................................................. 24
- 6.8.1. contextEngineID ......................................... 24
- 6.8.2. contextName ............................................. 25
- 6.8.3. data .................................................... 25
- 7. Elements of Procedure for v3MP .............................. 25
- 7.1. Prepare an Outgoing SNMP Message .......................... 26
- 7.2. Prepare Data Elements from an Incoming SNMP Message ....... 32
- 8. Intellectual Property ....................................... 37
- 9. Acknowledgements ............................................ 38
- 10. Security Considerations .................................... 39
- 11. References ................................................. 40
- 11.1. Normative References ..................................... 40
- 11.2. Informative References ................................... 41
- 12. Editors' Addresses ......................................... 42
- 13. Full Copyright Statement ................................... 43
-
-
-
-
- Case, et al. Standards Track [Page 2]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 1. Introduction
-
- The Architecture for describing Internet Management Frameworks
- [RFC3411] describes that an SNMP engine is composed of:
-
- 1) a Dispatcher
- 2) a Message Processing Subsystem,
- 3) a Security Subsystem, and
- 4) an Access Control Subsystem.
-
- Applications make use of the services of these subsystems.
-
- It is important to understand the SNMP architecture and its
- terminology to understand where the Message Processing Subsystem and
- Dispatcher described in this document fit into the architecture and
- interact with other subsystems within the architecture. The reader
- is expected to have read and understood the description of the SNMP
- architecture, defined in [RFC3411].
-
- The Dispatcher in the SNMP engine sends and receives SNMP messages.
- It also dispatches SNMP PDUs to SNMP applications. When an SNMP
- message needs to be prepared or when data needs to be extracted from
- an SNMP message, the Dispatcher delegates these tasks to a message
- version-specific Message Processing Model within the Message
- Processing Subsystem.
-
- A Message Processing Model is responsible for processing an SNMP
- version-specific message and for coordinating the interaction with
- the Security Subsystem to ensure proper security is applied to the
- SNMP message being handled.
-
- Interactions between the Dispatcher, the Message Processing
- Subsystem, and applications are modeled using abstract data elements
- and abstract service interface primitives defined by the SNMP
- architecture.
-
- Similarly, interactions between the Message Processing Subsystem and
- the Security Subsystem are modeled using abstract data elements and
- abstract service interface primitives as defined by the SNMP
- architecture.
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in BCP 14, RFC 2119.
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 3]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 2. Overview
-
- The following illustration depicts the Message Processing in relation
- to SNMP applications, the Security Subsystem and Transport Mappings.
-
- +-------------------------------------------------------------------+
- | SNMP Entity |
- | |
- | +---------------------------------------------------------------+ |
- | | Applications | |
- | | +-----------+ +--------------+ | |
- | | | Command | | Notification | | |
- | | | Generator | | Originator | +-----------+ +--------------+| |
- | | +-----------+ +--------------+ | Proxy | | Other || |
- | | +-----------+ +--------------+ | Forwarder | |Application(s)|| |
- | | | Command | | Notification | +-----------+ +--------------+| |
- | | | Responder | | Receiver | | |
- | | +-----------+ +--------------+ | |
- | +---------------------------------------------------------------+ |
- | ^ ^ ^ ^ |
- | | | | | |
- | v v v v |
- | +--------+-------+---------------+-----------+ |
- | ^ |
- | | +---------------------+ +-----------------+ |
- | | | Message Processing | | Security | |
- | Dispatcher v | Subsystem | | Subsystem | |
- | +------------------+ | +------------+ | | | |
- | | PDU Dispatcher | | +->| v1MP * |<--->| +-------------+ | |
- | | | | | +------------+ | | | Other | | |
- | | | | | +------------+ | | | Security | | |
- | | | | +->| v2cMP * |<--->| | Model | | |
- | | Message | | | +------------+ | | +-------------+ | |
- | | Dispatcher <-------->+ | | | |
- | | | | | +------------+ | | +-------------+ | |
- | | | | +->| v3MP * |<--->| | User-based | | |
- | | Transport | | | +------------+ | | | Security | | |
- | | Mapping | | | +------------+ | | | Model | | |
- | | (e.g., RFC 3417) | | +->| otherMP * |<--->| +-------------+ | |
- | +------------------+ | +------------+ | | | |
- | ^ +---------------------+ +-----------------+ |
- | | |
- +----------|--------------------------------------------------------+
- v
- +------------------+
- | Network | * One or more models may be present.
- +------------------+
-
-
-
-
- Case, et al. Standards Track [Page 4]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 2.1. The Dispatcher
-
- The Dispatcher is a key piece of an SNMP engine. There is only one
- in an SNMP engine, and its job is to dispatch tasks to the multiple
- version-specific Message Processing Models, and to dispatch PDUs to
- various applications.
-
- For outgoing messages, an application provides a PDU to be sent, plus
- the data needed to prepare and send the message, and the application
- specifies which version-specific Message Processing Model will be
- used to prepare the message with the desired security processing.
- Once the message is prepared, the Dispatcher sends the message.
-
- For incoming messages, the Dispatcher determines the SNMP version of
- the incoming message and passes the message to the version-specific
- Message Processing Model to extract the components of the message and
- to coordinate the processing of security services for the message.
- After version-specific processing, the PDU Dispatcher determines
- which application, if any, should receive the PDU for processing and
- forwards it accordingly.
-
- The Dispatcher, while sending and receiving SNMP messages, collects
- statistics about SNMP messages and the behavior of the SNMP engine in
- managed objects to make them accessible to remote SNMP entities.
- This document defines these managed objects, the MIB module which
- contains them, and how these managed objects might be used to provide
- useful management.
-
- 2.2. Message Processing Subsystem
-
- The SNMP Message Processing Subsystem is the part of an SNMP engine
- which interacts with the Dispatcher to handle the version-specific
- SNMP messages. It contains one or more Message Processing Models.
-
- This document describes one Message Processing Model, the SNMPv3
- Message Processing Model, in Section 6. The SNMPv3 Message
- Processing Model is defined in a separate section to show that
- multiple (independent) Message Processing Models can exist at the
- same time and that such Models can be described in different
- documents. The SNMPv3 Message Processing Model can be replaced or
- supplemented with other Message Processing Models in the future. Two
- Message Processing Models which are expected to be developed in the
- future are the SNMPv1 message format [RFC1157] and the SNMPv2c
- message format [RFC1901]. Others may be developed as needed.
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 5]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 3. Elements of Message Processing and Dispatching
-
- See [RFC3411] for the definitions of:
-
- contextEngineID
- contextName
- scopedPDU
- maxSizeResponseScopedPDU
- securityModel
- securityName
- securityLevel
- messageProcessingModel
-
- For incoming messages, a version-specific message processing module
- provides these values to the Dispatcher. For outgoing messages, an
- application provides these values to the Dispatcher.
-
- For some version-specific processing, the values may be extracted
- from received messages; for other versions, the values may be
- determined by algorithm, or by an implementation-defined mechanism.
- The mechanism by which the value is determined is irrelevant to the
- Dispatcher.
-
- The following additional or expanded definitions are for use within
- the Dispatcher.
-
- 3.1. messageProcessingModel
-
- The value of messageProcessingModel identifies a Message Processing
- Model. A Message Processing Model describes the version-specific
- procedures for extracting data from messages, generating messages,
- calling upon a securityModel to apply its security services to
- messages, for converting data from a version-specific message format
- into a generic format usable by the Dispatcher, and for converting
- data from Dispatcher format into a version-specific message format.
-
- 3.2. pduVersion
-
- The value of pduVersion represents a specific version of protocol
- operation and its associated PDU formats, such as SNMPv1 or SNMPv2
- [RFC3416]. The values of pduVersion are specific to the version of
- the PDU contained in a message, and the PDUs processed by
- applications. The Dispatcher does not use the value of pduVersion
- directly.
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 6]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- An application specifies the pduVersion when it requests the PDU
- Dispatcher to send a PDU to another SNMP engine. The Dispatcher
- passes the pduVersion to a Message Processing Model, so it knows how
- to handle the PDU properly.
-
- For incoming messages, the pduVersion is provided to the Dispatcher
- by a version-specific Message Processing module. The PDU Dispatcher
- passes the pduVersion to the application so it knows how to handle
- the PDU properly. For example, a command responder application needs
- to know whether to use [RFC3416] elements of procedure and syntax
- instead of those specified for SNMPv1.
-
- 3.3. pduType
-
- A value of the pduType represents a specific type of protocol
- operation. The values of the pduType are specific to the version of
- the PDU contained in a message.
-
- Applications register to support particular pduTypes for particular
- contextEngineIDs.
-
- For incoming messages, pduType is provided to the Dispatcher by a
- version-specific Message Processing module. It is subsequently used
- to dispatch the PDU to the application which registered for the
- pduType for the contextEngineID of the associated scopedPDU.
-
- 3.4. sendPduHandle
-
- This handle is generated for coordinating the processing of requests
- and responses between the SNMP engine and an application. The handle
- must be unique across all version-specific Message Processing Models,
- and is of local significance only.
-
- 4. Dispatcher Elements of Procedure
-
- This section describes the procedures followed by the Dispatcher when
- generating and processing SNMP messages.
-
- 4.1. Sending an SNMP Message to the Network
-
- This section describes the procedure followed by an SNMP engine
- whenever it sends an SNMP message.
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 7]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4.1.1. Sending a Request or Notification
-
- The following procedures are followed by the Dispatcher when an
- application wants to send an SNMP PDU to another (remote)
- application, i.e., to initiate a communication by originating a
- message, such as one containing a request or a notification.
-
- 1) The application requests this using the abstract service
- primitive:
-
- statusInformation = -- sendPduHandle if success
- -- errorIndication if failure
- sendPdu(
- IN transportDomain -- transport domain to be used
- IN transportAddress -- destination network address
- IN messageProcessingModel -- typically, SNMP version
- IN securityModel -- Security Model to use
- IN securityName -- on behalf of this principal
- IN securityLevel -- Level of Security requested
- IN contextEngineID -- data from/at this entity
- IN contextName -- data from/in this context
- IN pduVersion -- the version of the PDU
- IN PDU -- SNMP Protocol Data Unit
- IN expectResponse -- TRUE or FALSE
- )
-
- 2) If the messageProcessingModel value does not represent a Message
- Processing Model known to the Dispatcher, then an errorIndication
- (implementation-dependent) is returned to the calling application.
- No further processing is performed.
-
- 3) The Dispatcher generates a sendPduHandle to coordinate subsequent
- processing.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 8]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4) The Message Dispatcher sends the request to the version-specific
- Message Processing module identified by messageProcessingModel
- using the abstract service primitive:
-
- statusInformation = -- success or error indication
- prepareOutgoingMessage(
- IN transportDomain -- as specified by application
- IN transportAddress -- as specified by application
- IN messageProcessingModel -- as specified by application
- IN securityModel -- as specified by application
- IN securityName -- as specified by application
- IN securityLevel -- as specified by application
- IN contextEngineID -- as specified by application
- IN contextName -- as specified by application
- IN pduVersion -- as specified by application
- IN PDU -- as specified by application
- IN expectResponse -- as specified by application
- IN sendPduHandle -- as determined in step 3.
- OUT destTransportDomain -- destination transport domain
- OUT destTransportAddress -- destination transport address
- OUT outgoingMessage -- the message to send
- OUT outgoingMessageLength -- the message length
- )
-
- 5) If the statusInformation indicates an error, the errorIndication
- is returned to the calling application. No further processing is
- performed.
-
- 6) If the statusInformation indicates success, the sendPduHandle is
- returned to the application, and the outgoingMessage is sent. The
- transport used to send the outgoingMessage is returned via
- destTransportDomain, and the address to which it was sent is
- returned via destTransportAddress.
-
- Outgoing Message Processing is complete.
-
- 4.1.2. Sending a Response to the Network
-
- The following procedure is followed when an application wants to
- return a response back to the originator of an SNMP Request.
-
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 9]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 1) An application can request this using the abstract service
- primitive:
-
- result =
- returnResponsePdu(
- IN messageProcessingModel -- typically, SNMP version
- IN securityModel -- Security Model in use
- IN securityName -- on behalf of this principal
- IN securityLevel -- same as on incoming request
- IN contextEngineID -- data from/at this SNMP entity
- IN contextName -- data from/in this context
- IN pduVersion -- the version of the PDU
- IN PDU -- SNMP Protocol Data Unit
- IN maxSizeResponseScopedPDU -- maximum size of Response PDU
- IN stateReference -- reference to state information
- -- as presented with the request
- IN statusInformation -- success or errorIndication
- ) -- (error counter OID and value
- -- when errorIndication)
-
- 2) The Message Dispatcher sends the request to the appropriate
- Message Processing Model indicated by the received value of
- messageProcessingModel using the abstract service primitive:
-
- result = -- SUCCESS or errorIndication
- prepareResponseMessage(
- IN messageProcessingModel -- specified by application
- IN securityModel -- specified by application
- IN securityName -- specified by application
- IN securityLevel -- specified by application
- IN contextEngineID -- specified by application
- IN contextName -- specified by application
- IN pduVersion -- specified by application
- IN PDU -- specified by application
- IN maxSizeResponseScopedPDU -- specified by application
- IN stateReference -- specified by application
- IN statusInformation -- specified by application
- OUT destTransportDomain -- destination transport domain
- OUT destTransportAddress -- destination transport address
- OUT outgoingMessage -- the message to send
- OUT outgoingMessageLength -- the message length
- )
-
- 3) If the result is an errorIndication, the errorIndication is
- returned to the calling application. No further processing is
- performed.
-
-
-
-
-
- Case, et al. Standards Track [Page 10]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4) If the result is success, the outgoingMessage is sent. The
- transport used to send the outgoingMessage is returned via
- destTransportDomain, and the address to which it was sent is
- returned via destTransportAddress.
-
- Message Processing is complete.
-
- 4.2. Receiving an SNMP Message from the Network
-
- This section describes the procedure followed by an SNMP engine
- whenever it receives an SNMP message.
-
- Please note, that for the sake of clarity and to prevent the text
- from being even longer and more complicated, some details were
- omitted from the steps below. In particular, the elements of
- procedure do not always explicitly indicate when state information
- needs to be released. The general rule is that if state information
- is available when a message is to be "discarded without further
- processing", then the state information must also be released at that
- same time.
-
- 4.2.1. Message Dispatching of received SNMP Messages
-
- 1) The snmpInPkts counter [RFC3418] is incremented.
-
- 2) The version of the SNMP message is determined in an
- implementation-dependent manner. If the packet cannot be
- sufficiently parsed to determine the version of the SNMP message,
- then the snmpInASNParseErrs [RFC3418] counter is incremented, and
- the message is discarded without further processing. If the
- version is not supported, then the snmpInBadVersions [RFC3418]
- counter is incremented, and the message is discarded without
- further processing.
-
- 3) The origin transportDomain and origin transportAddress are
- determined.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 11]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4) The message is passed to the version-specific Message Processing
- Model which returns the abstract data elements required by the
- Dispatcher. This is performed using the abstract service
- primitive:
-
- result = -- SUCCESS or errorIndication
- prepareDataElements(
- IN transportDomain -- origin as determined in step 3.
- IN transportAddress -- origin as determined in step 3.
- IN wholeMsg -- as received from the network
- IN wholeMsgLength -- as received from the network
- OUT messageProcessingModel -- typically, SNMP version
- OUT securityModel -- Security Model specified
- OUT securityName -- on behalf of this principal
- OUT securityLevel -- Level of Security specified
- OUT contextEngineID -- data from/at this entity
- OUT contextName -- data from/in this context
- OUT pduVersion -- the version of the PDU
- OUT PDU -- SNMP Protocol Data Unit
- OUT pduType -- SNMP PDU type
- OUT sendPduHandle -- handle for a matched request
- OUT maxSizeResponseScopedPDU -- maximum size of Response PDU
- OUT statusInformation -- success or errorIndication
- -- (error counter OID and value
- -- when errorIndication)
- OUT stateReference -- reference to state information
- -- to be used for a possible
- ) -- Response
-
- 5) If the result is a FAILURE errorIndication, the message is
- discarded without further processing.
-
- 6) At this point, the abstract data elements have been prepared and
- processing continues as described in Section 4.2.2, PDU
- Dispatching for Incoming Messages.
-
- 4.2.2. PDU Dispatching for Incoming Messages
-
- The elements of procedure for the dispatching of PDUs depends on the
- value of sendPduHandle. If the value of sendPduHandle is <none>,
- then this is a request or notification and the procedures specified
- in Section 4.2.2.1 apply. If the value of snmpPduHandle is not
- <none>, then this is a response and the procedures specified in
- Section 4.2.2.2 apply.
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 12]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4.2.2.1. Incoming Requests and Notifications
-
- The following procedures are followed for the dispatching of PDUs
- when the value of sendPduHandle is <none>, indicating this is a
- request or notification.
-
- 1) The combination of contextEngineID and pduType is used to
- determine which application has registered for this request or
- notification.
-
- 2) If no application has registered for the combination, then:
-
- a) The snmpUnknownPDUHandlers counter is incremented.
-
- b) A Response message is generated using the abstract service
- primitive:
-
- result = -- SUCCESS or FAILURE
- prepareResponseMessage(
- IN messageProcessingModel -- as provided by MP module
- IN securityModel -- as provided by MP module
- IN securityName -- as provided by MP module
- IN securityLevel -- as provided by MP module
- IN contextEngineID -- as provided by MP module
- IN contextName -- as provided by MP module
- IN pduVersion -- as provided by MP module
- IN PDU -- as provided by MP module
- IN maxSizeResponseScopedPDU -- as provided by MP module
- IN stateReference -- as provided by MP module
- IN statusInformation -- errorIndication plus
- -- snmpUnknownPDUHandlers OID
- -- value pair.
- OUT destTransportDomain -- destination transportDomain
- OUT destTransportAddress -- destination transportAddress
- OUT outgoingMessage -- the message to send
- OUT outgoingMessageLength -- its length
- )
-
- c) If the result is SUCCESS, then the prepared message is sent to
- the originator of the request as identified by the
- transportDomain and transportAddress. The transport used to
- send the outgoingMessage is returned via destTransportDomain,
- and the address to which it was sent is returned via
- destTransportAddress.
-
- d) The incoming message is discarded without further processing.
- Message Processing for this message is complete.
-
-
-
-
- Case, et al. Standards Track [Page 13]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 3) The PDU is dispatched to the application, using the abstract
- service primitive:
-
- processPdu( -- process Request/Notification
- IN messageProcessingModel -- as provided by MP module
- IN securityModel -- as provided by MP module
- IN securityName -- as provided by MP module
- IN securityLevel -- as provided by MP module
- IN contextEngineID -- as provided by MP module
- IN contextName -- as provided by MP module
- IN pduVersion -- as provided by MP module
- IN PDU -- as provided by MP module
- IN maxSizeResponseScopedPDU -- as provided by MP module
- IN stateReference -- as provided by MP module
- -- needed when sending response
- )
-
- Message processing for this message is complete.
-
- 4.2.2.2. Incoming Responses
-
- The following procedures are followed for the dispatching of PDUs
- when the value of sendPduHandle is not <none>, indicating this is a
- response.
-
- 1) The value of sendPduHandle is used to determine, in an
- implementation-defined manner, which application is waiting for a
- response associated with this sendPduHandle.
-
- 2) If no waiting application is found, the message is discarded
- without further processing, and the stateReference is released.
- The snmpUnknownPDUHandlers counter is incremented. Message
- Processing is complete for this message.
-
- 3) Any cached information, including stateReference, about the
- message is discarded.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 14]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4) The response is dispatched to the application using the abstract
- service primitive:
-
- processResponsePdu( -- process Response PDU
- IN messageProcessingModel -- provided by the MP module
- IN securityModel -- provided by the MP module
- IN securityName -- provided by the MP module
- IN securityLevel -- provided by the MP module
- IN contextEngineID -- provided by the MP module
- IN contextName -- provided by the MP module
- IN pduVersion -- provided by the MP module
- IN PDU -- provided by the MP module
- IN statusInformation -- provided by the MP module
- IN sendPduHandle -- provided by the MP module
- )
-
- Message Processing is complete for this message.
-
- 4.3. Application Registration for Handling PDU types
-
- Applications that want to process certain PDUs must register with the
- PDU Dispatcher. Applications specify the combination of
- contextEngineID and pduType(s) for which they want to take
- responsibility.
-
- 1) An application registers according to the abstract interface
- primitive:
-
- statusInformation = -- success or errorIndication
- registerContextEngineID(
- IN contextEngineID -- take responsibility for this one
- IN pduType -- the pduType(s) to be registered
- )
-
- Note: Implementations may provide a means of requesting
- registration for simultaneous multiple contextEngineID values,
- e.g., all contextEngineID values, and may also provide a means for
- requesting simultaneous registration for multiple values of the
- pduType.
-
- 2) The parameters may be checked for validity; if they are not, then
- an errorIndication (invalidParameter) is returned to the
- application.
-
- 3) Each combination of contextEngineID and pduType can be registered
- only once. If another application has already registered for the
- specified combination, then an errorIndication (alreadyRegistered)
- is returned to the application.
-
-
-
- Case, et al. Standards Track [Page 15]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4) Otherwise, the registration is saved so that SNMP PDUs can be
- dispatched to this application.
-
- 4.4. Application Unregistration for Handling PDU Types
-
- Applications that no longer want to process certain PDUs must
- unregister with the PDU Dispatcher.
-
- 1) An application unregisters using the abstract service primitive:
-
- unregisterContextEngineID(
- IN contextEngineID -- give up responsibility for this
- IN pduType -- the pduType(s) to be unregistered
- )
-
- Note: Implementations may provide a means for requesting the
- unregistration for simultaneous multiple contextEngineID values,
- e.g., all contextEngineID values, and may also provide a means for
- requesting simultaneous unregistration for multiple values of
- pduType.
-
- 2) If the contextEngineID and pduType combination has been
- registered, then the registration is deleted.
-
- If no such registration exists, then the request is ignored.
-
- 5. Definitions
-
- 5.1. Definitions for SNMP Message Processing and Dispatching
-
- SNMP-MPD-MIB DEFINITIONS ::= BEGIN
-
- IMPORTS
- MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
- MODULE-IDENTITY, OBJECT-TYPE,
- snmpModules, Counter32 FROM SNMPv2-SMI;
-
- snmpMPDMIB MODULE-IDENTITY
- LAST-UPDATED "200210140000Z"
- ORGANIZATION "SNMPv3 Working Group"
- CONTACT-INFO "WG-EMail: snmpv3@lists.tislabs.com
- Subscribe: snmpv3-request@lists.tislabs.com
-
- Co-Chair: Russ Mundy
- Network Associates Laboratories
- postal: 15204 Omega Drive, Suite 300
- Rockville, MD 20850-4601
- USA
-
-
-
- Case, et al. Standards Track [Page 16]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- EMail: mundy@tislabs.com
- phone: +1 301-947-7107
-
- Co-Chair &
- Co-editor: David Harrington
- Enterasys Networks
- postal: 35 Industrial Way
- P. O. Box 5005
- Rochester NH 03866-5005
- USA
- EMail: dbh@enterasys.com
- phone: +1 603-337-2614
-
- Co-editor: Jeffrey Case
- SNMP Research, Inc.
- postal: 3001 Kimberlin Heights Road
- Knoxville, TN 37920-9716
- USA
- EMail: case@snmp.com
- phone: +1 423-573-1434
-
- Co-editor: Randy Presuhn
- BMC Software, Inc.
- postal: 2141 North First Street
- San Jose, CA 95131
- USA
- EMail: randy_presuhn@bmc.com
- phone: +1 408-546-1006
-
- Co-editor: Bert Wijnen
- Lucent Technologies
- postal: Schagen 33
- 3461 GL Linschoten
- Netherlands
- EMail: bwijnen@lucent.com
- phone: +31 348-680-485
- "
- DESCRIPTION "The MIB for Message Processing and Dispatching
-
- Copyright (C) The Internet Society (2002). This
- version of this MIB module is part of RFC 3412;
- see the RFC itself for full legal notices.
- "
- REVISION "200210140000Z" -- 14 October 2002
- DESCRIPTION "Updated addresses, published as RFC 3412."
- REVISION "199905041636Z" -- 4 May 1999
- DESCRIPTION "Updated addresses, published as RFC 2572."
-
-
-
-
- Case, et al. Standards Track [Page 17]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- REVISION "199709300000Z" -- 30 September 1997
- DESCRIPTION "Original version, published as RFC 2272."
- ::= { snmpModules 11 }
-
- -- Administrative assignments ***************************************
-
- snmpMPDAdmin OBJECT IDENTIFIER ::= { snmpMPDMIB 1 }
- snmpMPDMIBObjects OBJECT IDENTIFIER ::= { snmpMPDMIB 2 }
- snmpMPDMIBConformance OBJECT IDENTIFIER ::= { snmpMPDMIB 3 }
-
- -- Statistics for SNMP Messages *************************************
-
- snmpMPDStats OBJECT IDENTIFIER ::= { snmpMPDMIBObjects 1 }
-
- snmpUnknownSecurityModels OBJECT-TYPE
- SYNTAX Counter32
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION "The total number of packets received by the SNMP
- engine which were dropped because they referenced a
- securityModel that was not known to or supported by
- the SNMP engine.
- "
- ::= { snmpMPDStats 1 }
-
- snmpInvalidMsgs OBJECT-TYPE
- SYNTAX Counter32
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION "The total number of packets received by the SNMP
- engine which were dropped because there were invalid
- or inconsistent components in the SNMP message.
- "
- ::= { snmpMPDStats 2 }
-
- snmpUnknownPDUHandlers OBJECT-TYPE
- SYNTAX Counter32
- MAX-ACCESS read-only
- STATUS current
- DESCRIPTION "The total number of packets received by the SNMP
- engine which were dropped because the PDU contained
- in the packet could not be passed to an application
- responsible for handling the pduType, e.g. no SNMP
- application had registered for the proper
- combination of the contextEngineID and the pduType.
- "
- ::= { snmpMPDStats 3 }
-
-
-
-
- Case, et al. Standards Track [Page 18]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- -- Conformance information ******************************************
-
- snmpMPDMIBCompliances OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 1}
- snmpMPDMIBGroups OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 2}
-
- -- Compliance statements
-
- snmpMPDCompliance MODULE-COMPLIANCE
- STATUS current
- DESCRIPTION "The compliance statement for SNMP entities which
- implement the SNMP-MPD-MIB.
- "
- MODULE -- this module
- MANDATORY-GROUPS { snmpMPDGroup }
- ::= { snmpMPDMIBCompliances 1 }
-
- snmpMPDGroup OBJECT-GROUP
- OBJECTS {
- snmpUnknownSecurityModels,
- snmpInvalidMsgs,
- snmpUnknownPDUHandlers
- }
- STATUS current
- DESCRIPTION "A collection of objects providing for remote
- monitoring of the SNMP Message Processing and
- Dispatching process.
- "
- ::= { snmpMPDMIBGroups 1 }
-
- END
-
- 6. The SNMPv3 Message Format
-
- This section defines the SNMPv3 message format and the corresponding
- SNMP version 3 Message Processing Model (v3MP).
-
- SNMPv3MessageSyntax DEFINITIONS IMPLICIT TAGS ::= BEGIN
-
- SNMPv3Message ::= SEQUENCE {
- -- identify the layout of the SNMPv3Message
- -- this element is in same position as in SNMPv1
- -- and SNMPv2c, allowing recognition
- -- the value 3 is used for snmpv3
- msgVersion INTEGER ( 0 .. 2147483647 ),
- -- administrative parameters
- msgGlobalData HeaderData,
- -- security model-specific parameters
- -- format defined by Security Model
-
-
-
- Case, et al. Standards Track [Page 19]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- msgSecurityParameters OCTET STRING,
- msgData ScopedPduData
- }
-
- HeaderData ::= SEQUENCE {
- msgID INTEGER (0..2147483647),
- msgMaxSize INTEGER (484..2147483647),
-
- msgFlags OCTET STRING (SIZE(1)),
- -- .... ...1 authFlag
- -- .... ..1. privFlag
- -- .... .1.. reportableFlag
- -- Please observe:
- -- .... ..00 is OK, means noAuthNoPriv
- -- .... ..01 is OK, means authNoPriv
- -- .... ..10 reserved, MUST NOT be used.
- -- .... ..11 is OK, means authPriv
-
- msgSecurityModel INTEGER (1..2147483647)
- }
-
- ScopedPduData ::= CHOICE {
- plaintext ScopedPDU,
- encryptedPDU OCTET STRING -- encrypted scopedPDU value
- }
-
- ScopedPDU ::= SEQUENCE {
- contextEngineID OCTET STRING,
- contextName OCTET STRING,
- data ANY -- e.g., PDUs as defined in [RFC3416]
- }
- END
-
- 6.1. msgVersion
-
- The msgVersion field is set to snmpv3(3) and identifies the message
- as an SNMP version 3 Message.
-
- 6.2. msgID
-
- The msgID is used between two SNMP entities to coordinate request
- messages and responses, and by the v3MP to coordinate the processing
- of the message by different subsystem models within the architecture.
-
- Values for msgID SHOULD be generated in a manner that avoids re-use
- of any outstanding values. Doing so provides protection against some
- replay attacks. One possible implementation strategy would be to use
- the low-order bits of snmpEngineBoots [RFC3411] as the high-order
-
-
-
- Case, et al. Standards Track [Page 20]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- portion of the msgID value and a monotonically increasing integer for
- the low-order portion of msgID.
-
- Note that the request-id in a PDU may be used by SNMP applications to
- identify the PDU; the msgID is used by the engine to identify the
- message which carries a PDU. The engine needs to identify the
- message even if decryption of the PDU (and request-id) fails. No
- assumption should be made that the value of the msgID and the value
- of the request-id are equivalent.
-
- The value of the msgID field for a response takes the value of the
- msgID field from the message to which it is a response. By use of
- the msgID value, an engine can distinguish the (potentially multiple)
- outstanding requests, and thereby correlate incoming responses with
- outstanding requests. In cases where an unreliable datagram service
- is used, the msgID also provides a simple means of identifying
- messages duplicated by the network. If a request is retransmitted, a
- new msgID value SHOULD be used for each retransmission.
-
- 6.3. msgMaxSize
-
- The msgMaxSize field of the message conveys the maximum message size
- supported by the sender of the message, i.e., the maximum message
- size that the sender can accept when another SNMP engine sends an
- SNMP message (be it a response or any other message) to the sender of
- this message on the transport in use for this message.
-
- When an SNMP message is being generated, the msgMaxSize is provided
- by the SNMP engine which generates the message. At the receiving
- SNMP engine, the msgMaxSize is used to determine the maximum message
- size the sender can accommodate.
-
- 6.4. msgFlags
-
- The msgFlags field of the message contains several bit fields which
- control processing of the message.
-
- The reportableFlag is a secondary aid in determining whether a Report
- PDU MUST be sent. It is only used in cases where the PDU portion of
- a message cannot be decoded, due to, for example, an incorrect
- encryption key. If the PDU can be decoded, the PDU type forms the
- basis for decisions on sending Report PDUs.
-
- When the reportableFlag is used, if its value is one, a Report PDU
- MUST be returned to the sender under those conditions which can cause
- the generation of Report PDUs. Similarly, when the reportableFlag is
- used and its value is zero, then a Report PDU MUST NOT be sent. The
- reportableFlag MUST always be zero when the message contains a PDU
-
-
-
- Case, et al. Standards Track [Page 21]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- from the Unconfirmed Class, such as a Report PDU, a response-type PDU
- (such as a Response PDU), or an unacknowledged notification-type PDU
- (such as an SNMPv2-trap PDU). The reportableFlag MUST always be one
- for a PDU from the Confirmed Class, including request-type PDUs (such
- as a Get PDU) and acknowledged notification-type PDUs (such as an
- Inform PDU).
-
- If the reportableFlag is set to one for a message containing a PDU
- from the Unconfirmed Class, such as a Report PDU, a response-type PDU
- (such as a Response PDU), or an unacknowledged notification-type PDU
- (such as an SNMPv2-trap PDU), then the receiver of that message MUST
- process it as though the reportableFlag had been set to zero.
-
- If the reportableFlag is set to zero for a message containing a
- request-type PDU (such as a Get PDU) or an acknowledged
- notification-type PDU (such as an Inform PDU), then the receiver of
- that message MUST process it as though the reportableFlag had been
- set to one.
-
- Report PDUs are generated directly by the SNMPv3 Message Processing
- Model, and support engine-to-engine communications, but may be passed
- to applications for processing.
-
- An SNMP engine that receives a reportPDU may use it to determine what
- kind of problem was detected by the remote SNMP engine. It can do so
- based on the error counter included as the first (and only) varBind
- of the reportPDU. Based on the detected error, the SNMP engine may
- try to send a corrected SNMP message. If that is not possible, it
- may pass an indication of the error to the application on whose
- behalf the failed SNMP request was issued.
-
- The authFlag and privFlag portions of the msgFlags field are set by
- the sender to indicate the securityLevel that was applied to the
- message before it was sent on the wire. The receiver of the message
- MUST apply the same securityLevel when the message is received and
- the contents are being processed.
-
- There are three securityLevels, namely noAuthNoPriv, which is less
- than authNoPriv, which is in turn less than authPriv. See the SNMP
- architecture document [RFC3411] for details about the securityLevel.
-
- a) authFlag
-
- If the authFlag is set to one, then the securityModel used by the
- SNMP engine which sent the message MUST identify the securityName
- on whose behalf the SNMP message was generated and MUST provide,
- in a securityModel-specific manner, sufficient data for the
- receiver of the message to be able to authenticate that
-
-
-
- Case, et al. Standards Track [Page 22]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- identification. In general, this authentication will allow the
- receiver to determine with reasonable certainty that the message
- was:
-
- - sent on behalf of the principal associated with the
- securityName,
-
- - was not redirected,
-
- - was not modified in transit, and
-
- - was not replayed.
-
- If the authFlag is zero, then the securityModel used by the SNMP
- engine which sent the message MUST identify the securityName on
- whose behalf the SNMP message was generated but it does not need
- to provide sufficient data for the receiver of the message to
- authenticate the identification, as there is no need to
- authenticate the message in this case.
-
- b) privFlag
-
- If the privFlag is set, then the securityModel used by the SNMP
- engine which sent the message MUST also protect the scopedPDU in
- an SNMP message from disclosure, i.e., it MUST encrypt/decrypt the
- scopedPDU. If the privFlag is zero, then the securityModel in use
- does not need to protect the data from disclosure.
-
- It is an explicit requirement of the SNMP architecture that if
- privacy is selected, then authentication is also required. That
- means that if the privFlag is set, then the authFlag MUST also be
- set to one.
-
- The combination of the authFlag and the privFlag comprises a Level
- of Security as follows:
-
- authFlag zero, privFlag zero -> securityLevel is noAuthNoPriv
- authFlag zero, privFlag one -> invalid combination, see below
- authFlag one, privFlag zero -> securityLevel is authNoPriv
- authFlag one, privFlag one -> securityLevel is authPriv
-
- The elements of procedure (see below) describe the action to be taken
- when the invalid combination of authFlag equal to zero and privFlag
- equal to one is encountered.
-
- The remaining bits in msgFlags are reserved, and MUST be set to zero
- when sending a message and SHOULD be ignored when receiving a
- message.
-
-
-
- Case, et al. Standards Track [Page 23]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 6.5. msgSecurityModel
-
- The v3MP supports the concurrent existence of multiple Security
- Models to provide security services for SNMPv3 messages. The
- msgSecurityModel field in an SNMPv3 Message identifies which Security
- Model was used by the sender to generate the message and therefore
- which securityModel MUST be used by the receiver to perform security
- processing for the message. The mapping to the appropriate
- securityModel implementation within an SNMP engine is accomplished in
- an implementation-dependent manner.
-
- 6.6. msgSecurityParameters
-
- The msgSecurityParameters field of the SNMPv3 Message is used for
- communication between the Security Model modules in the sending and
- receiving SNMP engines. The data in the msgSecurityParameters field
- is used exclusively by the Security Model, and the contents and
- format of the data is defined by the Security Model. This OCTET
- STRING is not interpreted by the v3MP, but is passed to the local
- implementation of the Security Model indicated by the
- msgSecurityModel field in the message.
-
- 6.7. scopedPduData
-
- The scopedPduData field represents either the plain text scopedPDU if
- the privFlag in the msgFlags is zero, or it represents an
- encryptedPDU (encoded as an OCTET STRING) which MUST be decrypted by
- the securityModel in use to produce a plaintext scopedPDU.
-
- 6.8. scopedPDU
-
- The scopedPDU contains information to identify an administratively
- unique context and a PDU. The object identifiers in the PDU refer to
- managed objects which are (expected to be) accessible within the
- specified context.
-
- 6.8.1. contextEngineID
-
- The contextEngineID in the SNMPv3 message uniquely identifies, within
- an administrative domain, an SNMP entity that may realize an instance
- of a context with a particular contextName.
-
- For incoming messages, the contextEngineID is used in conjunction
- with the pduType to determine to which application the scopedPDU will
- be sent for processing.
-
- For outgoing messages, the v3MP sets the contextEngineID to the value
- provided by the application in the request for a message to be sent.
-
-
-
- Case, et al. Standards Track [Page 24]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 6.8.2. contextName
-
- The contextName field in an SNMPv3 message, in conjunction with the
- contextEngineID field, identifies the particular context associated
- with the management information contained in the PDU portion of the
- message. The contextName is unique within the SNMP entity specified
- by the contextEngineID, which may realize the managed objects
- referenced within the PDU. An application which originates a message
- provides the value for the contextName field and this value may be
- used during processing by an application at the receiving SNMP
- Engine.
-
- 6.8.3. data
-
- The data field of the SNMPv3 Message contains the PDU. Among other
- things, the PDU contains the PDU type that is used by the v3MP to
- determine the type of the incoming SNMP message. The v3MP specifies
- that the PDU MUST be one of those specified in [RFC3416].
-
- 7. Elements of Procedure for v3MP
-
- This section describes the procedures followed by an SNMP engine when
- generating and processing SNMP messages according to the SNMPv3
- Message Processing Model.
-
- Please note, that for the sake of clarity and to prevent the text
- from being even longer and more complicated, some details were
- omitted from the steps below.
-
- a) Some steps specify that when some error conditions are
- encountered when processing a received message, a message
- containing a Report PDU is generated and the received message
- is discarded without further processing. However, a Report-PDU
- MUST NOT be generated unless the PDU causing generation of the
- Report PDU can be determined to be a member of the Confirmed
- Class, or the reportableFlag is set to one and the PDU class
- cannot be determined.
-
- b) The elements of procedure do not always explicitly indicate
- when state information needs to be released. The general rule
- is that if state information is available when a message is to
- be "discarded without further processing", then the state
- information should also be released at that same time.
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 25]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 7.1. Prepare an Outgoing SNMP Message
-
- This section describes the procedure followed to prepare an SNMPv3
- message from the data elements passed by the Message Dispatcher.
-
- 1) The Message Dispatcher may request that an SNMPv3 message
- containing a Read Class, Write Class, or Notification Class PDU be
- prepared for sending.
-
- a) It makes such a request according to the abstract service
- primitive:
-
- statusInformation = -- success or errorIndication
- prepareOutgoingMessage(
- IN transportDomain -- requested transport domain
- IN transportAddress -- requested destination address
- IN messageProcessingModel -- typically, SNMP version
- IN securityModel -- Security Model to use
- IN securityName -- on behalf of this principal
- IN securityLevel -- Level of Security requested
- IN contextEngineID -- data from/at this entity
- IN contextName -- data from/in this context
- IN pduVersion -- version of the PDU *
- IN PDU -- SNMP Protocol Data Unit
- IN expectResponse -- TRUE or FALSE *
- IN sendPduHandle -- the handle for matching
- -- incoming responses
- OUT destTransportDomain -- destination transport domain
- OUT destTransportAddress -- destination transport address
- OUT outgoingMessage -- the message to send
- OUT outgoingMessageLength -- the length of the message
- )
-
- * The SNMPv3 Message Processing Model does not use the values of
- expectResponse or pduVersion.
-
- b) A unique msgID is generated. The number used for msgID should
- not have been used recently, and MUST NOT be the same as was
- used for any outstanding request.
-
- 2) The Message Dispatcher may request that an SNMPv3 message
- containing a Response Class or Internal Class PDU be prepared for
- sending.
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 26]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- a) It makes such a request according to the abstract service
- primitive:
-
- result = -- SUCCESS or FAILURE
- prepareResponseMessage(
- IN messageProcessingModel -- typically, SNMP version
- IN securityModel -- same as on incoming request
- IN securityName -- same as on incoming request
- IN securityLevel -- same as on incoming request
- IN contextEngineID -- data from/at this SNMP entity
- IN contextName -- data from/in this context
- IN pduVersion -- version of the PDU
- IN PDU -- SNMP Protocol Data Unit
- IN maxSizeResponseScopedPDU -- maximum size sender can
- -- accept
- IN stateReference -- reference to state
- -- information presented with
- -- the request
- IN statusInformation -- success or errorIndication
- -- error counter OID and value
- -- when errorIndication
- OUT destTransportDomain -- destination transport domain
- OUT destTransportAddress -- destination transport address
- OUT outgoingMessage -- the message to send
- OUT outgoingMessageLength -- the length of the message
- )
-
- b) The cached information for the original request is retrieved
- via the stateReference, including:
-
- - msgID,
- - contextEngineID,
- - contextName,
- - securityModel,
- - securityName,
- - securityLevel,
- - securityStateReference,
- - reportableFlag,
- - transportDomain, and
- - transportAddress.
-
- The SNMPv3 Message Processing Model does not allow cached data
- to be overridden, except by error indications as detailed in
- (3) below.
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 27]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 3) If statusInformation contains values for an OID/value combination
- (potentially also containing a securityLevel value,
- contextEngineID value, or contextName value), then:
-
- a) If a PDU is provided, it is the PDU from the original request.
- If possible, extract the request-id and pduType.
-
- b) If the pduType is determined to not be a member of the
- Confirmed Class, or if the reportableFlag is zero and the
- pduType cannot be determined, then the original message is
- discarded, and no further processing is done. A result of
- FAILURE is returned. SNMPv3 Message Processing is complete.
-
- c) A Report PDU is prepared:
-
- 1) the varBindList is set to contain the OID and value from the
- statusInformation.
-
- 2) error-status is set to 0.
-
- 3) error-index is set to 0.
-
- 4) request-id is set to the value extracted in step b).
- Otherwise, request-id is set to 0.
-
- d) The errorIndication in statusInformation may be accompanied by
- a securityLevel value, a contextEngineID value, or a
- contextName value.
-
- 1) If statusInformation contains a value for securityLevel,
- then securityLevel is set to that value, otherwise it is set
- to noAuthNoPriv.
-
- 2) If statusInformation contains a value for contextEngineID,
- then contextEngineID is set to that value, otherwise it is
- set to the value of this entity's snmpEngineID.
-
- 3) If statusInformation contains a value for contextName, then
- contextName is set to that value, otherwise it is set to the
- default context of "" (zero-length string).
-
- e) PDU is set to refer to the new Report-PDU. The old PDU is
- discarded.
-
- f) Processing continues with step 6) below.
-
-
-
-
-
-
- Case, et al. Standards Track [Page 28]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 4) If the contextEngineID is not yet determined, then the
- contextEngineID is determined, in an implementation-dependent
- manner, possibly using the transportDomain and transportAddress.
-
- 5) If the contextName is not yet determined, the contextName is set
- to the default context.
-
- 6) A scopedPDU is prepared from the contextEngineID, contextName, and
- PDU.
-
- 7) msgGlobalData is constructed as follows:
-
- a) The msgVersion field is set to snmpv3(3).
-
- b) msgID is set as determined in step 1 or 2 above.
-
- c) msgMaxSize is set to an implementation-dependent value.
-
- d) msgFlags are set as follows:
-
- - If securityLevel specifies noAuthNoPriv, then authFlag and
- privFlag are both set to zero.
-
- - If securityLevel specifies authNoPriv, then authFlag is set
- to one and privFlag is set to zero.
-
- - If securityLevel specifies authPriv, then authFlag is set to
- one and privFlag is set to one.
-
- - If the PDU is from the Unconfirmed Class, then the
- reportableFlag is set to zero.
-
- - If the PDU is from the Confirmed Class then the
- reportableFlag is set to one.
-
- - All other msgFlags bits are set to zero.
-
- e) msgSecurityModel is set to the value of securityModel.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 29]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 8) If the PDU is from the Response Class or the Internal Class, then:
-
- a) The specified Security Model is called to generate the message
- according to the primitive:
-
- statusInformation =
- generateResponseMsg(
- IN messageProcessingModel -- SNMPv3 Message Processing
- -- Model
- IN globalData -- msgGlobalData from step 7
- IN maxMessageSize -- from msgMaxSize (step 7c)
- IN securityModel -- as determined in step 7e
- IN securityEngineID -- the value of snmpEngineID
- IN securityName -- on behalf of this principal
- IN securityLevel -- for the outgoing message
- IN scopedPDU -- as prepared in step 6)
- IN securityStateReference -- as determined in step 2
- OUT securityParameters -- filled in by Security Module
- OUT wholeMsg -- complete generated message
- OUT wholeMsgLength -- length of generated message
- )
-
- If, upon return from the Security Model, the statusInformation
- includes an errorIndication, then any cached information about
- the outstanding request message is discarded, and an
- errorIndication is returned, so it can be returned to the
- calling application. SNMPv3 Message Processing is complete.
-
- b) A SUCCESS result is returned. SNMPv3 Message Processing is
- complete.
-
- 9) If the PDU is from the Confirmed Class or the Notification Class,
- then:
-
- a) If the PDU is from the Unconfirmed Class, then securityEngineID
- is set to the value of this entity's snmpEngineID.
-
- Otherwise, the snmpEngineID of the target entity is determined,
- in an implementation-dependent manner, possibly using
- transportDomain and transportAddress. The value of the
- securityEngineID is set to the value of the target entity's
- snmpEngineID.
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 30]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- b) The specified Security Model is called to generate the message
- according to the primitive:
-
- statusInformation =
- generateRequestMsg(
- IN messageProcessingModel -- SNMPv3 Message Processing Model
- IN globalData -- msgGlobalData, from step 7
- IN maxMessageSize -- from msgMaxSize in step 7 c)
- IN securityModel -- as provided by caller
- IN securityEngineID -- authoritative SNMP entity
- -- from step 9 a)
- IN securityName -- as provided by caller
- IN securityLevel -- as provided by caller
- IN scopedPDU -- as prepared in step 6
- OUT securityParameters -- filled in by Security Module
- OUT wholeMsg -- complete generated message
- OUT wholeMsgLength -- length of the generated message
- )
-
- If, upon return from the Security Model, the statusInformation
- includes an errorIndication, then the message is discarded, and
- the errorIndication is returned, so it can be returned to the
- calling application, and no further processing is done. SNMPv3
- Message Processing is complete.
-
- c) If the PDU is from the Confirmed Class, information about the
- outgoing message is cached, and an implementation-specific
- stateReference is created. Information to be cached includes
- the values of:
-
- - sendPduHandle
- - msgID
- - snmpEngineID
- - securityModel
- - securityName
- - securityLevel
- - contextEngineID
- - contextName
-
- d) A SUCCESS result is returned. SNMPv3 Message Processing is
- complete.
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 31]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 7.2. Prepare Data Elements from an Incoming SNMP Message
-
- This section describes the procedure followed to extract data from an
- SNMPv3 message, and to prepare the data elements required for further
- processing of the message by the Message Dispatcher.
-
- 1) The message is passed in from the Message Dispatcher according to
- the abstract service primitive:
-
- result = -- SUCCESS or errorIndication
- prepareDataElements(
- IN transportDomain -- origin transport domain
- IN transportAddress -- origin transport address
- IN wholeMsg -- as received from the network
- IN wholeMsgLength -- as received from the network
- OUT messageProcessingModel -- typically, SNMP version
- OUT securityModel -- Security Model to use
- OUT securityName -- on behalf of this principal
- OUT securityLevel -- Level of Security requested
- OUT contextEngineID -- data from/at this entity
- OUT contextName -- data from/in this context
- OUT pduVersion -- version of the PDU
- OUT PDU -- SNMP Protocol Data Unit
- OUT pduType -- SNMP PDU type
- OUT sendPduHandle -- handle for matched request
- OUT maxSizeResponseScopedPDU -- maximum size sender can accept
- OUT statusInformation -- success or errorIndication
- -- error counter OID and value
- -- when errorIndication
- OUT stateReference -- reference to state information
- -- to be used for a possible
- ) -- Response
-
- 2) If the received message is not the serialization (according to
- the conventions of [RFC3417]) of an SNMPv3Message value, then the
- snmpInASNParseErrs counter [RFC3418] is incremented, the message
- is discarded without further processing, and a FAILURE result is
- returned. SNMPv3 Message Processing is complete.
-
- 3) The values for msgVersion, msgID, msgMaxSize, msgFlags,
- msgSecurityModel, msgSecurityParameters, and msgData are
- extracted from the message.
-
- 4) If the value of the msgSecurityModel component does not match a
- supported securityModel, then the snmpUnknownSecurityModels
- counter is incremented, the message is discarded without further
- processing, and a FAILURE result is returned. SNMPv3 Message
- Processing is complete.
-
-
-
- Case, et al. Standards Track [Page 32]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 5) The securityLevel is determined from the authFlag and the
- privFlag bits of the msgFlags component as follows:
-
- a) If the authFlag is not set and the privFlag is not set, then
- securityLevel is set to noAuthNoPriv.
-
- b) If the authFlag is set and the privFlag is not set, then
- securityLevel is set to authNoPriv.
-
- c) If the authFlag is set and the privFlag is set, then
- securityLevel is set to authPriv.
-
- d) If the authFlag is not set and privFlag is set, then the
- snmpInvalidMsgs counter is incremented, the message is
- discarded without further processing, and a FAILURE result is
- returned. SNMPv3 Message Processing is complete.
-
- e) Any other bits in the msgFlags are ignored.
-
- 6) The security module implementing the Security Model as specified
- by the securityModel component is called for authentication and
- privacy services. This is done according to the abstract service
- primitive:
-
- statusInformation = -- errorIndication or success
- -- error counter OID and
- -- value if error
- processIncomingMsg(
- IN messageProcessingModel -- SNMPv3 Message Processing Model
- IN maxMessageSize -- of the sending SNMP entity
- IN securityParameters -- for the received message
- IN securityModel -- for the received message
- IN securityLevel -- Level of Security
- IN wholeMsg -- as received on the wire
- IN wholeMsgLength -- length as received on the wire
- OUT securityEngineID -- authoritative SNMP entity
- OUT securityName -- identification of the principal
- OUT scopedPDU, -- message (plaintext) payload
- OUT maxSizeResponseScopedPDU -- maximum size sender can accept
- OUT securityStateReference -- reference to security state
- ) -- information, needed for
- -- response
-
- If an errorIndication is returned by the security module, then:
-
- a) If statusInformation contains values for an OID/value pair,
- then generation of a Report PDU is attempted (see step 3 in
- section 7.1).
-
-
-
- Case, et al. Standards Track [Page 33]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 1) If the scopedPDU has been returned from processIncomingMsg,
- then determine contextEngineID, contextName, and PDU.
-
- 2) Information about the message is cached and a
- stateReference is created (implementation-specific).
- Information to be cached includes the values of:
-
- msgVersion,
- msgID,
- securityLevel,
- msgFlags,
- msgMaxSize,
- securityModel,
- maxSizeResponseScopedPDU,
- securityStateReference
-
- 3) Request that a Report-PDU be prepared and sent, according
- to the abstract service primitive:
-
- result = -- SUCCESS or FAILURE
- returnResponsePdu(
- IN messageProcessingModel -- SNMPv3(3)
- IN securityModel -- same as on incoming request
- IN securityName -- from processIncomingMsg
- IN securityLevel -- same as on incoming request
- IN contextEngineID -- from step 6 a) 1)
- IN contextName -- from step 6 a) 1)
- IN pduVersion -- SNMPv2-PDU
- IN PDU -- from step 6 a) 1)
- IN maxSizeResponseScopedPDU -- from processIncomingMsg
- IN stateReference -- from step 6 a) 2)
- IN statusInformation -- from processIncomingMsg
- )
-
- b) The incoming message is discarded without further processing,
- and a FAILURE result is returned. SNMPv3 Message Processing
- is complete.
-
- 7) The scopedPDU is parsed to extract the contextEngineID, the
- contextName and the PDU. If any parse error occurs, then the
- snmpInASNParseErrs counter [RFC3418] is incremented, the security
- state information is discarded, the message is discarded without
- further processing, and a FAILURE result is returned. SNMPv3
- Message Processing is complete. Treating an unknown PDU type is
- treated as a parse error is an implementation option.
-
-
-
-
-
-
- Case, et al. Standards Track [Page 34]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 8) The pduVersion is determined in an implementation-dependent
- manner. For SNMPv3, the pduVersion would be an SNMPv2-PDU.
-
- 9) The pduType is determined, in an implementation-dependent manner.
- For [RFC3416], the pduTypes include:
-
- - GetRequest-PDU,
- - GetNextRequest-PDU,
- - GetBulkRequest-PDU,
- - SetRequest-PDU,
- - InformRequest-PDU,
- - SNMPv2-Trap-PDU,
- - Response-PDU,
- - Report-PDU.
-
- 10) If the pduType is from the Response Class or the Internal Class,
- then:
-
- a) The value of the msgID component is used to find the cached
- information for a corresponding outstanding Request message.
- If no such outstanding Request message is found, then the
- security state information is discarded, the message is
- discarded without further processing, and a FAILURE result is
- returned. SNMPv3 Message Processing is complete.
-
- b) sendPduHandle is retrieved from the cached information.
-
- Otherwise, sendPduHandle is set to <none>, an implementation
- defined value.
-
- 11) If the pduType is from the Internal Class, then:
-
- a) statusInformation is created using the contents of the
- Report-PDU, in an implementation-dependent manner. This
- statusInformation will be forwarded to the application
- associated with the sendPduHandle.
-
- b) The cached data for the outstanding message, referred to by
- stateReference, is retrieved. If the securityModel or
- securityLevel values differ from the cached ones, it is
- important to recognize that Internal Class PDUs delivered at
- the security level of noAuthNoPriv open a window of
- opportunity for spoofing or replay attacks. If the receiver
- of such messages is aware of these risks, the use of such
- unauthenticated messages is acceptable and may provide a
- useful function for discovering engine IDs or for detecting
- misconfiguration at remote nodes.
-
-
-
-
- Case, et al. Standards Track [Page 35]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- When the securityModel or securityLevel values differ from the
- cached ones, an implementation may retain the cached
- information about the outstanding Request message, in
- anticipation of the possibility that the Internal Class PDU
- received might be illegitimate. Otherwise, any cached
- information about the outstanding Request message is
- discarded.
-
- c) The security state information for this incoming message is
- discarded.
-
- d) stateReference is set to <none>.
-
- e) A SUCCESS result is returned. SNMPv3 Message Processing is
- complete.
-
- 12) If the pduType is from the Response Class, then:
-
- a) The cached data for the outstanding request, referred to by
- stateReference, is retrieved, including:
-
- - snmpEngineID
- - securityModel
- - securityName
- - securityLevel
- - contextEngineID
- - contextName
-
- b) If the values extracted from the incoming message differ from
- the cached data, then any cached information about the
- outstanding Request message is discarded, the incoming message
- is discarded without further processing, and a FAILURE result
- is returned. SNMPv3 Message Processing is complete.
-
- When the securityModel or securityLevel values differ from the
- cached ones, an implementation may retain the cached
- information about the outstanding Request message, in
- anticipation of the possibility that the Response Class PDU
- received might be illegitimate.
-
- c) Otherwise, any cached information about the outstanding
- Request message is discarded, and the stateReference is set to
- <none>.
-
- d) A SUCCESS result is returned. SNMPv3 Message Processing is
- complete.
-
- 13) If the pduType is from the Confirmed Class, then:
-
-
-
- Case, et al. Standards Track [Page 36]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- a) If the value of securityEngineID is not equal to the value of
- snmpEngineID, then the security state information is
- discarded, any cached information about this message is
- discarded, the incoming message is discarded without further
- processing, and a FAILURE result is returned. SNMPv3 Message
- Processing is complete.
-
- b) Information about the message is cached and a stateReference
- is created (implementation-specific). Information to be
- cached includes the values of:
-
- msgVersion,
- msgID,
- securityLevel,
- msgFlags,
- msgMaxSize,
- securityModel,
- maxSizeResponseScopedPDU,
- securityStateReference
-
- c) A SUCCESS result is returned. SNMPv3 Message Processing is
- complete.
-
- 14) If the pduType is from the Unconfirmed Class, then a SUCCESS
- result is returned. SNMPv3 Message Processing is complete.
-
- 8. Intellectual Property
-
- The IETF takes no position regarding the validity or scope of any
- intellectual property or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; neither does it represent that it
- has made any effort to identify any such rights. Information on the
- IETF's procedures with respect to rights in standards-track and
- standards-related documentation can be found in BCP-11. Copies of
- claims of rights made available for publication and any assurances of
- licenses to be made available, or the result of an attempt made to
- obtain a general license or permission for the use of such
- proprietary rights by implementors or users of this specification can
- be obtained from the IETF Secretariat.
-
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights which may cover technology that may be required to practice
- this standard. Please address the information to the IETF Executive
- Director.
-
-
-
-
- Case, et al. Standards Track [Page 37]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 9. Acknowledgements
-
- This document is the result of the efforts of the SNMPv3 Working
- Group. Some special thanks are in order to the following SNMPv3 WG
- members:
-
- Harald Tveit Alvestrand (Maxware)
- Dave Battle (SNMP Research, Inc.)
- Alan Beard (Disney Worldwide Services)
- Paul Berrevoets (SWI Systemware/Halcyon Inc.)
- Martin Bjorklund (Ericsson)
- Uri Blumenthal (IBM T. J. Watson Research Center)
- Jeff Case (SNMP Research, Inc.)
- John Curran (BBN)
- Mike Daniele (Compaq Computer Corporation)
- T. Max Devlin (Eltrax Systems)
- John Flick (Hewlett Packard)
- Rob Frye (MCI)
- Wes Hardaker (U.C.Davis, Information Technology - D.C.A.S.)
- David Harrington (Cabletron Systems Inc.)
- Lauren Heintz (BMC Software, Inc.)
- N.C. Hien (IBM T. J. Watson Research Center)
- Michael Kirkham (InterWorking Labs, Inc.)
- Dave Levi (SNMP Research, Inc.)
- Louis A Mamakos (UUNET Technologies Inc.)
- Joe Marzot (Nortel Networks)
- Paul Meyer (Secure Computing Corporation)
- Keith McCloghrie (Cisco Systems)
- Bob Moore (IBM)
- Russ Mundy (TIS Labs at Network Associates)
- Bob Natale (ACE*COMM Corporation)
- Mike O'Dell (UUNET Technologies Inc.)
- Dave Perkins (DeskTalk)
- Peter Polkinghorne (Brunel University)
- Randy Presuhn (BMC Software, Inc.)
- David Reeder (TIS Labs at Network Associates)
- David Reid (SNMP Research, Inc.)
- Aleksey Romanov (Quality Quorum)
- Shawn Routhier (Epilogue)
- Juergen Schoenwaelder (TU Braunschweig)
- Bob Stewart (Cisco Systems)
- Mike Thatcher (Independent Consultant)
- Bert Wijnen (IBM T. J. Watson Research Center)
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 38]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- The document is based on recommendations of the IETF Security and
- Administrative Framework Evolution for SNMP Advisory Team. Members
- of that Advisory Team were:
-
- David Harrington (Cabletron Systems Inc.)
- Jeff Johnson (Cisco Systems)
- David Levi (SNMP Research Inc.)
- John Linn (Openvision)
- Russ Mundy (Trusted Information Systems) chair
- Shawn Routhier (Epilogue)
- Glenn Waters (Nortel)
- Bert Wijnen (IBM T. J. Watson Research Center)
-
- As recommended by the Advisory Team and the SNMPv3 Working Group
- Charter, the design incorporates as much as practical from previous
- RFCs and drafts. As a result, special thanks are due to the authors
- of previous designs known as SNMPv2u and SNMPv2*:
-
- Jeff Case (SNMP Research, Inc.)
- David Harrington (Cabletron Systems Inc.)
- David Levi (SNMP Research, Inc.)
- Keith McCloghrie (Cisco Systems)
- Brian O'Keefe (Hewlett Packard)
- Marshall T. Rose (Dover Beach Consulting)
- Jon Saperia (BGS Systems Inc.)
- Steve Waldbusser (International Network Services)
- Glenn W. Waters (Bell-Northern Research Ltd.)
-
- 10. Security Considerations
-
- The Dispatcher coordinates the processing of messages to provide a
- level of security for management messages and to direct the SNMP PDUs
- to the proper SNMP application(s).
-
- A Message Processing Model, and in particular the v3MP defined in
- this document, interacts as part of the Message Processing with
- Security Models in the Security Subsystem via the abstract service
- interface primitives defined in [RFC3411] and elaborated above.
-
- The level of security actually provided is primarily determined by
- the specific Security Model implementation(s) and the specific SNMP
- application implementation(s) incorporated into this framework.
- Applications have access to data which is not secured. Applications
- should take reasonable steps to protect the data from disclosure, and
- when they send data across the network, they should obey the
- securityLevel and call upon the services of an Access Control Model
- as they apply access control.
-
-
-
-
- Case, et al. Standards Track [Page 39]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- The values for the msgID element used in communication between SNMP
- entities MUST be chosen to avoid replay attacks. The values do not
- need to be unpredictable; it is sufficient that they not repeat.
-
- When exchanges are carried out over an insecure network, there is an
- open opportunity for a third party to spoof or replay messages when
- any message of an exchange is given at the security level of
- noAuthNoPriv. For most exchanges, all messages exist at the same
- security level. In the case where the final message is an Internal
- Class PDU, this message may be delivered at a level of noAuthNoPriv
- or authNoPriv, independent of the security level of the preceding
- messages. Internal Class PDUs delivered at the level of authNoPriv
- are not considered to pose a security hazard. Internal Class PDUs
- delivered at the security level of noAuthNoPriv open a window of
- opportunity for spoofing or replay attacks. If the receiver of such
- messages is aware of these risks, the use of such unauthenticated
- messages is acceptable and may provide a useful function for
- discovering engine IDs or for detecting misconfiguration at remote
- nodes.
-
- This document also contains a MIB definition module. None of the
- objects defined is writable, and the information they represent is
- not deemed to be particularly sensitive. However, if they are deemed
- sensitive in a particular environment, access to them should be
- restricted through the use of appropriately configured Security and
- Access Control models.
-
- 11. References
-
- 11.1. Normative References
-
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119, March 1997.
-
- [RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
- Rose, M. and S. Waldbusser, "Structure of Management
- Information Version 2 (SMIv2)", STD 58, RFC 2578, April
- 1999.
-
- [RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
- Rose, M. and S. Waldbusser, "Conformance Statements for
- SMIv2", STD 58, RFC 2580, April 1999.
-
- [RFC3411] Harrington, D., Presuhn, R. and B. Wijnen, "An
- Architecture for Describing Simple Network Management
- Protocol (SNMP) Management Frameworks", STD 62, RFC 3411,
- December 2002.
-
-
-
-
- Case, et al. Standards Track [Page 40]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- [RFC3413] Levi, D., Meyer, P. and B. Stewart, "Simple Network
- Management Protocol (SNMP) Applications", STD 62, RFC
- 3413, December 2002.
-
- [RFC3414] Blumenthal, U. and B. Wijnen, "The User-Based Security
- Model (USM) for Version 3 of the Simple Network
- Management Protocol (SNMPv3)", STD 62, RFC 3414, December
- 2002.
-
- [RFC3415] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based
- Access Control Model (VACM) for the Simple Network
- Management Protocol (SNMP)", STD 62, RFC 3415, December
- 2002.
-
- [RFC3416] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S.
- Waldbusser, "Version 2 of the Protocol Operations for the
- Simple Network Management Protocol (SNMP)", STD 62, RFC
- 3416, December 2002.
-
- [RFC3417] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S.
- Waldbusser, "Transport Mappings for the Simple Network
- Management Protocol (SNMP)", STD 62, RFC 3417, December
- 2002.
-
- [RFC3418] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S.
- Waldbusser, "Management Information Base (MIB) for the
- Simple Network Management Protocol (SNMP)", STD 62, RFC
- 3418, December 2002.
-
- 11.2. Informative References
-
- [RFC1901] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
- "Introduction to Community-based SNMPv2", RFC 1901,
- January 1996.
-
- [RFC2028] Hovey, R. and S. Bradner, "The Organizations Involved in
- the IETF Standards Process", BCP 11, RFC 2028, October
- 1996.
-
- [RFC2576] Frye, R., Levi, D., Routhier, S. and B. Wijnen,
- "Coexistence between Version 1, Version 2, and Version 3
- of the Internet-Standard Network Management Framework",
- RFC 2576, March 2000.
-
- [RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart,
- "Introduction and Applicability Statements for Internet-
- Standard Management Framework", RFC 3410, December 2002.
-
-
-
-
- Case, et al. Standards Track [Page 41]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 12. Editors' Addresses
-
- Jeffrey Case
- SNMP Research, Inc.
- 3001 Kimberlin Heights Road
- Knoxville, TN 37920-9716
- USA
-
- Phone: +1 423-573-1434
- EMail: case@snmp.com
-
-
- David Harrington
- Enterasys Networks
- 35 Industrial Way
- Post Office Box 5005
- Rochester, NH 03866-5005
- USA
-
- Phone: +1 603-337-2614
- EMail: dbh@enterasys.com
-
-
- Randy Presuhn
- BMC Software, Inc.
- 2141 North First Street
- San Jose, CA 95131
- USA
-
- Phone: +1 408-546-1006
- EMail: randy_presuhn@bmc.com
-
-
- Bert Wijnen
- Lucent Technologies
- Schagen 33
- 3461 GL Linschoten
- Netherlands
-
- Phone: +31 348-680-485
- EMail: bwijnen@lucent.com
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 42]
-
- RFC 3412 Message Processing and Dispatching for SNMP December 2002
-
-
- 13. Full Copyright Statement
-
- Copyright (C) The Internet Society (2002). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
- Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Case, et al. Standards Track [Page 43]
|