rfc-6241

Network Configuration Protocol (NETCONF)

R. Enns (Editor), M. Bjorklund (Editor), J. Schoenwaelder (Editor), A. Bierman (Editor)
date2011-06 streamIETF areaops wgnetconf statusPROPOSED STANDARD pages113 canonicalhttps://www.rfc-editor.org/rfc/rfc6241 doi10.17487/RFC6241 errataview
The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]

obsoletes

updated by

Extracted elements (30)

design-rationale §1

NETCONF's RPC paradigm was chosen to closely mirror the native functionality of managed devices, reducing implementation costs and enabling timely access to new device features. Authentication reuses existing device mechanisms (e.g., RADIUS) for the same reason.

netconf

design-rationale §1.4

NETCONF separates configuration data (writable data required to achieve desired device state) from state data (read-only status, statistics) because mixing them would produce large datasets, nonsensical write attempts, and complications restoring archived configurations. <get-config> retrieves only configuration; <get> retrieves both.

netconf, yang

design-rationale §6.1

Subtree filtering was designed so the server requires no data-model-specific semantic knowledge during filter processing, enabling simple, centralized implementation. The filter mechanism provides inclusion, exact-match, and selection without requiring content-layer awareness.

netconf

interoperability-note §8.1

Both peers MUST exchange <hello> messages at session establishment to advertise their capabilities before any other NETCONF messages are sent. The client adjusts its behavior to take advantage of server-advertised capabilities; capabilities not advertised by the server MUST NOT be used.

netconf

normative-requirement §1.3 MUST

A capability URI MUST sufficiently distinguish the naming authority to avoid naming collisions. To support a capability, a server MUST support all capabilities upon which it depends.

netconf, registry

normative-requirement §1.2 MUST

A device MUST support at least one NETCONF session and SHOULD support multiple concurrent sessions. Global configuration changes made in any authorized session are visible across all sessions.

netconf

normative-requirement §2.3 MUST

A NETCONF implementation MUST support the SSH transport protocol mapping defined in RFC6242. SSH is the mandatory baseline transport; all other transports are optional.

netconf, security

normative-requirement §4.3 MUST

A server MUST return an <rpc-error> element if any error conditions occur during processing. A server MUST NOT return application-level or data-model-specific error information to clients lacking sufficient access rights.

netconf, security

normative-requirement §3 MUST

All NETCONF messages MUST be well-formed XML encoded in UTF-8. A peer receiving a malformed or non-UTF-8 <rpc> SHOULD reply with a 'malformed-message' error; if no reply can be sent, the server MUST terminate the session.

netconf

normative-requirement §2.2 MUST

Authentication MUST result in an authenticated client identity (NETCONF username) whose permissions are known to the server. These access permissions MUST be enforced throughout the entire NETCONF session.

netconf, security

normative-requirement §3.2 MUST NOT

Document type declarations (DTDs) MUST NOT appear in NETCONF content. This prevents XML entity expansion and simplifies parsing security.

netconf, security

normative-requirement §6.2.1 MUST

For subtree filtering, if a filter element is unqualified (xmlns=''), the server MUST evaluate all XML namespaces it supports when processing that filter node. This wildcard mechanism does not apply to XML attributes.

netconf

normative-requirement §4.1 MUST

If additional attributes are present in an <rpc> element, a NETCONF peer MUST return them unmodified in the <rpc-reply>, including xmlns attributes. This enables clients to use custom attributes as opaque correlation handles.

netconf

normative-requirement §2.2 MUST

NETCONF connections MUST provide authentication, data integrity, confidentiality, and replay protection. NETCONF depends entirely on the transport protocol for these security properties.

netconf, security

normative-requirement §4.5 MUST

NETCONF <rpc> requests MUST be processed serially by the managed device. Responses MUST be sent only in the order requests were received, though clients MAY pipeline additional requests before receiving replies.

netconf

normative-requirement §7.3 MUST

The <running> configuration datastore cannot be deleted. A <copy-config> operation where source and target identify the same URL or datastore MUST return an error with error-tag 'invalid-value'.

netconf

normative-requirement §2.1 MUST

The transport connection MUST provide reliable, sequenced data delivery. Resources acquired during a connection (e.g., locks) MUST be automatically released when the connection closes, enabling failure recovery without explicit cleanup.

netconf

protocol-element §1.3

NETCONF capabilities are identified by URIs and advertised in the session-opening <hello> exchange. Capabilities may define new protocol operations, new parameters to existing operations, and new content constraints, and may declare dependencies on other capabilities.

netconf

protocol-element §5.1

NETCONF defines three standard configuration datastores: <running> (always present, holds active configuration), <candidate> (optional, for staging without affecting running), and <startup> (optional, holds boot configuration). Only <running> exists in the base model; others require capability advertisement.

netconf, yang

protocol-element §1.2

NETCONF is partitioned into four layers: (1) Secure Transport, (2) Messages (<rpc>, <rpc-reply>, <notification>), (3) Operations (<get-config>, <edit-config>, etc.), and (4) Content (configuration/notification data). Only layers 1–3 are defined by this document.

netconf, yang

protocol-element §6.2

Subtree filters are comprised of five component types: namespace selection, attribute match expressions (filter by XML attribute value), containment nodes (inner elements specifying hierarchy), selection nodes (empty leaf nodes for explicit subtree selection), and content match nodes (leaf text for exact-match filtering, combined with AND logic).

netconf

protocol-element §7.2

The <edit-config> 'operation' attribute supports five values: merge (default — merge into existing), replace (overwrite at that level), create (error if already exists with data-exists tag), delete (error if not exists with data-missing tag), and remove (silent no-op if not exists).

netconf

protocol-element §7

The NETCONF base protocol defines nine operations: <get-config>, <edit-config>, <copy-config>, <delete-config>, <lock>, <unlock>, <get>, <close-session>, and <kill-session>. Additional operations are defined by optional capabilities.

netconf

protocol-element §4.1

The <rpc> element encloses a client-to-server NETCONF request and carries a mandatory 'message-id' attribute — a sender-chosen string (commonly a monotonically increasing integer) that the receiver echoes verbatim in the corresponding <rpc-reply>.

netconf

protocol-element §4.3

The <rpc-error> element reports processing errors and contains: error-type (transport/rpc/protocol/application), error-tag (error condition string), error-severity (error/warning), optional error-app-tag, error-path (XPath expression), error-message (human-readable), and error-info (protocol/data-model detail).

netconf

registry §10.3

This document registers a YANG module 'ietf-netconf' (Appendix C) in the 'YANG Module Names' registry. The module formally specifies the NETCONF protocol operations and is the authoritative encoding definition for the Operations layer.

netconf, yang, registry

registry §10.4

This document registers capability URNs in the 'NETCONF Capability URNs' registry for: writable-running, candidate, confirmed-commit, rollback-on-error, validate (versions 1.0 and 1.1), distinct-startup, url, and xpath capabilities.

netconf, registry

registry §10.1

This document registers the NETCONF XML namespace 'urn:ietf:params:xml:ns:netconf:base:1.0' in the IETF XML registry (Section 10.1) and an associated XML schema (Appendix B) in the IETF XML schema registry (Section 10.2).

netconf, registry

security-consideration §4.3

A server MUST NOT return application-level or data-model-specific error information in <rpc-error> to clients lacking sufficient access rights. This prevents unauthorized users from inferring configuration details through error message side-channels.

netconf, security, privacy

security-consideration §9

NETCONF provides management access equivalent to the device's native CLI, which often grants superuser-level privileges. Compromising a NETCONF session gives full control over the device; implementations must ensure strong transport-layer security and careful access control configuration.

netconf, security