NETCONF Capabilities Exchange
After a NETCONF session is established, a client and a server immediately exchange Hello messages (with the <hello> element that contains the set of capabilities supported locally) to each other. If both ends support a capability, they can implement special management functions based on this capability.
The capability negotiation result depends on the capability set on the server side for standard capabilities (except the notification capability) while depends on the capabilities that both ends support for extended capabilities.
A NETCONF server can send a <hello> element to advertise the capabilities that it supports.
- If the capabilities contained in a <hello> element sent from the peer are all standard capabilities, the Huawei device replies with a YANG packet.
- If the capabilities contained in a <hello> element sent from the peer are all standard capabilities and the peer expects a schema packet, the schema 1.0 capability set can be added in the <hello> element.
<capability>http://www.huawei.com/netconf/capability/schema/1.0</capability>
- If a <hello> element sent from the peer contains extended capabilities, the Huawei device replies with a schema packet.
After a NETCONF server exchanges <hello> elements with a NETCONF client, the server waits for <rpc> elements from the client. The server returns an <rpc-reply> element in response to each <rpc> element. Figure 8-6 shows the interaction between the NETCONF server and client.
Example of a <hello> element sent by the NETCONF server and YANG model
<?xml version="1.0" encoding="UTF-8"?> <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <capabilities> <capability>urn:ietf:params:netconf:base:1.0</capability> <capability>urn:ietf:params:netconf:base:1.1</capability> <capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability> <capability>urn:ietf:params:netconf:capability:candidate:1.0</capability> <capability>urn:ietf:params:netconf:capability:confirmed-commit:1.0</capability> <capability>urn:ietf:params:netconf:capability:confirmed-commit:1.1</capability> <capability>urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=report-all&also-supported=report-all-tagged,trim</capability> <capability>http://www.huawei.com/netconf/capability/discard-commit/1.0</capability> <capability>urn:ietf:params:netconf:capability:xpath:1.0</capability> <capability>urn:ietf:params:netconf:capability:startup:1.0</capability> <capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability> <capability>http://www.huawei.com/netconf/capability/sync/1.3</capability> <capability>http://www.huawei.com/netconf/capability/sync/1.2</capability> <capability>http://www.huawei.com/netconf/capability/sync/1.1</capability> <capability>http://www.huawei.com/netconf/capability/sync/1.0</capability> <capability>http://www.huawei.com/netconf/capability/exchange/1.0</capability> <capability>http://www.huawei.com/netconf/capability/exchange/1.2</capability> <capability>http://www.huawei.com/netconf/capability/sync-config/1.1</capability> <capability>http://www.huawei.com/netconf/capability/sync-config/1.0</capability> <capability>http://www.huawei.com/netconf/capability/active/1.0</capability> <capability>urn:ietf:params:netconf:capability:validate:1.0</capability> <capability>urn:ietf:params:netconf:capability:validate:1.1</capability> <capability>http://www.huawei.com/netconf/capability/action/1.0</capability> <capability>http://www.huawei.com/netconf/capability/execute-cli/1.0</capability> <capability>http://www.huawei.com/netconf/capability/update/1.0</capability> <capability>http://www.huawei.com/netconf/capability/commit-description/1.0</capability> <capability>urn:ietf:params:netconf:capability:url:1.0?scheme=file,ftp,sftp</capability> <capability>http://www.huawei.com/netconf/capability/schema/1.0</capability> <capability>urn:ietf:params:netconf:capability:notification:1.0</capability> <capability>urn:ietf:params:netconf:capability:interleave:1.0</capability> <capability>urn:ietf:params:netconf:capability:notification:2.0</capability> <capability>urn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=3520578387</capability> <capability>urn:huawei:yang:huawei-acl?module=huawei-acl&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-acl-ucl?module=huawei-acl-ucl&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-bfd?module=huawei-bfd&revision=2019-03-27</capability> <capability>urn:huawei:yang:huawei-bras-basic-access?module=huawei-bras-basic-access&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-bras-chasten?module=huawei-bras-chasten&revision=2019-04-29</capability> <capability>urn:huawei:yang:huawei-bras-vas?module=huawei-bras-vas&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-cfg?module=huawei-cfg&revision=2019-04-29</capability> <capability>urn:huawei:yang:huawei-cli?module=huawei-cli&revision=2019-05-01</capability> <capability>urn:huawei:yang:huawei-debug?module=huawei-debug&revision=2019-04-10</capability> <capability>urn:huawei:yang:huawei-dgntl?module=huawei-dgntl&revision=2019-04-09</capability> <capability>urn:huawei:yang:huawei-dhcp?module=huawei-dhcp&revision=2019-04-29</capability> <capability>urn:huawei:yang:huawei-dhcpv6?module=huawei-dhcpv6&revision=2019-04-29</capability> <capability>urn:huawei:yang:huawei-dns?module=huawei-dns&revision=2019-04-01</capability> <capability>urn:huawei:yang:huawei-ecc?module=huawei-ecc&revision=2019-05-01</capability> <capability>urn:huawei:yang:huawei-ethernet?module=huawei-ethernet&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-etrunk?module=huawei-etrunk&revision=2019-04-29</capability> <capability>urn:huawei:yang:huawei-extension?module=huawei-extension&revision=2019-05-07</capability> <capability>urn:huawei:yang:huawei-hwtacacs?module=huawei-hwtacacs&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-ietf-netconf-ext?module=huawei-ietf-netconf-ext&revision=2017-12-23</capability> <capability>urn:huawei:yang:huawei-if-ip?module=huawei-if-ip&revision=2019-01-01</capability> <capability>urn:huawei:yang:huawei-l2vpn?module=huawei-l2vpn&revision=2019-04-04</capability> <capability>urn:huawei:yang:huawei-l3-multicast?module=huawei-l3-multicast&revision=2019-03-30</capability> <capability>urn:huawei:yang:huawei-l3vpn?module=huawei-l3vpn&revision=2019-04-27</capability> <capability>urn:huawei:yang:huawei-lacp?module=huawei-lacp&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-lldp?module=huawei-lldp&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-mac?module=huawei-mac&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-mac-flapping?module=huawei-mac-flapping&revision=2019-04-23</capability> <capability>urn:huawei:yang:huawei-mpls-ldp?module=huawei-mpls-ldp&revision=2019-03-27</capability> <capability>urn:huawei:yang:huawei-multicast?module=huawei-multicast&revision=2019-03-30</capability> <capability>urn:huawei:yang:huawei-multicast-bas?module=huawei-multicast-bas&revision=2019-03-30</capability> <capability>urn:huawei:yang:huawei-netconf-sync?module=huawei-netconf-sync&revision=2018-08-30</capability> <capability>urn:huawei:yang:huawei-network-instance?module=huawei-network-instance&revision=2019-04-27</capability> <capability>urn:huawei:yang:huawei-pp4?module=huawei-pp4&revision=2019-04-10</capability> <capability>urn:huawei:yang:huawei-pp6?module=huawei-pp6&revision=2019-04-01</capability> <capability>urn:huawei:yang:huawei-pub-type?module=huawei-pub-type&revision=2019-04-27</capability> <capability>urn:huawei:yang:huawei-radius?module=huawei-radius&revision=2019-04-02</capability> <capability>urn:huawei:yang:huawei-routing?module=huawei-routing&revision=2019-01-01</capability> <capability>urn:huawei:yang:huawei-routing-policy?module=huawei-routing-policy&revision=2019-04-27</capability> <capability>urn:huawei:yang:huawei-sshc?module=huawei-sshc&revision=2019-05-01</capability> <capability>urn:huawei:yang:huawei-sshs?module=huawei-sshs&revision=2019-05-01</capability> <capability>urn:huawei:yang:huawei-syslog?module=huawei-syslog&revision=2019-01-01</capability> <capability>urn:huawei:yang:huawei-system?module=huawei-system&revision=2018-11-23</capability> <capability>urn:huawei:yang:huawei-telnets?module=huawei-telnets&revision=2019-05-01</capability> <capability>urn:huawei:yang:huawei-tm?module=huawei-tm&revision=2019-04-10</capability> <capability>urn:huawei:yang:huawei-vlan?module=huawei-vlan&revision=2019-04-29</capability> <capability>urn:huawei:yang:huawei-vrrp?module=huawei-vrrp&revision=2019-03-27</capability> <capability>urn:huawei:yang:huawei-vty?module=huawei-vty&revision=2019-05-01</capability> <capability>urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01&features=writable-running,candidate,confirmed-commit,rollback-on-error,validate,startup,xpath,url</capability> <capability>urn:ietf:params:xml:ns:netconf:notification:1.0?module=notifications&revision=2008-07-14</capability> <capability>urn:ietf:params:xml:ns:netmod:notification?module=nc-notifications&revision=2008-07-14</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15</capability> </capabilities> <session-id>129</session-id> </hello>
Example of a <hello> element sent by the NETCONF client
If the client needs to use the YANG model to set up a session, the client encapsulates the <hello> element with the base capability. Then the client and server negotiate the capability set. The capability set supported by the server is the negotiation result.
<?xml version="1.0" encoding="utf-8"?> <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <capabilities> <capability>urn:ietf:params:netconf:base:1.0</capability> <capability>urn:ietf:params:netconf:base:1.1</capability> </capabilities> </hello>