diff options
Diffstat (limited to 'doc/rfc/rfc4744.txt')
| -rw-r--r-- | doc/rfc/rfc4744.txt | 563 | 
1 files changed, 563 insertions, 0 deletions
| diff --git a/doc/rfc/rfc4744.txt b/doc/rfc/rfc4744.txt new file mode 100644 index 0000000..677a2f7 --- /dev/null +++ b/doc/rfc/rfc4744.txt @@ -0,0 +1,563 @@ + + + + + + +Network Working Group                                            E. Lear +Request for Comments: 4744                                 Cisco Systems +Category: Standards Track                                     K. Crozier +                                                           December 2006 + + +                    Using the NETCONF Protocol over +             the Blocks Extensible Exchange Protocol (BEEP) + +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 IETF Trust (2006). + +Abstract + +   This document specifies an application protocol mapping for the +   Network Configuration Protocol (NETCONF) over the Blocks Extensible +   Exchange Protocol (BEEP). + +Table of Contents + +   1. Introduction ....................................................2 +      1.1. Why BEEP? ..................................................2 +   2. BEEP Transport Mapping ..........................................2 +      2.1. NETCONF Session Establishment ..............................2 +      2.2. Starting a Channel for NETCONF .............................4 +      2.3. NETCONF Session Usage ......................................5 +      2.4. NETCONF Session Teardown ...................................5 +      2.5. BEEP Profile for NETCONF ...................................6 +   3. Security Considerations .........................................6 +   4. IANA Considerations .............................................7 +   5. Acknowledgments .................................................7 +   6. References ......................................................8 +      6.1. Normative References .......................................8 +      6.2. Informative References .....................................8 + + + + + + + + +Lear & Crozier              Standards Track                     [Page 1] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +1.  Introduction + +   The NETCONF protocol [1] defines a simple mechanism through which a +   network device can be managed.  NETCONF is designed to be usable over +   a variety of application protocols.  This document specifies an +   application protocol mapping for NETCONF over the Blocks Extensible +   Exchange Protocol (BEEP) [7]. + +   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 RFC 2119 [2]. + +1.1.  Why BEEP? + +   Use of BEEP is natural as an application protocol for transport of +   XML.  As a peer-to-peer protocol, BEEP provides an easy way to +   implement NETCONF, no matter which side of the connection was the +   initiator.  This "bidirectionality" allows for either manager or +   agent to initiate a connection.  This is particularly important to +   support large numbers of intermittently connected devices, as well as +   those devices that must reverse the management connection in the face +   of firewalls and network address translators (NATs). + +   BEEP makes use of the Simple Authentication and Security Layer (SASL) +   [3].  The SASL profile used by BEEP allows for a simple and direct +   mapping to the existing security model for command line interface +   (CLI), while Transport Layer Security (TLS) [4] provides a strong, +   well-tested encryption mechanism with either server or server and +   client-side authentication. + +2.  BEEP Transport Mapping + +   All NETCONF over BEEP implementations MUST implement the profile and +   functional mapping between NETCONF and BEEP as described below. + +   For purposes of this document, a manager is a NETCONF client, and an +   agent is a NETCONF server.  Use of client/server language in BEEP is +   avoided because of the common notion that in networking clients +   connect to servers. + +2.1.  NETCONF Session Establishment + +   Managers may be either BEEP listeners or initiators.  Similarly, +   agents may be either listeners or initiators.  To establish a +   connection, the initiator connects to the listener on TCP port 831. +   Thus, the initial exchange takes place without regard to whether a +   manager or the agent is the initiator.  After the transport +   connection is established, as greetings are exchanged, they SHOULD + + + +Lear & Crozier              Standards Track                     [Page 2] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +   each announce their support for TLS and optionally SASL.  Once BEEP +   greeting messages are exchanged, if TLS is to be used and available +   by both parties, the listener STARTs a channel with the TLS profile. + +   Once TLS has been started, a new BEEP greeting message is sent by +   both initiator and listener, as required by the BEEP RFC. + +   After all BEEP greeting messages are exchanged in order for roles to +   be clear, the agent MUST advertise the NETCONF profile.  The manager +   MUST NOT advertise the NETCONF profile.  If the agent side of the +   communication (either initiator or listener) receives a BEEP +   <greeting> element that contains the NETCONF profile, it MUST close +   the connection.  Similarly, if neither side issues a NETCONF profile +   it is equally an error, and the listener MUST close the connection. + +   At this point, if SASL is desired, the initiator starts a BEEP +   channel to perform a SASL exchange to authenticate itself.  Upon +   completion of authentication the channel is closed.  That is, the +   channel is exclusively used to authenticate. + +   Examples of both TLS and SASL profiles can be found in [7]. + +   It is anticipated that the SASL PLAIN mechanism will be heavily used +   in conjunction with TLS [5].  In such cases, in accordance with RFC +   2595 the PLAIN mechanism MUST NOT be advertised in the first BEEP +   <greeting>, but only in the one following a successful TLS +   negotiation.  This applies only if TLS and SASL PLAIN mechanisms are +   both to be used.  To avoid risk of eavesdropping, the SASL PLAIN +   mechanism MUST NOT be used over unencrypted channels.  More specifics +   about the use of SASL and TLS are mentioned in Security +   Considerations below. + +   Once authentication has occurred, there is no need to distinguish +   between initiator and listener.  We now distinguish between manager +   and agent, and it is assumed that each knows its role in the +   conversation. + + + + + + + + + + + + + + + +Lear & Crozier              Standards Track                     [Page 3] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +2.2.  Starting a Channel for NETCONF + +   The manager now establishes a new channel and specifies the single +   NETCONF profile.  For example: + +         (M = Manager; A = Agent) + +         M: MSG 0 1 . 10 48 118 +         M: Content-type: application/beep+xml +         M: +         M: <start number="1"> +         M:   <profile uri="http://iana.org/beep/netconf" /> +         M: </start> +         M: END +         A: RPY 0 1 . 38 87 +         A: Content-Type: application/beep+xml +         A: +         A: <profile uri="http://iana.org/beep/netconf" /> +         A: END + +   At this point, we are ready to proceed on BEEP channel 1 with NETCONF +   operations. + +   NETCONF messages are transmitted with a Content-type header set to +   "text/xml". + +   Next the manager and the agent exchange NETCONF <hello> elements on +   the new channel so that each side learns the other's capabilities. +   This occurs through a MSG.  Each side will then respond positively. +   The following example is adapted from [1] Section 8.1: + + +       A: MSG 1 0 . 0 457 +       A: Content-type: application/beep+xml +       A: +       A: <?xml version='1.0' encoding="UTF-8"?> +       A: <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +       A:   <capabilities> +       A:     <capability> +       A:       urn:ietf:params:netconf:base:1.0 +       A:     </capability> +       A:     <capability> +       A:       urn:ietf:params:netconf:capability:startup:1.0 +       A:     </capability> +       A:     <capability> +       A:       http://example.net/router/2.3/core#myfeature +       A:     </capability> +       A:   </capabilities> + + + +Lear & Crozier              Standards Track                     [Page 4] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +       A:   <session-id>4</session-id> +       A: </hello> +       A: END + +       M: RPY 1 0 . 0 0 +       M: END + +   Future NETCONF capabilities may require additional BEEP channels. +   When such capabilities are defined, a BEEP mapping must be defined as +   well. + +   At this point, the NETCONF session is established, and capabilities +   have been exchanged. + +2.3.  NETCONF Session Usage + +   Nearly all NETCONF operations are executed through the <rpc> element. +   To issue a remote procedure call (RPC), the manager transmits on the +   operational channel a BEEP MSG containing the RPC and its arguments. +   In accordance with the BEEP standard, RPC requests may be split +   across multiple BEEP frames. + +   Once received and processed, the agent responds with BEEP RPY +   messages on the same channel with the response to the RPC.  In +   accordance with the BEEP standard, responses may be split across +   multiple BEEP frames. + +2.4.  NETCONF Session Teardown + +   Upon receipt of <close-session> from the manager, once the agent has +   completed all RPCs, it will close BEEP channel 0.  When an agent +   needs to initiate a close, it will do so by closing BEEP channel 0. +   Although not required to do so, the agent should allow for a +   reasonable period for a manager to release an existing lock prior to +   initiating a close.  Once the agent has closed channel 0, all locks +   are released, and each side follows teardown procedures as specified +   in [8].  Having received a BEEP close or having sent <close-session>, +   a manager MUST NOT send further requests.  If there are additional +   activities due to expanded capabilities, they MUST cease in an +   orderly manner and should be properly described in the capability +   mapping. + + + + + + + + + + +Lear & Crozier              Standards Track                     [Page 5] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +2.5.  BEEP Profile for NETCONF + +   Profile Identification: http://iana.org/beep/netconf + +   Messages exchanged during Channel Creation: not applicable + +   Messages starting one-to-one exchanges: "hello", "rpc", "rpc-reply" + +   Messages in positive replies: "rpc-reply" + +   Messages in negative replies: "rpc-reply" + +   Messages in one-to-many exchanges: none + +   Message syntax: [1] + +   Message semantics: [1] + +   Contact Information: See the "Author's Address" section of this memo. + +3.  Security Considerations + +   Configuration information is by its very nature sensitive.  Its +   transmission in the clear and without integrity checking leaves +   devices open to classic so-called "person-in-the-middle" attacks. +   Configuration information often times contains passwords, user names, +   service descriptions, and topological information, all of which are +   sensitive.  A NETCONF application protocol, therefore, must minimally +   support options for both confidentiality and authentication. + +   The BEEP mapping described in this document addresses both +   confidentiality and authentication in a flexible manner through the +   use of TLS and SASL profiles.  Confidentiality is provided via the +   TLS profile and is used as discussed above.  In addition, the server +   certificate shall serve as the server's authentication to the client. +   The client MUST be prepared to recognize and validate a server +   certificate and SHOULD by default reject invalid certificates. + +   In order to validate a certificate, the client must be able to access +   a trust anchor.  While such validation methods are beyond the scope +   of this document, they will depend on the type of device and +   circumstance.  Both the implementor and the administrator are +   cautioned to be aware of any circular dependencies that various +   methods may introduce.  For instance, Online Certificate Status +   Protocol (OCSP) servers may not be available in a network cold-start +   scenario and would be ill-advised for core routers to depend on to +   receive configuration at boot. + + + + +Lear & Crozier              Standards Track                     [Page 6] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +   For client-side authentication, there are several options.  The +   client MAY provide a certificate during the initiation phase of TLS, +   in which case the subject of that certificate shall be considered +   principle for authentication purposes.  Once again, server +   implementors should be aware of any interdependencies that could be +   created through protocols used to validate trust anchors. + +   TLS endpoints may be authorized based on subject name or certificate +   authority (CA), depending on circumstances.  For instance, it would +   be unwise for a core Internet router to allow a netconf agent +   connection simply based on a valid certificate signed by a common CA, +   but not unreasonable to allow a connection from an agent with a +   particular distinguished name.  On the other hand, it might be +   desirable for enterprises to trust certificates signed by CAs of +   their network operations team. + +   In the case where the client has not authenticated through TLS, the +   server SHOULD advertise one or more SASL profiles, from which the +   client will choose.  In the singular case where TLS is established, +   the minimum profile MAY be PLAIN.  Otherwise, implementations MUST +   support the DIGEST-MD5 profile as described in [6], and they MAY +   support other profiles such as the One-Time Password (OTP) mechanism +   [10]. + +   Different environments may well allow different rights prior to and +   then after authentication.  An authorization model is not specified +   in this document.  When an operation is not properly authorized, then +   a simple rpc-error containing "permission denied" is sufficient. +   Note that authorization information may be exchanged in the form of +   configuration information, which is all the more reason to ensure the +   security of the connection. + +4.  IANA Considerations + +   IANA assigned TCP port (831) for NETCONF over BEEP. + +5.  Acknowledgments + +   This work is the product of the NETCONF IETF working group, and many +   people have contributed to the NETCONF discussion.  Most notably, Rob +   Ens, Phil Schafer, Andy Bierman, Wes Hardiger, Ted Goddard, and +   Margaret Wasserman all contributed in some fashion to this work, +   which was originally to be found in the NETCONF base protocol +   specification.  Thanks also to Weijing Chen, Keith Allen, Juergen +   Schoenwaelder, Marshall Rose, and Eamon O'Tuathail for their very +   constructive participation.  The authors would also like to thank +   Elwyn Davies for his constructive review. + + + + +Lear & Crozier              Standards Track                     [Page 7] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +6.  References + +6.1.  Normative References + +   [1]  Enns, R., Ed., "NETCONF Configuration Protocol", RFC 4741, +        December 2006. + +   [2]  Bradner, S., "Key words for use in RFCs to Indicate Requirement +        Levels", BCP 14, RFC 2119, March 1997. + +   [3]  Melnikov, A. and K. Zeilenga, "Simple Authentication and +        Security Layer (SASL)", RFC 4422, June 2006. + +   [4]  Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) +        Protocol Version 1.1", RFC 4346, April 2006. + +   [5]  Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC 2595, +        June 1999. + +   [6]  Leach, P. and C. Newman, "Using Digest Authentication as a SASL +        Mechanism", RFC 2831, May 2000. + +   [7]  Rose, M., "The Blocks Extensible Exchange Protocol Core", +        RFC 3080, March 2001. + +   [8]  Rose, M., "Mapping the BEEP Core onto TCP", RFC 3081, +        March 2001. + +6.2.  Informative References + +   [9]   Sperberg-McQueen, C., Paoli, J., Maler, E., and T. Bray, +         "Extensible Markup Language (XML) 1.0 (Second Edition)", World +         Wide Web Consortium, First Edition, +         http://www.w3.org/TR/2000/REC-xml-20001006, October 2000. + +   [10]  Newman, C., "The One-Time-Password SASL Mechanism", RFC 2444, +         October 1998. + + + + + + + + + + + + + + +Lear & Crozier              Standards Track                     [Page 8] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +Authors' Addresses + +   Eliot Lear +   Cisco Systems +   Glatt-com +   CH-8301 Glattzentrum, Zurich +   CH + +   EMail: lear@cisco.com + + +   Ken Crozier + +   EMail: ken.crozier@gmail.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lear & Crozier              Standards Track                     [Page 9] + +RFC 4744                   NETCONF over BEEP               December 2006 + + +Full Copyright Statement + +   Copyright (C) The IETF Trust (2006). + +   This document is subject to the rights, licenses and restrictions +   contained in BCP 78, and except as set forth therein, the authors +   retain all their rights. + +   This document and the information contained herein are provided on an +   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS +   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST, +   AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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. + +Intellectual Property + +   The IETF takes no position regarding the validity or scope of any +   Intellectual Property Rights 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; nor does it represent that it has +   made any independent effort to identify any such rights.  Information +   on the procedures with respect to rights in RFC documents can be +   found in BCP 78 and BCP 79. + +   Copies of IPR disclosures made to the IETF Secretariat 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 implementers or users of this +   specification can be obtained from the IETF on-line IPR repository at +   http://www.ietf.org/ipr. + +   The IETF invites any interested party to bring to its attention any +   copyrights, patents or patent applications, or other proprietary +   rights that may cover technology that may be required to implement +   this standard.  Please address the information to the IETF at +   ietf-ipr@ietf.org. + +Acknowledgement + +   Funding for the RFC Editor function is currently provided by the +   Internet Society. + + + + + + +Lear & Crozier              Standards Track                    [Page 10] + |