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.
<capability>http://www.huawei.com/netconf/capability/schema/1.0</capability>
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 1 shows the process.
<?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:schema-sets:1.0?list=huawei-yang@2.0.0</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>